aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/hw/mlx4/mlx4_ib.h
diff options
context:
space:
mode:
authorJack Morgenstein <jackm@dev.mellanox.co.il>2007-08-01 05:29:05 -0400
committerRoland Dreier <rolandd@cisco.com>2007-10-09 22:59:16 -0400
commit8ad11fb6b0739e704953e2b0aed453bf7d75d4f6 (patch)
tree671838bc9293987efba214f2d645d7e40befc5a8 /drivers/infiniband/hw/mlx4/mlx4_ib.h
parentd7bb58fb1c0e7264a7261c7d0304121ef9402e94 (diff)
IB/mlx4: Implement FMRs
Implement FMRs for mlx4. This is an adaptation of code from mthca. Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il> Signed-off-by: Michael S. Tsirkin <mst@dev.mellanox.co.il> Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband/hw/mlx4/mlx4_ib.h')
-rw-r--r--drivers/infiniband/hw/mlx4/mlx4_ib.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/mlx4/mlx4_ib.h b/drivers/infiniband/hw/mlx4/mlx4_ib.h
index 705ff2fa237e..28697653a370 100644
--- a/drivers/infiniband/hw/mlx4/mlx4_ib.h
+++ b/drivers/infiniband/hw/mlx4/mlx4_ib.h
@@ -93,6 +93,11 @@ struct mlx4_ib_mr {
93 struct ib_umem *umem; 93 struct ib_umem *umem;
94}; 94};
95 95
96struct mlx4_ib_fmr {
97 struct ib_fmr ibfmr;
98 struct mlx4_fmr mfmr;
99};
100
96struct mlx4_ib_wq { 101struct mlx4_ib_wq {
97 u64 *wrid; 102 u64 *wrid;
98 spinlock_t lock; 103 spinlock_t lock;
@@ -199,6 +204,10 @@ static inline struct mlx4_ib_mr *to_mmr(struct ib_mr *ibmr)
199 return container_of(ibmr, struct mlx4_ib_mr, ibmr); 204 return container_of(ibmr, struct mlx4_ib_mr, ibmr);
200} 205}
201 206
207static inline struct mlx4_ib_fmr *to_mfmr(struct ib_fmr *ibfmr)
208{
209 return container_of(ibfmr, struct mlx4_ib_fmr, ibfmr);
210}
202static inline struct mlx4_ib_qp *to_mqp(struct ib_qp *ibqp) 211static inline struct mlx4_ib_qp *to_mqp(struct ib_qp *ibqp)
203{ 212{
204 return container_of(ibqp, struct mlx4_ib_qp, ibqp); 213 return container_of(ibqp, struct mlx4_ib_qp, ibqp);
@@ -284,6 +293,13 @@ int mlx4_ib_process_mad(struct ib_device *ibdev, int mad_flags, u8 port_num,
284int mlx4_ib_mad_init(struct mlx4_ib_dev *dev); 293int mlx4_ib_mad_init(struct mlx4_ib_dev *dev);
285void mlx4_ib_mad_cleanup(struct mlx4_ib_dev *dev); 294void mlx4_ib_mad_cleanup(struct mlx4_ib_dev *dev);
286 295
296struct ib_fmr *mlx4_ib_fmr_alloc(struct ib_pd *pd, int mr_access_flags,
297 struct ib_fmr_attr *fmr_attr);
298int mlx4_ib_map_phys_fmr(struct ib_fmr *ibfmr, u64 *page_list, int npages,
299 u64 iova);
300int mlx4_ib_unmap_fmr(struct list_head *fmr_list);
301int mlx4_ib_fmr_dealloc(struct ib_fmr *fmr);
302
287static inline int mlx4_ib_ah_grh_present(struct mlx4_ib_ah *ah) 303static inline int mlx4_ib_ah_grh_present(struct mlx4_ib_ah *ah)
288{ 304{
289 return !!(ah->av.g_slid & 0x80); 305 return !!(ah->av.g_slid & 0x80);