#ifdef HAVE_MLX5DV_DR
struct mlx5_ibv_shared *sh = priv->sh;
int err = 0;
- void *ns;
+ void *domain;
assert(sh);
if (sh->dv_refcnt) {
return 0;
}
/* Reference counter is zero, we should initialize structures. */
- ns = mlx5_glue->dr_create_ns(sh->ctx,
- MLX5DV_DR_NS_DOMAIN_INGRESS_BYPASS);
- if (!ns) {
- DRV_LOG(ERR, "ingress mlx5dv_dr_create_ns failed");
+ domain = mlx5_glue->dr_create_domain(sh->ctx,
+ MLX5DV_DR_DOMAIN_TYPE_NIC_RX);
+ if (!domain) {
+ DRV_LOG(ERR, "ingress mlx5dv_dr_create_domain failed");
err = errno;
goto error;
}
- sh->rx_ns = ns;
- ns = mlx5_glue->dr_create_ns(sh->ctx,
- MLX5DV_DR_NS_DOMAIN_EGRESS_BYPASS);
- if (!ns) {
- DRV_LOG(ERR, "egress mlx5dv_dr_create_ns failed");
+ sh->rx_domain = domain;
+ domain = mlx5_glue->dr_create_domain(sh->ctx,
+ MLX5DV_DR_DOMAIN_TYPE_NIC_TX);
+ if (!domain) {
+ DRV_LOG(ERR, "egress mlx5dv_dr_create_domain failed");
err = errno;
goto error;
}
pthread_mutex_init(&sh->dv_mutex, NULL);
- sh->tx_ns = ns;
+ sh->tx_domain = domain;
#ifdef HAVE_MLX5DV_DR_ESWITCH
if (priv->config.dv_esw_en) {
- ns = mlx5_glue->dr_create_ns(sh->ctx,
- MLX5DV_DR_NS_DOMAIN_FDB_BYPASS);
- if (!ns) {
- DRV_LOG(ERR, "FDB mlx5dv_dr_create_ns failed");
+ domain = mlx5_glue->dr_create_domain
+ (sh->ctx, MLX5DV_DR_DOMAIN_TYPE_FDB);
+ if (!domain) {
+ DRV_LOG(ERR, "FDB mlx5dv_dr_create_domain failed");
err = errno;
goto error;
}
- sh->fdb_ns = ns;
+ sh->fdb_domain = domain;
sh->esw_drop_action = mlx5_glue->dr_create_flow_action_drop();
}
#endif
error:
/* Rollback the created objects. */
- if (sh->rx_ns) {
- mlx5_glue->dr_destroy_ns(sh->rx_ns);
- sh->rx_ns = NULL;
+ if (sh->rx_domain) {
+ mlx5_glue->dr_destroy_domain(sh->rx_domain);
+ sh->rx_domain = NULL;
}
- if (sh->tx_ns) {
- mlx5_glue->dr_destroy_ns(sh->tx_ns);
- sh->tx_ns = NULL;
+ if (sh->tx_domain) {
+ mlx5_glue->dr_destroy_domain(sh->tx_domain);
+ sh->tx_domain = NULL;
}
- if (sh->fdb_ns) {
- mlx5_glue->dr_destroy_ns(sh->fdb_ns);
- sh->fdb_ns = NULL;
+ if (sh->fdb_domain) {
+ mlx5_glue->dr_destroy_domain(sh->fdb_domain);
+ sh->fdb_domain = NULL;
}
if (sh->esw_drop_action) {
mlx5_glue->destroy_flow_action(sh->esw_drop_action);
assert(sh->dv_refcnt);
if (sh->dv_refcnt && --sh->dv_refcnt)
return;
- if (sh->rx_ns) {
- mlx5_glue->dr_destroy_ns(sh->rx_ns);
- sh->rx_ns = NULL;
+ if (sh->rx_domain) {
+ mlx5_glue->dr_destroy_domain(sh->rx_domain);
+ sh->rx_domain = NULL;
}
- if (sh->tx_ns) {
- mlx5_glue->dr_destroy_ns(sh->tx_ns);
- sh->tx_ns = NULL;
+ if (sh->tx_domain) {
+ mlx5_glue->dr_destroy_domain(sh->tx_domain);
+ sh->tx_domain = NULL;
}
#ifdef HAVE_MLX5DV_DR_ESWITCH
- if (sh->fdb_ns) {
- mlx5_glue->dr_destroy_ns(sh->fdb_ns);
- sh->fdb_ns = NULL;
+ if (sh->fdb_domain) {
+ mlx5_glue->dr_destroy_domain(sh->fdb_domain);
+ sh->fdb_domain = NULL;
}
if (sh->esw_drop_action) {
mlx5_glue->destroy_flow_action(sh->esw_drop_action);
mlx5_mprq_free_mp(dev);
/* Remove from memory callback device list. */
rte_rwlock_write_lock(&mlx5_shared_data->mem_event_rwlock);
- LIST_REMOVE(priv, mem_event_cb);
- rte_rwlock_write_unlock(&mlx5_shared_data->mem_event_rwlock);
assert(priv->sh);
+ LIST_REMOVE(priv->sh, mem_event_cb);
+ rte_rwlock_write_unlock(&mlx5_shared_data->mem_event_rwlock);
mlx5_free_shared_dr(priv);
if (priv->rss_conf.rss_key != NULL)
rte_free(priv->rss_conf.rss_key);
unsigned int mprq_max_stride_size_n = 0;
unsigned int mprq_min_stride_num_n = 0;
unsigned int mprq_max_stride_num_n = 0;
- struct ether_addr mac;
+ struct rte_ether_addr mac;
char name[RTE_ETH_NAME_MAX_LEN];
int own_domain_id = 0;
uint16_t port_id;
/* Add device to memory callback list. */
rte_rwlock_write_lock(&mlx5_shared_data->mem_event_rwlock);
LIST_INSERT_HEAD(&mlx5_shared_data->mem_event_cb_list,
- priv, mem_event_cb);
+ sh, mem_event_cb);
rte_rwlock_write_unlock(&mlx5_shared_data->mem_event_rwlock);
return eth_dev;
error: