Lines Matching refs:cq

40 #include <dev/mlx4/cq.h>
56 struct mlx4_cq *cq;
58 cq = radix_tree_lookup(&mlx4_priv(dev)->cq_table.tree,
60 if (!cq) {
65 ++cq->arm_sn;
67 cq->comp(cq);
73 struct mlx4_cq *cq;
77 cq = radix_tree_lookup(&cq_table->tree, cqn & (dev->caps.num_cqs - 1));
78 if (cq)
79 atomic_inc(&cq->refcount);
83 if (!cq) {
88 cq->event(cq, event_type);
90 if (atomic_dec_and_test(&cq->refcount))
91 complete(&cq->free);
117 int mlx4_cq_modify(struct mlx4_dev *dev, struct mlx4_cq *cq,
132 err = mlx4_MODIFY_CQ(dev, mailbox, cq->cqn, 1);
139 int mlx4_cq_resize(struct mlx4_dev *dev, struct mlx4_cq *cq,
158 err = mlx4_MODIFY_CQ(dev, mailbox, cq->cqn, 0);
232 mlx4_warn(dev, "Failed freeing cq:%d\n", cqn);
239 struct mlx4_cq *cq, unsigned vector, int collapsed,
252 cq->vector = vector;
254 err = mlx4_cq_alloc_icm(dev, &cq->cqn);
259 err = radix_tree_insert(&cq_table->tree, cq->cqn, cq);
286 err = mlx4_SW2HW_CQ(dev, mailbox, cq->cqn);
291 cq->cons_index = 0;
292 cq->arm_sn = 1;
293 cq->uar = uar;
294 atomic_set(&cq->refcount, 1);
295 init_completion(&cq->free);
297 cq->irq = priv->eq_table.eq[MLX4_CQ_TO_EQ_VECTOR(vector)].irq;
302 radix_tree_delete(&cq_table->tree, cq->cqn);
306 mlx4_cq_free_icm(dev, cq->cqn);
312 void mlx4_cq_free(struct mlx4_dev *dev, struct mlx4_cq *cq)
318 err = mlx4_HW2SW_CQ(dev, NULL, cq->cqn);
320 mlx4_warn(dev, "HW2SW_CQ failed (%d) for CQN %06x\n", err, cq->cqn);
322 synchronize_irq(priv->eq_table.eq[MLX4_CQ_TO_EQ_VECTOR(cq->vector)].irq);
323 if (priv->eq_table.eq[MLX4_CQ_TO_EQ_VECTOR(cq->vector)].irq !=
328 radix_tree_delete(&cq_table->tree, cq->cqn);
331 if (atomic_dec_and_test(&cq->refcount))
332 complete(&cq->free);
333 wait_for_completion(&cq->free);
335 mlx4_cq_free_icm(dev, cq->cqn);