162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 262306a36Sopenharmony_ci#ifndef _UAPI_RDMA_NETLINK_H 362306a36Sopenharmony_ci#define _UAPI_RDMA_NETLINK_H 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci#include <linux/types.h> 662306a36Sopenharmony_ci 762306a36Sopenharmony_cienum { 862306a36Sopenharmony_ci RDMA_NL_IWCM = 2, 962306a36Sopenharmony_ci RDMA_NL_RSVD, 1062306a36Sopenharmony_ci RDMA_NL_LS, /* RDMA Local Services */ 1162306a36Sopenharmony_ci RDMA_NL_NLDEV, /* RDMA device interface */ 1262306a36Sopenharmony_ci RDMA_NL_NUM_CLIENTS 1362306a36Sopenharmony_ci}; 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_cienum { 1662306a36Sopenharmony_ci RDMA_NL_GROUP_IWPM = 2, 1762306a36Sopenharmony_ci RDMA_NL_GROUP_LS, 1862306a36Sopenharmony_ci RDMA_NL_NUM_GROUPS 1962306a36Sopenharmony_ci}; 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ci#define RDMA_NL_GET_CLIENT(type) ((type & (((1 << 6) - 1) << 10)) >> 10) 2262306a36Sopenharmony_ci#define RDMA_NL_GET_OP(type) (type & ((1 << 10) - 1)) 2362306a36Sopenharmony_ci#define RDMA_NL_GET_TYPE(client, op) ((client << 10) + op) 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_ci/* The minimum version that the iwpm kernel supports */ 2662306a36Sopenharmony_ci#define IWPM_UABI_VERSION_MIN 3 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci/* The latest version that the iwpm kernel supports */ 2962306a36Sopenharmony_ci#define IWPM_UABI_VERSION 4 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci/* iwarp port mapper message flags */ 3262306a36Sopenharmony_cienum { 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ci /* Do not map the port for this IWPM request */ 3562306a36Sopenharmony_ci IWPM_FLAGS_NO_PORT_MAP = (1 << 0), 3662306a36Sopenharmony_ci}; 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ci/* iwarp port mapper op-codes */ 3962306a36Sopenharmony_cienum { 4062306a36Sopenharmony_ci RDMA_NL_IWPM_REG_PID = 0, 4162306a36Sopenharmony_ci RDMA_NL_IWPM_ADD_MAPPING, 4262306a36Sopenharmony_ci RDMA_NL_IWPM_QUERY_MAPPING, 4362306a36Sopenharmony_ci RDMA_NL_IWPM_REMOVE_MAPPING, 4462306a36Sopenharmony_ci RDMA_NL_IWPM_REMOTE_INFO, 4562306a36Sopenharmony_ci RDMA_NL_IWPM_HANDLE_ERR, 4662306a36Sopenharmony_ci RDMA_NL_IWPM_MAPINFO, 4762306a36Sopenharmony_ci RDMA_NL_IWPM_MAPINFO_NUM, 4862306a36Sopenharmony_ci RDMA_NL_IWPM_HELLO, 4962306a36Sopenharmony_ci RDMA_NL_IWPM_NUM_OPS 5062306a36Sopenharmony_ci}; 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_cienum { 5362306a36Sopenharmony_ci IWPM_NLA_REG_PID_UNSPEC = 0, 5462306a36Sopenharmony_ci IWPM_NLA_REG_PID_SEQ, 5562306a36Sopenharmony_ci IWPM_NLA_REG_IF_NAME, 5662306a36Sopenharmony_ci IWPM_NLA_REG_IBDEV_NAME, 5762306a36Sopenharmony_ci IWPM_NLA_REG_ULIB_NAME, 5862306a36Sopenharmony_ci IWPM_NLA_REG_PID_MAX 5962306a36Sopenharmony_ci}; 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_cienum { 6262306a36Sopenharmony_ci IWPM_NLA_RREG_PID_UNSPEC = 0, 6362306a36Sopenharmony_ci IWPM_NLA_RREG_PID_SEQ, 6462306a36Sopenharmony_ci IWPM_NLA_RREG_IBDEV_NAME, 6562306a36Sopenharmony_ci IWPM_NLA_RREG_ULIB_NAME, 6662306a36Sopenharmony_ci IWPM_NLA_RREG_ULIB_VER, 6762306a36Sopenharmony_ci IWPM_NLA_RREG_PID_ERR, 6862306a36Sopenharmony_ci IWPM_NLA_RREG_PID_MAX 6962306a36Sopenharmony_ci 7062306a36Sopenharmony_ci}; 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_cienum { 7362306a36Sopenharmony_ci IWPM_NLA_MANAGE_MAPPING_UNSPEC = 0, 7462306a36Sopenharmony_ci IWPM_NLA_MANAGE_MAPPING_SEQ, 7562306a36Sopenharmony_ci IWPM_NLA_MANAGE_ADDR, 7662306a36Sopenharmony_ci IWPM_NLA_MANAGE_FLAGS, 7762306a36Sopenharmony_ci IWPM_NLA_MANAGE_MAPPING_MAX 7862306a36Sopenharmony_ci}; 7962306a36Sopenharmony_ci 8062306a36Sopenharmony_cienum { 8162306a36Sopenharmony_ci IWPM_NLA_RMANAGE_MAPPING_UNSPEC = 0, 8262306a36Sopenharmony_ci IWPM_NLA_RMANAGE_MAPPING_SEQ, 8362306a36Sopenharmony_ci IWPM_NLA_RMANAGE_ADDR, 8462306a36Sopenharmony_ci IWPM_NLA_RMANAGE_MAPPED_LOC_ADDR, 8562306a36Sopenharmony_ci /* The following maintains bisectability of rdma-core */ 8662306a36Sopenharmony_ci IWPM_NLA_MANAGE_MAPPED_LOC_ADDR = IWPM_NLA_RMANAGE_MAPPED_LOC_ADDR, 8762306a36Sopenharmony_ci IWPM_NLA_RMANAGE_MAPPING_ERR, 8862306a36Sopenharmony_ci IWPM_NLA_RMANAGE_MAPPING_MAX 8962306a36Sopenharmony_ci}; 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_ci#define IWPM_NLA_MAPINFO_SEND_MAX 3 9262306a36Sopenharmony_ci#define IWPM_NLA_REMOVE_MAPPING_MAX 3 9362306a36Sopenharmony_ci 9462306a36Sopenharmony_cienum { 9562306a36Sopenharmony_ci IWPM_NLA_QUERY_MAPPING_UNSPEC = 0, 9662306a36Sopenharmony_ci IWPM_NLA_QUERY_MAPPING_SEQ, 9762306a36Sopenharmony_ci IWPM_NLA_QUERY_LOCAL_ADDR, 9862306a36Sopenharmony_ci IWPM_NLA_QUERY_REMOTE_ADDR, 9962306a36Sopenharmony_ci IWPM_NLA_QUERY_FLAGS, 10062306a36Sopenharmony_ci IWPM_NLA_QUERY_MAPPING_MAX, 10162306a36Sopenharmony_ci}; 10262306a36Sopenharmony_ci 10362306a36Sopenharmony_cienum { 10462306a36Sopenharmony_ci IWPM_NLA_RQUERY_MAPPING_UNSPEC = 0, 10562306a36Sopenharmony_ci IWPM_NLA_RQUERY_MAPPING_SEQ, 10662306a36Sopenharmony_ci IWPM_NLA_RQUERY_LOCAL_ADDR, 10762306a36Sopenharmony_ci IWPM_NLA_RQUERY_REMOTE_ADDR, 10862306a36Sopenharmony_ci IWPM_NLA_RQUERY_MAPPED_LOC_ADDR, 10962306a36Sopenharmony_ci IWPM_NLA_RQUERY_MAPPED_REM_ADDR, 11062306a36Sopenharmony_ci IWPM_NLA_RQUERY_MAPPING_ERR, 11162306a36Sopenharmony_ci IWPM_NLA_RQUERY_MAPPING_MAX 11262306a36Sopenharmony_ci}; 11362306a36Sopenharmony_ci 11462306a36Sopenharmony_cienum { 11562306a36Sopenharmony_ci IWPM_NLA_MAPINFO_REQ_UNSPEC = 0, 11662306a36Sopenharmony_ci IWPM_NLA_MAPINFO_ULIB_NAME, 11762306a36Sopenharmony_ci IWPM_NLA_MAPINFO_ULIB_VER, 11862306a36Sopenharmony_ci IWPM_NLA_MAPINFO_REQ_MAX 11962306a36Sopenharmony_ci}; 12062306a36Sopenharmony_ci 12162306a36Sopenharmony_cienum { 12262306a36Sopenharmony_ci IWPM_NLA_MAPINFO_UNSPEC = 0, 12362306a36Sopenharmony_ci IWPM_NLA_MAPINFO_LOCAL_ADDR, 12462306a36Sopenharmony_ci IWPM_NLA_MAPINFO_MAPPED_ADDR, 12562306a36Sopenharmony_ci IWPM_NLA_MAPINFO_FLAGS, 12662306a36Sopenharmony_ci IWPM_NLA_MAPINFO_MAX 12762306a36Sopenharmony_ci}; 12862306a36Sopenharmony_ci 12962306a36Sopenharmony_cienum { 13062306a36Sopenharmony_ci IWPM_NLA_MAPINFO_NUM_UNSPEC = 0, 13162306a36Sopenharmony_ci IWPM_NLA_MAPINFO_SEQ, 13262306a36Sopenharmony_ci IWPM_NLA_MAPINFO_SEND_NUM, 13362306a36Sopenharmony_ci IWPM_NLA_MAPINFO_ACK_NUM, 13462306a36Sopenharmony_ci IWPM_NLA_MAPINFO_NUM_MAX 13562306a36Sopenharmony_ci}; 13662306a36Sopenharmony_ci 13762306a36Sopenharmony_cienum { 13862306a36Sopenharmony_ci IWPM_NLA_ERR_UNSPEC = 0, 13962306a36Sopenharmony_ci IWPM_NLA_ERR_SEQ, 14062306a36Sopenharmony_ci IWPM_NLA_ERR_CODE, 14162306a36Sopenharmony_ci IWPM_NLA_ERR_MAX 14262306a36Sopenharmony_ci}; 14362306a36Sopenharmony_ci 14462306a36Sopenharmony_cienum { 14562306a36Sopenharmony_ci IWPM_NLA_HELLO_UNSPEC = 0, 14662306a36Sopenharmony_ci IWPM_NLA_HELLO_ABI_VERSION, 14762306a36Sopenharmony_ci IWPM_NLA_HELLO_MAX 14862306a36Sopenharmony_ci}; 14962306a36Sopenharmony_ci 15062306a36Sopenharmony_ci/* For RDMA_NLDEV_ATTR_DEV_NODE_TYPE */ 15162306a36Sopenharmony_cienum { 15262306a36Sopenharmony_ci /* IB values map to NodeInfo:NodeType. */ 15362306a36Sopenharmony_ci RDMA_NODE_IB_CA = 1, 15462306a36Sopenharmony_ci RDMA_NODE_IB_SWITCH, 15562306a36Sopenharmony_ci RDMA_NODE_IB_ROUTER, 15662306a36Sopenharmony_ci RDMA_NODE_RNIC, 15762306a36Sopenharmony_ci RDMA_NODE_USNIC, 15862306a36Sopenharmony_ci RDMA_NODE_USNIC_UDP, 15962306a36Sopenharmony_ci RDMA_NODE_UNSPECIFIED, 16062306a36Sopenharmony_ci}; 16162306a36Sopenharmony_ci 16262306a36Sopenharmony_ci/* 16362306a36Sopenharmony_ci * Local service operations: 16462306a36Sopenharmony_ci * RESOLVE - The client requests the local service to resolve a path. 16562306a36Sopenharmony_ci * SET_TIMEOUT - The local service requests the client to set the timeout. 16662306a36Sopenharmony_ci * IP_RESOLVE - The client requests the local service to resolve an IP to GID. 16762306a36Sopenharmony_ci */ 16862306a36Sopenharmony_cienum { 16962306a36Sopenharmony_ci RDMA_NL_LS_OP_RESOLVE = 0, 17062306a36Sopenharmony_ci RDMA_NL_LS_OP_SET_TIMEOUT, 17162306a36Sopenharmony_ci RDMA_NL_LS_OP_IP_RESOLVE, 17262306a36Sopenharmony_ci RDMA_NL_LS_NUM_OPS 17362306a36Sopenharmony_ci}; 17462306a36Sopenharmony_ci 17562306a36Sopenharmony_ci/* Local service netlink message flags */ 17662306a36Sopenharmony_ci#define RDMA_NL_LS_F_ERR 0x0100 /* Failed response */ 17762306a36Sopenharmony_ci 17862306a36Sopenharmony_ci/* 17962306a36Sopenharmony_ci * Local service resolve operation family header. 18062306a36Sopenharmony_ci * The layout for the resolve operation: 18162306a36Sopenharmony_ci * nlmsg header 18262306a36Sopenharmony_ci * family header 18362306a36Sopenharmony_ci * attributes 18462306a36Sopenharmony_ci */ 18562306a36Sopenharmony_ci 18662306a36Sopenharmony_ci/* 18762306a36Sopenharmony_ci * Local service path use: 18862306a36Sopenharmony_ci * Specify how the path(s) will be used. 18962306a36Sopenharmony_ci * ALL - For connected CM operation (6 pathrecords) 19062306a36Sopenharmony_ci * UNIDIRECTIONAL - For unidirectional UD (1 pathrecord) 19162306a36Sopenharmony_ci * GMP - For miscellaneous GMP like operation (at least 1 reversible 19262306a36Sopenharmony_ci * pathrecord) 19362306a36Sopenharmony_ci */ 19462306a36Sopenharmony_cienum { 19562306a36Sopenharmony_ci LS_RESOLVE_PATH_USE_ALL = 0, 19662306a36Sopenharmony_ci LS_RESOLVE_PATH_USE_UNIDIRECTIONAL, 19762306a36Sopenharmony_ci LS_RESOLVE_PATH_USE_GMP, 19862306a36Sopenharmony_ci LS_RESOLVE_PATH_USE_MAX 19962306a36Sopenharmony_ci}; 20062306a36Sopenharmony_ci 20162306a36Sopenharmony_ci#define LS_DEVICE_NAME_MAX 64 20262306a36Sopenharmony_ci 20362306a36Sopenharmony_cistruct rdma_ls_resolve_header { 20462306a36Sopenharmony_ci __u8 device_name[LS_DEVICE_NAME_MAX]; 20562306a36Sopenharmony_ci __u8 port_num; 20662306a36Sopenharmony_ci __u8 path_use; 20762306a36Sopenharmony_ci}; 20862306a36Sopenharmony_ci 20962306a36Sopenharmony_cistruct rdma_ls_ip_resolve_header { 21062306a36Sopenharmony_ci __u32 ifindex; 21162306a36Sopenharmony_ci}; 21262306a36Sopenharmony_ci 21362306a36Sopenharmony_ci/* Local service attribute type */ 21462306a36Sopenharmony_ci#define RDMA_NLA_F_MANDATORY (1 << 13) 21562306a36Sopenharmony_ci#define RDMA_NLA_TYPE_MASK (~(NLA_F_NESTED | NLA_F_NET_BYTEORDER | \ 21662306a36Sopenharmony_ci RDMA_NLA_F_MANDATORY)) 21762306a36Sopenharmony_ci 21862306a36Sopenharmony_ci/* 21962306a36Sopenharmony_ci * Local service attributes: 22062306a36Sopenharmony_ci * Attr Name Size Byte order 22162306a36Sopenharmony_ci * ----------------------------------------------------- 22262306a36Sopenharmony_ci * PATH_RECORD struct ib_path_rec_data 22362306a36Sopenharmony_ci * TIMEOUT u32 cpu 22462306a36Sopenharmony_ci * SERVICE_ID u64 cpu 22562306a36Sopenharmony_ci * DGID u8[16] BE 22662306a36Sopenharmony_ci * SGID u8[16] BE 22762306a36Sopenharmony_ci * TCLASS u8 22862306a36Sopenharmony_ci * PKEY u16 cpu 22962306a36Sopenharmony_ci * QOS_CLASS u16 cpu 23062306a36Sopenharmony_ci * IPV4 u32 BE 23162306a36Sopenharmony_ci * IPV6 u8[16] BE 23262306a36Sopenharmony_ci */ 23362306a36Sopenharmony_cienum { 23462306a36Sopenharmony_ci LS_NLA_TYPE_UNSPEC = 0, 23562306a36Sopenharmony_ci LS_NLA_TYPE_PATH_RECORD, 23662306a36Sopenharmony_ci LS_NLA_TYPE_TIMEOUT, 23762306a36Sopenharmony_ci LS_NLA_TYPE_SERVICE_ID, 23862306a36Sopenharmony_ci LS_NLA_TYPE_DGID, 23962306a36Sopenharmony_ci LS_NLA_TYPE_SGID, 24062306a36Sopenharmony_ci LS_NLA_TYPE_TCLASS, 24162306a36Sopenharmony_ci LS_NLA_TYPE_PKEY, 24262306a36Sopenharmony_ci LS_NLA_TYPE_QOS_CLASS, 24362306a36Sopenharmony_ci LS_NLA_TYPE_IPV4, 24462306a36Sopenharmony_ci LS_NLA_TYPE_IPV6, 24562306a36Sopenharmony_ci LS_NLA_TYPE_MAX 24662306a36Sopenharmony_ci}; 24762306a36Sopenharmony_ci 24862306a36Sopenharmony_ci/* Local service DGID/SGID attribute: big endian */ 24962306a36Sopenharmony_cistruct rdma_nla_ls_gid { 25062306a36Sopenharmony_ci __u8 gid[16]; 25162306a36Sopenharmony_ci}; 25262306a36Sopenharmony_ci 25362306a36Sopenharmony_cienum rdma_nldev_command { 25462306a36Sopenharmony_ci RDMA_NLDEV_CMD_UNSPEC, 25562306a36Sopenharmony_ci 25662306a36Sopenharmony_ci RDMA_NLDEV_CMD_GET, /* can dump */ 25762306a36Sopenharmony_ci RDMA_NLDEV_CMD_SET, 25862306a36Sopenharmony_ci 25962306a36Sopenharmony_ci RDMA_NLDEV_CMD_NEWLINK, 26062306a36Sopenharmony_ci 26162306a36Sopenharmony_ci RDMA_NLDEV_CMD_DELLINK, 26262306a36Sopenharmony_ci 26362306a36Sopenharmony_ci RDMA_NLDEV_CMD_PORT_GET, /* can dump */ 26462306a36Sopenharmony_ci 26562306a36Sopenharmony_ci RDMA_NLDEV_CMD_SYS_GET, 26662306a36Sopenharmony_ci RDMA_NLDEV_CMD_SYS_SET, 26762306a36Sopenharmony_ci 26862306a36Sopenharmony_ci /* 8 is free to use */ 26962306a36Sopenharmony_ci 27062306a36Sopenharmony_ci RDMA_NLDEV_CMD_RES_GET = 9, /* can dump */ 27162306a36Sopenharmony_ci 27262306a36Sopenharmony_ci RDMA_NLDEV_CMD_RES_QP_GET, /* can dump */ 27362306a36Sopenharmony_ci 27462306a36Sopenharmony_ci RDMA_NLDEV_CMD_RES_CM_ID_GET, /* can dump */ 27562306a36Sopenharmony_ci 27662306a36Sopenharmony_ci RDMA_NLDEV_CMD_RES_CQ_GET, /* can dump */ 27762306a36Sopenharmony_ci 27862306a36Sopenharmony_ci RDMA_NLDEV_CMD_RES_MR_GET, /* can dump */ 27962306a36Sopenharmony_ci 28062306a36Sopenharmony_ci RDMA_NLDEV_CMD_RES_PD_GET, /* can dump */ 28162306a36Sopenharmony_ci 28262306a36Sopenharmony_ci RDMA_NLDEV_CMD_GET_CHARDEV, 28362306a36Sopenharmony_ci 28462306a36Sopenharmony_ci RDMA_NLDEV_CMD_STAT_SET, 28562306a36Sopenharmony_ci 28662306a36Sopenharmony_ci RDMA_NLDEV_CMD_STAT_GET, /* can dump */ 28762306a36Sopenharmony_ci 28862306a36Sopenharmony_ci RDMA_NLDEV_CMD_STAT_DEL, 28962306a36Sopenharmony_ci 29062306a36Sopenharmony_ci RDMA_NLDEV_CMD_RES_QP_GET_RAW, 29162306a36Sopenharmony_ci 29262306a36Sopenharmony_ci RDMA_NLDEV_CMD_RES_CQ_GET_RAW, 29362306a36Sopenharmony_ci 29462306a36Sopenharmony_ci RDMA_NLDEV_CMD_RES_MR_GET_RAW, 29562306a36Sopenharmony_ci 29662306a36Sopenharmony_ci RDMA_NLDEV_CMD_RES_CTX_GET, /* can dump */ 29762306a36Sopenharmony_ci 29862306a36Sopenharmony_ci RDMA_NLDEV_CMD_RES_SRQ_GET, /* can dump */ 29962306a36Sopenharmony_ci 30062306a36Sopenharmony_ci RDMA_NLDEV_CMD_STAT_GET_STATUS, 30162306a36Sopenharmony_ci 30262306a36Sopenharmony_ci RDMA_NLDEV_NUM_OPS 30362306a36Sopenharmony_ci}; 30462306a36Sopenharmony_ci 30562306a36Sopenharmony_cienum rdma_nldev_print_type { 30662306a36Sopenharmony_ci RDMA_NLDEV_PRINT_TYPE_UNSPEC, 30762306a36Sopenharmony_ci RDMA_NLDEV_PRINT_TYPE_HEX, 30862306a36Sopenharmony_ci}; 30962306a36Sopenharmony_ci 31062306a36Sopenharmony_cienum rdma_nldev_attr { 31162306a36Sopenharmony_ci /* don't change the order or add anything between, this is ABI! */ 31262306a36Sopenharmony_ci RDMA_NLDEV_ATTR_UNSPEC, 31362306a36Sopenharmony_ci 31462306a36Sopenharmony_ci /* Pad attribute for 64b alignment */ 31562306a36Sopenharmony_ci RDMA_NLDEV_ATTR_PAD = RDMA_NLDEV_ATTR_UNSPEC, 31662306a36Sopenharmony_ci 31762306a36Sopenharmony_ci /* Identifier for ib_device */ 31862306a36Sopenharmony_ci RDMA_NLDEV_ATTR_DEV_INDEX, /* u32 */ 31962306a36Sopenharmony_ci 32062306a36Sopenharmony_ci RDMA_NLDEV_ATTR_DEV_NAME, /* string */ 32162306a36Sopenharmony_ci /* 32262306a36Sopenharmony_ci * Device index together with port index are identifiers 32362306a36Sopenharmony_ci * for port/link properties. 32462306a36Sopenharmony_ci * 32562306a36Sopenharmony_ci * For RDMA_NLDEV_CMD_GET commamnd, port index will return number 32662306a36Sopenharmony_ci * of available ports in ib_device, while for port specific operations, 32762306a36Sopenharmony_ci * it will be real port index as it appears in sysfs. Port index follows 32862306a36Sopenharmony_ci * sysfs notation and starts from 1 for the first port. 32962306a36Sopenharmony_ci */ 33062306a36Sopenharmony_ci RDMA_NLDEV_ATTR_PORT_INDEX, /* u32 */ 33162306a36Sopenharmony_ci 33262306a36Sopenharmony_ci /* 33362306a36Sopenharmony_ci * Device and port capabilities 33462306a36Sopenharmony_ci * 33562306a36Sopenharmony_ci * When used for port info, first 32-bits are CapabilityMask followed by 33662306a36Sopenharmony_ci * 16-bit CapabilityMask2. 33762306a36Sopenharmony_ci */ 33862306a36Sopenharmony_ci RDMA_NLDEV_ATTR_CAP_FLAGS, /* u64 */ 33962306a36Sopenharmony_ci 34062306a36Sopenharmony_ci /* 34162306a36Sopenharmony_ci * FW version 34262306a36Sopenharmony_ci */ 34362306a36Sopenharmony_ci RDMA_NLDEV_ATTR_FW_VERSION, /* string */ 34462306a36Sopenharmony_ci 34562306a36Sopenharmony_ci /* 34662306a36Sopenharmony_ci * Node GUID (in host byte order) associated with the RDMA device. 34762306a36Sopenharmony_ci */ 34862306a36Sopenharmony_ci RDMA_NLDEV_ATTR_NODE_GUID, /* u64 */ 34962306a36Sopenharmony_ci 35062306a36Sopenharmony_ci /* 35162306a36Sopenharmony_ci * System image GUID (in host byte order) associated with 35262306a36Sopenharmony_ci * this RDMA device and other devices which are part of a 35362306a36Sopenharmony_ci * single system. 35462306a36Sopenharmony_ci */ 35562306a36Sopenharmony_ci RDMA_NLDEV_ATTR_SYS_IMAGE_GUID, /* u64 */ 35662306a36Sopenharmony_ci 35762306a36Sopenharmony_ci /* 35862306a36Sopenharmony_ci * Subnet prefix (in host byte order) 35962306a36Sopenharmony_ci */ 36062306a36Sopenharmony_ci RDMA_NLDEV_ATTR_SUBNET_PREFIX, /* u64 */ 36162306a36Sopenharmony_ci 36262306a36Sopenharmony_ci /* 36362306a36Sopenharmony_ci * Local Identifier (LID), 36462306a36Sopenharmony_ci * According to IB specification, It is 16-bit address assigned 36562306a36Sopenharmony_ci * by the Subnet Manager. Extended to be 32-bit for OmniPath users. 36662306a36Sopenharmony_ci */ 36762306a36Sopenharmony_ci RDMA_NLDEV_ATTR_LID, /* u32 */ 36862306a36Sopenharmony_ci RDMA_NLDEV_ATTR_SM_LID, /* u32 */ 36962306a36Sopenharmony_ci 37062306a36Sopenharmony_ci /* 37162306a36Sopenharmony_ci * LID mask control (LMC) 37262306a36Sopenharmony_ci */ 37362306a36Sopenharmony_ci RDMA_NLDEV_ATTR_LMC, /* u8 */ 37462306a36Sopenharmony_ci 37562306a36Sopenharmony_ci RDMA_NLDEV_ATTR_PORT_STATE, /* u8 */ 37662306a36Sopenharmony_ci RDMA_NLDEV_ATTR_PORT_PHYS_STATE, /* u8 */ 37762306a36Sopenharmony_ci 37862306a36Sopenharmony_ci RDMA_NLDEV_ATTR_DEV_NODE_TYPE, /* u8 */ 37962306a36Sopenharmony_ci 38062306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_SUMMARY, /* nested table */ 38162306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_SUMMARY_ENTRY, /* nested table */ 38262306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_SUMMARY_ENTRY_NAME, /* string */ 38362306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_SUMMARY_ENTRY_CURR, /* u64 */ 38462306a36Sopenharmony_ci 38562306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_QP, /* nested table */ 38662306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_QP_ENTRY, /* nested table */ 38762306a36Sopenharmony_ci /* 38862306a36Sopenharmony_ci * Local QPN 38962306a36Sopenharmony_ci */ 39062306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_LQPN, /* u32 */ 39162306a36Sopenharmony_ci /* 39262306a36Sopenharmony_ci * Remote QPN, 39362306a36Sopenharmony_ci * Applicable for RC and UC only IBTA 11.2.5.3 QUERY QUEUE PAIR 39462306a36Sopenharmony_ci */ 39562306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_RQPN, /* u32 */ 39662306a36Sopenharmony_ci /* 39762306a36Sopenharmony_ci * Receive Queue PSN, 39862306a36Sopenharmony_ci * Applicable for RC and UC only 11.2.5.3 QUERY QUEUE PAIR 39962306a36Sopenharmony_ci */ 40062306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_RQ_PSN, /* u32 */ 40162306a36Sopenharmony_ci /* 40262306a36Sopenharmony_ci * Send Queue PSN 40362306a36Sopenharmony_ci */ 40462306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_SQ_PSN, /* u32 */ 40562306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_PATH_MIG_STATE, /* u8 */ 40662306a36Sopenharmony_ci /* 40762306a36Sopenharmony_ci * QP types as visible to RDMA/core, the reserved QPT 40862306a36Sopenharmony_ci * are not exported through this interface. 40962306a36Sopenharmony_ci */ 41062306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_TYPE, /* u8 */ 41162306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_STATE, /* u8 */ 41262306a36Sopenharmony_ci /* 41362306a36Sopenharmony_ci * Process ID which created object, 41462306a36Sopenharmony_ci * in case of kernel origin, PID won't exist. 41562306a36Sopenharmony_ci */ 41662306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_PID, /* u32 */ 41762306a36Sopenharmony_ci /* 41862306a36Sopenharmony_ci * The name of process created following resource. 41962306a36Sopenharmony_ci * It will exist only for kernel objects. 42062306a36Sopenharmony_ci * For user created objects, the user is supposed 42162306a36Sopenharmony_ci * to read /proc/PID/comm file. 42262306a36Sopenharmony_ci */ 42362306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_KERN_NAME, /* string */ 42462306a36Sopenharmony_ci 42562306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_CM_ID, /* nested table */ 42662306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_CM_ID_ENTRY, /* nested table */ 42762306a36Sopenharmony_ci /* 42862306a36Sopenharmony_ci * rdma_cm_id port space. 42962306a36Sopenharmony_ci */ 43062306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_PS, /* u32 */ 43162306a36Sopenharmony_ci /* 43262306a36Sopenharmony_ci * Source and destination socket addresses 43362306a36Sopenharmony_ci */ 43462306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_SRC_ADDR, /* __kernel_sockaddr_storage */ 43562306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_DST_ADDR, /* __kernel_sockaddr_storage */ 43662306a36Sopenharmony_ci 43762306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_CQ, /* nested table */ 43862306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_CQ_ENTRY, /* nested table */ 43962306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_CQE, /* u32 */ 44062306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_USECNT, /* u64 */ 44162306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_POLL_CTX, /* u8 */ 44262306a36Sopenharmony_ci 44362306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_MR, /* nested table */ 44462306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_MR_ENTRY, /* nested table */ 44562306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_RKEY, /* u32 */ 44662306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_LKEY, /* u32 */ 44762306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_IOVA, /* u64 */ 44862306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_MRLEN, /* u64 */ 44962306a36Sopenharmony_ci 45062306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_PD, /* nested table */ 45162306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_PD_ENTRY, /* nested table */ 45262306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_LOCAL_DMA_LKEY, /* u32 */ 45362306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_UNSAFE_GLOBAL_RKEY, /* u32 */ 45462306a36Sopenharmony_ci /* 45562306a36Sopenharmony_ci * Provides logical name and index of netdevice which is 45662306a36Sopenharmony_ci * connected to physical port. This information is relevant 45762306a36Sopenharmony_ci * for RoCE and iWARP. 45862306a36Sopenharmony_ci * 45962306a36Sopenharmony_ci * The netdevices which are associated with containers are 46062306a36Sopenharmony_ci * supposed to be exported together with GID table once it 46162306a36Sopenharmony_ci * will be exposed through the netlink. Because the 46262306a36Sopenharmony_ci * associated netdevices are properties of GIDs. 46362306a36Sopenharmony_ci */ 46462306a36Sopenharmony_ci RDMA_NLDEV_ATTR_NDEV_INDEX, /* u32 */ 46562306a36Sopenharmony_ci RDMA_NLDEV_ATTR_NDEV_NAME, /* string */ 46662306a36Sopenharmony_ci /* 46762306a36Sopenharmony_ci * driver-specific attributes. 46862306a36Sopenharmony_ci */ 46962306a36Sopenharmony_ci RDMA_NLDEV_ATTR_DRIVER, /* nested table */ 47062306a36Sopenharmony_ci RDMA_NLDEV_ATTR_DRIVER_ENTRY, /* nested table */ 47162306a36Sopenharmony_ci RDMA_NLDEV_ATTR_DRIVER_STRING, /* string */ 47262306a36Sopenharmony_ci /* 47362306a36Sopenharmony_ci * u8 values from enum rdma_nldev_print_type 47462306a36Sopenharmony_ci */ 47562306a36Sopenharmony_ci RDMA_NLDEV_ATTR_DRIVER_PRINT_TYPE, /* u8 */ 47662306a36Sopenharmony_ci RDMA_NLDEV_ATTR_DRIVER_S32, /* s32 */ 47762306a36Sopenharmony_ci RDMA_NLDEV_ATTR_DRIVER_U32, /* u32 */ 47862306a36Sopenharmony_ci RDMA_NLDEV_ATTR_DRIVER_S64, /* s64 */ 47962306a36Sopenharmony_ci RDMA_NLDEV_ATTR_DRIVER_U64, /* u64 */ 48062306a36Sopenharmony_ci 48162306a36Sopenharmony_ci /* 48262306a36Sopenharmony_ci * Indexes to get/set secific entry, 48362306a36Sopenharmony_ci * for QP use RDMA_NLDEV_ATTR_RES_LQPN 48462306a36Sopenharmony_ci */ 48562306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_PDN, /* u32 */ 48662306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_CQN, /* u32 */ 48762306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_MRN, /* u32 */ 48862306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_CM_IDN, /* u32 */ 48962306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_CTXN, /* u32 */ 49062306a36Sopenharmony_ci /* 49162306a36Sopenharmony_ci * Identifies the rdma driver. eg: "rxe" or "siw" 49262306a36Sopenharmony_ci */ 49362306a36Sopenharmony_ci RDMA_NLDEV_ATTR_LINK_TYPE, /* string */ 49462306a36Sopenharmony_ci 49562306a36Sopenharmony_ci /* 49662306a36Sopenharmony_ci * net namespace mode for rdma subsystem: 49762306a36Sopenharmony_ci * either shared or exclusive among multiple net namespaces. 49862306a36Sopenharmony_ci */ 49962306a36Sopenharmony_ci RDMA_NLDEV_SYS_ATTR_NETNS_MODE, /* u8 */ 50062306a36Sopenharmony_ci /* 50162306a36Sopenharmony_ci * Device protocol, e.g. ib, iw, usnic, roce and opa 50262306a36Sopenharmony_ci */ 50362306a36Sopenharmony_ci RDMA_NLDEV_ATTR_DEV_PROTOCOL, /* string */ 50462306a36Sopenharmony_ci 50562306a36Sopenharmony_ci /* 50662306a36Sopenharmony_ci * File descriptor handle of the net namespace object 50762306a36Sopenharmony_ci */ 50862306a36Sopenharmony_ci RDMA_NLDEV_NET_NS_FD, /* u32 */ 50962306a36Sopenharmony_ci /* 51062306a36Sopenharmony_ci * Information about a chardev. 51162306a36Sopenharmony_ci * CHARDEV_TYPE is the name of the chardev ABI (ie uverbs, umad, etc) 51262306a36Sopenharmony_ci * CHARDEV_ABI signals the ABI revision (historical) 51362306a36Sopenharmony_ci * CHARDEV_NAME is the kernel name for the /dev/ file (no directory) 51462306a36Sopenharmony_ci * CHARDEV is the 64 bit dev_t for the inode 51562306a36Sopenharmony_ci */ 51662306a36Sopenharmony_ci RDMA_NLDEV_ATTR_CHARDEV_TYPE, /* string */ 51762306a36Sopenharmony_ci RDMA_NLDEV_ATTR_CHARDEV_NAME, /* string */ 51862306a36Sopenharmony_ci RDMA_NLDEV_ATTR_CHARDEV_ABI, /* u64 */ 51962306a36Sopenharmony_ci RDMA_NLDEV_ATTR_CHARDEV, /* u64 */ 52062306a36Sopenharmony_ci RDMA_NLDEV_ATTR_UVERBS_DRIVER_ID, /* u64 */ 52162306a36Sopenharmony_ci /* 52262306a36Sopenharmony_ci * Counter-specific attributes. 52362306a36Sopenharmony_ci */ 52462306a36Sopenharmony_ci RDMA_NLDEV_ATTR_STAT_MODE, /* u32 */ 52562306a36Sopenharmony_ci RDMA_NLDEV_ATTR_STAT_RES, /* u32 */ 52662306a36Sopenharmony_ci RDMA_NLDEV_ATTR_STAT_AUTO_MODE_MASK, /* u32 */ 52762306a36Sopenharmony_ci RDMA_NLDEV_ATTR_STAT_COUNTER, /* nested table */ 52862306a36Sopenharmony_ci RDMA_NLDEV_ATTR_STAT_COUNTER_ENTRY, /* nested table */ 52962306a36Sopenharmony_ci RDMA_NLDEV_ATTR_STAT_COUNTER_ID, /* u32 */ 53062306a36Sopenharmony_ci RDMA_NLDEV_ATTR_STAT_HWCOUNTERS, /* nested table */ 53162306a36Sopenharmony_ci RDMA_NLDEV_ATTR_STAT_HWCOUNTER_ENTRY, /* nested table */ 53262306a36Sopenharmony_ci RDMA_NLDEV_ATTR_STAT_HWCOUNTER_ENTRY_NAME, /* string */ 53362306a36Sopenharmony_ci RDMA_NLDEV_ATTR_STAT_HWCOUNTER_ENTRY_VALUE, /* u64 */ 53462306a36Sopenharmony_ci 53562306a36Sopenharmony_ci /* 53662306a36Sopenharmony_ci * CQ adaptive moderatio (DIM) 53762306a36Sopenharmony_ci */ 53862306a36Sopenharmony_ci RDMA_NLDEV_ATTR_DEV_DIM, /* u8 */ 53962306a36Sopenharmony_ci 54062306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_RAW, /* binary */ 54162306a36Sopenharmony_ci 54262306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_CTX, /* nested table */ 54362306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_CTX_ENTRY, /* nested table */ 54462306a36Sopenharmony_ci 54562306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_SRQ, /* nested table */ 54662306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_SRQ_ENTRY, /* nested table */ 54762306a36Sopenharmony_ci RDMA_NLDEV_ATTR_RES_SRQN, /* u32 */ 54862306a36Sopenharmony_ci 54962306a36Sopenharmony_ci RDMA_NLDEV_ATTR_MIN_RANGE, /* u32 */ 55062306a36Sopenharmony_ci RDMA_NLDEV_ATTR_MAX_RANGE, /* u32 */ 55162306a36Sopenharmony_ci 55262306a36Sopenharmony_ci RDMA_NLDEV_SYS_ATTR_COPY_ON_FORK, /* u8 */ 55362306a36Sopenharmony_ci 55462306a36Sopenharmony_ci RDMA_NLDEV_ATTR_STAT_HWCOUNTER_INDEX, /* u32 */ 55562306a36Sopenharmony_ci RDMA_NLDEV_ATTR_STAT_HWCOUNTER_DYNAMIC, /* u8 */ 55662306a36Sopenharmony_ci 55762306a36Sopenharmony_ci /* 55862306a36Sopenharmony_ci * Always the end 55962306a36Sopenharmony_ci */ 56062306a36Sopenharmony_ci RDMA_NLDEV_ATTR_MAX 56162306a36Sopenharmony_ci}; 56262306a36Sopenharmony_ci 56362306a36Sopenharmony_ci/* 56462306a36Sopenharmony_ci * Supported counter bind modes. All modes are mutual-exclusive. 56562306a36Sopenharmony_ci */ 56662306a36Sopenharmony_cienum rdma_nl_counter_mode { 56762306a36Sopenharmony_ci RDMA_COUNTER_MODE_NONE, 56862306a36Sopenharmony_ci 56962306a36Sopenharmony_ci /* 57062306a36Sopenharmony_ci * A qp is bound with a counter automatically during initialization 57162306a36Sopenharmony_ci * based on the auto mode (e.g., qp type, ...) 57262306a36Sopenharmony_ci */ 57362306a36Sopenharmony_ci RDMA_COUNTER_MODE_AUTO, 57462306a36Sopenharmony_ci 57562306a36Sopenharmony_ci /* 57662306a36Sopenharmony_ci * Which qp are bound with which counter is explicitly specified 57762306a36Sopenharmony_ci * by the user 57862306a36Sopenharmony_ci */ 57962306a36Sopenharmony_ci RDMA_COUNTER_MODE_MANUAL, 58062306a36Sopenharmony_ci 58162306a36Sopenharmony_ci /* 58262306a36Sopenharmony_ci * Always the end 58362306a36Sopenharmony_ci */ 58462306a36Sopenharmony_ci RDMA_COUNTER_MODE_MAX, 58562306a36Sopenharmony_ci}; 58662306a36Sopenharmony_ci 58762306a36Sopenharmony_ci/* 58862306a36Sopenharmony_ci * Supported criteria in counter auto mode. 58962306a36Sopenharmony_ci * Currently only "qp type" is supported 59062306a36Sopenharmony_ci */ 59162306a36Sopenharmony_cienum rdma_nl_counter_mask { 59262306a36Sopenharmony_ci RDMA_COUNTER_MASK_QP_TYPE = 1, 59362306a36Sopenharmony_ci RDMA_COUNTER_MASK_PID = 1 << 1, 59462306a36Sopenharmony_ci}; 59562306a36Sopenharmony_ci#endif /* _UAPI_RDMA_NETLINK_H */ 596