From: Alexander Duyck <aduyck@mirantis.com> To: netdev@vger.kernel.org, intel-wired-lan@lists.osuosl.org Cc: hannes@redhat.com, jesse@kernel.org, eugenia@mellanox.com, jbenc@redhat.com, alexander.duyck@gmail.com, saeedm@mellanox.com, ariel.elior@qlogic.com, tom@herbertland.com, michael.chan@broadcom.com, Dept-GELinuxNICDev@qlogic.com, davem@davemloft.net Subject: [net-next PATCH v3 08/17] fm10k: Replace ndo_add/del_vxlan_port with ndo_add/del_udp_enc_port Date: Thu, 16 Jun 2016 12:21:57 -0700 [thread overview] Message-ID: <20160616192157.20872.6800.stgit@localhost.localdomain> (raw) In-Reply-To: <20160616191851.20872.67154.stgit@localhost.localdomain> This change replaces the network device operations for adding or removing a VXLAN port with operations that are more generically defined to be used for any UDP offload port but provide a type. As such by just adding a line to verify that the offload type if VXLAN we can maintain the same functionality. Signed-off-by: Alexander Duyck <aduyck@mirantis.com> --- drivers/net/ethernet/intel/Kconfig | 11 ------- drivers/net/ethernet/intel/fm10k/fm10k_netdev.c | 36 +++++++++++++---------- 2 files changed, 20 insertions(+), 27 deletions(-) diff --git a/drivers/net/ethernet/intel/Kconfig b/drivers/net/ethernet/intel/Kconfig index 714bd1014ddb..11fc5e8ea968 100644 --- a/drivers/net/ethernet/intel/Kconfig +++ b/drivers/net/ethernet/intel/Kconfig @@ -307,15 +307,4 @@ config FM10K To compile this driver as a module, choose M here. The module will be called fm10k. MSI-X interrupt support is required -config FM10K_VXLAN - bool "Virtual eXtensible Local Area Network Support" - default n - depends on FM10K && VXLAN && !(FM10K=y && VXLAN=m) - ---help--- - This allows one to create VXLAN virtual interfaces that provide - Layer 2 Networks over Layer 3 Networks. VXLAN is often used - to tunnel virtual network infrastructure in virtualized environments. - Say Y here if you want to use Virtual eXtensible Local Area Network - (VXLAN) in the driver. - endif # NET_VENDOR_INTEL diff --git a/drivers/net/ethernet/intel/fm10k/fm10k_netdev.c b/drivers/net/ethernet/intel/fm10k/fm10k_netdev.c index 2a08d3f5b6df..d00cb193da9a 100644 --- a/drivers/net/ethernet/intel/fm10k/fm10k_netdev.c +++ b/drivers/net/ethernet/intel/fm10k/fm10k_netdev.c @@ -20,9 +20,7 @@ #include "fm10k.h" #include <linux/vmalloc.h> -#ifdef CONFIG_FM10K_VXLAN -#include <net/vxlan.h> -#endif /* CONFIG_FM10K_VXLAN */ +#include <net/udp_tunnel.h> /** * fm10k_setup_tx_resources - allocate Tx resources (Descriptors) @@ -436,6 +434,7 @@ static void fm10k_restore_vxlan_port(struct fm10k_intfc *interface) * @netdev: network interface device structure * @sa_family: Address family of new port * @port: port number used for VXLAN + * @type: Enumerated value specifying udp encapsulation type * * This function is called when a new VXLAN interface has added a new port * number to the range that is currently in use for VXLAN. The new port @@ -444,18 +443,21 @@ static void fm10k_restore_vxlan_port(struct fm10k_intfc *interface) * is always used as the VXLAN port number for offloads. **/ static void fm10k_add_vxlan_port(struct net_device *dev, - sa_family_t sa_family, __be16 port) { + struct udp_tunnel_info *ti) +{ struct fm10k_intfc *interface = netdev_priv(dev); struct fm10k_vxlan_port *vxlan_port; + if (ti->type != UDP_TUNNEL_TYPE_VXLAN) + return; /* only the PF supports configuring tunnels */ if (interface->hw.mac.type != fm10k_mac_pf) return; /* existing ports are pulled out so our new entry is always last */ fm10k_vxlan_port_for_each(vxlan_port, interface) { - if ((vxlan_port->port == port) && - (vxlan_port->sa_family == sa_family)) { + if ((vxlan_port->port == ti->port) && + (vxlan_port->sa_family == ti->sa_family)) { list_del(&vxlan_port->list); goto insert_tail; } @@ -465,8 +467,8 @@ static void fm10k_add_vxlan_port(struct net_device *dev, vxlan_port = kmalloc(sizeof(*vxlan_port), GFP_ATOMIC); if (!vxlan_port) return; - vxlan_port->port = port; - vxlan_port->sa_family = sa_family; + vxlan_port->port = ti->port; + vxlan_port->sa_family = ti->sa_family; insert_tail: /* add new port value to list */ @@ -480,6 +482,7 @@ insert_tail: * @netdev: network interface device structure * @sa_family: Address family of freed port * @port: port number used for VXLAN + * @type: Enumerated value specifying udp encapsulation type * * This function is called when a new VXLAN interface has freed a port * number from the range that is currently in use for VXLAN. The freed @@ -487,17 +490,20 @@ insert_tail: * the port number for offloads. **/ static void fm10k_del_vxlan_port(struct net_device *dev, - sa_family_t sa_family, __be16 port) { + struct udp_tunnel_info *ti) +{ struct fm10k_intfc *interface = netdev_priv(dev); struct fm10k_vxlan_port *vxlan_port; + if (ti->type != UDP_TUNNEL_TYPE_VXLAN) + return; if (interface->hw.mac.type != fm10k_mac_pf) return; /* find the port in the list and free it */ fm10k_vxlan_port_for_each(vxlan_port, interface) { - if ((vxlan_port->port == port) && - (vxlan_port->sa_family == sa_family)) { + if ((vxlan_port->port == ti->port) && + (vxlan_port->sa_family == ti->sa_family)) { list_del(&vxlan_port->list); kfree(vxlan_port); break; @@ -553,10 +559,8 @@ int fm10k_open(struct net_device *netdev) if (err) goto err_set_queues; -#ifdef CONFIG_FM10K_VXLAN /* update VXLAN port configuration */ - vxlan_get_rx_port(netdev); -#endif + udp_tunnel_get_rx_info(netdev); fm10k_up(interface); @@ -1375,8 +1379,8 @@ static const struct net_device_ops fm10k_netdev_ops = { .ndo_set_vf_vlan = fm10k_ndo_set_vf_vlan, .ndo_set_vf_rate = fm10k_ndo_set_vf_bw, .ndo_get_vf_config = fm10k_ndo_get_vf_config, - .ndo_add_vxlan_port = fm10k_add_vxlan_port, - .ndo_del_vxlan_port = fm10k_del_vxlan_port, + .ndo_udp_tunnel_add = fm10k_add_vxlan_port, + .ndo_udp_tunnel_del = fm10k_del_vxlan_port, .ndo_dfwd_add_station = fm10k_dfwd_add_station, .ndo_dfwd_del_station = fm10k_dfwd_del_station, #ifdef CONFIG_NET_POLL_CONTROLLER
WARNING: multiple messages have this Message-ID (diff)
From: Alexander Duyck <aduyck@mirantis.com> To: intel-wired-lan@osuosl.org Subject: [Intel-wired-lan] [net-next PATCH v3 08/17] fm10k: Replace ndo_add/del_vxlan_port with ndo_add/del_udp_enc_port Date: Thu, 16 Jun 2016 12:21:57 -0700 [thread overview] Message-ID: <20160616192157.20872.6800.stgit@localhost.localdomain> (raw) In-Reply-To: <20160616191851.20872.67154.stgit@localhost.localdomain> This change replaces the network device operations for adding or removing a VXLAN port with operations that are more generically defined to be used for any UDP offload port but provide a type. As such by just adding a line to verify that the offload type if VXLAN we can maintain the same functionality. Signed-off-by: Alexander Duyck <aduyck@mirantis.com> --- drivers/net/ethernet/intel/Kconfig | 11 ------- drivers/net/ethernet/intel/fm10k/fm10k_netdev.c | 36 +++++++++++++---------- 2 files changed, 20 insertions(+), 27 deletions(-) diff --git a/drivers/net/ethernet/intel/Kconfig b/drivers/net/ethernet/intel/Kconfig index 714bd1014ddb..11fc5e8ea968 100644 --- a/drivers/net/ethernet/intel/Kconfig +++ b/drivers/net/ethernet/intel/Kconfig @@ -307,15 +307,4 @@ config FM10K To compile this driver as a module, choose M here. The module will be called fm10k. MSI-X interrupt support is required -config FM10K_VXLAN - bool "Virtual eXtensible Local Area Network Support" - default n - depends on FM10K && VXLAN && !(FM10K=y && VXLAN=m) - ---help--- - This allows one to create VXLAN virtual interfaces that provide - Layer 2 Networks over Layer 3 Networks. VXLAN is often used - to tunnel virtual network infrastructure in virtualized environments. - Say Y here if you want to use Virtual eXtensible Local Area Network - (VXLAN) in the driver. - endif # NET_VENDOR_INTEL diff --git a/drivers/net/ethernet/intel/fm10k/fm10k_netdev.c b/drivers/net/ethernet/intel/fm10k/fm10k_netdev.c index 2a08d3f5b6df..d00cb193da9a 100644 --- a/drivers/net/ethernet/intel/fm10k/fm10k_netdev.c +++ b/drivers/net/ethernet/intel/fm10k/fm10k_netdev.c @@ -20,9 +20,7 @@ #include "fm10k.h" #include <linux/vmalloc.h> -#ifdef CONFIG_FM10K_VXLAN -#include <net/vxlan.h> -#endif /* CONFIG_FM10K_VXLAN */ +#include <net/udp_tunnel.h> /** * fm10k_setup_tx_resources - allocate Tx resources (Descriptors) @@ -436,6 +434,7 @@ static void fm10k_restore_vxlan_port(struct fm10k_intfc *interface) * @netdev: network interface device structure * @sa_family: Address family of new port * @port: port number used for VXLAN + * @type: Enumerated value specifying udp encapsulation type * * This function is called when a new VXLAN interface has added a new port * number to the range that is currently in use for VXLAN. The new port @@ -444,18 +443,21 @@ static void fm10k_restore_vxlan_port(struct fm10k_intfc *interface) * is always used as the VXLAN port number for offloads. **/ static void fm10k_add_vxlan_port(struct net_device *dev, - sa_family_t sa_family, __be16 port) { + struct udp_tunnel_info *ti) +{ struct fm10k_intfc *interface = netdev_priv(dev); struct fm10k_vxlan_port *vxlan_port; + if (ti->type != UDP_TUNNEL_TYPE_VXLAN) + return; /* only the PF supports configuring tunnels */ if (interface->hw.mac.type != fm10k_mac_pf) return; /* existing ports are pulled out so our new entry is always last */ fm10k_vxlan_port_for_each(vxlan_port, interface) { - if ((vxlan_port->port == port) && - (vxlan_port->sa_family == sa_family)) { + if ((vxlan_port->port == ti->port) && + (vxlan_port->sa_family == ti->sa_family)) { list_del(&vxlan_port->list); goto insert_tail; } @@ -465,8 +467,8 @@ static void fm10k_add_vxlan_port(struct net_device *dev, vxlan_port = kmalloc(sizeof(*vxlan_port), GFP_ATOMIC); if (!vxlan_port) return; - vxlan_port->port = port; - vxlan_port->sa_family = sa_family; + vxlan_port->port = ti->port; + vxlan_port->sa_family = ti->sa_family; insert_tail: /* add new port value to list */ @@ -480,6 +482,7 @@ insert_tail: * @netdev: network interface device structure * @sa_family: Address family of freed port * @port: port number used for VXLAN + * @type: Enumerated value specifying udp encapsulation type * * This function is called when a new VXLAN interface has freed a port * number from the range that is currently in use for VXLAN. The freed @@ -487,17 +490,20 @@ insert_tail: * the port number for offloads. **/ static void fm10k_del_vxlan_port(struct net_device *dev, - sa_family_t sa_family, __be16 port) { + struct udp_tunnel_info *ti) +{ struct fm10k_intfc *interface = netdev_priv(dev); struct fm10k_vxlan_port *vxlan_port; + if (ti->type != UDP_TUNNEL_TYPE_VXLAN) + return; if (interface->hw.mac.type != fm10k_mac_pf) return; /* find the port in the list and free it */ fm10k_vxlan_port_for_each(vxlan_port, interface) { - if ((vxlan_port->port == port) && - (vxlan_port->sa_family == sa_family)) { + if ((vxlan_port->port == ti->port) && + (vxlan_port->sa_family == ti->sa_family)) { list_del(&vxlan_port->list); kfree(vxlan_port); break; @@ -553,10 +559,8 @@ int fm10k_open(struct net_device *netdev) if (err) goto err_set_queues; -#ifdef CONFIG_FM10K_VXLAN /* update VXLAN port configuration */ - vxlan_get_rx_port(netdev); -#endif + udp_tunnel_get_rx_info(netdev); fm10k_up(interface); @@ -1375,8 +1379,8 @@ static const struct net_device_ops fm10k_netdev_ops = { .ndo_set_vf_vlan = fm10k_ndo_set_vf_vlan, .ndo_set_vf_rate = fm10k_ndo_set_vf_bw, .ndo_get_vf_config = fm10k_ndo_get_vf_config, - .ndo_add_vxlan_port = fm10k_add_vxlan_port, - .ndo_del_vxlan_port = fm10k_del_vxlan_port, + .ndo_udp_tunnel_add = fm10k_add_vxlan_port, + .ndo_udp_tunnel_del = fm10k_del_vxlan_port, .ndo_dfwd_add_station = fm10k_dfwd_add_station, .ndo_dfwd_del_station = fm10k_dfwd_del_station, #ifdef CONFIG_NET_POLL_CONTROLLER
next prev parent reply other threads:[~2016-06-16 19:22 UTC|newest] Thread overview: 82+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-06-16 19:20 [net-next PATCH v3 00/17] Future-proof tunnel offload handlers Alexander Duyck 2016-06-16 19:20 ` [Intel-wired-lan] " Alexander Duyck 2016-06-16 19:20 ` [net-next PATCH v3 01/17] vxlan/geneve: Include udp_tunnel.h in vxlan/geneve.h and fixup includes Alexander Duyck 2016-06-16 19:20 ` [Intel-wired-lan] " Alexander Duyck 2016-06-16 23:06 ` Hannes Frederic Sowa 2016-06-16 23:06 ` [Intel-wired-lan] " Hannes Frederic Sowa 2016-06-16 19:20 ` [net-next PATCH v3 02/17] net: Combine GENEVE and VXLAN port notifiers into single functions Alexander Duyck 2016-06-16 19:20 ` [Intel-wired-lan] " Alexander Duyck 2016-06-16 22:45 ` Hannes Frederic Sowa 2016-06-16 22:45 ` [Intel-wired-lan] " Hannes Frederic Sowa 2016-06-16 19:21 ` [net-next PATCH v3 03/17] net: Merge VXLAN and GENEVE push notifiers into a single notifier Alexander Duyck 2016-06-16 19:21 ` [Intel-wired-lan] " Alexander Duyck 2016-06-16 22:47 ` Hannes Frederic Sowa 2016-06-16 22:47 ` [Intel-wired-lan] " Hannes Frederic Sowa 2016-06-16 19:21 ` [net-next PATCH v3 04/17] bnx2x: Move all UDP port notifiers to single function Alexander Duyck 2016-06-16 19:21 ` [Intel-wired-lan] " Alexander Duyck 2016-06-16 19:21 ` [net-next PATCH v3 05/17] bnxt: Update drivers to support unified UDP encapsulation offload functions Alexander Duyck 2016-06-16 19:21 ` [Intel-wired-lan] " Alexander Duyck 2016-06-16 19:21 ` [net-next PATCH v3 06/17] bnxt: Move GENEVE support from hard-coded port to using port notifier Alexander Duyck 2016-06-16 19:21 ` [Intel-wired-lan] " Alexander Duyck 2016-06-16 23:12 ` Michael Chan 2016-06-16 23:12 ` [Intel-wired-lan] " Michael Chan 2016-06-16 19:21 ` [net-next PATCH v3 07/17] benet: Replace ndo_add/del_vxlan_port with ndo_add/del_udp_enc_port Alexander Duyck 2016-06-16 19:21 ` [Intel-wired-lan] " Alexander Duyck 2016-06-16 19:21 ` Alexander Duyck [this message] 2016-06-16 19:21 ` [Intel-wired-lan] [net-next PATCH v3 08/17] fm10k: " Alexander Duyck 2016-06-16 19:22 ` [net-next PATCH v3 09/17] i40e: Move all UDP port notifiers to single function Alexander Duyck 2016-06-16 19:22 ` [Intel-wired-lan] " Alexander Duyck 2016-06-16 19:22 ` [net-next PATCH v3 10/17] ixgbe: Replace ndo_add/del_vxlan_port with ndo_add/del_udp_enc_port Alexander Duyck 2016-06-16 19:22 ` [Intel-wired-lan] " Alexander Duyck 2016-06-16 19:22 ` [net-next PATCH v3 11/17] mlx4_en: " Alexander Duyck 2016-06-16 19:22 ` [Intel-wired-lan] " Alexander Duyck 2016-06-16 19:22 ` [net-next PATCH v3 12/17] mlx5_en: " Alexander Duyck 2016-06-16 19:22 ` [Intel-wired-lan] " Alexander Duyck 2016-06-16 19:22 ` [net-next PATCH v3 13/17] nfp: " Alexander Duyck 2016-06-16 19:22 ` [Intel-wired-lan] " Alexander Duyck 2016-06-16 19:22 ` [net-next PATCH v3 14/17] qede: Move all UDP port notifiers to single function Alexander Duyck 2016-06-16 19:22 ` [Intel-wired-lan] " Alexander Duyck 2016-06-16 19:23 ` [net-next PATCH v3 15/17] qlcnic: Replace ndo_add/del_vxlan_port with ndo_add/del_udp_enc_port Alexander Duyck 2016-06-16 19:23 ` [Intel-wired-lan] " Alexander Duyck 2016-06-16 19:23 ` [net-next PATCH v3 16/17] net: Remove deprecated tunnel specific UDP offload functions Alexander Duyck 2016-06-16 19:23 ` [Intel-wired-lan] " Alexander Duyck 2016-06-16 22:59 ` Hannes Frederic Sowa 2016-06-16 22:59 ` [Intel-wired-lan] " Hannes Frederic Sowa 2016-06-16 19:23 ` [net-next PATCH v3 17/17] vxlan: Add new UDP encapsulation offload type for VXLAN-GPE Alexander Duyck 2016-06-16 19:23 ` [Intel-wired-lan] " Alexander Duyck 2016-06-16 23:01 ` Hannes Frederic Sowa 2016-06-16 23:01 ` [Intel-wired-lan] " Hannes Frederic Sowa 2016-06-18 3:26 ` [net-next PATCH v3 00/17] Future-proof tunnel offload handlers David Miller 2016-06-18 3:26 ` [Intel-wired-lan] " David Miller 2016-06-20 17:05 ` Tom Herbert 2016-06-20 17:05 ` [Intel-wired-lan] " Tom Herbert 2016-06-20 18:11 ` Hannes Frederic Sowa 2016-06-20 18:11 ` [Intel-wired-lan] " Hannes Frederic Sowa 2016-06-20 19:27 ` Tom Herbert 2016-06-20 19:27 ` [Intel-wired-lan] " Tom Herbert 2016-06-20 21:36 ` Hannes Frederic Sowa 2016-06-20 21:36 ` [Intel-wired-lan] " Hannes Frederic Sowa 2016-06-20 21:45 ` Tom Herbert 2016-06-20 21:45 ` [Intel-wired-lan] " Tom Herbert 2016-06-21 8:34 ` David Miller 2016-06-21 8:34 ` [Intel-wired-lan] " David Miller 2016-06-21 8:22 ` David Miller 2016-06-21 8:22 ` [Intel-wired-lan] " David Miller 2016-06-21 10:41 ` Edward Cree 2016-06-21 10:41 ` [Intel-wired-lan] " Edward Cree 2016-06-21 15:23 ` Hannes Frederic Sowa 2016-06-21 15:23 ` [Intel-wired-lan] " Hannes Frederic Sowa 2016-06-21 17:05 ` Alexander Duyck 2016-06-21 17:05 ` [Intel-wired-lan] " Alexander Duyck 2016-06-21 17:27 ` Edward Cree 2016-06-21 17:27 ` [Intel-wired-lan] " Edward Cree 2016-06-21 17:40 ` Hannes Frederic Sowa 2016-06-21 17:40 ` [Intel-wired-lan] " Hannes Frederic Sowa 2016-06-21 18:17 ` Alexander Duyck 2016-06-21 18:17 ` [Intel-wired-lan] " Alexander Duyck 2016-06-21 18:42 ` Tom Herbert 2016-06-21 18:42 ` [Intel-wired-lan] " Tom Herbert 2016-06-21 21:34 ` Hannes Frederic Sowa 2016-06-21 21:34 ` [Intel-wired-lan] " Hannes Frederic Sowa 2016-06-21 18:23 ` Edward Cree 2016-06-21 18:23 ` [Intel-wired-lan] " Edward Cree
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20160616192157.20872.6800.stgit@localhost.localdomain \ --to=aduyck@mirantis.com \ --cc=Dept-GELinuxNICDev@qlogic.com \ --cc=alexander.duyck@gmail.com \ --cc=ariel.elior@qlogic.com \ --cc=davem@davemloft.net \ --cc=eugenia@mellanox.com \ --cc=hannes@redhat.com \ --cc=intel-wired-lan@lists.osuosl.org \ --cc=jbenc@redhat.com \ --cc=jesse@kernel.org \ --cc=michael.chan@broadcom.com \ --cc=netdev@vger.kernel.org \ --cc=saeedm@mellanox.com \ --cc=tom@herbertland.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.