From: Shahaf Shuler Date: Thu, 25 Jan 2018 16:18:02 +0000 (+0200) Subject: net/mlx5: fix memory region cache last index X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=627cbfad1ca0d4e12744a28d61b8881ab5ff3757;p=dpdk.git net/mlx5: fix memory region cache last index In case Memory Region cache is full, the new mempool will be inserted in the last index of the array. Update the last entry being hit to reflect it. Fixes: b0b093845793 ("net/mlx5: use buffer address for LKEY search") Cc: stable@dpdk.org Signed-off-by: Xueming Li Signed-off-by: Shahaf Shuler Acked-by: Nelio Laranjeiro --- diff --git a/drivers/net/mlx5/mlx5_rxtx.h b/drivers/net/mlx5/mlx5_rxtx.h index b40177d429..7297f011a9 100644 --- a/drivers/net/mlx5/mlx5_rxtx.h +++ b/drivers/net/mlx5/mlx5_rxtx.h @@ -567,7 +567,6 @@ mlx5_tx_mb2mr(struct mlx5_txq_data *txq, struct rte_mbuf *mb) return txq->mp2mr[i]->lkey; } } - txq->mr_cache_idx = 0; mr = mlx5_txq_mp2mr_reg(txq, mlx5_tx_mb2mp(mb), i); /* * Request the reference to use in this queue, the original one is @@ -575,6 +574,7 @@ mlx5_tx_mb2mr(struct mlx5_txq_data *txq, struct rte_mbuf *mb) */ if (mr) { rte_atomic32_inc(&mr->refcnt); + txq->mr_cache_idx = i >= RTE_DIM(txq->mp2mr) ? i - 1 : i; return mr->lkey; } else { struct rte_mempool *mp = mlx5_tx_mb2mp(mb);