[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <504C9EFCA2D0054393414C9CB605C37F20D021A3@SJEXCHMB06.corp.ad.broadcom.com>
Date: Thu, 11 Jul 2013 08:31:11 +0000
From: "Dmitry Kravkov" <dmitry@...adcom.com>
To: "David Miller" <davem@...emloft.net>,
"pshelar@...ira.com" <pshelar@...ira.com>
cc: "eric.dumazet@...il.com" <eric.dumazet@...il.com>,
"alexander.h.duyck@...el.com" <alexander.h.duyck@...el.com>,
"netdev@...r.kernel.org" <netdev@...r.kernel.org>,
"stephen@...workplumber.org" <stephen@...workplumber.org>,
"joseph.gasparakis@...el.com" <joseph.gasparakis@...el.com>,
"jesse@...ira.com" <jesse@...ira.com>
Subject: RE: [PATCH net v2] gso: Update tunnel segmentation to support
Tx checksum offload
> -----Original Message-----
> From: netdev-owner@...r.kernel.org [mailto:netdev-
> owner@...r.kernel.org] On Behalf Of David Miller
> Sent: Thursday, July 11, 2013 11:14 AM
> To: pshelar@...ira.com
> Cc: eric.dumazet@...il.com; alexander.h.duyck@...el.com;
> netdev@...r.kernel.org; stephen@...workplumber.org;
> joseph.gasparakis@...el.com; jesse@...ira.com
> Subject: Re: [PATCH net v2] gso: Update tunnel segmentation to support Tx
> checksum offload
>
> From: Pravin Shelar <pshelar@...ira.com>
> Date: Thu, 11 Jul 2013 00:45:19 -0700
>
> > I did some digging and found following commit causing problem with GRE
> > TSO on bnx setup.
> >
> > c957d09ffda417f6c8e3d1f10e2b05228607d6d7 is the first bad commit
> > commit c957d09ffda417f6c8e3d1f10e2b05228607d6d7
> > Author: Yuval Mintz <yuvalmin@...adcom.com>
> > Date: Tue Jun 25 08:50:11 2013 +0300
> >
> > bnx2x: Remove sparse and coccinelle warnings
>
> Yeah it's this change:
>
> @@ -3543,9 +3543,12 @@ static void bnx2x_update_pbds_gso_enc(struct
> sk_buff *skb,
> /* outer IP header info */
> if (xmit_type & XMIT_CSUM_V4) {
> struct iphdr *iph = ip_hdr(skb);
> + u16 csum = (__force u16)(~iph->check) -
> + (__force u16)iph->tot_len -
> + (__force u16)iph->frag_off;
> +
> pbd2->fw_ip_csum_wo_len_flags_frag =
> - bswab16(csum_fold((~iph->check) -
> - iph->tot_len - iph->frag_off));
> + bswab16(csum_fold((__force __wsum)csum));
>
> Way too aggressive with the u16 casting. These two expressions are
> not equivalent:
>
> csum_fold((~iph->check) - iph->tot_len - iph->frag_off)
>
> csum_fold((__wsum) ((u16)(~iph->check) - (u16)iph->tot_len -
> (u16)iph->frag_off))
>
> In the first case, the entire expression is computed as 32-bit, in
> the second the ~iph->check is truncated to 16-bits before tot_len
> and frag_off are subtracted from it.
I will provide the fix soon ...
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@...r.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists