linux/drivers/net
Thomas Gleixner d61d09de02 can: c_can: Work around C_CAN RX wreckage
Alexander reported that the new optimized handling of the RX fifo
causes random packet loss on Intel PCH C_CAN hardware.

After a few fruitless debugging sessions I got hold of a PCH (eg20t)
afflicted system. That machine does not have the CAN interface wired
up, but it was possible to reproduce the issue with the HW loopback
mode.

As Alexander observed correctly, clearing the NewDat flag along with
reading out the message buffer causes that issue on C_CAN, while D_CAN
handles that correctly.

Instead of restoring the original message buffer handling horror the
following workaround solves the issue:

    transfer buffer to IF without clearing the NewDat
    handle the message
    clear NewDat bit

That's similar to the original code but conditional for C_CAN.

I really wonder why all user manuals (C_CAN, Intel PCH and some more)
recommend to clear the NewDat bit right away. The knows it all Oracle
operated by Gurgle does not unearth any useful information either. I
simply cannot believe that we are the first to uncover that HW issue.

Reported-and-tested-by: Alexander Stein <alexander.stein@systec-electronic.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2014-04-24 22:09:00 +02:00
..
appletalk
arcnet
bonding bonding: Remove debug_fs files when module init fails 2014-04-11 15:04:40 -04:00
caif
can can: c_can: Work around C_CAN RX wreckage 2014-04-24 22:09:00 +02:00
cris
dsa
ethernet gianfar: Check if phydev present on ethtool -A 2014-04-24 13:36:16 -04:00
fddi
hamradio yam: replace del_timer by del_timer_sync 2014-03-27 15:28:06 -04:00
hippi
hyperv Drivers: net: hyperv: Address UDP checksum issues 2014-04-11 15:15:12 -04:00
ieee802154 at86rf230: fix __at86rf230_read_subreg function 2014-04-15 00:08:22 -04:00
irda
phy net/phy: micrel: fix bugged test on device tree loading for ksz9021 2014-04-23 14:58:58 -04:00
plip
ppp net: ppp: use sk_unattached_filter api 2014-03-31 00:45:09 -04:00
slip
team team: forbid incorrect fall-through in notifier 2014-04-24 13:26:32 -04:00
usb r8152: check RTL8152_UNPLUG 2014-04-12 01:59:38 -04:00
vmxnet3
wan driver/net: cosa driver uses udelay incorrectly 2014-04-15 00:08:22 -04:00
wimax wimax/i2400m: remove open-coded skb_cow_head. 2014-03-29 17:49:47 -04:00
wireless mwifiex: fix hung task on command timeout 2014-04-15 13:27:05 -04:00
xen-netback xen-netback: Trivial format string fix 2014-04-04 10:49:53 -04:00
dummy.c
eql.c
ifb.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-03-29 18:48:54 -04:00
Kconfig
LICENSE.SRC
loopback.c
macvlan.c
macvtap.c
Makefile
mdio.c
mii.c
netconsole.c
nlmon.c net: nlmon: flag nlmon devs with LLTX/SG 2014-03-28 16:49:47 -04:00
ntb_netdev.c NTB: Code Style Clean-up 2014-04-07 10:59:19 -07:00
rionet.c rapidio: rework device hierarchy and introduce mport class of devices 2014-04-07 16:36:07 -07:00
sb1000.c
Space.c
sungem_phy.c
tun.c
veth.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-03-29 18:48:54 -04:00
virtio_net.c virtio_net: zero is an invald queue_pairs number 2014-04-22 16:01:35 -04:00
vxlan.c vxlan: ensure to advertise the right fdb remote 2014-04-23 15:01:09 -04:00
xen-netfront.c drivers: net: xen-netfront: fix array initialization bug 2014-04-12 16:49:06 -04:00