net: Add netif_is_gretap()/netif_is_ip6gretap()

Changed the is_gretap_dev and is_ip6gretap_dev logic from structure
comparison to string comparison of the rtnl_link_ops kind field.

This approach aligns with the current identification methods and function
names of vxlan and geneve network devices.

Convert mlxsw to use these helpers and use them in downstream mlx5 patch.

Signed-off-by: Oz Shlomo <ozsh@mellanox.com>
Reviewed-by: Eli Britstein <elibr@mellanox.com>
Reviewed-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
This commit is contained in:
Oz Shlomo 2018-11-21 12:15:34 +02:00 committed by Saeed Mahameed
parent 101f4de9dd
commit 0621e6fc5e
4 changed files with 13 additions and 16 deletions

View File

@ -383,7 +383,7 @@ mlxsw_sp_span_entry_gretap4_deconfigure(struct mlxsw_sp_span_entry *span_entry)
} }
static const struct mlxsw_sp_span_entry_ops mlxsw_sp_span_entry_ops_gretap4 = { static const struct mlxsw_sp_span_entry_ops mlxsw_sp_span_entry_ops_gretap4 = {
.can_handle = is_gretap_dev, .can_handle = netif_is_gretap,
.parms = mlxsw_sp_span_entry_gretap4_parms, .parms = mlxsw_sp_span_entry_gretap4_parms,
.configure = mlxsw_sp_span_entry_gretap4_configure, .configure = mlxsw_sp_span_entry_gretap4_configure,
.deconfigure = mlxsw_sp_span_entry_gretap4_deconfigure, .deconfigure = mlxsw_sp_span_entry_gretap4_deconfigure,
@ -484,7 +484,7 @@ mlxsw_sp_span_entry_gretap6_deconfigure(struct mlxsw_sp_span_entry *span_entry)
static const static const
struct mlxsw_sp_span_entry_ops mlxsw_sp_span_entry_ops_gretap6 = { struct mlxsw_sp_span_entry_ops mlxsw_sp_span_entry_ops_gretap6 = {
.can_handle = is_ip6gretap_dev, .can_handle = netif_is_ip6gretap,
.parms = mlxsw_sp_span_entry_gretap6_parms, .parms = mlxsw_sp_span_entry_gretap6_parms,
.configure = mlxsw_sp_span_entry_gretap6_configure, .configure = mlxsw_sp_span_entry_gretap6_configure,
.deconfigure = mlxsw_sp_span_entry_gretap6_deconfigure, .deconfigure = mlxsw_sp_span_entry_gretap6_deconfigure,

View File

@ -37,8 +37,17 @@ struct net_device *gretap_fb_dev_create(struct net *net, const char *name,
int gre_parse_header(struct sk_buff *skb, struct tnl_ptk_info *tpi, int gre_parse_header(struct sk_buff *skb, struct tnl_ptk_info *tpi,
bool *csum_err, __be16 proto, int nhs); bool *csum_err, __be16 proto, int nhs);
bool is_gretap_dev(const struct net_device *dev); static inline bool netif_is_gretap(const struct net_device *dev)
bool is_ip6gretap_dev(const struct net_device *dev); {
return dev->rtnl_link_ops &&
!strcmp(dev->rtnl_link_ops->kind, "gretap");
}
static inline bool netif_is_ip6gretap(const struct net_device *dev)
{
return dev->rtnl_link_ops &&
!strcmp(dev->rtnl_link_ops->kind, "ip6gretap");
}
static inline int gre_calc_hlen(__be16 o_flags) static inline int gre_calc_hlen(__be16 o_flags)
{ {

View File

@ -1341,12 +1341,6 @@ static void ipgre_tap_setup(struct net_device *dev)
ip_tunnel_setup(dev, gre_tap_net_id); ip_tunnel_setup(dev, gre_tap_net_id);
} }
bool is_gretap_dev(const struct net_device *dev)
{
return dev->netdev_ops == &gre_tap_netdev_ops;
}
EXPORT_SYMBOL_GPL(is_gretap_dev);
static int ipgre_newlink(struct net *src_net, struct net_device *dev, static int ipgre_newlink(struct net *src_net, struct net_device *dev,
struct nlattr *tb[], struct nlattr *data[], struct nlattr *tb[], struct nlattr *data[],
struct netlink_ext_ack *extack) struct netlink_ext_ack *extack)

View File

@ -1885,12 +1885,6 @@ static void ip6gre_tap_setup(struct net_device *dev)
netif_keep_dst(dev); netif_keep_dst(dev);
} }
bool is_ip6gretap_dev(const struct net_device *dev)
{
return dev->netdev_ops == &ip6gre_tap_netdev_ops;
}
EXPORT_SYMBOL_GPL(is_ip6gretap_dev);
static bool ip6gre_netlink_encap_parms(struct nlattr *data[], static bool ip6gre_netlink_encap_parms(struct nlattr *data[],
struct ip_tunnel_encap *ipencap) struct ip_tunnel_encap *ipencap)
{ {