diff options
| author | Sathya Perla <sathya.perla@emulex.com> | 2014-04-01 03:03:59 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2014-04-01 16:25:51 -0400 |
| commit | c5abe7c0a44ac2e8147543203de48b4aa0d4eaec (patch) | |
| tree | aa102e2bd4028b81605ca399a5972a0e71e56452 | |
| parent | e462ded699aa2cca04b68fbf203ea4675d4c44d4 (diff) | |
be2net: fix build dependency on VxLAN
Introduce a CONFIG_BE2NET_VXLAN define to control be2net's build
dependency on the VXLAN driver.
Without this fix, the kernel build fails when VxLAN driver is
selected to be built as a module while be2net is built-in.
fixes: c9c47142 ("be2net: csum, tso and rss steering offload support for VxLAN")
Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
| -rw-r--r-- | drivers/net/ethernet/emulex/benet/Kconfig | 8 | ||||
| -rw-r--r-- | drivers/net/ethernet/emulex/benet/be_main.c | 12 |
2 files changed, 19 insertions, 1 deletions
diff --git a/drivers/net/ethernet/emulex/benet/Kconfig b/drivers/net/ethernet/emulex/benet/Kconfig index 231129dd1764..ea94a8eb6b35 100644 --- a/drivers/net/ethernet/emulex/benet/Kconfig +++ b/drivers/net/ethernet/emulex/benet/Kconfig | |||
| @@ -4,3 +4,11 @@ config BE2NET | |||
| 4 | ---help--- | 4 | ---help--- |
| 5 | This driver implements the NIC functionality for ServerEngines' | 5 | This driver implements the NIC functionality for ServerEngines' |
| 6 | 10Gbps network adapter - BladeEngine. | 6 | 10Gbps network adapter - BladeEngine. |
| 7 | |||
| 8 | config BE2NET_VXLAN | ||
| 9 | bool "VXLAN offload support on be2net driver" | ||
| 10 | default y | ||
| 11 | depends on BE2NET && VXLAN && !(BE2NET=y && VXLAN=m) | ||
| 12 | ---help--- | ||
| 13 | Say Y here if you want to enable VXLAN offload support on | ||
| 14 | be2net driver. | ||
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c index c89dc85ad8d6..3e6df47b6973 100644 --- a/drivers/net/ethernet/emulex/benet/be_main.c +++ b/drivers/net/ethernet/emulex/benet/be_main.c | |||
| @@ -2862,8 +2862,11 @@ static int be_open(struct net_device *netdev) | |||
| 2862 | netif_tx_start_all_queues(netdev); | 2862 | netif_tx_start_all_queues(netdev); |
| 2863 | be_roce_dev_open(adapter); | 2863 | be_roce_dev_open(adapter); |
| 2864 | 2864 | ||
| 2865 | #ifdef CONFIG_BE2NET_VXLAN | ||
| 2865 | if (skyhawk_chip(adapter)) | 2866 | if (skyhawk_chip(adapter)) |
| 2866 | vxlan_get_rx_port(netdev); | 2867 | vxlan_get_rx_port(netdev); |
| 2868 | #endif | ||
| 2869 | |||
| 2867 | return 0; | 2870 | return 0; |
| 2868 | err: | 2871 | err: |
| 2869 | be_close(adapter->netdev); | 2872 | be_close(adapter->netdev); |
| @@ -3019,6 +3022,7 @@ static void be_mac_clear(struct be_adapter *adapter) | |||
| 3019 | } | 3022 | } |
| 3020 | } | 3023 | } |
| 3021 | 3024 | ||
| 3025 | #ifdef CONFIG_BE2NET_VXLAN | ||
| 3022 | static void be_disable_vxlan_offloads(struct be_adapter *adapter) | 3026 | static void be_disable_vxlan_offloads(struct be_adapter *adapter) |
| 3023 | { | 3027 | { |
| 3024 | if (adapter->flags & BE_FLAGS_VXLAN_OFFLOADS) | 3028 | if (adapter->flags & BE_FLAGS_VXLAN_OFFLOADS) |
| @@ -3031,6 +3035,7 @@ static void be_disable_vxlan_offloads(struct be_adapter *adapter) | |||
| 3031 | adapter->flags &= ~BE_FLAGS_VXLAN_OFFLOADS; | 3035 | adapter->flags &= ~BE_FLAGS_VXLAN_OFFLOADS; |
| 3032 | adapter->vxlan_port = 0; | 3036 | adapter->vxlan_port = 0; |
| 3033 | } | 3037 | } |
| 3038 | #endif | ||
| 3034 | 3039 | ||
| 3035 | static int be_clear(struct be_adapter *adapter) | 3040 | static int be_clear(struct be_adapter *adapter) |
| 3036 | { | 3041 | { |
| @@ -3039,8 +3044,9 @@ static int be_clear(struct be_adapter *adapter) | |||
| 3039 | if (sriov_enabled(adapter)) | 3044 | if (sriov_enabled(adapter)) |
| 3040 | be_vf_clear(adapter); | 3045 | be_vf_clear(adapter); |
| 3041 | 3046 | ||
| 3047 | #ifdef CONFIG_BE2NET_VXLAN | ||
| 3042 | be_disable_vxlan_offloads(adapter); | 3048 | be_disable_vxlan_offloads(adapter); |
| 3043 | 3049 | #endif | |
| 3044 | /* delete the primary mac along with the uc-mac list */ | 3050 | /* delete the primary mac along with the uc-mac list */ |
| 3045 | be_mac_clear(adapter); | 3051 | be_mac_clear(adapter); |
| 3046 | 3052 | ||
| @@ -4165,6 +4171,7 @@ static int be_ndo_bridge_getlink(struct sk_buff *skb, u32 pid, u32 seq, | |||
| 4165 | BRIDGE_MODE_VEPA : BRIDGE_MODE_VEB); | 4171 | BRIDGE_MODE_VEPA : BRIDGE_MODE_VEB); |
| 4166 | } | 4172 | } |
| 4167 | 4173 | ||
| 4174 | #ifdef CONFIG_BE2NET_VXLAN | ||
| 4168 | static void be_add_vxlan_port(struct net_device *netdev, sa_family_t sa_family, | 4175 | static void be_add_vxlan_port(struct net_device *netdev, sa_family_t sa_family, |
| 4169 | __be16 port) | 4176 | __be16 port) |
| 4170 | { | 4177 | { |
| @@ -4223,6 +4230,7 @@ static void be_del_vxlan_port(struct net_device *netdev, sa_family_t sa_family, | |||
| 4223 | "Disabled VxLAN offloads for UDP port %d\n", | 4230 | "Disabled VxLAN offloads for UDP port %d\n", |
| 4224 | be16_to_cpu(port)); | 4231 | be16_to_cpu(port)); |
| 4225 | } | 4232 | } |
| 4233 | #endif | ||
| 4226 | 4234 | ||
| 4227 | static const struct net_device_ops be_netdev_ops = { | 4235 | static const struct net_device_ops be_netdev_ops = { |
| 4228 | .ndo_open = be_open, | 4236 | .ndo_open = be_open, |
| @@ -4248,8 +4256,10 @@ static const struct net_device_ops be_netdev_ops = { | |||
| 4248 | #ifdef CONFIG_NET_RX_BUSY_POLL | 4256 | #ifdef CONFIG_NET_RX_BUSY_POLL |
| 4249 | .ndo_busy_poll = be_busy_poll, | 4257 | .ndo_busy_poll = be_busy_poll, |
| 4250 | #endif | 4258 | #endif |
| 4259 | #ifdef CONFIG_BE2NET_VXLAN | ||
| 4251 | .ndo_add_vxlan_port = be_add_vxlan_port, | 4260 | .ndo_add_vxlan_port = be_add_vxlan_port, |
| 4252 | .ndo_del_vxlan_port = be_del_vxlan_port, | 4261 | .ndo_del_vxlan_port = be_del_vxlan_port, |
| 4262 | #endif | ||
| 4253 | }; | 4263 | }; |
| 4254 | 4264 | ||
| 4255 | static void be_netdev_init(struct net_device *netdev) | 4265 | static void be_netdev_init(struct net_device *netdev) |
