]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
RDMA/mlx5: Use MLX5_SET macro instead of local structure
authorMeir Lichtinger <meirl@mellanox.com>
Thu, 16 Jul 2020 10:52:47 +0000 (13:52 +0300)
committerJason Gunthorpe <jgg@nvidia.com>
Mon, 27 Jul 2020 14:19:00 +0000 (11:19 -0300)
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.org
Signed-off-by: Meir Lichtinger <meirl@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/hw/mlx5/mlx5_ib.h
drivers/infiniband/hw/mlx5/wr.c
include/linux/mlx5/device.h

index 5dbe3eb0d9cb9231766d7ea776b05506ef41a09c..d9dfe38f4160ecc50fc637071d253b3c90b1d45a 100644 (file)
@@ -1423,15 +1423,6 @@ static inline void init_query_mad(struct ib_smp *mad)
        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)
 {
        return qp_type == MLX5_IB_QPT_HW_GSI;
index 2c6df1c43b559b2ad5135b1be9d0b2c89b717098..e58ecb46f8e3f5cceaf635ca54afe8f8e7eb69ab 100644 (file)
@@ -383,20 +383,26 @@ static void set_reg_mkey_segment(struct mlx5_mkey_seg *seg,
 
        memset(seg, 0, sizeof(*seg));
        if (wr->send_flags & MLX5_IB_SEND_UMR_DISABLE_MR)
-               seg->status = MLX5_MKEY_STATUS_FREE;
-
-       seg->flags = convert_access(umrwr->access_flags);
+               MLX5_SET(mkc, seg, free, 1);
+
+       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)
-               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 &&
            !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);
-       seg->len = cpu_to_be64(umrwr->length);
-       seg->log2_page_size = umrwr->page_shift;
-       seg->qpn_mkey7_0 = cpu_to_be32(0xffffff00 |
-                                      mlx5_mkey_variant(umrwr->mkey));
+       MLX5_SET64(mkc, seg, start_addr, umrwr->virt_addr);
+       MLX5_SET64(mkc, seg, len, umrwr->length);
+       MLX5_SET(mkc, seg, log_page_size, umrwr->page_shift);
+       MLX5_SET(mkc, seg, qpn, 0xffffff);
+       MLX5_SET(mkc, seg, mkey_7_0, mlx5_mkey_variant(umrwr->mkey));
 }
 
 static void set_reg_data_seg(struct mlx5_wqe_data_seg *dseg,
index 2aacf9a8ee4df1264af7c9688fa961b8d02eb2f7..d184b579617f006250c83db3c15167f74e84985f 100644 (file)
@@ -1007,7 +1007,6 @@ enum {
        MLX5_MKEY_REMOTE_INVAL  = 1 << 24,
        MLX5_MKEY_FLAG_SYNC_UMR = 1 << 29,
        MLX5_MKEY_BSF_EN        = 1 << 30,
-       MLX5_MKEY_LEN64         = 1 << 31,
 };
 
 struct mlx5_mkey_seg {