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