From 95b0e40b10d9e88f568b082140bf032cffeec9d9 Mon Sep 17 00:00:00 2001 From: Michael Baum Date: Thu, 1 Oct 2020 14:09:12 +0000 Subject: [PATCH] net/mlx5: fix send queue doorbell As part of SQ creation for Tx queue objects, a HW doorbell memory should be allocated and mapped to the HW. The SQ doorbell handler was wrongly saved on the CQ fields what caused wrong doorbell release in the Tx queue object destroy flow. Save the SQ doorbell handler in the SQ fields. Fixes: 3a87b964edd3 ("net/mlx5: create Tx queues with DevX") Cc: stable@dpdk.org Signed-off-by: Michael Baum Acked-by: Matan Azrad --- drivers/net/mlx5/mlx5_txq.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/net/mlx5/mlx5_txq.c b/drivers/net/mlx5/mlx5_txq.c index 1bb667d469..fc730fae82 100644 --- a/drivers/net/mlx5/mlx5_txq.c +++ b/drivers/net/mlx5/mlx5_txq.c @@ -1050,8 +1050,8 @@ mlx5_txq_obj_devx_new(struct rte_eth_dev *dev, uint16_t idx) dev->data->port_id, txq_data->idx); goto error; } - /* Allocate doorbell record for completion queue. */ - txq_obj->cq_dbrec_offset = mlx5_get_dbr(sh->ctx, + /* Allocate doorbell record for send queue. */ + txq_obj->sq_dbrec_offset = mlx5_get_dbr(sh->ctx, &priv->dbrpgs, &txq_obj->sq_dbrec_page); if (txq_obj->sq_dbrec_offset < 0) @@ -1076,9 +1076,9 @@ mlx5_txq_obj_devx_new(struct rte_eth_dev *dev, uint16_t idx) sq_attr.wq_attr.log_wq_stride = rte_log2_u32(MLX5_WQE_SIZE); sq_attr.wq_attr.log_wq_sz = txq_data->wqe_n; sq_attr.wq_attr.dbr_umem_valid = 1; - sq_attr.wq_attr.dbr_addr = txq_obj->cq_dbrec_offset; + sq_attr.wq_attr.dbr_addr = txq_obj->sq_dbrec_offset; sq_attr.wq_attr.dbr_umem_id = - mlx5_os_get_umem_id(txq_obj->cq_dbrec_page->umem); + mlx5_os_get_umem_id(txq_obj->sq_dbrec_page->umem); sq_attr.wq_attr.wq_umem_valid = 1; sq_attr.wq_attr.wq_umem_id = mlx5_os_get_umem_id(txq_obj->sq_umem); sq_attr.wq_attr.wq_umem_offset = (uintptr_t)txq_obj->sq_buf % page_size; -- 2.20.1