Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

IB/mlx5: Introduce and use mkey context setting helper routine

Introduce and use set_mkc_access_pd_addr_fields() which sets mkey
context's access rights, PD, address fields. Thereby avoid the code
duplication.

Link: https://lore.kernel.org/r/20191006155443.31068-1-leon@kernel.org
Signed-off-by: Parav Pandit <parav@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>

authored by

Parav Pandit and committed by
Jason Gunthorpe
03232cc4 3466c060

+16 -18
+16 -18
drivers/infiniband/hw/mlx5/mr.c
··· 705 705 return 0; 706 706 } 707 707 708 + static void set_mkc_access_pd_addr_fields(void *mkc, int acc, u64 start_addr, 709 + struct ib_pd *pd) 710 + { 711 + MLX5_SET(mkc, mkc, a, !!(acc & IB_ACCESS_REMOTE_ATOMIC)); 712 + MLX5_SET(mkc, mkc, rw, !!(acc & IB_ACCESS_REMOTE_WRITE)); 713 + MLX5_SET(mkc, mkc, rr, !!(acc & IB_ACCESS_REMOTE_READ)); 714 + MLX5_SET(mkc, mkc, lw, !!(acc & IB_ACCESS_LOCAL_WRITE)); 715 + MLX5_SET(mkc, mkc, lr, 1); 716 + 717 + MLX5_SET(mkc, mkc, pd, to_mpd(pd)->pdn); 718 + MLX5_SET(mkc, mkc, qpn, 0xffffff); 719 + MLX5_SET64(mkc, mkc, start_addr, start_addr); 720 + } 721 + 708 722 struct ib_mr *mlx5_ib_get_dma_mr(struct ib_pd *pd, int acc) 709 723 { 710 724 struct mlx5_ib_dev *dev = to_mdev(pd->device); ··· 742 728 mkc = MLX5_ADDR_OF(create_mkey_in, in, memory_key_mkey_entry); 743 729 744 730 MLX5_SET(mkc, mkc, access_mode_1_0, MLX5_MKC_ACCESS_MODE_PA); 745 - MLX5_SET(mkc, mkc, a, !!(acc & IB_ACCESS_REMOTE_ATOMIC)); 746 - MLX5_SET(mkc, mkc, rw, !!(acc & IB_ACCESS_REMOTE_WRITE)); 747 - MLX5_SET(mkc, mkc, rr, !!(acc & IB_ACCESS_REMOTE_READ)); 748 - MLX5_SET(mkc, mkc, lw, !!(acc & IB_ACCESS_LOCAL_WRITE)); 749 - MLX5_SET(mkc, mkc, lr, 1); 750 - 751 731 MLX5_SET(mkc, mkc, length64, 1); 752 - MLX5_SET(mkc, mkc, pd, to_mpd(pd)->pdn); 753 - MLX5_SET(mkc, mkc, qpn, 0xffffff); 754 - MLX5_SET64(mkc, mkc, start_addr, 0); 732 + set_mkc_access_pd_addr_fields(mkc, acc, 0, pd); 755 733 756 734 err = mlx5_core_create_mkey(mdev, &mr->mmkey, in, inlen); 757 735 if (err) ··· 1201 1195 1202 1196 MLX5_SET(mkc, mkc, access_mode_1_0, mode & 0x3); 1203 1197 MLX5_SET(mkc, mkc, access_mode_4_2, (mode >> 2) & 0x7); 1204 - MLX5_SET(mkc, mkc, a, !!(acc & IB_ACCESS_REMOTE_ATOMIC)); 1205 - MLX5_SET(mkc, mkc, rw, !!(acc & IB_ACCESS_REMOTE_WRITE)); 1206 - MLX5_SET(mkc, mkc, rr, !!(acc & IB_ACCESS_REMOTE_READ)); 1207 - MLX5_SET(mkc, mkc, lw, !!(acc & IB_ACCESS_LOCAL_WRITE)); 1208 - MLX5_SET(mkc, mkc, lr, 1); 1209 - 1210 1198 MLX5_SET64(mkc, mkc, len, length); 1211 - MLX5_SET(mkc, mkc, pd, to_mpd(pd)->pdn); 1212 - MLX5_SET(mkc, mkc, qpn, 0xffffff); 1213 - MLX5_SET64(mkc, mkc, start_addr, start_addr); 1199 + set_mkc_access_pd_addr_fields(mkc, acc, start_addr, pd); 1214 1200 1215 1201 err = mlx5_core_create_mkey(mdev, &mr->mmkey, in, inlen); 1216 1202 if (err)