diff options
author | David S. Miller <davem@davemloft.net> | 2018-11-07 23:00:24 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-11-07 23:00:24 -0800 |
commit | be08989c4d900d5388be1a7d002cd7c2942d69cd (patch) | |
tree | aca63716df3fdd8a81fac9ae6c7985cedf870b91 | |
parent | cea0604d3f94ef41878d6e484ffeb67a8129ab5a (diff) | |
parent | e963e1097ad3c9f2062e10356af8c89de245c6b2 (diff) |
Merge branch 'nfp-add-and-use-tunnel-netdev-helpers'
John Hurley says:
====================
nfp: add and use tunnel netdev helpers
A recent patch introduced the function netif_is_vxlan() to verify the
tunnel type of a given netdev as vxlan.
Add a similar function to detect geneve netdevs and make use of this
function in the NFP driver. Also make use of the vxlan helper where
applicable.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/ethernet/netronome/nfp/flower/action.c | 8 | ||||
-rw-r--r-- | drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c | 2 | ||||
-rw-r--r-- | include/net/geneve.h | 6 |
3 files changed, 11 insertions, 5 deletions
diff --git a/drivers/net/ethernet/netronome/nfp/flower/action.c b/drivers/net/ethernet/netronome/nfp/flower/action.c index cfea8f790f95..fbc052d5bb47 100644 --- a/drivers/net/ethernet/netronome/nfp/flower/action.c +++ b/drivers/net/ethernet/netronome/nfp/flower/action.c @@ -11,6 +11,7 @@ #include <net/tc_act/tc_pedit.h> #include <net/tc_act/tc_vlan.h> #include <net/tc_act/tc_tunnel_key.h> +#include <net/vxlan.h> #include "cmsg.h" #include "main.h" @@ -94,13 +95,10 @@ nfp_fl_pre_lag(struct nfp_app *app, const struct tc_action *action, static bool nfp_fl_netdev_is_tunnel_type(struct net_device *out_dev, enum nfp_flower_tun_type tun_type) { - if (!out_dev->rtnl_link_ops) - return false; - - if (!strcmp(out_dev->rtnl_link_ops->kind, "vxlan")) + if (netif_is_vxlan(out_dev)) return tun_type == NFP_FL_TUNNEL_VXLAN; - if (!strcmp(out_dev->rtnl_link_ops->kind, "geneve")) + if (netif_is_geneve(out_dev)) return tun_type == NFP_FL_TUNNEL_GENEVE; return false; diff --git a/drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c b/drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c index fb6442d820b5..5d641d7dabff 100644 --- a/drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c +++ b/drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c @@ -190,6 +190,8 @@ static bool nfp_tun_is_netdev_to_offload(struct net_device *netdev) return true; if (netif_is_vxlan(netdev)) return true; + if (netif_is_geneve(netdev)) + return true; return false; } diff --git a/include/net/geneve.h b/include/net/geneve.h index a7600ed55ea3..fc6a7e0a874a 100644 --- a/include/net/geneve.h +++ b/include/net/geneve.h @@ -60,6 +60,12 @@ struct genevehdr { struct geneve_opt options[]; }; +static inline bool netif_is_geneve(const struct net_device *dev) +{ + return dev->rtnl_link_ops && + !strcmp(dev->rtnl_link_ops->kind, "geneve"); +} + #ifdef CONFIG_INET struct net_device *geneve_dev_create_fb(struct net *net, const char *name, u8 name_assign_type, u16 dst_port); |