*/
#include <sys/types.h>
-#include <rte_ethdev_driver.h>
+#include <ethdev_driver.h>
#include <rte_common.h>
#include <rte_malloc.h>
#include <rte_hypervisor.h>
if (!vlan->created || !vmwa)
return;
vlan->created = 0;
+ rte_spinlock_lock(&vmwa->sl);
MLX5_ASSERT(vlan_dev[vlan->tag].refcnt);
if (--vlan_dev[vlan->tag].refcnt == 0 &&
vlan_dev[vlan->tag].ifindex) {
mlx5_nl_vlan_vmwa_delete(vmwa, vlan_dev[vlan->tag].ifindex);
vlan_dev[vlan->tag].ifindex = 0;
}
+ rte_spinlock_unlock(&vmwa->sl);
}
/**
MLX5_ASSERT(priv->vmwa_context);
if (vlan->created || !vmwa)
return;
+ rte_spinlock_lock(&vmwa->sl);
if (vlan_dev[vlan->tag].refcnt == 0) {
MLX5_ASSERT(!vlan_dev[vlan->tag].ifindex);
vlan_dev[vlan->tag].ifindex =
vlan_dev[vlan->tag].refcnt++;
vlan->created = 1;
}
+ rte_spinlock_unlock(&vmwa->sl);
}
/*
mlx5_vlan_vmwa_init(struct rte_eth_dev *dev, uint32_t ifindex)
{
struct mlx5_priv *priv = dev->data->dev_private;
- struct mlx5_dev_config *config = &priv->config;
struct mlx5_nl_vlan_vmwa_context *vmwa;
enum rte_hypervisor hv_type;
/* Do not engage workaround over PF. */
- if (!config->vf)
+ if (!priv->sh->dev_cap.vf)
return NULL;
/* Check whether there is desired virtual environment */
hv_type = rte_hypervisor_get();
" for VLAN workaround context");
return NULL;
}
+ rte_spinlock_init(&vmwa->sl);
vmwa->nl_socket = mlx5_nl_init(NETLINK_ROUTE);
if (vmwa->nl_socket < 0) {
DRV_LOG(WARNING,