Re: [PATCH net-next] geneve: always fill CSUM6_RX configuration

2017-05-22 Thread Eric Garver
On Sat, May 20, 2017 at 09:56:44PM -0700, Pravin Shelar wrote:
> On Sat, May 20, 2017 at 6:35 AM, Eric Garver  wrote:
> > On Fri, May 19, 2017 at 06:57:46PM -0700, Pravin Shelar wrote:
> >> On Thu, May 18, 2017 at 12:59 PM, Eric Garver  wrote:
> >> > CSMU6_RX is relevant for collect_metadata as well. As such leave it
> >> > outside of the dev's IPv4/IPv6 checks.
> >> >
> >> Can you explain it bit? is this flag used with ipv4 tunnels?
> >
> > It's used with collect_metadata as both ipv4 and ipv6 sockets will be
> > created.
> >
> > openvswitch recently gained support for creating tunnels with rtnetlink.
> > It sets COLLECT_METADATA and CSUM6_RX. After create, it does a get to
> > verify the device got created with all the requested configuration. The
> > verify was failing due to CSUM6_RX not being returned.
> >
> > Since ip_tunnel_info_af() defaults to returning AF_INET, we fall into
> > the IPv4 case and CSUM6_RX is never returned. Other relevant areas that
> > call ip_tunnel_info_af() do so using the info from the skb, not the
> > geneve_dev.
> >
> ok.
> I think ip_tunnel_info_af() check is not right. it does not work in
> case of collect_metadata.
> Better fix would be check for genene->sock4 and genene->sock6 and
> build the netlink skb accordingly.

Agreed. That's a better idea.

Lets drop this patch. I'll work on one to look at the actual sockets
instead.

Thanks Pravin.


Re: [PATCH net-next] geneve: always fill CSUM6_RX configuration

2017-05-20 Thread Pravin Shelar
On Sat, May 20, 2017 at 6:35 AM, Eric Garver  wrote:
> On Fri, May 19, 2017 at 06:57:46PM -0700, Pravin Shelar wrote:
>> On Thu, May 18, 2017 at 12:59 PM, Eric Garver  wrote:
>> > CSMU6_RX is relevant for collect_metadata as well. As such leave it
>> > outside of the dev's IPv4/IPv6 checks.
>> >
>> Can you explain it bit? is this flag used with ipv4 tunnels?
>
> It's used with collect_metadata as both ipv4 and ipv6 sockets will be
> created.
>
> openvswitch recently gained support for creating tunnels with rtnetlink.
> It sets COLLECT_METADATA and CSUM6_RX. After create, it does a get to
> verify the device got created with all the requested configuration. The
> verify was failing due to CSUM6_RX not being returned.
>
> Since ip_tunnel_info_af() defaults to returning AF_INET, we fall into
> the IPv4 case and CSUM6_RX is never returned. Other relevant areas that
> call ip_tunnel_info_af() do so using the info from the skb, not the
> geneve_dev.
>
ok.
I think ip_tunnel_info_af() check is not right. it does not work in
case of collect_metadata.
Better fix would be check for genene->sock4 and genene->sock6 and
build the netlink skb accordingly.


Re: [PATCH net-next] geneve: always fill CSUM6_RX configuration

2017-05-20 Thread Eric Garver
On Fri, May 19, 2017 at 06:57:46PM -0700, Pravin Shelar wrote:
> On Thu, May 18, 2017 at 12:59 PM, Eric Garver  wrote:
> > CSMU6_RX is relevant for collect_metadata as well. As such leave it
> > outside of the dev's IPv4/IPv6 checks.
> >
> Can you explain it bit? is this flag used with ipv4 tunnels?

It's used with collect_metadata as both ipv4 and ipv6 sockets will be
created.

openvswitch recently gained support for creating tunnels with rtnetlink.
It sets COLLECT_METADATA and CSUM6_RX. After create, it does a get to
verify the device got created with all the requested configuration. The
verify was failing due to CSUM6_RX not being returned.

Since ip_tunnel_info_af() defaults to returning AF_INET, we fall into
the IPv4 case and CSUM6_RX is never returned. Other relevant areas that
call ip_tunnel_info_af() do so using the info from the skb, not the
geneve_dev.

I hope that made it clear. Thanks for taking a look.

Eric.

