[PATCH net] bnx2x: fix TCP offload for tunneling ipv4 over ipv6

Subsystems: broadcom bnx2x 10 gigabit ethernet driver, networking drivers, the rest

STALE4806d

4 messages, 3 authors, 2013-06-05 · open the first message on its own page

[PATCH net] bnx2x: fix TCP offload for tunneling ipv4 over ipv6

From: Dmitry Kravkov <hidden>
Date: 2013-06-03 09:28:51

FW was initialized with data from wrong header, this caused TSO packets
have wrong IP csum.

Signed-off-by: Dmitry Kravkov <redacted>
Signed-off-by: Ariel Elior <redacted>
Signed-off-by: Eilon Greenstein <redacted>
---
 drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
index c80f1d2..37c1495 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
@@ -3198,11 +3198,11 @@ static u32 bnx2x_xmit_type(struct bnx2x *bp, struct sk_buff *skb)
 		rc |= XMIT_CSUM_TCP;
 
 	if (skb_is_gso_v6(skb)) {
-		rc |= (XMIT_GSO_V6 | XMIT_CSUM_TCP | XMIT_CSUM_V6);
+		rc |= (XMIT_GSO_V6 | XMIT_CSUM_TCP);
 		if (rc & XMIT_CSUM_ENC)
 			rc |= XMIT_GSO_ENC_V6;
 	} else if (skb_is_gso(skb)) {
-		rc |= (XMIT_GSO_V4 | XMIT_CSUM_V4 | XMIT_CSUM_TCP);
+		rc |= (XMIT_GSO_V4 | XMIT_CSUM_TCP);
 		if (rc & XMIT_CSUM_ENC)
 			rc |= XMIT_GSO_ENC_V4;
 	}
@@ -3489,19 +3489,18 @@ static void bnx2x_update_pbds_gso_enc(struct sk_buff *skb,
 {
 	u16 hlen_w = 0;
 	u8 outerip_off, outerip_len = 0;
+
 	/* from outer IP to transport */
 	hlen_w = (skb_inner_transport_header(skb) -
 		  skb_network_header(skb)) >> 1;
 
 	/* transport len */
-	if (xmit_type & XMIT_CSUM_TCP)
-		hlen_w += inner_tcp_hdrlen(skb) >> 1;
-	else
-		hlen_w += sizeof(struct udphdr) >> 1;
+	hlen_w += inner_tcp_hdrlen(skb) >> 1;
 
 	pbd2->fw_ip_hdr_to_payload_w = hlen_w;
 
-	if (xmit_type & XMIT_CSUM_ENC_V4) {
+	/* outer IP header info */
+	if (xmit_type & XMIT_CSUM_V4) {
 		struct iphdr *iph = ip_hdr(skb);
 		pbd2->fw_ip_csum_wo_len_flags_frag =
 			bswab16(csum_fold((~iph->check) -
-- 
1.8.1.4

Re: [PATCH net] bnx2x: fix TCP offload for tunneling ipv4 over ipv6

From: Sergei Shtylyov <hidden>
Date: 2013-06-03 11:27:51

Hello.

On 03-06-2013 13:28, Dmitry Kravkov wrote:
FW was initialized with data from wrong header, this caused TSO packets
have wrong IP csum.
Signed-off-by: Dmitry Kravkov <redacted>
Signed-off-by: Ariel Elior <redacted>
Signed-off-by: Eilon Greenstein <redacted>
---
  drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c | 13 ++++++-------
  1 file changed, 6 insertions(+), 7 deletions(-)
quoted hunk
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
index c80f1d2..37c1495 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
@@ -3198,11 +3198,11 @@ static u32 bnx2x_xmit_type(struct bnx2x *bp, struct sk_buff *skb)
  		rc |= XMIT_CSUM_TCP;

  	if (skb_is_gso_v6(skb)) {
-		rc |= (XMIT_GSO_V6 | XMIT_CSUM_TCP | XMIT_CSUM_V6);
+		rc |= (XMIT_GSO_V6 | XMIT_CSUM_TCP);
   Maybe it's time to drop the useless ()?
  		if (rc & XMIT_CSUM_ENC)
  			rc |= XMIT_GSO_ENC_V6;
  	} else if (skb_is_gso(skb)) {
-		rc |= (XMIT_GSO_V4 | XMIT_CSUM_V4 | XMIT_CSUM_TCP);
+		rc |= (XMIT_GSO_V4 | XMIT_CSUM_TCP);
    Oh, here as well...

WBR, Sergei

RE: [PATCH net] bnx2x: fix TCP offload for tunneling ipv4 over ipv6

From: Dmitry Kravkov <hidden>
Date: 2013-06-03 11:45:33

-----Original Message-----
From: Sergei Shtylyov [mailto:sergei.shtylyov@cogentembedded.com]
Sent: Monday, June 03, 2013 2:28 PM
To: Dmitry Kravkov
Cc: davem@davemloft.net; netdev@vger.kernel.org; Ariel Elior; Eilon Greenstein
Subject: Re: [PATCH net] bnx2x: fix TCP offload for tunneling ipv4 over ipv6

Hello.

On 03-06-2013 13:28, Dmitry Kravkov wrote:
quoted
FW was initialized with data from wrong header, this caused TSO packets
have wrong IP csum.
quoted
Signed-off-by: Dmitry Kravkov <redacted>
Signed-off-by: Ariel Elior <redacted>
Signed-off-by: Eilon Greenstein <redacted>
---
  drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c | 13 ++++++-------
  1 file changed, 6 insertions(+), 7 deletions(-)
quoted
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
index c80f1d2..37c1495 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c
@@ -3198,11 +3198,11 @@ static u32 bnx2x_xmit_type(struct bnx2x *bp, struct sk_buff *skb)
  		rc |= XMIT_CSUM_TCP;

  	if (skb_is_gso_v6(skb)) {
-		rc |= (XMIT_GSO_V6 | XMIT_CSUM_TCP | XMIT_CSUM_V6);
+		rc |= (XMIT_GSO_V6 | XMIT_CSUM_TCP);
   Maybe it's time to drop the useless ()?
quoted
  		if (rc & XMIT_CSUM_ENC)
  			rc |= XMIT_GSO_ENC_V6;
  	} else if (skb_is_gso(skb)) {
-		rc |= (XMIT_GSO_V4 | XMIT_CSUM_V4 | XMIT_CSUM_TCP);
+		rc |= (XMIT_GSO_V4 | XMIT_CSUM_TCP);
    Oh, here as well...

WBR, Sergei
Net tree is not proper place for pure beautification - this can be done in net-next after this functional change is merged there


 

Re: [PATCH net] bnx2x: fix TCP offload for tunneling ipv4 over ipv6

From: David Miller <davem@davemloft.net>
Date: 2013-06-05 00:00:02

From: "Dmitry Kravkov" <redacted>
Date: Mon, 3 Jun 2013 12:28:41 +0300
FW was initialized with data from wrong header, this caused TSO packets
have wrong IP csum.

Signed-off-by: Dmitry Kravkov <redacted>
Signed-off-by: Ariel Elior <redacted>
Signed-off-by: Eilon Greenstein <redacted>
Applied, thanks.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help