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