Commit 22246359 authored by Meir Lichtinger's avatar Meir Lichtinger Committed by Jason Gunthorpe

RDMA/mlx5: Use MLX5_SET macro instead of local structure

Use generic mlx5 structure defined in mlx5_ifc.h to represent ConnectX
device data structures instead of using structure defined specifically for
mlx5_ib module.

Link: https://lore.kernel.org/r/20200716105248.1423452-3-leon@kernel.orgSigned-off-by: default avatarMeir Lichtinger <meirl@mellanox.com>
Signed-off-by: default avatarLeon Romanovsky <leonro@mellanox.com>
Signed-off-by: default avatarJason Gunthorpe <jgg@nvidia.com>
parent 042dd05b
...@@ -1423,15 +1423,6 @@ static inline void init_query_mad(struct ib_smp *mad) ...@@ -1423,15 +1423,6 @@ static inline void init_query_mad(struct ib_smp *mad)
mad->method = IB_MGMT_METHOD_GET; mad->method = IB_MGMT_METHOD_GET;
} }
static inline u8 convert_access(int acc)
{
return (acc & IB_ACCESS_REMOTE_ATOMIC ? MLX5_PERM_ATOMIC : 0) |
(acc & IB_ACCESS_REMOTE_WRITE ? MLX5_PERM_REMOTE_WRITE : 0) |
(acc & IB_ACCESS_REMOTE_READ ? MLX5_PERM_REMOTE_READ : 0) |
(acc & IB_ACCESS_LOCAL_WRITE ? MLX5_PERM_LOCAL_WRITE : 0) |
MLX5_PERM_LOCAL_READ;
}
static inline int is_qp1(enum ib_qp_type qp_type) static inline int is_qp1(enum ib_qp_type qp_type)
{ {
return qp_type == MLX5_IB_QPT_HW_GSI; return qp_type == MLX5_IB_QPT_HW_GSI;
......
...@@ -383,20 +383,26 @@ static void set_reg_mkey_segment(struct mlx5_mkey_seg *seg, ...@@ -383,20 +383,26 @@ static void set_reg_mkey_segment(struct mlx5_mkey_seg *seg,
memset(seg, 0, sizeof(*seg)); memset(seg, 0, sizeof(*seg));
if (wr->send_flags & MLX5_IB_SEND_UMR_DISABLE_MR) if (wr->send_flags & MLX5_IB_SEND_UMR_DISABLE_MR)
seg->status = MLX5_MKEY_STATUS_FREE; MLX5_SET(mkc, seg, free, 1);
seg->flags = convert_access(umrwr->access_flags); MLX5_SET(mkc, seg, a,
!!(umrwr->access_flags & IB_ACCESS_REMOTE_ATOMIC));
MLX5_SET(mkc, seg, rw,
!!(umrwr->access_flags & IB_ACCESS_REMOTE_WRITE));
MLX5_SET(mkc, seg, rr, !!(umrwr->access_flags & IB_ACCESS_REMOTE_READ));
MLX5_SET(mkc, seg, lw, !!(umrwr->access_flags & IB_ACCESS_LOCAL_WRITE));
MLX5_SET(mkc, seg, lr, 1);
if (umrwr->pd) if (umrwr->pd)
seg->flags_pd = cpu_to_be32(to_mpd(umrwr->pd)->pdn); MLX5_SET(mkc, seg, pd, to_mpd(umrwr->pd)->pdn);
if (wr->send_flags & MLX5_IB_SEND_UMR_UPDATE_TRANSLATION && if (wr->send_flags & MLX5_IB_SEND_UMR_UPDATE_TRANSLATION &&
!umrwr->length) !umrwr->length)
seg->flags_pd |= cpu_to_be32(MLX5_MKEY_LEN64); MLX5_SET(mkc, seg, length64, 1);
seg->start_addr = cpu_to_be64(umrwr->virt_addr); MLX5_SET64(mkc, seg, start_addr, umrwr->virt_addr);
seg->len = cpu_to_be64(umrwr->length); MLX5_SET64(mkc, seg, len, umrwr->length);
seg->log2_page_size = umrwr->page_shift; MLX5_SET(mkc, seg, log_page_size, umrwr->page_shift);
seg->qpn_mkey7_0 = cpu_to_be32(0xffffff00 | MLX5_SET(mkc, seg, qpn, 0xffffff);
mlx5_mkey_variant(umrwr->mkey)); MLX5_SET(mkc, seg, mkey_7_0, mlx5_mkey_variant(umrwr->mkey));
} }
static void set_reg_data_seg(struct mlx5_wqe_data_seg *dseg, static void set_reg_data_seg(struct mlx5_wqe_data_seg *dseg,
......
...@@ -1007,7 +1007,6 @@ enum { ...@@ -1007,7 +1007,6 @@ enum {
MLX5_MKEY_REMOTE_INVAL = 1 << 24, MLX5_MKEY_REMOTE_INVAL = 1 << 24,
MLX5_MKEY_FLAG_SYNC_UMR = 1 << 29, MLX5_MKEY_FLAG_SYNC_UMR = 1 << 29,
MLX5_MKEY_BSF_EN = 1 << 30, MLX5_MKEY_BSF_EN = 1 << 30,
MLX5_MKEY_LEN64 = 1 << 31,
}; };
struct mlx5_mkey_seg { struct mlx5_mkey_seg {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment