Commit 5006eb22 authored by Saeed Mahameed's avatar Saeed Mahameed
Browse files

net/mlx5e: Vxlan, rename struct mlx5e_vxlan to mlx5_vxlan_port



The name mlx5e_vxlan will be used in downstream patch to describe
mlx5 vxlan structure that will replace mlx5e_vxlan_db.

Hence we rename struct mlx5e_vxlan to mlx5_vxlan_port which describes a
mlx5 vxlan port.

Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
Reviewed-by: default avatarOr Gerlitz <ogerlitz@mellanox.com>
parent dccea6bf
Loading
Loading
Loading
Loading
+31 −32
Original line number Original line Diff line number Diff line
@@ -36,7 +36,7 @@
#include "mlx5_core.h"
#include "mlx5_core.h"
#include "vxlan.h"
#include "vxlan.h"


struct mlx5e_vxlan {
struct mlx5_vxlan_port {
	struct hlist_node hlist;
	struct hlist_node hlist;
	atomic_t refcount;
	atomic_t refcount;
	u16 udp_port;
	u16 udp_port;
@@ -83,40 +83,40 @@ static int mlx5e_vxlan_core_del_port_cmd(struct mlx5_core_dev *mdev, u16 port)
	return mlx5_cmd_exec(mdev, in, sizeof(in), out, sizeof(out));
	return mlx5_cmd_exec(mdev, in, sizeof(in), out, sizeof(out));
}
}


static struct mlx5e_vxlan *mlx5e_vxlan_lookup_port_locked(struct mlx5e_priv *priv,
static struct mlx5_vxlan_port*
							  u16 port)
mlx5e_vxlan_lookup_port_locked(struct mlx5e_priv *priv, u16 port)
{
{
	struct mlx5e_vxlan_db *vxlan_db = &priv->vxlan;
	struct mlx5e_vxlan_db *vxlan_db = &priv->vxlan;
	struct mlx5e_vxlan    *vxlan;
	struct mlx5_vxlan_port *vxlanp;


	hash_for_each_possible(vxlan_db->htable, vxlan, hlist, port) {
	hash_for_each_possible(vxlan_db->htable, vxlanp, hlist, port) {
		if (vxlan->udp_port == port)
		if (vxlanp->udp_port == port)
			return vxlan;
			return vxlanp;
	}
	}


	return NULL;
	return NULL;
}
}


struct mlx5e_vxlan *mlx5e_vxlan_lookup_port(struct mlx5e_priv *priv, u16 port)
struct mlx5_vxlan_port *mlx5e_vxlan_lookup_port(struct mlx5e_priv *priv, u16 port)
{
{
	struct mlx5e_vxlan_db *vxlan_db = &priv->vxlan;
	struct mlx5e_vxlan_db *vxlan_db = &priv->vxlan;
	struct mlx5e_vxlan *vxlan;
	struct mlx5_vxlan_port *vxlanp;


	spin_lock_bh(&vxlan_db->lock);
	spin_lock_bh(&vxlan_db->lock);
	vxlan = mlx5e_vxlan_lookup_port_locked(priv, port);
	vxlanp = mlx5e_vxlan_lookup_port_locked(priv, port);
	spin_unlock_bh(&vxlan_db->lock);
	spin_unlock_bh(&vxlan_db->lock);


	return vxlan;
	return vxlanp;
}
}


