linux/drivers/net/ethernet/marvell
Karl Beldan 2c2a9cbd64 net: mv643xx_eth: reclaim TX skbs only when released by the HW
ATM, txq_reclaim will dequeue and free an skb for each tx desc released
by the hw that has TX_LAST_DESC set. However, in case of TSO, each
hw desc embedding the last part of a segment has TX_LAST_DESC set,
losing the one-to-one 'last skb frag'/'TX_LAST_DESC set' correspondance,
which causes data corruption.

Fix this by checking TX_ENABLE_INTERRUPT instead of TX_LAST_DESC, and
warn when trying to dequeue from an empty txq (which can be symptomatic
of releasing skbs prematurely).

Fixes: 3ae8f4e0b9 ('net: mv643xx_eth: Implement software TSO')
Reported-by: Slawomir Gajzner <slawomir.gajzner@gmail.com>
Reported-by: Julien D'Ascenzio <jdascenzio@yahoo.fr>
Signed-off-by: Karl Beldan <karl.beldan@rivierawaves.com>
Cc: Ian Campbell <ijc@hellion.org.uk>
Cc: Eric Dumazet <eric.dumazet@gmail.com>
Cc: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
Cc: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-11-06 14:54:39 -05:00
..
Kconfig net: pxa168_eth: PXA168_ETH should depend on HAS_DMA 2014-10-10 14:45:01 -04:00
Makefile ethernet: Add new driver for Marvell Armada 375 network unit 2014-07-10 17:18:24 -07:00
mv643xx_eth.c net: mv643xx_eth: reclaim TX skbs only when released by the HW 2014-11-06 14:54:39 -05:00
mvmdio.c net: mvmdio: Use devm_* API to simplify the code 2014-05-23 15:31:49 -04:00
mvneta.c mvneta: Add missing if_vlan.h include. 2014-08-25 20:21:55 -07:00
mvpp2.c net: mvpp2: fix possible memory leak 2014-11-01 15:11:50 -04:00
pxa168_eth.c net: pxa168_eth: avoid using signed char for bitops 2014-10-05 21:18:56 -04:00
skge.c drivers/net: Convert remaining uses of pr_warning to pr_warn 2014-09-09 20:37:08 -07:00
skge.h
sky2.c drivers/net: Convert remaining uses of pr_warning to pr_warn 2014-09-09 20:37:08 -07:00
sky2.h sky2: Receive Overflows not counted 2013-03-29 14:53:19 -04:00