Message ID | 20220322033002.496195-2-yangx.jy@fujitsu.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [v2,1/2] IB/uverbs: Move enum ib_raw_packet_caps to uapi | expand |
On Tue, Mar 22, 2022 at 11:30:02AM +0800, Xiao Yang wrote: > 1)Part of enum ib_device_cap_flags are used by ibv_query_device(3) > or ibv_query_device_ex(3), so we define them in > include/uapi/rdma/ib_user_verbs.h and only expose them to userspace. > > 2)Reformat enum ib_device_cap_flags by removing the indent before '='. > > Signed-off-by: Xiao Yang <yangx.jy@fujitsu.com> > drivers/infiniband/core/uverbs_cmd.c | 6 ++- > include/rdma/ib_verbs.h | 76 ++++++++++++++-------------- > include/uapi/rdma/ib_user_verbs.h | 57 +++++++++++++++++++++ > 3 files changed, 100 insertions(+), 39 deletions(-) > > diff --git a/drivers/infiniband/core/uverbs_cmd.c b/drivers/infiniband/core/uverbs_cmd.c > index 6b6393176b3c..a1978a6f8e0c 100644 > +++ b/drivers/infiniband/core/uverbs_cmd.c > @@ -337,7 +337,8 @@ static void copy_query_dev_fields(struct ib_ucontext *ucontext, > resp->hw_ver = attr->hw_ver; > resp->max_qp = attr->max_qp; > resp->max_qp_wr = attr->max_qp_wr; > - resp->device_cap_flags = lower_32_bits(attr->device_cap_flags); > + resp->device_cap_flags = lower_32_bits(attr->device_cap_flags & > + IB_UVERBS_DEVICE_CAP_FLAGS_MASK); > resp->max_sge = min(attr->max_send_sge, attr->max_recv_sge); > resp->max_sge_rd = attr->max_sge_rd; > resp->max_cq = attr->max_cq; > @@ -3618,7 +3619,8 @@ static int ib_uverbs_ex_query_device(struct uverbs_attr_bundle *attrs) > > resp.timestamp_mask = attr.timestamp_mask; > resp.hca_core_clock = attr.hca_core_clock; > - resp.device_cap_flags_ex = attr.device_cap_flags; > + resp.device_cap_flags_ex = attr.device_cap_flags & > + IB_UVERBS_DEVICE_CAP_FLAGS_MASK; > resp.rss_caps.supported_qpts = attr.rss_caps.supported_qpts; > resp.rss_caps.max_rwq_indirection_tables = > attr.rss_caps.max_rwq_indirection_tables; > diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h > index e3ed65920558..c486a379df47 100644 > +++ b/include/rdma/ib_verbs.h > @@ -220,21 +220,21 @@ enum rdma_link_layer { > }; > > enum ib_device_cap_flags { > - IB_DEVICE_RESIZE_MAX_WR = (1 << 0), > - IB_DEVICE_BAD_PKEY_CNTR = (1 << 1), > - IB_DEVICE_BAD_QKEY_CNTR = (1 << 2), > - IB_DEVICE_RAW_MULTI = (1 << 3), > - IB_DEVICE_AUTO_PATH_MIG = (1 << 4), > - IB_DEVICE_CHANGE_PHY_PORT = (1 << 5), > - IB_DEVICE_UD_AV_PORT_ENFORCE = (1 << 6), > - IB_DEVICE_CURR_QP_STATE_MOD = (1 << 7), > - IB_DEVICE_SHUTDOWN_PORT = (1 << 8), > - /* Not in use, former INIT_TYPE = (1 << 9),*/ > - IB_DEVICE_PORT_ACTIVE_EVENT = (1 << 10), > - IB_DEVICE_SYS_IMAGE_GUID = (1 << 11), > - IB_DEVICE_RC_RNR_NAK_GEN = (1 << 12), > - IB_DEVICE_SRQ_RESIZE = (1 << 13), > - IB_DEVICE_N_NOTIFY_CQ = (1 << 14), > + IB_DEVICE_RESIZE_MAX_WR = IB_UVERBS_DEVICE_RESIZE_MAX_WR, > + IB_DEVICE_BAD_PKEY_CNTR = IB_UVERBS_DEVICE_BAD_PKEY_CNTR, > + IB_DEVICE_BAD_QKEY_CNTR = IB_UVERBS_DEVICE_BAD_QKEY_CNTR, > + IB_DEVICE_RAW_MULTI = IB_UVERBS_DEVICE_RAW_MULTI, > + IB_DEVICE_AUTO_PATH_MIG = IB_UVERBS_DEVICE_AUTO_PATH_MIG, > + IB_DEVICE_CHANGE_PHY_PORT = IB_UVERBS_DEVICE_CHANGE_PHY_PORT, > + IB_DEVICE_UD_AV_PORT_ENFORCE = IB_UVERBS_DEVICE_UD_AV_PORT_ENFORCE, > + IB_DEVICE_CURR_QP_STATE_MOD = IB_UVERBS_DEVICE_CURR_QP_STATE_MOD, > + IB_DEVICE_SHUTDOWN_PORT = IB_UVERBS_DEVICE_SHUTDOWN_PORT, > + /* IB_DEVICE_INIT_TYPE = IB_UVERBS_DEVICE_INIT_TYPE, (not in use) */ > + IB_DEVICE_PORT_ACTIVE_EVENT = IB_UVERBS_DEVICE_PORT_ACTIVE_EVENT, > + IB_DEVICE_SYS_IMAGE_GUID = IB_UVERBS_DEVICE_SYS_IMAGE_GUID, > + IB_DEVICE_RC_RNR_NAK_GEN = IB_UVERBS_DEVICE_RC_RNR_NAK_GEN, > + IB_DEVICE_SRQ_RESIZE = IB_UVERBS_DEVICE_SRQ_RESIZE, > + IB_DEVICE_N_NOTIFY_CQ = IB_UVERBS_DEVICE_N_NOTIFY_CQ, > > /* > * This device supports a per-device lkey or stag that can be > @@ -243,9 +243,9 @@ enum ib_device_cap_flags { > * instead of use the local_dma_lkey flag in the ib_pd structure, > * which will always contain a usable lkey. > */ > - IB_DEVICE_LOCAL_DMA_LKEY = (1 << 15), > - /* Reserved, old SEND_W_INV = (1 << 16),*/ > - IB_DEVICE_MEM_WINDOW = (1 << 17), > + IB_DEVICE_LOCAL_DMA_LKEY = 1 << 15, > + /* Reserved, old SEND_W_INV = 1 << 16,*/ > + IB_DEVICE_MEM_WINDOW = IB_UVERBS_DEVICE_MEM_WINDOW, > /* > * Devices should set IB_DEVICE_UD_IP_SUM if they support > * insertion of UDP and TCP checksum on outgoing UD IPoIB > @@ -253,9 +253,9 @@ enum ib_device_cap_flags { > * incoming messages. Setting this flag implies that the > * IPoIB driver may set NETIF_F_IP_CSUM for datagram mode. > */ > - IB_DEVICE_UD_IP_CSUM = (1 << 18), > - IB_DEVICE_UD_TSO = (1 << 19), > - IB_DEVICE_XRC = (1 << 20), > + IB_DEVICE_UD_IP_CSUM = IB_UVERBS_DEVICE_UD_IP_CSUM, > + IB_DEVICE_UD_TSO = 1 << 19, > + IB_DEVICE_XRC = IB_UVERBS_DEVICE_XRC, > > /* > * This device supports the IB "base memory management extension", > @@ -266,31 +266,33 @@ enum ib_device_cap_flags { > * IB_WR_RDMA_READ_WITH_INV verb for RDMA READs that invalidate the > * stag. > */ > - IB_DEVICE_MEM_MGT_EXTENSIONS = (1 << 21), > - IB_DEVICE_BLOCK_MULTICAST_LOOPBACK = (1 << 22), > - IB_DEVICE_MEM_WINDOW_TYPE_2A = (1 << 23), > - IB_DEVICE_MEM_WINDOW_TYPE_2B = (1 << 24), > - IB_DEVICE_RC_IP_CSUM = (1 << 25), > + IB_DEVICE_MEM_MGT_EXTENSIONS = IB_UVERBS_DEVICE_MEM_MGT_EXTENSIONS, > + IB_DEVICE_BLOCK_MULTICAST_LOOPBACK = 1 << 22, > + IB_DEVICE_MEM_WINDOW_TYPE_2A = IB_UVERBS_DEVICE_MEM_WINDOW_TYPE_2A, > + IB_DEVICE_MEM_WINDOW_TYPE_2B = IB_UVERBS_DEVICE_MEM_WINDOW_TYPE_2B, > + IB_DEVICE_RC_IP_CSUM = IB_UVERBS_DEVICE_RC_IP_CSUM, > /* Deprecated. Please use IB_RAW_PACKET_CAP_IP_CSUM. */ > - IB_DEVICE_RAW_IP_CSUM = (1 << 26), > + IB_DEVICE_RAW_IP_CSUM = IB_UVERBS_DEVICE_RAW_IP_CSUM, > /* > * Devices should set IB_DEVICE_CROSS_CHANNEL if they > * support execution of WQEs that involve synchronization > * of I/O operations with single completion queue managed > * by hardware. > */ > - IB_DEVICE_CROSS_CHANNEL = (1 << 27), > - IB_DEVICE_MANAGED_FLOW_STEERING = (1 << 29), > - IB_DEVICE_INTEGRITY_HANDOVER = (1 << 30), > - IB_DEVICE_ON_DEMAND_PAGING = (1ULL << 31), > - IB_DEVICE_SG_GAPS_REG = (1ULL << 32), > - IB_DEVICE_VIRTUAL_FUNCTION = (1ULL << 33), > + IB_DEVICE_CROSS_CHANNEL = 1 << 27, > + IB_DEVICE_MANAGED_FLOW_STEERING = > + IB_UVERBS_DEVICE_MANAGED_FLOW_STEERING, > + IB_DEVICE_INTEGRITY_HANDOVER = 1 << 30, > + IB_DEVICE_ON_DEMAND_PAGING = 1ULL << 31, > + IB_DEVICE_SG_GAPS_REG = 1ULL << 32, > + IB_DEVICE_VIRTUAL_FUNCTION = 1ULL << 33, > /* Deprecated. Please use IB_RAW_PACKET_CAP_SCATTER_FCS. */ > - IB_DEVICE_RAW_SCATTER_FCS = (1ULL << 34), > - IB_DEVICE_RDMA_NETDEV_OPA = (1ULL << 35), > + IB_DEVICE_RAW_SCATTER_FCS = IB_UVERBS_DEVICE_RAW_SCATTER_FCS, > + IB_DEVICE_RDMA_NETDEV_OPA = 1ULL << 35, > /* The device supports padding incoming writes to cacheline. */ > - IB_DEVICE_PCI_WRITE_END_PADDING = (1ULL << 36), > - IB_DEVICE_ALLOW_USER_UNREG = (1ULL << 37), > + IB_DEVICE_PCI_WRITE_END_PADDING = > + IB_UVERBS_DEVICE_PCI_WRITE_END_PADDING, > + IB_DEVICE_ALLOW_USER_UNREG = 1ULL << 37, > }; > > enum ib_atomic_cap { > diff --git a/include/uapi/rdma/ib_user_verbs.h b/include/uapi/rdma/ib_user_verbs.h > index ff549695f1ba..7f374cc1a9df 100644 > +++ b/include/uapi/rdma/ib_user_verbs.h > @@ -1298,6 +1298,63 @@ struct ib_uverbs_ex_modify_cq { > > #define IB_DEVICE_NAME_MAX 64 > > +enum ib_uverbs_device_cap_flags { > + IB_UVERBS_DEVICE_RESIZE_MAX_WR = 1 << 0, > + IB_UVERBS_DEVICE_BAD_PKEY_CNTR = 1 << 1, > + IB_UVERBS_DEVICE_BAD_QKEY_CNTR = 1 << 2, > + IB_UVERBS_DEVICE_RAW_MULTI = 1 << 3, > + IB_UVERBS_DEVICE_AUTO_PATH_MIG = 1 << 4, > + IB_UVERBS_DEVICE_CHANGE_PHY_PORT = 1 << 5, > + IB_UVERBS_DEVICE_UD_AV_PORT_ENFORCE = 1 << 6, > + IB_UVERBS_DEVICE_CURR_QP_STATE_MOD = 1 << 7, > + IB_UVERBS_DEVICE_SHUTDOWN_PORT = 1 << 8, > + /* IB_UVERBS_DEVICE_INIT_TYPE = 1 << 9, (not in use) */ > + IB_UVERBS_DEVICE_PORT_ACTIVE_EVENT = 1 << 10, > + IB_UVERBS_DEVICE_SYS_IMAGE_GUID = 1 << 11, > + IB_UVERBS_DEVICE_RC_RNR_NAK_GEN = 1 << 12, > + IB_UVERBS_DEVICE_SRQ_RESIZE = 1 << 13, > + IB_UVERBS_DEVICE_N_NOTIFY_CQ = 1 << 14, > + IB_UVERBS_DEVICE_MEM_WINDOW = 1 << 17, > + IB_UVERBS_DEVICE_UD_IP_CSUM = 1 << 18, > + IB_UVERBS_DEVICE_XRC = 1 << 20, > + IB_UVERBS_DEVICE_MEM_MGT_EXTENSIONS = 1 << 21, > + IB_UVERBS_DEVICE_MEM_WINDOW_TYPE_2A = 1 << 23, > + IB_UVERBS_DEVICE_MEM_WINDOW_TYPE_2B = 1 << 24, > + IB_UVERBS_DEVICE_RC_IP_CSUM = 1 << 25, > + /* Deprecated. Please use IB_UVERBS_RAW_PACKET_CAP_IP_CSUM. */ > + IB_UVERBS_DEVICE_RAW_IP_CSUM = 1 << 26, > + IB_UVERBS_DEVICE_MANAGED_FLOW_STEERING = 1 << 29, > + /* Deprecated. Please use IB_UVERBS_RAW_PACKET_CAP_SCATTER_FCS. */ > + IB_UVERBS_DEVICE_RAW_SCATTER_FCS = 1ULL << 34, > + IB_UVERBS_DEVICE_PCI_WRITE_END_PADDING = 1ULL << 36, > +}; > + > +#define IB_UVERBS_DEVICE_CAP_FLAGS_MASK (IB_UVERBS_DEVICE_RESIZE_MAX_WR | \ > + IB_UVERBS_DEVICE_BAD_PKEY_CNTR | \ > + IB_UVERBS_DEVICE_BAD_QKEY_CNTR | \ > + IB_UVERBS_DEVICE_RAW_MULTI | \ > + IB_UVERBS_DEVICE_AUTO_PATH_MIG | \ > + IB_UVERBS_DEVICE_CHANGE_PHY_PORT | \ > + IB_UVERBS_DEVICE_UD_AV_PORT_ENFORCE | \ > + IB_UVERBS_DEVICE_CURR_QP_STATE_MOD | \ > + IB_UVERBS_DEVICE_SHUTDOWN_PORT | \ > + IB_UVERBS_DEVICE_PORT_ACTIVE_EVENT | \ > + IB_UVERBS_DEVICE_SYS_IMAGE_GUID | \ > + IB_UVERBS_DEVICE_RC_RNR_NAK_GEN | \ > + IB_UVERBS_DEVICE_SRQ_RESIZE | \ > + IB_UVERBS_DEVICE_N_NOTIFY_CQ | \ > + IB_UVERBS_DEVICE_MEM_WINDOW | \ > + IB_UVERBS_DEVICE_UD_IP_CSUM | \ > + IB_UVERBS_DEVICE_XRC | \ > + IB_UVERBS_DEVICE_MEM_MGT_EXTENSIONS | \ > + IB_UVERBS_DEVICE_MEM_WINDOW_TYPE_2A | \ > + IB_UVERBS_DEVICE_MEM_WINDOW_TYPE_2B | \ > + IB_UVERBS_DEVICE_RC_IP_CSUM | \ > + IB_UVERBS_DEVICE_RAW_IP_CSUM | \ > + IB_UVERBS_DEVICE_MANAGED_FLOW_STEERING | \ > + IB_UVERBS_DEVICE_RAW_SCATTER_FCS | \ > + IB_UVERBS_DEVICE_PCI_WRITE_END_PADDING) This should be in the kernel header, or perhaps in uverbs_cmd.c It seems OK otherwise Thanks, Jason
On 2022/3/28 20:55, Jason Gunthorpe wrote:
> This should be in the kernel header, or perhaps in uverbs_cmd.c
Hi Jason,
OK, I will move it to the kernel header in my v3 patchset.
Best Regards,
Xiao Yang
diff --git a/drivers/infiniband/core/uverbs_cmd.c b/drivers/infiniband/core/uverbs_cmd.c index 6b6393176b3c..a1978a6f8e0c 100644 --- a/drivers/infiniband/core/uverbs_cmd.c +++ b/drivers/infiniband/core/uverbs_cmd.c @@ -337,7 +337,8 @@ static void copy_query_dev_fields(struct ib_ucontext *ucontext, resp->hw_ver = attr->hw_ver; resp->max_qp = attr->max_qp; resp->max_qp_wr = attr->max_qp_wr; - resp->device_cap_flags = lower_32_bits(attr->device_cap_flags); + resp->device_cap_flags = lower_32_bits(attr->device_cap_flags & + IB_UVERBS_DEVICE_CAP_FLAGS_MASK); resp->max_sge = min(attr->max_send_sge, attr->max_recv_sge); resp->max_sge_rd = attr->max_sge_rd; resp->max_cq = attr->max_cq; @@ -3618,7 +3619,8 @@ static int ib_uverbs_ex_query_device(struct uverbs_attr_bundle *attrs) resp.timestamp_mask = attr.timestamp_mask; resp.hca_core_clock = attr.hca_core_clock; - resp.device_cap_flags_ex = attr.device_cap_flags; + resp.device_cap_flags_ex = attr.device_cap_flags & + IB_UVERBS_DEVICE_CAP_FLAGS_MASK; resp.rss_caps.supported_qpts = attr.rss_caps.supported_qpts; resp.rss_caps.max_rwq_indirection_tables = attr.rss_caps.max_rwq_indirection_tables; diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h index e3ed65920558..c486a379df47 100644 --- a/include/rdma/ib_verbs.h +++ b/include/rdma/ib_verbs.h @@ -220,21 +220,21 @@ enum rdma_link_layer { }; enum ib_device_cap_flags { - IB_DEVICE_RESIZE_MAX_WR = (1 << 0), - IB_DEVICE_BAD_PKEY_CNTR = (1 << 1), - IB_DEVICE_BAD_QKEY_CNTR = (1 << 2), - IB_DEVICE_RAW_MULTI = (1 << 3), - IB_DEVICE_AUTO_PATH_MIG = (1 << 4), - IB_DEVICE_CHANGE_PHY_PORT = (1 << 5), - IB_DEVICE_UD_AV_PORT_ENFORCE = (1 << 6), - IB_DEVICE_CURR_QP_STATE_MOD = (1 << 7), - IB_DEVICE_SHUTDOWN_PORT = (1 << 8), - /* Not in use, former INIT_TYPE = (1 << 9),*/ - IB_DEVICE_PORT_ACTIVE_EVENT = (1 << 10), - IB_DEVICE_SYS_IMAGE_GUID = (1 << 11), - IB_DEVICE_RC_RNR_NAK_GEN = (1 << 12), - IB_DEVICE_SRQ_RESIZE = (1 << 13), - IB_DEVICE_N_NOTIFY_CQ = (1 << 14), + IB_DEVICE_RESIZE_MAX_WR = IB_UVERBS_DEVICE_RESIZE_MAX_WR, + IB_DEVICE_BAD_PKEY_CNTR = IB_UVERBS_DEVICE_BAD_PKEY_CNTR, + IB_DEVICE_BAD_QKEY_CNTR = IB_UVERBS_DEVICE_BAD_QKEY_CNTR, + IB_DEVICE_RAW_MULTI = IB_UVERBS_DEVICE_RAW_MULTI, + IB_DEVICE_AUTO_PATH_MIG = IB_UVERBS_DEVICE_AUTO_PATH_MIG, + IB_DEVICE_CHANGE_PHY_PORT = IB_UVERBS_DEVICE_CHANGE_PHY_PORT, + IB_DEVICE_UD_AV_PORT_ENFORCE = IB_UVERBS_DEVICE_UD_AV_PORT_ENFORCE, + IB_DEVICE_CURR_QP_STATE_MOD = IB_UVERBS_DEVICE_CURR_QP_STATE_MOD, + IB_DEVICE_SHUTDOWN_PORT = IB_UVERBS_DEVICE_SHUTDOWN_PORT, + /* IB_DEVICE_INIT_TYPE = IB_UVERBS_DEVICE_INIT_TYPE, (not in use) */ + IB_DEVICE_PORT_ACTIVE_EVENT = IB_UVERBS_DEVICE_PORT_ACTIVE_EVENT, + IB_DEVICE_SYS_IMAGE_GUID = IB_UVERBS_DEVICE_SYS_IMAGE_GUID, + IB_DEVICE_RC_RNR_NAK_GEN = IB_UVERBS_DEVICE_RC_RNR_NAK_GEN, + IB_DEVICE_SRQ_RESIZE = IB_UVERBS_DEVICE_SRQ_RESIZE, + IB_DEVICE_N_NOTIFY_CQ = IB_UVERBS_DEVICE_N_NOTIFY_CQ, /* * This device supports a per-device lkey or stag that can be @@ -243,9 +243,9 @@ enum ib_device_cap_flags { * instead of use the local_dma_lkey flag in the ib_pd structure, * which will always contain a usable lkey. */ - IB_DEVICE_LOCAL_DMA_LKEY = (1 << 15), - /* Reserved, old SEND_W_INV = (1 << 16),*/ - IB_DEVICE_MEM_WINDOW = (1 << 17), + IB_DEVICE_LOCAL_DMA_LKEY = 1 << 15, + /* Reserved, old SEND_W_INV = 1 << 16,*/ + IB_DEVICE_MEM_WINDOW = IB_UVERBS_DEVICE_MEM_WINDOW, /* * Devices should set IB_DEVICE_UD_IP_SUM if they support * insertion of UDP and TCP checksum on outgoing UD IPoIB @@ -253,9 +253,9 @@ enum ib_device_cap_flags { * incoming messages. Setting this flag implies that the * IPoIB driver may set NETIF_F_IP_CSUM for datagram mode. */ - IB_DEVICE_UD_IP_CSUM = (1 << 18), - IB_DEVICE_UD_TSO = (1 << 19), - IB_DEVICE_XRC = (1 << 20), + IB_DEVICE_UD_IP_CSUM = IB_UVERBS_DEVICE_UD_IP_CSUM, + IB_DEVICE_UD_TSO = 1 << 19, + IB_DEVICE_XRC = IB_UVERBS_DEVICE_XRC, /* * This device supports the IB "base memory management extension", @@ -266,31 +266,33 @@ enum ib_device_cap_flags { * IB_WR_RDMA_READ_WITH_INV verb for RDMA READs that invalidate the * stag. */ - IB_DEVICE_MEM_MGT_EXTENSIONS = (1 << 21), - IB_DEVICE_BLOCK_MULTICAST_LOOPBACK = (1 << 22), - IB_DEVICE_MEM_WINDOW_TYPE_2A = (1 << 23), - IB_DEVICE_MEM_WINDOW_TYPE_2B = (1 << 24), - IB_DEVICE_RC_IP_CSUM = (1 << 25), + IB_DEVICE_MEM_MGT_EXTENSIONS = IB_UVERBS_DEVICE_MEM_MGT_EXTENSIONS, + IB_DEVICE_BLOCK_MULTICAST_LOOPBACK = 1 << 22, + IB_DEVICE_MEM_WINDOW_TYPE_2A = IB_UVERBS_DEVICE_MEM_WINDOW_TYPE_2A, + IB_DEVICE_MEM_WINDOW_TYPE_2B = IB_UVERBS_DEVICE_MEM_WINDOW_TYPE_2B, + IB_DEVICE_RC_IP_CSUM = IB_UVERBS_DEVICE_RC_IP_CSUM, /* Deprecated. Please use IB_RAW_PACKET_CAP_IP_CSUM. */ - IB_DEVICE_RAW_IP_CSUM = (1 << 26), + IB_DEVICE_RAW_IP_CSUM = IB_UVERBS_DEVICE_RAW_IP_CSUM, /* * Devices should set IB_DEVICE_CROSS_CHANNEL if they * support execution of WQEs that involve synchronization * of I/O operations with single completion queue managed * by hardware. */ - IB_DEVICE_CROSS_CHANNEL = (1 << 27), - IB_DEVICE_MANAGED_FLOW_STEERING = (1 << 29), - IB_DEVICE_INTEGRITY_HANDOVER = (1 << 30), - IB_DEVICE_ON_DEMAND_PAGING = (1ULL << 31), - IB_DEVICE_SG_GAPS_REG = (1ULL << 32), - IB_DEVICE_VIRTUAL_FUNCTION = (1ULL << 33), + IB_DEVICE_CROSS_CHANNEL = 1 << 27, + IB_DEVICE_MANAGED_FLOW_STEERING = + IB_UVERBS_DEVICE_MANAGED_FLOW_STEERING, + IB_DEVICE_INTEGRITY_HANDOVER = 1 << 30, + IB_DEVICE_ON_DEMAND_PAGING = 1ULL << 31, + IB_DEVICE_SG_GAPS_REG = 1ULL << 32, + IB_DEVICE_VIRTUAL_FUNCTION = 1ULL << 33, /* Deprecated. Please use IB_RAW_PACKET_CAP_SCATTER_FCS. */ - IB_DEVICE_RAW_SCATTER_FCS = (1ULL << 34), - IB_DEVICE_RDMA_NETDEV_OPA = (1ULL << 35), + IB_DEVICE_RAW_SCATTER_FCS = IB_UVERBS_DEVICE_RAW_SCATTER_FCS, + IB_DEVICE_RDMA_NETDEV_OPA = 1ULL << 35, /* The device supports padding incoming writes to cacheline. */ - IB_DEVICE_PCI_WRITE_END_PADDING = (1ULL << 36), - IB_DEVICE_ALLOW_USER_UNREG = (1ULL << 37), + IB_DEVICE_PCI_WRITE_END_PADDING = + IB_UVERBS_DEVICE_PCI_WRITE_END_PADDING, + IB_DEVICE_ALLOW_USER_UNREG = 1ULL << 37, }; enum ib_atomic_cap { diff --git a/include/uapi/rdma/ib_user_verbs.h b/include/uapi/rdma/ib_user_verbs.h index ff549695f1ba..7f374cc1a9df 100644 --- a/include/uapi/rdma/ib_user_verbs.h +++ b/include/uapi/rdma/ib_user_verbs.h @@ -1298,6 +1298,63 @@ struct ib_uverbs_ex_modify_cq { #define IB_DEVICE_NAME_MAX 64 +enum ib_uverbs_device_cap_flags { + IB_UVERBS_DEVICE_RESIZE_MAX_WR = 1 << 0, + IB_UVERBS_DEVICE_BAD_PKEY_CNTR = 1 << 1, + IB_UVERBS_DEVICE_BAD_QKEY_CNTR = 1 << 2, + IB_UVERBS_DEVICE_RAW_MULTI = 1 << 3, + IB_UVERBS_DEVICE_AUTO_PATH_MIG = 1 << 4, + IB_UVERBS_DEVICE_CHANGE_PHY_PORT = 1 << 5, + IB_UVERBS_DEVICE_UD_AV_PORT_ENFORCE = 1 << 6, + IB_UVERBS_DEVICE_CURR_QP_STATE_MOD = 1 << 7, + IB_UVERBS_DEVICE_SHUTDOWN_PORT = 1 << 8, + /* IB_UVERBS_DEVICE_INIT_TYPE = 1 << 9, (not in use) */ + IB_UVERBS_DEVICE_PORT_ACTIVE_EVENT = 1 << 10, + IB_UVERBS_DEVICE_SYS_IMAGE_GUID = 1 << 11, + IB_UVERBS_DEVICE_RC_RNR_NAK_GEN = 1 << 12, + IB_UVERBS_DEVICE_SRQ_RESIZE = 1 << 13, + IB_UVERBS_DEVICE_N_NOTIFY_CQ = 1 << 14, + IB_UVERBS_DEVICE_MEM_WINDOW = 1 << 17, + IB_UVERBS_DEVICE_UD_IP_CSUM = 1 << 18, + IB_UVERBS_DEVICE_XRC = 1 << 20, + IB_UVERBS_DEVICE_MEM_MGT_EXTENSIONS = 1 << 21, + IB_UVERBS_DEVICE_MEM_WINDOW_TYPE_2A = 1 << 23, + IB_UVERBS_DEVICE_MEM_WINDOW_TYPE_2B = 1 << 24, + IB_UVERBS_DEVICE_RC_IP_CSUM = 1 << 25, + /* Deprecated. Please use IB_UVERBS_RAW_PACKET_CAP_IP_CSUM. */ + IB_UVERBS_DEVICE_RAW_IP_CSUM = 1 << 26, + IB_UVERBS_DEVICE_MANAGED_FLOW_STEERING = 1 << 29, + /* Deprecated. Please use IB_UVERBS_RAW_PACKET_CAP_SCATTER_FCS. */ + IB_UVERBS_DEVICE_RAW_SCATTER_FCS = 1ULL << 34, + IB_UVERBS_DEVICE_PCI_WRITE_END_PADDING = 1ULL << 36, +}; + +#define IB_UVERBS_DEVICE_CAP_FLAGS_MASK (IB_UVERBS_DEVICE_RESIZE_MAX_WR | \ + IB_UVERBS_DEVICE_BAD_PKEY_CNTR | \ + IB_UVERBS_DEVICE_BAD_QKEY_CNTR | \ + IB_UVERBS_DEVICE_RAW_MULTI | \ + IB_UVERBS_DEVICE_AUTO_PATH_MIG | \ + IB_UVERBS_DEVICE_CHANGE_PHY_PORT | \ + IB_UVERBS_DEVICE_UD_AV_PORT_ENFORCE | \ + IB_UVERBS_DEVICE_CURR_QP_STATE_MOD | \ + IB_UVERBS_DEVICE_SHUTDOWN_PORT | \ + IB_UVERBS_DEVICE_PORT_ACTIVE_EVENT | \ + IB_UVERBS_DEVICE_SYS_IMAGE_GUID | \ + IB_UVERBS_DEVICE_RC_RNR_NAK_GEN | \ + IB_UVERBS_DEVICE_SRQ_RESIZE | \ + IB_UVERBS_DEVICE_N_NOTIFY_CQ | \ + IB_UVERBS_DEVICE_MEM_WINDOW | \ + IB_UVERBS_DEVICE_UD_IP_CSUM | \ + IB_UVERBS_DEVICE_XRC | \ + IB_UVERBS_DEVICE_MEM_MGT_EXTENSIONS | \ + IB_UVERBS_DEVICE_MEM_WINDOW_TYPE_2A | \ + IB_UVERBS_DEVICE_MEM_WINDOW_TYPE_2B | \ + IB_UVERBS_DEVICE_RC_IP_CSUM | \ + IB_UVERBS_DEVICE_RAW_IP_CSUM | \ + IB_UVERBS_DEVICE_MANAGED_FLOW_STEERING | \ + IB_UVERBS_DEVICE_RAW_SCATTER_FCS | \ + IB_UVERBS_DEVICE_PCI_WRITE_END_PADDING) + enum ib_uverbs_raw_packet_caps { IB_UVERBS_RAW_PACKET_CAP_CVLAN_STRIPPING = 1 << 0, IB_UVERBS_RAW_PACKET_CAP_SCATTER_FCS = 1 << 1,
1)Part of enum ib_device_cap_flags are used by ibv_query_device(3) or ibv_query_device_ex(3), so we define them in include/uapi/rdma/ib_user_verbs.h and only expose them to userspace. 2)Reformat enum ib_device_cap_flags by removing the indent before '='. Signed-off-by: Xiao Yang <yangx.jy@fujitsu.com> --- drivers/infiniband/core/uverbs_cmd.c | 6 ++- include/rdma/ib_verbs.h | 76 ++++++++++++++-------------- include/uapi/rdma/ib_user_verbs.h | 57 +++++++++++++++++++++ 3 files changed, 100 insertions(+), 39 deletions(-)