Lines Matching defs:vxlan
36 #include <net/vxlan.h>
38 #include "vxlan.h"
72 bool mlx5_vxlan_lookup_port(struct mlx5_vxlan *vxlan, u16 port)
77 if (!mlx5_vxlan_allowed(vxlan))
81 hash_for_each_possible_rcu(vxlan->htable, vxlanp, hlist, port)
91 static struct mlx5_vxlan_port *vxlan_lookup_port(struct mlx5_vxlan *vxlan, u16 port)
95 hash_for_each_possible(vxlan->htable, vxlanp, hlist, port)
101 int mlx5_vxlan_add_port(struct mlx5_vxlan *vxlan, u16 port)
111 ret = mlx5_vxlan_core_add_port_cmd(vxlan->mdev, port);
117 mutex_lock(&vxlan->sync_lock);
118 hash_add_rcu(vxlan->htable, &vxlanp->hlist, port);
119 mutex_unlock(&vxlan->sync_lock);
124 int mlx5_vxlan_del_port(struct mlx5_vxlan *vxlan, u16 port)
129 mutex_lock(&vxlan->sync_lock);
131 vxlanp = vxlan_lookup_port(vxlan, port);
139 mlx5_vxlan_core_del_port_cmd(vxlan->mdev, port);
143 mutex_unlock(&vxlan->sync_lock);
149 struct mlx5_vxlan *vxlan;
154 vxlan = kzalloc(sizeof(*vxlan), GFP_KERNEL);
155 if (!vxlan)
158 vxlan->mdev = mdev;
159 mutex_init(&vxlan->sync_lock);
160 hash_init(vxlan->htable);
163 mlx5_vxlan_add_port(vxlan, IANA_VXLAN_UDP_PORT);
165 return vxlan;
168 void mlx5_vxlan_destroy(struct mlx5_vxlan *vxlan)
170 if (!mlx5_vxlan_allowed(vxlan))
173 mlx5_vxlan_del_port(vxlan, IANA_VXLAN_UDP_PORT);
174 WARN_ON(!hash_empty(vxlan->htable));
176 kfree(vxlan);
179 void mlx5_vxlan_reset_to_default(struct mlx5_vxlan *vxlan)
185 if (!mlx5_vxlan_allowed(vxlan))
188 hash_for_each_safe(vxlan->htable, bkt, tmp, vxlanp, hlist) {
194 mlx5_vxlan_del_port(vxlan, vxlanp->udp_port);