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