aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/srq.c15
-rw-r--r--include/linux/mlx4/srq.h2
2 files changed, 17 insertions, 0 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx4/srq.c b/drivers/net/ethernet/mellanox/mlx4/srq.c
index e329fe1f11b7..79fd269e2c54 100644
--- a/drivers/net/ethernet/mellanox/mlx4/srq.c
+++ b/drivers/net/ethernet/mellanox/mlx4/srq.c
@@ -298,3 +298,18 @@ void mlx4_cleanup_srq_table(struct mlx4_dev *dev)
298 return; 298 return;
299 mlx4_bitmap_cleanup(&mlx4_priv(dev)->srq_table.bitmap); 299 mlx4_bitmap_cleanup(&mlx4_priv(dev)->srq_table.bitmap);
300} 300}
301
302struct mlx4_srq *mlx4_srq_lookup(struct mlx4_dev *dev, u32 srqn)
303{
304 struct mlx4_srq_table *srq_table = &mlx4_priv(dev)->srq_table;
305 struct mlx4_srq *srq;
306 unsigned long flags;
307
308 spin_lock_irqsave(&srq_table->lock, flags);
309 srq = radix_tree_lookup(&srq_table->tree,
310 srqn & (dev->caps.num_srqs - 1));
311 spin_unlock_irqrestore(&srq_table->lock, flags);
312
313 return srq;
314}
315EXPORT_SYMBOL_GPL(mlx4_srq_lookup);
diff --git a/include/linux/mlx4/srq.h b/include/linux/mlx4/srq.h
index 799a0697a383..192e0f7784f2 100644
--- a/include/linux/mlx4/srq.h
+++ b/include/linux/mlx4/srq.h
@@ -39,4 +39,6 @@ struct mlx4_wqe_srq_next_seg {
39 u32 reserved2[3]; 39 u32 reserved2[3];
40}; 40};
41 41
42struct mlx4_srq *mlx4_srq_lookup(struct mlx4_dev *dev, u32 srqn);
43
42#endif /* MLX4_SRQ_H */ 44#endif /* MLX4_SRQ_H */