Test-Label: iol-testing Test-Status: WARNING http://dpdk.org/patch/101875 _apply patch failure_ Submitter: Xueming(Steven) Li 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