void mlx5e_vxlan_add_port(struct mlx5e_priv *priv, u16 port)
void mlx5e_vxlan_add_port(struct mlx5e_priv *priv, u16 port)
{
{
	struct mlx5e_vxlan_db *vxlan_db = &priv->vxlan;
	struct mlx5e_vxlan_db *vxlan_db = &priv->vxlan;
	struct mlx5e_vxlan *vxlan;
	struct mlx5_vxlan_port *vxlanp;


	vxlan = mlx5e_vxlan_lookup_port(priv, port);
	vxlanp = mlx5e_vxlan_lookup_port(priv, port);
	if (vxlan) {
	if (vxlanp) {
		atomic_inc(&vxlan->refcount);
		atomic_inc(&vxlanp->refcount);
		return;
		return;
	}
	}


@@ -130,15 +130,15 @@ void mlx5e_vxlan_add_port(struct mlx5e_priv *priv, u16 port)
	if (mlx5e_vxlan_core_add_port_cmd(priv->mdev, port))
	if (mlx5e_vxlan_core_add_port_cmd(priv->mdev, port))
		return;
		return;


	vxlan = kzalloc(sizeof(*vxlan), GFP_KERNEL);
	vxlanp = kzalloc(sizeof(*vxlanp), GFP_KERNEL);
	if (!vxlan)
	if (!vxlanp)
		goto err_delete_port;
		goto err_delete_port;


	vxlan->udp_port = port;
	vxlanp->udp_port = port;
	atomic_set(&vxlan->refcount, 1);
	atomic_set(&vxlanp->refcount, 1);


	spin_lock_bh(&vxlan_db->lock);
	spin_lock_bh(&vxlan_db->lock);
	hash_add(vxlan_db->htable, &vxlan->hlist, port);
	hash_add(vxlan_db->htable, &vxlanp->hlist, port);
	spin_unlock_bh(&vxlan_db->lock);
	spin_unlock_bh(&vxlan_db->lock);


	vxlan_db->num_ports++;
	vxlan_db->num_ports++;
@@ -151,17 +151,16 @@ void mlx5e_vxlan_add_port(struct mlx5e_priv *priv, u16 port)
void mlx5e_vxlan_del_port(struct mlx5e_priv *priv, u16 port)
void mlx5e_vxlan_del_port(struct mlx5e_priv *priv, u16 port)
{
{
	struct mlx5e_vxlan_db *vxlan_db = &priv->vxlan;
	struct mlx5e_vxlan_db *vxlan_db = &priv->vxlan;
	struct mlx5e_vxlan *vxlan;
	struct mlx5_vxlan_port *vxlanp;
	bool remove = false;
	bool remove = false;


	spin_lock_bh(&vxlan_db->lock);
	spin_lock_bh(&vxlan_db->lock);

	vxlanp = mlx5e_vxlan_lookup_port_locked(priv, port);
	vxlan = mlx5e_vxlan_lookup_port_locked(priv, port);
	if (!vxlanp)
	if (!vxlan)
		goto out_unlock;
		goto out_unlock;


	if (atomic_dec_and_test(&vxlan->refcount)) {
	if (atomic_dec_and_test(&vxlanp->refcount)) {
		hash_del(&vxlan->hlist);
		hash_del(&vxlanp->hlist);
		remove = true;
		remove = true;
	}
	}


@@ -170,7 +169,7 @@ void mlx5e_vxlan_del_port(struct mlx5e_priv *priv, u16 port)


	if (remove) {
	if (remove) {
		mlx5e_vxlan_core_del_port_cmd(priv->mdev, port);
		mlx5e_vxlan_core_del_port_cmd(priv->mdev, port);
		kfree(vxlan);
		kfree(vxlanp);
		vxlan_db->num_ports--;
		vxlan_db->num_ports--;
	}
	}
}
}
@@ -178,14 +177,14 @@ void mlx5e_vxlan_del_port(struct mlx5e_priv *priv, u16 port)
void mlx5e_vxlan_cleanup(struct mlx5e_priv *priv)
void mlx5e_vxlan_cleanup(struct mlx5e_priv *priv)
{
{
	struct mlx5e_vxlan_db *vxlan_db = &priv->vxlan;
	struct mlx5e_vxlan_db *vxlan_db = &priv->vxlan;
	struct mlx5e_vxlan *vxlan;
	struct mlx5_vxlan_port *vxlanp;
	struct hlist_node *tmp;
	struct hlist_node *tmp;
	int bkt;
	int bkt;


	/* Lockless since we are the only hash table consumers, wq and TX are disabled */
	/* Lockless since we are the only hash table consumers, wq and TX are disabled */
	hash_for_each_safe(vxlan_db->htable, bkt, tmp, vxlan, hlist) {
	hash_for_each_safe(vxlan_db->htable, bkt, tmp, vxlanp, hlist) {
		hash_del(&vxlan->hlist);
		hash_del(&vxlanp->hlist);
		mlx5e_vxlan_core_del_port_cmd(priv->mdev, vxlan->udp_port);
		mlx5e_vxlan_core_del_port_cmd(priv->mdev, vxlanp->udp_port);
		kfree(vxlan);
		kfree(vxlanp);
	}
	}
}
}
+2 −2
Original line number Original line Diff line number Diff line
@@ -35,7 +35,7 @@
#include <linux/mlx5/driver.h>
#include <linux/mlx5/driver.h>
#include "en.h"
#include "en.h"


struct mlx5e_vxlan;
struct mlx5_vxlan_port;


static inline bool mlx5e_vxlan_allowed(struct mlx5_core_dev *mdev)
static inline bool mlx5e_vxlan_allowed(struct mlx5_core_dev *mdev)
{
{
@@ -47,6 +47,6 @@ void mlx5e_vxlan_init(struct mlx5e_priv *priv);
void mlx5e_vxlan_cleanup(struct mlx5e_priv *priv);
void mlx5e_vxlan_cleanup(struct mlx5e_priv *priv);
void mlx5e_vxlan_add_port(struct mlx5e_priv *priv, u16 port);
void mlx5e_vxlan_add_port(struct mlx5e_priv *priv, u16 port);
void mlx5e_vxlan_del_port(struct mlx5e_priv *priv, u16 port);
void mlx5e_vxlan_del_port(struct mlx5e_priv *priv, u16 port);
struct mlx5e_vxlan *mlx5e_vxlan_lookup_port(struct mlx5e_priv *priv, u16 port);
struct mlx5_vxlan_port *mlx5e_vxlan_lookup_port(struct mlx5e_priv *priv, u16 port);


#endif /* __MLX5_VXLAN_H__ */
#endif /* __MLX5_VXLAN_H__ */