iPXE
xsigo.h
Go to the documentation of this file.
1#ifndef _IPXE_XSIGO_H
2#define _IPXE_XSIGO_H
3
4/** @file
5 *
6 * Xsigo virtual Ethernet devices
7 *
8 */
9
10FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
11
12#include <stdint.h>
13#include <ipxe/infiniband.h>
14#include <ipxe/eoib.h>
15
16/** Xsigo directory service record name */
17#define XDS_SERVICE_NAME "XSIGOXDS"
18
19/** Xsigo configuration manager service ID */
20#define XCM_SERVICE_ID { 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x97, 0x01 }
21
22/** Xsigo management class */
23#define XSIGO_MGMT_CLASS 0x0b
24
25/** Xsigo management class version */
26#define XSIGO_MGMT_CLASS_VERSION 2
27
28/** Xsigo configuration manager request MAD */
29#define XSIGO_ATTR_XCM_REQUEST 0xb002
30
31/** Generic operating system type */
32#define XSIGO_OS_TYPE_GENERIC 0x40
33
34/** Xsigo virtual Ethernet broadcast GID prefix */
35#define XVE_PREFIX 0xff15101cUL
36
37/** Xsigo resource types */
39 /** Virtual Ethernet resource type */
40 XSIGO_RESOURCE_XVE = ( 1 << 6 ),
41 /** Absence-of-high-availability "resource" type */
43};
44
45/** A Xsigo server identifier */
47 /** Virtual machine ID */
49 /** Port GUID */
51} __attribute__ (( packed ));
52
53/** A Xsigo configuration manager identifier */
55 /** Port GUID */
57 /** LID */
59 /** Reserved */
61} __attribute__ (( packed ));
62
63/** A Xsigo configuration manager request MAD */
65 /** MAD header */
67 /** Reserved */
69 /** Server ID */
71 /** Hostname */
72 char hostname[ 65 /* Seriously, guys? */ ];
73 /** OS version */
74 char os_version[32];
75 /** CPU architecture */
76 char arch[16];
77 /** OS type */
79 /** Reserved */
81 /** Firmware version */
83 /** Hardware version */
85 /** Driver version */
87 /** System ID */
89 /** Resource types */
91 /** Reserved */
93 /** Build version */
94 char build[16];
95 /** Reserved */
97} __attribute__ (( packed ));
98
99/** Resource types are present */
100#define XSIGO_RESOURCES_PRESENT 0x8000
101
102/** A Xsigo configuration manager reply MAD */
104 /** MAD header */
106 /** Reserved */
108 /** Server ID */
110 /** Number of XCM records */
112 /** Version */
114 /** Reserved */
116 /** Managers */
118 /** Reserved */
120} __attribute__ (( packed ));
121
122/** A Xsigo MAD */
124 /** Generic MAD */
125 union ib_mad mad;
126 /** Configuration manager request */
128 /** Configuration manager reply */
130} __attribute__ (( packed ));
131
132/** An XSMP node identifier */
134 /** Auxiliary ID (never used) */
136 /** Port GUID */
138} __attribute__ (( packed ));
139
140/** An XSMP message header */
142 /** Message type */
144 /** Reason code */
146 /** Length */
148 /** Sequence number */
150 /** Source node ID */
152 /** Destination node ID */
154} __attribute__ (( packed ));
155
156/** XSMP message types */
158 /** Session message type */
160 /** Virtual Ethernet message type */
162};
163
164/** An XSMP session message */
166 /** Message header */
168 /** Message type */
170 /** Reason code */
172 /** Length (excluding message header) */
174 /** Operating system type */
176 /** Reserved */
178 /** Resource types */
180 /** Driver version */
182 /** Required chassis version */
184 /** Boot flags */
186 /** Firmware version */
188 /** Hardware version */
190 /** Vendor part ID */
192 /** Protocol version */
194 /** Chassis name */
195 char chassis[32];
196 /** Session name */
197 char session[32];
198 /** Reserved */
200} __attribute__ (( packed ));
201
202/** XSMP session message types */
204 /** Keepalive message */
206 /** Initial registration message */
208 /** Registration confirmation message */
210 /** Registration rejection message */
212 /** Shutdown message */
214};
215
216/** XSMP boot flags */
218 /** PXE boot */
219 XSMP_BOOT_PXE = ( 1 << 0 ),
220};
221
222/** XSMP virtual Ethernet channel adapter parameters */
224 /** Subnet prefix (little-endian) */
226 /** Control queue pair number */
228 /** Data queue pair number */
230 /** Partition key */
232 /** Queue key */
234} __attribute__ (( packed ));
235
236/** XSMP virtual Ethernet MAC address */
238 /** High 16 bits */
240 /** Low 32 bits */
242} __attribute__ (( packed ));
243
244/** An XSMP virtual Ethernet message */
246 /** Message header */
248 /** Message type */
250 /** Reason code */
252 /** Length (excluding message header) */
254 /** Update bitmask */
256 /** Resource identifier */
258 /** TCA GUID (little-endian) */
260 /** TCA LID */
262 /** MAC address (little-endian) */
264 /** Rate */
266 /** Administrative state (non-zero = "up") */
268 /** Encapsulation (apparently obsolete and unused) */
270 /** MTU */
272 /** Installation flags (apparently obsolete and unused) */
274 /** Interface name */
275 char name[16];
276 /** Service level */
278 /** Flow control enabled (apparently obsolete and unused) */
280 /** Committed rate (in Mbps) */
282 /** Peak rate (in Mbps) */
284 /** Committed burst size (in bytes) */
286 /** Peak burst size (in bytes) */
288 /** VMware index */
290 /** Reserved */
292 /** Multipath flags */
294 /** Multipath group name */
295 char group[48];
296 /** Link aggregation flag */
298 /** Link aggregation policy */
300 /** Network ID */
302 /** Mode */
304 /** Uplink type */
306 /** Target channel adapter parameters */
308 /** Host channel adapter parameters */
310 /** Reserved */
312} __attribute__ (( packed ));
313
314/** XSMP virtual Ethernet message types */
316 /** Install virtual NIC */
318 /** Delete virtual NIC */
320 /** Update virtual NIC */
322 /** Set operational state up */
324 /** Set operational state down */
326 /** Get operational state */
328 /** Virtual NIC is ready */
330};
331
332/** XSMP virtual Ethernet message codes */
334 /* Something went wrong */
336};
337
338/** XSMP virtual Ethernet update bitmask */
340 /** Update MTU */
342 /** Update administrative state */
344 /** Update gateway to mark as down */
346 /** Update gateway information */
348};
349
350/** XSMP virtual Ethernet modes */
352 /** Reliable Connected */
354 /** Unreliable Datagram */
356};
357
358/** XSMP virtual Ethernet uplink types */
360 /** No uplink */
362 /** Has uplink */
364};
365
366/** An XSMP message */
368 /** Message header */
370 /** Session message */
372 /** Virtual Ethernet message */
374};
375
376/** Delay between attempts to open the Infiniband device
377 *
378 * This is a policy decision.
379 */
380#define XSIGO_OPEN_RETRY_DELAY ( 2 * TICKS_PER_SEC )
381
382/** Delay between unsuccessful discovery attempts
383 *
384 * This is a policy decision.
385 */
386#define XSIGO_DISCOVERY_FAILURE_DELAY ( 10 * TICKS_PER_SEC )
387
388/** Delay between successful discovery attempts
389 *
390 * This is a policy decision.
391 */
392#define XSIGO_DISCOVERY_SUCCESS_DELAY ( 20 * TICKS_PER_SEC )
393
394/** Delay between keepalive requests
395 *
396 * This is a policy decision.
397 */
398#define XSIGO_KEEPALIVE_INTERVAL ( 10 * TICKS_PER_SEC )
399
400/** Maximum time to wait for a keepalive response
401 *
402 * This is a policy decision.
403 */
404#define XSIGO_KEEPALIVE_MAX_WAIT ( 2 * TICKS_PER_SEC )
405
406#endif /* _IPXE_XSIGO_H */
unsigned short uint16_t
Definition stdint.h:11
unsigned int uint32_t
Definition stdint.h:12
unsigned long long uint64_t
Definition stdint.h:13
unsigned char uint8_t
Definition stdint.h:10
Ethernet over Infiniband.
#define FILE_LICENCE(_licence)
Declare a particular licence as applying to a file.
Definition compiler.h:896
#define __attribute__(x)
Definition compiler.h:10
Infiniband protocol.
A management datagram common header.
Definition ib_mad.h:539
A Xsigo configuration manager identifier.
Definition xsigo.h:54
uint8_t reserved[10]
Reserved.
Definition xsigo.h:60
uint16_t lid
LID.
Definition xsigo.h:58
union ib_guid guid
Port GUID.
Definition xsigo.h:56
A Xsigo configuration manager reply MAD.
Definition xsigo.h:103
uint8_t reserved0[32]
Reserved.
Definition xsigo.h:107
uint8_t count
Number of XCM records.
Definition xsigo.h:111
struct xsigo_server_id server
Server ID.
Definition xsigo.h:109
struct xsigo_manager_id manager[8]
Managers.
Definition xsigo.h:117
uint8_t version
Version.
Definition xsigo.h:113
uint8_t reserved2[24]
Reserved.
Definition xsigo.h:119
uint8_t reserved1[2]
Reserved.
Definition xsigo.h:115
struct ib_mad_hdr mad_hdr
MAD header.
Definition xsigo.h:105
A Xsigo configuration manager request MAD.
Definition xsigo.h:64
uint32_t hardware_version
Hardware version.
Definition xsigo.h:84
uint16_t resources
Resource types.
Definition xsigo.h:90
char hostname[65]
Hostname.
Definition xsigo.h:72
uint8_t reserved3[19]
Reserved.
Definition xsigo.h:96
uint8_t reserved2[2]
Reserved.
Definition xsigo.h:92
char build[16]
Build version.
Definition xsigo.h:94
uint32_t driver_version
Driver version.
Definition xsigo.h:86
char arch[16]
CPU architecture.
Definition xsigo.h:76
uint8_t reserved0[32]
Reserved.
Definition xsigo.h:68
uint64_t firmware_version
Firmware version.
Definition xsigo.h:82
uint8_t reserved1[3]
Reserved.
Definition xsigo.h:80
struct xsigo_server_id server
Server ID.
Definition xsigo.h:70
uint8_t os_type
OS type.
Definition xsigo.h:78
char os_version[32]
OS version.
Definition xsigo.h:74
struct ib_mad_hdr mad_hdr
MAD header.
Definition xsigo.h:66
union ib_gid system_id
System ID.
Definition xsigo.h:88
A Xsigo server identifier.
Definition xsigo.h:46
union ib_guid guid
Port GUID.
Definition xsigo.h:50
uint32_t vm
Virtual machine ID.
Definition xsigo.h:48
An XSMP message header.
Definition xsigo.h:141
uint8_t code
Reason code.
Definition xsigo.h:145
uint32_t seq
Sequence number.
Definition xsigo.h:149
struct xsmp_node_id dst
Destination node ID.
Definition xsigo.h:153
uint8_t type
Message type.
Definition xsigo.h:143
struct xsmp_node_id src
Source node ID.
Definition xsigo.h:151
uint16_t len
Length.
Definition xsigo.h:147
An XSMP node identifier.
Definition xsigo.h:133
uint32_t aux
Auxiliary ID (never used)
Definition xsigo.h:135
union ib_guid guid
Port GUID.
Definition xsigo.h:137
An XSMP session message.
Definition xsigo.h:165
char chassis[32]
Chassis name.
Definition xsigo.h:195
uint32_t vendor
Vendor part ID.
Definition xsigo.h:191
uint32_t xsmp_version
Protocol version.
Definition xsigo.h:193
char session[32]
Session name.
Definition xsigo.h:197
uint32_t driver_version
Driver version.
Definition xsigo.h:181
uint16_t len
Length (excluding message header)
Definition xsigo.h:173
uint32_t hardware_version
Hardware version.
Definition xsigo.h:189
uint8_t reserved0
Reserved.
Definition xsigo.h:177
uint8_t reserved1[120]
Reserved.
Definition xsigo.h:199
uint16_t resources
Resource types.
Definition xsigo.h:179
uint64_t firmware_version
Firmware version.
Definition xsigo.h:187
uint8_t os_type
Operating system type.
Definition xsigo.h:175
uint8_t code
Reason code.
Definition xsigo.h:171
uint8_t type
Message type.
Definition xsigo.h:169
uint32_t chassis_version
Required chassis version.
Definition xsigo.h:183
uint32_t boot
Boot flags.
Definition xsigo.h:185
struct xsmp_message_header hdr
Message header.
Definition xsigo.h:167
XSMP virtual Ethernet channel adapter parameters.
Definition xsigo.h:223
uint32_t ctrl
Control queue pair number.
Definition xsigo.h:227
union ib_guid prefix_le
Subnet prefix (little-endian)
Definition xsigo.h:225
uint16_t pkey
Partition key.
Definition xsigo.h:231
uint32_t data
Data queue pair number.
Definition xsigo.h:229
uint16_t qkey
Queue key.
Definition xsigo.h:233
XSMP virtual Ethernet MAC address.
Definition xsigo.h:237
uint16_t high
High 16 bits.
Definition xsigo.h:239
uint32_t low
Low 32 bits.
Definition xsigo.h:241
An XSMP virtual Ethernet message.
Definition xsigo.h:245
uint16_t committed_mbps
Committed rate (in Mbps)
Definition xsigo.h:281
uint32_t peak_burst
Peak burst size (in bytes)
Definition xsigo.h:287
char group[48]
Multipath group name.
Definition xsigo.h:295
uint8_t mode
Mode.
Definition xsigo.h:303
uint8_t uplink
Uplink type.
Definition xsigo.h:305
uint32_t install
Installation flags (apparently obsolete and unused)
Definition xsigo.h:273
uint16_t encap
Encapsulation (apparently obsolete and unused)
Definition xsigo.h:269
uint32_t network
Network ID.
Definition xsigo.h:301
uint8_t reserved1[336]
Reserved.
Definition xsigo.h:311
uint16_t sl
Service level.
Definition xsigo.h:277
uint16_t len
Length (excluding message header)
Definition xsigo.h:253
uint32_t update
Update bitmask.
Definition xsigo.h:255
uint8_t agg
Link aggregation flag.
Definition xsigo.h:297
uint8_t policy
Link aggregation policy.
Definition xsigo.h:299
uint8_t type
Message type.
Definition xsigo.h:249
uint16_t multipath
Multipath flags.
Definition xsigo.h:293
struct xsmp_xve_ca tca
Target channel adapter parameters.
Definition xsigo.h:307
union ib_guid guid_le
TCA GUID (little-endian)
Definition xsigo.h:259
uint8_t code
Reason code.
Definition xsigo.h:251
char name[16]
Interface name.
Definition xsigo.h:275
uint16_t state
Administrative state (non-zero = "up")
Definition xsigo.h:267
uint16_t peak_mbps
Peak rate (in Mbps)
Definition xsigo.h:283
union ib_guid resource
Resource identifier.
Definition xsigo.h:257
uint32_t committed_burst
Committed burst size (in bytes)
Definition xsigo.h:285
uint16_t rate
Rate.
Definition xsigo.h:265
uint16_t flow
Flow control enabled (apparently obsolete and unused)
Definition xsigo.h:279
uint16_t lid
TCA LID.
Definition xsigo.h:261
uint8_t vmware
VMware index.
Definition xsigo.h:289
uint8_t reserved0
Reserved.
Definition xsigo.h:291
struct xsmp_xve_ca hca
Host channel adapter parameters.
Definition xsigo.h:309
struct xsmp_xve_mac mac_le
MAC address (little-endian)
Definition xsigo.h:263
struct xsmp_message_header hdr
Message header.
Definition xsigo.h:247
uint16_t mtu
MTU.
Definition xsigo.h:271
An Infiniband Global Identifier.
Definition ib_packet.h:34
An Infiniband Globally Unique Identifier.
Definition ib_packet.h:19
A management datagram.
Definition ib_mad.h:611
A Xsigo MAD.
Definition xsigo.h:123
struct xsigo_managers_reply reply
Configuration manager reply.
Definition xsigo.h:129
union ib_mad mad
Generic MAD.
Definition xsigo.h:125
struct xsigo_managers_request request
Configuration manager request.
Definition xsigo.h:127
An XSMP message.
Definition xsigo.h:367
struct xsmp_session_message sess
Session message.
Definition xsigo.h:371
struct xsmp_message_header hdr
Message header.
Definition xsigo.h:369
struct xsmp_xve_message xve
Virtual Ethernet message.
Definition xsigo.h:373
xsmp_xve_mode
XSMP virtual Ethernet modes.
Definition xsigo.h:351
@ XSMP_XVE_MODE_RC
Reliable Connected.
Definition xsigo.h:353
@ XSMP_XVE_MODE_UD
Unreliable Datagram.
Definition xsigo.h:355
xsmp_xve_uplink
XSMP virtual Ethernet uplink types.
Definition xsigo.h:359
@ XSMP_XVE_NO_UPLINK
No uplink.
Definition xsigo.h:361
@ XSMP_XVE_UPLINK
Has uplink.
Definition xsigo.h:363
xsmp_message_type
XSMP message types.
Definition xsigo.h:157
@ XSMP_TYPE_SESSION
Session message type.
Definition xsigo.h:159
@ XSMP_TYPE_XVE
Virtual Ethernet message type.
Definition xsigo.h:161
xsigo_resource_type
Xsigo resource types.
Definition xsigo.h:38
@ XSIGO_RESOURCE_NO_HA
Absence-of-high-availability "resource" type.
Definition xsigo.h:42
@ XSIGO_RESOURCE_XVE
Virtual Ethernet resource type.
Definition xsigo.h:40
xsmp_xve_type
XSMP virtual Ethernet message types.
Definition xsigo.h:315
@ XSMP_XVE_TYPE_INSTALL
Install virtual NIC.
Definition xsigo.h:317
@ XSMP_XVE_TYPE_UPDATE
Update virtual NIC.
Definition xsigo.h:321
@ XSMP_XVE_TYPE_OPER_DOWN
Set operational state down.
Definition xsigo.h:325
@ XSMP_XVE_TYPE_OPER_UP
Set operational state up.
Definition xsigo.h:323
@ XSMP_XVE_TYPE_READY
Virtual NIC is ready.
Definition xsigo.h:329
@ XSMP_XVE_TYPE_DELETE
Delete virtual NIC.
Definition xsigo.h:319
@ XSMP_XVE_TYPE_OPER_REQ
Get operational state.
Definition xsigo.h:327
xsmp_xve_code
XSMP virtual Ethernet message codes.
Definition xsigo.h:333
@ XSMP_XVE_CODE_ERROR
Definition xsigo.h:335
xsmp_xve_update
XSMP virtual Ethernet update bitmask.
Definition xsigo.h:339
@ XSMP_XVE_UPDATE_STATE
Update administrative state.
Definition xsigo.h:343
@ XSMP_XVE_UPDATE_GW_CHANGE
Update gateway information.
Definition xsigo.h:347
@ XSMP_XVE_UPDATE_GW_DOWN
Update gateway to mark as down.
Definition xsigo.h:345
@ XSMP_XVE_UPDATE_MTU
Update MTU.
Definition xsigo.h:341
xsmp_session_type
XSMP session message types.
Definition xsigo.h:203
@ XSMP_SESSION_TYPE_CONFIRM
Registration confirmation message.
Definition xsigo.h:209
@ XSMP_SESSION_TYPE_REJECT
Registration rejection message.
Definition xsigo.h:211
@ XSMP_SESSION_TYPE_SHUTDOWN
Shutdown message.
Definition xsigo.h:213
@ XSMP_SESSION_TYPE_REGISTER
Initial registration message.
Definition xsigo.h:207
@ XSMP_SESSION_TYPE_HELLO
Keepalive message.
Definition xsigo.h:205
xsmp_session_boot
XSMP boot flags.
Definition xsigo.h:217
@ XSMP_BOOT_PXE
PXE boot.
Definition xsigo.h:219