linux/drivers/net
Thomas Gleixner 710c56105d can: c_can: Remove EOB exit
The rx_poll code has the following gem:

	if (msg_ctrl_save & IF_MCONT_EOB)
		return num_rx_pkts;

The EOB bit is the indicator for the hardware that this is the last
configured FIFO object. But this object can contain valid data, if we
manage to free up objects before the overrun case hits.

Now if the code exits due to the EOB bit set, then this buffer is
stale and the interrupt bit and NewDat bit of the buffer are still
set. Results in a nice interrupt storm unless we come into an overrun
situation where the MSGLST bit gets set.

     ksoftirqd/0-3     [000] ..s.    79.124101: c_can_poll: rx_poll: val: 00008001 pend 00008001
     ksoftirqd/0-3     [000] ..s.    79.124176: c_can_poll: rx_poll: val: 00008000 pend 00008000
     ksoftirqd/0-3     [000] ..s.    79.124187: c_can_poll: rx_poll: val: 00008002 pend 00008002
     ksoftirqd/0-3     [000] ..s.    79.124256: c_can_poll: rx_poll: val: 00008000 pend 00008000
     ksoftirqd/0-3     [000] ..s.    79.124267: c_can_poll: rx_poll: val: 00008000 pend 00008000

The amazing thing is that the check of the MSGLST (aka overrun bit)
used to be after the check of the EOB bit. That was "fixed" in commit
5d0f801a2c(can: c_can: Fix RX message handling, handle lost message
before EOB). But the author of this "fix" did not even understand that
the EOB check is broken as well.

Again a simple solution: Remove

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
[mkl: adjusted subject and commit message]
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2014-04-01 11:54:59 +02:00
..
appletalk
arcnet drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
bonding bonding: set correct vlan id for alb xmit path 2014-03-13 15:45:10 -04:00
caif drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
can can: c_can: Remove EOB exit 2014-04-01 11:54:59 +02:00
cris
dsa
ethernet qlge: Do not propaged vlan tag offloads to vlans 2014-03-28 17:16:50 -04:00
fddi drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
hamradio Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-01-06 17:37:45 -05:00
hippi drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
hyperv hyperv: Move state setting for link query 2014-03-05 20:40:25 -05:00
ieee802154 at86rf230: mask irq's before deregister device 2014-03-31 16:43:14 -04:00
irda irtty-sir.c: Do not set_termios() on irtty_close() 2014-02-17 16:27:51 -05:00
phy net: phy: fix uninitalized ethtool_wolinfo in phy_suspend 2014-03-14 22:38:54 -04:00
plip net: plip: slight optimization of addr compare 2013-12-31 16:48:33 -05:00
ppp ppp: slight optimization of addr compare 2013-12-26 13:31:33 -05:00
slip
team netdevice: add queue selection fallback handler for ndo_select_queue 2014-02-17 00:36:34 -05:00
usb usbnet: include wait queue head in device structure 2014-03-27 14:59:10 -04:00
vmxnet3 vmxnet3: fix building without CONFIG_PCI_MSI 2014-03-13 12:56:38 -04:00
wan wan: dlci: Remove unused netdev_priv pointer 2014-02-09 18:40:56 -08:00
wimax
wireless Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless into for-davem 2014-03-14 14:09:47 -04:00
xen-netback xen-netback: BUG_ON in xenvif_rx_action() not catching overflow 2014-03-29 18:50:34 -04:00
dummy.c
eql.c eql: use __dev_get_by_name instead of dev_get_by_name to find interface 2014-01-14 18:50:46 -08:00
ifb.c ifb: Remove vlan acceleration from vlan_features 2014-03-28 17:16:50 -04:00
Kconfig net: fix macvtap type name in Kconfig 2014-02-13 15:48:31 -05:00
LICENSE.SRC
loopback.c drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
macvlan.c macvlan: Add support for 'always_on' offload features 2014-03-03 16:43:56 -05:00
macvtap.c drivers/net: delete non-required instances of include <linux/init.h> 2014-01-16 11:53:26 -08:00
Makefile
mdio.c mdio: unused ethtool functions 2013-12-26 13:29:35 -05:00
mii.c
netconsole.c
nlmon.c
ntb_netdev.c
rionet.c
sb1000.c
Space.c drivers: net: Include new header file in sbni.c 2013-12-19 18:51:20 -05:00
sungem_phy.c
tun.c tun: remove bogus hardware vlan acceleration flags from vlan_features 2014-02-20 02:15:38 -05:00
veth.c veth: Turn off vlan rx acceleration in vlan_features 2014-03-28 17:16:51 -04:00
virtio_net.c virtio-net: correct error handling of virtqueue_kick() 2014-03-27 13:13:21 -04:00
vxlan.c vxlan: fix nonfunctional neigh_reduce() 2014-03-24 15:35:10 -04:00
xen-netfront.c xen-netfront: reset skb network header before checksum 2014-02-19 16:52:51 -05:00