During integration/rebase there was introduced the bugs: - double memory allocation for queue structure resulting in losing the part of configuration settings and following crash
- the erroneous fix for the segment logarithm Fixes: 919ef3e26cff ("net/mlx5: configure Rx queue to support split") Signed-off-by: Viacheslav Ovsiienko <viachesl...@nvidia.com> --- drivers/net/mlx5/mlx5.h | 1 + drivers/net/mlx5/mlx5_rxq.c | 11 +---------- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h index 258be03..8d65828 100644 --- a/drivers/net/mlx5/mlx5.h +++ b/drivers/net/mlx5/mlx5.h @@ -730,6 +730,7 @@ struct mlx5_ind_table_obj { }; /* Hash Rx queue. */ +__extension__ struct mlx5_hrxq { ILIST_ENTRY(uint32_t)next; /* Index to the next element. */ rte_atomic32_t refcnt; /* Reference counter. */ diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c index 1cc477a..4e17535 100644 --- a/drivers/net/mlx5/mlx5_rxq.c +++ b/drivers/net/mlx5/mlx5_rxq.c @@ -1486,15 +1486,6 @@ struct mlx5_rxq_ctrl * rte_errno = ENOSPC; return NULL; } - tmpl = mlx5_malloc(MLX5_MEM_RTE | MLX5_MEM_ZERO, - sizeof(*tmpl) + desc_n * sizeof(struct rte_mbuf *) + - (desc >> mprq_stride_nums) * sizeof(struct mlx5_mprq_buf *), - 0, socket); - - if (!tmpl) { - rte_errno = ENOMEM; - return NULL; - } tmpl->type = MLX5_RXQ_TYPE_STANDARD; if (mlx5_mr_btree_init(&tmpl->rxq.mr_ctrl.cache_bh, MLX5_MR_BTREE_CACHE_N, socket)) { @@ -1560,7 +1551,7 @@ struct mlx5_rxq_ctrl * * Determine the number of SGEs needed for a full packet * and round it to the next power of two. */ - sges_n = tmpl->rxq.rxseg_n; + sges_n = log2above(tmpl->rxq.rxseg_n); if (sges_n > MLX5_MAX_LOG_RQ_SEGS) { DRV_LOG(ERR, "port %u too many SGEs (%u) needed to handle" -- 1.8.3.1