Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma
Pull rdma updates from Jason Gunthorpe:
"A more active cycle than most of the recent past, with a few large,
long discussed works this time.
The RNBD block driver has been posted for nearly two years now, and
flowing through RDMA due to it also introducing a new ULP.
The removal of FMR has been a recurring discussion theme for a long
time.
And the usual smattering of features and bug fixes.
Summary:
- Various small driver bugs fixes in rxe, mlx5, hfi1, and efa
- Continuing driver cleanups in bnxt_re, hns
- Big cleanup of mlx5 QP creation flows
- More consistent use of src port and flow label when LAG is used and
a mlx5 implementation
- Additional set of cleanups for IB CM
- 'RNBD' network block driver and target. This is a network block
RDMA device specific to ionos's cloud environment. It brings strong
multipath and resiliency capabilities.
- Accelerated IPoIB for HFI1
- QP/WQ/SRQ ioctl migration for uverbs, and support for multiple
async fds
- Support for exchanging the new IBTA defiend ECE data during RDMA CM
exchanges
- Removal of the very old and insecure FMR interface from all ULPs
and drivers. FRWR should be preferred for at least a decade now"
* tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma: (247 commits)
RDMA/cm: Spurious WARNING triggered in cm_destroy_id()
RDMA/mlx5: Return ECE DC support
RDMA/mlx5: Don't rely on FW to set zeros in ECE response
RDMA/mlx5: Return an error if copy_to_user fails
IB/hfi1: Use free_netdev() in hfi1_netdev_free()
RDMA/hns: Uninitialized variable in modify_qp_init_to_rtr()
RDMA/core: Move and rename trace_cm_id_create()
IB/hfi1: Fix hfi1_netdev_rx_init() error handling
RDMA: Remove 'max_map_per_fmr'
RDMA: Remove 'max_fmr'
RDMA/core: Remove FMR device ops
RDMA/rdmavt: Remove FMR memory registration
RDMA/mthca: Remove FMR support for memory registration
RDMA/mlx4: Remove FMR support for memory registration
RDMA/i40iw: Remove FMR leftovers
RDMA/bnxt_re: Remove FMR leftovers
RDMA/mlx5: Remove FMR leftovers
RDMA/core: Remove FMR pool API
RDMA/rds: Remove FMR support for memory registration
RDMA/srp: Remove support for FMR memory registration
...
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
*
|
||||
* GPL LICENSE SUMMARY
|
||||
*
|
||||
* Copyright(c) 2015 - 2018 Intel Corporation.
|
||||
* Copyright(c) 2015 - 2020 Intel Corporation.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of version 2 of the GNU General Public License as
|
||||
@@ -109,6 +109,7 @@
|
||||
#define HFI1_CAP_OPFN (1UL << 16) /* Enable the OPFN protocol */
|
||||
#define HFI1_CAP_SDMA_HEAD_CHECK (1UL << 17) /* SDMA head checking */
|
||||
#define HFI1_CAP_EARLY_CREDIT_RETURN (1UL << 18) /* early credit return */
|
||||
#define HFI1_CAP_AIP (1UL << 19) /* Enable accelerated IP */
|
||||
|
||||
#define HFI1_RCVHDR_ENTSIZE_2 (1UL << 0)
|
||||
#define HFI1_RCVHDR_ENTSIZE_16 (1UL << 1)
|
||||
|
||||
@@ -95,6 +95,7 @@ enum uverbs_attrs_create_cq_cmd_attr_ids {
|
||||
UVERBS_ATTR_CREATE_CQ_COMP_VECTOR,
|
||||
UVERBS_ATTR_CREATE_CQ_FLAGS,
|
||||
UVERBS_ATTR_CREATE_CQ_RESP_CQE,
|
||||
UVERBS_ATTR_CREATE_CQ_EVENT_FD,
|
||||
};
|
||||
|
||||
enum uverbs_attrs_destroy_cq_cmd_attr_ids {
|
||||
@@ -120,11 +121,91 @@ enum uverbs_attrs_destroy_flow_action_esp {
|
||||
UVERBS_ATTR_DESTROY_FLOW_ACTION_HANDLE,
|
||||
};
|
||||
|
||||
enum uverbs_attrs_create_qp_cmd_attr_ids {
|
||||
UVERBS_ATTR_CREATE_QP_HANDLE,
|
||||
UVERBS_ATTR_CREATE_QP_XRCD_HANDLE,
|
||||
UVERBS_ATTR_CREATE_QP_PD_HANDLE,
|
||||
UVERBS_ATTR_CREATE_QP_SRQ_HANDLE,
|
||||
UVERBS_ATTR_CREATE_QP_SEND_CQ_HANDLE,
|
||||
UVERBS_ATTR_CREATE_QP_RECV_CQ_HANDLE,
|
||||
UVERBS_ATTR_CREATE_QP_IND_TABLE_HANDLE,
|
||||
UVERBS_ATTR_CREATE_QP_USER_HANDLE,
|
||||
UVERBS_ATTR_CREATE_QP_CAP,
|
||||
UVERBS_ATTR_CREATE_QP_TYPE,
|
||||
UVERBS_ATTR_CREATE_QP_FLAGS,
|
||||
UVERBS_ATTR_CREATE_QP_SOURCE_QPN,
|
||||
UVERBS_ATTR_CREATE_QP_EVENT_FD,
|
||||
UVERBS_ATTR_CREATE_QP_RESP_CAP,
|
||||
UVERBS_ATTR_CREATE_QP_RESP_QP_NUM,
|
||||
};
|
||||
|
||||
enum uverbs_attrs_destroy_qp_cmd_attr_ids {
|
||||
UVERBS_ATTR_DESTROY_QP_HANDLE,
|
||||
UVERBS_ATTR_DESTROY_QP_RESP,
|
||||
};
|
||||
|
||||
enum uverbs_methods_qp {
|
||||
UVERBS_METHOD_QP_CREATE,
|
||||
UVERBS_METHOD_QP_DESTROY,
|
||||
};
|
||||
|
||||
enum uverbs_attrs_create_srq_cmd_attr_ids {
|
||||
UVERBS_ATTR_CREATE_SRQ_HANDLE,
|
||||
UVERBS_ATTR_CREATE_SRQ_PD_HANDLE,
|
||||
UVERBS_ATTR_CREATE_SRQ_XRCD_HANDLE,
|
||||
UVERBS_ATTR_CREATE_SRQ_CQ_HANDLE,
|
||||
UVERBS_ATTR_CREATE_SRQ_USER_HANDLE,
|
||||
UVERBS_ATTR_CREATE_SRQ_MAX_WR,
|
||||
UVERBS_ATTR_CREATE_SRQ_MAX_SGE,
|
||||
UVERBS_ATTR_CREATE_SRQ_LIMIT,
|
||||
UVERBS_ATTR_CREATE_SRQ_MAX_NUM_TAGS,
|
||||
UVERBS_ATTR_CREATE_SRQ_TYPE,
|
||||
UVERBS_ATTR_CREATE_SRQ_EVENT_FD,
|
||||
UVERBS_ATTR_CREATE_SRQ_RESP_MAX_WR,
|
||||
UVERBS_ATTR_CREATE_SRQ_RESP_MAX_SGE,
|
||||
UVERBS_ATTR_CREATE_SRQ_RESP_SRQ_NUM,
|
||||
};
|
||||
|
||||
enum uverbs_attrs_destroy_srq_cmd_attr_ids {
|
||||
UVERBS_ATTR_DESTROY_SRQ_HANDLE,
|
||||
UVERBS_ATTR_DESTROY_SRQ_RESP,
|
||||
};
|
||||
|
||||
enum uverbs_methods_srq {
|
||||
UVERBS_METHOD_SRQ_CREATE,
|
||||
UVERBS_METHOD_SRQ_DESTROY,
|
||||
};
|
||||
|
||||
enum uverbs_methods_cq {
|
||||
UVERBS_METHOD_CQ_CREATE,
|
||||
UVERBS_METHOD_CQ_DESTROY,
|
||||
};
|
||||
|
||||
enum uverbs_attrs_create_wq_cmd_attr_ids {
|
||||
UVERBS_ATTR_CREATE_WQ_HANDLE,
|
||||
UVERBS_ATTR_CREATE_WQ_PD_HANDLE,
|
||||
UVERBS_ATTR_CREATE_WQ_CQ_HANDLE,
|
||||
UVERBS_ATTR_CREATE_WQ_USER_HANDLE,
|
||||
UVERBS_ATTR_CREATE_WQ_TYPE,
|
||||
UVERBS_ATTR_CREATE_WQ_EVENT_FD,
|
||||
UVERBS_ATTR_CREATE_WQ_MAX_WR,
|
||||
UVERBS_ATTR_CREATE_WQ_MAX_SGE,
|
||||
UVERBS_ATTR_CREATE_WQ_FLAGS,
|
||||
UVERBS_ATTR_CREATE_WQ_RESP_MAX_WR,
|
||||
UVERBS_ATTR_CREATE_WQ_RESP_MAX_SGE,
|
||||
UVERBS_ATTR_CREATE_WQ_RESP_WQ_NUM,
|
||||
};
|
||||
|
||||
enum uverbs_attrs_destroy_wq_cmd_attr_ids {
|
||||
UVERBS_ATTR_DESTROY_WQ_HANDLE,
|
||||
UVERBS_ATTR_DESTROY_WQ_RESP,
|
||||
};
|
||||
|
||||
enum uverbs_methods_wq {
|
||||
UVERBS_METHOD_WQ_CREATE,
|
||||
UVERBS_METHOD_WQ_DESTROY,
|
||||
};
|
||||
|
||||
enum uverbs_methods_actions_flow_action_ops {
|
||||
UVERBS_METHOD_FLOW_ACTION_ESP_CREATE,
|
||||
UVERBS_METHOD_FLOW_ACTION_DESTROY,
|
||||
|
||||
@@ -64,6 +64,41 @@ enum ib_uverbs_access_flags {
|
||||
~(IB_UVERBS_ACCESS_OPTIONAL_FIRST - 1)
|
||||
};
|
||||
|
||||
enum ib_uverbs_srq_type {
|
||||
IB_UVERBS_SRQT_BASIC,
|
||||
IB_UVERBS_SRQT_XRC,
|
||||
IB_UVERBS_SRQT_TM,
|
||||
};
|
||||
|
||||
enum ib_uverbs_wq_type {
|
||||
IB_UVERBS_WQT_RQ,
|
||||
};
|
||||
|
||||
enum ib_uverbs_wq_flags {
|
||||
IB_UVERBS_WQ_FLAGS_CVLAN_STRIPPING = 1 << 0,
|
||||
IB_UVERBS_WQ_FLAGS_SCATTER_FCS = 1 << 1,
|
||||
IB_UVERBS_WQ_FLAGS_DELAY_DROP = 1 << 2,
|
||||
IB_UVERBS_WQ_FLAGS_PCI_WRITE_END_PADDING = 1 << 3,
|
||||
};
|
||||
|
||||
enum ib_uverbs_qp_type {
|
||||
IB_UVERBS_QPT_RC = 2,
|
||||
IB_UVERBS_QPT_UC,
|
||||
IB_UVERBS_QPT_UD,
|
||||
IB_UVERBS_QPT_RAW_PACKET = 8,
|
||||
IB_UVERBS_QPT_XRC_INI,
|
||||
IB_UVERBS_QPT_XRC_TGT,
|
||||
IB_UVERBS_QPT_DRIVER = 0xFF,
|
||||
};
|
||||
|
||||
enum ib_uverbs_qp_create_flags {
|
||||
IB_UVERBS_QP_CREATE_BLOCK_MULTICAST_LOOPBACK = 1 << 1,
|
||||
IB_UVERBS_QP_CREATE_SCATTER_FCS = 1 << 8,
|
||||
IB_UVERBS_QP_CREATE_CVLAN_STRIPPING = 1 << 9,
|
||||
IB_UVERBS_QP_CREATE_PCI_WRITE_END_PADDING = 1 << 11,
|
||||
IB_UVERBS_QP_CREATE_SQ_SIG_ALL = 1 << 12,
|
||||
};
|
||||
|
||||
enum ib_uverbs_query_port_cap_flags {
|
||||
IB_UVERBS_PCF_SM = 1 << 1,
|
||||
IB_UVERBS_PCF_NOTICE_SUP = 1 << 2,
|
||||
@@ -185,6 +220,14 @@ struct ib_uverbs_query_port_resp_ex {
|
||||
__u8 reserved[6];
|
||||
};
|
||||
|
||||
struct ib_uverbs_qp_cap {
|
||||
__u32 max_send_wr;
|
||||
__u32 max_recv_wr;
|
||||
__u32 max_send_sge;
|
||||
__u32 max_recv_sge;
|
||||
__u32 max_inline_data;
|
||||
};
|
||||
|
||||
enum rdma_driver_id {
|
||||
RDMA_DRIVER_UNKNOWN,
|
||||
RDMA_DRIVER_MLX5,
|
||||
|
||||
@@ -100,6 +100,7 @@ struct mlx5_ib_alloc_ucontext_req_v2 {
|
||||
enum mlx5_ib_alloc_ucontext_resp_mask {
|
||||
MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_CORE_CLOCK_OFFSET = 1UL << 0,
|
||||
MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_DUMP_FILL_MKEY = 1UL << 1,
|
||||
MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_ECE = 1UL << 2,
|
||||
};
|
||||
|
||||
enum mlx5_user_cmds_supp_uhw {
|
||||
@@ -322,6 +323,8 @@ struct mlx5_ib_create_qp {
|
||||
__aligned_u64 sq_buf_addr;
|
||||
__aligned_u64 access_key;
|
||||
};
|
||||
__u32 ece_options;
|
||||
__u32 reserved;
|
||||
};
|
||||
|
||||
/* RX Hash function flags */
|
||||
@@ -371,7 +374,7 @@ enum mlx5_ib_create_qp_resp_mask {
|
||||
|
||||
struct mlx5_ib_create_qp_resp {
|
||||
__u32 bfreg_index;
|
||||
__u32 reserved;
|
||||
__u32 ece_options;
|
||||
__u32 comp_mask;
|
||||
__u32 tirn;
|
||||
__u32 tisn;
|
||||
@@ -420,12 +423,14 @@ struct mlx5_ib_burst_info {
|
||||
struct mlx5_ib_modify_qp {
|
||||
__u32 comp_mask;
|
||||
struct mlx5_ib_burst_info burst_info;
|
||||
__u32 reserved;
|
||||
__u32 ece_options;
|
||||
};
|
||||
|
||||
struct mlx5_ib_modify_qp_resp {
|
||||
__u32 response_length;
|
||||
__u32 dctn;
|
||||
__u32 ece_options;
|
||||
__u32 reserved;
|
||||
};
|
||||
|
||||
struct mlx5_ib_create_wq_resp {
|
||||
|
||||
@@ -241,6 +241,11 @@ enum mlx5_ib_flow_type {
|
||||
MLX5_IB_FLOW_TYPE_MC_DEFAULT,
|
||||
};
|
||||
|
||||
enum mlx5_ib_create_flow_flags {
|
||||
MLX5_IB_ATTR_CREATE_FLOW_FLAGS_DEFAULT_MISS = 1 << 0,
|
||||
MLX5_IB_ATTR_CREATE_FLOW_FLAGS_DROP = 1 << 1,
|
||||
};
|
||||
|
||||
enum mlx5_ib_create_flow_attrs {
|
||||
MLX5_IB_ATTR_CREATE_FLOW_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
|
||||
MLX5_IB_ATTR_CREATE_FLOW_MATCH_VALUE,
|
||||
@@ -251,6 +256,7 @@ enum mlx5_ib_create_flow_attrs {
|
||||
MLX5_IB_ATTR_CREATE_FLOW_TAG,
|
||||
MLX5_IB_ATTR_CREATE_FLOW_ARR_COUNTERS_DEVX,
|
||||
MLX5_IB_ATTR_CREATE_FLOW_ARR_COUNTERS_DEVX_OFFSET,
|
||||
MLX5_IB_ATTR_CREATE_FLOW_FLAGS,
|
||||
};
|
||||
|
||||
enum mlx5_ib_destoy_flow_attrs {
|
||||
|
||||
@@ -164,6 +164,8 @@ struct rdma_ucm_query_route_resp {
|
||||
__u32 num_paths;
|
||||
__u8 port_num;
|
||||
__u8 reserved[3];
|
||||
__u32 ibdev_index;
|
||||
__u32 reserved1;
|
||||
};
|
||||
|
||||
struct rdma_ucm_query_addr_resp {
|
||||
@@ -175,6 +177,8 @@ struct rdma_ucm_query_addr_resp {
|
||||
__u16 dst_size;
|
||||
struct __kernel_sockaddr_storage src_addr;
|
||||
struct __kernel_sockaddr_storage dst_addr;
|
||||
__u32 ibdev_index;
|
||||
__u32 reserved1;
|
||||
};
|
||||
|
||||
struct rdma_ucm_query_path_resp {
|
||||
@@ -206,10 +210,16 @@ struct rdma_ucm_ud_param {
|
||||
__u8 reserved[7];
|
||||
};
|
||||
|
||||
struct rdma_ucm_ece {
|
||||
__u32 vendor_id;
|
||||
__u32 attr_mod;
|
||||
};
|
||||
|
||||
struct rdma_ucm_connect {
|
||||
struct rdma_ucm_conn_param conn_param;
|
||||
__u32 id;
|
||||
__u32 reserved;
|
||||
struct rdma_ucm_ece ece;
|
||||
};
|
||||
|
||||
struct rdma_ucm_listen {
|
||||
@@ -222,12 +232,14 @@ struct rdma_ucm_accept {
|
||||
struct rdma_ucm_conn_param conn_param;
|
||||
__u32 id;
|
||||
__u32 reserved;
|
||||
struct rdma_ucm_ece ece;
|
||||
};
|
||||
|
||||
struct rdma_ucm_reject {
|
||||
__u32 id;
|
||||
__u8 private_data_len;
|
||||
__u8 reserved[3];
|
||||
__u8 reason;
|
||||
__u8 reserved[2];
|
||||
__u8 private_data[RDMA_MAX_PRIVATE_DATA];
|
||||
};
|
||||
|
||||
@@ -287,6 +299,7 @@ struct rdma_ucm_event_resp {
|
||||
struct rdma_ucm_ud_param ud;
|
||||
} param;
|
||||
__u32 reserved;
|
||||
struct rdma_ucm_ece ece;
|
||||
};
|
||||
|
||||
/* Option levels */
|
||||
|
||||
Reference in New Issue
Block a user