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

qede: 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.
Signed-off-by: NAlexander Duyck <aduyck@mirantis.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 3ab68837
...@@ -114,24 +114,4 @@ config QEDE ...@@ -114,24 +114,4 @@ config QEDE
---help--- ---help---
This enables the support for ... This enables the support for ...
config QEDE_VXLAN
bool "Virtual eXtensible Local Area Network support"
default n
depends on QEDE && VXLAN && !(QEDE=y && VXLAN=m)
---help---
This enables hardware offload support for VXLAN protocol over
qede module. Say Y here if you want to enable hardware offload
support for Virtual eXtensible Local Area Network (VXLAN)
in the driver.
config QEDE_GENEVE
bool "Generic Network Virtualization Encapsulation (GENEVE) support"
depends on QEDE && GENEVE && !(QEDE=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.
endif # NET_VENDOR_QLOGIC endif # NET_VENDOR_QLOGIC
...@@ -24,12 +24,7 @@ ...@@ -24,12 +24,7 @@
#include <linux/netdev_features.h> #include <linux/netdev_features.h>
#include <linux/udp.h> #include <linux/udp.h>
#include <linux/tcp.h> #include <linux/tcp.h>
#ifdef CONFIG_QEDE_VXLAN #include <net/udp_tunnel.h>
#include <net/vxlan.h>
#endif
#ifdef CONFIG_QEDE_GENEVE
#include <net/geneve.h>
#endif
#include <linux/ip.h> #include <linux/ip.h>
#include <net/ipv6.h> #include <net/ipv6.h>
#include <net/tcp.h> #include <net/tcp.h>
...@@ -2112,75 +2107,75 @@ int qede_set_features(struct net_device *dev, netdev_features_t features) ...@@ -2112,75 +2107,75 @@ int qede_set_features(struct net_device *dev, netdev_features_t features)
return 0; return 0;
} }
#ifdef CONFIG_QEDE_VXLAN static void qede_udp_tunnel_add(struct net_device *dev,
static void qede_add_vxlan_port(struct net_device *dev, struct udp_tunnel_info *ti)
sa_family_t sa_family, __be16 port)
{ {
struct qede_dev *edev = netdev_priv(dev); struct qede_dev *edev = netdev_priv(dev);
u16 t_port = ntohs(port); u16 t_port = ntohs(ti->port);
switch (ti->type) {
case UDP_TUNNEL_TYPE_VXLAN:
if (edev->vxlan_dst_port) if (edev->vxlan_dst_port)
return; return;
edev->vxlan_dst_port = t_port; edev->vxlan_dst_port = t_port;
DP_VERBOSE(edev, QED_MSG_DEBUG, "Added vxlan port=%d", t_port); DP_VERBOSE(edev, QED_MSG_DEBUG, "Added vxlan port=%d",
t_port);
set_bit(QEDE_SP_VXLAN_PORT_CONFIG, &edev->sp_flags); set_bit(QEDE_SP_VXLAN_PORT_CONFIG, &edev->sp_flags);
schedule_delayed_work(&edev->sp_task, 0); break;
} case UDP_TUNNEL_TYPE_GENEVE:
if (edev->geneve_dst_port)
static void qede_del_vxlan_port(struct net_device *dev,
sa_family_t sa_family, __be16 port)
{
struct qede_dev *edev = netdev_priv(dev);
u16 t_port = ntohs(port);
if (t_port != edev->vxlan_dst_port)
return; return;
edev->vxlan_dst_port = 0; edev->geneve_dst_port = t_port;
DP_VERBOSE(edev, QED_MSG_DEBUG, "Deleted vxlan port=%d", t_port); DP_VERBOSE(edev, QED_MSG_DEBUG, "Added geneve port=%d",
t_port);
set_bit(QEDE_SP_GENEVE_PORT_CONFIG, &edev->sp_flags);
break;
default:
return;
}
set_bit(QEDE_SP_VXLAN_PORT_CONFIG, &edev->sp_flags);
schedule_delayed_work(&edev->sp_task, 0); schedule_delayed_work(&edev->sp_task, 0);
} }
#endif
#ifdef CONFIG_QEDE_GENEVE static void qede_udp_tunnel_del(struct net_device *dev,
static void qede_add_geneve_port(struct net_device *dev, struct udp_tunnel_info *ti)
sa_family_t sa_family, __be16 port)
{ {
struct qede_dev *edev = netdev_priv(dev); struct qede_dev *edev = netdev_priv(dev);
u16 t_port = ntohs(port); u16 t_port = ntohs(ti->port);
if (edev->geneve_dst_port) switch (ti->type) {
case UDP_TUNNEL_TYPE_VXLAN:
if (t_port != edev->vxlan_dst_port)
return; return;
edev->geneve_dst_port = t_port; edev->vxlan_dst_port = 0;
DP_VERBOSE(edev, QED_MSG_DEBUG, "Added geneve port=%d", t_port); DP_VERBOSE(edev, QED_MSG_DEBUG, "Deleted vxlan port=%d",
set_bit(QEDE_SP_GENEVE_PORT_CONFIG, &edev->sp_flags); t_port);
schedule_delayed_work(&edev->sp_task, 0);
}
static void qede_del_geneve_port(struct net_device *dev,
sa_family_t sa_family, __be16 port)
{
struct qede_dev *edev = netdev_priv(dev);
u16 t_port = ntohs(port);
set_bit(QEDE_SP_VXLAN_PORT_CONFIG, &edev->sp_flags);
break;
case UDP_TUNNEL_TYPE_GENEVE:
if (t_port != edev->geneve_dst_port) if (t_port != edev->geneve_dst_port)
return; return;
edev->geneve_dst_port = 0; edev->geneve_dst_port = 0;
DP_VERBOSE(edev, QED_MSG_DEBUG, "Deleted geneve port=%d", t_port); DP_VERBOSE(edev, QED_MSG_DEBUG, "Deleted geneve port=%d",
t_port);
set_bit(QEDE_SP_GENEVE_PORT_CONFIG, &edev->sp_flags); set_bit(QEDE_SP_GENEVE_PORT_CONFIG, &edev->sp_flags);
break;
default:
return;
}
schedule_delayed_work(&edev->sp_task, 0); schedule_delayed_work(&edev->sp_task, 0);
} }
#endif
static const struct net_device_ops qede_netdev_ops = { static const struct net_device_ops qede_netdev_ops = {
.ndo_open = qede_open, .ndo_open = qede_open,
...@@ -2204,14 +2199,8 @@ static const struct net_device_ops qede_netdev_ops = { ...@@ -2204,14 +2199,8 @@ static const struct net_device_ops qede_netdev_ops = {
.ndo_get_vf_config = qede_get_vf_config, .ndo_get_vf_config = qede_get_vf_config,
.ndo_set_vf_rate = qede_set_vf_rate, .ndo_set_vf_rate = qede_set_vf_rate,
#endif #endif
#ifdef CONFIG_QEDE_VXLAN .ndo_udp_tunnel_add = qede_udp_tunnel_add,
.ndo_add_vxlan_port = qede_add_vxlan_port, .ndo_udp_tunnel_del = qede_udp_tunnel_del,
.ndo_del_vxlan_port = qede_del_vxlan_port,
#endif
#ifdef CONFIG_QEDE_GENEVE
.ndo_add_geneve_port = qede_add_geneve_port,
.ndo_del_geneve_port = qede_del_geneve_port,
#endif
}; };
/* ------------------------------------------------------------------------- /* -------------------------------------------------------------------------
...@@ -3579,12 +3568,8 @@ static int qede_open(struct net_device *ndev) ...@@ -3579,12 +3568,8 @@ static int qede_open(struct net_device *ndev)
if (rc) if (rc)
return rc; return rc;
#ifdef CONFIG_QEDE_VXLAN udp_tunnel_get_rx_info(ndev);
vxlan_get_rx_port(ndev);
#endif
#ifdef CONFIG_QEDE_GENEVE
geneve_get_rx_port(ndev);
#endif
return 0; return 0;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册