struct mlx5_priv *priv = dev->data->dev_private;
unsigned int i;
int ret = 0;
+ enum mlx5_rxq_obj_type obj_type = MLX5_RXQ_OBJ_TYPE_IBV;
+ for (i = 0; i < priv->rxqs_n; ++i) {
+ if ((*priv->rxqs)[i]->lro) {
+ obj_type = MLX5_RXQ_OBJ_TYPE_DEVX_RQ;
+ break;
+ }
+ }
/* Allocate/reuse/resize mempool for Multi-Packet RQ. */
if (mlx5_mprq_alloc_mp(dev)) {
/* Should not release Rx queues but return immediately. */
ret = rxq_alloc_elts(rxq_ctrl);
if (ret)
goto error;
- rxq_ctrl->obj = mlx5_rxq_obj_new(dev, i);
+ rxq_ctrl->obj = mlx5_rxq_obj_new(dev, i, obj_type);
if (!rxq_ctrl->obj)
goto error;
- rxq_ctrl->wqn = rxq_ctrl->obj->wq->wq_num;
+ if (obj_type == MLX5_RXQ_OBJ_TYPE_IBV)
+ rxq_ctrl->wqn = rxq_ctrl->obj->wq->wq_num;
+ else if (obj_type == MLX5_RXQ_OBJ_TYPE_DEVX_RQ)
+ rxq_ctrl->wqn = rxq_ctrl->obj->rq->id;
}
return 0;
error: