xref: /linux-6.15/include/uapi/linux/smc.h (revision 8f9dde4b)
1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2 /*
3  *  Shared Memory Communications over RDMA (SMC-R) and RoCE
4  *
5  *  Definitions for generic netlink based configuration of an SMC-R PNET table
6  *
7  *  Copyright IBM Corp. 2016
8  *
9  *  Author(s):  Thomas Richter <[email protected]>
10  */
11 
12 #ifndef _UAPI_LINUX_SMC_H_
13 #define _UAPI_LINUX_SMC_H_
14 
15 /* Netlink SMC_PNETID attributes */
16 enum {
17 	SMC_PNETID_UNSPEC,
18 	SMC_PNETID_NAME,
19 	SMC_PNETID_ETHNAME,
20 	SMC_PNETID_IBNAME,
21 	SMC_PNETID_IBPORT,
22 	__SMC_PNETID_MAX,
23 	SMC_PNETID_MAX = __SMC_PNETID_MAX - 1
24 };
25 
26 enum {				/* SMC PNET Table commands */
27 	SMC_PNETID_GET = 1,
28 	SMC_PNETID_ADD,
29 	SMC_PNETID_DEL,
30 	SMC_PNETID_FLUSH
31 };
32 
33 #define SMCR_GENL_FAMILY_NAME		"SMC_PNETID"
34 #define SMCR_GENL_FAMILY_VERSION	1
35 
36 /* gennetlink interface to access non-socket information from SMC module */
37 #define SMC_GENL_FAMILY_NAME		"SMC_GEN_NETLINK"
38 #define SMC_GENL_FAMILY_VERSION		1
39 
40 /* SMC_GENL_FAMILY commands */
41 enum {
42 	SMC_NETLINK_GET_SYS_INFO = 1,
43 	SMC_NETLINK_GET_LGR_SMCR,
44 	SMC_NETLINK_GET_LINK_SMCR,
45 	SMC_NETLINK_GET_LGR_SMCD,
46 };
47 
48 /* SMC_GENL_FAMILY top level attributes */
49 enum {
50 	SMC_GEN_UNSPEC,
51 	SMC_GEN_SYS_INFO,		/* nest */
52 	SMC_GEN_LGR_SMCR,		/* nest */
53 	SMC_GEN_LINK_SMCR,		/* nest */
54 	SMC_GEN_LGR_SMCD,		/* nest */
55 	__SMC_GEN_MAX,
56 	SMC_GEN_MAX = __SMC_GEN_MAX - 1
57 };
58 
59 /* SMC_GEN_SYS_INFO attributes */
60 enum {
61 	SMC_NLA_SYS_UNSPEC,
62 	SMC_NLA_SYS_VER,		/* u8 */
63 	SMC_NLA_SYS_REL,		/* u8 */
64 	SMC_NLA_SYS_IS_ISM_V2,		/* u8 */
65 	SMC_NLA_SYS_LOCAL_HOST,		/* string */
66 	SMC_NLA_SYS_SEID,		/* string */
67 	__SMC_NLA_SYS_MAX,
68 	SMC_NLA_SYS_MAX = __SMC_NLA_SYS_MAX - 1
69 };
70 
71 /* SMC_NLA_LGR_V2 nested attributes */
72 enum {
73 	SMC_NLA_LGR_V2_VER,		/* u8 */
74 	SMC_NLA_LGR_V2_REL,		/* u8 */
75 	SMC_NLA_LGR_V2_OS,		/* u8 */
76 	SMC_NLA_LGR_V2_NEG_EID,		/* string */
77 	SMC_NLA_LGR_V2_PEER_HOST,	/* string */
78 };
79 
80 /* SMC_GEN_LGR_SMCR attributes */
81 enum {
82 	SMC_NLA_LGR_R_UNSPEC,
83 	SMC_NLA_LGR_R_ID,		/* u32 */
84 	SMC_NLA_LGR_R_ROLE,		/* u8 */
85 	SMC_NLA_LGR_R_TYPE,		/* u8 */
86 	SMC_NLA_LGR_R_PNETID,		/* string */
87 	SMC_NLA_LGR_R_VLAN_ID,		/* u8 */
88 	SMC_NLA_LGR_R_CONNS_NUM,	/* u32 */
89 	__SMC_NLA_LGR_R_MAX,
90 	SMC_NLA_LGR_R_MAX = __SMC_NLA_LGR_R_MAX - 1
91 };
92 
93 /* SMC_GEN_LINK_SMCR attributes */
94 enum {
95 	SMC_NLA_LINK_UNSPEC,
96 	SMC_NLA_LINK_ID,		/* u8 */
97 	SMC_NLA_LINK_IB_DEV,		/* string */
98 	SMC_NLA_LINK_IB_PORT,		/* u8 */
99 	SMC_NLA_LINK_GID,		/* string */
100 	SMC_NLA_LINK_PEER_GID,		/* string */
101 	SMC_NLA_LINK_CONN_CNT,		/* u32 */
102 	SMC_NLA_LINK_NET_DEV,		/* u32 */
103 	SMC_NLA_LINK_UID,		/* u32 */
104 	SMC_NLA_LINK_PEER_UID,		/* u32 */
105 	SMC_NLA_LINK_STATE,		/* u32 */
106 	__SMC_NLA_LINK_MAX,
107 	SMC_NLA_LINK_MAX = __SMC_NLA_LINK_MAX - 1
108 };
109 
110 /* SMC_GEN_LGR_SMCD attributes */
111 enum {
112 	SMC_NLA_LGR_D_UNSPEC,
113 	SMC_NLA_LGR_D_ID,		/* u32 */
114 	SMC_NLA_LGR_D_GID,		/* u64 */
115 	SMC_NLA_LGR_D_PEER_GID,		/* u64 */
116 	SMC_NLA_LGR_D_VLAN_ID,		/* u8 */
117 	SMC_NLA_LGR_D_CONNS_NUM,	/* u32 */
118 	SMC_NLA_LGR_D_PNETID,		/* string */
119 	SMC_NLA_LGR_D_CHID,		/* u16 */
120 	SMC_NLA_LGR_D_PAD,		/* flag */
121 	SMC_NLA_LGR_V2,			/* nest */
122 	__SMC_NLA_LGR_D_MAX,
123 	SMC_NLA_LGR_D_MAX = __SMC_NLA_LGR_D_MAX - 1
124 };
125 #endif /* _UAPI_LINUX_SMC_H */
126