Patchwork [net-next,4/6] bnx2: Eliminate TSO header modifications.

login
register
mail settings
Submitter Michael Chan
Date Oct. 9, 2008, 5:16 p.m.
Message ID <1223572568-1298-4-git-send-email-mchan@broadcom.com>
Download mbox | patch
Permalink /patch/3619/
State Accepted
Delegated to: David Miller
Headers show

Comments

Michael Chan - Oct. 9, 2008, 5:16 p.m.
This is now possible with updated firmware.

Signed-off-by: Michael Chan <mchan@broadcom.com>
---
 drivers/net/bnx2.c |   16 +---------------
 1 files changed, 1 insertions(+), 15 deletions(-)
David Miller - Oct. 9, 2008, 7:25 p.m.
From: "Michael Chan" <mchan@broadcom.com>
Date: Thu,  9 Oct 2008 10:16:06 -0700

> This is now possible with updated firmware.
> 
> Signed-off-by: Michael Chan <mchan@broadcom.com>

Nice, applied.

Quick question, in the intermediate step where we have the
new firmware (patch #3) but not this change applied (patch
#4) does TSO still work properly?

If TSO is bolixed after patch #3 but before patch #4 please
don't create those kinds of non-bisectable situations in
the future.  I'd rather you do the firmware update and the
TSO logic changes all in one go to keep it all working.

Thanks!
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Michael Chan - Oct. 9, 2008, 8:56 p.m.
On Thu, 2008-10-09 at 12:25 -0700, David Miller wrote:
> From: "Michael Chan" <mchan@broadcom.com>
> Date: Thu,  9 Oct 2008 10:16:06 -0700
> 
> > This is now possible with updated firmware.
> >
> > Signed-off-by: Michael Chan <mchan@broadcom.com>
> 
> Nice, applied.
> 
> Quick question, in the intermediate step where we have the
> new firmware (patch #3) but not this change applied (patch
> #4) does TSO still work properly?

It will still work.  The firmware will overwrite the header fields
modified (unnecessarily) by the driver.

> 
> If TSO is bolixed after patch #3 but before patch #4 please
> don't create those kinds of non-bisectable situations in
> the future.  I'd rather you do the firmware update and the
> TSO logic changes all in one go to keep it all working.
> 
> Thanks!
> 


--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c
index 21711c7..f147204 100644
--- a/drivers/net/bnx2.c
+++ b/drivers/net/bnx2.c
@@ -6008,7 +6008,7 @@  bnx2_start_xmit(struct sk_buff *skb, struct net_device *dev)
 	}
 #endif
 	if ((mss = skb_shinfo(skb)->gso_size)) {
-		u32 tcp_opt_len, ip_tcp_len;
+		u32 tcp_opt_len;
 		struct iphdr *iph;
 
 		vlan_tag_flags |= TX_BD_FLAGS_SW_LSO;
@@ -6032,21 +6032,7 @@  bnx2_start_xmit(struct sk_buff *skb, struct net_device *dev)
 				mss |= (tcp_off & 0xc) << TX_BD_TCP6_OFF2_SHL;
 			}
 		} else {
-			if (skb_header_cloned(skb) &&
-			    pskb_expand_head(skb, 0, 0, GFP_ATOMIC)) {
-				dev_kfree_skb(skb);
-				return NETDEV_TX_OK;
-			}
-
-			ip_tcp_len = ip_hdrlen(skb) + sizeof(struct tcphdr);
-
 			iph = ip_hdr(skb);
-			iph->check = 0;
-			iph->tot_len = htons(mss + ip_tcp_len + tcp_opt_len);
-			tcp_hdr(skb)->check = ~csum_tcpudp_magic(iph->saddr,
-								 iph->daddr, 0,
-								 IPPROTO_TCP,
-								 0);
 			if (tcp_opt_len || (iph->ihl > 5)) {
 				vlan_tag_flags |= ((iph->ihl - 5) +
 						   (tcp_opt_len >> 2)) << 8;