mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-27 22:53:55 +08:00
07c7b6f616
The lost message handling is broken in several ways. 1) Clearing the message lost flag is done by writing 0 to the message control register of the object. #define IF_MCONT_CLR_MSGLST (0 << 14) That clears the object buffer configuration in the worst case, which results in a loss of the EOB flag. That leaves the FIFO chain without a limit and causes a complete lockup of the HW 2) In case that the error skb allocation fails, the code happily claims that it handed down a packet. Just an accounting bug, but .... 3) The code adds a lot of pointless overhead to that error case, where we need to get stuff done as fast as possible to avoid more packet loss. - printk an annoying error message - reread the object buffer for nothing Fix is simple again: - Use the already known MSGCTRL content and only clear the MSGLST bit - Fix the buffer accounting by adding a proper return code - Remove the pointless operations Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> |
||
---|---|---|
.. | ||
c_can | ||
cc770 | ||
mscan | ||
sja1000 | ||
softing | ||
usb | ||
at91_can.c | ||
bfin_can.c | ||
dev.c | ||
flexcan.c | ||
grcan.c | ||
janz-ican3.c | ||
Kconfig | ||
led.c | ||
Makefile | ||
mcp251x.c | ||
pch_can.c | ||
slcan.c | ||
ti_hecc.c | ||
vcan.c |