net: Add netif_is_vxlan()
Add the ability to determine whether a netdev is a VxLAN netdev by calling the above mentioned function that checks the netdev's rtnl_link_ops. This will allow modules to identify netdev events involving a VxLAN netdev and act accordingly. For example, drivers capable of VxLAN offload will need to configure the underlying device when a VxLAN netdev is being enslaved to an offloaded bridge. Convert nfp to use the newly introduced helper. Signed-off-by: Ido Schimmel <idosch@mellanox.com> Reviewed-by: Petr Machata <petrm@mellanox.com> Acked-by: Jakub Kicinski <jakub.kicinski@netronome.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
4cf178d7b9
Коммит
5ff4ff4fe8
|
@ -4,6 +4,7 @@
|
|||
#include <linux/etherdevice.h>
|
||||
#include <linux/inetdevice.h>
|
||||
#include <net/netevent.h>
|
||||
#include <net/vxlan.h>
|
||||
#include <linux/idr.h>
|
||||
#include <net/dst_metadata.h>
|
||||
#include <net/arp.h>
|
||||
|
@ -187,7 +188,7 @@ static bool nfp_tun_is_netdev_to_offload(struct net_device *netdev)
|
|||
return false;
|
||||
if (!strcmp(netdev->rtnl_link_ops->kind, "openvswitch"))
|
||||
return true;
|
||||
if (!strcmp(netdev->rtnl_link_ops->kind, "vxlan"))
|
||||
if (netif_is_vxlan(netdev))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
#include <linux/if_vlan.h>
|
||||
#include <net/udp_tunnel.h>
|
||||
#include <net/dst_metadata.h>
|
||||
#include <net/rtnetlink.h>
|
||||
|
||||
/* VXLAN protocol (RFC 7348) header:
|
||||
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
|
@ -402,4 +403,10 @@ static inline bool vxlan_addr_multicast(const union vxlan_addr *ipa)
|
|||
|
||||
#endif /* IS_ENABLED(CONFIG_IPV6) */
|
||||
|
||||
static inline bool netif_is_vxlan(const struct net_device *dev)
|
||||
{
|
||||
return dev->rtnl_link_ops &&
|
||||
!strcmp(dev->rtnl_link_ops->kind, "vxlan");
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
Загрузка…
Ссылка в новой задаче