xref: /linux/include/rdma/ib_smi.h (revision a4d61e84)
1*a4d61e84SRoland Dreier /*
2*a4d61e84SRoland Dreier  * Copyright (c) 2004 Mellanox Technologies Ltd.  All rights reserved.
3*a4d61e84SRoland Dreier  * Copyright (c) 2004 Infinicon Corporation.  All rights reserved.
4*a4d61e84SRoland Dreier  * Copyright (c) 2004 Intel Corporation.  All rights reserved.
5*a4d61e84SRoland Dreier  * Copyright (c) 2004 Topspin Corporation.  All rights reserved.
6*a4d61e84SRoland Dreier  * Copyright (c) 2004 Voltaire Corporation.  All rights reserved.
7*a4d61e84SRoland Dreier  *
8*a4d61e84SRoland Dreier  * This software is available to you under a choice of one of two
9*a4d61e84SRoland Dreier  * licenses.  You may choose to be licensed under the terms of the GNU
10*a4d61e84SRoland Dreier  * General Public License (GPL) Version 2, available from the file
11*a4d61e84SRoland Dreier  * COPYING in the main directory of this source tree, or the
12*a4d61e84SRoland Dreier  * OpenIB.org BSD license below:
13*a4d61e84SRoland Dreier  *
14*a4d61e84SRoland Dreier  *     Redistribution and use in source and binary forms, with or
15*a4d61e84SRoland Dreier  *     without modification, are permitted provided that the following
16*a4d61e84SRoland Dreier  *     conditions are met:
17*a4d61e84SRoland Dreier  *
18*a4d61e84SRoland Dreier  *      - Redistributions of source code must retain the above
19*a4d61e84SRoland Dreier  *        copyright notice, this list of conditions and the following
20*a4d61e84SRoland Dreier  *        disclaimer.
21*a4d61e84SRoland Dreier  *
22*a4d61e84SRoland Dreier  *      - Redistributions in binary form must reproduce the above
23*a4d61e84SRoland Dreier  *        copyright notice, this list of conditions and the following
24*a4d61e84SRoland Dreier  *        disclaimer in the documentation and/or other materials
25*a4d61e84SRoland Dreier  *        provided with the distribution.
26*a4d61e84SRoland Dreier  *
27*a4d61e84SRoland Dreier  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
28*a4d61e84SRoland Dreier  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
29*a4d61e84SRoland Dreier  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
30*a4d61e84SRoland Dreier  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
31*a4d61e84SRoland Dreier  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
32*a4d61e84SRoland Dreier  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
33*a4d61e84SRoland Dreier  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
34*a4d61e84SRoland Dreier  * SOFTWARE.
35*a4d61e84SRoland Dreier  *
36*a4d61e84SRoland Dreier  * $Id: ib_smi.h 1389 2004-12-27 22:56:47Z roland $
37*a4d61e84SRoland Dreier  */
38*a4d61e84SRoland Dreier 
39*a4d61e84SRoland Dreier #if !defined( IB_SMI_H )
40*a4d61e84SRoland Dreier #define IB_SMI_H
41*a4d61e84SRoland Dreier 
42*a4d61e84SRoland Dreier #include <rdma/ib_mad.h>
43*a4d61e84SRoland Dreier 
44*a4d61e84SRoland Dreier #define IB_SMP_DATA_SIZE			64
45*a4d61e84SRoland Dreier #define IB_SMP_MAX_PATH_HOPS			64
46*a4d61e84SRoland Dreier 
47*a4d61e84SRoland Dreier struct ib_smp {
48*a4d61e84SRoland Dreier 	u8	base_version;
49*a4d61e84SRoland Dreier 	u8	mgmt_class;
50*a4d61e84SRoland Dreier 	u8	class_version;
51*a4d61e84SRoland Dreier 	u8	method;
52*a4d61e84SRoland Dreier 	__be16	status;
53*a4d61e84SRoland Dreier 	u8	hop_ptr;
54*a4d61e84SRoland Dreier 	u8	hop_cnt;
55*a4d61e84SRoland Dreier 	__be64	tid;
56*a4d61e84SRoland Dreier 	__be16	attr_id;
57*a4d61e84SRoland Dreier 	__be16	resv;
58*a4d61e84SRoland Dreier 	__be32	attr_mod;
59*a4d61e84SRoland Dreier 	__be64	mkey;
60*a4d61e84SRoland Dreier 	__be16	dr_slid;
61*a4d61e84SRoland Dreier 	__be16	dr_dlid;
62*a4d61e84SRoland Dreier 	u8	reserved[28];
63*a4d61e84SRoland Dreier 	u8	data[IB_SMP_DATA_SIZE];
64*a4d61e84SRoland Dreier 	u8	initial_path[IB_SMP_MAX_PATH_HOPS];
65*a4d61e84SRoland Dreier 	u8	return_path[IB_SMP_MAX_PATH_HOPS];
66*a4d61e84SRoland Dreier } __attribute__ ((packed));
67*a4d61e84SRoland Dreier 
68*a4d61e84SRoland Dreier #define IB_SMP_DIRECTION			__constant_htons(0x8000)
69*a4d61e84SRoland Dreier 
70*a4d61e84SRoland Dreier /* Subnet management attributes */
71*a4d61e84SRoland Dreier #define IB_SMP_ATTR_NOTICE			__constant_htons(0x0002)
72*a4d61e84SRoland Dreier #define IB_SMP_ATTR_NODE_DESC			__constant_htons(0x0010)
73*a4d61e84SRoland Dreier #define IB_SMP_ATTR_NODE_INFO			__constant_htons(0x0011)
74*a4d61e84SRoland Dreier #define IB_SMP_ATTR_SWITCH_INFO			__constant_htons(0x0012)
75*a4d61e84SRoland Dreier #define IB_SMP_ATTR_GUID_INFO			__constant_htons(0x0014)
76*a4d61e84SRoland Dreier #define IB_SMP_ATTR_PORT_INFO			__constant_htons(0x0015)
77*a4d61e84SRoland Dreier #define IB_SMP_ATTR_PKEY_TABLE			__constant_htons(0x0016)
78*a4d61e84SRoland Dreier #define IB_SMP_ATTR_SL_TO_VL_TABLE		__constant_htons(0x0017)
79*a4d61e84SRoland Dreier #define IB_SMP_ATTR_VL_ARB_TABLE		__constant_htons(0x0018)
80*a4d61e84SRoland Dreier #define IB_SMP_ATTR_LINEAR_FORWARD_TABLE	__constant_htons(0x0019)
81*a4d61e84SRoland Dreier #define IB_SMP_ATTR_RANDOM_FORWARD_TABLE	__constant_htons(0x001A)
82*a4d61e84SRoland Dreier #define IB_SMP_ATTR_MCAST_FORWARD_TABLE		__constant_htons(0x001B)
83*a4d61e84SRoland Dreier #define IB_SMP_ATTR_SM_INFO			__constant_htons(0x0020)
84*a4d61e84SRoland Dreier #define IB_SMP_ATTR_VENDOR_DIAG			__constant_htons(0x0030)
85*a4d61e84SRoland Dreier #define IB_SMP_ATTR_LED_INFO			__constant_htons(0x0031)
86*a4d61e84SRoland Dreier #define IB_SMP_ATTR_VENDOR_MASK			__constant_htons(0xFF00)
87*a4d61e84SRoland Dreier 
88*a4d61e84SRoland Dreier static inline u8
89*a4d61e84SRoland Dreier ib_get_smp_direction(struct ib_smp *smp)
90*a4d61e84SRoland Dreier {
91*a4d61e84SRoland Dreier 	return ((smp->status & IB_SMP_DIRECTION) == IB_SMP_DIRECTION);
92*a4d61e84SRoland Dreier }
93*a4d61e84SRoland Dreier 
94*a4d61e84SRoland Dreier #endif /* IB_SMI_H */
95