nfp: flower: increase scope of netdev checking functions
Both the actions and tunnel_conf files contain local functions that check the type of an input netdev. In preparation for re-use with tunnel offload via indirect blocks, move these to static inline functions in a header file. Signed-off-by: John Hurley <john.hurley@netronome.com> Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
7885b4fc8d
commit
65b7970edf
@ -2,7 +2,6 @@
|
||||
/* Copyright (C) 2017-2018 Netronome Systems, Inc. */
|
||||
|
||||
#include <linux/bitfield.h>
|
||||
#include <net/geneve.h>
|
||||
#include <net/pkt_cls.h>
|
||||
#include <net/switchdev.h>
|
||||
#include <net/tc_act/tc_csum.h>
|
||||
@ -11,7 +10,6 @@
|
||||
#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"
|
||||
@ -92,18 +90,6 @@ nfp_fl_pre_lag(struct nfp_app *app, const struct tc_action *action,
|
||||
return act_size;
|
||||
}
|
||||
|
||||
static bool nfp_fl_netdev_is_tunnel_type(struct net_device *out_dev,
|
||||
enum nfp_flower_tun_type tun_type)
|
||||
{
|
||||
if (netif_is_vxlan(out_dev))
|
||||
return tun_type == NFP_FL_TUNNEL_VXLAN;
|
||||
|
||||
if (netif_is_geneve(out_dev))
|
||||
return tun_type == NFP_FL_TUNNEL_GENEVE;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static int
|
||||
nfp_fl_output(struct nfp_app *app, struct nfp_fl_output *output,
|
||||
const struct tc_action *action, struct nfp_fl_payload *nfp_flow,
|
||||
|
@ -8,6 +8,7 @@
|
||||
#include <linux/skbuff.h>
|
||||
#include <linux/types.h>
|
||||
#include <net/geneve.h>
|
||||
#include <net/vxlan.h>
|
||||
|
||||
#include "../nfp_app.h"
|
||||
#include "../nfpcore/nfp_cpp.h"
|
||||
@ -499,6 +500,32 @@ static inline int nfp_flower_cmsg_get_data_len(struct sk_buff *skb)
|
||||
return skb->len - NFP_FLOWER_CMSG_HLEN;
|
||||
}
|
||||
|
||||
static inline bool
|
||||
nfp_fl_netdev_is_tunnel_type(struct net_device *netdev,
|
||||
enum nfp_flower_tun_type tun_type)
|
||||
{
|
||||
if (netif_is_vxlan(netdev))
|
||||
return tun_type == NFP_FL_TUNNEL_VXLAN;
|
||||
if (netif_is_geneve(netdev))
|
||||
return tun_type == NFP_FL_TUNNEL_GENEVE;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline bool nfp_fl_is_netdev_to_offload(struct net_device *netdev)
|
||||
{
|
||||
if (!netdev->rtnl_link_ops)
|
||||
return false;
|
||||
if (!strcmp(netdev->rtnl_link_ops->kind, "openvswitch"))
|
||||
return true;
|
||||
if (netif_is_vxlan(netdev))
|
||||
return true;
|
||||
if (netif_is_geneve(netdev))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
struct sk_buff *
|
||||
nfp_flower_cmsg_mac_repr_start(struct nfp_app *app, unsigned int num_ports);
|
||||
void
|
||||
|
@ -4,7 +4,6 @@
|
||||
#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>
|
||||
@ -182,20 +181,6 @@ void nfp_tunnel_keep_alive(struct nfp_app *app, struct sk_buff *skb)
|
||||
}
|
||||
}
|
||||
|
||||
static bool nfp_tun_is_netdev_to_offload(struct net_device *netdev)
|
||||
{
|
||||
if (!netdev->rtnl_link_ops)
|
||||
return false;
|
||||
if (!strcmp(netdev->rtnl_link_ops->kind, "openvswitch"))
|
||||
return true;
|
||||
if (netif_is_vxlan(netdev))
|
||||
return true;
|
||||
if (netif_is_geneve(netdev))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static int
|
||||
nfp_flower_xmit_tun_conf(struct nfp_app *app, u8 mtype, u16 plen, void *pdata,
|
||||
gfp_t flag)
|
||||
@ -617,7 +602,7 @@ static void nfp_tun_add_to_mac_offload_list(struct net_device *netdev,
|
||||
|
||||
if (nfp_netdev_is_nfp_repr(netdev))
|
||||
port = nfp_repr_get_port_id(netdev);
|
||||
else if (!nfp_tun_is_netdev_to_offload(netdev))
|
||||
else if (!nfp_fl_is_netdev_to_offload(netdev))
|
||||
return;
|
||||
|
||||
entry = kmalloc(sizeof(*entry), GFP_KERNEL);
|
||||
@ -660,7 +645,7 @@ int nfp_tunnel_mac_event_handler(struct nfp_app *app,
|
||||
{
|
||||
if (event == NETDEV_DOWN || event == NETDEV_UNREGISTER) {
|
||||
/* If non-nfp netdev then free its offload index. */
|
||||
if (nfp_tun_is_netdev_to_offload(netdev))
|
||||
if (nfp_fl_is_netdev_to_offload(netdev))
|
||||
nfp_tun_del_mac_idx(app, netdev->ifindex);
|
||||
} else if (event == NETDEV_UP || event == NETDEV_CHANGEADDR ||
|
||||
event == NETDEV_REGISTER) {
|
||||
|
Loading…
Reference in New Issue
Block a user