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 is VXLAN we can maintain the same functionality.
Signed-off-by: Alexander Duyck <adu...@mirantis.com> --- drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c index 1c29105b6c36..e2840f55f09f 100644 --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c @@ -476,11 +476,15 @@ static int qlcnic_get_phys_port_id(struct net_device *netdev, #ifdef CONFIG_QLCNIC_VXLAN static void qlcnic_add_vxlan_port(struct net_device *netdev, - sa_family_t sa_family, __be16 port) + sa_family_t sa_family, __be16 port, + unsigned int type) { struct qlcnic_adapter *adapter = netdev_priv(netdev); struct qlcnic_hardware_context *ahw = adapter->ahw; + if (type != UDP_ENC_OFFLOAD_TYPE_VXLAN) + return; + /* Adapter supports only one VXLAN port. Use very first port * for enabling offload */ @@ -498,11 +502,15 @@ static void qlcnic_add_vxlan_port(struct net_device *netdev, } static void qlcnic_del_vxlan_port(struct net_device *netdev, - sa_family_t sa_family, __be16 port) + sa_family_t sa_family, __be16 port, + unsigned int type) { struct qlcnic_adapter *adapter = netdev_priv(netdev); struct qlcnic_hardware_context *ahw = adapter->ahw; + if (type != UDP_ENC_OFFLOAD_TYPE_VXLAN) + return; + if (!qlcnic_encap_rx_offload(adapter) || !ahw->vxlan_port_count || (ahw->vxlan_port != ntohs(port))) return; @@ -540,8 +548,8 @@ static const struct net_device_ops qlcnic_netdev_ops = { .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, + .ndo_add_udp_enc_port = qlcnic_add_vxlan_port, + .ndo_del_udp_enc_port = qlcnic_del_vxlan_port, .ndo_features_check = qlcnic_features_check, #endif #ifdef CONFIG_NET_POLL_CONTROLLER @@ -2017,7 +2025,7 @@ qlcnic_attach(struct qlcnic_adapter *adapter) #ifdef CONFIG_QLCNIC_VXLAN if (qlcnic_encap_rx_offload(adapter)) - vxlan_get_rx_port(netdev); + udp_tunnel_get_rx_port(netdev); #endif adapter->is_up = QLCNIC_ADAPTER_UP_MAGIC;