diff options
| -rw-r--r-- | drivers/net/ethernet/mellanox/mlx4/srq.c | 15 | ||||
| -rw-r--r-- | include/linux/mlx4/srq.h | 2 |
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 | |||
| 302 | struct 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 | } | ||
| 315 | EXPORT_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 | ||
| 42 | struct mlx4_srq *mlx4_srq_lookup(struct mlx4_dev *dev, u32 srqn); | ||
| 43 | |||
| 42 | #endif /* MLX4_SRQ_H */ | 44 | #endif /* MLX4_SRQ_H */ |
