This patchset introduce a new structure that will contain all the infiniband device operations, the structure will be used by the providers to initialize their supported operations. This patchset also includes the required changes in the core and ulps to start using it. Changes from V1: * Rebase. * Constify the ib_device_ops. * Remove vertical white spaces. * Clang-format ib_device_ops struct. * Return the descriptive comments into ib_device_ops struct. * Move the assignment of the ib_device operations to the last patch in the patchset. * Remove the existing method assignment at the same time of initializing the ib_device_ops. Thanks, Kamal Kamal Heib (18): RDMA/core: Introduce ib_device_ops RDMA/bnxt_re: Initialize ib_device_ops struct RDMA/cxgb3: Initialize ib_device_ops struct RDMA/cxgb4: Initialize ib_device_ops struct RDMA/hfi1: Initialize ib_device_ops struct RDMA/hns: Initialize ib_device_ops struct RDMA/i40iw: Initialize ib_device_ops struct RDMA/mlx4: Initialize ib_device_ops struct RDMA/mlx5: Initialize ib_device_ops struct RDMA/mthca: Initialize ib_device_ops struct RDMA/nes: Initialize ib_device_ops struct RDMA/ocrdma: Initialize ib_device_ops struct RDMA/qedr: Initialize ib_device_ops struct RDMA/qib: Initialize ib_device_ops struct RDMA/usnic: Initialize ib_device_ops struct RDMA/vmw_pvrdma: Initialize ib_device_ops struct RDMA/rxe: Initialize ib_device_ops struct RDMA: Start use ib_device_ops drivers/infiniband/core/cache.c | 12 +- drivers/infiniband/core/core_priv.h | 12 +- drivers/infiniband/core/cq.c | 6 +- drivers/infiniband/core/device.c | 135 +++++- drivers/infiniband/core/fmr_pool.c | 4 +- drivers/infiniband/core/mad.c | 24 +- drivers/infiniband/core/nldev.c | 4 +- drivers/infiniband/core/opa_smi.h | 4 +- drivers/infiniband/core/rdma_core.c | 6 +- drivers/infiniband/core/security.c | 8 +- drivers/infiniband/core/smi.h | 4 +- drivers/infiniband/core/sysfs.c | 28 +- drivers/infiniband/core/ucm.c | 2 +- drivers/infiniband/core/uverbs_cmd.c | 64 +-- drivers/infiniband/core/uverbs_main.c | 14 +- drivers/infiniband/core/uverbs_std_types.c | 2 +- .../infiniband/core/uverbs_std_types_counters.c | 10 +- drivers/infiniband/core/uverbs_std_types_cq.c | 4 +- drivers/infiniband/core/uverbs_std_types_dm.c | 6 +- .../infiniband/core/uverbs_std_types_flow_action.c | 14 +- drivers/infiniband/core/uverbs_std_types_mr.c | 4 +- drivers/infiniband/core/verbs.c | 149 +++--- drivers/infiniband/hw/bnxt_re/main.c | 96 ++-- drivers/infiniband/hw/cxgb3/iwch_provider.c | 64 +-- drivers/infiniband/hw/cxgb4/provider.c | 74 +-- drivers/infiniband/hw/hfi1/verbs.c | 19 +- drivers/infiniband/hw/hns/hns_roce_device.h | 1 + drivers/infiniband/hw/hns/hns_roce_hw_v1.c | 11 + drivers/infiniband/hw/hns/hns_roce_hw_v2.c | 11 + drivers/infiniband/hw/hns/hns_roce_main.c | 102 ++-- drivers/infiniband/hw/i40iw/i40iw_cm.c | 2 +- drivers/infiniband/hw/i40iw/i40iw_verbs.c | 66 +-- drivers/infiniband/hw/mlx4/alias_GUID.c | 2 +- drivers/infiniband/hw/mlx4/main.c | 178 +++---- drivers/infiniband/hw/mlx5/main.c | 222 +++++---- drivers/infiniband/hw/mthca/mthca_provider.c | 139 ++++-- drivers/infiniband/hw/nes/nes_cm.c | 2 +- drivers/infiniband/hw/nes/nes_verbs.c | 67 +-- drivers/infiniband/hw/ocrdma/ocrdma_main.c | 92 ++-- drivers/infiniband/hw/qedr/main.c | 103 ++-- drivers/infiniband/hw/qib/qib_verbs.c | 8 +- drivers/infiniband/hw/usnic/usnic_ib_main.c | 61 +-- drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c | 82 ++-- drivers/infiniband/sw/rdmavt/vt.c | 90 ++-- drivers/infiniband/sw/rxe/rxe_verbs.c | 90 ++-- drivers/infiniband/ulp/ipoib/ipoib_main.c | 12 +- drivers/infiniband/ulp/iser/iser_memory.c | 4 +- drivers/infiniband/ulp/opa_vnic/opa_vnic_netdev.c | 8 +- drivers/infiniband/ulp/srp/ib_srp.c | 6 +- fs/cifs/smbdirect.c | 2 +- include/rdma/ib_verbs.h | 525 ++++++++++----------- net/rds/ib.c | 4 +- net/sunrpc/xprtrdma/fmr_ops.c | 2 +- 53 files changed, 1438 insertions(+), 1223 deletions(-) -- 2.14.5