logo

oasis-root

Compiled tree of Oasis Linux based on own branch at <https://hacktivis.me/git/oasis/> git clone https://anongit.hacktivis.me/git/oasis-root.git

rdma_netlink.h (15976B)


  1. /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
  2. #ifndef _RDMA_NETLINK_H
  3. #define _RDMA_NETLINK_H
  4. #include <linux/types.h>
  5. enum {
  6. RDMA_NL_IWCM = 2,
  7. RDMA_NL_RSVD,
  8. RDMA_NL_LS, /* RDMA Local Services */
  9. RDMA_NL_NLDEV, /* RDMA device interface */
  10. RDMA_NL_NUM_CLIENTS
  11. };
  12. enum {
  13. RDMA_NL_GROUP_IWPM = 2,
  14. RDMA_NL_GROUP_LS,
  15. RDMA_NL_GROUP_NOTIFY,
  16. RDMA_NL_NUM_GROUPS
  17. };
  18. #define RDMA_NL_GET_CLIENT(type) ((type & (((1 << 6) - 1) << 10)) >> 10)
  19. #define RDMA_NL_GET_OP(type) (type & ((1 << 10) - 1))
  20. #define RDMA_NL_GET_TYPE(client, op) ((client << 10) + op)
  21. /* The minimum version that the iwpm kernel supports */
  22. #define IWPM_UABI_VERSION_MIN 3
  23. /* The latest version that the iwpm kernel supports */
  24. #define IWPM_UABI_VERSION 4
  25. /* iwarp port mapper message flags */
  26. enum {
  27. /* Do not map the port for this IWPM request */
  28. IWPM_FLAGS_NO_PORT_MAP = (1 << 0),
  29. };
  30. /* iwarp port mapper op-codes */
  31. enum {
  32. RDMA_NL_IWPM_REG_PID = 0,
  33. RDMA_NL_IWPM_ADD_MAPPING,
  34. RDMA_NL_IWPM_QUERY_MAPPING,
  35. RDMA_NL_IWPM_REMOVE_MAPPING,
  36. RDMA_NL_IWPM_REMOTE_INFO,
  37. RDMA_NL_IWPM_HANDLE_ERR,
  38. RDMA_NL_IWPM_MAPINFO,
  39. RDMA_NL_IWPM_MAPINFO_NUM,
  40. RDMA_NL_IWPM_HELLO,
  41. RDMA_NL_IWPM_NUM_OPS
  42. };
  43. enum {
  44. IWPM_NLA_REG_PID_UNSPEC = 0,
  45. IWPM_NLA_REG_PID_SEQ,
  46. IWPM_NLA_REG_IF_NAME,
  47. IWPM_NLA_REG_IBDEV_NAME,
  48. IWPM_NLA_REG_ULIB_NAME,
  49. IWPM_NLA_REG_PID_MAX
  50. };
  51. enum {
  52. IWPM_NLA_RREG_PID_UNSPEC = 0,
  53. IWPM_NLA_RREG_PID_SEQ,
  54. IWPM_NLA_RREG_IBDEV_NAME,
  55. IWPM_NLA_RREG_ULIB_NAME,
  56. IWPM_NLA_RREG_ULIB_VER,
  57. IWPM_NLA_RREG_PID_ERR,
  58. IWPM_NLA_RREG_PID_MAX
  59. };
  60. enum {
  61. IWPM_NLA_MANAGE_MAPPING_UNSPEC = 0,
  62. IWPM_NLA_MANAGE_MAPPING_SEQ,
  63. IWPM_NLA_MANAGE_ADDR,
  64. IWPM_NLA_MANAGE_FLAGS,
  65. IWPM_NLA_MANAGE_MAPPING_MAX
  66. };
  67. enum {
  68. IWPM_NLA_RMANAGE_MAPPING_UNSPEC = 0,
  69. IWPM_NLA_RMANAGE_MAPPING_SEQ,
  70. IWPM_NLA_RMANAGE_ADDR,
  71. IWPM_NLA_RMANAGE_MAPPED_LOC_ADDR,
  72. /* The following maintains bisectability of rdma-core */
  73. IWPM_NLA_MANAGE_MAPPED_LOC_ADDR = IWPM_NLA_RMANAGE_MAPPED_LOC_ADDR,
  74. IWPM_NLA_RMANAGE_MAPPING_ERR,
  75. IWPM_NLA_RMANAGE_MAPPING_MAX
  76. };
  77. #define IWPM_NLA_MAPINFO_SEND_MAX 3
  78. #define IWPM_NLA_REMOVE_MAPPING_MAX 3
  79. enum {
  80. IWPM_NLA_QUERY_MAPPING_UNSPEC = 0,
  81. IWPM_NLA_QUERY_MAPPING_SEQ,
  82. IWPM_NLA_QUERY_LOCAL_ADDR,
  83. IWPM_NLA_QUERY_REMOTE_ADDR,
  84. IWPM_NLA_QUERY_FLAGS,
  85. IWPM_NLA_QUERY_MAPPING_MAX,
  86. };
  87. enum {
  88. IWPM_NLA_RQUERY_MAPPING_UNSPEC = 0,
  89. IWPM_NLA_RQUERY_MAPPING_SEQ,
  90. IWPM_NLA_RQUERY_LOCAL_ADDR,
  91. IWPM_NLA_RQUERY_REMOTE_ADDR,
  92. IWPM_NLA_RQUERY_MAPPED_LOC_ADDR,
  93. IWPM_NLA_RQUERY_MAPPED_REM_ADDR,
  94. IWPM_NLA_RQUERY_MAPPING_ERR,
  95. IWPM_NLA_RQUERY_MAPPING_MAX
  96. };
  97. enum {
  98. IWPM_NLA_MAPINFO_REQ_UNSPEC = 0,
  99. IWPM_NLA_MAPINFO_ULIB_NAME,
  100. IWPM_NLA_MAPINFO_ULIB_VER,
  101. IWPM_NLA_MAPINFO_REQ_MAX
  102. };
  103. enum {
  104. IWPM_NLA_MAPINFO_UNSPEC = 0,
  105. IWPM_NLA_MAPINFO_LOCAL_ADDR,
  106. IWPM_NLA_MAPINFO_MAPPED_ADDR,
  107. IWPM_NLA_MAPINFO_FLAGS,
  108. IWPM_NLA_MAPINFO_MAX
  109. };
  110. enum {
  111. IWPM_NLA_MAPINFO_NUM_UNSPEC = 0,
  112. IWPM_NLA_MAPINFO_SEQ,
  113. IWPM_NLA_MAPINFO_SEND_NUM,
  114. IWPM_NLA_MAPINFO_ACK_NUM,
  115. IWPM_NLA_MAPINFO_NUM_MAX
  116. };
  117. enum {
  118. IWPM_NLA_ERR_UNSPEC = 0,
  119. IWPM_NLA_ERR_SEQ,
  120. IWPM_NLA_ERR_CODE,
  121. IWPM_NLA_ERR_MAX
  122. };
  123. enum {
  124. IWPM_NLA_HELLO_UNSPEC = 0,
  125. IWPM_NLA_HELLO_ABI_VERSION,
  126. IWPM_NLA_HELLO_MAX
  127. };
  128. /* For RDMA_NLDEV_ATTR_DEV_NODE_TYPE */
  129. enum {
  130. /* IB values map to NodeInfo:NodeType. */
  131. RDMA_NODE_IB_CA = 1,
  132. RDMA_NODE_IB_SWITCH,
  133. RDMA_NODE_IB_ROUTER,
  134. RDMA_NODE_RNIC,
  135. RDMA_NODE_USNIC,
  136. RDMA_NODE_USNIC_UDP,
  137. RDMA_NODE_UNSPECIFIED,
  138. };
  139. /*
  140. * Local service operations:
  141. * RESOLVE - The client requests the local service to resolve a path.
  142. * SET_TIMEOUT - The local service requests the client to set the timeout.
  143. * IP_RESOLVE - The client requests the local service to resolve an IP to GID.
  144. */
  145. enum {
  146. RDMA_NL_LS_OP_RESOLVE = 0,
  147. RDMA_NL_LS_OP_SET_TIMEOUT,
  148. RDMA_NL_LS_OP_IP_RESOLVE,
  149. RDMA_NL_LS_NUM_OPS
  150. };
  151. /* Local service netlink message flags */
  152. #define RDMA_NL_LS_F_ERR 0x0100 /* Failed response */
  153. /*
  154. * Local service resolve operation family header.
  155. * The layout for the resolve operation:
  156. * nlmsg header
  157. * family header
  158. * attributes
  159. */
  160. /*
  161. * Local service path use:
  162. * Specify how the path(s) will be used.
  163. * ALL - For connected CM operation (6 pathrecords)
  164. * UNIDIRECTIONAL - For unidirectional UD (1 pathrecord)
  165. * GMP - For miscellaneous GMP like operation (at least 1 reversible
  166. * pathrecord)
  167. */
  168. enum {
  169. LS_RESOLVE_PATH_USE_ALL = 0,
  170. LS_RESOLVE_PATH_USE_UNIDIRECTIONAL,
  171. LS_RESOLVE_PATH_USE_GMP,
  172. LS_RESOLVE_PATH_USE_MAX
  173. };
  174. #define LS_DEVICE_NAME_MAX 64
  175. struct rdma_ls_resolve_header {
  176. __u8 device_name[LS_DEVICE_NAME_MAX];
  177. __u8 port_num;
  178. __u8 path_use;
  179. };
  180. struct rdma_ls_ip_resolve_header {
  181. __u32 ifindex;
  182. };
  183. /* Local service attribute type */
  184. #define RDMA_NLA_F_MANDATORY (1 << 13)
  185. #define RDMA_NLA_TYPE_MASK (~(NLA_F_NESTED | NLA_F_NET_BYTEORDER | \
  186. RDMA_NLA_F_MANDATORY))
  187. /*
  188. * Local service attributes:
  189. * Attr Name Size Byte order
  190. * -----------------------------------------------------
  191. * PATH_RECORD struct ib_path_rec_data
  192. * TIMEOUT u32 cpu
  193. * SERVICE_ID u64 cpu
  194. * DGID u8[16] BE
  195. * SGID u8[16] BE
  196. * TCLASS u8
  197. * PKEY u16 cpu
  198. * QOS_CLASS u16 cpu
  199. * IPV4 u32 BE
  200. * IPV6 u8[16] BE
  201. */
  202. enum {
  203. LS_NLA_TYPE_UNSPEC = 0,
  204. LS_NLA_TYPE_PATH_RECORD,
  205. LS_NLA_TYPE_TIMEOUT,
  206. LS_NLA_TYPE_SERVICE_ID,
  207. LS_NLA_TYPE_DGID,
  208. LS_NLA_TYPE_SGID,
  209. LS_NLA_TYPE_TCLASS,
  210. LS_NLA_TYPE_PKEY,
  211. LS_NLA_TYPE_QOS_CLASS,
  212. LS_NLA_TYPE_IPV4,
  213. LS_NLA_TYPE_IPV6,
  214. LS_NLA_TYPE_MAX
  215. };
  216. /* Local service DGID/SGID attribute: big endian */
  217. struct rdma_nla_ls_gid {
  218. __u8 gid[16];
  219. };
  220. enum rdma_nldev_command {
  221. RDMA_NLDEV_CMD_UNSPEC,
  222. RDMA_NLDEV_CMD_GET, /* can dump */
  223. RDMA_NLDEV_CMD_SET,
  224. RDMA_NLDEV_CMD_NEWLINK,
  225. RDMA_NLDEV_CMD_DELLINK,
  226. RDMA_NLDEV_CMD_PORT_GET, /* can dump */
  227. RDMA_NLDEV_CMD_SYS_GET,
  228. RDMA_NLDEV_CMD_SYS_SET,
  229. /* 8 is free to use */
  230. RDMA_NLDEV_CMD_RES_GET = 9, /* can dump */
  231. RDMA_NLDEV_CMD_RES_QP_GET, /* can dump */
  232. RDMA_NLDEV_CMD_RES_CM_ID_GET, /* can dump */
  233. RDMA_NLDEV_CMD_RES_CQ_GET, /* can dump */
  234. RDMA_NLDEV_CMD_RES_MR_GET, /* can dump */
  235. RDMA_NLDEV_CMD_RES_PD_GET, /* can dump */
  236. RDMA_NLDEV_CMD_GET_CHARDEV,
  237. RDMA_NLDEV_CMD_STAT_SET,
  238. RDMA_NLDEV_CMD_STAT_GET, /* can dump */
  239. RDMA_NLDEV_CMD_STAT_DEL,
  240. RDMA_NLDEV_CMD_RES_QP_GET_RAW,
  241. RDMA_NLDEV_CMD_RES_CQ_GET_RAW,
  242. RDMA_NLDEV_CMD_RES_MR_GET_RAW,
  243. RDMA_NLDEV_CMD_RES_CTX_GET, /* can dump */
  244. RDMA_NLDEV_CMD_RES_SRQ_GET, /* can dump */
  245. RDMA_NLDEV_CMD_STAT_GET_STATUS,
  246. RDMA_NLDEV_CMD_RES_SRQ_GET_RAW,
  247. RDMA_NLDEV_CMD_NEWDEV,
  248. RDMA_NLDEV_CMD_DELDEV,
  249. RDMA_NLDEV_CMD_MONITOR,
  250. RDMA_NLDEV_NUM_OPS
  251. };
  252. enum rdma_nldev_print_type {
  253. RDMA_NLDEV_PRINT_TYPE_UNSPEC,
  254. RDMA_NLDEV_PRINT_TYPE_HEX,
  255. };
  256. enum rdma_nldev_attr {
  257. /* don't change the order or add anything between, this is ABI! */
  258. RDMA_NLDEV_ATTR_UNSPEC,
  259. /* Pad attribute for 64b alignment */
  260. RDMA_NLDEV_ATTR_PAD = RDMA_NLDEV_ATTR_UNSPEC,
  261. /* Identifier for ib_device */
  262. RDMA_NLDEV_ATTR_DEV_INDEX, /* u32 */
  263. RDMA_NLDEV_ATTR_DEV_NAME, /* string */
  264. /*
  265. * Device index together with port index are identifiers
  266. * for port/link properties.
  267. *
  268. * For RDMA_NLDEV_CMD_GET commamnd, port index will return number
  269. * of available ports in ib_device, while for port specific operations,
  270. * it will be real port index as it appears in sysfs. Port index follows
  271. * sysfs notation and starts from 1 for the first port.
  272. */
  273. RDMA_NLDEV_ATTR_PORT_INDEX, /* u32 */
  274. /*
  275. * Device and port capabilities
  276. *
  277. * When used for port info, first 32-bits are CapabilityMask followed by
  278. * 16-bit CapabilityMask2.
  279. */
  280. RDMA_NLDEV_ATTR_CAP_FLAGS, /* u64 */
  281. /*
  282. * FW version
  283. */
  284. RDMA_NLDEV_ATTR_FW_VERSION, /* string */
  285. /*
  286. * Node GUID (in host byte order) associated with the RDMA device.
  287. */
  288. RDMA_NLDEV_ATTR_NODE_GUID, /* u64 */
  289. /*
  290. * System image GUID (in host byte order) associated with
  291. * this RDMA device and other devices which are part of a
  292. * single system.
  293. */
  294. RDMA_NLDEV_ATTR_SYS_IMAGE_GUID, /* u64 */
  295. /*
  296. * Subnet prefix (in host byte order)
  297. */
  298. RDMA_NLDEV_ATTR_SUBNET_PREFIX, /* u64 */
  299. /*
  300. * Local Identifier (LID),
  301. * According to IB specification, It is 16-bit address assigned
  302. * by the Subnet Manager. Extended to be 32-bit for OmniPath users.
  303. */
  304. RDMA_NLDEV_ATTR_LID, /* u32 */
  305. RDMA_NLDEV_ATTR_SM_LID, /* u32 */
  306. /*
  307. * LID mask control (LMC)
  308. */
  309. RDMA_NLDEV_ATTR_LMC, /* u8 */
  310. RDMA_NLDEV_ATTR_PORT_STATE, /* u8 */
  311. RDMA_NLDEV_ATTR_PORT_PHYS_STATE, /* u8 */
  312. RDMA_NLDEV_ATTR_DEV_NODE_TYPE, /* u8 */
  313. RDMA_NLDEV_ATTR_RES_SUMMARY, /* nested table */
  314. RDMA_NLDEV_ATTR_RES_SUMMARY_ENTRY, /* nested table */
  315. RDMA_NLDEV_ATTR_RES_SUMMARY_ENTRY_NAME, /* string */
  316. RDMA_NLDEV_ATTR_RES_SUMMARY_ENTRY_CURR, /* u64 */
  317. RDMA_NLDEV_ATTR_RES_QP, /* nested table */
  318. RDMA_NLDEV_ATTR_RES_QP_ENTRY, /* nested table */
  319. /*
  320. * Local QPN
  321. */
  322. RDMA_NLDEV_ATTR_RES_LQPN, /* u32 */
  323. /*
  324. * Remote QPN,
  325. * Applicable for RC and UC only IBTA 11.2.5.3 QUERY QUEUE PAIR
  326. */
  327. RDMA_NLDEV_ATTR_RES_RQPN, /* u32 */
  328. /*
  329. * Receive Queue PSN,
  330. * Applicable for RC and UC only 11.2.5.3 QUERY QUEUE PAIR
  331. */
  332. RDMA_NLDEV_ATTR_RES_RQ_PSN, /* u32 */
  333. /*
  334. * Send Queue PSN
  335. */
  336. RDMA_NLDEV_ATTR_RES_SQ_PSN, /* u32 */
  337. RDMA_NLDEV_ATTR_RES_PATH_MIG_STATE, /* u8 */
  338. /*
  339. * QP types as visible to RDMA/core, the reserved QPT
  340. * are not exported through this interface.
  341. */
  342. RDMA_NLDEV_ATTR_RES_TYPE, /* u8 */
  343. RDMA_NLDEV_ATTR_RES_STATE, /* u8 */
  344. /*
  345. * Process ID which created object,
  346. * in case of kernel origin, PID won't exist.
  347. */
  348. RDMA_NLDEV_ATTR_RES_PID, /* u32 */
  349. /*
  350. * The name of process created following resource.
  351. * It will exist only for kernel objects.
  352. * For user created objects, the user is supposed
  353. * to read /proc/PID/comm file.
  354. */
  355. RDMA_NLDEV_ATTR_RES_KERN_NAME, /* string */
  356. RDMA_NLDEV_ATTR_RES_CM_ID, /* nested table */
  357. RDMA_NLDEV_ATTR_RES_CM_ID_ENTRY, /* nested table */
  358. /*
  359. * rdma_cm_id port space.
  360. */
  361. RDMA_NLDEV_ATTR_RES_PS, /* u32 */
  362. /*
  363. * Source and destination socket addresses
  364. */
  365. RDMA_NLDEV_ATTR_RES_SRC_ADDR, /* __kernel_sockaddr_storage */
  366. RDMA_NLDEV_ATTR_RES_DST_ADDR, /* __kernel_sockaddr_storage */
  367. RDMA_NLDEV_ATTR_RES_CQ, /* nested table */
  368. RDMA_NLDEV_ATTR_RES_CQ_ENTRY, /* nested table */
  369. RDMA_NLDEV_ATTR_RES_CQE, /* u32 */
  370. RDMA_NLDEV_ATTR_RES_USECNT, /* u64 */
  371. RDMA_NLDEV_ATTR_RES_POLL_CTX, /* u8 */
  372. RDMA_NLDEV_ATTR_RES_MR, /* nested table */
  373. RDMA_NLDEV_ATTR_RES_MR_ENTRY, /* nested table */
  374. RDMA_NLDEV_ATTR_RES_RKEY, /* u32 */
  375. RDMA_NLDEV_ATTR_RES_LKEY, /* u32 */
  376. RDMA_NLDEV_ATTR_RES_IOVA, /* u64 */
  377. RDMA_NLDEV_ATTR_RES_MRLEN, /* u64 */
  378. RDMA_NLDEV_ATTR_RES_PD, /* nested table */
  379. RDMA_NLDEV_ATTR_RES_PD_ENTRY, /* nested table */
  380. RDMA_NLDEV_ATTR_RES_LOCAL_DMA_LKEY, /* u32 */
  381. RDMA_NLDEV_ATTR_RES_UNSAFE_GLOBAL_RKEY, /* u32 */
  382. /*
  383. * Provides logical name and index of netdevice which is
  384. * connected to physical port. This information is relevant
  385. * for RoCE and iWARP.
  386. *
  387. * The netdevices which are associated with containers are
  388. * supposed to be exported together with GID table once it
  389. * will be exposed through the netlink. Because the
  390. * associated netdevices are properties of GIDs.
  391. */
  392. RDMA_NLDEV_ATTR_NDEV_INDEX, /* u32 */
  393. RDMA_NLDEV_ATTR_NDEV_NAME, /* string */
  394. /*
  395. * driver-specific attributes.
  396. */
  397. RDMA_NLDEV_ATTR_DRIVER, /* nested table */
  398. RDMA_NLDEV_ATTR_DRIVER_ENTRY, /* nested table */
  399. RDMA_NLDEV_ATTR_DRIVER_STRING, /* string */
  400. /*
  401. * u8 values from enum rdma_nldev_print_type
  402. */
  403. RDMA_NLDEV_ATTR_DRIVER_PRINT_TYPE, /* u8 */
  404. RDMA_NLDEV_ATTR_DRIVER_S32, /* s32 */
  405. RDMA_NLDEV_ATTR_DRIVER_U32, /* u32 */
  406. RDMA_NLDEV_ATTR_DRIVER_S64, /* s64 */
  407. RDMA_NLDEV_ATTR_DRIVER_U64, /* u64 */
  408. /*
  409. * Indexes to get/set secific entry,
  410. * for QP use RDMA_NLDEV_ATTR_RES_LQPN
  411. */
  412. RDMA_NLDEV_ATTR_RES_PDN, /* u32 */
  413. RDMA_NLDEV_ATTR_RES_CQN, /* u32 */
  414. RDMA_NLDEV_ATTR_RES_MRN, /* u32 */
  415. RDMA_NLDEV_ATTR_RES_CM_IDN, /* u32 */
  416. RDMA_NLDEV_ATTR_RES_CTXN, /* u32 */
  417. /*
  418. * Identifies the rdma driver. eg: "rxe" or "siw"
  419. */
  420. RDMA_NLDEV_ATTR_LINK_TYPE, /* string */
  421. /*
  422. * net namespace mode for rdma subsystem:
  423. * either shared or exclusive among multiple net namespaces.
  424. */
  425. RDMA_NLDEV_SYS_ATTR_NETNS_MODE, /* u8 */
  426. /*
  427. * Device protocol, e.g. ib, iw, usnic, roce and opa
  428. */
  429. RDMA_NLDEV_ATTR_DEV_PROTOCOL, /* string */
  430. /*
  431. * File descriptor handle of the net namespace object
  432. */
  433. RDMA_NLDEV_NET_NS_FD, /* u32 */
  434. /*
  435. * Information about a chardev.
  436. * CHARDEV_TYPE is the name of the chardev ABI (ie uverbs, umad, etc)
  437. * CHARDEV_ABI signals the ABI revision (historical)
  438. * CHARDEV_NAME is the kernel name for the /dev/ file (no directory)
  439. * CHARDEV is the 64 bit dev_t for the inode
  440. */
  441. RDMA_NLDEV_ATTR_CHARDEV_TYPE, /* string */
  442. RDMA_NLDEV_ATTR_CHARDEV_NAME, /* string */
  443. RDMA_NLDEV_ATTR_CHARDEV_ABI, /* u64 */
  444. RDMA_NLDEV_ATTR_CHARDEV, /* u64 */
  445. RDMA_NLDEV_ATTR_UVERBS_DRIVER_ID, /* u64 */
  446. /*
  447. * Counter-specific attributes.
  448. */
  449. RDMA_NLDEV_ATTR_STAT_MODE, /* u32 */
  450. RDMA_NLDEV_ATTR_STAT_RES, /* u32 */
  451. RDMA_NLDEV_ATTR_STAT_AUTO_MODE_MASK, /* u32 */
  452. RDMA_NLDEV_ATTR_STAT_COUNTER, /* nested table */
  453. RDMA_NLDEV_ATTR_STAT_COUNTER_ENTRY, /* nested table */
  454. RDMA_NLDEV_ATTR_STAT_COUNTER_ID, /* u32 */
  455. RDMA_NLDEV_ATTR_STAT_HWCOUNTERS, /* nested table */
  456. RDMA_NLDEV_ATTR_STAT_HWCOUNTER_ENTRY, /* nested table */
  457. RDMA_NLDEV_ATTR_STAT_HWCOUNTER_ENTRY_NAME, /* string */
  458. RDMA_NLDEV_ATTR_STAT_HWCOUNTER_ENTRY_VALUE, /* u64 */
  459. /*
  460. * CQ adaptive moderatio (DIM)
  461. */
  462. RDMA_NLDEV_ATTR_DEV_DIM, /* u8 */
  463. RDMA_NLDEV_ATTR_RES_RAW, /* binary */
  464. RDMA_NLDEV_ATTR_RES_CTX, /* nested table */
  465. RDMA_NLDEV_ATTR_RES_CTX_ENTRY, /* nested table */
  466. RDMA_NLDEV_ATTR_RES_SRQ, /* nested table */
  467. RDMA_NLDEV_ATTR_RES_SRQ_ENTRY, /* nested table */
  468. RDMA_NLDEV_ATTR_RES_SRQN, /* u32 */
  469. RDMA_NLDEV_ATTR_MIN_RANGE, /* u32 */
  470. RDMA_NLDEV_ATTR_MAX_RANGE, /* u32 */
  471. RDMA_NLDEV_SYS_ATTR_COPY_ON_FORK, /* u8 */
  472. RDMA_NLDEV_ATTR_STAT_HWCOUNTER_INDEX, /* u32 */
  473. RDMA_NLDEV_ATTR_STAT_HWCOUNTER_DYNAMIC, /* u8 */
  474. RDMA_NLDEV_SYS_ATTR_PRIVILEGED_QKEY_MODE, /* u8 */
  475. RDMA_NLDEV_ATTR_DRIVER_DETAILS, /* u8 */
  476. /*
  477. * QP subtype string, used for driver QPs
  478. */
  479. RDMA_NLDEV_ATTR_RES_SUBTYPE, /* string */
  480. RDMA_NLDEV_ATTR_DEV_TYPE, /* u8 */
  481. RDMA_NLDEV_ATTR_PARENT_NAME, /* string */
  482. RDMA_NLDEV_ATTR_NAME_ASSIGN_TYPE, /* u8 */
  483. RDMA_NLDEV_ATTR_EVENT_TYPE, /* u8 */
  484. RDMA_NLDEV_SYS_ATTR_MONITOR_MODE, /* u8 */
  485. /*
  486. * Always the end
  487. */
  488. RDMA_NLDEV_ATTR_MAX
  489. };
  490. /*
  491. * Supported counter bind modes. All modes are mutual-exclusive.
  492. */
  493. enum rdma_nl_counter_mode {
  494. RDMA_COUNTER_MODE_NONE,
  495. /*
  496. * A qp is bound with a counter automatically during initialization
  497. * based on the auto mode (e.g., qp type, ...)
  498. */
  499. RDMA_COUNTER_MODE_AUTO,
  500. /*
  501. * Which qp are bound with which counter is explicitly specified
  502. * by the user
  503. */
  504. RDMA_COUNTER_MODE_MANUAL,
  505. /*
  506. * Always the end
  507. */
  508. RDMA_COUNTER_MODE_MAX,
  509. };
  510. /*
  511. * Supported criteria in counter auto mode.
  512. * Currently only "qp type" is supported
  513. */
  514. enum rdma_nl_counter_mask {
  515. RDMA_COUNTER_MASK_QP_TYPE = 1,
  516. RDMA_COUNTER_MASK_PID = 1 << 1,
  517. };
  518. /* Supported rdma device types. */
  519. enum rdma_nl_dev_type {
  520. RDMA_DEVICE_TYPE_SMI = 1,
  521. };
  522. /* RDMA device name assignment types */
  523. enum rdma_nl_name_assign_type {
  524. RDMA_NAME_ASSIGN_TYPE_UNKNOWN = 0,
  525. RDMA_NAME_ASSIGN_TYPE_USER = 1, /* Provided by user-space */
  526. };
  527. /*
  528. * Supported rdma monitoring event types.
  529. */
  530. enum rdma_nl_notify_event_type {
  531. RDMA_REGISTER_EVENT,
  532. RDMA_UNREGISTER_EVENT,
  533. RDMA_NETDEV_ATTACH_EVENT,
  534. RDMA_NETDEV_DETACH_EVENT,
  535. };
  536. #endif /* _RDMA_NETLINK_H */