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 
10 FILE_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 */
42  XSIGO_RESOURCE_NO_HA = ( 1 << 4 ),
43 };
44 
45 /** A Xsigo server identifier */
47  /** Virtual machine ID */
49  /** Port GUID */
50  union ib_guid guid;
51 } __attribute__ (( packed ));
52 
53 /** A Xsigo configuration manager identifier */
55  /** Port GUID */
56  union ib_guid 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 */
123 union 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 */
133 struct xsmp_node_id {
134  /** Auxiliary ID (never used) */
136  /** Port GUID */
137  union ib_guid 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 */
223 struct xsmp_xve_ca {
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 */
237 struct xsmp_xve_mac {
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 */
307  struct xsmp_xve_ca tca;
308  /** Host channel adapter parameters */
309  struct xsmp_xve_ca hca;
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 */
341  XSMP_XVE_UPDATE_MTU = ( 1 << 2 ),
342  /** Update administrative state */
343  XSMP_XVE_UPDATE_STATE = ( 1 << 6 ),
344  /** Update gateway to mark as down */
345  XSMP_XVE_UPDATE_GW_DOWN = ( 1 << 30 ),
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 */
uint8_t vmware
VMware index.
Definition: xsigo.h:289
uint8_t code
Reason code.
Definition: xsigo.h:145
Shutdown message.
Definition: xsigo.h:213
An XSMP session message.
Definition: xsigo.h:165
#define __attribute__(x)
Definition: compiler.h:10
uint8_t reserved[10]
Reserved.
Definition: xsigo.h:60
uint16_t len
Length (excluding message header)
Definition: xsigo.h:173
Ethernet over Infiniband.
Infiniband protocol.
unsigned short uint16_t
Definition: stdint.h:11
Virtual Ethernet resource type.
Definition: xsigo.h:40
uint64_t firmware_version
Firmware version.
Definition: xsigo.h:82
An XSMP message header.
Definition: xsigo.h:141
struct xsmp_node_id src
Source node ID.
Definition: xsigo.h:151
uint16_t state
Administrative state (non-zero = "up")
Definition: xsigo.h:267
uint32_t hardware_version
Hardware version.
Definition: xsigo.h:189
char hostname[65]
Hostname.
Definition: xsigo.h:72
union ib_guid resource
Resource identifier.
Definition: xsigo.h:257
uint8_t count
Number of XCM records.
Definition: xsigo.h:111
Update administrative state.
Definition: xsigo.h:343
union ib_guid guid
Port GUID.
Definition: xsigo.h:137
char name[16]
Interface name.
Definition: xsigo.h:275
uint16_t len
Length.
Definition: xsigo.h:147
uint8_t policy
Link aggregation policy.
Definition: xsigo.h:299
uint16_t encap
Encapsulation (apparently obsolete and unused)
Definition: xsigo.h:269
Unreliable Datagram.
Definition: xsigo.h:355
xsmp_session_boot
XSMP boot flags.
Definition: xsigo.h:217
uint8_t reserved2[24]
Reserved.
Definition: xsigo.h:119
char group[48]
Multipath group name.
Definition: xsigo.h:295
uint16_t resources
Resource types.
Definition: xsigo.h:90
A Xsigo MAD.
Definition: xsigo.h:123
uint32_t chassis_version
Required chassis version.
Definition: xsigo.h:183
A Xsigo server identifier.
Definition: xsigo.h:46
struct xsigo_managers_request request
Configuration manager request.
Definition: xsigo.h:127
union ib_gid system_id
System ID.
Definition: xsigo.h:88
struct xsmp_xve_mac mac_le
MAC address (little-endian)
Definition: xsigo.h:263
An XSMP message.
Definition: xsigo.h:367
Reliable Connected.
Definition: xsigo.h:353
char chassis[32]
Chassis name.
Definition: xsigo.h:195
unsigned long long uint64_t
Definition: stdint.h:13
uint32_t driver_version
Driver version.
Definition: xsigo.h:181
Keepalive message.
Definition: xsigo.h:205
struct xsigo_manager_id manager[8]
Managers.
Definition: xsigo.h:117
uint32_t xsmp_version
Protocol version.
Definition: xsigo.h:193
xsmp_xve_type
XSMP virtual Ethernet message types.
Definition: xsigo.h:315
uint8_t reserved3[19]
Reserved.
Definition: xsigo.h:96
struct xsmp_message_header hdr
Message header.
Definition: xsigo.h:369
struct xsmp_xve_ca hca
Host channel adapter parameters.
Definition: xsigo.h:309
Virtual Ethernet message type.
Definition: xsigo.h:161
uint8_t code
Reason code.
Definition: xsigo.h:171
An Infiniband Global Identifier.
Definition: ib_packet.h:33
Session message type.
Definition: xsigo.h:159
char arch[16]
CPU architecture.
Definition: xsigo.h:76
Install virtual NIC.
Definition: xsigo.h:317
uint8_t agg
Link aggregation flag.
Definition: xsigo.h:297
uint16_t committed_mbps
Committed rate (in Mbps)
Definition: xsigo.h:281
uint8_t mode
Mode.
Definition: xsigo.h:303
uint32_t boot
Boot flags.
Definition: xsigo.h:185
No uplink.
Definition: xsigo.h:361
uint8_t reserved0
Reserved.
Definition: xsigo.h:291
Update gateway to mark as down.
Definition: xsigo.h:345
uint16_t sl
Service level.
Definition: xsigo.h:277
struct xsmp_message_header hdr
Message header.
Definition: xsigo.h:247
XSMP virtual Ethernet channel adapter parameters.
Definition: xsigo.h:223
struct xsigo_server_id server
Server ID.
Definition: xsigo.h:109
uint32_t update
Update bitmask.
Definition: xsigo.h:255
struct xsmp_xve_ca tca
Target channel adapter parameters.
Definition: xsigo.h:307
struct ib_mad_hdr mad_hdr
MAD header.
Definition: xsigo.h:105
struct xsmp_session_message sess
Session message.
Definition: xsigo.h:371
uint64_t firmware_version
Firmware version.
Definition: xsigo.h:187
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
uint16_t flow
Flow control enabled (apparently obsolete and unused)
Definition: xsigo.h:279
uint32_t data
Data queue pair number.
Definition: xsigo.h:229
An XSMP virtual Ethernet message.
Definition: xsigo.h:245
uint16_t lid
TCA LID.
Definition: xsigo.h:261
uint8_t reserved0
Reserved.
Definition: xsigo.h:177
union ib_guid prefix_le
Subnet prefix (little-endian)
Definition: xsigo.h:225
uint8_t reserved0[32]
Reserved.
Definition: xsigo.h:68
uint8_t type
Message type.
Definition: xsigo.h:169
Registration rejection message.
Definition: xsigo.h:211
A Xsigo configuration manager request MAD.
Definition: xsigo.h:64
uint16_t rate
Rate.
Definition: xsigo.h:265
struct ib_mad_hdr mad_hdr
MAD header.
Definition: xsigo.h:66
Has uplink.
Definition: xsigo.h:363
A management datagram common header.
Definition: ib_mad.h:538
uint32_t install
Installation flags (apparently obsolete and unused)
Definition: xsigo.h:273
xsmp_xve_update
XSMP virtual Ethernet update bitmask.
Definition: xsigo.h:339
An Infiniband Globally Unique Identifier.
Definition: ib_packet.h:18
FILE_LICENCE(GPL2_OR_LATER_OR_UBDL)
uint8_t reserved0[32]
Reserved.
Definition: xsigo.h:107
uint32_t hardware_version
Hardware version.
Definition: xsigo.h:84
unsigned char uint8_t
Definition: stdint.h:10
struct xsigo_managers_reply reply
Configuration manager reply.
Definition: xsigo.h:129
xsmp_xve_uplink
XSMP virtual Ethernet uplink types.
Definition: xsigo.h:359
Update MTU.
Definition: xsigo.h:341
uint8_t type
Message type.
Definition: xsigo.h:249
xsmp_session_type
XSMP session message types.
Definition: xsigo.h:203
uint8_t version
Version.
Definition: xsigo.h:113
Absence-of-high-availability "resource" type.
Definition: xsigo.h:42
uint16_t multipath
Multipath flags.
Definition: xsigo.h:293
unsigned int uint32_t
Definition: stdint.h:12
Set operational state up.
Definition: xsigo.h:323
uint16_t len
Length (excluding message header)
Definition: xsigo.h:253
An XSMP node identifier.
Definition: xsigo.h:133
Get operational state.
Definition: xsigo.h:327
uint16_t resources
Resource types.
Definition: xsigo.h:179
PXE boot.
Definition: xsigo.h:219
Registration confirmation message.
Definition: xsigo.h:209
Initial registration message.
Definition: xsigo.h:207
xsmp_xve_mode
XSMP virtual Ethernet modes.
Definition: xsigo.h:351
uint8_t reserved1[120]
Reserved.
Definition: xsigo.h:199
Update virtual NIC.
Definition: xsigo.h:321
uint8_t os_type
Operating system type.
Definition: xsigo.h:175
uint16_t high
High 16 bits.
Definition: xsigo.h:239
Set operational state down.
Definition: xsigo.h:325
uint32_t network
Network ID.
Definition: xsigo.h:301
xsmp_xve_code
XSMP virtual Ethernet message codes.
Definition: xsigo.h:333
uint32_t committed_burst
Committed burst size (in bytes)
Definition: xsigo.h:285
uint8_t code
Reason code.
Definition: xsigo.h:251
union ib_mad mad
Generic MAD.
Definition: xsigo.h:125
uint8_t uplink
Uplink type.
Definition: xsigo.h:305
struct xsmp_node_id dst
Destination node ID.
Definition: xsigo.h:153
Update gateway information.
Definition: xsigo.h:347
uint32_t peak_burst
Peak burst size (in bytes)
Definition: xsigo.h:287
A management datagram.
Definition: ib_mad.h:610
struct xsigo_server_id server
Server ID.
Definition: xsigo.h:70
uint32_t aux
Auxiliary ID (never used)
Definition: xsigo.h:135
char session[32]
Session name.
Definition: xsigo.h:197
Delete virtual NIC.
Definition: xsigo.h:319
uint32_t driver_version
Driver version.
Definition: xsigo.h:86
XSMP virtual Ethernet MAC address.
Definition: xsigo.h:237
uint16_t mtu
MTU.
Definition: xsigo.h:271
uint32_t low
Low 32 bits.
Definition: xsigo.h:241
uint8_t reserved2[2]
Reserved.
Definition: xsigo.h:92
uint32_t vendor
Vendor part ID.
Definition: xsigo.h:191
union ib_guid guid_le
TCA GUID (little-endian)
Definition: xsigo.h:259
A Xsigo configuration manager identifier.
Definition: xsigo.h:54
struct xsmp_message_header hdr
Message header.
Definition: xsigo.h:167
Virtual NIC is ready.
Definition: xsigo.h:329
struct xsmp_xve_message xve
Virtual Ethernet message.
Definition: xsigo.h:373
uint16_t pkey
Partition key.
Definition: xsigo.h:231
uint8_t os_type
OS type.
Definition: xsigo.h:78
uint8_t reserved1[3]
Reserved.
Definition: xsigo.h:80
char os_version[32]
OS version.
Definition: xsigo.h:74
uint32_t ctrl
Control queue pair number.
Definition: xsigo.h:227
uint16_t peak_mbps
Peak rate (in Mbps)
Definition: xsigo.h:283
uint8_t reserved1[2]
Reserved.
Definition: xsigo.h:115
uint32_t vm
Virtual machine ID.
Definition: xsigo.h:48
uint16_t qkey
Queue key.
Definition: xsigo.h:233
xsigo_resource_type
Xsigo resource types.
Definition: xsigo.h:38
uint8_t type
Message type.
Definition: xsigo.h:143
uint32_t seq
Sequence number.
Definition: xsigo.h:149
xsmp_message_type
XSMP message types.
Definition: xsigo.h:157
union ib_guid guid
Port GUID.
Definition: xsigo.h:50
char build[16]
Build version.
Definition: xsigo.h:94
uint8_t reserved1[336]
Reserved.
Definition: xsigo.h:311