linux/drivers/net/can/usb
Ahmed S. Darwish 2fec5104f9 can: kvaser_usb: Read all messages in a bulk-in URB buffer
The Kvaser firmware can only read and write messages that are
not crossing the USB endpoint's wMaxPacketSize boundary. While
receiving commands from the CAN device, if the next command in
the same URB buffer crossed that max packet size boundary, the
firmware puts a zero-length placeholder command in its place
then moves the real command to the next boundary mark.

The driver did not recognize such behavior, leading to missing
a good number of rx events during a heavy rx load session.

Moreover, a tx URB context only gets freed upon receiving its
respective tx ACK event. Over time, the free tx URB contexts
pool gets depleted due to the missing ACK events. Consequently,
the netif transmission queue gets __permanently__ stopped; no
frames could be sent again except after restarting the CAN
newtwork interface.

Signed-off-by: Ahmed S. Darwish <ahmed.darwish@valeo.com>
Cc: linux-stable <stable@vger.kernel.org>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2015-03-09 10:22:24 +01:00
..
peak_usb can: peak_usb: fix missing ctrlmode_ init for every dev 2015-03-09 10:22:24 +01:00
ems_usb.c can: move can_stats.bus_off++ from can_bus_off into can_change_state 2015-01-20 13:56:53 +01:00
esd_usb2.c can: move can_stats.bus_off++ from can_bus_off into can_change_state 2015-01-20 13:56:53 +01:00
gs_usb.c can: gs_usb: add .ndo_change_mtu function 2014-11-18 21:34:59 +01:00
Kconfig can: peak_usb: add support for PEAK new CANFD USB adapters 2015-01-28 14:47:06 +01:00
kvaser_usb.c can: kvaser_usb: Read all messages in a bulk-in URB buffer 2015-03-09 10:22:24 +01:00
Makefile net: can: use kbuild magic to inherit debug settings 2014-08-18 01:03:38 +02:00
usb_8dev.c can: move can_stats.bus_off++ from can_bus_off into can_change_state 2015-01-20 13:56:53 +01:00