diff options
author | Roland Dreier <rolandd@cisco.com> | 2008-07-23 11:12:26 -0400 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2008-07-23 11:12:26 -0400 |
commit | 95d04f0735b4fc837bff9aedcc3f3efb20ddc3d1 (patch) | |
tree | 900cd7debae9827c3e20f5199307ae27e83ba862 /include | |
parent | e4044cfc493338cd09870bd45dc646336bb66e9f (diff) |
IB/mlx4: Add support for memory management extensions and local DMA L_Key
Add support for the following operations to mlx4 when device firmware
supports them:
- Send with invalidate and local invalidate send queue work requests;
- Allocate/free fast register MRs;
- Allocate/free fast register MR page lists;
- Fast register MR send queue work requests;
- Local DMA L_Key.
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/mlx4/device.h | 10 | ||||
-rw-r--r-- | include/linux/mlx4/qp.h | 16 |
2 files changed, 22 insertions, 4 deletions
diff --git a/include/linux/mlx4/device.h b/include/linux/mlx4/device.h index 81b3dd5206e0..655ea0d1ee14 100644 --- a/include/linux/mlx4/device.h +++ b/include/linux/mlx4/device.h | |||
@@ -68,6 +68,14 @@ enum { | |||
68 | MLX4_DEV_CAP_FLAG_UD_MCAST = 1 << 21 | 68 | MLX4_DEV_CAP_FLAG_UD_MCAST = 1 << 21 |
69 | }; | 69 | }; |
70 | 70 | ||
71 | enum { | ||
72 | MLX4_BMME_FLAG_LOCAL_INV = 1 << 6, | ||
73 | MLX4_BMME_FLAG_REMOTE_INV = 1 << 7, | ||
74 | MLX4_BMME_FLAG_TYPE_2_WIN = 1 << 9, | ||
75 | MLX4_BMME_FLAG_RESERVED_LKEY = 1 << 10, | ||
76 | MLX4_BMME_FLAG_FAST_REG_WR = 1 << 11, | ||
77 | }; | ||
78 | |||
71 | enum mlx4_event { | 79 | enum mlx4_event { |
72 | MLX4_EVENT_TYPE_COMP = 0x00, | 80 | MLX4_EVENT_TYPE_COMP = 0x00, |
73 | MLX4_EVENT_TYPE_PATH_MIG = 0x01, | 81 | MLX4_EVENT_TYPE_PATH_MIG = 0x01, |
@@ -184,6 +192,8 @@ struct mlx4_caps { | |||
184 | u32 max_msg_sz; | 192 | u32 max_msg_sz; |
185 | u32 page_size_cap; | 193 | u32 page_size_cap; |
186 | u32 flags; | 194 | u32 flags; |
195 | u32 bmme_flags; | ||
196 | u32 reserved_lkey; | ||
187 | u16 stat_rate_support; | 197 | u16 stat_rate_support; |
188 | u8 port_width_cap[MLX4_MAX_PORTS + 1]; | 198 | u8 port_width_cap[MLX4_MAX_PORTS + 1]; |
189 | int max_gso_sz; | 199 | int max_gso_sz; |
diff --git a/include/linux/mlx4/qp.h b/include/linux/mlx4/qp.h index f02e9ed36cfa..e27082cd650e 100644 --- a/include/linux/mlx4/qp.h +++ b/include/linux/mlx4/qp.h | |||
@@ -233,6 +233,14 @@ struct mlx4_wqe_bind_seg { | |||
233 | __be64 length; | 233 | __be64 length; |
234 | }; | 234 | }; |
235 | 235 | ||
236 | enum { | ||
237 | MLX4_WQE_FMR_PERM_LOCAL_READ = 1 << 27, | ||
238 | MLX4_WQE_FMR_PERM_LOCAL_WRITE = 1 << 28, | ||
239 | MLX4_WQE_FMR_PERM_REMOTE_READ = 1 << 29, | ||
240 | MLX4_WQE_FMR_PERM_REMOTE_WRITE = 1 << 30, | ||
241 | MLX4_WQE_FMR_PERM_ATOMIC = 1 << 31 | ||
242 | }; | ||
243 | |||
236 | struct mlx4_wqe_fmr_seg { | 244 | struct mlx4_wqe_fmr_seg { |
237 | __be32 flags; | 245 | __be32 flags; |
238 | __be32 mem_key; | 246 | __be32 mem_key; |
@@ -255,11 +263,11 @@ struct mlx4_wqe_fmr_ext_seg { | |||
255 | }; | 263 | }; |
256 | 264 | ||
257 | struct mlx4_wqe_local_inval_seg { | 265 | struct mlx4_wqe_local_inval_seg { |
258 | u8 flags; | 266 | __be32 flags; |
259 | u8 reserved1[3]; | 267 | u32 reserved1; |
260 | __be32 mem_key; | 268 | __be32 mem_key; |
261 | u8 reserved2[3]; | 269 | u32 reserved2[2]; |
262 | u8 guest_id; | 270 | __be32 guest_id; |
263 | __be64 pa; | 271 | __be64 pa; |
264 | }; | 272 | }; |
265 | 273 | ||