linux/drivers/net/ethernet
Peter Crosthwaite 38e96b35cd net: axienet: Handle 0 packet receive gracefully
The AXI-DMA rx-delay interrupt can sometimes be triggered
when there are 0 outstanding packets received. This is due
to the fact that the receive function will greedily consume
as many packets as possible on interrupt. So if two packets
(with a very particular timing) arrive in succession they
will each cause the rx-delay interrupt, but the first interrupt
will consume both packets.
This means the second interrupt is a 0 packet receive.

This is mostly OK, except that the tail pointer register is
updated unconditionally on receive. Currently the tail pointer
is always set to the current bd-ring descriptor under
the assumption that the hardware has moved onto the next
descriptor. What this means for length 0 recv is the current
descriptor that the hardware is potentially yet to use will
be marked as the tail. This causes the hardware to think
its run out of descriptors deadlocking the whole rx path.

Fixed by updating the tail pointer to the most recent
successfully consumed descriptor.

Reported-by: Wendy Liang <wendy.liang@xilinx.com>
Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
Tested-by: Jason Wu <huanyu@xilinx.com>
Acked-by: Michal Simek <michal.simek@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2015-05-05 19:33:58 -04:00
..
3com drivers/net: Use setup_timer and mod_timer 2015-02-11 19:40:12 -08:00
8390 net:treewide: Fix typo in drivers/net 2015-04-27 13:40:53 -04:00
adaptec
adi ptp: blackfin: use helpers for converting ns to timespec. 2015-03-31 17:19:19 -04:00
aeroflex net: greth: constify of_device_id array 2015-03-17 15:00:22 -04:00
agere et131x: use msecs_to_jiffies for conversions 2015-02-11 19:37:43 -08:00
allwinner ethernet: codespell comment spelling fixes 2015-03-08 22:54:22 -04:00
alteon net: rename vlan_tx_* helpers since "tx" is misleading there 2015-01-13 17:51:08 -05:00
altera altera_tse: Correct rx packet length 2015-04-29 15:19:34 -04:00
amd ethernet: amd: AMD_XGBE should depend on HAS_DMA 2015-04-23 14:09:58 -04:00
apm drivers: net: xgene: fix kbuild warnings 2015-04-30 22:30:07 -04:00
apple powerpc updates for 4.1 2015-04-16 13:53:32 -05:00
arc ethernet: arc: ARC_EMAC and EMAC_ROCKCHIP should depend on HAS_DMA 2015-04-23 14:09:58 -04:00
atheros trivial: net: atl1e: atl1e_hw.h: fix 0x0x prefix 2015-04-29 14:56:39 -04:00
broadcom bnx2x: Delay during kdump load 2015-04-29 15:49:21 -04:00
brocade ethernet: codespell comment spelling fixes 2015-03-08 22:54:22 -04:00
cadence net: macb: Fix race condition in driver when Rx frame is dropped 2015-04-29 15:24:46 -04:00
calxeda ethernet: codespell comment spelling fixes 2015-03-08 22:54:22 -04:00
chelsio cxgb4: Discard the packet if the length is greater than mtu 2015-05-05 19:31:50 -04:00
cirrus ethernet: codespell comment spelling fixes 2015-03-08 22:54:22 -04:00
cisco Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-03-03 21:16:48 -05:00
davicom dm9000: Add regulator and reset support to dm9000 2015-01-15 14:08:07 -05:00
dec Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-03-20 18:51:09 -04:00
dlink
emulex Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-05-02 22:05:58 -04:00
faraday
freescale net: fec: Fix RGMII-ID mode 2015-04-30 16:48:53 -04:00
fujitsu
hisilicon net: hip04: Make tx coalesce timer actually work 2015-04-15 17:21:29 -04:00
hp
i825xx
ibm ibmveth: Add support for Large Receive Offload 2015-04-30 16:33:46 -04:00
icplus
intel ixgbe: Use a signed type to hold error codes 2015-05-04 02:31:13 -07:00
marvell pxa168: fix double deallocation of managed resources 2015-04-26 16:05:49 -04:00
mellanox net/mlx4_en: Schedule napi when RX buffers allocation fails 2015-04-30 16:47:50 -04:00
micrel ethernet: Use eth_<foo>_addr instead of memset 2015-03-03 17:01:36 -05:00
microchip
moxa ethernet: codespell comment spelling fixes 2015-03-08 22:54:22 -04:00
myricom ethernet: myri10ge: use arch_phys_wc_add() 2015-04-23 14:28:14 -04:00
natsemi net: rename vlan_tx_* helpers since "tx" is misleading there 2015-01-13 17:51:08 -05:00
neterion s2io: Update driver to use dma_wmb 2015-04-08 12:15:14 -04:00
nuvoton
nvidia net: rename vlan_tx_* helpers since "tx" is misleading there 2015-01-13 17:51:08 -05:00
nxp
octeon netdev: octeon_mgmt: constify of_device_id array 2015-03-17 15:00:22 -04:00
oki-semi ethernet: codespell comment spelling fixes 2015-03-08 22:54:22 -04:00
packetengines ethernet: codespell comment spelling fixes 2015-03-08 22:54:22 -04:00
pasemi net: pasemi: Use setup_timer and mod_timer 2015-03-01 13:40:23 -05:00
qlogic netxen_nic: use spin_[un]lock_bh around tx_clean_lock 2015-04-30 16:37:29 -04:00
qualcomm ethernet: remove unused including <linux/version.h> 2015-04-16 12:14:24 -04:00
rdc
realtek r8169: Fix trivial typo in rtl_check_firmware 2015-02-24 16:26:07 -05:00
renesas sh_eth: Mitigate lost statistics updates 2015-03-04 15:40:54 -05:00
rocker Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-05-02 22:05:58 -04:00
samsung ethernet: codespell comment spelling fixes 2015-03-08 22:54:22 -04:00
seeq
sfc Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-04-17 16:31:08 -04:00
sgi
silan
sis
smsc net: smc91x: Remove an unused variable 2015-03-31 16:41:12 -04:00
stmicro stmmac: Configure Flow Control to work correctly based on rxfifo size 2015-04-16 13:58:42 -04:00
sun sungem, sunhme, sunvnet: Update drivers to use dma_wmb/rmb 2015-04-08 12:15:14 -04:00
tehuti net: rename vlan_tx_* helpers since "tx" is misleading there 2015-01-13 17:51:08 -05:00
ti net: netcp: remove call to netif_carrier_(on/off) for MAC to Phy interface 2015-04-27 23:11:49 -04:00
tile This is the final removal (after several years!) of the obsolete cpus_* 2015-04-20 10:19:03 -07:00
toshiba toshiba: Remove celleb from Kconfig options 2015-04-14 14:57:10 -04:00
tundra
via via-rhine: close SMP transmit races. 2015-05-04 00:18:27 -04:00
wiznet Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-03-20 18:51:09 -04:00
xilinx net: axienet: Handle 0 packet receive gracefully 2015-05-05 19:33:58 -04:00
xircom
xscale Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-03-03 21:16:48 -05:00
dnet.c
dnet.h
ec_bhf.c
ethoc.c net: ethoc: constify of_device_id array 2015-03-17 15:00:21 -04:00
fealnx.c
jme.c net: rename vlan_tx_* helpers since "tx" is misleading there 2015-01-13 17:51:08 -05:00
jme.h
Kconfig
korina.c
lantiq_etop.c
Makefile
netx-eth.c