net/mlx5: fix E-Switch DV flow disabling
[dpdk.git] / drivers / net / mlx5 / mlx5.c
index 5ecca2d..72b1e35 100644 (file)
@@ -1298,6 +1298,11 @@ mlx5_shared_dev_ctx_args_config(struct mlx5_dev_ctx_shared *sh,
                DRV_LOG(DEBUG, "E-Switch DV flow is not supported.");
                config->dv_esw_en = 0;
        }
+       if (config->dv_esw_en && !config->dv_flow_en) {
+               DRV_LOG(DEBUG,
+                       "E-Switch DV flow is supported only when DV flow is enabled.");
+               config->dv_esw_en = 0;
+       }
        if (config->dv_miss_info && config->dv_esw_en)
                config->dv_xmeta_en = MLX5_XMETA_MODE_META16;
        if (!config->dv_esw_en &&
@@ -1457,6 +1462,7 @@ mlx5_alloc_shared_dev_ctx(const struct mlx5_dev_spawn_data *spawn,
        for (i = 0; i < sh->max_port; i++) {
                sh->port[i].ih_port_id = RTE_MAX_ETHPORTS;
                sh->port[i].devx_ih_port_id = RTE_MAX_ETHPORTS;
+               sh->port[i].nl_ih_port_id = RTE_MAX_ETHPORTS;
        }
        if (sh->cdev->config.devx) {
                sh->td = mlx5_devx_cmd_create_td(sh->cdev->ctx);
@@ -1912,6 +1918,10 @@ mlx5_dev_close(struct rte_eth_dev *dev)
        if (ret)
                DRV_LOG(WARNING, "port %u some Rx queue objects still remain",
                        dev->data->port_id);
+       ret = mlx5_ext_rxq_verify(dev);
+       if (ret)
+               DRV_LOG(WARNING, "Port %u some external RxQ still remain.",
+                       dev->data->port_id);
        ret = mlx5_rxq_verify(dev);
        if (ret)
                DRV_LOG(WARNING, "port %u some Rx queues still remain",