Lines Matching refs:srq
36 #include <linux/mlx4/srq.h>
46 struct mlx4_srq *srq;
49 srq = radix_tree_lookup(&srq_table->tree, srqn & (dev->caps.num_srqs - 1));
51 if (srq)
52 refcount_inc(&srq->refcount);
58 srq->event(srq, event_type);
60 if (refcount_dec_and_test(&srq->refcount))
61 complete(&srq->free);
163 struct mlx4_mtt *mtt, u64 db_rec, struct mlx4_srq *srq)
171 err = mlx4_srq_alloc_icm(dev, &srq->srqn);
176 err = radix_tree_insert(&srq_table->tree, srq->srqn, srq);
188 srq_context->state_logsize_srqn = cpu_to_be32((ilog2(srq->max) << 24) |
189 srq->srqn);
190 srq_context->logstride = srq->wqe_shift - 4;
201 err = mlx4_SW2HW_SRQ(dev, mailbox, srq->srqn);
206 refcount_set(&srq->refcount, 1);
207 init_completion(&srq->free);
213 radix_tree_delete(&srq_table->tree, srq->srqn);
217 mlx4_srq_free_icm(dev, srq->srqn);
222 void mlx4_srq_free(struct mlx4_dev *dev, struct mlx4_srq *srq)
227 err = mlx4_HW2SW_SRQ(dev, NULL, srq->srqn);
229 mlx4_warn(dev, "HW2SW_SRQ failed (%d) for SRQN %06x\n", err, srq->srqn);
232 radix_tree_delete(&srq_table->tree, srq->srqn);
235 if (refcount_dec_and_test(&srq->refcount))
236 complete(&srq->free);
237 wait_for_completion(&srq->free);
239 mlx4_srq_free_icm(dev, srq->srqn);
243 int mlx4_srq_arm(struct mlx4_dev *dev, struct mlx4_srq *srq, int limit_watermark)
245 return mlx4_ARM_SRQ(dev, srq->srqn, limit_watermark);
249 int mlx4_srq_query(struct mlx4_dev *dev, struct mlx4_srq *srq, int *limit_watermark)
261 err = mlx4_QUERY_SRQ(dev, mailbox, srq->srqn);
295 struct mlx4_srq *srq;
298 srq = radix_tree_lookup(&srq_table->tree,
302 return srq;