summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAuke Kok <auke-jan.h.kok@intel.com>2007-10-30 18:21:50 (GMT)
committerJeff Garzik <jeff@garzik.org>2007-10-30 18:32:17 (GMT)
commit19abe86d60eeb34c5deeb3ab2d14229fa9f59157 (patch)
tree3d201cb4f21a7fc898e2d227a9d903ff9979cdad
parent6e4ca80d27374048c43651f87b4a9c6eb52667d1 (diff)
downloadlinux-fsl-qoriq-19abe86d60eeb34c5deeb3ab2d14229fa9f59157.tar.xz
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>
-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 e564335..3021234 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,
/* Workaround for premature desc write-backs
* in TSO mode. Append 4-byte sentinel desc */
- if (unlikely(mss && !nr_frags && size == len
- && size > 8))
+ if (unlikely(mss && (f == (nr_frags - 1))
+ && size == len && size > 8))
size -= 4;
buffer_info->length = size;