Re: [PATCH net-next V2 3/3] net: Add GRO support for vxlan traffic
From: Eric Dumazet <hidden>
Date: 2014-01-07 20:04:06
On Tue, 2014-01-07 at 21:43 +0200, Or Gerlitz wrote:
On Tue, Jan 7, 2014 at 6:34 PM, Eric Dumazet [off-list ref] wrote:quoted
On Tue, 2014-01-07 at 17:29 +0200, Or Gerlitz wrote:quoted
Add gro handlers for vxlan using the udp gro infrastructurequoted
static void vxlan_notify_add_rx_port(struct sock *sk) {@@ -568,6 +661,8 @@ static void vxlan_notify_add_rx_port(struct sock *sk) dev->netdev_ops->ndo_add_vxlan_port(dev, sa_family, port); } + if (sa_family == AF_INET) + udp_add_offload(&vxlan_offload, port); rcu_read_unlock(); }This means two vxlan tunnels can not share same port. Is that a valid assertion ?nope -- the vxlan driver opens a listener udp socket per per listening port, but N > 1 vxlan tunnels can sit on that port, the driver does further demuxing based on the vnid carried in the vxlan header, see the call to vxlan_find_vni() from vxlan_rcv() --
So if we use same port, it seems to me udp_del_offload() of the first dismantled tunnel will remove the offload for the remaining tunnel. You forgot to implement a refcount somehow.