Lines Matching refs:srqn
43 void mlx4_srq_event(struct mlx4_dev *dev, u32 srqn, int event_type) in mlx4_srq_event() argument
50 srq = radix_tree_lookup(&srq_table->tree, srqn & (dev->caps.num_srqs - 1)); in mlx4_srq_event()
57 mlx4_warn(dev, "Async event for bogus SRQ %08x\n", srqn); in mlx4_srq_event()
96 int __mlx4_srq_alloc_icm(struct mlx4_dev *dev, int *srqn) in __mlx4_srq_alloc_icm() argument
102 *srqn = mlx4_bitmap_alloc(&srq_table->bitmap); in __mlx4_srq_alloc_icm()
103 if (*srqn == -1) in __mlx4_srq_alloc_icm()
106 err = mlx4_table_get(dev, &srq_table->table, *srqn, GFP_KERNEL); in __mlx4_srq_alloc_icm()
110 err = mlx4_table_get(dev, &srq_table->cmpt_table, *srqn, GFP_KERNEL); in __mlx4_srq_alloc_icm()
116 mlx4_table_put(dev, &srq_table->table, *srqn); in __mlx4_srq_alloc_icm()
119 mlx4_bitmap_free(&srq_table->bitmap, *srqn, MLX4_NO_RR); in __mlx4_srq_alloc_icm()
123 static int mlx4_srq_alloc_icm(struct mlx4_dev *dev, int *srqn) in mlx4_srq_alloc_icm() argument
134 *srqn = get_param_l(&out_param); in mlx4_srq_alloc_icm()
138 return __mlx4_srq_alloc_icm(dev, srqn); in mlx4_srq_alloc_icm()
141 void __mlx4_srq_free_icm(struct mlx4_dev *dev, int srqn) in __mlx4_srq_free_icm() argument
145 mlx4_table_put(dev, &srq_table->cmpt_table, srqn); in __mlx4_srq_free_icm()
146 mlx4_table_put(dev, &srq_table->table, srqn); in __mlx4_srq_free_icm()
147 mlx4_bitmap_free(&srq_table->bitmap, srqn, MLX4_NO_RR); in __mlx4_srq_free_icm()
150 static void mlx4_srq_free_icm(struct mlx4_dev *dev, int srqn) in mlx4_srq_free_icm() argument
155 set_param_l(&in_param, srqn); in mlx4_srq_free_icm()
159 mlx4_warn(dev, "Failed freeing cq:%d\n", srqn); in mlx4_srq_free_icm()
162 __mlx4_srq_free_icm(dev, srqn); in mlx4_srq_free_icm()
174 err = mlx4_srq_alloc_icm(dev, &srq->srqn); in mlx4_srq_alloc()
179 err = radix_tree_insert(&srq_table->tree, srq->srqn, srq); in mlx4_srq_alloc()
192 srq->srqn); in mlx4_srq_alloc()
204 err = mlx4_SW2HW_SRQ(dev, mailbox, srq->srqn); in mlx4_srq_alloc()
216 radix_tree_delete(&srq_table->tree, srq->srqn); in mlx4_srq_alloc()
220 mlx4_srq_free_icm(dev, srq->srqn); in mlx4_srq_alloc()
230 err = mlx4_HW2SW_SRQ(dev, NULL, srq->srqn); in mlx4_srq_free()
232 mlx4_warn(dev, "HW2SW_SRQ failed (%d) for SRQN %06x\n", err, srq->srqn); in mlx4_srq_free()
235 radix_tree_delete(&srq_table->tree, srq->srqn); in mlx4_srq_free()
242 mlx4_srq_free_icm(dev, srq->srqn); in mlx4_srq_free()
248 return mlx4_ARM_SRQ(dev, srq->srqn, limit_watermark); in mlx4_srq_arm()
264 err = mlx4_QUERY_SRQ(dev, mailbox, srq->srqn); in mlx4_srq_query()
300 struct mlx4_srq *mlx4_srq_lookup(struct mlx4_dev *dev, u32 srqn) in mlx4_srq_lookup() argument
308 srqn & (dev->caps.num_srqs - 1)); in mlx4_srq_lookup()