|
@@ -170,6 +170,7 @@ enum {
|
|
#define MLX4_ATTR_EXTENDED_PORT_INFO cpu_to_be16(0xff90)
|
|
#define MLX4_ATTR_EXTENDED_PORT_INFO cpu_to_be16(0xff90)
|
|
|
|
|
|
enum {
|
|
enum {
|
|
|
|
+ MLX4_BMME_FLAG_WIN_TYPE_2B = 1 << 1,
|
|
MLX4_BMME_FLAG_LOCAL_INV = 1 << 6,
|
|
MLX4_BMME_FLAG_LOCAL_INV = 1 << 6,
|
|
MLX4_BMME_FLAG_REMOTE_INV = 1 << 7,
|
|
MLX4_BMME_FLAG_REMOTE_INV = 1 << 7,
|
|
MLX4_BMME_FLAG_TYPE_2_WIN = 1 << 9,
|
|
MLX4_BMME_FLAG_TYPE_2_WIN = 1 << 9,
|
|
@@ -237,7 +238,8 @@ enum {
|
|
MLX4_PERM_LOCAL_WRITE = 1 << 11,
|
|
MLX4_PERM_LOCAL_WRITE = 1 << 11,
|
|
MLX4_PERM_REMOTE_READ = 1 << 12,
|
|
MLX4_PERM_REMOTE_READ = 1 << 12,
|
|
MLX4_PERM_REMOTE_WRITE = 1 << 13,
|
|
MLX4_PERM_REMOTE_WRITE = 1 << 13,
|
|
- MLX4_PERM_ATOMIC = 1 << 14
|
|
|
|
|
|
+ MLX4_PERM_ATOMIC = 1 << 14,
|
|
|
|
+ MLX4_PERM_BIND_MW = 1 << 15,
|
|
};
|
|
};
|
|
|
|
|
|
enum {
|
|
enum {
|
|
@@ -503,6 +505,18 @@ struct mlx4_mr {
|
|
int enabled;
|
|
int enabled;
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+enum mlx4_mw_type {
|
|
|
|
+ MLX4_MW_TYPE_1 = 1,
|
|
|
|
+ MLX4_MW_TYPE_2 = 2,
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+struct mlx4_mw {
|
|
|
|
+ u32 key;
|
|
|
|
+ u32 pd;
|
|
|
|
+ enum mlx4_mw_type type;
|
|
|
|
+ int enabled;
|
|
|
|
+};
|
|
|
|
+
|
|
struct mlx4_fmr {
|
|
struct mlx4_fmr {
|
|
struct mlx4_mr mr;
|
|
struct mlx4_mr mr;
|
|
struct mlx4_mpt_entry *mpt;
|
|
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,
|
|
int npages, int page_shift, struct mlx4_mr *mr);
|
|
int npages, int page_shift, struct mlx4_mr *mr);
|
|
int mlx4_mr_free(struct mlx4_dev *dev, struct mlx4_mr *mr);
|
|
int mlx4_mr_free(struct mlx4_dev *dev, struct mlx4_mr *mr);
|
|
int mlx4_mr_enable(struct mlx4_dev *dev, struct mlx4_mr *mr);
|
|
int mlx4_mr_enable(struct mlx4_dev *dev, struct mlx4_mr *mr);
|
|
|
|
+int mlx4_mw_alloc(struct mlx4_dev *dev, u32 pd, enum mlx4_mw_type type,
|
|
|
|
+ struct mlx4_mw *mw);
|
|
|
|
+void mlx4_mw_free(struct mlx4_dev *dev, struct mlx4_mw *mw);
|
|
|
|
+int mlx4_mw_enable(struct mlx4_dev *dev, struct mlx4_mw *mw);
|
|
int mlx4_write_mtt(struct mlx4_dev *dev, struct mlx4_mtt *mtt,
|
|
int mlx4_write_mtt(struct mlx4_dev *dev, struct mlx4_mtt *mtt,
|
|
int start_index, int npages, u64 *page_list);
|
|
int start_index, int npages, u64 *page_list);
|
|
int mlx4_buf_write_mtt(struct mlx4_dev *dev, struct mlx4_mtt *mtt,
|
|
int mlx4_buf_write_mtt(struct mlx4_dev *dev, struct mlx4_mtt *mtt,
|