提交 6b352912 编写于 作者: A Alexander Duyck 提交者: David S. Miller

bnx2x: Move all UDP port notifiers to single function

This patch goes through and combines the notifiers for VXLAN and GENEVE
into a single function for each action.  So there is now one combined
function for getting ports, one for adding the ports, and one for deleting
the ports.

I also went through and dropped the BNX2X VXLAN and GENEVE specific build
flags.
Signed-off-by: NAlexander Duyck <aduyck@mirantis.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 7c46a640
...@@ -139,26 +139,6 @@ config BNX2X_SRIOV ...@@ -139,26 +139,6 @@ config BNX2X_SRIOV
Virtualization support in the 578xx and 57712 products. This Virtualization support in the 578xx and 57712 products. This
allows for virtual function acceleration in virtual environments. allows for virtual function acceleration in virtual environments.
config BNX2X_VXLAN
bool "Virtual eXtensible Local Area Network support"
default n
depends on BNX2X && VXLAN && !(BNX2X=y && VXLAN=m)
---help---
This enables hardward offload support for VXLAN protocol over the
NetXtremeII series adapters.
Say Y here if you want to enable hardware offload support for
Virtual eXtensible Local Area Network (VXLAN) in the driver.
config BNX2X_GENEVE
bool "Generic Network Virtualization Encapsulation (GENEVE) support"
depends on BNX2X && GENEVE && !(BNX2X=y && GENEVE=m)
---help---
This allows one to create GENEVE virtual interfaces that provide
Layer 2 Networks over Layer 3 Networks. GENEVE is often used
to tunnel virtual network infrastructure in virtualized environments.
Say Y here if you want to enable hardware offload support for
Generic Network Virtualization Encapsulation (GENEVE) in the driver.
config BGMAC config BGMAC
tristate "BCMA bus GBit core support" tristate "BCMA bus GBit core support"
depends on BCMA && BCMA_HOST_SOC depends on BCMA && BCMA_HOST_SOC
......
...@@ -59,9 +59,6 @@ ...@@ -59,9 +59,6 @@
#include <linux/semaphore.h> #include <linux/semaphore.h>
#include <linux/stringify.h> #include <linux/stringify.h>
#include <linux/vmalloc.h> #include <linux/vmalloc.h>
#if IS_ENABLED(CONFIG_BNX2X_GENEVE)
#include <net/geneve.h>
#endif
#include "bnx2x.h" #include "bnx2x.h"
#include "bnx2x_init.h" #include "bnx2x_init.h"
#include "bnx2x_init_ops.h" #include "bnx2x_init_ops.h"
...@@ -10076,7 +10073,6 @@ static void bnx2x_parity_recover(struct bnx2x *bp) ...@@ -10076,7 +10073,6 @@ static void bnx2x_parity_recover(struct bnx2x *bp)
} }
} }
#if defined(CONFIG_BNX2X_VXLAN) || IS_ENABLED(CONFIG_BNX2X_GENEVE)
static int bnx2x_udp_port_update(struct bnx2x *bp) static int bnx2x_udp_port_update(struct bnx2x *bp)
{ {
struct bnx2x_func_switch_update_params *switch_update_params; struct bnx2x_func_switch_update_params *switch_update_params;
...@@ -10177,47 +10173,42 @@ static void __bnx2x_del_udp_port(struct bnx2x *bp, u16 port, ...@@ -10177,47 +10173,42 @@ static void __bnx2x_del_udp_port(struct bnx2x *bp, u16 port,
DP(BNX2X_MSG_SP, "Deleted UDP tunnel [%d] port %d\n", DP(BNX2X_MSG_SP, "Deleted UDP tunnel [%d] port %d\n",
type, port); type, port);
} }
#endif
#ifdef CONFIG_BNX2X_VXLAN
static void bnx2x_add_vxlan_port(struct net_device *netdev,
sa_family_t sa_family, __be16 port)
{
struct bnx2x *bp = netdev_priv(netdev);
u16 t_port = ntohs(port);
__bnx2x_add_udp_port(bp, t_port, BNX2X_UDP_PORT_VXLAN);
}
static void bnx2x_del_vxlan_port(struct net_device *netdev,
sa_family_t sa_family, __be16 port)
{
struct bnx2x *bp = netdev_priv(netdev);
u16 t_port = ntohs(port);
__bnx2x_del_udp_port(bp, t_port, BNX2X_UDP_PORT_VXLAN);
}
#endif
#if IS_ENABLED(CONFIG_BNX2X_GENEVE) static void bnx2x_udp_tunnel_add(struct net_device *netdev,
static void bnx2x_add_geneve_port(struct net_device *netdev, struct udp_tunnel_info *ti)
sa_family_t sa_family, __be16 port)
{ {
struct bnx2x *bp = netdev_priv(netdev); struct bnx2x *bp = netdev_priv(netdev);
u16 t_port = ntohs(port); u16 t_port = ntohs(ti->port);
__bnx2x_add_udp_port(bp, t_port, BNX2X_UDP_PORT_GENEVE); switch (ti->type) {
case UDP_TUNNEL_TYPE_VXLAN:
__bnx2x_add_udp_port(bp, t_port, BNX2X_UDP_PORT_VXLAN);
break;
case UDP_TUNNEL_TYPE_GENEVE:
__bnx2x_add_udp_port(bp, t_port, BNX2X_UDP_PORT_GENEVE);
break;
default:
break;
}
} }
static void bnx2x_del_geneve_port(struct net_device *netdev, static void bnx2x_udp_tunnel_del(struct net_device *netdev,
sa_family_t sa_family, __be16 port) struct udp_tunnel_info *ti)
{ {
struct bnx2x *bp = netdev_priv(netdev); struct bnx2x *bp = netdev_priv(netdev);
u16 t_port = ntohs(port); u16 t_port = ntohs(ti->port);
__bnx2x_del_udp_port(bp, t_port, BNX2X_UDP_PORT_GENEVE); switch (ti->type) {
case UDP_TUNNEL_TYPE_VXLAN:
__bnx2x_del_udp_port(bp, t_port, BNX2X_UDP_PORT_VXLAN);
break;
case UDP_TUNNEL_TYPE_GENEVE:
__bnx2x_del_udp_port(bp, t_port, BNX2X_UDP_PORT_GENEVE);
break;
default:
break;
}
} }
#endif
static int bnx2x_close(struct net_device *dev); static int bnx2x_close(struct net_device *dev);
...@@ -10325,7 +10316,6 @@ static void bnx2x_sp_rtnl_task(struct work_struct *work) ...@@ -10325,7 +10316,6 @@ static void bnx2x_sp_rtnl_task(struct work_struct *work)
&bp->sp_rtnl_state)) &bp->sp_rtnl_state))
bnx2x_update_mng_version(bp); bnx2x_update_mng_version(bp);
#if defined(CONFIG_BNX2X_VXLAN) || IS_ENABLED(CONFIG_BNX2X_GENEVE)
if (test_and_clear_bit(BNX2X_SP_RTNL_CHANGE_UDP_PORT, if (test_and_clear_bit(BNX2X_SP_RTNL_CHANGE_UDP_PORT,
&bp->sp_rtnl_state)) { &bp->sp_rtnl_state)) {
if (bnx2x_udp_port_update(bp)) { if (bnx2x_udp_port_update(bp)) {
...@@ -10335,20 +10325,14 @@ static void bnx2x_sp_rtnl_task(struct work_struct *work) ...@@ -10335,20 +10325,14 @@ static void bnx2x_sp_rtnl_task(struct work_struct *work)
BNX2X_UDP_PORT_MAX); BNX2X_UDP_PORT_MAX);
} else { } else {
/* Since we don't store additional port information, /* Since we don't store additional port information,
* if no port is configured for any feature ask for * if no ports are configured for any feature ask for
* information about currently configured ports. * information about currently configured ports.
*/ */
#ifdef CONFIG_BNX2X_VXLAN if (!bp->udp_tunnel_ports[BNX2X_UDP_PORT_VXLAN].count &&
if (!bp->udp_tunnel_ports[BNX2X_UDP_PORT_VXLAN].count) !bp->udp_tunnel_ports[BNX2X_UDP_PORT_GENEVE].count)
vxlan_get_rx_port(bp->dev); udp_tunnel_get_rx_info(bp->dev);
#endif
#if IS_ENABLED(CONFIG_BNX2X_GENEVE)
if (!bp->udp_tunnel_ports[BNX2X_UDP_PORT_GENEVE].count)
geneve_get_rx_port(bp->dev);
#endif
} }
} }
#endif
/* work which needs rtnl lock not-taken (as it takes the lock itself and /* work which needs rtnl lock not-taken (as it takes the lock itself and
* can be called from other contexts as well) * can be called from other contexts as well)
...@@ -12551,14 +12535,8 @@ static int bnx2x_open(struct net_device *dev) ...@@ -12551,14 +12535,8 @@ static int bnx2x_open(struct net_device *dev)
if (rc) if (rc)
return rc; return rc;
#ifdef CONFIG_BNX2X_VXLAN
if (IS_PF(bp))
vxlan_get_rx_port(dev);
#endif
#if IS_ENABLED(CONFIG_BNX2X_GENEVE)
if (IS_PF(bp)) if (IS_PF(bp))
geneve_get_rx_port(dev); udp_tunnel_get_rx_info(dev);
#endif
return 0; return 0;
} }
...@@ -13045,14 +13023,8 @@ static const struct net_device_ops bnx2x_netdev_ops = { ...@@ -13045,14 +13023,8 @@ static const struct net_device_ops bnx2x_netdev_ops = {
.ndo_get_phys_port_id = bnx2x_get_phys_port_id, .ndo_get_phys_port_id = bnx2x_get_phys_port_id,
.ndo_set_vf_link_state = bnx2x_set_vf_link_state, .ndo_set_vf_link_state = bnx2x_set_vf_link_state,
.ndo_features_check = bnx2x_features_check, .ndo_features_check = bnx2x_features_check,
#ifdef CONFIG_BNX2X_VXLAN .ndo_udp_tunnel_add = bnx2x_udp_tunnel_add,
.ndo_add_vxlan_port = bnx2x_add_vxlan_port, .ndo_udp_tunnel_del = bnx2x_udp_tunnel_del,
.ndo_del_vxlan_port = bnx2x_del_vxlan_port,
#endif
#if IS_ENABLED(CONFIG_BNX2X_GENEVE)
.ndo_add_geneve_port = bnx2x_add_geneve_port,
.ndo_del_geneve_port = bnx2x_del_geneve_port,
#endif
}; };
static int bnx2x_set_coherency_mask(struct bnx2x *bp) static int bnx2x_set_coherency_mask(struct bnx2x *bp)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册