[HW, VSTAT] Added more attributes to query CA: RESIZE_MAX_WR, CHANGE_PHYSICAL_PORT...
[mirror/winof/.git] / inc / iba / ib_types.h
1 /*\r
2  * Copyright (c) 2005 SilverStorm Technologies.  All rights reserved.\r
3  * Copyright (c) 2004-2006 Voltaire, Inc.  All rights reserved.\r
4  * Copyright (c) 2002-2006 Mellanox Technologies LTD. All rights reserved.\r
5  * Copyright (c) 1996-2003 Intel Corporation. All rights reserved. \r
6  *\r
7  * This software is available to you under the OpenIB.org BSD license\r
8  * below:\r
9  *\r
10  *     Redistribution and use in source and binary forms, with or\r
11  *     without modification, are permitted provided that the following\r
12  *     conditions are met:\r
13  *\r
14  *      - Redistributions of source code must retain the above\r
15  *        copyright notice, this list of conditions and the following\r
16  *        disclaimer.\r
17  *\r
18  *      - Redistributions in binary form must reproduce the above\r
19  *        copyright notice, this list of conditions and the following\r
20  *        disclaimer in the documentation and/or other materials\r
21  *        provided with the distribution.\r
22  *\r
23  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
24  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
25  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
26  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\r
27  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\r
28  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
29  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r
30  * SOFTWARE.\r
31  *\r
32  * $Id$\r
33  */\r
34 \r
35 \r
36 #if !defined(__IB_TYPES_H__)\r
37 #define __IB_TYPES_H__\r
38 \r
39 #include <complib/cl_types.h>\r
40 #include <complib/cl_byteswap.h>\r
41 //#include <al_fmr_pool.h>\r
42 \r
43 #ifndef FUNC_PTR64\r
44 #define FUNC_PTR64\r
45 #endif\r
46 \r
47 #ifndef TYPEDEF_PTR64\r
48 #define TYPEDEF_PTR64\r
49 #endif\r
50 \r
51 #ifndef VOID_PTR64\r
52 #define VOID_PTR64\r
53 #endif\r
54 \r
55 #ifndef STRUCT_PTR64\r
56 #define STRUCT_PTR64\r
57 #endif\r
58 \r
59 \r
60 #pragma warning( disable : 4201)\r
61 #pragma warning( disable :4305)\r
62 \r
63 \r
64 #define CONCAT(str1, str2) str1##str2\r
65 \r
66 #define TO_LONG_PTR(type,member_name) \\r
67     union { type member_name;  uint64_t CONCAT(member_name,_padding) ; }\r
68 \r
69 \r
70 \r
71 #ifdef CL_KERNEL\r
72         #define AL_EXPORT\r
73         #define AL_API\r
74         #define AL_INLINE       static inline\r
75 #else\r
76         #if defined( EXPORT_AL_SYMBOLS )\r
77                 #define AL_EXPORT       __declspec(dllexport)\r
78         #else\r
79                 #define AL_EXPORT       __declspec(dllimport)\r
80         #endif\r
81         #define AL_API          __stdcall\r
82         #define AL_INLINE       AL_EXPORT inline\r
83 #endif  /* CL_KERNEL */\r
84 \r
85 \r
86 #ifdef __cplusplus\r
87 extern "C"\r
88 {\r
89 #endif  /* __cplusplus */\r
90 \r
91 \r
92 /****h* IBA Base/Constants\r
93 * NAME\r
94 *       Constants\r
95 *\r
96 * DESCRIPTION\r
97 *       The following constants are used throughout the IBA code base.\r
98 *\r
99 *       Definitions are from the InfiniBand Architecture Specification v1.2\r
100 *\r
101 *********/\r
102 \r
103 /****d* IBA Base: Constants/MAD_BLOCK_SIZE\r
104 * NAME\r
105 *       MAD_BLOCK_SIZE\r
106 *\r
107 * DESCRIPTION\r
108 *       Size of a non-RMPP MAD datagram.\r
109 *\r
110 * SOURCE\r
111 */\r
112 #define MAD_BLOCK_SIZE                                          256\r
113 /**********/\r
114 \r
115 /****d* IBA Base: Constants/MAD_RMPP_HDR_SIZE\r
116 * NAME\r
117 *       MAD_RMPP_HDR_SIZE\r
118 *\r
119 * DESCRIPTION\r
120 *       Size of an RMPP header, including the common MAD header.\r
121 *\r
122 * SOURCE\r
123 */\r
124 #define MAD_RMPP_HDR_SIZE                                       36\r
125 /**********/\r
126 \r
127 /****d* IBA Base: Constants/MAD_RMPP_DATA_SIZE\r
128 * NAME\r
129 *       MAD_RMPP_DATA_SIZE\r
130 *\r
131 * DESCRIPTION\r
132 *       Size of an RMPP transaction data section.\r
133 *\r
134 * SOURCE\r
135 */\r
136 #define MAD_RMPP_DATA_SIZE              (MAD_BLOCK_SIZE - MAD_RMPP_HDR_SIZE)\r
137 /**********/\r
138 \r
139 /****d* IBA Base: Constants/MAD_BLOCK_GRH_SIZE\r
140 * NAME\r
141 *       MAD_BLOCK_GRH_SIZE\r
142 *\r
143 * DESCRIPTION\r
144 *       Size of a MAD datagram, including the GRH.\r
145 *\r
146 * SOURCE\r
147 */\r
148 #define MAD_BLOCK_GRH_SIZE                                      296\r
149 /**********/\r
150 \r
151 /****d* IBA Base: Constants/IB_LID_PERMISSIVE\r
152 * NAME\r
153 *       IB_LID_PERMISSIVE\r
154 *\r
155 * DESCRIPTION\r
156 *       Permissive LID\r
157 *\r
158 * SOURCE\r
159 */\r
160 #define IB_LID_PERMISSIVE                                       0xFFFF\r
161 /**********/\r
162 \r
163 /****d* IBA Base: Constants/IB_DEFAULT_PKEY\r
164 * NAME\r
165 *       IB_DEFAULT_PKEY\r
166 *\r
167 * DESCRIPTION\r
168 *       P_Key value for the default partition.\r
169 *\r
170 * SOURCE\r
171 */\r
172 #define IB_DEFAULT_PKEY                                         0xFFFF\r
173 /**********/\r
174 \r
175 /****d* IBA Base: Constants/IB_QP1_WELL_KNOWN_Q_KEY\r
176 * NAME\r
177 *       IB_QP1_WELL_KNOWN_Q_KEY\r
178 *\r
179 * DESCRIPTION\r
180 *       Well-known Q_Key for QP1 privileged mode access (15.4.2).\r
181 *\r
182 * SOURCE\r
183 */\r
184 #define IB_QP1_WELL_KNOWN_Q_KEY                         CL_NTOH32(0x80010000)\r
185 /*********/\r
186 \r
187 #define IB_QP0                                                          0\r
188 #define IB_QP1                                                          CL_NTOH32(1)\r
189 \r
190 #define IB_QP_PRIVILEGED_Q_KEY                          CL_NTOH32(0x80000000)\r
191 \r
192 /****d* IBA Base: Constants/IB_LID_UCAST_START\r
193 * NAME\r
194 *       IB_LID_UCAST_START\r
195 *\r
196 * DESCRIPTION\r
197 *       Lowest valid unicast LID value.\r
198 *\r
199 * SOURCE\r
200 */\r
201 #define IB_LID_UCAST_START_HO                           0x0001\r
202 #define IB_LID_UCAST_START                                      (CL_HTON16(IB_LID_UCAST_START_HO))\r
203 /**********/\r
204 \r
205 /****d* IBA Base: Constants/IB_LID_UCAST_END\r
206 * NAME\r
207 *       IB_LID_UCAST_END\r
208 *\r
209 * DESCRIPTION\r
210 *       Highest valid unicast LID value.\r
211 *\r
212 * SOURCE\r
213 */\r
214 #define IB_LID_UCAST_END_HO                                     0xBFFF\r
215 #define IB_LID_UCAST_END                                        (CL_HTON16(IB_LID_UCAST_END_HO))\r
216 /**********/\r
217 \r
218 /****d* IBA Base: Constants/IB_LID_MCAST_START\r
219 * NAME\r
220 *       IB_LID_MCAST_START\r
221 *\r
222 * DESCRIPTION\r
223 *       Lowest valid multicast LID value.\r
224 *\r
225 * SOURCE\r
226 */\r
227 #define IB_LID_MCAST_START_HO                           0xC000\r
228 #define IB_LID_MCAST_START                                      (CL_HTON16(IB_LID_MCAST_START_HO))\r
229 /**********/\r
230 \r
231 /****d* IBA Base: Constants/IB_LID_MCAST_END\r
232 * NAME\r
233 *       IB_LID_MCAST_END\r
234 *\r
235 * DESCRIPTION\r
236 *       Highest valid multicast LID value.\r
237 *\r
238 * SOURCE\r
239 */\r
240 #define IB_LID_MCAST_END_HO                                     0xFFFE\r
241 #define IB_LID_MCAST_END                                        (CL_HTON16(IB_LID_MCAST_END_HO))\r
242 /**********/\r
243 \r
244 /****d* IBA Base: Constants/IB_DEFAULT_SUBNET_PREFIX\r
245 * NAME\r
246 *       IB_DEFAULT_SUBNET_PREFIX\r
247 *\r
248 * DESCRIPTION\r
249 *       Default subnet GID prefix.\r
250 *\r
251 * SOURCE\r
252 */\r
253 #define IB_DEFAULT_SUBNET_PREFIX                        (CL_HTON64(0xFE80000000000000ULL))\r
254 /**********/\r
255 \r
256 /****d* IBA Base: Constants/IB_NODE_NUM_PORTS_MAX\r
257 * NAME\r
258 *       IB_NODE_NUM_PORTS_MAX\r
259 *\r
260 * DESCRIPTION\r
261 *       Maximum number of ports in a single node (14.2.5.7).\r
262 * SOURCE\r
263 */\r
264 #define IB_NODE_NUM_PORTS_MAX                           0xFE\r
265 /**********/\r
266 \r
267 /****d* IBA Base: Constants/IB_INVALID_PORT_NUM\r
268 * NAME\r
269 *       IB_INVALID_PORT_NUM\r
270 *\r
271 * DESCRIPTION\r
272 *       Value used to indicate an invalid port number (14.2.5.10).\r
273 *\r
274 * SOURCE\r
275 */\r
276 #define IB_INVALID_PORT_NUM                                     0xFF\r
277 /*********/\r
278 \r
279 /****d* IBA Base: Constants/IB_SUBNET_PATH_HOPS_MAX\r
280 * NAME\r
281 *       IB_SUBNET_PATH_HOPS_MAX\r
282 *\r
283 * DESCRIPTION\r
284 *       Maximum number of directed route switch hops in a subnet (14.2.1.2).\r
285 *\r
286 * SOURCE\r
287 */\r
288 #define IB_SUBNET_PATH_HOPS_MAX                         64\r
289 /*********/\r
290 \r
291 /****d* IBA Base: Constants/IB_PKEY_MAX_BLOCKS\r
292 * NAME\r
293 *       IB_PKEY_MAX_BLOCKS\r
294 *\r
295 * DESCRIPTION\r
296 *       Maximum number of PKEY blocks (14.2.5.7).\r
297 *\r
298 * SOURCE\r
299 */\r
300 #define IB_PKEY_MAX_BLOCKS                                      2048\r
301 /*********/\r
302 \r
303 /****d* IBA Base: Constants/IB_MCAST_MAX_BLOCK_ID\r
304 * NAME\r
305 *       IB_MCAST_MAX_BLOCK_ID\r
306 *\r
307 * DESCRIPTION\r
308 *       Maximum number of Multicast port mask blocks\r
309 *\r
310 * SOURCE\r
311 */\r
312 #define IB_MCAST_MAX_BLOCK_ID                           511\r
313 /*********/\r
314 \r
315 /****d* IBA Base: Constants/IB_MCAST_BLOCK_ID_MASK_HO\r
316 * NAME\r
317 *       IB_MCAST_BLOCK_ID_MASK_HO\r
318 *\r
319 * DESCRIPTION\r
320 *       Mask (host order) to recover the Multicast block ID.\r
321 *\r
322 * SOURCE\r
323 */\r
324 #define IB_MCAST_BLOCK_ID_MASK_HO                       0x000001FF\r
325 /*********/\r
326 \r
327 /****d* IBA Base: Constants/IB_MCAST_BLOCK_SIZE\r
328 * NAME\r
329 *       IB_MCAST_BLOCK_SIZE\r
330 *\r
331 * DESCRIPTION\r
332 *       Number of port mask entries in a multicast forwarding table block.\r
333 *\r
334 * SOURCE\r
335 */\r
336 #define IB_MCAST_BLOCK_SIZE                                     32\r
337 /*********/\r
338 \r
339 /****d* IBA Base: Constants/IB_MCAST_MASK_SIZE\r
340 * NAME\r
341 *       IB_MCAST_MASK_SIZE\r
342 *\r
343 * DESCRIPTION\r
344 *       Number of port mask bits in each entry in the multicast forwarding table.\r
345 *\r
346 * SOURCE\r
347 */\r
348 #define IB_MCAST_MASK_SIZE                                      16\r
349 /*********/\r
350 \r
351 /****d* IBA Base: Constants/IB_MCAST_POSITION_MASK_HO\r
352 * NAME\r
353 *       IB_MCAST_POSITION_MASK_HO\r
354 *\r
355 * DESCRIPTION\r
356 *       Mask (host order) to recover the multicast block position.\r
357 *\r
358 * SOURCE\r
359 */\r
360 #define IB_MCAST_POSITION_MASK_HO                               0xF0000000\r
361 /*********/\r
362 \r
363 /****d* IBA Base: Constants/IB_MCAST_POSITION_MAX\r
364 * NAME\r
365 *       IB_MCAST_POSITION_MAX\r
366 *\r
367 * DESCRIPTION\r
368 *       Maximum value for the multicast block position.\r
369 *\r
370 * SOURCE\r
371 */\r
372 #define IB_MCAST_POSITION_MAX                           0xF\r
373 /*********/\r
374 \r
375 /****d* IBA Base: Constants/IB_MCAST_POSITION_SHIFT\r
376 * NAME\r
377 *       IB_MCAST_POSITION_SHIFT\r
378 *\r
379 * DESCRIPTION\r
380 *       Shift value to normalize the multicast block position value.\r
381 *\r
382 * SOURCE\r
383 */\r
384 #define IB_MCAST_POSITION_SHIFT                         28\r
385 /*********/\r
386 \r
387 /****d* IBA Base: Constants/IB_PKEY_ENTRIES_MAX\r
388 * NAME\r
389 *       IB_PKEY_ENTRIES_MAX\r
390 *\r
391 * DESCRIPTION\r
392 *       Maximum number of PKEY entries per port (14.2.5.7).\r
393 *\r
394 * SOURCE\r
395 */\r
396 #define IB_PKEY_ENTRIES_MAX (IB_PKEY_MAX_BLOCKS * IB_PKEY_BLOCK_SIZE)\r
397 /*********/\r
398 \r
399 /****d* IBA Base: Constants/IB_PKEY_BASE_MASK\r
400 * NAME\r
401 *       IB_PKEY_BASE_MASK\r
402 *\r
403 * DESCRIPTION\r
404 *       Masks for the base P_Key value given a P_Key Entry.\r
405 *\r
406 * SOURCE\r
407 */\r
408 #define IB_PKEY_BASE_MASK                                       (CL_HTON16(0x7FFF))\r
409 /*********/\r
410 \r
411 /****d* IBA Base: Constants/IB_PKEY_TYPE_MASK\r
412 * NAME\r
413 *       IB_PKEY_TYPE_MASK\r
414 *\r
415 * DESCRIPTION\r
416 *       Masks for the P_Key membership type given a P_Key Entry.\r
417 *\r
418 * SOURCE\r
419 */\r
420 #define IB_PKEY_TYPE_MASK                                       (CL_NTOH16(0x8000))\r
421 /*********/\r
422 \r
423 /****d* IBA Base: Constants/IB_DEFAULT_PARTIAL_PKEY\r
424 * NAME\r
425 *       IB_DEFAULT_PARTIAL_PKEY \r
426 *\r
427 * DESCRIPTION\r
428 *       0x7FFF in network order\r
429 *\r
430 * SOURCE\r
431 */\r
432 #define IB_DEFAULT_PARTIAL_PKEY                                (CL_HTON16(0x7FFF))\r
433 /**********/\r
434 \r
435 /****d* IBA Base: Constants/IB_MCLASS_SUBN_LID\r
436 * NAME\r
437 *       IB_MCLASS_SUBN_LID\r
438 *\r
439 * DESCRIPTION\r
440 *       Subnet Management Class, Subnet Manager LID routed (13.4.4)\r
441 *\r
442 * SOURCE\r
443 */\r
444 #define IB_MCLASS_SUBN_LID                                      0x01\r
445 /**********/\r
446 \r
447 /****d* IBA Base: Constants/IB_MCLASS_SUBN_DIR\r
448 * NAME\r
449 *       IB_MCLASS_SUBN_DIR\r
450 *\r
451 * DESCRIPTION\r
452 *       Subnet Management Class, Subnet Manager directed route (13.4.4)\r
453 *\r
454 * SOURCE\r
455 */\r
456 #define IB_MCLASS_SUBN_DIR                                      0x81\r
457 /**********/\r
458 \r
459 /****d* IBA Base: Constants/IB_MCLASS_SUBN_ADM\r
460 * NAME\r
461 *       IB_MCLASS_SUBN_ADM\r
462 *\r
463 * DESCRIPTION\r
464 *       Subnet Management Class, Subnet Administration (13.4.4)\r
465 *\r
466 * SOURCE\r
467 */\r
468 #define IB_MCLASS_SUBN_ADM                                      0x03\r
469 /**********/\r
470 \r
471 /****d* IBA Base: Constants/IB_MCLASS_PERF\r
472 * NAME\r
473 *       IB_MCLASS_PERF\r
474 *\r
475 * DESCRIPTION\r
476 *       Subnet Management Class, Performance Manager (13.4.4)\r
477 *\r
478 * SOURCE\r
479 */\r
480 #define IB_MCLASS_PERF                                          0x04\r
481 /**********/\r
482 \r
483 /****d* IBA Base: Constants/IB_MCLASS_BM\r
484 * NAME\r
485 *       IB_MCLASS_BM\r
486 *\r
487 * DESCRIPTION\r
488 *       Subnet Management Class, Baseboard Manager (13.4.4)\r
489 *\r
490 * SOURCE\r
491 */\r
492 #define IB_MCLASS_BM                                            0x05\r
493 /**********/\r
494 \r
495 /****d* IBA Base: Constants/IB_MCLASS_DEV_MGMT\r
496 * NAME\r
497 *       IB_MCLASS_DEV_MGMT\r
498 *\r
499 * DESCRIPTION\r
500 *       Subnet Management Class, Device Management (13.4.4)\r
501 *\r
502 * SOURCE\r
503 */\r
504 #define IB_MCLASS_DEV_MGMT                                      0x06\r
505 /**********/\r
506 \r
507 /****d* IBA Base: Constants/IB_MCLASS_COMM_MGMT\r
508 * NAME\r
509 *       IB_MCLASS_COMM_MGMT\r
510 *\r
511 * DESCRIPTION\r
512 *       Subnet Management Class, Communication Management (13.4.4)\r
513 *\r
514 * SOURCE\r
515 */\r
516 #define IB_MCLASS_COMM_MGMT                                     0x07\r
517 /**********/\r
518 \r
519 /****d* IBA Base: Constants/IB_MCLASS_SNMP\r
520 * NAME\r
521 *       IB_MCLASS_SNMP\r
522 *\r
523 * DESCRIPTION\r
524 *       Subnet Management Class, SNMP Tunneling (13.4.4)\r
525 *\r
526 * SOURCE\r
527 */\r
528 #define IB_MCLASS_SNMP                                          0x08\r
529 /**********/\r
530 \r
531 /****d* IBA Base: Constants/IB_MCLASS_VENDOR_LOW_RANGE_MIN\r
532 * NAME\r
533 *       IB_MCLASS_VENDOR_LOW_RANGE_MIN\r
534 *\r
535 * DESCRIPTION\r
536 *       Subnet Management Class, Vendor Specific Low Range Start\r
537 *\r
538 * SOURCE\r
539 */\r
540 #define IB_MCLASS_VENDOR_LOW_RANGE_MIN 0x09\r
541 /**********/\r
542 \r
543 /****d* IBA Base: Constants/IB_MCLASS_VENDOR_LOW_RANGE_MAX\r
544 * NAME\r
545 *       IB_MCLASS_VENDOR_LOW_RANGE_MAX\r
546 *\r
547 * DESCRIPTION\r
548 *       Subnet Management Class, Vendor Specific Low Range End\r
549 *\r
550 * SOURCE\r
551 */\r
552 #define IB_MCLASS_VENDOR_LOW_RANGE_MAX 0x0f\r
553 /**********/\r
554 \r
555 /****d* IBA Base: Constants/IB_MCLASS_DEV_ADM\r
556 * NAME\r
557 *       IB_MCLASS_DEV_ADM\r
558 *\r
559 * DESCRIPTION\r
560 *       Subnet Management Class, Device Administration\r
561 *\r
562 * SOURCE\r
563 */\r
564 #define IB_MCLASS_DEV_ADM 0x10\r
565 /**********/\r
566 \r
567 /****d* IBA Base: Constants/IB_MCLASS_BIS\r
568 * NAME\r
569 *       IB_MCLASS_BIS\r
570 *\r
571 * DESCRIPTION\r
572 *       Subnet Management Class, BIS\r
573 *\r
574 * SOURCE\r
575 */\r
576 #define IB_MCLASS_BIS 0x12\r
577 /**********/\r
578 \r
579 /****d* IBA Base: Constants/IB_MCLASS_VENDOR_HIGH_RANGE_MIN\r
580 * NAME\r
581 *       IB_MCLASS_VENDOR_HIGH_RANGE_MIN\r
582 *\r
583 * DESCRIPTION\r
584 *       Subnet Management Class, Vendor Specific High Range Start\r
585 *\r
586 * SOURCE\r
587 */\r
588 #define IB_MCLASS_VENDOR_HIGH_RANGE_MIN 0x30\r
589 /**********/\r
590 \r
591 /****d* IBA Base: Constants/IB_MCLASS_VENDOR_HIGH_RANGE_MAX\r
592 * NAME\r
593 *       IB_MCLASS_VENDOR_HIGH_RANGE_MAX\r
594 *\r
595 * DESCRIPTION\r
596 *       Subnet Management Class, Vendor Specific High Range End\r
597 *\r
598 * SOURCE\r
599 */\r
600 #define IB_MCLASS_VENDOR_HIGH_RANGE_MAX 0x4f\r
601 /**********/\r
602 \r
603 /****f* IBA Base: Types/ib_class_is_vendor_specific_low\r
604 * NAME\r
605 *       ib_class_is_vendor_specific_low\r
606 *\r
607 * DESCRIPTION\r
608 *       Indicates if the Class Code if a vendor specific class from \r
609 *  the low range\r
610 *\r
611 * SYNOPSIS\r
612 */\r
613 static inline boolean_t\r
614 ib_class_is_vendor_specific_low(\r
615         IN              const   uint8_t class_code )\r
616 {\r
617         return( (class_code >= IB_MCLASS_VENDOR_LOW_RANGE_MIN) &&\r
618            (class_code <= IB_MCLASS_VENDOR_LOW_RANGE_MAX)) ;\r
619 }\r
620 /*\r
621 * PARAMETERS\r
622 *       class_code\r
623 *               [in] The Management Datagram Class Code\r
624 *\r
625 * RETURN VALUE\r
626 *       TRUE if the class is in the Low range of Vendor Specific MADs \r
627 *       FALSE otherwise.\r
628 *\r
629 * NOTES\r
630 *\r
631 * SEE ALSO\r
632 * IB_MCLASS_VENDOR_LOW_RANGE_MIN, IB_MCLASS_VENDOR_LOW_RANGE_MAX\r
633 *********/\r
634 \r
635 /****f* IBA Base: Types/ib_class_is_vendor_specific_high\r
636 * NAME\r
637 *       ib_class_is_vendor_specific_high\r
638 *\r
639 * DESCRIPTION\r
640 *       Indicates if the Class Code if a vendor specific class from \r
641 *  the high range\r
642 *\r
643 * SYNOPSIS\r
644 */\r
645 static inline boolean_t\r
646 ib_class_is_vendor_specific_high(\r
647         IN              const   uint8_t class_code )\r
648 {\r
649         return( (class_code >= IB_MCLASS_VENDOR_HIGH_RANGE_MIN) &&\r
650            (class_code <= IB_MCLASS_VENDOR_HIGH_RANGE_MAX)) ;\r
651 }\r
652 /*\r
653 * PARAMETERS\r
654 *       class_code\r
655 *               [in] The Management Datagram Class Code\r
656 *\r
657 * RETURN VALUE\r
658 *       TRUE if the class is in the High range of Vendor Specific MADs \r
659 *       FALSE otherwise.\r
660 *\r
661 * NOTES\r
662 *\r
663 * SEE ALSO\r
664 * IB_MCLASS_VENDOR_HIGH_RANGE_MIN, IB_MCLASS_VENDOR_HIGH_RANGE_MAX\r
665 *********/\r
666 \r
667 \r
668 /****f* IBA Base: Types/ib_class_is_vendor_specific\r
669 * NAME\r
670 *       ib_class_is_vendor_specific\r
671 *\r
672 * DESCRIPTION\r
673 *       Indicates if the Class Code if a vendor specific class\r
674 *\r
675 * SYNOPSIS\r
676 */\r
677 static inline boolean_t\r
678 ib_class_is_vendor_specific(\r
679         IN              const   uint8_t class_code )\r
680 {\r
681   return( ib_class_is_vendor_specific_low(class_code) ||\r
682                          ib_class_is_vendor_specific_high(class_code) );\r
683 }\r
684 /*\r
685 * PARAMETERS\r
686 *       class_code\r
687 *               [in] The Management Datagram Class Code\r
688 *\r
689 * RETURN VALUE\r
690 *       TRUE if the class is a Vendor Specific MAD\r
691 *       FALSE otherwise.\r
692 *\r
693 * NOTES\r
694 *\r
695 * SEE ALSO\r
696 *  ib_class_is_vendor_specific_low, ib_class_is_vendor_specific_high\r
697 *********/\r
698 \r
699 /****f* IBA Base: Types/ib_class_is_rmpp\r
700 * NAME\r
701 *       ib_class_is_rmpp\r
702 *\r
703 * DESCRIPTION\r
704 *       Indicates if the Class Code supports RMPP\r
705 *\r
706 * SYNOPSIS\r
707 */\r
708 AL_INLINE boolean_t     AL_API\r
709 ib_class_is_rmpp(\r
710         IN              const   uint8_t class_code )\r
711 {\r
712         return( (class_code == IB_MCLASS_SUBN_ADM) ||\r
713                 (class_code == IB_MCLASS_DEV_MGMT) ||\r
714                 (class_code == IB_MCLASS_DEV_ADM) ||\r
715                 (class_code == IB_MCLASS_BIS) ||\r
716                 ib_class_is_vendor_specific_high( class_code ) ); \r
717 }\r
718 /*\r
719 * PARAMETERS\r
720 *       class_code\r
721 *               [in] The Management Datagram Class Code\r
722 *\r
723 * RETURN VALUE\r
724 *       TRUE if the class supports RMPP\r
725 *       FALSE otherwise.\r
726 *\r
727 * NOTES\r
728 *\r
729 *********/\r
730 \r
731 /*\r
732  *      MAD methods\r
733  */\r
734 \r
735 /****d* IBA Base: Constants/IB_MAX_METHOD\r
736 * NAME\r
737 *       IB_MAX_METHOD\r
738 *\r
739 * DESCRIPTION\r
740 *       Total number of methods available to a class, not including the R-bit.\r
741 *\r
742 * SOURCE\r
743 */\r
744 #define IB_MAX_METHODS                                          128\r
745 /**********/\r
746 \r
747 /****d* IBA Base: Constants/IB_MAD_METHOD_RESP_MASK\r
748 * NAME\r
749 *       IB_MAD_METHOD_RESP_MASK\r
750 *\r
751 * DESCRIPTION\r
752 *       Response mask to extract 'R' bit from the method field. (13.4.5)\r
753 *\r
754 * SOURCE\r
755 */\r
756 #define IB_MAD_METHOD_RESP_MASK                         0x80\r
757 /**********/\r
758 \r
759 /****d* IBA Base: Constants/IB_MAD_METHOD_GET\r
760 * NAME\r
761 *       IB_MAD_METHOD_GET\r
762 *\r
763 * DESCRIPTION\r
764 *       Get() Method (13.4.5)\r
765 *\r
766 * SOURCE\r
767 */\r
768 #define IB_MAD_METHOD_GET                                       0x01\r
769 /**********/\r
770 \r
771 /****d* IBA Base: Constants/IB_MAD_METHOD_SET\r
772 * NAME\r
773 *       IB_MAD_METHOD_SET\r
774 *\r
775 * DESCRIPTION\r
776 *       Set() Method (13.4.5)\r
777 *\r
778 * SOURCE\r
779 */\r
780 #define IB_MAD_METHOD_SET                                       0x02\r
781 /**********/\r
782 \r
783 /****d* IBA Base: Constants/IB_MAD_METHOD_GET_RESP\r
784 * NAME\r
785 *       IB_MAD_METHOD_GET_RESP\r
786 *\r
787 * DESCRIPTION\r
788 *       GetResp() Method (13.4.5)\r
789 *\r
790 * SOURCE\r
791 */\r
792 #define IB_MAD_METHOD_GET_RESP                          0x81\r
793 /**********/\r
794 \r
795 #define IB_MAD_METHOD_DELETE                            0x15\r
796 \r
797 /****d* IBA Base: Constants/IB_MAD_METHOD_GETTABLE\r
798 * NAME\r
799 *       IB_MAD_METHOD_GETTABLE\r
800 *\r
801 * DESCRIPTION\r
802 *       SubnAdmGetTable() Method (15.2.2)\r
803 *\r
804 * SOURCE\r
805 */\r
806 #define IB_MAD_METHOD_GETTABLE                          0x12\r
807 /**********/\r
808 \r
809 /****d* IBA Base: Constants/IB_MAD_METHOD_GETTABLE_RESP\r
810 * NAME\r
811 *       IB_MAD_METHOD_GETTABLE_RESP\r
812 *\r
813 * DESCRIPTION\r
814 *       SubnAdmGetTableResp() Method (15.2.2)\r
815 *\r
816 * SOURCE\r
817 */\r
818 #define IB_MAD_METHOD_GETTABLE_RESP                     0x92\r
819 \r
820 /**********/\r
821 \r
822 #define IB_MAD_METHOD_GETTRACETABLE                     0x13\r
823 #define IB_MAD_METHOD_GETMULTI                          0x14\r
824 #define IB_MAD_METHOD_GETMULTI_RESP                     0x94\r
825 \r
826 \r
827 /****d* IBA Base: Constants/IB_MAD_METHOD_SEND\r
828 * NAME\r
829 *       IB_MAD_METHOD_SEND\r
830 *\r
831 * DESCRIPTION\r
832 *       Send() Method (13.4.5)\r
833 *\r
834 * SOURCE\r
835 */\r
836 #define IB_MAD_METHOD_SEND                                      0x03\r
837 /**********/\r
838 \r
839 /****d* IBA Base: Constants/IB_MAD_METHOD_TRAP\r
840 * NAME\r
841 *       IB_MAD_METHOD_TRAP\r
842 *\r
843 * DESCRIPTION\r
844 *       Trap() Method (13.4.5)\r
845 *\r
846 * SOURCE\r
847 */\r
848 #define IB_MAD_METHOD_TRAP                                      0x05\r
849 /**********/\r
850 \r
851 /****d* IBA Base: Constants/IB_MAD_METHOD_REPORT\r
852 * NAME\r
853 *       IB_MAD_METHOD_REPORT\r
854 *\r
855 * DESCRIPTION\r
856 *       Report() Method (13.4.5)\r
857 *\r
858 * SOURCE\r
859 */\r
860 #define IB_MAD_METHOD_REPORT                            0x06\r
861 /**********/\r
862 \r
863 /****d* IBA Base: Constants/IB_MAD_METHOD_REPORT_RESP\r
864 * NAME\r
865 *       IB_MAD_METHOD_REPORT_RESP\r
866 *\r
867 * DESCRIPTION\r
868 *       ReportResp() Method (13.4.5)\r
869 *\r
870 * SOURCE\r
871 */\r
872 #define IB_MAD_METHOD_REPORT_RESP                       0x86\r
873 /**********/\r
874 \r
875 /****d* IBA Base: Constants/IB_MAD_METHOD_TRAP_REPRESS\r
876 * NAME\r
877 *       IB_MAD_METHOD_TRAP_REPRESS\r
878 *\r
879 * DESCRIPTION\r
880 *       TrapRepress() Method (13.4.5)\r
881 *\r
882 * SOURCE\r
883 */\r
884 #define IB_MAD_METHOD_TRAP_REPRESS                      0x07\r
885 /**********/\r
886 \r
887 /****d* IBA Base: Constants/IB_MAD_STATUS_BUSY\r
888 * NAME\r
889 *       IB_MAD_STATUS_BUSY\r
890 *\r
891 * DESCRIPTION\r
892 *       Temporarily busy, MAD discarded (13.4.7)\r
893 *\r
894 * SOURCE\r
895 */\r
896 #define IB_MAD_STATUS_BUSY                                      (CL_HTON16(0x0001))\r
897 /**********/\r
898 \r
899 /****d* IBA Base: Constants/IB_MAD_STATUS_REDIRECT\r
900 * NAME\r
901 *       IB_MAD_STATUS_REDIRECT\r
902 *\r
903 * DESCRIPTION\r
904 *       QP Redirection required (13.4.7)\r
905 *\r
906 * SOURCE\r
907 */\r
908 #define IB_MAD_STATUS_REDIRECT                          (CL_HTON16(0x0002))\r
909 /**********/\r
910 \r
911 /****d* IBA Base: Constants/IB_MAD_STATUS_UNSUP_CLASS_VER\r
912 * NAME\r
913 *       IB_MAD_STATUS_UNSUP_CLASS_VER\r
914 *\r
915 * DESCRIPTION\r
916 *       Unsupported class version (13.4.7)\r
917 *\r
918 * SOURCE\r
919 */\r
920 #define IB_MAD_STATUS_UNSUP_CLASS_VER           (CL_HTON16(0x0004))\r
921 /**********/\r
922 \r
923 /****d* IBA Base: Constants/IB_MAD_STATUS_UNSUP_METHOD\r
924 * NAME\r
925 *       IB_MAD_STATUS_UNSUP_METHOD\r
926 *\r
927 * DESCRIPTION\r
928 *       Unsupported method (13.4.7)\r
929 *\r
930 * SOURCE\r
931 */\r
932 #define IB_MAD_STATUS_UNSUP_METHOD                      (CL_HTON16(0x0008))\r
933 /**********/\r
934 \r
935 /****d* IBA Base: Constants/IB_MAD_STATUS_UNSUP_METHOD_ATTR\r
936 * NAME\r
937 *       IB_MAD_STATUS_UNSUP_METHOD_ATTR\r
938 *\r
939 * DESCRIPTION\r
940 *       Unsupported method/attribute combination (13.4.7)\r
941 *\r
942 * SOURCE\r
943 */\r
944 #define IB_MAD_STATUS_UNSUP_METHOD_ATTR         (CL_HTON16(0x000C))\r
945 /**********/\r
946 \r
947 /****d* IBA Base: Constants/IB_MAD_STATUS_INVALID_FIELD\r
948 * NAME\r
949 *       IB_MAD_STATUS_INVALID_FIELD\r
950 *\r
951 * DESCRIPTION\r
952 *       Attribute contains one or more invalid fields (13.4.7)\r
953 *\r
954 * SOURCE\r
955 */\r
956 #define IB_MAD_STATUS_INVALID_FIELD                     (CL_HTON16(0x001C))\r
957 /**********/\r
958 \r
959 #define IB_MAD_STATUS_CLASS_MASK                        (CL_HTON16(0xFF00))\r
960 \r
961 #define IB_SA_MAD_STATUS_SUCCESS                        (CL_HTON16(0x0000))\r
962 #define IB_SA_MAD_STATUS_NO_RESOURCES           (CL_HTON16(0x0100))\r
963 #define IB_SA_MAD_STATUS_REQ_INVALID            (CL_HTON16(0x0200))\r
964 #define IB_SA_MAD_STATUS_NO_RECORDS                     (CL_HTON16(0x0300))\r
965 #define IB_SA_MAD_STATUS_TOO_MANY_RECORDS       (CL_HTON16(0x0400))\r
966 #define IB_SA_MAD_STATUS_INVALID_GID            (CL_HTON16(0x0500))\r
967 #define IB_SA_MAD_STATUS_INSUF_COMPS            (CL_HTON16(0x0600))\r
968 \r
969 #define IB_DM_MAD_STATUS_NO_IOC_RESP            (CL_HTON16(0x0100))\r
970 #define IB_DM_MAD_STATUS_NO_SVC_ENTRIES         (CL_HTON16(0x0200))\r
971 #define IB_DM_MAD_STATUS_IOC_FAILURE            (CL_HTON16(0x8000))\r
972 \r
973 /****d* IBA Base: Constants/IB_MAD_ATTR_CLASS_PORT_INFO\r
974 * NAME\r
975 *       IB_MAD_ATTR_CLASS_PORT_INFO\r
976 *\r
977 * DESCRIPTION\r
978 *       ClassPortInfo attribute (13.4.8)\r
979 *\r
980 * SOURCE\r
981 */\r
982 #define IB_MAD_ATTR_CLASS_PORT_INFO                     (CL_NTOH16(0x0001))\r
983 /**********/\r
984 \r
985 /****d* IBA Base: Constants/IB_MAD_ATTR_NOTICE\r
986 * NAME\r
987 *       IB_MAD_ATTR_NOTICE\r
988 *\r
989 * DESCRIPTION\r
990 *       Notice attribute (13.4.8)\r
991 *\r
992 * SOURCE\r
993 */\r
994 #define IB_MAD_ATTR_NOTICE                                      (CL_NTOH16(0x0002))\r
995 /**********/\r
996 \r
997 /****d* IBA Base: Constants/IB_MAD_ATTR_INFORM_INFO\r
998 * NAME\r
999 *       IB_MAD_ATTR_INFORM_INFO\r
1000 *\r
1001 * DESCRIPTION\r
1002 *       InformInfo attribute (13.4.8)\r
1003 *\r
1004 * SOURCE\r
1005 */\r
1006 #define IB_MAD_ATTR_INFORM_INFO                         (CL_NTOH16(0x0003))\r
1007 /**********/\r
1008 \r
1009 /****d* IBA Base: Constants/IB_MAD_ATTR_NODE_DESC\r
1010 * NAME\r
1011 *       IB_MAD_ATTR_NODE_DESC\r
1012 *\r
1013 * DESCRIPTION\r
1014 *       NodeDescription attribute (14.2.5)\r
1015 *\r
1016 * SOURCE\r
1017 */\r
1018 #define IB_MAD_ATTR_NODE_DESC                           (CL_NTOH16(0x0010))\r
1019 \r
1020 /****d* IBA Base: Constants/IB_MAD_ATTR_PORT_SMPL_CTRL\r
1021 * NAME\r
1022 *       IB_MAD_ATTR_PORT_SMPL_CTRL\r
1023 *\r
1024 * DESCRIPTION\r
1025 *       NodeDescription attribute (16.1.2)\r
1026 *\r
1027 * SOURCE\r
1028 */\r
1029 #define IB_MAD_ATTR_PORT_SMPL_CTRL                      (CL_NTOH16(0x0010))\r
1030 /**********/\r
1031 \r
1032 /****d* IBA Base: Constants/IB_MAD_ATTR_NODE_INFO\r
1033 * NAME\r
1034 *       IB_MAD_ATTR_NODE_INFO\r
1035 *\r
1036 * DESCRIPTION\r
1037 *       NodeInfo attribute (14.2.5)\r
1038 *\r
1039 * SOURCE\r
1040 */\r
1041 #define IB_MAD_ATTR_NODE_INFO                           (CL_NTOH16(0x0011))\r
1042 /**********/\r
1043 \r
1044 /****d* IBA Base: Constants/IB_MAD_ATTR_PORT_SMPL_RSLT\r
1045 * NAME\r
1046 *       IB_MAD_ATTR_PORT_SMPL_RSLT\r
1047 *\r
1048 * DESCRIPTION\r
1049 *       NodeInfo attribute (16.1.2)\r
1050 *\r
1051 * SOURCE\r
1052 */\r
1053 #define IB_MAD_ATTR_PORT_SMPL_RSLT                      (CL_NTOH16(0x0011))\r
1054 /**********/\r
1055 \r
1056 /****d* IBA Base: Constants/IB_MAD_ATTR_SWITCH_INFO\r
1057 * NAME\r
1058 *       IB_MAD_ATTR_SWITCH_INFO\r
1059 *\r
1060 * DESCRIPTION\r
1061 *       SwitchInfo attribute (14.2.5)\r
1062 *\r
1063 * SOURCE\r
1064 */\r
1065 #define IB_MAD_ATTR_SWITCH_INFO                         (CL_NTOH16(0x0012))\r
1066 /**********/\r
1067 \r
1068 /****d* IBA Base: Constants/IB_MAD_ATTR_PORT_CNTRS\r
1069 * NAME\r
1070 *       IB_MAD_ATTR_PORT_CNTRS\r
1071 *\r
1072 * DESCRIPTION\r
1073 *       SwitchInfo attribute (16.1.2)\r
1074 *\r
1075 * SOURCE\r
1076 */\r
1077 #define IB_MAD_ATTR_PORT_CNTRS                          (CL_NTOH16(0x0012))\r
1078 /**********/\r
1079 \r
1080 /****d* IBA Base: Constants/IB_MAD_ATTR_GUID_INFO\r
1081 * NAME\r
1082 *       IB_MAD_ATTR_GUID_INFO\r
1083 *\r
1084 * DESCRIPTION\r
1085 *       GUIDInfo attribute (14.2.5)\r
1086 *\r
1087 * SOURCE\r
1088 */\r
1089 #define IB_MAD_ATTR_GUID_INFO                           (CL_NTOH16(0x0014))\r
1090 /**********/\r
1091 \r
1092 /****d* IBA Base: Constants/IB_MAD_ATTR_PORT_INFO\r
1093 * NAME\r
1094 *       IB_MAD_ATTR_PORT_INFO\r
1095 *\r
1096 * DESCRIPTION\r
1097 *       PortInfo attribute (14.2.5)\r
1098 *\r
1099 * SOURCE\r
1100 */\r
1101 #define IB_MAD_ATTR_PORT_INFO                           (CL_NTOH16(0x0015))\r
1102 /**********/\r
1103 \r
1104 /****d* IBA Base: Constants/IB_MAD_ATTR_P_KEY_TABLE\r
1105 * NAME\r
1106 *       IB_MAD_ATTR_P_KEY_TABLE\r
1107 *\r
1108 * DESCRIPTION\r
1109 *       PartitionTable attribute (14.2.5)\r
1110 *\r
1111 * SOURCE\r
1112 */\r
1113 #define IB_MAD_ATTR_P_KEY_TABLE                         (CL_NTOH16(0x0016))\r
1114 /**********/\r
1115 \r
1116 /****d* IBA Base: Constants/IB_MAD_ATTR_SLVL_TABLE\r
1117 * NAME\r
1118 *       IB_MAD_ATTR_SLVL_TABLE\r
1119 *\r
1120 * DESCRIPTION\r
1121 *       SL VL Mapping Table attribute (14.2.5)\r
1122 *\r
1123 * SOURCE\r
1124 */\r
1125 #define IB_MAD_ATTR_SLVL_TABLE                          (CL_NTOH16(0x0017))\r
1126 /**********/\r
1127 \r
1128 /****d* IBA Base: Constants/IB_MAD_ATTR_VL_ARBITRATION\r
1129 * NAME\r
1130 *       IB_MAD_ATTR_VL_ARBITRATION\r
1131 *\r
1132 * DESCRIPTION\r
1133 *       VL Arbitration Table attribute (14.2.5)\r
1134 *\r
1135 * SOURCE\r
1136 */\r
1137 #define IB_MAD_ATTR_VL_ARBITRATION                      (CL_NTOH16(0x0018))\r
1138 /**********/\r
1139 \r
1140 /****d* IBA Base: Constants/IB_MAD_ATTR_LIN_FWD_TBL\r
1141 * NAME\r
1142 *       IB_MAD_ATTR_LIN_FWD_TBL\r
1143 *\r
1144 * DESCRIPTION\r
1145 *       Switch linear forwarding table\r
1146 *\r
1147 * SOURCE\r
1148 */\r
1149 #define IB_MAD_ATTR_LIN_FWD_TBL                         (CL_NTOH16(0x0019))\r
1150 /**********/\r
1151 \r
1152 /****d* IBA Base: Constants/IB_MAD_ATTR_RND_FWD_TBL\r
1153 * NAME\r
1154 *       IB_MAD_ATTR_RND_FWD_TBL\r
1155 *\r
1156 * DESCRIPTION\r
1157 *       Switch random forwarding table\r
1158 *\r
1159 * SOURCE\r
1160 */\r
1161 #define IB_MAD_ATTR_RND_FWD_TBL                         (CL_NTOH16(0x001A))\r
1162 /**********/\r
1163 \r
1164 /****d* IBA Base: Constants/IB_MAD_ATTR_MCAST_FWD_TBL\r
1165 * NAME\r
1166 *       IB_MAD_ATTR_MCAST_FWD_TBL\r
1167 *\r
1168 * DESCRIPTION\r
1169 *       Switch multicast forwarding table\r
1170 *\r
1171 * SOURCE\r
1172 */\r
1173 #define IB_MAD_ATTR_MCAST_FWD_TBL                       (CL_NTOH16(0x001B))\r
1174 /**********/\r
1175 \r
1176 /****d* IBA Base: Constants/IB_MAD_ATTR_NODE_RECORD\r
1177 * NAME\r
1178 *       IB_MAD_ATTR_NODE_RECORD\r
1179 *\r
1180 * DESCRIPTION\r
1181 *       NodeRecord attribute (15.2.5)\r
1182 *\r
1183 * SOURCE\r
1184 */\r
1185 #define IB_MAD_ATTR_NODE_RECORD                         (CL_NTOH16(0x0011))\r
1186 /**********/\r
1187 \r
1188 /****d* IBA Base: Constants/IB_MAD_ATTR_PORTINFO_RECORD\r
1189 * NAME\r
1190 *       IB_MAD_ATTR_PORTINFO_RECORD\r
1191 *\r
1192 * DESCRIPTION\r
1193 *       PortInfoRecord attribute (15.2.5)\r
1194 *\r
1195 * SOURCE\r
1196 */\r
1197 #define IB_MAD_ATTR_PORTINFO_RECORD                     (CL_NTOH16(0x0012))\r
1198 /**********/\r
1199 \r
1200 /****d* IBA Base: Constants/IB_MAD_ATTR_SWITCH_INFO_RECORD\r
1201 * NAME\r
1202 *       IB_MAD_ATTR_SWITCH_INFO_RECORD\r
1203 *\r
1204 * DESCRIPTION\r
1205 *       SwitchInfoRecord attribute (15.2.5)\r
1206 *\r
1207 * SOURCE\r
1208 */\r
1209 #define IB_MAD_ATTR_SWITCH_INFO_RECORD                  (CL_NTOH16(0x0014))\r
1210 /**********/\r
1211 \r
1212 /****d* IBA Base: Constants/IB_MAD_ATTR_LINK_RECORD\r
1213 * NAME\r
1214 *       IB_MAD_ATTR_LINK_RECORD\r
1215 *\r
1216 * DESCRIPTION\r
1217 *       LinkRecord attribute (15.2.5)\r
1218 *\r
1219 * SOURCE\r
1220 */\r
1221 #define IB_MAD_ATTR_LINK_RECORD                         (CL_NTOH16(0x0020))\r
1222 /**********/\r
1223 \r
1224 /****d* IBA Base: Constants/IB_MAD_ATTR_SM_INFO\r
1225 * NAME\r
1226 *       IB_MAD_ATTR_SM_INFO\r
1227 *\r
1228 * DESCRIPTION\r
1229 *       SMInfo attribute (14.2.5)\r
1230 *\r
1231 * SOURCE\r
1232 */\r
1233 #define IB_MAD_ATTR_SM_INFO                                     (CL_NTOH16(0x0020))\r
1234 /**********/\r
1235 \r
1236 /****d* IBA Base: Constants/IB_MAD_ATTR_SMINFO_RECORD\r
1237 * NAME\r
1238 *       IB_MAD_ATTR_SMINFO_RECORD\r
1239 *\r
1240 * DESCRIPTION\r
1241 *       SMInfoRecord attribute (15.2.5)\r
1242 *\r
1243 * SOURCE\r
1244 */\r
1245 #define IB_MAD_ATTR_SMINFO_RECORD                       (CL_NTOH16(0x0018))\r
1246 /**********/\r
1247 \r
1248 /****d* IBA Base: Constants/IB_MAD_ATTR_GUIDINFO_RECORD\r
1249 * NAME\r
1250 *       IB_MAD_ATTR_GUIDINFO_RECORD\r
1251 *\r
1252 * DESCRIPTION\r
1253 *       GuidInfoRecord attribute (15.2.5)\r
1254 *\r
1255 * SOURCE\r
1256 */\r
1257 #define IB_MAD_ATTR_GUIDINFO_RECORD                     (CL_NTOH16(0x0030))\r
1258 /**********/\r
1259 \r
1260 /****d* IBA Base: Constants/IB_MAD_ATTR_VENDOR_DIAG\r
1261 * NAME\r
1262 *       IB_MAD_ATTR_VENDOR_DIAG\r
1263 *\r
1264 * DESCRIPTION\r
1265 *       VendorDiag attribute (14.2.5)\r
1266 *\r
1267 * SOURCE\r
1268 */\r
1269 #define IB_MAD_ATTR_VENDOR_DIAG                         (CL_NTOH16(0x0030))\r
1270 /**********/\r
1271 \r
1272 /****d* IBA Base: Constants/IB_MAD_ATTR_LED_INFO\r
1273 * NAME\r
1274 *       IB_MAD_ATTR_LED_INFO\r
1275 *\r
1276 * DESCRIPTION\r
1277 *       LedInfo attribute (14.2.5)\r
1278 *\r
1279 * SOURCE\r
1280 */\r
1281 #define IB_MAD_ATTR_LED_INFO                            (CL_NTOH16(0x0031))\r
1282 /**********/\r
1283 \r
1284 /****d* IBA Base: Constants/IB_MAD_ATTR_SERVICE_RECORD\r
1285 * NAME\r
1286 *       IB_MAD_ATTR_SERVICE_RECORD\r
1287 *\r
1288 * DESCRIPTION\r
1289 *       ServiceRecord attribute (15.2.5)\r
1290 *\r
1291 * SOURCE\r
1292 */\r
1293 #define IB_MAD_ATTR_SERVICE_RECORD                      (CL_NTOH16(0x0031))\r
1294 /**********/\r
1295 \r
1296 /****d* IBA Base: Constants/IB_MAD_ATTR_LFT_RECORD\r
1297 * NAME\r
1298 *       IB_MAD_ATTR_LFT_RECORD\r
1299 *\r
1300 * DESCRIPTION\r
1301 *       LinearForwardingTableRecord attribute (15.2.5.6)\r
1302 *\r
1303 * SOURCE\r
1304 */\r
1305 #define IB_MAD_ATTR_LFT_RECORD                  (CL_NTOH16(0x0015))\r
1306 /**********/\r
1307 \r
1308 /****d* IBA Base: Constants/IB_MAD_ATTR_MFT_RECORD\r
1309 * NAME\r
1310 *       IB_MAD_ATTR_MFT_RECORD\r
1311 *\r
1312 * DESCRIPTION\r
1313 *       MulticastForwardingTableRecord attribute (15.2.5.8)\r
1314 *\r
1315 * SOURCE\r
1316 */\r
1317 #define IB_MAD_ATTR_MFT_RECORD                          (CL_NTOH16(0x0017))\r
1318 /**********/\r
1319 \r
1320 /****d* IBA Base: Constants/IB_MAD_ATTR_PKEYTBL_RECORD\r
1321 * NAME\r
1322 *       IB_MAD_ATTR_PKEYTBL_RECORD\r
1323 *\r
1324 * DESCRIPTION\r
1325 *       PKEY Table Record attribute (15.2.5)\r
1326 *\r
1327 * SOURCE\r
1328 */\r
1329 #define IB_MAD_ATTR_PKEY_TBL_RECORD                     (CL_NTOH16(0x0033))\r
1330 /**********/\r
1331 \r
1332 /****d* IBA Base: Constants/IB_MAD_ATTR_PATH_RECORD\r
1333 * NAME\r
1334 *       IB_MAD_ATTR_PATH_RECORD\r
1335 *\r
1336 * DESCRIPTION\r
1337 *       PathRecord attribute (15.2.5)\r
1338 *\r
1339 * SOURCE\r
1340 */\r
1341 #define IB_MAD_ATTR_PATH_RECORD                         (CL_NTOH16(0x0035))\r
1342 /**********/\r
1343 \r
1344 /****d* IBA Base: Constants/IB_MAD_ATTR_VLARB_RECORD\r
1345 * NAME\r
1346 *       IB_MAD_ATTR_VLARB_RECORD\r
1347 *\r
1348 * DESCRIPTION\r
1349 *       VL Arbitration Table Record attribute (15.2.5)\r
1350 *\r
1351 * SOURCE\r
1352 */\r
1353 #define IB_MAD_ATTR_VLARB_RECORD                        (CL_NTOH16(0x0036))\r
1354 /**********/\r
1355 \r
1356 /****d* IBA Base: Constants/IB_MAD_ATTR_SLVL_RECORD\r
1357 * NAME\r
1358 *       IB_MAD_ATTR_SLVL_RECORD\r
1359 *\r
1360 * DESCRIPTION\r
1361 *       SLtoVL Mapping Table Record attribute (15.2.5)\r
1362 *\r
1363 * SOURCE\r
1364 */\r
1365 #define IB_MAD_ATTR_SLVL_RECORD                         (CL_NTOH16(0x0013))\r
1366 /**********/\r
1367 \r
1368 /****d* IBA Base: Constants/IB_MAD_ATTR_MCMEMBER_RECORD\r
1369 * NAME\r
1370 *       IB_MAD_ATTR_MCMEMBER_RECORD\r
1371 *\r
1372 * DESCRIPTION\r
1373 *       MCMemberRecord attribute (15.2.5)\r
1374 *\r
1375 * SOURCE\r
1376 */\r
1377 #define IB_MAD_ATTR_MCMEMBER_RECORD                     (CL_NTOH16(0x0038))\r
1378 /**********/\r
1379 \r
1380 /****d* IBA Base: Constants/IB_MAD_ATTR_TRACE_RECORD\r
1381 * NAME\r
1382 *       IB_MAD_ATTR_TRACE_RECORD\r
1383 *\r
1384 * DESCRIPTION\r
1385 *       TraceRecord attribute (15.2.5)\r
1386 *\r
1387 * SOURCE\r
1388 */\r
1389 #define IB_MAD_ATTR_TRACE_RECORD                        (CL_NTOH16(0x0039))\r
1390 /**********/\r
1391 \r
1392 /****d* IBA Base: Constants/IB_MAD_ATTR_MULTIPATH_RECORD\r
1393 * NAME\r
1394 *       IB_MAD_ATTR_MULTIPATH_RECORD\r
1395 *\r
1396 * DESCRIPTION\r
1397 *       MultiPathRecord attribute (15.2.5)\r
1398 *\r
1399 * SOURCE\r
1400 */\r
1401 #define IB_MAD_ATTR_MULTIPATH_RECORD                    (CL_NTOH16(0x003A))\r
1402 /**********/\r
1403 \r
1404 /****d* IBA Base: Constants/IB_MAD_ATTR_SVC_ASSOCIATION_RECORD\r
1405 * NAME\r
1406 *       IB_MAD_ATTR_SVC_ASSOCIATION_RECORD\r
1407 *\r
1408 * DESCRIPTION\r
1409 *       Service Association Record attribute (15.2.5)\r
1410 *\r
1411 * SOURCE\r
1412 */\r
1413 #define IB_MAD_ATTR_SVC_ASSOCIATION_RECORD              (CL_NTOH16(0x003B))\r
1414 /**********/\r
1415 \r
1416 /****d* IBA Base: Constants/IB_MAD_ATTR_INFORM_INFO_RECORD\r
1417 * NAME\r
1418 *       IB_MAD_ATTR_INFORM_INFO_RECORD\r
1419 *\r
1420 * DESCRIPTION\r
1421 *       InformInfo Record attribute (15.2.5)\r
1422 *\r
1423 * SOURCE\r
1424 */\r
1425 #define IB_MAD_ATTR_INFORM_INFO_RECORD                  (CL_NTOH16(0x00F3))\r
1426 \r
1427 /****d* IBA Base: Constants/IB_MAD_ATTR_IO_UNIT_INFO\r
1428 * NAME\r
1429 *       IB_MAD_ATTR_IO_UNIT_INFO\r
1430 *\r
1431 * DESCRIPTION\r
1432 *       IOUnitInfo attribute (16.3.3)\r
1433 *\r
1434 * SOURCE\r
1435 */\r
1436 #define IB_MAD_ATTR_IO_UNIT_INFO                        (CL_NTOH16(0x0010))\r
1437 /**********/\r
1438 \r
1439 /****d* IBA Base: Constants/IB_MAD_ATTR_IO_CONTROLLER_PROFILE\r
1440 * NAME\r
1441 *       IB_MAD_ATTR_IO_CONTROLLER_PROFILE\r
1442 *\r
1443 * DESCRIPTION\r
1444 *       IOControllerProfile attribute (16.3.3)\r
1445 *\r
1446 * SOURCE\r
1447 */\r
1448 #define IB_MAD_ATTR_IO_CONTROLLER_PROFILE       (CL_NTOH16(0x0011))\r
1449 /**********/\r
1450 \r
1451 /****d* IBA Base: Constants/IB_MAD_ATTR_SERVICE_ENTRIES\r
1452 * NAME\r
1453 *       IB_MAD_ATTR_SERVICE_ENTRIES\r
1454 *\r
1455 * DESCRIPTION\r
1456 *       ServiceEntries attribute (16.3.3)\r
1457 *\r
1458 * SOURCE\r
1459 */\r
1460 #define IB_MAD_ATTR_SERVICE_ENTRIES                     (CL_NTOH16(0x0012))\r
1461 /**********/\r
1462 \r
1463 /****d* IBA Base: Constants/IB_MAD_ATTR_DIAGNOSTIC_TIMEOUT\r
1464 * NAME\r
1465 *       IB_MAD_ATTR_DIAGNOSTIC_TIMEOUT\r
1466 *\r
1467 * DESCRIPTION\r
1468 *       DiagnosticTimeout attribute (16.3.3)\r
1469 *\r
1470 * SOURCE\r
1471 */\r
1472 #define IB_MAD_ATTR_DIAGNOSTIC_TIMEOUT          (CL_NTOH16(0x0020))\r
1473 /**********/\r
1474 \r
1475 /****d* IBA Base: Constants/IB_MAD_ATTR_PREPARE_TO_TEST\r
1476 * NAME\r
1477 *       IB_MAD_ATTR_PREPARE_TO_TEST\r
1478 *\r
1479 * DESCRIPTION\r
1480 *       PrepareToTest attribute (16.3.3)\r
1481 *\r
1482 * SOURCE\r
1483 */\r
1484 #define IB_MAD_ATTR_PREPARE_TO_TEST                     (CL_NTOH16(0x0021))\r
1485 /**********/\r
1486 \r
1487 /****d* IBA Base: Constants/IB_MAD_ATTR_TEST_DEVICE_ONCE\r
1488 * NAME\r
1489 *       IB_MAD_ATTR_TEST_DEVICE_ONCE\r
1490 *\r
1491 * DESCRIPTION\r
1492 *       TestDeviceOnce attribute (16.3.3)\r
1493 *\r
1494 * SOURCE\r
1495 */\r
1496 #define IB_MAD_ATTR_TEST_DEVICE_ONCE            (CL_NTOH16(0x0022))\r
1497 /**********/\r
1498 \r
1499 /****d* IBA Base: Constants/IB_MAD_ATTR_TEST_DEVICE_LOOP\r
1500 * NAME\r
1501 *       IB_MAD_ATTR_TEST_DEVICE_LOOP\r
1502 *\r
1503 * DESCRIPTION\r
1504 *       TestDeviceLoop attribute (16.3.3)\r
1505 *\r
1506 * SOURCE\r
1507 */\r
1508 #define IB_MAD_ATTR_TEST_DEVICE_LOOP            (CL_NTOH16(0x0023))\r
1509 /**********/\r
1510 \r
1511 /****d* IBA Base: Constants/IB_MAD_ATTR_DIAG_CODE\r
1512 * NAME\r
1513 *       IB_MAD_ATTR_DIAG_CODE\r
1514 *\r
1515 * DESCRIPTION\r
1516 *       DiagCode attribute (16.3.3)\r
1517 *\r
1518 * SOURCE\r
1519 */\r
1520 #define IB_MAD_ATTR_DIAG_CODE                           (CL_NTOH16(0x0024))\r
1521 /**********/\r
1522 \r
1523 /****d* IBA Base: Constants/IB_NODE_TYPE_CA\r
1524 * NAME\r
1525 *       IB_NODE_TYPE_CA\r
1526 *\r
1527 * DESCRIPTION\r
1528 *       Encoded generic node type used in MAD attributes (13.4.8.2)\r
1529 *\r
1530 * SOURCE\r
1531 */\r
1532 #define IB_NODE_TYPE_CA                                         0x01\r
1533 /**********/\r
1534 \r
1535 /****d* IBA Base: Constants/IB_NODE_TYPE_SWITCH\r
1536 * NAME\r
1537 *       IB_NODE_TYPE_SWITCH\r
1538 *\r
1539 * DESCRIPTION\r
1540 *       Encoded generic node type used in MAD attributes (13.4.8.2)\r
1541 *\r
1542 * SOURCE\r
1543 */\r
1544 #define IB_NODE_TYPE_SWITCH                                     0x02\r
1545 /**********/\r
1546 \r
1547 /****d* IBA Base: Constants/IB_NODE_TYPE_ROUTER\r
1548 * NAME\r
1549 *       IB_NODE_TYPE_ROUTER\r
1550 *\r
1551 * DESCRIPTION\r
1552 *       Encoded generic node type used in MAD attributes (13.4.8.2)\r
1553 *\r
1554 * SOURCE\r
1555 */\r
1556 #define IB_NODE_TYPE_ROUTER                                     0x03\r
1557 /**********/\r
1558 \r
1559 /****d* IBA Base: Constants/IB_NOTICE_NODE_TYPE_CA\r
1560 * NAME\r
1561 *       IB_NOTICE_NODE_TYPE_CA\r
1562 *\r
1563 * DESCRIPTION\r
1564 *       Encoded generic node type used in MAD attributes (13.4.8.2)\r
1565 *\r
1566 * SOURCE\r
1567 */\r
1568 #define IB_NOTICE_NODE_TYPE_CA                          (CL_NTOH32(0x000001))\r
1569 /**********/\r
1570 \r
1571 /****d* IBA Base: Constants/IB_NOTICE_NODE_TYPE_SWITCH\r
1572 * NAME\r
1573 *       IB_NOTICE_NODE_TYPE_SWITCH\r
1574 *\r
1575 * DESCRIPTION\r
1576 *       Encoded generic node type used in MAD attributes (13.4.8.2)\r
1577 *\r
1578 * SOURCE\r
1579 */\r
1580 #define IB_NOTICE_NODE_TYPE_SWITCH                      (CL_NTOH32(0x000002))\r
1581 /**********/\r
1582 \r
1583 /****d* IBA Base: Constants/IB_NOTICE_NODE_TYPE_ROUTER\r
1584 * NAME\r
1585 *       IB_NOTICE_NODE_TYPE_ROUTER\r
1586 *\r
1587 * DESCRIPTION\r
1588 *       Encoded generic node type used in MAD attributes (13.4.8.2)\r
1589 *\r
1590 * SOURCE\r
1591 */\r
1592 #define IB_NOTICE_NODE_TYPE_ROUTER                      (CL_NTOH32(0x000003))\r
1593 /**********/\r
1594 \r
1595 /****d* IBA Base: Constants/IB_NOTICE_NODE_TYPE_SUBN_MGMT\r
1596 * NAME\r
1597 *       IB_NOTICE_NODE_TYPE_SUBN_MGMT\r
1598 *\r
1599 * DESCRIPTION\r
1600 *       Encoded generic node type used in MAD attributes (13.4.8.2).\r
1601 *       Note that this value is not defined for the NodeType field\r
1602 *       of the NodeInfo attribute (14.2.5.3).\r
1603 *\r
1604 * SOURCE\r
1605 */\r
1606 #define IB_NOTICE_NODE_TYPE_SUBN_MGMT           (CL_NTOH32(0x000004))\r
1607 /**********/\r
1608 \r
1609 /****d* IBA Base: Constants/IB_MTU_LEN_TYPE\r
1610 * NAME\r
1611 *       IB_MTU_LEN_TYPE\r
1612 *\r
1613 * DESCRIPTION\r
1614 *       Encoded path MTU.\r
1615 *               1: 256\r
1616 *               2: 512\r
1617 *               3: 1024\r
1618 *               4: 2048\r
1619 *               5: 4096\r
1620 *               others: reserved\r
1621 *\r
1622 * SOURCE\r
1623 */\r
1624 #define IB_MTU_LEN_256                                                  1\r
1625 #define IB_MTU_LEN_512                                                  2\r
1626 #define IB_MTU_LEN_1024                                                 3\r
1627 #define IB_MTU_LEN_2048                                                 4\r
1628 #define IB_MTU_LEN_4096                                                 5\r
1629 \r
1630 #define IB_MIN_MTU    IB_MTU_LEN_256\r
1631 #define IB_MAX_MTU    IB_MTU_LEN_4096\r
1632 \r
1633 /**********/\r
1634 \r
1635 /****d* IBA Base: Constants/IB_PATH_SELECTOR_TYPE\r
1636 * NAME\r
1637 *       IB_PATH_SELECTOR_TYPE\r
1638 *\r
1639 * DESCRIPTION\r
1640 *       Path selector.\r
1641 *               0: greater than specified\r
1642 *               1: less than specified\r
1643 *               2: exactly the specified\r
1644 *               3: largest available\r
1645 *\r
1646 * SOURCE\r
1647 */\r
1648 #define IB_PATH_SELECTOR_GREATER_THAN           0\r
1649 #define IB_PATH_SELECTOR_LESS_THAN                      1\r
1650 #define IB_PATH_SELECTOR_EXACTLY                        2\r
1651 #define IB_PATH_SELECTOR_LARGEST                        3\r
1652 /**********/\r
1653 \r
1654 /****d* IBA Base: Constants/IB_SMINFO_STATE_NOTACTIVE\r
1655 * NAME\r
1656 *       IB_SMINFO_STATE_NOTACTIVE\r
1657 *\r
1658 * DESCRIPTION\r
1659 *       Encoded state value used in the SMInfo attribute.\r
1660 *\r
1661 * SOURCE\r
1662 */\r
1663 #define IB_SMINFO_STATE_NOTACTIVE                       0\r
1664 /**********/\r
1665 \r
1666 /****d* IBA Base: Constants/IB_SMINFO_STATE_DISCOVERING\r
1667 * NAME\r
1668 *       IB_SMINFO_STATE_DISCOVERING\r
1669 *\r
1670 * DESCRIPTION\r
1671 *       Encoded state value used in the SMInfo attribute.\r
1672 *\r
1673 * SOURCE\r
1674 */\r
1675 #define IB_SMINFO_STATE_DISCOVERING                     1\r
1676 /**********/\r
1677 \r
1678 /****d* IBA Base: Constants/IB_SMINFO_STATE_STANDBY\r
1679 * NAME\r
1680 *       IB_SMINFO_STATE_STANDBY\r
1681 *\r
1682 * DESCRIPTION\r
1683 *       Encoded state value used in the SMInfo attribute.\r
1684 *\r
1685 * SOURCE\r
1686 */\r
1687 #define IB_SMINFO_STATE_STANDBY                         2\r
1688 /**********/\r
1689 \r
1690 /****d* IBA Base: Constants/IB_SMINFO_STATE_MASTER\r
1691 * NAME\r
1692 *       IB_SMINFO_STATE_MASTER\r
1693 *\r
1694 * DESCRIPTION\r
1695 *       Encoded state value used in the SMInfo attribute.\r
1696 *\r
1697 * SOURCE\r
1698 */\r
1699 #define IB_SMINFO_STATE_MASTER                          3\r
1700 /**********/\r
1701 \r
1702 /****d* IBA Base: Constants/IB_PATH_REC_SELECTOR_MASK\r
1703 * NAME\r
1704 *       IB_PATH_REC_SELECTOR_MASK\r
1705 *\r
1706 * DESCRIPTION\r
1707 *       Mask for the selector field for path record MTU, rate,\r
1708 *       and packet lifetime.\r
1709 *\r
1710 * SOURCE\r
1711 */\r
1712 #define IB_PATH_REC_SELECTOR_MASK                       0xC0\r
1713 \r
1714 /****d* IBA Base: Constants/IB_MULTIPATH_REC_SELECTOR_MASK\r
1715 * NAME\r
1716 *       IB_MULTIPATH_REC_SELECTOR_MASK\r
1717 *\r
1718 * DESCRIPTION\r
1719 *       Mask for the selector field for multipath record MTU, rate,\r
1720 *       and packet lifetime.\r
1721 *\r
1722 * SOURCE\r
1723 */\r
1724 #define IB_MULTIPATH_REC_SELECTOR_MASK                       0xC0\r
1725 /**********/\r
1726 \r
1727 /****d* IBA Base: Constants/IB_PATH_REC_BASE_MASK\r
1728 * NAME\r
1729 *       IB_PATH_REC_BASE_MASK\r
1730 *\r
1731 * DESCRIPTION\r
1732 *       Mask for the base value field for path record MTU, rate,\r
1733 *       and packet lifetime.\r
1734 *\r
1735 * SOURCE\r
1736 */\r
1737 #define IB_PATH_REC_BASE_MASK                           0x3F\r
1738 /**********/\r
1739 \r
1740 /****d* IBA Base: Constants/IB_MULTIPATH_REC_BASE_MASK\r
1741 * NAME\r
1742 *       IB_MULTIPATH_REC_BASE_MASK\r
1743 *\r
1744 * DESCRIPTION\r
1745 *       Mask for the base value field for multipath record MTU, rate,\r
1746 *       and packet lifetime.\r
1747 *\r
1748 * SOURCE\r
1749 */\r
1750 #define IB_MULTIPATH_REC_BASE_MASK                      0x3F\r
1751 /**********/\r
1752 \r
1753 /****h* IBA Base/Type Definitions\r
1754 * NAME\r
1755 *       Type Definitions\r
1756 *\r
1757 * DESCRIPTION\r
1758 *       Definitions are from the InfiniBand Architecture Specification v1.2\r
1759 *\r
1760 *********/\r
1761 \r
1762 /****d* IBA Base: Types/ib_net16_t\r
1763 * NAME\r
1764 *       ib_net16_t\r
1765 *\r
1766 * DESCRIPTION\r
1767 *       Defines the network ordered type for 16-bit values.\r
1768 *\r
1769 * SOURCE\r
1770 */\r
1771 typedef uint16_t        ib_net16_t;\r
1772 /**********/\r
1773 \r
1774 /****d* IBA Base: Types/ib_net32_t\r
1775 * NAME\r
1776 *       ib_net32_t\r
1777 *\r
1778 * DESCRIPTION\r
1779 *       Defines the network ordered type for 32-bit values.\r
1780 *\r
1781 * SOURCE\r
1782 */\r
1783 typedef uint32_t        ib_net32_t;\r
1784 /**********/\r
1785 \r
1786 /****d* IBA Base: Types/ib_net64_t\r
1787 * NAME\r
1788 *       ib_net64_t\r
1789 *\r
1790 * DESCRIPTION\r
1791 *       Defines the network ordered type for 64-bit values.\r
1792 *\r
1793 * SOURCE\r
1794 */\r
1795 typedef uint64_t        ib_net64_t;\r
1796 /**********/\r
1797 \r
1798 /****d* IBA Base: Types/ib_gid_prefix_t\r
1799 * NAME\r
1800 *       ib_gid_prefix_t\r
1801 *\r
1802 * DESCRIPTION\r
1803 *\r
1804 * SOURCE\r
1805 */\r
1806 typedef ib_net64_t              ib_gid_prefix_t;\r
1807 /**********/\r
1808 \r
1809 /****d* IBA Base: Constants/ib_link_states_t\r
1810 * NAME\r
1811 *       ib_link_states_t\r
1812 *\r
1813 * DESCRIPTION\r
1814 *       Defines the link states of a port.\r
1815 *\r
1816 * SOURCE\r
1817 */\r
1818 #define IB_LINK_NO_CHANGE 0\r
1819 #define IB_LINK_DOWN      1\r
1820 #define IB_LINK_INIT      2\r
1821 #define IB_LINK_ARMED     3\r
1822 #define IB_LINK_ACTIVE    4\r
1823 #define IB_LINK_ACT_DEFER 5\r
1824 /**********/\r
1825 \r
1826 static const char* const __ib_node_type_str[] =\r
1827 {\r
1828         "UNKNOWN",\r
1829         "Channel Adapter",\r
1830         "Switch",\r
1831         "Router",\r
1832         "Subnet Management"\r
1833 };\r
1834 \r
1835 /****f* IBA Base: Types/ib_get_node_type_str\r
1836 * NAME\r
1837 *       ib_get_node_type_str\r
1838 *\r
1839 * DESCRIPTION\r
1840 *       Returns a string for the specified node type.\r
1841 *\r
1842 * SYNOPSIS\r
1843 */\r
1844 AL_INLINE const char* AL_API\r
1845 ib_get_node_type_str(\r
1846         IN                              uint8_t                                         node_type )\r
1847 {\r
1848         if( node_type >= IB_NODE_TYPE_ROUTER )\r
1849                 node_type = 0;\r
1850         return( __ib_node_type_str[node_type] );\r
1851 }\r
1852 /*\r
1853 * PARAMETERS\r
1854 *       node_type\r
1855 *               [in] Encoded node type as returned in the NodeInfo attribute.\r
1856 \r
1857 * RETURN VALUES\r
1858 *       Pointer to the node type string.\r
1859 *\r
1860 * NOTES\r
1861 *\r
1862 * SEE ALSO\r
1863 * ib_node_info_t\r
1864 *********/\r
1865 \r
1866 static const char* const __ib_port_state_str[] =\r
1867 {\r
1868         "No State Change (NOP)",\r
1869         "DOWN",\r
1870         "INIT",\r
1871         "ARMED",\r
1872         "ACTIVE",\r
1873         "ACTDEFER",\r
1874         "UNKNOWN"\r
1875 };\r
1876 \r
1877 /****f* IBA Base: Types/ib_get_port_state_str\r
1878 * NAME\r
1879 *       ib_get_port_state_str\r
1880 *\r
1881 * DESCRIPTION\r
1882 *       Returns a string for the specified port state.\r
1883 *\r
1884 * SYNOPSIS\r
1885 */\r
1886 AL_INLINE const char* AL_API\r
1887 ib_get_port_state_str(\r
1888         IN                              uint8_t                                         port_state )\r
1889 {\r
1890         if( port_state > IB_LINK_ACTIVE )\r
1891                 port_state = IB_LINK_ACTIVE + 1;\r
1892         return( __ib_port_state_str[port_state] );\r
1893 }\r
1894 /*\r
1895 * PARAMETERS\r
1896 *       port_state\r
1897 *               [in] Encoded port state as returned in the PortInfo attribute.\r
1898 \r
1899 * RETURN VALUES\r
1900 *       Pointer to the port state string.\r
1901 *\r
1902 * NOTES\r
1903 *\r
1904 * SEE ALSO\r
1905 * ib_port_info_t\r
1906 *********/\r
1907 \r
1908 /****f* IBA Base: Types/ib_get_port_state_from_str\r
1909 * NAME\r
1910 *       ib_get_port_state_from_str\r
1911 *\r
1912 * DESCRIPTION\r
1913 *       Returns a string for the specified port state.\r
1914 *\r
1915 * SYNOPSIS\r
1916 */\r
1917 AL_INLINE const uint8_t AL_API\r
1918 ib_get_port_state_from_str(\r
1919         IN                              char*                                           p_port_state_str )\r
1920 {\r
1921         if( !strncmp(p_port_state_str,"No State Change (NOP)",12) )\r
1922                 return(0);\r
1923         else if( !strncmp(p_port_state_str, "DOWN",4) )\r
1924                 return(1);\r
1925         else if( !strncmp(p_port_state_str, "INIT", 4) )\r
1926                 return(2);\r
1927         else if( !strncmp(p_port_state_str,"ARMED", 5) )\r
1928                 return(3);\r
1929         else if( !strncmp(p_port_state_str, "ACTIVE", 6) )\r
1930                 return(4);\r
1931         else if( !strncmp(p_port_state_str, "ACTDEFER", 8) )\r
1932                 return(5);\r
1933         return(6);\r
1934 }\r
1935 /*\r
1936 * PARAMETERS\r
1937 *       p_port_state_str\r
1938 *               [in] A string matching one returned by ib_get_port_state_str\r
1939 *\r
1940 * RETURN VALUES\r
1941 *       The appropriate code.\r
1942 *\r
1943 * NOTES\r
1944 *\r
1945 * SEE ALSO\r
1946 *       ib_port_info_t\r
1947 *********/\r
1948 \r
1949 /****d* IBA Base: Constants/Join States\r
1950 * NAME\r
1951 *       Join States\r
1952 *\r
1953 * DESCRIPTION\r
1954 *       Defines the join state flags for multicast group management.\r
1955 *\r
1956 * SOURCE\r
1957 */\r
1958 #define IB_JOIN_STATE_FULL                      1\r
1959 #define IB_JOIN_STATE_NON                       2\r
1960 #define IB_JOIN_STATE_SEND_ONLY         4\r
1961 /**********/\r
1962 \r
1963 /****f* IBA Base: Types/ib_pkey_get_base\r
1964 * NAME\r
1965 *       ib_pkey_get_base\r
1966 *\r
1967 * DESCRIPTION\r
1968 *       Returns the base P_Key value with the membership bit stripped.\r
1969 *\r
1970 * SYNOPSIS\r
1971 */\r
1972 AL_INLINE ib_net16_t AL_API\r
1973 ib_pkey_get_base(\r
1974         IN              const   ib_net16_t                                      pkey )\r
1975 {\r
1976         return( (ib_net16_t)(pkey & IB_PKEY_BASE_MASK) );\r
1977 }\r
1978 /*\r
1979 * PARAMETERS\r
1980 *       pkey\r
1981 *               [in] P_Key value\r
1982 *\r
1983 * RETURN VALUE\r
1984 *       Returns the base P_Key value with the membership bit stripped.\r
1985 *\r
1986 * NOTES\r
1987 *\r
1988 * SEE ALSO\r
1989 *********/\r
1990 \r
1991 /****f* IBA Base: Types/ib_pkey_is_full_member\r
1992 * NAME\r
1993 *       ib_pkey_is_full_member\r
1994 *\r
1995 * DESCRIPTION\r
1996 *       Indicates if the port is a full member of the parition.\r
1997 *\r
1998 * SYNOPSIS\r
1999 */\r
2000 AL_INLINE boolean_t AL_API\r
2001 ib_pkey_is_full_member(\r
2002         IN              const   ib_net16_t                                      pkey )\r
2003 {\r
2004         return( (pkey & IB_PKEY_TYPE_MASK) == IB_PKEY_TYPE_MASK );\r
2005 }\r
2006 /*\r
2007 * PARAMETERS\r
2008 *       pkey\r
2009 *               [in] P_Key value\r
2010 *\r
2011 * RETURN VALUE\r
2012 *       TRUE if the port is a full member of the partition.\r
2013 *       FALSE otherwise.\r
2014 *\r
2015 * NOTES\r
2016 *\r
2017 * SEE ALSO\r
2018 * ib_pkey_get_base, ib_net16_t\r
2019 *********/\r
2020 \r
2021 /****f* IBA Base: Types/ib_pkey_is_invalid\r
2022 * NAME\r
2023 *       ib_pkey_is_invalid\r
2024 *\r
2025 * DESCRIPTION\r
2026 *       Returns TRUE if the given P_Key is an invalid P_Key\r
2027 *  C10-116: the CI shall regard a P_Key as invalid if its low-order\r
2028 *           15 bits are all zero...\r
2029 *\r
2030 * SYNOPSIS\r
2031 */\r
2032 static inline boolean_t \r
2033 ib_pkey_is_invalid(\r
2034         IN      const   ib_net16_t              pkey )\r
2035 {\r
2036   if (ib_pkey_get_base(pkey) == 0x0000)\r
2037     return TRUE;\r
2038 \r
2039   return FALSE;\r
2040 }\r
2041 /*\r
2042 * PARAMETERS\r
2043 *       pkey\r
2044 *               [in] P_Key value\r
2045 *\r
2046 * RETURN VALUE\r
2047 *       Returns the base P_Key value with the membership bit stripped.\r
2048 *\r
2049 * NOTES\r
2050 *\r
2051 * SEE ALSO\r
2052 *********/\r
2053 \r
2054 /****d* IBA Base: Types/ib_gid_t\r
2055 * NAME\r
2056 *       ib_gid_t\r
2057 *\r
2058 * DESCRIPTION\r
2059 *\r
2060 * SYNOPSIS\r
2061 */\r
2062 #include <complib/cl_packon.h>\r
2063 typedef union _ib_gid\r
2064 {\r
2065         uint8_t                                 raw[16];\r
2066         struct _ib_gid_unicast\r
2067         {\r
2068                 ib_gid_prefix_t         prefix;\r
2069                 ib_net64_t                      interface_id;\r
2070 \r
2071         } PACK_SUFFIX unicast;\r
2072 \r
2073         struct _ib_gid_multicast\r
2074         {\r
2075                 uint8_t                         header[2];\r
2076                 uint8_t                         raw_group_id[14];\r
2077 \r
2078         } PACK_SUFFIX multicast;\r
2079 \r
2080 }       PACK_SUFFIX ib_gid_t;\r
2081 #include <complib/cl_packoff.h>\r
2082 /*\r
2083 * FIELDS\r
2084 *       raw\r
2085 *               GID represented as an unformated byte array.\r
2086 *\r
2087 *       unicast\r
2088 *               Typical unicast representation with subnet prefix and\r
2089 *               port GUID.\r
2090 *\r
2091 *       multicast\r
2092 *               Representation for multicast use.\r
2093 *\r
2094 * SEE ALSO\r
2095 *********/\r
2096 \r
2097 /****f* IBA Base: Types/ib_gid_is_multicast\r
2098 * NAME\r
2099 *       ib_gid_is_multicast\r
2100 *\r
2101 * DESCRIPTION\r
2102 *       Returns a boolean indicating whether a GID is a multicast GID.\r
2103 *\r
2104 * SYNOPSIS\r
2105 */\r
2106 AL_INLINE boolean_t AL_API\r
2107 ib_gid_is_multicast(\r
2108         IN              const   ib_gid_t*                                       p_gid )\r
2109 {\r
2110         return( p_gid->raw[0] == 0xFF );\r
2111 }\r
2112 \r
2113 /****f* IBA Base: Types/ib_gid_get_scope\r
2114 * NAME\r
2115 *       ib_gid_get_scope\r
2116 *\r
2117 * DESCRIPTION\r
2118 *       Returns scope of (assumed) multicast GID.\r
2119 *\r
2120 * SYNOPSIS\r
2121 */\r
2122 AL_INLINE uint8_t AL_API\r
2123 ib_mgid_get_scope(\r
2124         IN      const   ib_gid_t*               p_gid )\r
2125 {\r
2126         return( p_gid->raw[1] & 0x0F );\r
2127 }\r
2128 \r
2129 /****f* IBA Base: Types/ib_gid_set_scope\r
2130 * NAME\r
2131 *       ib_gid_set_scope\r
2132 *\r
2133 * DESCRIPTION\r
2134 *       Sets scope of (assumed) multicast GID.\r
2135 *\r
2136 * SYNOPSIS\r
2137 */\r
2138 AL_INLINE void AL_API\r
2139 ib_mgid_set_scope(\r
2140         IN              ib_gid_t* const         p_gid,\r
2141         IN      const   uint8_t                 scope )\r
2142 {\r
2143         p_gid->raw[1] &= 0xF0;\r
2144         p_gid->raw[1] |= scope & 0x0F;\r
2145 }\r
2146 \r
2147 /****f* IBA Base: Types/ib_gid_set_default\r
2148 * NAME\r
2149 *       ib_gid_set_default\r
2150 *\r
2151 * DESCRIPTION\r
2152 *       Sets a GID to the default value.\r
2153 *\r
2154 * SYNOPSIS\r
2155 */\r
2156 AL_INLINE void AL_API\r
2157 ib_gid_set_default(\r
2158         IN                              ib_gid_t* const                         p_gid,\r
2159         IN              const   ib_net64_t                                      interface_id )\r
2160 {\r
2161         p_gid->unicast.prefix = IB_DEFAULT_SUBNET_PREFIX;\r
2162         p_gid->unicast.interface_id = interface_id;\r
2163 }\r
2164 /*\r
2165 * PARAMETERS\r
2166 *       p_gid\r
2167 *               [in] Pointer to the GID object.\r
2168 *\r
2169 *       interface_id\r
2170 *               [in] Manufacturer assigned EUI64 value of a port.\r
2171 *\r
2172 * RETURN VALUES\r
2173 *       None.\r
2174 *\r
2175 * NOTES\r
2176 *\r
2177 * SEE ALSO\r
2178 *       ib_gid_t\r
2179 *********/\r
2180 \r
2181 /****f* IBA Base: Types/ib_gid_get_subnet_prefix\r
2182 * NAME\r
2183 *       ib_gid_get_subnet_prefix\r
2184 *\r
2185 * DESCRIPTION\r
2186 *       Gets the subnet prefix from a GID.\r
2187 *\r
2188 * SYNOPSIS\r
2189 */\r
2190 AL_INLINE ib_net64_t AL_API\r
2191 ib_gid_get_subnet_prefix(\r
2192         IN              const   ib_gid_t* const                         p_gid )\r
2193 {\r
2194         return( p_gid->unicast.prefix );\r
2195 }\r
2196 /*\r
2197 * PARAMETERS\r
2198 *       p_gid\r
2199 *               [in] Pointer to the GID object.\r
2200 *\r
2201 * RETURN VALUES\r
2202 *       64-bit subnet prefix value.\r
2203 *\r
2204 * NOTES\r
2205 *\r
2206 * SEE ALSO\r
2207 *       ib_gid_t\r
2208 *********/\r
2209 \r
2210 /****f* IBA Base: Types/ib_gid_is_link_local\r
2211 * NAME\r
2212 *       ib_gid_is_link_local\r
2213 *\r
2214 * DESCRIPTION\r
2215 *       Returns TRUE if the unicast GID scoping indicates link local,\r
2216 *       FALSE otherwise.\r
2217 *\r
2218 * SYNOPSIS\r
2219 */\r
2220 static inline boolean_t\r
2221 ib_gid_is_link_local(\r
2222         IN              const   ib_gid_t* const                         p_gid )\r
2223 {\r
2224         return( ib_gid_get_subnet_prefix( p_gid ) == IB_DEFAULT_SUBNET_PREFIX );\r
2225 }\r
2226 /*\r
2227 * PARAMETERS\r
2228 *       p_gid\r
2229 *               [in] Pointer to the GID object.\r
2230 *\r
2231 * RETURN VALUES\r
2232 *       Returns TRUE if the unicast GID scoping indicates link local,\r
2233 *       FALSE otherwise.\r
2234 *\r
2235 * NOTES\r
2236 *\r
2237 * SEE ALSO\r
2238 *       ib_gid_t\r
2239 *********/\r
2240 \r
2241 /****f* IBA Base: Types/ib_gid_is_site_local\r
2242 * NAME\r
2243 *       ib_gid_is_site_local\r
2244 *\r
2245 * DESCRIPTION\r
2246 *       Returns TRUE if the unicast GID scoping indicates site local,\r
2247 *       FALSE otherwise.\r
2248 *\r
2249 * SYNOPSIS\r
2250 */\r
2251 static inline boolean_t\r
2252 ib_gid_is_site_local(\r
2253         IN              const   ib_gid_t* const                         p_gid )\r
2254 {\r
2255         return( ( ib_gid_get_subnet_prefix( p_gid ) &\r
2256                 CL_HTON64( 0xFFFFFFFFFFFF0000ULL ) ) == CL_HTON64( 0xFEC0000000000000ULL ) );\r
2257 }\r
2258 /*\r
2259 * PARAMETERS\r
2260 *       p_gid\r
2261 *               [in] Pointer to the GID object.\r
2262 *\r
2263 * RETURN VALUES\r
2264 *       Returns TRUE if the unicast GID scoping indicates site local,\r
2265 *       FALSE otherwise.\r
2266 *\r
2267 * NOTES\r
2268 *\r
2269 * SEE ALSO\r
2270 *       ib_gid_t\r
2271 *********/\r
2272 \r
2273 /****f* IBA Base: Types/ib_gid_get_guid\r
2274 * NAME\r
2275 *       ib_gid_get_guid\r
2276 *\r
2277 * DESCRIPTION\r
2278 *       Gets the guid from a GID.\r
2279 *\r
2280 * SYNOPSIS\r
2281 */\r
2282 AL_INLINE ib_net64_t AL_API\r
2283 ib_gid_get_guid(\r
2284         IN              const   ib_gid_t* const                         p_gid )\r
2285 {\r
2286         return( p_gid->unicast.interface_id );\r
2287 }\r
2288 /*\r
2289 * PARAMETERS\r
2290 *       p_gid\r
2291 *               [in] Pointer to the GID object.\r
2292 *\r
2293 * RETURN VALUES\r
2294 *       64-bit GUID value.\r
2295 *\r
2296 * NOTES\r
2297 *\r
2298 * SEE ALSO\r
2299 *       ib_gid_t\r
2300 *********/\r
2301 \r
2302 /****s* IBA Base: Types/ib_field32_t\r
2303 * NAME\r
2304 *       ib_field32_t\r
2305 *\r
2306 * DESCRIPTION\r
2307 *       Represents a 32-bit field, and allows access as a 32-bit network byte\r
2308 *       ordered or a 4-byte array.\r
2309 *\r
2310 * SYNOPSIS\r
2311 */\r
2312 #include <complib/cl_packon.h>\r
2313 typedef union _ib_field32_t\r
2314 {\r
2315         net32_t         val;\r
2316         uint8_t         bytes[4];\r
2317 \r
2318 }       PACK_SUFFIX ib_field32_t;\r
2319 #include <complib/cl_packoff.h>\r
2320 /*\r
2321 * FIELDS\r
2322 *       val\r
2323 *               Full field value.\r
2324 *\r
2325 *       bytes\r
2326 *               Byte array representing the field.  The byte array provides identical\r
2327 *               access independently from CPU byte-ordering.\r
2328 *********/\r
2329 \r
2330 /****s* IBA Base: Types/ib_path_rec_t\r
2331 * NAME\r
2332 *       ib_path_rec_t\r
2333 *\r
2334 * DESCRIPTION\r
2335 *       Path records encapsulate the properties of a given\r
2336 *       route between two end-points on a subnet.\r
2337 *\r
2338 * SYNOPSIS\r
2339 */\r
2340 #include <complib/cl_packon.h>\r
2341 typedef __declspec(align(8)) struct _ib_path_rec\r
2342 {\r
2343         uint64_t                                resv0;\r
2344         ib_gid_t                                dgid;\r
2345         ib_gid_t                                sgid;\r
2346         ib_net16_t                              dlid;\r
2347         ib_net16_t                              slid;\r
2348         ib_field32_t                    hop_flow_raw;\r
2349         uint8_t                                 tclass;\r
2350         uint8_t                                 num_path;\r
2351         ib_net16_t                              pkey;\r
2352         ib_net16_t                              sl;\r
2353         uint8_t                                 mtu;\r
2354         uint8_t                                 rate;\r
2355         uint8_t                                 pkt_life;\r
2356         uint8_t                                 preference;\r
2357         uint16_t                                resv1;\r
2358         uint32_t                                resv2;\r
2359 \r
2360 }       PACK_SUFFIX ib_path_rec_t;\r
2361 #include <complib/cl_packoff.h>\r
2362 /*\r
2363 * FIELDS\r
2364 *       resv0\r
2365 *               Reserved bytes.\r
2366 *\r
2367 *       dgid\r
2368 *               GID of destination port.\r
2369 *\r
2370 *       sgid\r
2371 *               GID of source port.\r
2372 *\r
2373 *       dlid\r
2374 *               LID of destination port.\r
2375 *\r
2376 *       slid\r
2377 *               LID of source port.\r
2378 *\r
2379 *       hop_flow_raw\r
2380 *               Global routing parameters: hop count, flow label and raw bit.\r
2381 *\r
2382 *       tclass\r
2383 *               Another global routing parameter.\r
2384 *\r
2385 *       num_path\r
2386 *     Reversible path - 1 bit to say if path is reversible.\r
2387 *               num_path [6:0] In queries, maximum number of paths to return.\r
2388 *               In responses, undefined.\r
2389 *\r
2390 *       pkey\r
2391 *               Partition key (P_Key) to use on this path.\r
2392 *\r
2393 *       resv1\r
2394 *               Reserved byte.\r
2395 *\r
2396 *       sl\r
2397 *               Service level to use on this path.\r
2398 *\r
2399 *       mtu\r
2400 *               MTU and MTU selector fields to use on this path\r
2401 *\r
2402 *       rate\r
2403 *               Rate and rate selector fields to use on this path.\r
2404 *\r
2405 *       pkt_life\r
2406 *               Packet lifetime\r
2407 *\r
2408 *       preference\r
2409 *               Indicates the relative merit of this path versus other path\r
2410 *               records returned from the SA.  Lower numbers are better.\r
2411 *\r
2412 *       resv1\r
2413 *               Reserved bytes.\r
2414 *\r
2415 *       resv2\r
2416 *               Reserved bytes.\r
2417 * SEE ALSO\r
2418 *********/\r
2419 \r
2420 /* Path Record Component Masks */\r
2421 #define  IB_PR_COMPMASK_DGID              (CL_HTON64(((uint64_t)1)<<2))\r
2422 #define  IB_PR_COMPMASK_SGID              (CL_HTON64(((uint64_t)1)<<3))\r
2423 #define  IB_PR_COMPMASK_DLID              (CL_HTON64(((uint64_t)1)<<4))\r
2424 #define  IB_PR_COMPMASK_SLID              (CL_HTON64(((uint64_t)1)<<5))\r
2425 #define  IB_PR_COMPMASK_RAWTRAFFIC        (CL_HTON64(((uint64_t)1)<<6))\r
2426 #define  IB_PR_COMPMASK_RESV0             (CL_HTON64(((uint64_t)1)<<7))\r
2427 #define  IB_PR_COMPMASK_FLOWLABEL         (CL_HTON64(((uint64_t)1)<<8))\r
2428 #define  IB_PR_COMPMASK_HOPLIMIT          (CL_HTON64(((uint64_t)1)<<9))\r
2429 #define  IB_PR_COMPMASK_TCLASS            (CL_HTON64(((uint64_t)1)<<10))\r
2430 #define  IB_PR_COMPMASK_REVERSIBLE        (CL_HTON64(((uint64_t)1)<<11))\r
2431 #define  IB_PR_COMPMASK_NUM_PATH          (CL_HTON64(((uint64_t)1)<<12))\r
2432 #define  IB_PR_COMPMASK_PKEY              (CL_HTON64(((uint64_t)1)<<13))\r
2433 #define  IB_PR_COMPMASK_RESV1             (CL_HTON64(((uint64_t)1)<<14))\r
2434 #define  IB_PR_COMPMASK_SL                (CL_HTON64(((uint64_t)1)<<15))\r
2435 #define  IB_PR_COMPMASK_MTUSELEC          (CL_HTON64(((uint64_t)1)<<16))\r
2436 #define  IB_PR_COMPMASK_MTU               (CL_HTON64(((uint64_t)1)<<17))\r
2437 #define  IB_PR_COMPMASK_RATESELEC         (CL_HTON64(((uint64_t)1)<<18))\r
2438 #define  IB_PR_COMPMASK_RATE              (CL_HTON64(((uint64_t)1)<<19))\r
2439 #define  IB_PR_COMPMASK_PKTLIFETIMESELEC  (CL_HTON64(((uint64_t)1)<<20))\r
2440 #define  IB_PR_COMPMASK_PKTLIFETIME       (CL_HTON64(((uint64_t)1)<<21))\r
2441 \r
2442 /* Link Record Component Masks */\r
2443 #define IB_LR_COMPMASK_FROM_LID           (CL_HTON64(((uint64_t)1)<<0))\r
2444 #define IB_LR_COMPMASK_FROM_PORT          (CL_HTON64(((uint64_t)1)<<1))\r
2445 #define IB_LR_COMPMASK_TO_PORT            (CL_HTON64(((uint64_t)1)<<2))\r
2446 #define IB_LR_COMPMASK_TO_LID             (CL_HTON64(((uint64_t)1)<<3))\r
2447 \r
2448 /* VL Arbitration Record Masks */\r
2449 #define IB_VLA_COMPMASK_LID               (CL_HTON64(((uint64_t)1)<<0))\r
2450 #define IB_VLA_COMPMASK_OUT_PORT          (CL_HTON64(((uint64_t)1)<<1))\r
2451 #define IB_VLA_COMPMASK_BLOCK             (CL_HTON64(((uint64_t)1)<<2))\r
2452 \r
2453 /* SLtoVL Mapping Record Masks */\r
2454 #define IB_SLVL_COMPMASK_LID              (CL_HTON64(((uint64_t)1)<<0))\r
2455 #define IB_SLVL_COMPMASK_IN_PORT          (CL_HTON64(((uint64_t)1)<<1))\r
2456 #define IB_SLVL_COMPMASK_OUT_PORT         (CL_HTON64(((uint64_t)1)<<2))\r
2457 \r
2458 /* P_Key Table Record Masks */\r
2459 #define IB_PKEY_COMPMASK_LID              (CL_HTON64(((uint64_t)1)<<0))\r
2460 #define IB_PKEY_COMPMASK_BLOCK            (CL_HTON64(((uint64_t)1)<<1))\r
2461 #define IB_PKEY_COMPMASK_PORT             (CL_HTON64(((uint64_t)1)<<2))\r
2462 \r
2463 /* Switch Info Record Masks */\r
2464 #define IB_SWIR_COMPMASK_LID              (CL_HTON64(((uint64_t)1)<<0))\r
2465 #define IB_SWIR_COMPMASK_RESERVED1        (CL_HTON64(((uint64_t)1)<<1))\r
2466 \r
2467 /* LFT Record Masks */\r
2468 #define IB_LFTR_COMPMASK_LID              (CL_HTON64(((uint64_t)1)<<0))\r
2469 #define IB_LFTR_COMPMASK_BLOCK            (CL_HTON64(((uint64_t)1)<<1))\r
2470 \r
2471 /* MFT Record Masks */\r
2472 #define IB_MFTR_COMPMASK_LID              (CL_HTON64(((uint64_t)1)<<0))\r
2473 #define IB_MFTR_COMPMASK_POSITION         (CL_HTON64(((uint64_t)1)<<1))\r
2474 #define IB_MFTR_COMPMASK_RESERVED1        (CL_HTON64(((uint64_t)1)<<2))\r
2475 #define IB_MFTR_COMPMASK_BLOCK            (CL_HTON64(((uint64_t)1)<<3))\r
2476 #define IB_MFTR_COMPMASK_RESERVED2        (CL_HTON64(((uint64_t)1)<<4))\r
2477 \r
2478 /* NodeInfo Record Masks */\r
2479 #define IB_NR_COMPMASK_LID                (CL_HTON64(((uint64_t)1)<<0))\r
2480 #define IB_NR_COMPMASK_RESERVED1          (CL_HTON64(((uint64_t)1)<<1))\r
2481 #define IB_NR_COMPMASK_BASEVERSION        (CL_HTON64(((uint64_t)1)<<2))\r
2482 #define IB_NR_COMPMASK_CLASSVERSION       (CL_HTON64(((uint64_t)1)<<3))\r
2483 #define IB_NR_COMPMASK_NODETYPE           (CL_HTON64(((uint64_t)1)<<4))\r
2484 #define IB_NR_COMPMASK_NUMPORTS           (CL_HTON64(((uint64_t)1)<<5))\r
2485 #define IB_NR_COMPMASK_SYSIMAGEGUID       (CL_HTON64(((uint64_t)1)<<6))\r
2486 #define IB_NR_COMPMASK_NODEGUID           (CL_HTON64(((uint64_t)1)<<7))\r
2487 #define IB_NR_COMPMASK_PORTGUID           (CL_HTON64(((uint64_t)1)<<8))\r
2488 #define IB_NR_COMPMASK_PARTCAP            (CL_HTON64(((uint64_t)1)<<9))\r
2489 #define IB_NR_COMPMASK_DEVID              (CL_HTON64(((uint64_t)1)<<10))\r
2490 #define IB_NR_COMPMASK_REV                (CL_HTON64(((uint64_t)1)<<11))\r
2491 #define IB_NR_COMPMASK_PORTNUM            (CL_HTON64(((uint64_t)1)<<12))\r
2492 #define IB_NR_COMPMASK_VENDID             (CL_HTON64(((uint64_t)1)<<13))\r
2493 #define IB_NR_COMPMASK_NODEDESC           (CL_HTON64(((uint64_t)1)<<14))\r
2494 \r
2495 /* Service Record Component Masks Sec 15.2.5.14 Ver 1.1*/\r
2496 #define IB_SR_COMPMASK_SID                (CL_HTON64(((uint64_t)1)<<0))\r
2497 #define IB_SR_COMPMASK_SGID               (CL_HTON64(((uint64_t)1)<<1))\r
2498 #define IB_SR_COMPMASK_SPKEY              (CL_HTON64(((uint64_t)1)<<2))\r
2499 #define IB_SR_COMPMASK_RES1               (CL_HTON64(((uint64_t)1)<<3))\r
2500 #define IB_SR_COMPMASK_SLEASE             (CL_HTON64(((uint64_t)1)<<4))\r
2501 #define IB_SR_COMPMASK_SKEY               (CL_HTON64(((uint64_t)1)<<5))\r
2502 #define IB_SR_COMPMASK_SNAME              (CL_HTON64(((uint64_t)1)<<6))\r
2503 #define IB_SR_COMPMASK_SDATA8_0           (CL_HTON64(((uint64_t)1)<<7))\r
2504 #define IB_SR_COMPMASK_SDATA8_1           (CL_HTON64(((uint64_t)1)<<8))\r
2505 #define IB_SR_COMPMASK_SDATA8_2           (CL_HTON64(((uint64_t)1)<<9))\r
2506 #define IB_SR_COMPMASK_SDATA8_3           (CL_HTON64(((uint64_t)1)<<10))\r
2507 #define IB_SR_COMPMASK_SDATA8_4           (CL_HTON64(((uint64_t)1)<<11))\r
2508 #define IB_SR_COMPMASK_SDATA8_5           (CL_HTON64(((uint64_t)1)<<12))\r
2509 #define IB_SR_COMPMASK_SDATA8_6           (CL_HTON64(((uint64_t)1)<<13))\r
2510 #define IB_SR_COMPMASK_SDATA8_7           (CL_HTON64(((uint64_t)1)<<14))\r
2511 #define IB_SR_COMPMASK_SDATA8_8           (CL_HTON64(((uint64_t)1)<<15))\r
2512 #define IB_SR_COMPMASK_SDATA8_9           (CL_HTON64(((uint64_t)1)<<16))\r
2513 #define IB_SR_COMPMASK_SDATA8_10       (CL_HTON64(((uint64_t)1)<<17))\r
2514 #define IB_SR_COMPMASK_SDATA8_11       (CL_HTON64(((uint64_t)1)<<18))\r
2515 #define IB_SR_COMPMASK_SDATA8_12       (CL_HTON64(((uint64_t)1)<<19))\r
2516 #define IB_SR_COMPMASK_SDATA8_13       (CL_HTON64(((uint64_t)1)<<20))\r
2517 #define IB_SR_COMPMASK_SDATA8_14       (CL_HTON64(((uint64_t)1)<<21))\r
2518 #define IB_SR_COMPMASK_SDATA8_15       (CL_HTON64(((uint64_t)1)<<22))\r
2519 #define IB_SR_COMPMASK_SDATA16_0       (CL_HTON64(((uint64_t)1)<<23))\r
2520 #define IB_SR_COMPMASK_SDATA16_1       (CL_HTON64(((uint64_t)1)<<24))\r
2521 #define IB_SR_COMPMASK_SDATA16_2       (CL_HTON64(((uint64_t)1)<<25))\r
2522 #define IB_SR_COMPMASK_SDATA16_3       (CL_HTON64(((uint64_t)1)<<26))\r
2523 #define IB_SR_COMPMASK_SDATA16_4       (CL_HTON64(((uint64_t)1)<<27))\r
2524 #define IB_SR_COMPMASK_SDATA16_5       (CL_HTON64(((uint64_t)1)<<28))\r
2525 #define IB_SR_COMPMASK_SDATA16_6       (CL_HTON64(((uint64_t)1)<<29))\r
2526 #define IB_SR_COMPMASK_SDATA16_7       (CL_HTON64(((uint64_t)1)<<30))\r
2527 #define IB_SR_COMPMASK_SDATA32_0       (CL_HTON64(((uint64_t)1)<<31))\r
2528 #define IB_SR_COMPMASK_SDATA32_1                        (CL_HTON64(((uint64_t)1)<<32))\r
2529 #define IB_SR_COMPMASK_SDATA32_2                        (CL_HTON64(((uint64_t)1)<<33))\r
2530 #define IB_SR_COMPMASK_SDATA32_3                        (CL_HTON64(((uint64_t)1)<<34))\r
2531 #define IB_SR_COMPMASK_SDATA64_0                        (CL_HTON64(((uint64_t)1)<<35))\r
2532 #define IB_SR_COMPMASK_SDATA64_1                        (CL_HTON64(((uint64_t)1)<<36))\r
2533 \r
2534 /* Port Info Record Component Masks */\r
2535 #define IB_PIR_COMPMASK_LID              (CL_HTON64(((uint64_t)1)<<0))\r
2536 #define IB_PIR_COMPMASK_PORTNUM          (CL_HTON64(((uint64_t)1)<<1))\r
2537 #define IB_PIR_COMPMASK_RESV1            (CL_HTON64(((uint64_t)1)<<2))\r
2538 #define IB_PIR_COMPMASK_MKEY             (CL_HTON64(((uint64_t)1)<<3))\r
2539 #define IB_PIR_COMPMASK_GIDPRE           (CL_HTON64(((uint64_t)1)<<4))\r
2540 #define IB_PIR_COMPMASK_BASELID          (CL_HTON64(((uint64_t)1)<<5))\r
2541 #define IB_PIR_COMPMASK_SMLID            (CL_HTON64(((uint64_t)1)<<6))\r
2542 #define IB_PIR_COMPMASK_CAPMASK          (CL_HTON64(((uint64_t)1)<<7))\r
2543 #define IB_PIR_COMPMASK_DIAGCODE         (CL_HTON64(((uint64_t)1)<<8))\r
2544 #define IB_PIR_COMPMASK_MKEYLEASEPRD     (CL_HTON64(((uint64_t)1)<<9))\r
2545 #define IB_PIR_COMPMASK_LOCALPORTNUM     (CL_HTON64(((uint64_t)1)<<10))\r
2546 #define IB_PIR_COMPMASK_LINKWIDTHENABLED (CL_HTON64(((uint64_t)1)<<11))\r
2547 #define IB_PIR_COMPMASK_LNKWIDTHSUPPORT  (CL_HTON64(((uint64_t)1)<<12))\r
2548 #define IB_PIR_COMPMASK_LNKWIDTHACTIVE   (CL_HTON64(((uint64_t)1)<<13))\r
2549 #define IB_PIR_COMPMASK_LNKSPEEDSUPPORT  (CL_HTON64(((uint64_t)1)<<14))\r
2550 #define IB_PIR_COMPMASK_PORTSTATE        (CL_HTON64(((uint64_t)1)<<15))\r
2551 #define IB_PIR_COMPMASK_PORTPHYSTATE     (CL_HTON64(((uint64_t)1)<<16))\r
2552 #define IB_PIR_COMPMASK_LINKDWNDFLTSTATE (CL_HTON64(((uint64_t)1)<<17))\r
2553 #define IB_PIR_COMPMASK_MKEYPROTBITS     (CL_HTON64(((uint64_t)1)<<18))\r
2554 #define IB_PIR_COMPMASK_RESV2            (CL_HTON64(((uint64_t)1)<<19))\r
2555 #define IB_PIR_COMPMASK_LMC              (CL_HTON64(((uint64_t)1)<<20))\r
2556 #define IB_PIR_COMPMASK_LINKSPEEDACTIVE  (CL_HTON64(((uint64_t)1)<<21))\r
2557 #define IB_PIR_COMPMASK_LINKSPEEDENABLE  (CL_HTON64(((uint64_t)1)<<22))\r
2558 #define IB_PIR_COMPMASK_NEIGHBORMTU      (CL_HTON64(((uint64_t)1)<<23))\r
2559 #define IB_PIR_COMPMASK_MASTERSMSL       (CL_HTON64(((uint64_t)1)<<24))\r
2560 #define IB_PIR_COMPMASK_VLCAP            (CL_HTON64(((uint64_t)1)<<25))\r
2561 #define IB_PIR_COMPMASK_INITTYPE         (CL_HTON64(((uint64_t)1)<<26))\r
2562 #define IB_PIR_COMPMASK_VLHIGHLIMIT      (CL_HTON64(((uint64_t)1)<<27))\r
2563 #define IB_PIR_COMPMASK_VLARBHIGHCAP     (CL_HTON64(((uint64_t)1)<<28))\r
2564 #define IB_PIR_COMPMASK_VLARBLOWCAP      (CL_HTON64(((uint64_t)1)<<29))\r
2565 #define IB_PIR_COMPMASK_INITTYPEREPLY    (CL_HTON64(((uint64_t)1)<<30))\r
2566 #define IB_PIR_COMPMASK_MTUCAP           (CL_HTON64(((uint64_t)1)<<31))\r
2567 #define IB_PIR_COMPMASK_VLSTALLCNT       (CL_HTON64(((uint64_t)1)<<32))\r
2568 #define IB_PIR_COMPMASK_HOQLIFE          (CL_HTON64(((uint64_t)1)<<33))\r
2569 #define IB_PIR_COMPMASK_OPVLS            (CL_HTON64(((uint64_t)1)<<34))\r
2570 #define IB_PIR_COMPMASK_PARENFIN         (CL_HTON64(((uint64_t)1)<<35))\r
2571 #define IB_PIR_COMPMASK_PARENFOUT        (CL_HTON64(((uint64_t)1)<<36))\r
2572 #define IB_PIR_COMPMASK_FILTERRAWIN      (CL_HTON64(((uint64_t)1)<<37))\r
2573 #define IB_PIR_COMPMASK_FILTERRAWOUT     (CL_HTON64(((uint64_t)1)<<38))\r
2574 #define IB_PIR_COMPMASK_MKEYVIO          (CL_HTON64(((uint64_t)1)<<39))\r
2575 #define IB_PIR_COMPMASK_PKEYVIO          (CL_HTON64(((uint64_t)1)<<40))\r
2576 #define IB_PIR_COMPMASK_QKEYVIO          (CL_HTON64(((uint64_t)1)<<41))\r
2577 #define IB_PIR_COMPMASK_GUIDCAP          (CL_HTON64(((uint64_t)1)<<42))\r
2578 #define IB_PIR_COMPMASK_RESV3            (CL_HTON64(((uint64_t)1)<<43))\r
2579 #define IB_PIR_COMPMASK_SUBNTO           (CL_HTON64(((uint64_t)1)<<44))\r
2580 #define IB_PIR_COMPMASK_RESV4            (CL_HTON64(((uint64_t)1)<<45))\r
2581 #define IB_PIR_COMPMASK_RESPTIME         (CL_HTON64(((uint64_t)1)<<46))\r
2582 #define IB_PIR_COMPMASK_LOCALPHYERR      (CL_HTON64(((uint64_t)1)<<47))\r
2583 #define IB_PIR_COMPMASK_OVERRUNERR       (CL_HTON64(((uint64_t)1)<<48))\r
2584 \r
2585 /* Multicast Member Record Component Masks */\r
2586 #define IB_MCR_COMPMASK_GID         (CL_HTON64(((uint64_t)1)<<0))\r
2587 #define IB_MCR_COMPMASK_MGID        (CL_HTON64(((uint64_t)1)<<0))\r
2588 #define IB_MCR_COMPMASK_PORT_GID    (CL_HTON64(((uint64_t)1)<<1))\r
2589 #define IB_MCR_COMPMASK_QKEY        (CL_HTON64(((uint64_t)1)<<2))\r
2590 #define IB_MCR_COMPMASK_MLID        (CL_HTON64(((uint64_t)1)<<3))\r
2591 #define IB_MCR_COMPMASK_MTU_SEL     (CL_HTON64(((uint64_t)1)<<4))\r
2592 #define IB_MCR_COMPMASK_MTU         (CL_HTON64(((uint64_t)1)<<5))\r
2593 #define IB_MCR_COMPMASK_TCLASS      (CL_HTON64(((uint64_t)1)<<6))\r
2594 #define IB_MCR_COMPMASK_PKEY        (CL_HTON64(((uint64_t)1)<<7))\r
2595 #define IB_MCR_COMPMASK_RATE_SEL    (CL_HTON64(((uint64_t)1)<<8))\r
2596 #define IB_MCR_COMPMASK_RATE        (CL_HTON64(((uint64_t)1)<<9))\r
2597 #define IB_MCR_COMPMASK_LIFE_SEL    (CL_HTON64(((uint64_t)1)<<10))\r
2598 #define IB_MCR_COMPMASK_LIFE        (CL_HTON64(((uint64_t)1)<<11))\r
2599 #define IB_MCR_COMPMASK_SL          (CL_HTON64(((uint64_t)1)<<12))\r
2600 #define IB_MCR_COMPMASK_FLOW        (CL_HTON64(((uint64_t)1)<<13))\r
2601 #define IB_MCR_COMPMASK_HOP         (CL_HTON64(((uint64_t)1)<<14))\r
2602 #define IB_MCR_COMPMASK_SCOPE       (CL_HTON64(((uint64_t)1)<<15))\r
2603 #define IB_MCR_COMPMASK_JOIN_STATE  (CL_HTON64(((uint64_t)1)<<16))\r
2604 #define IB_MCR_COMPMASK_PROXY       (CL_HTON64(((uint64_t)1)<<17))\r
2605 \r
2606 /* GUID Info Record Component Masks */\r
2607 #define IB_GIR_COMPMASK_LID             (CL_HTON64(((uint64_t)1)<<0))\r
2608 #define IB_GIR_COMPMASK_BLOCKNUM        (CL_HTON64(((uint64_t)1)<<1))\r
2609 #define IB_GIR_COMPMASK_RESV1           (CL_HTON64(((uint64_t)1)<<2))\r
2610 #define IB_GIR_COMPMASK_RESV2           (CL_HTON64(((uint64_t)1)<<3))\r
2611 #define IB_GIR_COMPMASK_GID0            (CL_HTON64(((uint64_t)1)<<4))\r
2612 #define IB_GIR_COMPMASK_GID1            (CL_HTON64(((uint64_t)1)<<5))\r
2613 #define IB_GIR_COMPMASK_GID2            (CL_HTON64(((uint64_t)1)<<6))\r
2614 #define IB_GIR_COMPMASK_GID3            (CL_HTON64(((uint64_t)1)<<7))\r
2615 #define IB_GIR_COMPMASK_GID4            (CL_HTON64(((uint64_t)1)<<8))\r
2616 #define IB_GIR_COMPMASK_GID5            (CL_HTON64(((uint64_t)1)<<9))\r
2617 #define IB_GIR_COMPMASK_GID6            (CL_HTON64(((uint64_t)1)<<10))\r
2618 #define IB_GIR_COMPMASK_GID7            (CL_HTON64(((uint64_t)1)<<11))\r
2619 \r
2620 /* MultiPath Record Component Masks */\r
2621 #define IB_MPR_COMPMASK_RAWTRAFFIC      (CL_HTON64(((uint64_t)1)<<0))\r
2622 #define IB_MPR_COMPMASK_RESV0           (CL_HTON64(((uint64_t)1)<<1))\r
2623 #define IB_MPR_COMPMASK_FLOWLABEL       (CL_HTON64(((uint64_t)1)<<2))\r
2624 #define IB_MPR_COMPMASK_HOPLIMIT        (CL_HTON64(((uint64_t)1)<<3))\r
2625 #define IB_MPR_COMPMASK_TCLASS          (CL_HTON64(((uint64_t)1)<<4))\r
2626 #define IB_MPR_COMPMASK_REVERSIBLE      (CL_HTON64(((uint64_t)1)<<5))\r
2627 #define IB_MPR_COMPMASK_NUMBPATH        (CL_HTON64(((uint64_t)1)<<6))\r
2628 #define IB_MPR_COMPMASK_PKEY            (CL_HTON64(((uint64_t)1)<<7))\r
2629 #define IB_MPR_COMPMASK_RESV1           (CL_HTON64(((uint64_t)1)<<8))\r
2630 #define IB_MPR_COMPMASK_SL              (CL_HTON64(((uint64_t)1)<<9))\r
2631 #define IB_MPR_COMPMASK_MTUSELEC        (CL_HTON64(((uint64_t)1)<<10))\r
2632 #define IB_MPR_COMPMASK_MTU             (CL_HTON64(((uint64_t)1)<<11))\r
2633 #define IB_MPR_COMPMASK_RATESELEC       (CL_HTON64(((uint64_t)1)<<12))\r
2634 #define IB_MPR_COMPMASK_RATE            (CL_HTON64(((uint64_t)1)<<13))\r
2635 #define IB_MPR_COMPMASK_PKTLIFETIMESELEC (CL_HTON64(((uint64_t)1)<<14))\r
2636 #define IB_MPR_COMPMASK_PKTLIFETIME     (CL_HTON64(((uint64_t)1)<<15))\r
2637 #define IB_MPR_COMPMASK_RESV2           (CL_HTON64(((uint64_t)1)<<16))\r
2638 #define IB_MPR_COMPMASK_INDEPSELEC      (CL_HTON64(((uint64_t)1)<<17))\r
2639 #define IB_MPR_COMPMASK_RESV3           (CL_HTON64(((uint64_t)1)<<18))\r
2640 #define IB_MPR_COMPMASK_SGIDCOUNT       (CL_HTON64(((uint64_t)1)<<19))\r
2641 #define IB_MPR_COMPMASK_DGIDCOUNT       (CL_HTON64(((uint64_t)1)<<20))\r
2642 #define IB_MPR_COMPMASK_RESV4           (CL_HTON64(((uint64_t)1)<<21))\r
2643 \r
2644 /* SMInfo Record Component Masks */\r
2645 #define IB_SMIR_COMPMASK_LID            (CL_HTON64(((uint64_t)1)<<0))\r
2646 #define IB_SMIR_COMPMASK_RESV0          (CL_HTON64(((uint64_t)1)<<1))\r
2647 #define IB_SMIR_COMPMASK_GUID           (CL_HTON64(((uint64_t)1)<<2))\r
2648 #define IB_SMIR_COMPMASK_SMKEY          (CL_HTON64(((uint64_t)1)<<3))\r
2649 #define IB_SMIR_COMPMASK_ACTCOUNT       (CL_HTON64(((uint64_t)1)<<4))\r
2650 #define IB_SMIR_COMPMASK_PRIORITY       (CL_HTON64(((uint64_t)1)<<5))\r
2651 #define IB_SMIR_COMPMASK_SMSTATE        (CL_HTON64(((uint64_t)1)<<6))\r
2652 \r
2653 /* InformInfo Record Component Masks */\r
2654 #define IB_IIR_COMPMASK_SUBSCRIBERGID   (CL_HTON64(((uint64_t)1)<<0))\r
2655 #define IB_IIR_COMPMASK_ENUM            (CL_HTON64(((uint64_t)1)<<1))\r
2656 #define IB_IIR_COMPMASK_RESV0           (CL_HTON64(((uint64_t)1)<<2))\r
2657 #define IB_IIR_COMPMASK_GID             (CL_HTON64(((uint64_t)1)<<3))\r
2658 #define IB_IIR_COMPMASK_LIDRANGEBEGIN   (CL_HTON64(((uint64_t)1)<<4))\r
2659 #define IB_IIR_COMPMASK_LIDRANGEEND     (CL_HTON64(((uint64_t)1)<<5))\r
2660 #define IB_IIR_COMPMASK_RESV1           (CL_HTON64(((uint64_t)1)<<6))\r
2661 #define IB_IIR_COMPMASK_ISGENERIC       (CL_HTON64(((uint64_t)1)<<7))\r
2662 #define IB_IIR_COMPMASK_SUBSCRIBE       (CL_HTON64(((uint64_t)1)<<8))\r
2663 #define IB_IIR_COMPMASK_TYPE            (CL_HTON64(((uint64_t)1)<<9))\r
2664 #define IB_IIR_COMPMASK_TRAPNUMB        (CL_HTON64(((uint64_t)1)<<10))\r
2665 #define IB_IIR_COMPMASK_DEVICEID        (CL_HTON64(((uint64_t)1)<<10))\r
2666 #define IB_IIR_COMPMASK_QPN             (CL_HTON64(((uint64_t)1)<<11))\r
2667 #define IB_IIR_COMPMASK_RESV2           (CL_HTON64(((uint64_t)1)<<12))\r
2668 #define IB_IIR_COMPMASK_RESPTIME        (CL_HTON64(((uint64_t)1)<<13))\r
2669 #define IB_IIR_COMPMASK_RESV3           (CL_HTON64(((uint64_t)1)<<14))\r
2670 #define IB_IIR_COMPMASK_PRODTYPE        (CL_HTON64(((uint64_t)1)<<15))\r
2671 #define IB_IIR_COMPMASK_VENDID          (CL_HTON64(((uint64_t)1)<<15))\r
2672 \r
2673 /****f* IBA Base: Types/ib_path_rec_init_local\r
2674 * NAME\r
2675 *       ib_path_rec_init_local\r
2676 *\r
2677 * DESCRIPTION\r
2678 *       Initializes a subnet local path record.\r
2679 *\r
2680 * SYNOPSIS\r
2681 */\r
2682 AL_INLINE void AL_API\r
2683 ib_path_rec_init_local(\r
2684         IN                              ib_path_rec_t*  const           p_rec,\r
2685         IN              const   ib_gid_t*               const           p_dgid,\r
2686         IN              const   ib_gid_t*               const           p_sgid,\r
2687         IN              const   ib_net16_t                                      dlid,\r
2688         IN              const   ib_net16_t                                      slid,\r
2689         IN              const   uint8_t                                         num_path,\r
2690         IN              const   ib_net16_t                                      pkey,\r
2691         IN              const   uint8_t                                         sl,\r
2692         IN              const   uint8_t                                         mtu_selector,\r
2693         IN              const   uint8_t                                         mtu,\r
2694         IN              const   uint8_t                                         rate_selector,\r
2695         IN              const   uint8_t                                         rate,\r
2696         IN              const   uint8_t                                         pkt_life_selector,\r
2697         IN              const   uint8_t                                         pkt_life,\r
2698         IN              const   uint8_t                                         preference )\r
2699 {\r
2700         p_rec->dgid = *p_dgid;\r
2701         p_rec->sgid = *p_sgid;\r
2702         p_rec->dlid = dlid;\r
2703         p_rec->slid = slid;\r
2704         p_rec->num_path = num_path;\r
2705         p_rec->pkey = pkey;\r
2706         /* Lower 4 bits of path rec's SL are reserved. */\r
2707         p_rec->sl = cl_ntoh16( sl );\r
2708         p_rec->mtu = (uint8_t)((mtu & IB_PATH_REC_BASE_MASK) |\r
2709                         (uint8_t)(mtu_selector << 6));\r
2710         p_rec->rate = (uint8_t)((rate & IB_PATH_REC_BASE_MASK) |\r
2711                         (uint8_t)(rate_selector << 6));\r
2712         p_rec->pkt_life = (uint8_t)((pkt_life & IB_PATH_REC_BASE_MASK) |\r
2713                         (uint8_t)(pkt_life_selector << 6));\r
2714         p_rec->preference = preference;\r
2715 \r
2716         /* Clear global routing fields for local path records */\r
2717         p_rec->hop_flow_raw.val = 0;\r
2718         p_rec->tclass = 0;\r
2719 \r
2720         p_rec->resv0 = 0;\r
2721         p_rec->resv1 = 0;\r
2722         p_rec->resv2 = 0;\r
2723 }\r
2724 /*\r
2725 * PARAMETERS\r
2726 *       p_rec\r
2727 *               [in] Pointer to the path record object.\r
2728 *\r
2729 *       dgid\r
2730 *               [in] GID of destination port.\r
2731 *\r
2732 *       sgid\r
2733 *               [in] GID of source port.\r
2734 *\r
2735 *       dlid\r
2736 *               [in] LID of destination port.\r
2737 *\r
2738 *       slid\r
2739 *               [in] LID of source port.\r
2740 *\r
2741 *       num_path\r
2742 *     [in] Reversible path - 1 bit to say if path is reversible.\r
2743 *               num_path [6:0] In queries, maximum number of paths to return.\r
2744 *               In responses, undefined.\r
2745 *\r
2746 *       pkey\r
2747 *               [in] Partition key (P_Key) to use on this path.\r
2748 *\r
2749 *       sl\r
2750 *               [in] Service level to use on this path.  Lower 4-bits are valid.\r
2751 *\r
2752 *       mtu_selector\r
2753 *               [in] Encoded MTU selector value to use on this path\r
2754 *\r
2755 *       mtu\r
2756 *               [in] Encoded MTU to use on this path\r
2757 *\r
2758 *       rate_selector\r
2759 *               [in] Encoded rate selector value to use on this path.\r
2760 *\r
2761 *       rate\r
2762 *               [in] Encoded rate to use on this path.\r
2763 *\r
2764 *       pkt_life_selector\r
2765 *               [in] Encoded Packet selector value lifetime for this path.\r
2766 *\r
2767 *       pkt_life\r
2768 *               [in] Encoded Packet lifetime for this path.\r
2769 *\r
2770 *       preference\r
2771 *               [in] Indicates the relative merit of this path versus other path\r
2772 *               records returned from the SA.  Lower numbers are better.\r
2773 *\r
2774 * RETURN VALUES\r
2775 *       None.\r
2776 *\r
2777 * NOTES\r
2778 *\r
2779 * SEE ALSO\r
2780 *       ib_gid_t\r
2781 *********/\r
2782 \r
2783 /****f* IBA Base: Types/ib_path_rec_num_path\r
2784 * NAME\r
2785 *       ib_path_rec_num_path\r
2786 *\r
2787 * DESCRIPTION\r
2788 *       Get max number of paths to return.\r
2789 *\r
2790 * SYNOPSIS\r
2791 */\r
2792 static inline uint8_t   \r
2793 ib_path_rec_num_path(\r
2794         IN      const   ib_path_rec_t* const    p_rec )\r
2795 {\r
2796         return( p_rec->num_path &0x7F );\r
2797 }\r
2798 /*\r
2799 * PARAMETERS\r
2800 *       p_rec\r
2801 *               [in] Pointer to the path record object.\r
2802 *\r
2803 * RETURN VALUES\r
2804 *       Maximum number of paths to return for each unique SGID_DGID combination.\r
2805 *\r
2806 * NOTES\r
2807 *\r
2808 * SEE ALSO\r
2809 *       ib_path_rec_t\r
2810 *********/\r
2811 \r
2812 /****f* IBA Base: Types/ib_path_rec_sl\r
2813 * NAME\r
2814 *       ib_path_rec_sl\r
2815 *\r
2816 * DESCRIPTION\r
2817 *       Get path service level.\r
2818 *\r
2819 * SYNOPSIS\r
2820 */\r
2821 AL_INLINE uint8_t AL_API\r
2822 ib_path_rec_sl(\r
2823         IN              const   ib_path_rec_t* const            p_rec )\r
2824 {\r
2825         return( (uint8_t)((cl_ntoh16( p_rec->sl )) & 0xF) );\r
2826 }\r
2827 /*\r
2828 * PARAMETERS\r
2829 *       p_rec\r
2830 *               [in] Pointer to the path record object.\r
2831 *\r
2832 * RETURN VALUES\r
2833 *       SL.\r
2834 *\r
2835 * NOTES\r
2836 *\r
2837 * SEE ALSO\r
2838 *       ib_path_rec_t\r
2839 *********/\r
2840 \r
2841 /****f* IBA Base: Types/ib_path_rec_mtu\r
2842 * NAME\r
2843 *       ib_path_rec_mtu\r
2844 *\r
2845 * DESCRIPTION\r
2846 *       Get encoded path MTU.\r
2847 *\r
2848 * SYNOPSIS\r
2849 */\r
2850 AL_INLINE uint8_t AL_API\r
2851 ib_path_rec_mtu(\r
2852         IN              const   ib_path_rec_t* const            p_rec )\r
2853 {\r
2854         return( (uint8_t)(p_rec->mtu & IB_PATH_REC_BASE_MASK) );\r
2855 }\r
2856 /*\r
2857 * PARAMETERS\r
2858 *       p_rec\r
2859 *               [in] Pointer to the path record object.\r
2860 *\r
2861 * RETURN VALUES\r
2862 *       Encoded path MTU.\r
2863 *               1: 256\r
2864 *               2: 512\r
2865 *               3: 1024\r
2866 *               4: 2048\r
2867 *               5: 4096\r
2868 *               others: reserved\r
2869 *\r
2870 * NOTES\r
2871 *\r
2872 * SEE ALSO\r
2873 *       ib_path_rec_t\r
2874 *********/\r
2875 \r
2876 /****f* IBA Base: Types/ib_path_rec_mtu_sel\r
2877 * NAME\r
2878 *       ib_path_rec_mtu_sel\r
2879 *\r
2880 * DESCRIPTION\r
2881 *       Get encoded path MTU selector.\r
2882 *\r
2883 * SYNOPSIS\r
2884 */\r
2885 AL_INLINE uint8_t AL_API\r
2886 ib_path_rec_mtu_sel(\r
2887         IN              const   ib_path_rec_t* const            p_rec )\r
2888 {\r
2889         return( (uint8_t)((p_rec->mtu & IB_PATH_REC_SELECTOR_MASK) >> 6) );\r
2890 }\r
2891 /*\r
2892 * PARAMETERS\r
2893 *       p_rec\r
2894 *               [in] Pointer to the path record object.\r
2895 *\r
2896 * RETURN VALUES\r
2897 *       Encoded path MTU selector value (for queries).\r
2898 *               0: greater than MTU specified\r
2899 *               1: less than MTU specified\r
2900 *               2: exactly the MTU specified\r
2901 *               3: largest MTU available\r
2902 *\r
2903 * NOTES\r
2904 *\r
2905 * SEE ALSO\r
2906 *       ib_path_rec_t\r
2907 *********/\r
2908 \r
2909 /****f* IBA Base: Types/ib_path_rec_rate\r
2910 * NAME\r
2911 *       ib_path_rec_rate\r
2912 *\r
2913 * DESCRIPTION\r
2914 *       Get encoded path rate.\r
2915 *\r
2916 * SYNOPSIS\r
2917 */\r
2918 AL_INLINE uint8_t AL_API\r
2919 ib_path_rec_rate(\r
2920         IN              const   ib_path_rec_t* const            p_rec )\r
2921 {\r
2922         return( (uint8_t)(p_rec->rate & IB_PATH_REC_BASE_MASK) );\r
2923 }\r
2924 /*\r
2925 * PARAMETERS\r
2926 *       p_rec\r
2927 *               [in] Pointer to the path record object.\r
2928 *\r
2929 * RETURN VALUES\r
2930 *       Encoded path rate.\r
2931 *               2: 2.5 Gb/sec.\r
2932 *               3: 10 Gb/sec.\r
2933 *               4: 30 Gb/sec.\r
2934 *               5: 5 Gb/sec.\r
2935 *               6: 20 Gb/sec.\r
2936 *               7: 40 Gb/sec.\r
2937 *               8: 60 Gb/sec.\r
2938 *               9: 80 Gb/sec.\r
2939 *               10: 120 Gb/sec.\r
2940 *               others: reserved\r
2941 *\r
2942 * NOTES\r
2943 *\r
2944 * SEE ALSO\r
2945 *       ib_path_rec_t\r
2946 *********/\r
2947 \r
2948 /****f* IBA Base: Types/ib_path_rec_rate_sel\r
2949 * NAME\r
2950 *       ib_path_rec_rate_sel\r
2951 *\r
2952 * DESCRIPTION\r
2953 *       Get encoded path rate selector.\r
2954 *\r
2955 * SYNOPSIS\r
2956 */\r
2957 AL_INLINE uint8_t AL_API\r
2958 ib_path_rec_rate_sel(\r
2959         IN              const   ib_path_rec_t* const            p_rec )\r
2960 {\r
2961         return( (uint8_t)((p_rec->rate & IB_PATH_REC_SELECTOR_MASK) >> 6) );\r
2962 }\r
2963 /*\r
2964 * PARAMETERS\r
2965 *       p_rec\r
2966 *               [in] Pointer to the path record object.\r
2967 *\r
2968 * RETURN VALUES\r
2969 *       Encoded path rate selector value (for queries).\r
2970 *               0: greater than rate specified\r
2971 *               1: less than rate specified\r
2972 *               2: exactly the rate specified\r
2973 *               3: largest rate available\r
2974 *\r
2975 * NOTES\r
2976 *\r
2977 * SEE ALSO\r
2978 *       ib_path_rec_t\r
2979 *********/\r
2980 \r
2981 /****f* IBA Base: Types/ib_path_rec_pkt_life\r
2982 * NAME\r
2983 *       ib_path_rec_pkt_life\r
2984 *\r
2985 * DESCRIPTION\r
2986 *       Get encoded path pkt_life.\r
2987 *\r
2988 * SYNOPSIS\r
2989 */\r
2990 AL_INLINE uint8_t AL_API\r
2991 ib_path_rec_pkt_life(\r
2992         IN              const   ib_path_rec_t* const            p_rec )\r
2993 {\r
2994         return( (uint8_t)(p_rec->pkt_life & IB_PATH_REC_BASE_MASK) );\r
2995 }\r
2996 /*\r
2997 * PARAMETERS\r
2998 *       p_rec\r
2999 *               [in] Pointer to the path record object.\r
3000 *\r
3001 * RETURN VALUES\r
3002 *       Encoded path pkt_life = 4.096 ┬Ásec * 2 ** PacketLifeTime.\r
3003 *\r
3004 * NOTES\r
3005 *\r
3006 * SEE ALSO\r
3007 *       ib_path_rec_t\r
3008 *********/\r
3009 \r
3010 /****f* IBA Base: Types/ib_path_rec_pkt_life_sel\r
3011 * NAME\r
3012 *       ib_path_rec_pkt_life_sel\r
3013 *\r
3014 * DESCRIPTION\r
3015 *       Get encoded path pkt_lifetime selector.\r
3016 *\r
3017 * SYNOPSIS\r
3018 */\r
3019 AL_INLINE uint8_t AL_API\r
3020 ib_path_rec_pkt_life_sel(\r
3021         IN              const   ib_path_rec_t* const            p_rec )\r
3022 {\r
3023         return( (uint8_t)((p_rec->pkt_life & IB_PATH_REC_SELECTOR_MASK) >> 6 ));\r
3024 }\r
3025 /*\r
3026 * PARAMETERS\r
3027 *       p_rec\r
3028 *               [in] Pointer to the path record object.\r
3029 *\r
3030 * RETURN VALUES\r
3031 *       Encoded path pkt_lifetime selector value (for queries).\r
3032 *               0: greater than rate specified\r
3033 *               1: less than rate specified\r
3034 *               2: exactly the rate specified\r
3035 *               3: smallest packet lifetime available\r
3036 *\r
3037 * NOTES\r
3038 *\r
3039 * SEE ALSO\r
3040 *       ib_path_rec_t\r
3041 *********/\r
3042 \r
3043 /****f* IBA Base: Types/ib_path_rec_flow_lbl\r
3044 * NAME\r
3045 *       ib_path_rec_flow_lbl\r
3046 *\r
3047 * DESCRIPTION\r
3048 *       Get flow label.\r
3049 *\r
3050 * SYNOPSIS\r
3051 */\r
3052 AL_INLINE net32_t AL_API\r
3053 ib_path_rec_flow_lbl(\r
3054         IN              const   ib_path_rec_t* const            p_rec )\r
3055 {\r
3056         return( cl_hton32( (cl_ntoh32(p_rec->hop_flow_raw.val) >> 8) & 0x000FFFFF ) );\r
3057 }\r
3058 /*\r
3059 * PARAMETERS\r
3060 *       p_rec\r
3061 *               [in] Pointer to the path record object.\r
3062 *\r
3063 * RETURN VALUES\r
3064 *       Flow label of the path record.\r
3065 *\r
3066 * NOTES\r
3067 *\r
3068 * SEE ALSO\r
3069 *       ib_path_rec_t\r
3070 *********/\r
3071 \r
3072 /****f* IBA Base: Types/ib_path_rec_hop_limit\r
3073 * NAME\r
3074 *       ib_path_rec_hop_limit\r
3075 *\r
3076 * DESCRIPTION\r
3077 *       Get hop limit.\r
3078 *\r
3079 * SYNOPSIS\r
3080 */\r
3081 AL_INLINE uint8_t AL_API\r
3082 ib_path_rec_hop_limit(\r
3083         IN              const   ib_path_rec_t* const            p_rec )\r
3084 {\r
3085         return( p_rec->hop_flow_raw.bytes[3] );\r
3086 }\r
3087 /*\r
3088 * PARAMETERS\r
3089 *       p_rec\r
3090 *               [in] Pointer to the path record object.\r
3091 *\r
3092 * RETURN VALUES\r
3093 *       Hop limit of the path record.\r
3094 *\r
3095 * NOTES\r
3096 *\r
3097 * SEE ALSO\r
3098 *       ib_path_rec_t\r
3099 *********/\r
3100 \r
3101 /****f* IBA Base: Types/ib_path_rec_set_hop_flow_raw\r
3102 * NAME\r
3103 *       ib_path_rec_set_hop_flow_raw\r
3104 *\r
3105 * DESCRIPTION\r
3106 *       Sets the hop limit, flow label, and raw traffic bits of a path record.\r
3107 *\r
3108 * SYNOPSIS\r
3109 */\r
3110 AL_INLINE void AL_API\r
3111 ib_path_rec_set_hop_flow_raw(\r
3112                 OUT                     ib_path_rec_t* const            p_rec,\r
3113         IN              const   uint8_t                                         hop_limit,\r
3114         IN              const   net32_t                                         flow_lbl,\r
3115         IN              const   boolean_t                                       raw )\r
3116 {\r
3117         p_rec->hop_flow_raw.val = (cl_ntoh32( flow_lbl ) & 0x000FFFFF) << 8;\r
3118         if( raw )\r
3119                 p_rec->hop_flow_raw.val |= 0x80000000;\r
3120         p_rec->hop_flow_raw.val = cl_hton32( p_rec->hop_flow_raw.val );\r
3121         p_rec->hop_flow_raw.bytes[3] = hop_limit;\r
3122 }\r
3123 /*\r
3124 * PARAMETERS\r
3125 *       p_rec\r
3126 *               Pointer to the path record whose hop limit, flow label, and rab\r
3127 *               traffic fields to set.\r
3128 *\r
3129 *       hop_limit\r
3130 *               Hop limit to set in the path record.\r
3131 *\r
3132 *       flow_lbl\r
3133 *               Flow label, in network byte order, to set in the path record.\r
3134 *\r
3135 *       raw\r
3136 *               Boolean flag to indicate whether the path record is for raw traffic.\r
3137 *\r
3138 * SEE ALSO\r
3139 *       ib_path_rec_t\r
3140 *********/\r
3141 \r
3142 \r
3143 /****s* IBA Base: Constants/IB_CLASS_CAP_TRAP\r
3144 * NAME\r
3145 *       IB_CLASS_CAP_TRAP\r
3146 *\r
3147 * DESCRIPTION\r
3148 *       ClassPortInfo CapabilityMask bits.  This bit will be set\r
3149 *       if the class supports Trap() MADs (13.4.8.1).\r
3150 *\r
3151 * SEE ALSO\r
3152 *       ib_class_port_info_t, IB_CLASS_CAP_GETSET\r
3153 *\r
3154 * SOURCE\r
3155 */\r
3156 #define IB_CLASS_CAP_TRAP                                       0x0001\r
3157 /*********/\r
3158 \r
3159 /****s* IBA Base: Constants/IB_CLASS_CAP_GETSET\r
3160 * NAME\r
3161 *       IB_CLASS_CAP_GETSET\r
3162 *\r
3163 * DESCRIPTION\r
3164 *       ClassPortInfo CapabilityMask bits.  This bit will be set\r
3165 *       if the class supports Get(Notice) and Set(Notice) MADs (13.4.8.1).\r
3166 *\r
3167 * SEE ALSO\r
3168 *       ib_class_port_info_t, IB_CLASS_CAP_TRAP\r
3169 *\r
3170 * SOURCE\r
3171 */\r
3172 #define IB_CLASS_CAP_GETSET                                     0x0002\r
3173 /*********/\r
3174 \r
3175 /****s* IBA Base: Constants/IB_CLASS_RESP_TIME_MASK\r
3176 * NAME\r
3177 *       IB_CLASS_RESP_TIME_MASK\r
3178 *\r
3179 * DESCRIPTION\r
3180 *       Mask bits to extract the reponse time value from the\r
3181 *       resp_time_val field of ib_class_port_info_t.\r
3182 *\r
3183 * SEE ALSO\r
3184 *       ib_class_port_info_t\r
3185 *\r
3186 * SOURCE\r
3187 */\r
3188 #define IB_CLASS_RESP_TIME_MASK                         0x1F\r
3189 /*********/\r
3190 /****s* IBA Base: Types/ib_class_port_info_t\r
3191 * NAME\r
3192 *       ib_class_port_info_t\r
3193 *\r
3194 * DESCRIPTION\r
3195 *       IBA defined ClassPortInfo attribute (13.4.8.1)\r
3196 *       route between two end-points on a subnet.\r
3197 *\r
3198 * SYNOPSIS\r
3199 */\r
3200 #include <complib/cl_packon.h>\r
3201 typedef struct _ib_class_port_info\r
3202 {\r
3203         uint8_t                                 base_ver;\r
3204         uint8_t                                 class_ver;\r
3205         ib_net16_t                              cap_mask;\r
3206         ib_net32_t                              resp_time_val;\r
3207         ib_gid_t                                redir_gid;\r
3208         ib_net32_t                              redir_tc_sl_fl;\r
3209         ib_net16_t                              redir_lid;\r
3210         ib_net16_t                              redir_pkey;\r
3211         ib_net32_t                              redir_qp;\r
3212         ib_net32_t                              redir_qkey;\r
3213         ib_gid_t                                trap_gid;\r
3214         ib_net32_t                              trap_tc_sl_fl;\r
3215         ib_net16_t                              trap_lid;\r
3216         ib_net16_t                              trap_pkey;\r
3217         ib_net32_t                              trap_hop_qp;\r
3218         ib_net32_t                              trap_qkey;\r
3219 \r
3220 }       PACK_SUFFIX ib_class_port_info_t;\r
3221 #include <complib/cl_packoff.h>\r
3222 /*\r
3223 * FIELDS\r
3224 *       base_ver\r
3225 *               Maximum supported MAD Base Version.\r
3226 *\r
3227 *       class_ver\r
3228 *               Maximum supported management class version.\r
3229 *\r
3230 *       cap_mask\r
3231 *               Supported capabilities of this management class.\r
3232 *\r
3233 *       resp_time_value\r
3234 *               Maximum expected response time.\r
3235 *\r
3236 *       redr_gid\r
3237 *               GID to use for redirection, or zero\r
3238 *\r
3239 *       recdir_tc_sl_fl\r
3240 *               Traffic class, service level and flow label the requester\r
3241 *               should use if the service is redirected.\r
3242 *\r
3243 *       redir_lid\r
3244 *               LID used for redirection, or zero\r
3245 *\r
3246 *       redir_pkey\r
3247 *               P_Key used for redirection\r
3248 *\r
3249 *       redir_qp\r
3250 *               QP number used for redirection\r
3251 *\r
3252 *       redir_qkey\r
3253 *               Q_Key associated with the redirected QP.  This shall be the\r
3254 *               well known Q_Key value.\r
3255 *\r
3256 *       trap_gid\r
3257 *               GID value used for trap messages from this service.\r
3258 *\r
3259 *       trap_tc_sl_fl\r
3260 *               Traffic class, service level and flow label used for\r
3261 *               trap messages originated by this service.\r
3262 *\r
3263 *       trap_lid\r
3264 *               LID used for trap messages, or zero\r
3265 *\r
3266 *       trap_pkey\r
3267 *               P_Key used for trap messages\r
3268 *\r
3269 *       trap_hop_qp\r
3270 *               Hop limit (upper 8 bits) and QP number used for trap messages\r
3271 *\r
3272 *       trap_qkey\r
3273 *               Q_Key associated with the trap messages QP.\r
3274 *\r
3275 * SEE ALSO\r
3276 *       IB_CLASS_CAP_GETSET, IB_CLASS_CAP_TRAP\r
3277 *\r
3278 *********/\r
3279 \r
3280 /****s* IBA Base: Types/ib_sm_info_t\r
3281 * NAME\r
3282 *       ib_sm_info_t\r
3283 *\r
3284 * DESCRIPTION\r
3285 *       SMInfo structure (14.2.5.13).\r
3286 *\r
3287 * SYNOPSIS\r
3288 */\r
3289 #include <complib/cl_packon.h>\r
3290 typedef struct _ib_sm_info\r
3291 {\r
3292         ib_net64_t                      guid;\r
3293         ib_net64_t                      sm_key;\r
3294         ib_net32_t                      act_count;\r
3295         uint8_t                         pri_state;\r
3296 \r
3297 }       PACK_SUFFIX ib_sm_info_t;\r
3298 #include <complib/cl_packoff.h>\r
3299 /*\r
3300 * FIELDS\r
3301 *       guid\r
3302 *               Port GUID for this SM.\r
3303 *\r
3304 *       sm_key\r
3305 *               SM_Key of this SM.\r
3306 *\r
3307 *       act_count\r
3308 *               Activity counter used as a heartbeat.\r
3309 *\r
3310 *       pri_state\r
3311 *               Priority and State information\r
3312 *\r
3313 * SEE ALSO\r
3314 *********/\r
3315 \r
3316 /****f* IBA Base: Types/ib_sminfo_get_priority\r
3317 * NAME\r
3318 *       ib_sminfo_get_priority\r
3319 *\r
3320 * DESCRIPTION\r
3321 *       Returns the priority value.\r
3322 *\r
3323 * SYNOPSIS\r
3324 */\r
3325 AL_INLINE uint8_t AL_API\r
3326 ib_sminfo_get_priority(\r
3327         IN              const   ib_sm_info_t* const                     p_smi )\r
3328 {\r
3329         return( (uint8_t)((p_smi->pri_state & 0xF0)>>4) );\r
3330 }\r
3331 /*\r
3332 * PARAMETERS\r
3333 *       p_smi\r
3334 *               [in] Pointer to the SMInfo Attribute.\r
3335 *\r
3336 * RETURN VALUES\r
3337 *       Returns the priority value.\r
3338 *\r
3339 * NOTES\r
3340 *\r
3341 * SEE ALSO\r
3342 *********/\r
3343 \r
3344 /****f* IBA Base: Types/ib_sminfo_get_state\r
3345 * NAME\r
3346 *       ib_sminfo_get_state\r
3347 *\r
3348 * DESCRIPTION\r
3349 *       Returns the state value.\r
3350 *\r
3351 * SYNOPSIS\r
3352 */\r
3353 AL_INLINE uint8_t AL_API\r
3354 ib_sminfo_get_state(\r
3355         IN              const   ib_sm_info_t* const                     p_smi )\r
3356 {\r
3357         return( (uint8_t)(p_smi->pri_state & 0x0F) );\r
3358 }\r
3359 /*\r
3360 * PARAMETERS\r
3361 *       p_smi\r
3362 *               [in] Pointer to the SMInfo Attribute.\r
3363 *\r
3364 * RETURN VALUES\r
3365 *       Returns the state value.\r
3366 *\r
3367 * NOTES\r
3368 *\r
3369 * SEE ALSO\r
3370 *********/\r
3371 \r
3372 /****s* IBA Base: Types/ib_mad_t\r
3373 * NAME\r
3374 *       ib_mad_t\r
3375 *\r
3376 * DESCRIPTION\r
3377 *       IBA defined MAD header (13.4.3)\r
3378 *\r
3379 * SYNOPSIS\r
3380 */\r
3381 #include <complib/cl_packon.h>\r
3382 typedef struct _ib_mad\r
3383 {\r
3384         uint8_t                                 base_ver;\r
3385         uint8_t                                 mgmt_class;\r
3386         uint8_t                                 class_ver;\r
3387         uint8_t                                 method;\r
3388         ib_net16_t                              status;\r
3389         ib_net16_t                              class_spec;\r
3390         ib_net64_t                              trans_id;\r
3391         ib_net16_t                              attr_id;\r
3392         ib_net16_t                              resv;\r
3393         ib_net32_t                              attr_mod;\r
3394 }       PACK_SUFFIX ib_mad_t;\r
3395 #include <complib/cl_packoff.h>\r
3396 /*\r
3397 * FIELDS\r
3398 *       base_ver\r
3399 *               MAD base format.\r
3400 *\r
3401 *       mgmt_class\r
3402 *               Class of operation.\r
3403 *\r
3404 *       class_ver\r
3405 *               Version of MAD class-specific format.\r
3406 *\r
3407 *       method\r
3408 *               Method to perform, including 'R' bit.\r
3409 *\r
3410 *       status\r
3411 *               Status of operation.\r
3412 *\r
3413 *       class_spec\r
3414 *               Reserved for subnet management.\r
3415 *\r
3416 *       trans_id\r
3417 *               Transaction ID.\r
3418 *\r
3419 *       attr_id\r
3420 *               Attribute ID.\r
3421 *\r
3422 *       resv\r
3423 *               Reserved field.\r
3424 *\r
3425 *       attr_mod\r
3426 *               Attribute modifier.\r
3427 *\r
3428 * SEE ALSO\r
3429 *********/\r
3430 \r
3431 \r
3432 /****s* IBA Base: Types/ib_rmpp_mad_t\r
3433 * NAME\r
3434 *       ib_rmpp_mad_t\r
3435 *\r
3436 * DESCRIPTION\r
3437 *       IBA defined MAD RMPP header (13.6.2.1)\r
3438 *\r
3439 * SYNOPSIS\r
3440 */\r
3441 #include <complib/cl_packon.h>\r
3442 typedef struct _ib_rmpp_mad\r
3443 {\r
3444         ib_mad_t                                common_hdr;\r
3445 \r
3446         uint8_t                                 rmpp_version;\r
3447         uint8_t                                 rmpp_type;\r
3448         uint8_t                                 rmpp_flags;\r
3449         uint8_t                                 rmpp_status;\r
3450 \r
3451         ib_net32_t                              seg_num;\r
3452         ib_net32_t                              paylen_newwin;\r
3453 \r
3454 }       PACK_SUFFIX ib_rmpp_mad_t;\r
3455 #include <complib/cl_packoff.h>\r
3456 /*\r
3457 * SEE ALSO\r
3458 *       ib_mad_t\r
3459 *********/\r
3460 \r
3461 \r
3462 /****f* IBA Base: Types/ib_mad_init_new\r
3463 * NAME\r
3464 *       ib_mad_init_new\r
3465 *\r
3466 * DESCRIPTION\r
3467 *       Initializes a MAD common header.\r
3468 *\r
3469 * SYNOPSIS\r
3470 */\r
3471 AL_INLINE void AL_API\r
3472 ib_mad_init_new(\r
3473         IN                              ib_mad_t* const                         p_mad,\r
3474         IN              const   uint8_t                                         mgmt_class,\r
3475         IN              const   uint8_t                                         class_ver,\r
3476         IN              const   uint8_t                                         method,\r
3477         IN              const   ib_net64_t                                      trans_id,\r
3478         IN              const   ib_net16_t                                      attr_id,\r
3479         IN              const   ib_net32_t                                      attr_mod )\r
3480 {\r
3481         CL_ASSERT( p_mad );\r
3482         p_mad->base_ver = 1;\r
3483         p_mad->mgmt_class = mgmt_class;\r
3484         p_mad->class_ver = class_ver;\r
3485         p_mad->method = method;\r
3486         p_mad->status = 0;\r
3487         p_mad->class_spec = 0;\r
3488         p_mad->trans_id = trans_id;\r
3489         p_mad->attr_id = attr_id;\r
3490         p_mad->resv = 0;\r
3491         p_mad->attr_mod = attr_mod;\r
3492 }\r
3493 /*\r
3494 * PARAMETERS\r
3495 *       p_mad\r
3496 *               [in] Pointer to the MAD common header.\r
3497 *\r
3498 *       mgmt_class\r
3499 *               [in] Class of operation.\r
3500 *\r
3501 *       class_ver\r
3502 *               [in] Version of MAD class-specific format.\r
3503 *\r
3504 *       method\r
3505 *               [in] Method to perform, including 'R' bit.\r
3506 *\r
3507 *       trans_Id\r
3508 *               [in] Transaction ID.\r
3509 *\r
3510 *       attr_id\r
3511 *               [in] Attribute ID.\r
3512 *\r
3513 *       attr_mod\r
3514 *               [in] Attribute modifier.\r
3515 *\r
3516 * RETURN VALUES\r
3517 *       None.\r
3518 *\r
3519 * NOTES\r
3520 *\r
3521 * SEE ALSO\r
3522 *       ib_mad_t\r
3523 *********/\r
3524 \r
3525 /****f* IBA Base: Types/ib_mad_init_response\r
3526 * NAME\r
3527 *       ib_mad_init_response\r
3528 *\r
3529 * DESCRIPTION\r
3530 *       Initializes a MAD common header as a response.\r
3531 *\r
3532 * SYNOPSIS\r
3533 */\r
3534 AL_INLINE void AL_API\r
3535 ib_mad_init_response(\r
3536         IN              const   ib_mad_t* const                         p_req_mad,\r
3537         IN                              ib_mad_t* const                         p_mad,\r
3538         IN              const   ib_net16_t                                      status )\r
3539 {\r
3540         CL_ASSERT( p_req_mad );\r
3541         CL_ASSERT( p_mad );\r
3542         *p_mad = *p_req_mad;\r
3543         p_mad->status = status;\r
3544         if( p_mad->method == IB_MAD_METHOD_SET )\r
3545                 p_mad->method = IB_MAD_METHOD_GET;\r
3546         p_mad->method |= IB_MAD_METHOD_RESP_MASK;\r
3547 }\r
3548 /*\r
3549 * PARAMETERS\r
3550 *       p_req_mad\r
3551 *               [in] Pointer to the MAD common header in the original request MAD.\r
3552 *\r
3553 *       p_mad\r
3554 *               [in] Pointer to the MAD common header to initialize.\r
3555 *\r
3556 *       status\r
3557 *               [in] MAD Status value to return;\r
3558 *\r
3559 * RETURN VALUES\r
3560 *       None.\r
3561 *\r
3562 * NOTES\r
3563 *       p_req_mad and p_mad may point to the same MAD.\r
3564 *\r
3565 * SEE ALSO\r
3566 *       ib_mad_t\r
3567 *********/\r
3568 \r
3569 /****f* IBA Base: Types/ib_mad_is_response\r
3570 * NAME\r
3571 *       ib_mad_is_response\r
3572 *\r
3573 * DESCRIPTION\r
3574 *       Returns TRUE if the MAD is a response ('R' bit set),\r
3575 *       FALSE otherwise.\r
3576 *\r
3577 * SYNOPSIS\r
3578 */\r
3579 AL_INLINE boolean_t AL_API\r
3580 ib_mad_is_response(\r
3581         IN              const   ib_mad_t* const                         p_mad )\r
3582 {\r
3583         CL_ASSERT( p_mad );\r
3584         return( (p_mad->method & IB_MAD_METHOD_RESP_MASK) ==\r
3585                         IB_MAD_METHOD_RESP_MASK );\r
3586 }\r
3587 /*\r
3588 * PARAMETERS\r
3589 *       p_mad\r
3590 *               [in] Pointer to the MAD.\r
3591 *\r
3592 * RETURN VALUES\r
3593 *       Returns TRUE if the MAD is a response ('R' bit set),\r
3594 *       FALSE otherwise.\r
3595 *\r
3596 * NOTES\r
3597 *\r
3598 * SEE ALSO\r
3599 *       ib_mad_t\r
3600 *********/\r
3601 \r
3602 #define IB_RMPP_TYPE_DATA                       1\r
3603 #define IB_RMPP_TYPE_ACK                        2\r
3604 #define IB_RMPP_TYPE_STOP                       3\r
3605 #define IB_RMPP_TYPE_ABORT                      4\r
3606 \r
3607 #define IB_RMPP_NO_RESP_TIME            0x1F\r
3608 #define IB_RMPP_FLAG_ACTIVE                     0x01\r
3609 #define IB_RMPP_FLAG_FIRST                      0x02\r
3610 #define IB_RMPP_FLAG_LAST                       0x04\r
3611 \r
3612 #define IB_RMPP_STATUS_SUCCESS          0\r
3613 #define IB_RMPP_STATUS_RESX                     1               /* resources exhausted */\r
3614 #define IB_RMPP_STATUS_T2L                      118             /* time too long */\r
3615 #define IB_RMPP_STATUS_BAD_LEN          119             /* incon. last and payload len */\r
3616 #define IB_RMPP_STATUS_BAD_SEG          120             /* incon. first and segment no */\r
3617 #define IB_RMPP_STATUS_BADT                     121             /* bad rmpp type */\r
3618 #define IB_RMPP_STATUS_W2S                      122             /* newwindowlast too small */\r
3619 #define IB_RMPP_STATUS_S2B                      123             /* segment no too big */\r
3620 #define IB_RMPP_STATUS_BAD_STATUS       124             /* illegal status */\r
3621 #define IB_RMPP_STATUS_UNV                      125             /* unsupported version */\r
3622 #define IB_RMPP_STATUS_TMR                      126             /* too many retries */\r
3623 #define IB_RMPP_STATUS_UNSPEC           127             /* unspecified */\r
3624 \r
3625 /****f* IBA Base: Types/ib_rmpp_is_flag_set\r
3626 * NAME\r
3627 *       ib_rmpp_is_flag_set\r
3628 *\r
3629 * DESCRIPTION\r
3630 *       Returns TRUE if the MAD has the given RMPP flag set.\r
3631 *\r
3632 * SYNOPSIS\r
3633 */\r
3634 AL_INLINE boolean_t AL_API\r
3635 ib_rmpp_is_flag_set(\r
3636         IN              const   ib_rmpp_mad_t* const            p_rmpp_mad,\r
3637         IN              const   uint8_t                                         flag )\r
3638 {\r
3639         CL_ASSERT( p_rmpp_mad );\r
3640         return( (p_rmpp_mad->rmpp_flags & flag) == flag );\r
3641 }\r
3642 /*\r
3643 * PARAMETERS\r
3644 *       ib_rmpp_mad_t\r
3645 *               [in] Pointer to a MAD with an RMPP header.\r
3646 *\r
3647 *       flag\r
3648 *               [in] The RMPP flag being examined.\r
3649 *\r
3650 * RETURN VALUES\r
3651 *       Returns TRUE if the MAD has the given RMPP flag set.\r
3652 *\r
3653 * NOTES\r
3654 *\r
3655 * SEE ALSO\r
3656 *       ib_mad_t, ib_rmpp_mad_t\r
3657 *********/\r
3658 \r
3659 AL_INLINE void AL_API\r
3660 ib_rmpp_set_resp_time(\r
3661         IN                              ib_rmpp_mad_t* const            p_rmpp_mad,\r
3662         IN              const   uint8_t                                         resp_time )\r
3663 {\r
3664         CL_ASSERT( p_rmpp_mad );\r
3665         p_rmpp_mad->rmpp_flags |= (resp_time << 3);\r
3666 }\r
3667 \r
3668 \r
3669 AL_INLINE uint8_t AL_API\r
3670 ib_rmpp_get_resp_time(\r
3671         IN              const   ib_rmpp_mad_t* const            p_rmpp_mad )\r
3672 {\r
3673         CL_ASSERT( p_rmpp_mad );\r
3674         return( (uint8_t)(p_rmpp_mad->rmpp_flags >> 3) );\r
3675 }\r
3676 \r
3677 /****d* IBA Base: Constants/IB_SMP_DIRECTION\r
3678 * NAME\r
3679 *       IB_SMP_DIRECTION\r
3680 *\r
3681 * DESCRIPTION\r
3682 *       The Direction bit for directed route SMPs.\r
3683 *\r
3684 * SOURCE\r
3685 */\r
3686 #define IB_SMP_DIRECTION_HO             0x8000\r
3687 #define IB_SMP_DIRECTION                (CL_HTON16(IB_SMP_DIRECTION_HO))\r
3688 /**********/\r
3689 \r
3690 /****d* IBA Base: Constants/IB_SMP_STATUS_MASK\r
3691 * NAME\r
3692 *       IB_SMP_STATUS_MASK\r
3693 *\r
3694 * DESCRIPTION\r
3695 *       Mask value for extracting status from a directed route SMP.\r
3696 *\r
3697 * SOURCE\r
3698 */\r
3699 #define IB_SMP_STATUS_MASK_HO           0x7FFF\r
3700 #define IB_SMP_STATUS_MASK              (CL_HTON16(IB_SMP_STATUS_MASK_HO))\r
3701 /**********/\r
3702 \r
3703 /****s* IBA Base: Types/ib_smp_t\r
3704 * NAME\r
3705 *       ib_smp_t\r
3706 *\r
3707 * DESCRIPTION\r
3708 *       IBA defined SMP. (14.2.1.2)\r
3709 *\r
3710 * SYNOPSIS\r
3711 */\r
3712 #define IB_SMP_DATA_SIZE 64\r
3713 #include <complib/cl_packon.h>\r
3714 typedef struct _ib_smp\r
3715 {\r
3716         uint8_t                                 base_ver;\r
3717         uint8_t                                 mgmt_class;\r
3718         uint8_t                                 class_ver;\r
3719         uint8_t                                 method;\r
3720         ib_net16_t                              status;\r
3721         uint8_t                                 hop_ptr;\r
3722         uint8_t                                 hop_count;\r
3723         ib_net64_t                              trans_id;\r
3724         ib_net16_t                              attr_id;\r
3725         ib_net16_t                              resv;\r
3726         ib_net32_t                              attr_mod;\r
3727         ib_net64_t                              m_key;\r
3728         ib_net16_t                              dr_slid;\r
3729         ib_net16_t                              dr_dlid;\r
3730         uint32_t                                resv1[7];\r
3731         uint8_t                                 data[IB_SMP_DATA_SIZE];\r
3732         uint8_t                                 initial_path[IB_SUBNET_PATH_HOPS_MAX];\r
3733         uint8_t                                 return_path[IB_SUBNET_PATH_HOPS_MAX];\r
3734 \r
3735 }       PACK_SUFFIX ib_smp_t;\r
3736 #include <complib/cl_packoff.h>\r
3737 /*\r
3738 * FIELDS\r
3739 *       base_ver\r
3740 *               MAD base format.\r
3741 *\r
3742 *       mgmt_class\r
3743 *               Class of operation.\r
3744 *\r
3745 *       class_ver\r
3746 *               Version of MAD class-specific format.\r
3747 *\r
3748 *       method\r
3749 *               Method to perform, including 'R' bit.\r
3750 *\r
3751 *       status\r
3752 *               Status of operation.\r
3753 *\r
3754 *       hop_ptr\r
3755 *               Hop pointer for directed route MADs.\r
3756 *\r
3757 *       hop_count\r
3758 *               Hop count for directed route MADs.\r
3759 *\r
3760 *       trans_Id\r
3761 *               Transaction ID.\r
3762 *\r
3763 *       attr_id\r
3764 *               Attribute ID.\r
3765 *\r
3766 *       resv\r
3767 *               Reserved field.\r
3768 *\r
3769 *       attr_mod\r
3770 *               Attribute modifier.\r
3771 *\r
3772 *       m_key\r
3773 *               Management key value.\r
3774 *\r
3775 *       dr_slid\r
3776 *               Directed route source LID.\r
3777 *\r
3778 *       dr_dlid\r
3779 *               Directed route destination LID.\r
3780 *\r
3781 *       resv0\r
3782 *               Reserved for 64 byte alignment.\r
3783 *\r
3784 *       data\r
3785 *               MAD data payload.\r
3786 *\r
3787 *       initial_path\r
3788 *               Outbound port list.\r
3789 *\r
3790 *       return_path\r
3791 *               Inbound port list.\r
3792 *\r
3793 * SEE ALSO\r
3794 *********/\r
3795 \r
3796 /****f* IBA Base: Types/ib_smp_get_status\r
3797 * NAME\r
3798 *       ib_smp_get_status\r
3799 *\r
3800 * DESCRIPTION\r
3801 *       Returns the SMP status value in network order.\r
3802 *\r
3803 * SYNOPSIS\r
3804 */\r
3805 AL_INLINE ib_net16_t AL_API\r
3806 ib_smp_get_status(\r
3807         IN              const   ib_smp_t* const                         p_smp )\r
3808 {\r
3809         return( (ib_net16_t)(p_smp->status & IB_SMP_STATUS_MASK) );\r
3810 }\r
3811 /*\r
3812 * PARAMETERS\r
3813 *       p_smp\r
3814 *               [in] Pointer to the SMP packet.\r
3815 *\r
3816 * RETURN VALUES\r
3817 *       Returns the SMP status value in network order.\r
3818 *\r
3819 * NOTES\r
3820 *\r
3821 * SEE ALSO\r
3822 *       ib_smp_t\r
3823 *********/\r
3824 \r
3825 /****f* IBA Base: Types/ib_smp_is_response\r
3826 * NAME\r
3827 *       ib_smp_is_response\r
3828 *\r
3829 * DESCRIPTION\r