Lines Matching defs:rwq

932 			      struct mlx5_rwq *rwq,
947 if (rwq->wq_sig)
956 rwq->rq.wqe_cnt = wq_size / wqe_size;
957 rwq->rq.wqe_shift = mlx5_ilog2(wqe_size);
958 rwq->rq.max_post = 1 << mlx5_ilog2(wq_size / wqe_size);
960 ((rwq->wq_sig) ? sizeof(struct mlx5_rwqe_sig) : 0);
961 rwq->rq.max_gs = scat_spc / sizeof(struct mlx5_wqe_data_seg);
2021 static void mlx5_free_rwq_buf(struct mlx5_rwq *rwq, struct ibv_context *context)
2025 mlx5_free_actual_buf(ctx, &rwq->buf);
2026 free(rwq->rq.wrid);
2030 struct mlx5_rwq *rwq,
2036 rwq->rq.wrid = malloc(rwq->rq.wqe_cnt * sizeof(uint64_t));
2037 if (!rwq->rq.wrid) {
2042 err = mlx5_alloc_prefered_buf(to_mctx(context), &rwq->buf,
2043 align(rwq->buf_size, to_mdev
2050 free(rwq->rq.wrid);
2064 struct mlx5_rwq *rwq;
2076 rwq = calloc(1, sizeof(*rwq));
2077 if (!rwq)
2080 ret = ibv_init_wq(&rwq->wq);
2084 rwq->wq_sig = rwq_sig_enabled(context);
2085 if (rwq->wq_sig)
2088 ret = mlx5_calc_rwq_size(ctx, rwq, attr);
2094 rwq->buf_size = ret;
2095 if (mlx5_alloc_rwq_buf(context, rwq, ret))
2098 mlx5_init_rwq_indices(rwq);
2100 if (mlx5_spinlock_init(&rwq->rq.lock))
2103 rwq->db = mlx5_alloc_dbrec(ctx);
2104 if (!rwq->db)
2107 rwq->db[MLX5_RCV_DBR] = 0;
2108 rwq->db[MLX5_SND_DBR] = 0;
2109 rwq->pbuff = rwq->buf.buf + rwq->rq.offset;
2110 rwq->recv_db = &rwq->db[MLX5_RCV_DBR];
2111 cmd.drv.buf_addr = (uintptr_t)rwq->buf.buf;
2112 cmd.drv.db_addr = (uintptr_t)rwq->db;
2113 cmd.drv.rq_wqe_count = rwq->rq.wqe_cnt;
2114 cmd.drv.rq_wqe_shift = rwq->rq.wqe_shift;
2115 usr_idx = mlx5_store_uidx(ctx, rwq);
2122 err = ibv_cmd_create_wq(context, attr, &rwq->wq, &cmd.ibv_cmd,
2130 rwq->rsc.type = MLX5_RSC_TYPE_RWQ;
2131 rwq->rsc.rsn = cmd.drv.user_index;
2133 rwq->wq.post_recv = mlx5_post_wq_recv;
2134 return &rwq->wq;
2139 mlx5_free_db(to_mctx(context), rwq->db);
2141 mlx5_spinlock_destroy(&rwq->rq.lock);
2143 mlx5_free_rwq_buf(rwq, context);
2145 ibv_cleanup_wq(&rwq->wq);
2147 free(rwq);
2154 struct mlx5_rwq *rwq = to_mrwq(wq);
2165 rwq->rsc.rsn, NULL);
2167 mlx5_init_rwq_indices(rwq);
2168 rwq->db[MLX5_RCV_DBR] = 0;
2169 rwq->db[MLX5_SND_DBR] = 0;
2178 struct mlx5_rwq *rwq = to_mrwq(wq);
2186 __mlx5_cq_clean(to_mcq(wq->cq), rwq->rsc.rsn, NULL);
2188 mlx5_clear_uidx(to_mctx(wq->context), rwq->rsc.rsn);
2189 mlx5_free_db(to_mctx(wq->context), rwq->db);
2190 mlx5_spinlock_destroy(&rwq->rq.lock);
2191 mlx5_free_rwq_buf(rwq, wq->context);
2192 ibv_cleanup_wq(&rwq->wq);
2193 free(rwq);