Patch "net: stmmac: fix completely hung TX when using TSO" has been added to the 4.11-stable tree
Subsystems (4)
This is a note to let you know that I've just added the patch titled
net: stmmac: fix completely hung TX when using TSO
to the 4.11-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
net-stmmac-fix-completely-hung-tx-when-using-tso.patch
and it can be found in the queue-4.11 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Thu Jun 8 08:58:08 CEST 2017
From: Niklas Cassel <[email protected]>
Date: Tue, 6 Jun 2017 09:25:00 +0200
Subject: net: stmmac: fix completely hung TX when using TSO
From: Niklas Cassel <[email protected]>
[ Upstream commit 426849e6611f2092553f8d53372ae310818a6292 ]
stmmac_tso_allocator can fail to set the Last Descriptor bit on a descriptor that actually was the last descriptor.
This happens when the buffer of the last descriptor ends up having a size of exactly TSO_MAX_BUFF_SIZE.
When the IP eventually reaches the next last descriptor, which actually has the bit set, the DMA will hang.
When the DMA hangs, we get a tx timeout, however, since stmmac does not do a complete reset of the IP in stmmac_tx_timeout, we end up in a state with completely hung TX.
--- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +1 -1
@@ -1950,7 +1950,7 @@ static void stmmac_tso_allocator(struct priv->hw->desc->prepare_tso_tx_desc (desc,0 , buff_size,0 ,1 , - (last_segment) && (buff_size <TSO_MAX_BUFF_SIZE ), + (last_segment) && (tmp_len <=TSO_MAX_BUFF_SIZE ),0 ,0 ); tmp_len -=TSO_MAX_BUFF_SIZE ;
Patches currently in stable-queue which might be from [email protected] are
queue-4.11/net-stmmac-fix-completely-hung-tx-when-using-tso.patch