Commit 6b352912 authored by Alexander Duyck's avatar Alexander Duyck Committed by David S. Miller
Browse files

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: default avatarAlexander Duyck <aduyck@mirantis.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 7c46a640
Loading
Loading
Loading
Loading
+0 −20
Original line number Diff line number Diff line
@@ -139,26 +139,6 @@ config BNX2X_SRIOV
	  Virtualization support in the 578xx and 57712 products. This
	  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
	tristate "BCMA bus GBit core support"
	depends on BCMA && BCMA_HOST_SOC
+33 −61
Original line number Diff line number Diff line
@@ -59,9 +59,6 @@
#include <linux/semaphore.h>
#include <linux/stringify.h>
#include <linux/vmalloc.h>
#if IS_ENABLED(CONFIG_BNX2X_GENEVE)
#include <net/geneve.h>
#endif
#include "bnx2x.h"
#include "bnx2x_init.h"
#include "bnx2x_init_ops.h"
@@ -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)
{
	struct bnx2x_func_switch_update_params *switch_update_params;
@@ -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",
		   type, port);
}
#endif

#ifdef CONFIG_BNX2X_VXLAN
static void bnx2x_add_vxlan_port(struct net_device *netdev,
				 sa_family_t sa_family, __be16 port)
static void bnx2x_udp_tunnel_add(struct net_device *netdev,
				 struct udp_tunnel_info *ti)
{
	struct bnx2x *bp = netdev_priv(netdev);
	u16 t_port = ntohs(port);
	u16 t_port = ntohs(ti->port);

	switch (ti->type) {
	case UDP_TUNNEL_TYPE_VXLAN:
		__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_add_geneve_port(struct net_device *netdev,
				  sa_family_t sa_family, __be16 port)
{
	struct bnx2x *bp = netdev_priv(netdev);
	u16 t_port = ntohs(port);

		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,
				  sa_family_t sa_family, __be16 port)
static void bnx2x_udp_tunnel_del(struct net_device *netdev,
				 struct udp_tunnel_info *ti)
{
	struct bnx2x *bp = netdev_priv(netdev);
	u16 t_port = ntohs(port);
	u16 t_port = ntohs(ti->port);

	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);

@@ -10325,7 +10316,6 @@ sp_rtnl_not_reset:
			       &bp->sp_rtnl_state))
		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,
			       &bp->sp_rtnl_state)) {
		if (bnx2x_udp_port_update(bp)) {
@@ -10335,20 +10325,14 @@ sp_rtnl_not_reset:
			       BNX2X_UDP_PORT_MAX);
		} else {
			/* 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.
			 */
#ifdef CONFIG_BNX2X_VXLAN
			if (!bp->udp_tunnel_ports[BNX2X_UDP_PORT_VXLAN].count)
				vxlan_get_rx_port(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
			if (!bp->udp_tunnel_ports[BNX2X_UDP_PORT_VXLAN].count &&
			    !bp->udp_tunnel_ports[BNX2X_UDP_PORT_GENEVE].count)
				udp_tunnel_get_rx_info(bp->dev);
		}
	}
#endif

	/* work which needs rtnl lock not-taken (as it takes the lock itself and
	 * can be called from other contexts as well)
@@ -12551,14 +12535,8 @@ static int bnx2x_open(struct net_device *dev)
	if (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))
		geneve_get_rx_port(dev);
#endif
		udp_tunnel_get_rx_info(dev);

	return 0;
}
@@ -13045,14 +13023,8 @@ static const struct net_device_ops bnx2x_netdev_ops = {
	.ndo_get_phys_port_id	= bnx2x_get_phys_port_id,
	.ndo_set_vf_link_state	= bnx2x_set_vf_link_state,
	.ndo_features_check	= bnx2x_features_check,
#ifdef CONFIG_BNX2X_VXLAN
	.ndo_add_vxlan_port	= bnx2x_add_vxlan_port,
	.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
	.ndo_udp_tunnel_add	= bnx2x_udp_tunnel_add,
	.ndo_udp_tunnel_del	= bnx2x_udp_tunnel_del,
};

static int bnx2x_set_coherency_mask(struct bnx2x *bp)