From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Dmitry Kravkov" Subject: Re: [PATCH net-next v2 2/2] ip_gre: propogate target device GSO capability to the tunnel device Date: Sun, 24 Feb 2013 18:45:39 +0200 Message-ID: <1361724339.20403.2.camel@lb-tlvb-dmitry.il.broadcom.com> References: <1361217053-16984-1-git-send-email-dmitry@broadcom.com> <1361217053-16984-2-git-send-email-dmitry@broadcom.com> <1361485805.21950.6.camel@lb-tlvb-dmitry> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Cc: davem@davemloft.net, netdev@vger.kernel.org To: pravin Return-path: Received: from mms1.broadcom.com ([216.31.210.17]:3173 "EHLO mms1.broadcom.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758121Ab3BXQp6 (ORCPT ); Sun, 24 Feb 2013 11:45:58 -0500 In-Reply-To: Sender: netdev-owner@vger.kernel.org List-ID: On Thu, 2013-02-21 at 15:53 -0800, pravin wrote: > On Thu, Feb 21, 2013 at 2:30 PM, Dmitry Kravkov wrote: > > On Tue, 2013-02-19 at 10:39 -0800, pravin wrote: > >> On Mon, Feb 18, 2013 at 11:50 AM, Dmitry Kravkov wrote: > >> > > >> > Signed-off-by: Dmitry Kravkov > >> > --- > >> > Changes from v1: fixed email address > >> > > >> > > >> > net/ipv4/ip_gre.c | 10 ++++++++-- > >> > 1 files changed, 8 insertions(+), 2 deletions(-) > >> > > >> > diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c > >> > index cdc31ac..31bc941 100644 > >> > --- a/net/ipv4/ip_gre.c > >> > +++ b/net/ipv4/ip_gre.c > >> > @@ -1103,8 +1103,14 @@ static int ipgre_tunnel_bind_dev(struct net_device *dev) > >> > tunnel->hlen = addend; > >> > /* TCP offload with GRE SEQ is not supported. */ > >> > if (!(tunnel->parms.o_flags & GRE_SEQ)) { > >> > - dev->features |= NETIF_F_GSO_SOFTWARE; > >> > - dev->hw_features |= NETIF_F_GSO_SOFTWARE; > >> > + /* device supports enc gso offload*/ > >> > + if (tdev->hw_enc_features & NETIF_F_GRE_GSO) { > >> > + dev->features |= NETIF_F_TSO; > >> > + dev->hw_features |= NETIF_F_TSO; > >> > + } else { > >> > + dev->features |= NETIF_F_GSO_SOFTWARE; > >> > + dev->hw_features |= NETIF_F_GSO_SOFTWARE; > >> > + } > >> > } > >> > >> I am not sure about this change, Are you trying to limit GRE TSO to > >> just IPV4 in case of GRE offload in hardware? > > > > > > This mostly reverts previous patch, but also disables GSO when CSUM is > > set. > > > > --- > > net/ipv4/ip_gre.c | 14 ++++---------- > > 1 files changed, 4 insertions(+), 10 deletions(-) > > > > diff --git a/net/ipv4/ip_gre.c b/net/ipv4/ip_gre.c > > index 0de54cd..aae2d4b 100644 > > --- a/net/ipv4/ip_gre.c > > +++ b/net/ipv4/ip_gre.c > > @@ -1107,16 +1107,10 @@ static int ipgre_tunnel_bind_dev(struct > > net_device *dev) > > mtu = 68; > > > > tunnel->hlen = addend; > > - /* TCP offload with GRE SEQ is not supported. */ > > - if (!(tunnel->parms.o_flags & GRE_SEQ)) { > > - /* device supports enc gso offload*/ > > - if (tdev->hw_enc_features & NETIF_F_GRE_GSO) { > > - dev->features |= NETIF_F_TSO; > > - dev->hw_features |= NETIF_F_TSO; > > - } else { > > - dev->features |= NETIF_F_GSO_SOFTWARE; > > - dev->hw_features |= NETIF_F_GSO_SOFTWARE; > > - } > > + /* TCP offload with GRE SEQ or CSUM is not supported. */ > > + if (!(tunnel->parms.o_flags & (GRE_SEQ|GRE_CSUM))) { > > + dev->features |= NETIF_F_GSO_SOFTWARE; > > + dev->hw_features |= NETIF_F_GSO_SOFTWARE; > > } > > > > return mtu; > > This narrows down definition of NETIF_F_GRE_GSO. Is it required for > hardware offload? This is required to prevent dev_hard_xmit() to perform soft GSO. W/o it device receives divided packets.