[dpdk-test-report] |WARNING| pw103749-103761 [PATCH] [v4, 14/14] net/mlx5: add shared Rx queue port datapath support
dpdklab at iol.unh.edu
dpdklab at iol.unh.edu
Thu Nov 4 13:49:03 CET 2021
Test-Label: iol-testing
Test-Status: WARNING
http://dpdk.org/patch/103749
_apply patch failure_
Submitter: Xueming Li <xuemingl at nvidia.com>
Date: Thursday, November 04 2021 12:33:20
Applied on: CommitID:5b08ac4e4a8dbc95f52b871b62a97fda57fa477e
Apply patch set 103749-103761 failed:
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:918
Checking patch drivers/net/mlx5/mlx5_rx.c...
Checking patch drivers/net/mlx5/mlx5_rx.h...
Hunk #3 succeeded at 317 (offset -4 lines).
Checking patch drivers/net/mlx5/mlx5_rxq.c...
Checking patch drivers/net/mlx5/mlx5_rxtx_vec.c...
Checking patch drivers/net/mlx5/mlx5_trigger.c...
Hunk #1 succeeded at 130 (offset -1 lines).
Hunk #2 succeeded at 149 (offset -1 lines).
Hunk #3 succeeded at 213 (offset -1 lines).
Applying patch drivers/net/mlx5/mlx5_devx.c with 1 reject...
Rejected hunk #1.
Applied patch drivers/net/mlx5/mlx5_rx.c cleanly.
Applied patch drivers/net/mlx5/mlx5_rx.h cleanly.
Applied patch drivers/net/mlx5/mlx5_rxq.c cleanly.
Applied patch drivers/net/mlx5/mlx5_rxtx_vec.c cleanly.
Applied patch drivers/net/mlx5/mlx5_trigger.c cleanly.
diff a/drivers/net/mlx5/mlx5_devx.c b/drivers/net/mlx5/mlx5_devx.c (rejected hunks)
@@ -918,7 +918,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...
Hunk #1 succeeded at 297 (offset -3 lines).
Hunk #2 succeeded at 1234 (offset -33 lines).
Hunk #3 succeeded at 1315 (offset -33 lines).
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_common_device *cdev = priv->sh->cdev;
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
error: while searching for:
rq_attr.wq_attr.pd = cdev->pdn;
rq_attr.counter_set_id = priv->counter_set_id;
/* Create RQ using DevX API. */
return mlx5_devx_rq_create(cdev->ctx, &rxq_ctrl->obj->rq_obj, wqe_size,
log_desc_n, &rq_attr, rxq_ctrl->socket);
}
/**
* 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:281
Hunk #8 succeeded at 340 (offset 5 lines).
Hunk #9 succeeded at 349 (offset 5 lines).
Hunk #10 succeeded at 392 (offset 5 lines).
Hunk #11 succeeded at 437 (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:498
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:571
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:719
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;
/*
error: patch failed: drivers/net/mlx5/mlx5_devx.c:891
error: while searching for:
* 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:901
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:909
error: while searching for:
return 0;
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. */
return -rte_errno;
}
error: patch failed: drivers/net/mlx5/mlx5_devx.c:945
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:971
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:996
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 11 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.
Hunk #8 applied cleanly.
Hunk #9 applied cleanly.
Hunk #10 applied cleanly.
Hunk #11 applied cleanly.
Rejected hunk #12.
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,22 +218,19 @@ 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_priv *priv = rxq->priv;
struct mlx5_common_device *cdev = priv->sh->cdev;
- struct mlx5_rxq_ctrl *rxq_ctrl =
- container_of(rxq_data, struct mlx5_rxq_ctrl, rxq);
+ 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;
@@ -281,31 +272,29 @@ mlx5_rxq_create_devx_rq_resources(struct rte_eth_dev *dev,
rq_attr.wq_attr.pd = cdev->pdn;
rq_attr.counter_set_id = priv->counter_set_id;
/* Create RQ using DevX API. */
- return mlx5_devx_rq_create(cdev->ctx, &rxq_ctrl->obj->rq_obj, wqe_size,
+ return mlx5_devx_rq_create(cdev->ctx, &rxq->devx_rq, wqe_size,
log_desc_n, &rq_attr, rxq_ctrl->socket);
}
/**
* 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 };
@@ -498,34 +479,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;
}
@@ -571,15 +550,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)
@@ -719,7 +698,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;
@@ -891,9 +870,9 @@ 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;
/*
@@ -901,6 +880,13 @@ mlx5_rxq_devx_obj_drop_create(struct rte_eth_dev *dev)
* 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 private",
+ 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) {
@@ -909,27 +895,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_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;
+ rxq->ctrl = rxq_ctrl;
+ rxq->priv = priv;
+ LIST_INSERT_HEAD(&rxq_ctrl->owners, rxq, owner_entry);
/* 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);
@@ -945,18 +933,20 @@ mlx5_rxq_devx_obj_drop_create(struct rte_eth_dev *dev)
return 0;
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)
+ if (rxq != NULL && rxq->devx_rq.rq != NULL)
+ mlx5_devx_rq_destroy(&rxq->devx_rq);
+ 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->devx_channel);
- mlx5_free(rxq);
+ (rxq_obj->devx_channel);
+ mlx5_free(rxq_obj);
}
if (rxq_ctrl != NULL)
mlx5_free(rxq_ctrl);
+ if (rxq != NULL)
+ mlx5_free(rxq);
rte_errno = ret; /* Restore rte_errno. */
return -rte_errno;
}
@@ -971,12 +961,13 @@ 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;
mlx5_rxq_devx_obj_release(rxq);
- mlx5_free(rxq);
+ mlx5_free(rxq_ctrl->obj);
mlx5_free(rxq_ctrl);
+ mlx5_free(rxq);
priv->drop_queue.rxq = NULL;
}
@@ -996,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->devx_rq.rq != 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...
error: while searching for:
/* Free the eCPRI flex parser resource. */
mlx5_flex_parser_ecpri_release(dev);
mlx5_flex_item_port_cleanup(dev);
if (priv->rxqs != NULL) {
/* XXX race condition if mlx5_rx_burst() is still running. */
rte_delay_us_sleep(1000);
for (i = 0; (i != priv->rxqs_n); ++i)
mlx5_rxq_release(dev, i);
priv->rxqs_n = 0;
priv->rxqs = NULL;
}
if (priv->representor) {
/* Each representor has a dedicated interrupts handler */
mlx5_free(dev->intr_handle);
dev->intr_handle = NULL;
}
if (priv->rxq_privs != NULL) {
mlx5_free(priv->rxq_privs);
priv->rxq_privs = NULL;
}
error: patch failed: drivers/net/mlx5/mlx5.c:1687
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...
Hunk #1 succeeded at 1194 (offset -16 lines).
Hunk #2 succeeded at 1290 (offset -16 lines).
Hunk #3 succeeded at 1355 (offset -16 lines).
Hunk #4 succeeded at 1378 (offset -16 lines).
Hunk #5 succeeded at 1577 (offset -16 lines).
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:1622
error: while searching for:
uint32_t i;
for (i = 0; i != queues_n; ++i) {
struct mlx5_rxq_ctrl *rxq_ctrl;
if (queues[i] >= priv->rxqs_n) {
*error = "queue index out of range";
*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:1631
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
Applying patch drivers/net/mlx5/mlx5.c with 1 reject...
Rejected hunk #1.
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.c b/drivers/net/mlx5/mlx5.c (rejected hunks)
@@ -1687,20 +1687,12 @@ mlx5_dev_close(struct rte_eth_dev *dev)
/* Free the eCPRI flex parser resource. */
mlx5_flex_parser_ecpri_release(dev);
mlx5_flex_item_port_cleanup(dev);
- if (priv->rxqs != NULL) {
+ if (priv->rxq_privs != NULL) {
/* XXX race condition if mlx5_rx_burst() is still running. */
rte_delay_us_sleep(1000);
for (i = 0; (i != priv->rxqs_n); ++i)
mlx5_rxq_release(dev, i);
priv->rxqs_n = 0;
- priv->rxqs = NULL;
- }
- if (priv->representor) {
- /* Each representor has a dedicated interrupts handler */
- mlx5_free(dev->intr_handle);
- dev->intr_handle = NULL;
- }
- if (priv->rxq_privs != NULL) {
mlx5_free(priv->rxq_privs);
priv->rxq_privs = NULL;
}
diff a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c (rejected hunks)
@@ -1622,7 +1624,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)
{
@@ -1631,20 +1633,19 @@ mlx5_validate_rss_queues(const struct rte_eth_dev *dev,
uint32_t i;
for (i = 0; i != queues_n; ++i) {
- struct mlx5_rxq_ctrl *rxq_ctrl;
+ struct mlx5_rxq_ctrl *rxq_ctrl = mlx5_rxq_ctrl_get(dev,
+ queues[i]);
if (queues[i] >= priv->rxqs_n) {
*error = "queue index out of range";
*queue_idx = i;
return -EINVAL;
}
- if (!(*priv->rxqs)[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...
Hunk #2 succeeded at 465 (offset -1 lines).
Checking patch drivers/net/mlx5/linux/mlx5_os.c...
Hunk #1 succeeded at 410 (offset -10 lines).
Hunk #2 succeeded at 485 (offset -10 lines).
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/20006/
UNH-IOL DPDK Community Lab
More information about the test-report
mailing list