> > Fixes: 9b4437a5b870 ("geneve: Unify LWT and netdev handling.")
> > Signed-off-by: Eric Garver 
> > ---
> >  drivers/net/geneve.c | 8 
> >  1 file changed, 4 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/net/geneve.c b/drivers/net/geneve.c
> > index dec5d563ab19..f557d1dc3f9b 100644
> > --- a/drivers/net/geneve.c
> > +++ b/drivers/net/geneve.c
> > @@ -1311,13 +1311,13 @@ static int geneve_fill_info(struct sk_buff *skb, 
> > const struct net_device *dev)
> > if (nla_put_u8(skb, IFLA_GENEVE_UDP_ZERO_CSUM6_TX,
> >!(info->key.tun_flags & TUNNEL_CSUM)))
> > goto nla_put_failure;
> > -
> > -   if (nla_put_u8(skb, IFLA_GENEVE_UDP_ZERO_CSUM6_RX,
> > -  !geneve->use_udp6_rx_checksums))
> > -   goto nla_put_failure;
> >  #endif
> > }
> >
> > +   if (nla_put_u8(skb, IFLA_GENEVE_UDP_ZERO_CSUM6_RX,
> > +  !geneve->use_udp6_rx_checksums))
> > +   goto nla_put_failure;
> > +
> > if (nla_put_u8(skb, IFLA_GENEVE_TTL, info->key.ttl) ||
> > nla_put_u8(skb, IFLA_GENEVE_TOS, info->key.tos) ||
> > nla_put_be32(skb, IFLA_GENEVE_LABEL, info->key.label))
> > --
> > 2.12.0
> >


Re: [PATCH net-next] geneve: always fill CSUM6_RX configuration

2017-05-19 Thread Pravin Shelar
On Thu, May 18, 2017 at 12:59 PM, Eric Garver  wrote:
> CSMU6_RX is relevant for collect_metadata as well. As such leave it
> outside of the dev's IPv4/IPv6 checks.
>
Can you explain it bit? is this flag used with ipv4 tunnels?

> Fixes: 9b4437a5b870 ("geneve: Unify LWT and netdev handling.")
> Signed-off-by: Eric Garver 
> ---
>  drivers/net/geneve.c | 8 
>  1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/net/geneve.c b/drivers/net/geneve.c
> index dec5d563ab19..f557d1dc3f9b 100644
> --- a/drivers/net/geneve.c
> +++ b/drivers/net/geneve.c
> @@ -1311,13 +1311,13 @@ static int geneve_fill_info(struct sk_buff *skb, 
> const struct net_device *dev)
> if (nla_put_u8(skb, IFLA_GENEVE_UDP_ZERO_CSUM6_TX,
>!(info->key.tun_flags & TUNNEL_CSUM)))
> goto nla_put_failure;
> -
> -   if (nla_put_u8(skb, IFLA_GENEVE_UDP_ZERO_CSUM6_RX,
> -  !geneve->use_udp6_rx_checksums))
> -   goto nla_put_failure;
>  #endif
> }
>
> +   if (nla_put_u8(skb, IFLA_GENEVE_UDP_ZERO_CSUM6_RX,
> +  !geneve->use_udp6_rx_checksums))
> +   goto nla_put_failure;
> +
> if (nla_put_u8(skb, IFLA_GENEVE_TTL, info->key.ttl) ||
> nla_put_u8(skb, IFLA_GENEVE_TOS, info->key.tos) ||
> nla_put_be32(skb, IFLA_GENEVE_LABEL, info->key.label))
> --
> 2.12.0
>


[PATCH net-next] geneve: always fill CSUM6_RX configuration

2017-05-18 Thread Eric Garver
CSMU6_RX is relevant for collect_metadata as well. As such leave it
outside of the dev's IPv4/IPv6 checks.

Fixes: 9b4437a5b870 ("geneve: Unify LWT and netdev handling.")
Signed-off-by: Eric Garver 
---
 drivers/net/geneve.c | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/net/geneve.c b/drivers/net/geneve.c
index dec5d563ab19..f557d1dc3f9b 100644
--- a/drivers/net/geneve.c
+++ b/drivers/net/geneve.c
@@ -1311,13 +1311,13 @@ static int geneve_fill_info(struct sk_buff *skb, const 
struct net_device *dev)
if (nla_put_u8(skb, IFLA_GENEVE_UDP_ZERO_CSUM6_TX,
   !(info->key.tun_flags & TUNNEL_CSUM)))
goto nla_put_failure;
-
-   if (nla_put_u8(skb, IFLA_GENEVE_UDP_ZERO_CSUM6_RX,
-  !geneve->use_udp6_rx_checksums))
-   goto nla_put_failure;
 #endif
}
 
+   if (nla_put_u8(skb, IFLA_GENEVE_UDP_ZERO_CSUM6_RX,
+  !geneve->use_udp6_rx_checksums))
+   goto nla_put_failure;
+
if (nla_put_u8(skb, IFLA_GENEVE_TTL, info->key.ttl) ||
nla_put_u8(skb, IFLA_GENEVE_TOS, info->key.tos) ||
nla_put_be32(skb, IFLA_GENEVE_LABEL, info->key.label))
-- 
2.12.0