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 <adu...@mirantis.com>
---
 drivers/net/ethernet/intel/fm10k/fm10k_netdev.c |   18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/drivers/net/ethernet/intel/fm10k/fm10k_netdev.c 
b/drivers/net/ethernet/intel/fm10k/fm10k_netdev.c
index 2a08d3f5b6df..dd107af28e3d 100644
--- a/drivers/net/ethernet/intel/fm10k/fm10k_netdev.c
+++ b/drivers/net/ethernet/intel/fm10k/fm10k_netdev.c
@@ -436,6 +436,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,10 +445,13 @@ 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) {
+                                sa_family_t sa_family, __be16 port,
+                                unsigned int type) {
        struct fm10k_intfc *interface = netdev_priv(dev);
        struct fm10k_vxlan_port *vxlan_port;
 
+       if (type != UDP_ENC_OFFLOAD_TYPE_VXLAN)
+               return;
        /* only the PF supports configuring tunnels */
        if (interface->hw.mac.type != fm10k_mac_pf)
                return;
@@ -480,6 +484,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,10 +492,13 @@ insert_tail:
  * the port number for offloads.
  **/
 static void fm10k_del_vxlan_port(struct net_device *dev,
-                                sa_family_t sa_family, __be16 port) {
+                                sa_family_t sa_family, __be16 port,
+                                unsigned int type) {
        struct fm10k_intfc *interface = netdev_priv(dev);
        struct fm10k_vxlan_port *vxlan_port;
 
+       if (type != UDP_ENC_OFFLOAD_TYPE_VXLAN)
+               return;
        if (interface->hw.mac.type != fm10k_mac_pf)
                return;
 
@@ -555,7 +563,7 @@ int fm10k_open(struct net_device *netdev)
 
 #ifdef CONFIG_FM10K_VXLAN
        /* update VXLAN port configuration */
-       vxlan_get_rx_port(netdev);
+       udp_tunnel_get_rx_port(netdev);
 #endif
 
        fm10k_up(interface);
@@ -1375,8 +1383,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_add_udp_enc_port   = fm10k_add_vxlan_port,
+       .ndo_del_udp_enc_port   = 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

Reply via email to