linux/drivers/net/ethernet/mscc
Horatiu Vultur a81541041c net: mscc: fix in frame extraction
Each extracted frame on Ocelot has an IFH. The frame and IFH are extracted
by reading chuncks of 4 bytes from a register.

In case the IFH and frames were read corretly it would try to read the next
frame. In case there are no more frames in the queue, it checks if there
were any previous errors and in that case clear the queue. But this check
will always succeed also when there are no errors. Because when extracting
the IFH the error is checked against 4(number of bytes read) and then the
error is set only if the extraction of the frame failed. So in a happy case
where there are no errors the err variable is still 4. So it could be
a case where after the check that there are no more frames in the queue, a
frame will arrive in the queue but because the error is not reseted, it
would try to flush the queue. So the frame will be lost.

The fix consist in resetting the error after reading the IFH.

Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com>
Acked-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2020-02-17 14:02:29 -08:00
..
Kconfig net: mscc: ocelot: make use of SerDes PHYs for handling their configuration 2018-10-05 14:36:44 -07:00
Makefile net: mscc: ocelot: Hardware ofload for tc flower filter 2019-06-02 13:49:49 -07:00
ocelot.c net: mscc: ocelot: make phy_mode a member of the common struct ocelot_port 2020-01-05 23:22:33 -08:00
ocelot.h net: mscc: ocelot: export ANA, DEV and QSYS registers to include/soc/mscc 2020-01-05 23:22:33 -08:00
ocelot_ace.c ocelot_ace: fix action of trap 2019-08-22 15:44:24 -07:00
ocelot_ace.h net: mscc: ocelot: separate net_device related items out of ocelot_port 2019-11-11 12:59:10 -08:00
ocelot_board.c net: mscc: fix in frame extraction 2020-02-17 14:02:29 -08:00
ocelot_flower.c net: mscc: ocelot: separate net_device related items out of ocelot_port 2019-11-11 12:59:10 -08:00
ocelot_io.c net: mscc: ocelot: move resource ioremap and regmap init to common code 2019-11-15 12:32:16 -08:00
ocelot_police.c net: mscc: ocelot: refactor struct ocelot_port out of function prototypes 2019-11-11 12:59:10 -08:00
ocelot_police.h net: mscc: ocelot: refactor struct ocelot_port out of function prototypes 2019-11-11 12:59:10 -08:00
ocelot_ptp.h net: mscc: describe the PTP register range 2019-08-15 16:31:11 -07:00
ocelot_qs.h
ocelot_regs.c net: mscc: ocelot: filter out ocelot SoC specific PCS config from common path 2019-11-15 12:32:16 -08:00
ocelot_rew.h
ocelot_s2.h net: mscc: ocelot: Add support for tcam 2019-06-02 13:49:49 -07:00
ocelot_tc.c net: mscc: ocelot: separate net_device related items out of ocelot_port 2019-11-11 12:59:10 -08:00
ocelot_tc.h net: mscc: ocelot: Implement port policers via tc command 2019-05-29 21:37:49 -07:00
ocelot_vcap.h net: mscc: ocelot: Add support for tcam 2019-06-02 13:49:49 -07:00