From: Jeff Kirsher <[email protected]>
Date: Fri, 24 Aug 2012 23:38:11 -0700

> From: Bruce Allan <[email protected]>
> 
> With a low enough MSS on the link partner and TSO enabled locally, the
> networking stack can periodically send a very large (e.g.  64KB) TCP
> message for which the driver will attempt to use more Tx descriptors than
> are available by default in the Tx ring.  This is due to a workaround in
> the code that imposes a limit of only 4 MSS-sized segments per descriptor
> which appears to be a carry-over from the older e1000 driver and may be
> applicable only to some older PCI or PCIx parts which are not supported in
> e1000e.  When the driver gets a message that is too large to fit across the
> configured number of Tx descriptors, it stops the upper stack from queueing
> any more and gets stuck in this state.  After a timeout, the upper stack
> assumes the adapter is hung and calls the driver to reset it.
> 
> Remove the unnecessary limitation of using up to only 4 MSS-sized segments
> per Tx descriptor, and put in a hard failure test to catch when attempting
> to check for message sizes larger than would fit in the whole Tx ring.
> Refactor the remaining logic that limits the size of data per Tx descriptor
> from a seemingly arbitrary 8KB to a limit based on the dynamic size of the
> Tx packet buffer as described in the hardware specification.
> 
> Also, fix the logic in the check for space in the Tx ring for the next
> largest possible packet after the current one has been successfully queued
> for transmit, and use the appropriate defines for default ring sizes in
> e1000_probe instead of magic values.
> 
> This issue goes back to the introduction of e1000e in 2.6.24 when it was
> split off from e1000.
> 
> Reported-by: Ben Hutchings <[email protected]>
> Signed-off-by: Bruce Allan <[email protected]>
> Cc: Stable <[email protected]> [2.6.24+]
> Tested-by: Aaron Brown <[email protected]>
> Signed-off-by: Jeff Kirsher <[email protected]>

Applied, thanks.
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to