1 #ifndef _UAPI_RDMA_NETLINK_H 2 #define _UAPI_RDMA_NETLINK_H 3 4 #include <linux/types.h> 5 6 enum { 7 RDMA_NL_RDMA_CM = 1, 8 RDMA_NL_IWCM, 9 RDMA_NL_RSVD, 10 RDMA_NL_LS, /* RDMA Local Services */ 11 RDMA_NL_I40IW, 12 RDMA_NL_NUM_CLIENTS 13 }; 14 15 enum { 16 RDMA_NL_GROUP_CM = 1, 17 RDMA_NL_GROUP_IWPM, 18 RDMA_NL_GROUP_LS, 19 RDMA_NL_NUM_GROUPS 20 }; 21 22 #define RDMA_NL_GET_CLIENT(type) ((type & (((1 << 6) - 1) << 10)) >> 10) 23 #define RDMA_NL_GET_OP(type) (type & ((1 << 10) - 1)) 24 #define RDMA_NL_GET_TYPE(client, op) ((client << 10) + op) 25 26 enum { 27 RDMA_NL_RDMA_CM_ID_STATS = 0, 28 RDMA_NL_RDMA_CM_NUM_OPS 29 }; 30 31 enum { 32 RDMA_NL_RDMA_CM_ATTR_SRC_ADDR = 1, 33 RDMA_NL_RDMA_CM_ATTR_DST_ADDR, 34 RDMA_NL_RDMA_CM_NUM_ATTR, 35 }; 36 37 /* iwarp port mapper op-codes */ 38 enum { 39 RDMA_NL_IWPM_REG_PID = 0, 40 RDMA_NL_IWPM_ADD_MAPPING, 41 RDMA_NL_IWPM_QUERY_MAPPING, 42 RDMA_NL_IWPM_REMOVE_MAPPING, 43 RDMA_NL_IWPM_REMOTE_INFO, 44 RDMA_NL_IWPM_HANDLE_ERR, 45 RDMA_NL_IWPM_MAPINFO, 46 RDMA_NL_IWPM_MAPINFO_NUM, 47 RDMA_NL_IWPM_NUM_OPS 48 }; 49 50 struct rdma_cm_id_stats { 51 __u32 qp_num; 52 __u32 bound_dev_if; 53 __u32 port_space; 54 __s32 pid; 55 __u8 cm_state; 56 __u8 node_type; 57 __u8 port_num; 58 __u8 qp_type; 59 }; 60 61 enum { 62 IWPM_NLA_REG_PID_UNSPEC = 0, 63 IWPM_NLA_REG_PID_SEQ, 64 IWPM_NLA_REG_IF_NAME, 65 IWPM_NLA_REG_IBDEV_NAME, 66 IWPM_NLA_REG_ULIB_NAME, 67 IWPM_NLA_REG_PID_MAX 68 }; 69 70 enum { 71 IWPM_NLA_RREG_PID_UNSPEC = 0, 72 IWPM_NLA_RREG_PID_SEQ, 73 IWPM_NLA_RREG_IBDEV_NAME, 74 IWPM_NLA_RREG_ULIB_NAME, 75 IWPM_NLA_RREG_ULIB_VER, 76 IWPM_NLA_RREG_PID_ERR, 77 IWPM_NLA_RREG_PID_MAX 78 79 }; 80 81 enum { 82 IWPM_NLA_MANAGE_MAPPING_UNSPEC = 0, 83 IWPM_NLA_MANAGE_MAPPING_SEQ, 84 IWPM_NLA_MANAGE_ADDR, 85 IWPM_NLA_MANAGE_MAPPED_LOC_ADDR, 86 IWPM_NLA_RMANAGE_MAPPING_ERR, 87 IWPM_NLA_RMANAGE_MAPPING_MAX 88 }; 89 90 #define IWPM_NLA_MANAGE_MAPPING_MAX 3 91 #define IWPM_NLA_QUERY_MAPPING_MAX 4 92 #define IWPM_NLA_MAPINFO_SEND_MAX 3 93 94 enum { 95 IWPM_NLA_QUERY_MAPPING_UNSPEC = 0, 96 IWPM_NLA_QUERY_MAPPING_SEQ, 97 IWPM_NLA_QUERY_LOCAL_ADDR, 98 IWPM_NLA_QUERY_REMOTE_ADDR, 99 IWPM_NLA_RQUERY_MAPPED_LOC_ADDR, 100 IWPM_NLA_RQUERY_MAPPED_REM_ADDR, 101 IWPM_NLA_RQUERY_MAPPING_ERR, 102 IWPM_NLA_RQUERY_MAPPING_MAX 103 }; 104 105 enum { 106 IWPM_NLA_MAPINFO_REQ_UNSPEC = 0, 107 IWPM_NLA_MAPINFO_ULIB_NAME, 108 IWPM_NLA_MAPINFO_ULIB_VER, 109 IWPM_NLA_MAPINFO_REQ_MAX 110 }; 111 112 enum { 113 IWPM_NLA_MAPINFO_UNSPEC = 0, 114 IWPM_NLA_MAPINFO_LOCAL_ADDR, 115 IWPM_NLA_MAPINFO_MAPPED_ADDR, 116 IWPM_NLA_MAPINFO_MAX 117 }; 118 119 enum { 120 IWPM_NLA_MAPINFO_NUM_UNSPEC = 0, 121 IWPM_NLA_MAPINFO_SEQ, 122 IWPM_NLA_MAPINFO_SEND_NUM, 123 IWPM_NLA_MAPINFO_ACK_NUM, 124 IWPM_NLA_MAPINFO_NUM_MAX 125 }; 126 127 enum { 128 IWPM_NLA_ERR_UNSPEC = 0, 129 IWPM_NLA_ERR_SEQ, 130 IWPM_NLA_ERR_CODE, 131 IWPM_NLA_ERR_MAX 132 }; 133 134 /* 135 * Local service operations: 136 * RESOLVE - The client requests the local service to resolve a path. 137 * SET_TIMEOUT - The local service requests the client to set the timeout. 138 */ 139 enum { 140 RDMA_NL_LS_OP_RESOLVE = 0, 141 RDMA_NL_LS_OP_SET_TIMEOUT, 142 RDMA_NL_LS_NUM_OPS 143 }; 144 145 /* Local service netlink message flags */ 146 #define RDMA_NL_LS_F_ERR 0x0100 /* Failed response */ 147 148 /* 149 * Local service resolve operation family header. 150 * The layout for the resolve operation: 151 * nlmsg header 152 * family header 153 * attributes 154 */ 155 156 /* 157 * Local service path use: 158 * Specify how the path(s) will be used. 159 * ALL - For connected CM operation (6 pathrecords) 160 * UNIDIRECTIONAL - For unidirectional UD (1 pathrecord) 161 * GMP - For miscellaneous GMP like operation (at least 1 reversible 162 * pathrecord) 163 */ 164 enum { 165 LS_RESOLVE_PATH_USE_ALL = 0, 166 LS_RESOLVE_PATH_USE_UNIDIRECTIONAL, 167 LS_RESOLVE_PATH_USE_GMP, 168 LS_RESOLVE_PATH_USE_MAX 169 }; 170 171 #define LS_DEVICE_NAME_MAX 64 172 173 struct rdma_ls_resolve_header { 174 __u8 device_name[LS_DEVICE_NAME_MAX]; 175 __u8 port_num; 176 __u8 path_use; 177 }; 178 179 /* Local service attribute type */ 180 #define RDMA_NLA_F_MANDATORY (1 << 13) 181 #define RDMA_NLA_TYPE_MASK (~(NLA_F_NESTED | NLA_F_NET_BYTEORDER | \ 182 RDMA_NLA_F_MANDATORY)) 183 184 /* 185 * Local service attributes: 186 * Attr Name Size Byte order 187 * ----------------------------------------------------- 188 * PATH_RECORD struct ib_path_rec_data 189 * TIMEOUT u32 cpu 190 * SERVICE_ID u64 cpu 191 * DGID u8[16] BE 192 * SGID u8[16] BE 193 * TCLASS u8 194 * PKEY u16 cpu 195 * QOS_CLASS u16 cpu 196 */ 197 enum { 198 LS_NLA_TYPE_UNSPEC = 0, 199 LS_NLA_TYPE_PATH_RECORD, 200 LS_NLA_TYPE_TIMEOUT, 201 LS_NLA_TYPE_SERVICE_ID, 202 LS_NLA_TYPE_DGID, 203 LS_NLA_TYPE_SGID, 204 LS_NLA_TYPE_TCLASS, 205 LS_NLA_TYPE_PKEY, 206 LS_NLA_TYPE_QOS_CLASS, 207 LS_NLA_TYPE_MAX 208 }; 209 210 /* Local service DGID/SGID attribute: big endian */ 211 struct rdma_nla_ls_gid { 212 __u8 gid[16]; 213 }; 214 215 #endif /* _UAPI_RDMA_NETLINK_H */ 216