X-Git-Url: http://git.droids-corp.org/?p=dpdk.git;a=blobdiff_plain;f=drivers%2Fnet%2Fmlx5%2Fmlx5_rxq.c;h=79eb8f8d72d7f1ac4d017238d6a0eff377ac6e48;hp=c78e522669b915cfa8b25707df27580166fc9bc7;hb=1ccc4790148f6d6c8f8f45f45345a919b45b25a9;hpb=71fa6a99643d167df38605d53c3573a435107d01 diff --git a/drivers/net/mlx5/mlx5_rxq.c b/drivers/net/mlx5/mlx5_rxq.c index c78e522669..79eb8f8d72 100644 --- a/drivers/net/mlx5/mlx5_rxq.c +++ b/drivers/net/mlx5/mlx5_rxq.c @@ -1193,12 +1193,16 @@ mlx5_rx_intr_disable(struct rte_eth_dev *dev, uint16_t rx_queue_id) mlx5_glue->ack_cq_events(rxq_obj->ibv_cq, 1); } else if (rxq_obj->type == MLX5_RXQ_OBJ_TYPE_DEVX_RQ) { #ifdef HAVE_IBV_DEVX_EVENT - struct mlx5dv_devx_async_event_hdr *event_data = NULL; + union { + struct mlx5dv_devx_async_event_hdr event_resp; + uint8_t buf[sizeof(struct mlx5dv_devx_async_event_hdr) + + 128]; + } out; ret = mlx5_glue->devx_get_event - (rxq_obj->devx_channel, event_data, - sizeof(struct mlx5dv_devx_async_event_hdr)); - if (ret < 0 || event_data->cookie != + (rxq_obj->devx_channel, &out.event_resp, + sizeof(out.buf)); + if (ret < 0 || out.event_resp.cookie != (uint64_t)(uintptr_t)rxq_obj->devx_cq) goto exit; #endif /* HAVE_IBV_DEVX_EVENT */ @@ -1646,6 +1650,8 @@ mlx5_devx_cq_new(struct rte_eth_dev *dev, unsigned int cqe_n, uint16_t idx, memset((void *)(uintptr_t)rxq_data->cqes, 0xFF, cq_size); return cq_obj; error: + if (cq_obj) + mlx5_devx_cmd_destroy(cq_obj); rxq_release_devx_cq_resources(rxq_ctrl); return NULL; }