Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7f1f6056 authored by Shahed Shaikh's avatar Shahed Shaikh Committed by David S. Miller
Browse files

qlcnic: Fix build failure due to undefined reference to `vxlan_get_rx_port'



Commit 2b3d7b75("qlcnic: Add VXLAN Rx offload support") uses
vxlan_get_rx_port() which caused build failure when VXLAN=m.

This patch fixes the build failure by adding dependency on VXLAN
in Kconfig of qlcnic module and use vxlan_get_rx_port() and support
code accordingly.

Signed-off-by: default avatarShahed Shaikh <shahed.shaikh@qlogic.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 408eccce
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -56,6 +56,16 @@ config QLCNIC_DCB
	  mode of DCB is supported. PG and PFC values are related only
	  to Tx.

config QLCNIC_VXLAN
	bool "Virtual eXtensible Local Area Network (VXLAN) offload support"
	default n
	depends on QLCNIC && VXLAN && !(QLCNIC=y && VXLAN=m)
	---help---
	  This enables hardware offload support for VXLAN protocol over QLogic's
	  84XX series adapters.
	  Say Y here if you want to enable hardware offload support for
	  Virtual eXtensible Local Area Network (VXLAN) in the driver.

config QLGE
	tristate "QLogic QLGE 10Gb Ethernet Driver Support"
	depends on PCI
+3 −0
Original line number Diff line number Diff line
@@ -1011,8 +1011,11 @@ struct qlcnic_ipaddr {
#define QLCNIC_APP_CHANGED_FLAGS	0x20000
#define QLCNIC_HAS_PHYS_PORT_ID		0x40000
#define QLCNIC_TSS_RSS			0x80000

#ifdef CONFIG_QLCNIC_VXLAN
#define QLCNIC_ADD_VXLAN_PORT		0x100000
#define QLCNIC_DEL_VXLAN_PORT		0x200000
#endif

#define QLCNIC_IS_MSI_FAMILY(adapter) \
	((adapter)->flags & (QLCNIC_MSI_ENABLED | QLCNIC_MSIX_ENABLED))
+5 −3
Original line number Diff line number Diff line
@@ -1020,6 +1020,7 @@ static int qlcnic_83xx_idc_check_state_validity(struct qlcnic_adapter *adapter,
	return 0;
}

#ifdef CONFIG_QLCNIC_VXLAN
#define QLC_83XX_ENCAP_TYPE_VXLAN	BIT_1
#define QLC_83XX_MATCH_ENCAP_ID		BIT_2
#define QLC_83XX_SET_VXLAN_UDP_DPORT	BIT_3
@@ -1088,14 +1089,14 @@ static int qlcnic_set_vxlan_parsing(struct qlcnic_adapter *adapter,

	return ret;
}
#endif

static void qlcnic_83xx_periodic_tasks(struct qlcnic_adapter *adapter)
{
	struct qlcnic_hardware_context *ahw = adapter->ahw;

	if (adapter->fhash.fnum)
		qlcnic_prune_lb_filters(adapter);

#ifdef CONFIG_QLCNIC_VXLAN
	if (adapter->flags & QLCNIC_ADD_VXLAN_PORT) {
		if (qlcnic_set_vxlan_port(adapter))
			return;
@@ -1108,9 +1109,10 @@ static void qlcnic_83xx_periodic_tasks(struct qlcnic_adapter *adapter)
		if (qlcnic_set_vxlan_parsing(adapter, false))
			return;

		ahw->vxlan_port = 0;
		adapter->ahw->vxlan_port = 0;
		adapter->flags &= ~QLCNIC_DEL_VXLAN_PORT;
	}
#endif
}

/**
+8 −0
Original line number Diff line number Diff line
@@ -21,7 +21,9 @@
#include <linux/aer.h>
#include <linux/log2.h>
#include <linux/pci.h>
#ifdef CONFIG_QLCNIC_VXLAN
#include <net/vxlan.h>
#endif

MODULE_DESCRIPTION("QLogic 1/10 GbE Converged/Intelligent Ethernet Driver");
MODULE_LICENSE("GPL");
@@ -462,6 +464,7 @@ static int qlcnic_get_phys_port_id(struct net_device *netdev,
	return 0;
}

#ifdef CONFIG_QLCNIC_VXLAN
static void qlcnic_add_vxlan_port(struct net_device *netdev,
				  sa_family_t sa_family, __be16 port)
{
@@ -490,6 +493,7 @@ static void qlcnic_del_vxlan_port(struct net_device *netdev,

	adapter->flags |= QLCNIC_DEL_VXLAN_PORT;
}
#endif

static const struct net_device_ops qlcnic_netdev_ops = {
	.ndo_open	   = qlcnic_open,
@@ -509,8 +513,10 @@ static const struct net_device_ops qlcnic_netdev_ops = {
	.ndo_fdb_del		= qlcnic_fdb_del,
	.ndo_fdb_dump		= qlcnic_fdb_dump,
	.ndo_get_phys_port_id	= qlcnic_get_phys_port_id,
#ifdef CONFIG_QLCNIC_VXLAN
	.ndo_add_vxlan_port	= qlcnic_add_vxlan_port,
	.ndo_del_vxlan_port	= qlcnic_del_vxlan_port,
#endif
#ifdef CONFIG_NET_POLL_CONTROLLER
	.ndo_poll_controller = qlcnic_poll_controller,
#endif
@@ -1975,8 +1981,10 @@ qlcnic_attach(struct qlcnic_adapter *adapter)

	qlcnic_create_sysfs_entries(adapter);

#ifdef CONFIG_QLCNIC_VXLAN
	if (qlcnic_encap_rx_offload(adapter))
		vxlan_get_rx_port(netdev);
#endif

	adapter->is_up = QLCNIC_ADAPTER_UP_MAGIC;
	return 0;