r8169: fix unsigned int wraparound with TSO
authorJulien Ducourthial <jducourt@free.fr>
Tue, 8 May 2012 22:00:06 +0000 (00:00 +0200)
committerBen Hutchings <ben@decadent.org.uk>
Sun, 10 Jun 2012 13:42:05 +0000 (14:42 +0100)
commita549123336c6afafcf2fd2eea7248a8c9ac3385f
treebf1e9bc96965a91c01433d840947977934ccb1cc
parentba3d9c0eb1ed88c156e49eadcb1e9ec22cfc2fed
r8169: fix unsigned int wraparound with TSO

[ Upstream commit 477206a018f902895bfcd069dd820bfe94c187b1 ]

The r8169 may get stuck or show bad behaviour after activating TSO :
the net_device is not stopped when it has no more TX descriptors.
This problem comes from TX_BUFS_AVAIL which may reach -1 when all
transmit descriptors are in use. The patch simply tries to keep positive
values.

Tested with 8111d(onboard) on a D510MO, and with 8111e(onboard) on a
Zotac 890GXITX.

Signed-off-by: Julien Ducourthial <jducourt@free.fr>
Acked-by: Francois Romieu <romieu@fr.zoreil.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
drivers/net/ethernet/realtek/r8169.c