Skip to content

Commit

Permalink
qlcnic: Fix build failure due to undefined reference to `vxlan_get_rx…
Browse files Browse the repository at this point in the history
…_port'

Commit 2b3d7b7("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: Shahed Shaikh <shahed.shaikh@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Shahed Shaikh authored and David S. Miller committed Apr 1, 2014
1 parent 408eccc commit 7f1f605
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 3 deletions.
10 changes: 10 additions & 0 deletions drivers/net/ethernet/qlogic/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
3 changes: 3 additions & 0 deletions drivers/net/ethernet/qlogic/qlcnic/qlcnic.h
Original file line number Diff line number Diff line change
Expand Up @@ -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))
Expand Down
8 changes: 5 additions & 3 deletions drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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;
Expand All @@ -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
}

/**
Expand Down
8 changes: 8 additions & 0 deletions drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand Down Expand Up @@ -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)
{
Expand Down Expand Up @@ -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,
Expand All @@ -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
Expand Down Expand Up @@ -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;
Expand Down

0 comments on commit 7f1f605

Please sign in to comment.