hc
2024-01-05 071106ecf68c401173c58808b1cf5f68cc50d390
kernel/include/uapi/rdma/rdma_netlink.h
....@@ -5,8 +5,7 @@
55 #include <linux/types.h>
66
77 enum {
8
- RDMA_NL_RDMA_CM = 1,
9
- RDMA_NL_IWCM,
8
+ RDMA_NL_IWCM = 2,
109 RDMA_NL_RSVD,
1110 RDMA_NL_LS, /* RDMA Local Services */
1211 RDMA_NL_NLDEV, /* RDMA device interface */
....@@ -14,8 +13,7 @@
1413 };
1514
1615 enum {
17
- RDMA_NL_GROUP_CM = 1,
18
- RDMA_NL_GROUP_IWPM,
16
+ RDMA_NL_GROUP_IWPM = 2,
1917 RDMA_NL_GROUP_LS,
2018 RDMA_NL_NUM_GROUPS
2119 };
....@@ -24,15 +22,17 @@
2422 #define RDMA_NL_GET_OP(type) (type & ((1 << 10) - 1))
2523 #define RDMA_NL_GET_TYPE(client, op) ((client << 10) + op)
2624
27
-enum {
28
- RDMA_NL_RDMA_CM_ID_STATS = 0,
29
- RDMA_NL_RDMA_CM_NUM_OPS
30
-};
25
+/* The minimum version that the iwpm kernel supports */
26
+#define IWPM_UABI_VERSION_MIN 3
3127
28
+/* The latest version that the iwpm kernel supports */
29
+#define IWPM_UABI_VERSION 4
30
+
31
+/* iwarp port mapper message flags */
3232 enum {
33
- RDMA_NL_RDMA_CM_ATTR_SRC_ADDR = 1,
34
- RDMA_NL_RDMA_CM_ATTR_DST_ADDR,
35
- RDMA_NL_RDMA_CM_NUM_ATTR,
33
+
34
+ /* Do not map the port for this IWPM request */
35
+ IWPM_FLAGS_NO_PORT_MAP = (1 << 0),
3636 };
3737
3838 /* iwarp port mapper op-codes */
....@@ -45,18 +45,8 @@
4545 RDMA_NL_IWPM_HANDLE_ERR,
4646 RDMA_NL_IWPM_MAPINFO,
4747 RDMA_NL_IWPM_MAPINFO_NUM,
48
+ RDMA_NL_IWPM_HELLO,
4849 RDMA_NL_IWPM_NUM_OPS
49
-};
50
-
51
-struct rdma_cm_id_stats {
52
- __u32 qp_num;
53
- __u32 bound_dev_if;
54
- __u32 port_space;
55
- __s32 pid;
56
- __u8 cm_state;
57
- __u8 node_type;
58
- __u8 port_num;
59
- __u8 qp_type;
6050 };
6151
6252 enum {
....@@ -83,20 +73,38 @@
8373 IWPM_NLA_MANAGE_MAPPING_UNSPEC = 0,
8474 IWPM_NLA_MANAGE_MAPPING_SEQ,
8575 IWPM_NLA_MANAGE_ADDR,
86
- IWPM_NLA_MANAGE_MAPPED_LOC_ADDR,
76
+ IWPM_NLA_MANAGE_FLAGS,
77
+ IWPM_NLA_MANAGE_MAPPING_MAX
78
+};
79
+
80
+enum {
81
+ IWPM_NLA_RMANAGE_MAPPING_UNSPEC = 0,
82
+ IWPM_NLA_RMANAGE_MAPPING_SEQ,
83
+ IWPM_NLA_RMANAGE_ADDR,
84
+ IWPM_NLA_RMANAGE_MAPPED_LOC_ADDR,
85
+ /* The following maintains bisectability of rdma-core */
86
+ IWPM_NLA_MANAGE_MAPPED_LOC_ADDR = IWPM_NLA_RMANAGE_MAPPED_LOC_ADDR,
8787 IWPM_NLA_RMANAGE_MAPPING_ERR,
8888 IWPM_NLA_RMANAGE_MAPPING_MAX
8989 };
9090
91
-#define IWPM_NLA_MANAGE_MAPPING_MAX 3
92
-#define IWPM_NLA_QUERY_MAPPING_MAX 4
9391 #define IWPM_NLA_MAPINFO_SEND_MAX 3
92
+#define IWPM_NLA_REMOVE_MAPPING_MAX 3
9493
9594 enum {
9695 IWPM_NLA_QUERY_MAPPING_UNSPEC = 0,
9796 IWPM_NLA_QUERY_MAPPING_SEQ,
9897 IWPM_NLA_QUERY_LOCAL_ADDR,
9998 IWPM_NLA_QUERY_REMOTE_ADDR,
99
+ IWPM_NLA_QUERY_FLAGS,
100
+ IWPM_NLA_QUERY_MAPPING_MAX,
101
+};
102
+
103
+enum {
104
+ IWPM_NLA_RQUERY_MAPPING_UNSPEC = 0,
105
+ IWPM_NLA_RQUERY_MAPPING_SEQ,
106
+ IWPM_NLA_RQUERY_LOCAL_ADDR,
107
+ IWPM_NLA_RQUERY_REMOTE_ADDR,
100108 IWPM_NLA_RQUERY_MAPPED_LOC_ADDR,
101109 IWPM_NLA_RQUERY_MAPPED_REM_ADDR,
102110 IWPM_NLA_RQUERY_MAPPING_ERR,
....@@ -114,6 +122,7 @@
114122 IWPM_NLA_MAPINFO_UNSPEC = 0,
115123 IWPM_NLA_MAPINFO_LOCAL_ADDR,
116124 IWPM_NLA_MAPINFO_MAPPED_ADDR,
125
+ IWPM_NLA_MAPINFO_FLAGS,
117126 IWPM_NLA_MAPINFO_MAX
118127 };
119128
....@@ -130,6 +139,24 @@
130139 IWPM_NLA_ERR_SEQ,
131140 IWPM_NLA_ERR_CODE,
132141 IWPM_NLA_ERR_MAX
142
+};
143
+
144
+enum {
145
+ IWPM_NLA_HELLO_UNSPEC = 0,
146
+ IWPM_NLA_HELLO_ABI_VERSION,
147
+ IWPM_NLA_HELLO_MAX
148
+};
149
+
150
+/* For RDMA_NLDEV_ATTR_DEV_NODE_TYPE */
151
+enum {
152
+ /* IB values map to NodeInfo:NodeType. */
153
+ RDMA_NODE_IB_CA = 1,
154
+ RDMA_NODE_IB_SWITCH,
155
+ RDMA_NODE_IB_ROUTER,
156
+ RDMA_NODE_RNIC,
157
+ RDMA_NODE_USNIC,
158
+ RDMA_NODE_USNIC_UDP,
159
+ RDMA_NODE_UNSPECIFIED,
133160 };
134161
135162 /*
....@@ -227,12 +254,18 @@
227254 RDMA_NLDEV_CMD_UNSPEC,
228255
229256 RDMA_NLDEV_CMD_GET, /* can dump */
257
+ RDMA_NLDEV_CMD_SET,
230258
231
- /* 2 - 4 are free to use */
259
+ RDMA_NLDEV_CMD_NEWLINK,
232260
233
- RDMA_NLDEV_CMD_PORT_GET = 5, /* can dump */
261
+ RDMA_NLDEV_CMD_DELLINK,
234262
235
- /* 6 - 8 are free to use */
263
+ RDMA_NLDEV_CMD_PORT_GET, /* can dump */
264
+
265
+ RDMA_NLDEV_CMD_SYS_GET,
266
+ RDMA_NLDEV_CMD_SYS_SET,
267
+
268
+ /* 8 is free to use */
236269
237270 RDMA_NLDEV_CMD_RES_GET = 9, /* can dump */
238271
....@@ -246,11 +279,21 @@
246279
247280 RDMA_NLDEV_CMD_RES_PD_GET, /* can dump */
248281
249
- RDMA_NLDEV_NUM_OPS
250
-};
282
+ RDMA_NLDEV_CMD_GET_CHARDEV,
251283
252
-enum {
253
- RDMA_NLDEV_ATTR_ENTRY_STRLEN = 16,
284
+ RDMA_NLDEV_CMD_STAT_SET,
285
+
286
+ RDMA_NLDEV_CMD_STAT_GET, /* can dump */
287
+
288
+ RDMA_NLDEV_CMD_STAT_DEL,
289
+
290
+ RDMA_NLDEV_CMD_RES_QP_GET_RAW,
291
+
292
+ RDMA_NLDEV_CMD_RES_CQ_GET_RAW,
293
+
294
+ RDMA_NLDEV_CMD_RES_MR_GET_RAW,
295
+
296
+ RDMA_NLDEV_NUM_OPS
254297 };
255298
256299 enum rdma_nldev_print_type {
....@@ -282,6 +325,9 @@
282325
283326 /*
284327 * Device and port capabilities
328
+ *
329
+ * When used for port info, first 32-bits are CapabilityMask followed by
330
+ * 16-bit CapabilityMask2.
285331 */
286332 RDMA_NLDEV_ATTR_CAP_FLAGS, /* u64 */
287333
....@@ -427,8 +473,102 @@
427473 RDMA_NLDEV_ATTR_DRIVER_U64, /* u64 */
428474
429475 /*
476
+ * Indexes to get/set secific entry,
477
+ * for QP use RDMA_NLDEV_ATTR_RES_LQPN
478
+ */
479
+ RDMA_NLDEV_ATTR_RES_PDN, /* u32 */
480
+ RDMA_NLDEV_ATTR_RES_CQN, /* u32 */
481
+ RDMA_NLDEV_ATTR_RES_MRN, /* u32 */
482
+ RDMA_NLDEV_ATTR_RES_CM_IDN, /* u32 */
483
+ RDMA_NLDEV_ATTR_RES_CTXN, /* u32 */
484
+ /*
485
+ * Identifies the rdma driver. eg: "rxe" or "siw"
486
+ */
487
+ RDMA_NLDEV_ATTR_LINK_TYPE, /* string */
488
+
489
+ /*
490
+ * net namespace mode for rdma subsystem:
491
+ * either shared or exclusive among multiple net namespaces.
492
+ */
493
+ RDMA_NLDEV_SYS_ATTR_NETNS_MODE, /* u8 */
494
+ /*
495
+ * Device protocol, e.g. ib, iw, usnic, roce and opa
496
+ */
497
+ RDMA_NLDEV_ATTR_DEV_PROTOCOL, /* string */
498
+
499
+ /*
500
+ * File descriptor handle of the net namespace object
501
+ */
502
+ RDMA_NLDEV_NET_NS_FD, /* u32 */
503
+ /*
504
+ * Information about a chardev.
505
+ * CHARDEV_TYPE is the name of the chardev ABI (ie uverbs, umad, etc)
506
+ * CHARDEV_ABI signals the ABI revision (historical)
507
+ * CHARDEV_NAME is the kernel name for the /dev/ file (no directory)
508
+ * CHARDEV is the 64 bit dev_t for the inode
509
+ */
510
+ RDMA_NLDEV_ATTR_CHARDEV_TYPE, /* string */
511
+ RDMA_NLDEV_ATTR_CHARDEV_NAME, /* string */
512
+ RDMA_NLDEV_ATTR_CHARDEV_ABI, /* u64 */
513
+ RDMA_NLDEV_ATTR_CHARDEV, /* u64 */
514
+ RDMA_NLDEV_ATTR_UVERBS_DRIVER_ID, /* u64 */
515
+ /*
516
+ * Counter-specific attributes.
517
+ */
518
+ RDMA_NLDEV_ATTR_STAT_MODE, /* u32 */
519
+ RDMA_NLDEV_ATTR_STAT_RES, /* u32 */
520
+ RDMA_NLDEV_ATTR_STAT_AUTO_MODE_MASK, /* u32 */
521
+ RDMA_NLDEV_ATTR_STAT_COUNTER, /* nested table */
522
+ RDMA_NLDEV_ATTR_STAT_COUNTER_ENTRY, /* nested table */
523
+ RDMA_NLDEV_ATTR_STAT_COUNTER_ID, /* u32 */
524
+ RDMA_NLDEV_ATTR_STAT_HWCOUNTERS, /* nested table */
525
+ RDMA_NLDEV_ATTR_STAT_HWCOUNTER_ENTRY, /* nested table */
526
+ RDMA_NLDEV_ATTR_STAT_HWCOUNTER_ENTRY_NAME, /* string */
527
+ RDMA_NLDEV_ATTR_STAT_HWCOUNTER_ENTRY_VALUE, /* u64 */
528
+
529
+ /*
530
+ * CQ adaptive moderatio (DIM)
531
+ */
532
+ RDMA_NLDEV_ATTR_DEV_DIM, /* u8 */
533
+
534
+ RDMA_NLDEV_ATTR_RES_RAW, /* binary */
535
+
536
+ /*
430537 * Always the end
431538 */
432539 RDMA_NLDEV_ATTR_MAX
433540 };
541
+
542
+/*
543
+ * Supported counter bind modes. All modes are mutual-exclusive.
544
+ */
545
+enum rdma_nl_counter_mode {
546
+ RDMA_COUNTER_MODE_NONE,
547
+
548
+ /*
549
+ * A qp is bound with a counter automatically during initialization
550
+ * based on the auto mode (e.g., qp type, ...)
551
+ */
552
+ RDMA_COUNTER_MODE_AUTO,
553
+
554
+ /*
555
+ * Which qp are bound with which counter is explicitly specified
556
+ * by the user
557
+ */
558
+ RDMA_COUNTER_MODE_MANUAL,
559
+
560
+ /*
561
+ * Always the end
562
+ */
563
+ RDMA_COUNTER_MODE_MAX,
564
+};
565
+
566
+/*
567
+ * Supported criteria in counter auto mode.
568
+ * Currently only "qp type" is supported
569
+ */
570
+enum rdma_nl_counter_mask {
571
+ RDMA_COUNTER_MASK_QP_TYPE = 1,
572
+ RDMA_COUNTER_MASK_PID = 1 << 1,
573
+};
434574 #endif /* _UAPI_RDMA_NETLINK_H */