Message ID | 1361485805.21950.6.camel@lb-tlvb-dmitry |
---|---|
State | RFC, archived |
Delegated to: | David Miller |
Headers | show |
On Thu, Feb 21, 2013 at 2:30 PM, Dmitry Kravkov <dmitry@broadcom.com> wrote: > On Tue, 2013-02-19 at 10:39 -0800, pravin wrote: >> On Mon, Feb 18, 2013 at 11:50 AM, Dmitry Kravkov <dmitry@broadcom.com> wrote: >> > >> > Signed-off-by: Dmitry Kravkov <dmitry@broadcom.com> >> > --- >> > 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? > -- > 1.7.7.2 > > >> > >> > return mtu; >> > -- >> > 1.7.7.2 >> > >> > >> > -- >> > 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 >> > > > -- 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
On Thu, 2013-02-21 at 15:53 -0800, pravin wrote: > On Thu, Feb 21, 2013 at 2:30 PM, Dmitry Kravkov <dmitry@broadcom.com> wrote: > > On Tue, 2013-02-19 at 10:39 -0800, pravin wrote: > >> On Mon, Feb 18, 2013 at 11:50 AM, Dmitry Kravkov <dmitry@broadcom.com> wrote: > >> > > >> > Signed-off-by: Dmitry Kravkov <dmitry@broadcom.com> > >> > --- > >> > 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. -- 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
On Sun, Feb 24, 2013 at 8:45 AM, Dmitry Kravkov <dmitry@broadcom.com> wrote: > On Thu, 2013-02-21 at 15:53 -0800, pravin wrote: >> On Thu, Feb 21, 2013 at 2:30 PM, Dmitry Kravkov <dmitry@broadcom.com> wrote: >> > On Tue, 2013-02-19 at 10:39 -0800, pravin wrote: >> >> On Mon, Feb 18, 2013 at 11:50 AM, Dmitry Kravkov <dmitry@broadcom.com> wrote: >> >> > >> >> > Signed-off-by: Dmitry Kravkov <dmitry@broadcom.com> >> >> > --- >> >> > 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. > If NIC features are set correctly dev_hard_xmit() will not perform GSO. > > > > -- > 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 -- 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
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; }