Lines Matching refs:srqn
43 void mlx4_srq_event(struct mlx4_dev *dev, u32 srqn, int event_type) in mlx4_srq_event() argument
49 srq = radix_tree_lookup(&srq_table->tree, srqn & (dev->caps.num_srqs - 1)); in mlx4_srq_event()
54 mlx4_warn(dev, "Async event for bogus SRQ %08x\n", srqn); in mlx4_srq_event()
93 int __mlx4_srq_alloc_icm(struct mlx4_dev *dev, int *srqn) in __mlx4_srq_alloc_icm() argument
99 *srqn = mlx4_bitmap_alloc(&srq_table->bitmap); in __mlx4_srq_alloc_icm()
100 if (*srqn == -1) in __mlx4_srq_alloc_icm()
103 err = mlx4_table_get(dev, &srq_table->table, *srqn); in __mlx4_srq_alloc_icm()
107 err = mlx4_table_get(dev, &srq_table->cmpt_table, *srqn); in __mlx4_srq_alloc_icm()
113 mlx4_table_put(dev, &srq_table->table, *srqn); in __mlx4_srq_alloc_icm()
116 mlx4_bitmap_free(&srq_table->bitmap, *srqn, MLX4_NO_RR); in __mlx4_srq_alloc_icm()
120 static int mlx4_srq_alloc_icm(struct mlx4_dev *dev, int *srqn) in mlx4_srq_alloc_icm() argument
131 *srqn = get_param_l(&out_param); in mlx4_srq_alloc_icm()
135 return __mlx4_srq_alloc_icm(dev, srqn); in mlx4_srq_alloc_icm()
138 void __mlx4_srq_free_icm(struct mlx4_dev *dev, int srqn) in __mlx4_srq_free_icm() argument
142 mlx4_table_put(dev, &srq_table->cmpt_table, srqn); in __mlx4_srq_free_icm()
143 mlx4_table_put(dev, &srq_table->table, srqn); in __mlx4_srq_free_icm()
144 mlx4_bitmap_free(&srq_table->bitmap, srqn, MLX4_NO_RR); in __mlx4_srq_free_icm()
147 static void mlx4_srq_free_icm(struct mlx4_dev *dev, int srqn) in mlx4_srq_free_icm() argument
152 set_param_l(&in_param, srqn); in mlx4_srq_free_icm()
156 mlx4_warn(dev, "Failed freeing cq:%d\n", srqn); in mlx4_srq_free_icm()
159 __mlx4_srq_free_icm(dev, srqn); in mlx4_srq_free_icm()
171 err = mlx4_srq_alloc_icm(dev, &srq->srqn); in mlx4_srq_alloc()
176 err = radix_tree_insert(&srq_table->tree, srq->srqn, srq); in mlx4_srq_alloc()
189 srq->srqn); in mlx4_srq_alloc()
201 err = mlx4_SW2HW_SRQ(dev, mailbox, srq->srqn); in mlx4_srq_alloc()
213 radix_tree_delete(&srq_table->tree, srq->srqn); in mlx4_srq_alloc()
217 mlx4_srq_free_icm(dev, srq->srqn); in mlx4_srq_alloc()
227 err = mlx4_HW2SW_SRQ(dev, NULL, srq->srqn); in mlx4_srq_free()
229 mlx4_warn(dev, "HW2SW_SRQ failed (%d) for SRQN %06x\n", err, srq->srqn); in mlx4_srq_free()
232 radix_tree_delete(&srq_table->tree, srq->srqn); in mlx4_srq_free()
239 mlx4_srq_free_icm(dev, srq->srqn); in mlx4_srq_free()
245 return mlx4_ARM_SRQ(dev, srq->srqn, limit_watermark); in mlx4_srq_arm()
261 err = mlx4_QUERY_SRQ(dev, mailbox, srq->srqn); in mlx4_srq_query()
292 struct mlx4_srq *mlx4_srq_lookup(struct mlx4_dev *dev, u32 srqn) in mlx4_srq_lookup() argument
299 srqn & (dev->caps.num_srqs - 1)); in mlx4_srq_lookup()