Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7a27fc6d authored by Sabrina Dubroca's avatar Sabrina Dubroca Committed by David S. Miller
Browse files

net: check UDP tunnel RX port offload feature before calling tunnel ndo ndo



If NETIF_F_RX_UDP_TUNNEL_PORT was disabled on a given netdevice, skip
the tunnel offload ndo call during tunnel port creation and deletion.

Signed-off-by: default avatarSabrina Dubroca <sd@queasysnail.net>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d764a122
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -82,7 +82,8 @@ void udp_tunnel_push_rx_port(struct net_device *dev, struct socket *sock,
	struct sock *sk = sock->sk;
	struct udp_tunnel_info ti;

	if (!dev->netdev_ops->ndo_udp_tunnel_add)
	if (!dev->netdev_ops->ndo_udp_tunnel_add ||
	    !(dev->features & NETIF_F_RX_UDP_TUNNEL_PORT))
		return;

	ti.type = type;
@@ -109,6 +110,8 @@ void udp_tunnel_notify_add_rx_port(struct socket *sock, unsigned short type)
	for_each_netdev_rcu(net, dev) {
		if (!dev->netdev_ops->ndo_udp_tunnel_add)
			continue;
		if (!(dev->features & NETIF_F_RX_UDP_TUNNEL_PORT))
			continue;
		dev->netdev_ops->ndo_udp_tunnel_add(dev, &ti);
	}
	rcu_read_unlock();
@@ -131,6 +134,8 @@ void udp_tunnel_notify_del_rx_port(struct socket *sock, unsigned short type)
	for_each_netdev_rcu(net, dev) {
		if (!dev->netdev_ops->ndo_udp_tunnel_del)
			continue;
		if (!(dev->features & NETIF_F_RX_UDP_TUNNEL_PORT))
			continue;
		dev->netdev_ops->ndo_udp_tunnel_del(dev, &ti);
	}
	rcu_read_unlock();