diff options
author | Karl Beldan <karl.beldan@rivierawaves.com> | 2014-11-05 17:32:59 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-11-06 22:54:39 +0300 |
commit | 2c2a9cbd64387d6b70ac5db013e9bfe9412c7354 (patch) | |
tree | 24457fbbaab2016171b13aae6c2e105c082b8f2a /drivers/net/ethernet/ti | |
parent | 66f1c44887ba4f47d617f8ae21cf8e04e1892bd7 (diff) | |
download | linux-2c2a9cbd64387d6b70ac5db013e9bfe9412c7354.tar.xz |
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: 3ae8f4e0b98 ('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>
Diffstat (limited to 'drivers/net/ethernet/ti')
0 files changed, 0 insertions, 0 deletions