From 98fa0724e04e6e2fdaa7b8d4971061b5485be159 Mon Sep 17 00:00:00 2001 From: Herbert Xu Date: Sat, 16 Dec 2006 12:04:33 +1100 Subject: [PATCH] --- yaml --- r: 45044 b: refs/heads/master c: 683a2aa339f607c8a422835161ceab68b2a5a18a h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/net/e1000/e1000_main.c | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index df2f71eb3da3..b215563a5ce7 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1a63e846a4099e6fbff86a3b112064378515f254 +refs/heads/master: 683a2aa339f607c8a422835161ceab68b2a5a18a diff --git a/trunk/drivers/net/e1000/e1000_main.c b/trunk/drivers/net/e1000/e1000_main.c index 8c4924f1f7ed..4c1ff752048c 100644 --- a/trunk/drivers/net/e1000/e1000_main.c +++ b/trunk/drivers/net/e1000/e1000_main.c @@ -3318,6 +3318,16 @@ e1000_xmit_frame(struct sk_buff *skb, struct net_device *netdev) if (skb->data_len && (hdr_len == (skb->len - skb->data_len))) { switch (adapter->hw.mac_type) { unsigned int pull_size; + case e1000_82544: + /* Make sure we have room to chop off 4 bytes, + * and that the end alignment will work out to + * this hardware's requirements + * NOTE: this is a TSO only workaround + * if end byte alignment not correct move us + * into the next dword */ + if ((unsigned long)(skb->tail - 1) & 4) + break; + /* fall through */ case e1000_82571: case e1000_82572: case e1000_82573: