aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/mlx4
diff options
context:
space:
mode:
authorShani Michaeli <shanim@mellanox.com>2013-02-06 11:19:14 -0500
committerRoland Dreier <roland@purestorage.com>2013-02-25 13:44:32 -0500
commit804d6a89a5c0b076317966bcbcd7a63d42241831 (patch)
tree07360d8b8c6f099bfc5007b951844a133d4c43bd /include/linux/mlx4
parente448834e3545e02789897ab68905220aea39cd40 (diff)
mlx4: Implement memory windows allocation and deallocation
Implement MW allocation and deallocation in mlx4_core and mlx4_ib. Pass down the enable bind flag when registering memory regions. Signed-off-by: Haggai Eran <haggaie@mellanox.com> Signed-off-by: Shani Michaeli <shanim@mellanox.com> Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
Diffstat (limited to 'include/linux/mlx4')
-rw-r--r--include/linux/mlx4/device.h20
1 files changed, 19 insertions, 1 deletions
diff --git a/include/linux/mlx4/device.h b/include/linux/mlx4/device.h
index e9fe8caaf8bb..67b4695e5940 100644
--- a/include/linux/mlx4/device.h
+++ b/include/linux/mlx4/device.h
@@ -170,6 +170,7 @@ enum {
170#define MLX4_ATTR_EXTENDED_PORT_INFO cpu_to_be16(0xff90) 170#define MLX4_ATTR_EXTENDED_PORT_INFO cpu_to_be16(0xff90)
171 171
172enum { 172enum {
173 MLX4_BMME_FLAG_WIN_TYPE_2B = 1 << 1,
173 MLX4_BMME_FLAG_LOCAL_INV = 1 << 6, 174 MLX4_BMME_FLAG_LOCAL_INV = 1 << 6,
174 MLX4_BMME_FLAG_REMOTE_INV = 1 << 7, 175 MLX4_BMME_FLAG_REMOTE_INV = 1 << 7,
175 MLX4_BMME_FLAG_TYPE_2_WIN = 1 << 9, 176 MLX4_BMME_FLAG_TYPE_2_WIN = 1 << 9,
@@ -237,7 +238,8 @@ enum {
237 MLX4_PERM_LOCAL_WRITE = 1 << 11, 238 MLX4_PERM_LOCAL_WRITE = 1 << 11,
238 MLX4_PERM_REMOTE_READ = 1 << 12, 239 MLX4_PERM_REMOTE_READ = 1 << 12,
239 MLX4_PERM_REMOTE_WRITE = 1 << 13, 240 MLX4_PERM_REMOTE_WRITE = 1 << 13,
240 MLX4_PERM_ATOMIC = 1 << 14 241 MLX4_PERM_ATOMIC = 1 << 14,
242 MLX4_PERM_BIND_MW = 1 << 15,
241}; 243};
242 244
243enum { 245enum {
@@ -503,6 +505,18 @@ struct mlx4_mr {
503 int enabled; 505 int enabled;
504}; 506};
505 507
508enum mlx4_mw_type {
509 MLX4_MW_TYPE_1 = 1,
510 MLX4_MW_TYPE_2 = 2,
511};
512
513struct mlx4_mw {
514 u32 key;
515 u32 pd;
516 enum mlx4_mw_type type;
517 int enabled;
518};
519
506struct mlx4_fmr { 520struct mlx4_fmr {
507 struct mlx4_mr mr; 521 struct mlx4_mr mr;
508 struct mlx4_mpt_entry *mpt; 522 struct mlx4_mpt_entry *mpt;
@@ -803,6 +817,10 @@ int mlx4_mr_alloc(struct mlx4_dev *dev, u32 pd, u64 iova, u64 size, u32 access,
803 int npages, int page_shift, struct mlx4_mr *mr); 817 int npages, int page_shift, struct mlx4_mr *mr);
804int mlx4_mr_free(struct mlx4_dev *dev, struct mlx4_mr *mr); 818int mlx4_mr_free(struct mlx4_dev *dev, struct mlx4_mr *mr);
805int mlx4_mr_enable(struct mlx4_dev *dev, struct mlx4_mr *mr); 819int mlx4_mr_enable(struct mlx4_dev *dev, struct mlx4_mr *mr);
820int mlx4_mw_alloc(struct mlx4_dev *dev, u32 pd, enum mlx4_mw_type type,
821 struct mlx4_mw *mw);
822void mlx4_mw_free(struct mlx4_dev *dev, struct mlx4_mw *mw);
823int mlx4_mw_enable(struct mlx4_dev *dev, struct mlx4_mw *mw);
806int mlx4_write_mtt(struct mlx4_dev *dev, struct mlx4_mtt *mtt, 824int mlx4_write_mtt(struct mlx4_dev *dev, struct mlx4_mtt *mtt,
807 int start_index, int npages, u64 *page_list); 825 int start_index, int npages, u64 *page_list);
808int mlx4_buf_write_mtt(struct mlx4_dev *dev, struct mlx4_mtt *mtt, 826int mlx4_buf_write_mtt(struct mlx4_dev *dev, struct mlx4_mtt *mtt,