linux/drivers/net/can
Ahmed S. Darwish 9c8090e1e5 can: kvaser_usb: Read all messages in a bulk-in URB buffer
[ Upstream commit 2fec5104f9 ]

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>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
History 2015-03-28 09:37:40 -04:00
..
c_can can: c_can: end pending transmission on network stop (ifdown) 2015-02-05 22:36:09 -08:00
cc770 net: can: use kbuild magic to inherit debug settings 2014-08-18 01:03:38 +02:00
m_can can: m_can: tag current CAN FD controllers as non-ISO 2015-01-29 17:40:42 -08:00
mscan net: can: use kbuild magic to inherit debug settings 2014-08-18 01:03:38 +02:00
sja1000 can: remove unused variable 2014-11-18 16:52:18 +01:00
softing net: can: use kbuild magic to inherit debug settings 2014-08-18 01:03:38 +02:00
spi can: mcp251x: Use dmam_alloc_coherent 2014-08-18 01:03:43 +02:00
usb can: kvaser_usb: Read all messages in a bulk-in URB buffer 2015-03-28 09:37:40 -04:00
at91_can.c can: at91_can: add missing prepare and unprepare of the clock 2014-09-18 11:15:37 +02:00
bfin_can.c can: Unify MTU settings for CAN interfaces 2014-03-17 09:20:16 +01:00
dev.c can: add missing initialisations in CAN related skbuffs 2015-03-28 09:37:33 -04:00
flexcan.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-09-23 12:09:27 -04:00
grcan.c can: Unify MTU settings for CAN interfaces 2014-03-17 09:20:16 +01:00
janz-ican3.c can: Unify MTU settings for CAN interfaces 2014-03-17 09:20:16 +01:00
Kconfig drivers/net/can/Kconfig: Let CAN_AT91 depend on HAS_IOMEM 2014-10-03 15:52:03 -07:00
led.c can: only rename enabled led triggers when changing the netdev name 2014-05-27 15:05:41 +02:00
Makefile can: m_can: add Bosch M_CAN controller support 2014-08-18 01:03:41 +02:00
pch_can.c PCI: Remove DEFINE_PCI_DEVICE_TABLE macro use 2014-08-12 12:15:14 -06:00
rcar_can.c can: rcar_can: add .ndo_change_mtu function 2014-11-18 17:52:08 +01:00
slcan.c net: set name_assign_type in alloc_netdev() 2014-07-15 16:12:48 -07:00
ti_hecc.c can: Unify MTU settings for CAN interfaces 2014-03-17 09:20:16 +01:00
vcan.c can: add destructor for self generated skbs 2014-01-30 16:25:49 -08:00
xilinx_can.c can: xilinx_can: add .ndo_change_mtu function 2014-11-18 17:52:08 +01:00