Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
ib_smi.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2004 Mellanox Technologies Ltd. All rights reserved.
3  * Copyright (c) 2004 Infinicon Corporation. All rights reserved.
4  * Copyright (c) 2004 Intel Corporation. All rights reserved.
5  * Copyright (c) 2004 Topspin Corporation. All rights reserved.
6  * Copyright (c) 2004 Voltaire Corporation. All rights reserved.
7  *
8  * This software is available to you under a choice of one of two
9  * licenses. You may choose to be licensed under the terms of the GNU
10  * General Public License (GPL) Version 2, available from the file
11  * COPYING in the main directory of this source tree, or the
12  * OpenIB.org BSD license below:
13  *
14  * Redistribution and use in source and binary forms, with or
15  * without modification, are permitted provided that the following
16  * conditions are met:
17  *
18  * - Redistributions of source code must retain the above
19  * copyright notice, this list of conditions and the following
20  * disclaimer.
21  *
22  * - Redistributions in binary form must reproduce the above
23  * copyright notice, this list of conditions and the following
24  * disclaimer in the documentation and/or other materials
25  * provided with the distribution.
26  *
27  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
28  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
29  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
30  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
31  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
32  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
33  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
34  * SOFTWARE.
35  */
36 
37 #if !defined(IB_SMI_H)
38 #define IB_SMI_H
39 
40 #include <rdma/ib_mad.h>
41 
42 #define IB_SMP_DATA_SIZE 64
43 #define IB_SMP_MAX_PATH_HOPS 64
44 
45 struct ib_smp {
60  u8 reserved[28];
64 } __attribute__ ((packed));
65 
66 #define IB_SMP_DIRECTION cpu_to_be16(0x8000)
67 
68 /* Subnet management attributes */
69 #define IB_SMP_ATTR_NOTICE cpu_to_be16(0x0002)
70 #define IB_SMP_ATTR_NODE_DESC cpu_to_be16(0x0010)
71 #define IB_SMP_ATTR_NODE_INFO cpu_to_be16(0x0011)
72 #define IB_SMP_ATTR_SWITCH_INFO cpu_to_be16(0x0012)
73 #define IB_SMP_ATTR_GUID_INFO cpu_to_be16(0x0014)
74 #define IB_SMP_ATTR_PORT_INFO cpu_to_be16(0x0015)
75 #define IB_SMP_ATTR_PKEY_TABLE cpu_to_be16(0x0016)
76 #define IB_SMP_ATTR_SL_TO_VL_TABLE cpu_to_be16(0x0017)
77 #define IB_SMP_ATTR_VL_ARB_TABLE cpu_to_be16(0x0018)
78 #define IB_SMP_ATTR_LINEAR_FORWARD_TABLE cpu_to_be16(0x0019)
79 #define IB_SMP_ATTR_RANDOM_FORWARD_TABLE cpu_to_be16(0x001A)
80 #define IB_SMP_ATTR_MCAST_FORWARD_TABLE cpu_to_be16(0x001B)
81 #define IB_SMP_ATTR_SM_INFO cpu_to_be16(0x0020)
82 #define IB_SMP_ATTR_VENDOR_DIAG cpu_to_be16(0x0030)
83 #define IB_SMP_ATTR_LED_INFO cpu_to_be16(0x0031)
84 #define IB_SMP_ATTR_VENDOR_MASK cpu_to_be16(0xFF00)
85 
86 struct ib_port_info {
98  u8 linkspeed_portstate; /* 4 bits, 4 bits */
99  u8 portphysstate_linkdown; /* 4 bits, 4 bits */
100  u8 mkeyprot_resv_lmc; /* 2 bits, 3, 3 */
101  u8 linkspeedactive_enabled; /* 4 bits, 4 bits */
102  u8 neighbormtu_mastersmsl; /* 4 bits, 4 bits */
103  u8 vlcap_inittype; /* 4 bits, 4 bits */
107  u8 inittypereply_mtucap; /* 4 bits, 4 bits */
108  u8 vlstallcnt_hoqlife; /* 3 bits, 5 bits */
109  u8 operationalvl_pei_peo_fpi_fpo; /* 4 bits, 1, 1, 1, 1 */
114  u8 clientrereg_resv_subnetto; /* 1 bit, 2 bits, 5 */
115  u8 resv_resptimevalue; /* 3 bits, 5 bits */
116  u8 localphyerrors_overrunerrors; /* 4 bits, 4 bits */
120 };
121 
122 static inline u8
123 ib_get_smp_direction(struct ib_smp *smp)
124 {
125  return ((smp->status & IB_SMP_DIRECTION) == IB_SMP_DIRECTION);
126 }
127 
128 #endif /* IB_SMI_H */