aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorHaggai Eran <haggaie@mellanox.com>2014-12-11 10:04:11 -0500
committerRoland Dreier <roland@purestorage.com>2014-12-15 21:13:35 -0500
commit968e78dd96443e2cc963c493070574778805e76a (patch)
treeac394ba85a24548c24c2c3f1a41093c1d0fac642 /include/linux
parent21af2c3ebfd551660ae0016ecc5bc9afcc24f116 (diff)
IB/mlx5: Enhance UMR support to allow partial page table update
The current UMR interface doesn't allow partial updates to a memory region's page tables. This patch changes the interface to allow that. It also changes the way the UMR operation validates the memory region's state. When set, IB_SEND_UMR_FAIL_IF_FREE will cause the UMR operation to fail if the MKEY is in the free state. When it is unchecked the operation will check that it isn't in the free state. Signed-off-by: Haggai Eran <haggaie@mellanox.com> Signed-off-by: Shachar Raindel <raindel@mellanox.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/mlx5/device.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/include/linux/mlx5/device.h b/include/linux/mlx5/device.h
index ea4f1c46f761..fa07bfda0e15 100644
--- a/include/linux/mlx5/device.h
+++ b/include/linux/mlx5/device.h
@@ -180,6 +180,15 @@ enum {
180 MLX5_MKEY_MASK_FREE = 1ull << 29, 180 MLX5_MKEY_MASK_FREE = 1ull << 29,
181}; 181};
182 182
183enum {
184 MLX5_UMR_TRANSLATION_OFFSET_EN = (1 << 4),
185
186 MLX5_UMR_CHECK_NOT_FREE = (1 << 5),
187 MLX5_UMR_CHECK_FREE = (2 << 5),
188
189 MLX5_UMR_INLINE = (1 << 7),
190};
191
183enum mlx5_event { 192enum mlx5_event {
184 MLX5_EVENT_TYPE_COMP = 0x0, 193 MLX5_EVENT_TYPE_COMP = 0x0,
185 194
@@ -776,6 +785,10 @@ struct mlx5_query_eq_mbox_out {
776 struct mlx5_eq_context ctx; 785 struct mlx5_eq_context ctx;
777}; 786};
778 787
788enum {
789 MLX5_MKEY_STATUS_FREE = 1 << 6,
790};
791
779struct mlx5_mkey_seg { 792struct mlx5_mkey_seg {
780 /* This is a two bit field occupying bits 31-30. 793 /* This is a two bit field occupying bits 31-30.
781 * bit 31 is always 0, 794 * bit 31 is always 0,