net/mlx5e: Vxlan, add direct delete function
authorSaeed Mahameed <saeedm@mellanox.com>
Tue, 8 May 2018 01:06:26 +0000 (18:06 -0700)
committerSaeed Mahameed <saeedm@mellanox.com>
Fri, 27 Jul 2018 22:35:14 +0000 (15:35 -0700)
Add direct vxlan delete function to be called from vxlan_delete_work.
Needed in downstream patch.

Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
Reviewed-by: Or Gerlitz <ogerlitz@mellanox.com>
drivers/net/ethernet/mellanox/mlx5/core/vxlan.c

index 4b9190d677fc8ecb2e9aefcc6189589f65436f69..baeac5922e8ca46ab0462d1bf3c0fcc9c32b4ebb 100644 (file)
@@ -158,18 +158,14 @@ static void mlx5e_vxlan_add_work(struct work_struct *work)
        kfree(vxlan_work);
 }
 
-static void mlx5e_vxlan_del_work(struct work_struct *work)
+static void mlx5e_vxlan_del_port(struct mlx5e_priv *priv, u16 port)
 {
-       struct mlx5e_vxlan_work *vxlan_work =
-               container_of(work, struct mlx5e_vxlan_work, work);
-       struct mlx5e_priv *priv         = vxlan_work->priv;
        struct mlx5e_vxlan_db *vxlan_db = &priv->vxlan;
-       u16 port = vxlan_work->port;
        struct mlx5e_vxlan *vxlan;
        bool remove = false;
 
-       mutex_lock(&priv->state_lock);
        spin_lock_bh(&vxlan_db->lock);
+
        vxlan = mlx5e_vxlan_lookup_port_locked(priv, port);
        if (!vxlan)
                goto out_unlock;
@@ -187,6 +183,17 @@ out_unlock:
                kfree(vxlan);
                vxlan_db->num_ports--;
        }
+}
+
+static void mlx5e_vxlan_del_work(struct work_struct *work)
+{
+       struct mlx5e_vxlan_work *vxlan_work =
+               container_of(work, struct mlx5e_vxlan_work, work);
+       struct mlx5e_priv *priv         = vxlan_work->priv;
+       u16 port = vxlan_work->port;
+
+       mutex_lock(&priv->state_lock);
+       mlx5e_vxlan_del_port(priv, port);
        mutex_unlock(&priv->state_lock);
        kfree(vxlan_work);
 }