aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ixgb
diff options
context:
space:
mode:
authorAuke Kok <auke-jan.h.kok@intel.com>2007-10-30 14:21:50 -0400
committerJeff Garzik <jeff@garzik.org>2007-10-30 14:32:17 -0400
commit19abe86d60eeb34c5deeb3ab2d14229fa9f59157 (patch)
tree3d201cb4f21a7fc898e2d227a9d903ff9979cdad /drivers/net/ixgb
parent6e4ca80d27374048c43651f87b4a9c6eb52667d1 (diff)
ixgb: fix TX hangs under heavy load
A merge error occurred where we merged the wrong block here in version 1.0.120. The right condition for frags is slightly different then for the skb, so account for the difference properly and trim the TSO based size right. Originally part of a fix reported by IBM to fix TSO hangs on pSeries hardware. Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com> Cc: Andy Gospodarek <andy@greyhouse.net> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/net/ixgb')
-rw-r--r--drivers/net/ixgb/ixgb_main.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/ixgb/ixgb_main.c b/drivers/net/ixgb/ixgb_main.c
index e564335b4b84..3021234b1e17 100644
--- a/drivers/net/ixgb/ixgb_main.c
+++ b/drivers/net/ixgb/ixgb_main.c
@@ -1321,8 +1321,8 @@ ixgb_tx_map(struct ixgb_adapter *adapter, struct sk_buff *skb,
1321 1321
1322 /* Workaround for premature desc write-backs 1322 /* Workaround for premature desc write-backs
1323 * in TSO mode. Append 4-byte sentinel desc */ 1323 * in TSO mode. Append 4-byte sentinel desc */
1324 if (unlikely(mss && !nr_frags && size == len 1324 if (unlikely(mss && (f == (nr_frags - 1))
1325 && size > 8)) 1325 && size == len && size > 8))
1326 size -= 4; 1326 size -= 4;
1327 1327
1328 buffer_info->length = size; 1328 buffer_info->length = size;