[dpdk-test-report] |WARNING| pw101875-101887 [PATCH] [v2, 13/13] net/mlx5: add shared Rx queue port datapath support
dpdklab at iol.unh.edu
dpdklab at iol.unh.edu
Sat Oct 16 11:29:22 CEST 2021
Test-Label: iol-testing
Test-Status: WARNING
http://dpdk.org/patch/101875
_apply patch failure_
Submitter: Xueming(Steven) Li <xuemingl at nvidia.com>
Date: Saturday, October 16 2021 09:12:13
Applied on: CommitID:e9123c467dbb471a2d41ea896423a81886ef89d7
Apply patch set 101875-101887 failed:
Checking patch drivers/net/mlx5/mlx5_rx.h...
Checking patch drivers/net/mlx5/mlx5_rxq.c...
Hunk #16 succeeded at 2115 (offset -20 lines).
Hunk #17 succeeded at 2145 (offset -10 lines).
error: while searching for:
return ret;
}
for (i = 0; i < ind_tbl->queues_n; i++)
mlx5_rxq_get(dev, ind_tbl->queues[i]);
return 0;
}
error: patch failed: drivers/net/mlx5/mlx5_rxq.c:2135
error: while searching for:
return ret;
}
for (i = 0; i < ind_tbl->queues_n; i++)
mlx5_rxq_release(dev, ind_tbl->queues[i]);
return ret;
}
error: patch failed: drivers/net/mlx5/mlx5_rxq.c:2172
Checking patch drivers/net/mlx5/mlx5_trigger.c...
Hunk #1 succeeded at 142 (offset -1 lines).
Hunk #2 succeeded at 216 (offset -1 lines).
Hunk #3 succeeded at 261 (offset -1 lines).
Hunk #4 succeeded at 270 (offset -1 lines).
Hunk #5 succeeded at 305 (offset -1 lines).
Hunk #6 succeeded at 381 (offset -1 lines).
Hunk #7 succeeded at 408 (offset -1 lines).
Hunk #8 succeeded at 506 (offset -1 lines).
Hunk #9 succeeded at 539 (offset -1 lines).
Hunk #10 succeeded at 546 (offset -1 lines).
Hunk #11 succeeded at 555 (offset -1 lines).
Hunk #12 succeeded at 619 (offset -1 lines).
Hunk #13 succeeded at 652 (offset -1 lines).
Hunk #14 succeeded at 953 (offset -1 lines).
Hunk #15 succeeded at 981 (offset -1 lines).
Applied patch drivers/net/mlx5/mlx5_rx.h cleanly.
Applying patch drivers/net/mlx5/mlx5_rxq.c with 2 rejects...
Hunk #1 applied cleanly.
Hunk #2 applied cleanly.
Hunk #3 applied cleanly.
Hunk #4 applied cleanly.
Hunk #5 applied cleanly.
Hunk #6 applied cleanly.
Hunk #7 applied cleanly.
Hunk #8 applied cleanly.
Hunk #9 applied cleanly.
Hunk #10 applied cleanly.
Hunk #11 applied cleanly.
Hunk #12 applied cleanly.
Hunk #13 applied cleanly.
Hunk #14 applied cleanly.
Hunk #15 applied cleanly.
Hunk #16 applied cleanly.
Hunk #17 applied cleanly.
Rejected hunk #18.
Rejected hunk #19.
Applied patch drivers/net/mlx5/mlx5_trigger.c cleanly.
diff a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c (rejected hunks)
@@ -2135,7 +2192,7 @@ mlx5_ind_table_obj_attach(struct rte_eth_dev *dev,
return ret;
}
for (i = 0; i < ind_tbl->queues_n; i++)
- mlx5_rxq_get(dev, ind_tbl->queues[i]);
+ mlx5_rxq_ref(dev, ind_tbl->queues[i]);
return 0;
}
@@ -2172,7 +2229,7 @@ mlx5_ind_table_obj_detach(struct rte_eth_dev *dev,
return ret;
}
for (i = 0; i < ind_tbl->queues_n; i++)
- mlx5_rxq_release(dev, ind_tbl->queues[i]);
+ mlx5_rxq_deref(dev, ind_tbl->queues[i]);
return ret;
}
Checking patch drivers/net/mlx5/mlx5_rx.h...
error: drivers/net/mlx5/mlx5_rx.h: does not match index
Checking patch drivers/net/mlx5/mlx5_rxq.c...
error: drivers/net/mlx5/mlx5_rxq.c: does not match index
Checking patch drivers/net/mlx5/mlx5_trigger.c...
error: drivers/net/mlx5/mlx5_trigger.c: does not match index
Checking patch drivers/net/mlx5/mlx5_devx.c...
error: while searching for:
}
rxq->rxq_ctrl = rxq_ctrl;
rxq_ctrl->type = MLX5_RXQ_TYPE_STANDARD;
rxq_ctrl->priv = priv;
rxq_ctrl->obj = rxq;
rxq_data = &rxq_ctrl->rxq;
/* Create CQ using DevX API. */
error: patch failed: drivers/net/mlx5/mlx5_devx.c:916
Checking patch drivers/net/mlx5/mlx5_mr.c...
Checking patch drivers/net/mlx5/mlx5_rx.c...
Checking patch drivers/net/mlx5/mlx5_rx.h...
error: drivers/net/mlx5/mlx5_rx.h: does not match index
Checking patch drivers/net/mlx5/mlx5_rxq.c...
error: drivers/net/mlx5/mlx5_rxq.c: does not match index
Checking patch drivers/net/mlx5/mlx5_rxtx_vec.c...
Applying patch drivers/net/mlx5/mlx5_devx.c with 1 reject...
Rejected hunk #1.
Applied patch drivers/net/mlx5/mlx5_mr.c cleanly.
Applied patch drivers/net/mlx5/mlx5_rx.c cleanly.
Applied patch drivers/net/mlx5/mlx5_rxtx_vec.c cleanly.
diff a/drivers/net/mlx5/mlx5_devx.c b/drivers/net/mlx5/mlx5_devx.c (rejected hunks)
@@ -916,7 +916,7 @@ mlx5_rxq_devx_obj_drop_create(struct rte_eth_dev *dev)
}
rxq->rxq_ctrl = rxq_ctrl;
rxq_ctrl->type = MLX5_RXQ_TYPE_STANDARD;
- rxq_ctrl->priv = priv;
+ rxq_ctrl->sh = priv->sh;
rxq_ctrl->obj = rxq;
rxq_data = &rxq_ctrl->rxq;
/* Create CQ using DevX API. */
Checking patch drivers/net/mlx5/linux/mlx5_verbs.c...
Checking patch drivers/net/mlx5/mlx5.h...
Checking patch drivers/net/mlx5/mlx5_devx.c...
error: while searching for:
/**
* Create a RQ object using DevX.
*
* @param dev
* Pointer to Ethernet device.
* @param rxq_data
* RX queue data.
*
* @return
* 0 on success, a negative errno value otherwise and rte_errno is set.
*/
static int
mlx5_rxq_create_devx_rq_resources(struct rte_eth_dev *dev,
struct mlx5_rxq_data *rxq_data)
{
struct mlx5_priv *priv = dev->data->dev_private;
struct mlx5_rxq_ctrl *rxq_ctrl =
container_of(rxq_data, struct mlx5_rxq_ctrl, rxq);
struct mlx5_devx_create_rq_attr rq_attr = { 0 };
uint16_t log_desc_n = rxq_data->elts_n - rxq_data->sges_n;
uint32_t wqe_size, log_wqe_size;
error: patch failed: drivers/net/mlx5/mlx5_devx.c:224
Hunk #7 succeeded at 273 (offset 3 lines).
error: while searching for:
/**
* Create a DevX CQ object for an Rx queue.
*
* @param dev
* Pointer to Ethernet device.
* @param rxq_data
* RX queue data.
*
* @return
* 0 on success, a negative errno value otherwise and rte_errno is set.
*/
static int
mlx5_rxq_create_devx_cq_resources(struct rte_eth_dev *dev,
struct mlx5_rxq_data *rxq_data)
{
struct mlx5_devx_cq *cq_obj = 0;
struct mlx5_devx_cq_attr cq_attr = { 0 };
struct mlx5_priv *priv = dev->data->dev_private;
struct mlx5_dev_ctx_shared *sh = priv->sh;
struct mlx5_rxq_ctrl *rxq_ctrl =
container_of(rxq_data, struct mlx5_rxq_ctrl, rxq);
unsigned int cqe_n = mlx5_rxq_cqe_num(rxq_data);
uint32_t log_cqe_n;
uint16_t event_nums[1] = { 0 };
error: patch failed: drivers/net/mlx5/mlx5_devx.c:287
Hunk #9 succeeded at 339 (offset 5 lines).
Hunk #10 succeeded at 348 (offset 5 lines).
Hunk #11 succeeded at 391 (offset 5 lines).
Hunk #12 succeeded at 436 (offset 5 lines).
error: while searching for:
tmpl->fd = mlx5_os_get_devx_channel_fd(tmpl->devx_channel);
}
/* Create CQ using DevX API. */
ret = mlx5_rxq_create_devx_cq_resources(dev, rxq_data);
if (ret) {
DRV_LOG(ERR, "Failed to create CQ.");
goto error;
}
/* Create RQ using DevX API. */
ret = mlx5_rxq_create_devx_rq_resources(dev, rxq_data);
if (ret) {
DRV_LOG(ERR, "Port %u Rx queue %u RQ creation failure.",
dev->data->port_id, idx);
rte_errno = ENOMEM;
goto error;
}
/* Change queue state to ready. */
ret = mlx5_devx_modify_rq(tmpl, MLX5_RXQ_MOD_RST2RDY);
if (ret)
goto error;
rxq_data->wqes = (void *)(uintptr_t)tmpl->rq_obj.wq.umem_buf;
rxq_data->rq_db = (uint32_t *)(uintptr_t)tmpl->rq_obj.wq.db_rec;
rxq_data->cq_arm_sn = 0;
rxq_data->cq_ci = 0;
mlx5_rxq_initialize(rxq_data);
dev->data->rx_queue_state[idx] = RTE_ETH_QUEUE_STATE_STARTED;
rxq_ctrl->wqn = tmpl->rq_obj.rq->id;
return 0;
error:
ret = rte_errno; /* Save rte_errno before cleanup. */
mlx5_rxq_devx_obj_release(tmpl);
rte_errno = ret; /* Restore rte_errno. */
return -rte_errno;
}
error: patch failed: drivers/net/mlx5/mlx5_devx.c:497
error: while searching for:
rqt_attr->rqt_actual_size = rqt_n;
if (queues == NULL) {
for (i = 0; i < rqt_n; i++)
rqt_attr->rq_list[i] = priv->drop_queue.rxq->rq->id;
return rqt_attr;
}
for (i = 0; i != queues_n; ++i) {
struct mlx5_rxq_data *rxq = (*priv->rxqs)[queues[i]];
struct mlx5_rxq_ctrl *rxq_ctrl =
container_of(rxq, struct mlx5_rxq_ctrl, rxq);
rqt_attr->rq_list[i] = rxq_ctrl->obj->rq_obj.rq->id;
}
MLX5_ASSERT(i > 0);
for (j = 0; i != rqt_n; ++j, ++i)
error: patch failed: drivers/net/mlx5/mlx5_devx.c:570
error: while searching for:
}
}
} else {
rxq_obj_type = priv->drop_queue.rxq->rxq_ctrl->type;
}
memset(tir_attr, 0, sizeof(*tir_attr));
tir_attr->disp_type = MLX5_TIRC_DISP_TYPE_INDIRECT;
error: patch failed: drivers/net/mlx5/mlx5_devx.c:717
error: while searching for:
{
struct mlx5_priv *priv = dev->data->dev_private;
int socket_id = dev->device->numa_node;
struct mlx5_rxq_ctrl *rxq_ctrl;
struct mlx5_rxq_data *rxq_data;
struct mlx5_rxq_obj *rxq = NULL;
int ret;
/*
* Initialize dummy control structures.
* They are required to hold pointers for cleanup
* and are only accessible via drop queue DevX objects.
*/
rxq_ctrl = mlx5_malloc(MLX5_MEM_ZERO, sizeof(*rxq_ctrl),
0, socket_id);
if (rxq_ctrl == NULL) {
error: patch failed: drivers/net/mlx5/mlx5_devx.c:889
error: while searching for:
rte_errno = ENOMEM;
goto error;
}
rxq = mlx5_malloc(MLX5_MEM_ZERO, sizeof(*rxq), 0, socket_id);
if (rxq == NULL) {
DRV_LOG(ERR, "Port %u could not allocate drop queue object",
dev->data->port_id);
rte_errno = ENOMEM;
goto error;
}
rxq->rxq_ctrl = rxq_ctrl;
rxq_ctrl->type = MLX5_RXQ_TYPE_STANDARD;
rxq_ctrl->sh = priv->sh;
rxq_ctrl->obj = rxq;
rxq_data = &rxq_ctrl->rxq;
/* Create CQ using DevX API. */
ret = mlx5_rxq_create_devx_cq_resources(dev, rxq_data);
if (ret != 0) {
DRV_LOG(ERR, "Port %u drop queue CQ creation failed.",
dev->data->port_id);
goto error;
}
/* Create RQ using DevX API. */
ret = mlx5_rxq_create_devx_rq_resources(dev, rxq_data);
if (ret != 0) {
DRV_LOG(ERR, "Port %u drop queue RQ creation failed.",
dev->data->port_id);
error: patch failed: drivers/net/mlx5/mlx5_devx.c:907
error: while searching for:
error:
ret = rte_errno; /* Save rte_errno before cleanup. */
if (rxq != NULL) {
if (rxq->rq_obj.rq != NULL)
mlx5_devx_rq_destroy(&rxq->rq_obj);
if (rxq->cq_obj.cq != NULL)
mlx5_devx_cq_destroy(&rxq->cq_obj);
if (rxq->devx_channel)
mlx5_os_devx_destroy_event_channel
(rxq->devx_channel);
mlx5_free(rxq);
}
if (rxq_ctrl != NULL)
mlx5_free(rxq_ctrl);
rte_errno = ret; /* Restore rte_errno. */
error: patch failed: drivers/net/mlx5/mlx5_devx.c:944
error: while searching for:
mlx5_rxq_devx_obj_drop_release(struct rte_eth_dev *dev)
{
struct mlx5_priv *priv = dev->data->dev_private;
struct mlx5_rxq_obj *rxq = priv->drop_queue.rxq;
struct mlx5_rxq_ctrl *rxq_ctrl = rxq->rxq_ctrl;
mlx5_rxq_devx_obj_release(rxq);
mlx5_free(rxq);
mlx5_free(rxq_ctrl);
priv->drop_queue.rxq = NULL;
}
error: patch failed: drivers/net/mlx5/mlx5_devx.c:969
error: while searching for:
mlx5_devx_tir_destroy(hrxq);
if (hrxq->ind_table->ind_table != NULL)
mlx5_devx_ind_table_destroy(hrxq->ind_table);
if (priv->drop_queue.rxq->rq != NULL)
mlx5_rxq_devx_obj_drop_release(dev);
}
error: patch failed: drivers/net/mlx5/mlx5_devx.c:994
Checking patch drivers/net/mlx5/mlx5_rx.h...
error: drivers/net/mlx5/mlx5_rx.h: does not match index
Checking patch drivers/net/mlx5/mlx5_rxq.c...
error: drivers/net/mlx5/mlx5_rxq.c: does not match index
Checking patch drivers/net/mlx5/mlx5_rxtx.c...
Checking patch drivers/net/mlx5/mlx5_trigger.c...
error: drivers/net/mlx5/mlx5_trigger.c: does not match index
Checking patch drivers/net/mlx5/mlx5_vlan.c...
Applied patch drivers/net/mlx5/linux/mlx5_verbs.c cleanly.
Applied patch drivers/net/mlx5/mlx5.h cleanly.
Applying patch drivers/net/mlx5/mlx5_devx.c with 10 rejects...
Hunk #1 applied cleanly.
Hunk #2 applied cleanly.
Hunk #3 applied cleanly.
Hunk #4 applied cleanly.
Hunk #5 applied cleanly.
Rejected hunk #6.
Hunk #7 applied cleanly.
Rejected hunk #8.
Hunk #9 applied cleanly.
Hunk #10 applied cleanly.
Hunk #11 applied cleanly.
Hunk #12 applied cleanly.
Rejected hunk #13.
Rejected hunk #14.
Rejected hunk #15.
Rejected hunk #16.
Rejected hunk #17.
Rejected hunk #18.
Rejected hunk #19.
Rejected hunk #20.
Applied patch drivers/net/mlx5/mlx5_rxtx.c cleanly.
Applied patch drivers/net/mlx5/mlx5_vlan.c cleanly.
diff a/drivers/net/mlx5/mlx5_devx.c b/drivers/net/mlx5/mlx5_devx.c (rejected hunks)
@@ -224,21 +218,18 @@ mlx5_rx_devx_get_event(struct mlx5_rxq_obj *rxq_obj)
/**
* Create a RQ object using DevX.
*
- * @param dev
- * Pointer to Ethernet device.
- * @param rxq_data
- * RX queue data.
+ * @param rxq
+ * Pointer to Rx queue.
*
* @return
* 0 on success, a negative errno value otherwise and rte_errno is set.
*/
static int
-mlx5_rxq_create_devx_rq_resources(struct rte_eth_dev *dev,
- struct mlx5_rxq_data *rxq_data)
+mlx5_rxq_create_devx_rq_resources(struct mlx5_rxq_priv *rxq)
{
- struct mlx5_priv *priv = dev->data->dev_private;
- struct mlx5_rxq_ctrl *rxq_ctrl =
- container_of(rxq_data, struct mlx5_rxq_ctrl, rxq);
+ struct mlx5_priv *priv = rxq->priv;
+ struct mlx5_rxq_ctrl *rxq_ctrl = rxq->ctrl;
+ struct mlx5_rxq_data *rxq_data = &rxq->ctrl->rxq;
struct mlx5_devx_create_rq_attr rq_attr = { 0 };
uint16_t log_desc_n = rxq_data->elts_n - rxq_data->sges_n;
uint32_t wqe_size, log_wqe_size;
@@ -287,24 +278,22 @@ mlx5_rxq_create_devx_rq_resources(struct rte_eth_dev *dev,
/**
* Create a DevX CQ object for an Rx queue.
*
- * @param dev
- * Pointer to Ethernet device.
- * @param rxq_data
- * RX queue data.
+ * @param rxq
+ * Pointer to Rx queue.
*
* @return
* 0 on success, a negative errno value otherwise and rte_errno is set.
*/
static int
-mlx5_rxq_create_devx_cq_resources(struct rte_eth_dev *dev,
- struct mlx5_rxq_data *rxq_data)
+mlx5_rxq_create_devx_cq_resources(struct mlx5_rxq_priv *rxq)
{
struct mlx5_devx_cq *cq_obj = 0;
struct mlx5_devx_cq_attr cq_attr = { 0 };
- struct mlx5_priv *priv = dev->data->dev_private;
+ struct mlx5_priv *priv = rxq->priv;
struct mlx5_dev_ctx_shared *sh = priv->sh;
- struct mlx5_rxq_ctrl *rxq_ctrl =
- container_of(rxq_data, struct mlx5_rxq_ctrl, rxq);
+ uint16_t port_id = priv->dev_data->port_id;
+ struct mlx5_rxq_ctrl *rxq_ctrl = rxq->ctrl;
+ struct mlx5_rxq_data *rxq_data = &rxq_ctrl->rxq;
unsigned int cqe_n = mlx5_rxq_cqe_num(rxq_data);
uint32_t log_cqe_n;
uint16_t event_nums[1] = { 0 };
@@ -497,34 +478,32 @@ mlx5_rxq_devx_obj_new(struct rte_eth_dev *dev, uint16_t idx)
tmpl->fd = mlx5_os_get_devx_channel_fd(tmpl->devx_channel);
}
/* Create CQ using DevX API. */
- ret = mlx5_rxq_create_devx_cq_resources(dev, rxq_data);
+ ret = mlx5_rxq_create_devx_cq_resources(rxq);
if (ret) {
DRV_LOG(ERR, "Failed to create CQ.");
goto error;
}
/* Create RQ using DevX API. */
- ret = mlx5_rxq_create_devx_rq_resources(dev, rxq_data);
+ ret = mlx5_rxq_create_devx_rq_resources(rxq);
if (ret) {
DRV_LOG(ERR, "Port %u Rx queue %u RQ creation failure.",
- dev->data->port_id, idx);
+ priv->dev_data->port_id, rxq->idx);
rte_errno = ENOMEM;
goto error;
}
/* Change queue state to ready. */
- ret = mlx5_devx_modify_rq(tmpl, MLX5_RXQ_MOD_RST2RDY);
+ ret = mlx5_devx_modify_rq(rxq, MLX5_RXQ_MOD_RST2RDY);
if (ret)
goto error;
- rxq_data->wqes = (void *)(uintptr_t)tmpl->rq_obj.wq.umem_buf;
- rxq_data->rq_db = (uint32_t *)(uintptr_t)tmpl->rq_obj.wq.db_rec;
- rxq_data->cq_arm_sn = 0;
- rxq_data->cq_ci = 0;
+ rxq_data->wqes = (void *)(uintptr_t)rxq->devx_rq.wq.umem_buf;
+ rxq_data->rq_db = (uint32_t *)(uintptr_t)rxq->devx_rq.wq.db_rec;
mlx5_rxq_initialize(rxq_data);
- dev->data->rx_queue_state[idx] = RTE_ETH_QUEUE_STATE_STARTED;
- rxq_ctrl->wqn = tmpl->rq_obj.rq->id;
+ priv->dev_data->rx_queue_state[rxq->idx] = RTE_ETH_QUEUE_STATE_STARTED;
+ rxq_ctrl->wqn = rxq->devx_rq.rq->id;
return 0;
error:
ret = rte_errno; /* Save rte_errno before cleanup. */
- mlx5_rxq_devx_obj_release(tmpl);
+ mlx5_rxq_devx_obj_release(rxq);
rte_errno = ret; /* Restore rte_errno. */
return -rte_errno;
}
@@ -570,15 +549,15 @@ mlx5_devx_ind_table_create_rqt_attr(struct rte_eth_dev *dev,
rqt_attr->rqt_actual_size = rqt_n;
if (queues == NULL) {
for (i = 0; i < rqt_n; i++)
- rqt_attr->rq_list[i] = priv->drop_queue.rxq->rq->id;
+ rqt_attr->rq_list[i] =
+ priv->drop_queue.rxq->devx_rq.rq->id;
return rqt_attr;
}
for (i = 0; i != queues_n; ++i) {
- struct mlx5_rxq_data *rxq = (*priv->rxqs)[queues[i]];
- struct mlx5_rxq_ctrl *rxq_ctrl =
- container_of(rxq, struct mlx5_rxq_ctrl, rxq);
+ struct mlx5_rxq_priv *rxq = mlx5_rxq_get(dev, queues[i]);
- rqt_attr->rq_list[i] = rxq_ctrl->obj->rq_obj.rq->id;
+ MLX5_ASSERT(rxq != NULL);
+ rqt_attr->rq_list[i] = rxq->devx_rq.rq->id;
}
MLX5_ASSERT(i > 0);
for (j = 0; i != rqt_n; ++j, ++i)
@@ -717,7 +696,7 @@ mlx5_devx_tir_attr_set(struct rte_eth_dev *dev, const uint8_t *rss_key,
}
}
} else {
- rxq_obj_type = priv->drop_queue.rxq->rxq_ctrl->type;
+ rxq_obj_type = priv->drop_queue.rxq->ctrl->type;
}
memset(tir_attr, 0, sizeof(*tir_attr));
tir_attr->disp_type = MLX5_TIRC_DISP_TYPE_INDIRECT;
@@ -889,16 +868,23 @@ mlx5_rxq_devx_obj_drop_create(struct rte_eth_dev *dev)
{
struct mlx5_priv *priv = dev->data->dev_private;
int socket_id = dev->device->numa_node;
- struct mlx5_rxq_ctrl *rxq_ctrl;
- struct mlx5_rxq_data *rxq_data;
- struct mlx5_rxq_obj *rxq = NULL;
+ struct mlx5_rxq_priv *rxq;
+ struct mlx5_rxq_ctrl *rxq_ctrl = NULL;
+ struct mlx5_rxq_obj *rxq_obj = NULL;
int ret;
/*
- * Initialize dummy control structures.
+ * Initialize dummy Rx queue structures.
* They are required to hold pointers for cleanup
* and are only accessible via drop queue DevX objects.
*/
+ rxq = mlx5_malloc(MLX5_MEM_ZERO, sizeof(*rxq), 0, socket_id);
+ if (rxq == NULL) {
+ DRV_LOG(ERR, "Port %u could not allocate drop queue",
+ dev->data->port_id);
+ rte_errno = ENOMEM;
+ goto error;
+ }
rxq_ctrl = mlx5_malloc(MLX5_MEM_ZERO, sizeof(*rxq_ctrl),
0, socket_id);
if (rxq_ctrl == NULL) {
@@ -907,27 +893,29 @@ mlx5_rxq_devx_obj_drop_create(struct rte_eth_dev *dev)
rte_errno = ENOMEM;
goto error;
}
- rxq = mlx5_malloc(MLX5_MEM_ZERO, sizeof(*rxq), 0, socket_id);
- if (rxq == NULL) {
+ rxq_obj = mlx5_malloc(MLX5_MEM_ZERO, sizeof(*rxq_obj), 0, socket_id);
+ if (rxq_obj == NULL) {
DRV_LOG(ERR, "Port %u could not allocate drop queue object",
dev->data->port_id);
rte_errno = ENOMEM;
goto error;
}
- rxq->rxq_ctrl = rxq_ctrl;
+ rxq->priv = priv;
+ rxq->ctrl = rxq_ctrl;
+ LIST_INSERT_HEAD(&rxq_ctrl->owners, rxq, owner_entry);
+ rxq_obj->rxq_ctrl = rxq_ctrl;
rxq_ctrl->type = MLX5_RXQ_TYPE_STANDARD;
rxq_ctrl->sh = priv->sh;
- rxq_ctrl->obj = rxq;
- rxq_data = &rxq_ctrl->rxq;
+ rxq_ctrl->obj = rxq_obj;
/* Create CQ using DevX API. */
- ret = mlx5_rxq_create_devx_cq_resources(dev, rxq_data);
+ ret = mlx5_rxq_create_devx_cq_resources(rxq);
if (ret != 0) {
DRV_LOG(ERR, "Port %u drop queue CQ creation failed.",
dev->data->port_id);
goto error;
}
/* Create RQ using DevX API. */
- ret = mlx5_rxq_create_devx_rq_resources(dev, rxq_data);
+ ret = mlx5_rxq_create_devx_rq_resources(rxq);
if (ret != 0) {
DRV_LOG(ERR, "Port %u drop queue RQ creation failed.",
dev->data->port_id);
@@ -944,15 +932,18 @@ mlx5_rxq_devx_obj_drop_create(struct rte_eth_dev *dev)
error:
ret = rte_errno; /* Save rte_errno before cleanup. */
if (rxq != NULL) {
- if (rxq->rq_obj.rq != NULL)
- mlx5_devx_rq_destroy(&rxq->rq_obj);
- if (rxq->cq_obj.cq != NULL)
- mlx5_devx_cq_destroy(&rxq->cq_obj);
- if (rxq->devx_channel)
- mlx5_os_devx_destroy_event_channel
- (rxq->devx_channel);
+ if (rxq->devx_rq.rq != NULL)
+ mlx5_devx_rq_destroy(&rxq->devx_rq);
mlx5_free(rxq);
}
+ if (rxq_obj != NULL) {
+ if (rxq_obj->cq_obj.cq != NULL)
+ mlx5_devx_cq_destroy(&rxq_obj->cq_obj);
+ if (rxq_obj->devx_channel)
+ mlx5_os_devx_destroy_event_channel
+ (rxq_obj->devx_channel);
+ mlx5_free(rxq_obj);
+ }
if (rxq_ctrl != NULL)
mlx5_free(rxq_ctrl);
rte_errno = ret; /* Restore rte_errno. */
@@ -969,12 +960,14 @@ static void
mlx5_rxq_devx_obj_drop_release(struct rte_eth_dev *dev)
{
struct mlx5_priv *priv = dev->data->dev_private;
- struct mlx5_rxq_obj *rxq = priv->drop_queue.rxq;
- struct mlx5_rxq_ctrl *rxq_ctrl = rxq->rxq_ctrl;
+ struct mlx5_rxq_priv *rxq = priv->drop_queue.rxq;
+ struct mlx5_rxq_ctrl *rxq_ctrl = rxq->ctrl;
+ struct mlx5_rxq_obj *rxq_obj = rxq_ctrl->obj;
mlx5_rxq_devx_obj_release(rxq);
mlx5_free(rxq);
mlx5_free(rxq_ctrl);
+ mlx5_free(rxq_obj);
priv->drop_queue.rxq = NULL;
}
@@ -994,7 +987,7 @@ mlx5_devx_drop_action_destroy(struct rte_eth_dev *dev)
mlx5_devx_tir_destroy(hrxq);
if (hrxq->ind_table->ind_table != NULL)
mlx5_devx_ind_table_destroy(hrxq->ind_table);
- if (priv->drop_queue.rxq->rq != NULL)
+ if (priv->drop_queue.rxq != NULL)
mlx5_rxq_devx_obj_drop_release(dev);
}
Checking patch drivers/net/mlx5/linux/mlx5_verbs.c...
error: drivers/net/mlx5/linux/mlx5_verbs.c: does not match index
Checking patch drivers/net/mlx5/mlx5.c...
Checking patch drivers/net/mlx5/mlx5.h...
error: drivers/net/mlx5/mlx5.h: does not match index
Checking patch drivers/net/mlx5/mlx5_devx.c...
error: drivers/net/mlx5/mlx5_devx.c: does not match index
Checking patch drivers/net/mlx5/mlx5_ethdev.c...
Checking patch drivers/net/mlx5/mlx5_flow.c...
error: while searching for:
* 0 on success, a negative errno code on error.
*/
static int
mlx5_validate_rss_queues(const struct rte_eth_dev *dev,
const uint16_t *queues, uint32_t queues_n,
const char **error, uint32_t *queue_idx)
{
error: patch failed: drivers/net/mlx5/mlx5_flow.c:1578
error: while searching for:
*queue_idx = i;
return -EINVAL;
}
if (!(*priv->rxqs)[queues[i]]) {
*error = "queue is not configured";
*queue_idx = i;
return -EINVAL;
}
rxq_ctrl = container_of((*priv->rxqs)[queues[i]],
struct mlx5_rxq_ctrl, rxq);
if (i == 0)
rxq_type = rxq_ctrl->type;
if (rxq_type != rxq_ctrl->type) {
error: patch failed: drivers/net/mlx5/mlx5_flow.c:1594
Checking patch drivers/net/mlx5/mlx5_rss.c...
Checking patch drivers/net/mlx5/mlx5_rx.c...
error: drivers/net/mlx5/mlx5_rx.c: does not match index
Checking patch drivers/net/mlx5/mlx5_rx.h...
error: drivers/net/mlx5/mlx5_rx.h: does not match index
Checking patch drivers/net/mlx5/mlx5_rxq.c...
error: drivers/net/mlx5/mlx5_rxq.c: does not match index
Checking patch drivers/net/mlx5/mlx5_rxtx_vec.c...
error: drivers/net/mlx5/mlx5_rxtx_vec.c: does not match index
Checking patch drivers/net/mlx5/mlx5_stats.c...
Checking patch drivers/net/mlx5/mlx5_trigger.c...
error: drivers/net/mlx5/mlx5_trigger.c: does not match index
Applied patch drivers/net/mlx5/mlx5.c cleanly.
Applied patch drivers/net/mlx5/mlx5_ethdev.c cleanly.
Applying patch drivers/net/mlx5/mlx5_flow.c with 2 rejects...
Hunk #1 applied cleanly.
Hunk #2 applied cleanly.
Hunk #3 applied cleanly.
Hunk #4 applied cleanly.
Hunk #5 applied cleanly.
Rejected hunk #6.
Rejected hunk #7.
Applied patch drivers/net/mlx5/mlx5_rss.c cleanly.
Applied patch drivers/net/mlx5/mlx5_stats.c cleanly.
diff a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c (rejected hunks)
@@ -1578,7 +1580,7 @@ mlx5_flow_validate_action_queue(const struct rte_flow_action *action,
* 0 on success, a negative errno code on error.
*/
static int
-mlx5_validate_rss_queues(const struct rte_eth_dev *dev,
+mlx5_validate_rss_queues(struct rte_eth_dev *dev,
const uint16_t *queues, uint32_t queues_n,
const char **error, uint32_t *queue_idx)
{
@@ -1594,13 +1596,12 @@ mlx5_validate_rss_queues(const struct rte_eth_dev *dev,
*queue_idx = i;
return -EINVAL;
}
- if (!(*priv->rxqs)[queues[i]]) {
+ rxq_ctrl = mlx5_rxq_ctrl_get(dev, queues[i]);
+ if (rxq_ctrl == NULL) {
*error = "queue is not configured";
*queue_idx = i;
return -EINVAL;
}
- rxq_ctrl = container_of((*priv->rxqs)[queues[i]],
- struct mlx5_rxq_ctrl, rxq);
if (i == 0)
rxq_type = rxq_ctrl->type;
if (rxq_type != rxq_ctrl->type) {
Checking patch doc/guides/nics/features/mlx5.ini...
Checking patch doc/guides/nics/mlx5.rst...
Checking patch drivers/net/mlx5/linux/mlx5_os.c...
Checking patch drivers/net/mlx5/linux/mlx5_verbs.c...
error: drivers/net/mlx5/linux/mlx5_verbs.c: does not match index
Checking patch drivers/net/mlx5/mlx5.h...
error: drivers/net/mlx5/mlx5.h: does not match index
Checking patch drivers/net/mlx5/mlx5_devx.c...
error: drivers/net/mlx5/mlx5_devx.c: does not match index
Checking patch drivers/net/mlx5/mlx5_ethdev.c...
error: drivers/net/mlx5/mlx5_ethdev.c: does not match index
Checking patch drivers/net/mlx5/mlx5_rx.h...
error: drivers/net/mlx5/mlx5_rx.h: does not match index
Checking patch drivers/net/mlx5/mlx5_rxq.c...
error: drivers/net/mlx5/mlx5_rxq.c: does not match index
Checking patch drivers/net/mlx5/mlx5_trigger.c...
error: drivers/net/mlx5/mlx5_trigger.c: does not match index
Applied patch doc/guides/nics/features/mlx5.ini cleanly.
Applied patch doc/guides/nics/mlx5.rst cleanly.
Applied patch drivers/net/mlx5/linux/mlx5_os.c cleanly.
Checking patch drivers/net/mlx5/mlx5_devx.c...
error: drivers/net/mlx5/mlx5_devx.c: does not match index
Checking patch drivers/net/mlx5/mlx5_rx.c...
error: drivers/net/mlx5/mlx5_rx.c: does not match index
Checking patch drivers/net/mlx5/mlx5_rxq.c...
error: drivers/net/mlx5/mlx5_rxq.c: does not match index
Checking patch drivers/net/mlx5/mlx5_rxtx_vec_altivec.h...
Checking patch drivers/net/mlx5/mlx5_rxtx_vec_neon.h...
Checking patch drivers/net/mlx5/mlx5_rxtx_vec_sse.h...
Applied patch drivers/net/mlx5/mlx5_rxtx_vec_altivec.h cleanly.
Applied patch drivers/net/mlx5/mlx5_rxtx_vec_neon.h cleanly.
Applied patch drivers/net/mlx5/mlx5_rxtx_vec_sse.h cleanly.
https://lab.dpdk.org/results/dashboard/patchsets/19471/
UNH-IOL DPDK Community Lab
More information about the test-report
mailing list