[image] Allow for zero embedded images
[people/asdlkf/gpxe.git] / src / drivers / net / mlx_ipoib / ib_mad.h
1 /*
2   This software is available to you under a choice of one of two
3   licenses.  You may choose to be licensed under the terms of the GNU
4   General Public License (GPL) Version 2, available at
5   <http://www.fsf.org/copyleft/gpl.html>, or the OpenIB.org BSD
6   license, available in the LICENSE.TXT file accompanying this
7   software.  These details are also available at
8   <http://openib.org/license.html>.
9
10   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
11   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
12   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
13   NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
14   BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
15   ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
16   CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
17   SOFTWARE.
18
19   Copyright (c) 2004 Mellanox Technologies Ltd.  All rights reserved.
20 */
21
22 #ifndef __ib_mad_h__
23 #define __ib_mad_h__
24
25 #include "ib_driver.h"
26
27 /* Management base version */
28 #define IB_MGMT_BASE_VERSION                    1
29
30 /* Management classes */
31 #define IB_MGMT_CLASS_SUBN_LID_ROUTED           0x01
32 #define IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE       0x81
33 #define IB_MGMT_CLASS_SUBN_ADM                  0x03
34 #define IB_MGMT_CLASS_PERF_MGMT                 0x04
35 #define IB_MGMT_CLASS_BM                        0x05
36 #define IB_MGMT_CLASS_DEVICE_MGMT               0x06
37 #define IB_MGMT_CLASS_CM                        0x07
38 #define IB_MGMT_CLASS_SNMP                      0x08
39 #define IB_MGMT_CLASS_VENDOR_RANGE2_START       0x30
40 #define IB_MGMT_CLASS_VENDOR_RANGE2_END         0x4F
41
42 /* Management methods */
43 #define IB_MGMT_METHOD_GET                      0x01
44 #define IB_MGMT_METHOD_SET                      0x02
45 #define IB_MGMT_METHOD_GET_RESP                 0x81
46 #define IB_MGMT_METHOD_SEND                     0x03
47 #define IB_MGMT_METHOD_TRAP                     0x05
48 #define IB_MGMT_METHOD_REPORT                   0x06
49 #define IB_MGMT_METHOD_REPORT_RESP              0x86
50 #define IB_MGMT_METHOD_TRAP_REPRESS             0x07
51 #define IB_MGMT_METHOD_DELETE                   0x15
52
53 #define IB_MGMT_METHOD_RESP                     0x80
54
55 /* Subnet management attributes */
56 #define IB_SMP_ATTR_NOTICE                                      0x0002
57 #define IB_SMP_ATTR_NODE_DESC                           0x0010
58 #define IB_SMP_ATTR_NODE_INFO                           0x0011
59 #define IB_SMP_ATTR_SWITCH_INFO                         0x0012
60 #define IB_SMP_ATTR_GUID_INFO                           0x0014
61 #define IB_SMP_ATTR_PORT_INFO                           0x0015
62 #define IB_SMP_ATTR_PKEY_TABLE                          0x0016
63 #define IB_SMP_ATTR_SL_TO_VL_TABLE                      0x0017
64 #define IB_SMP_ATTR_VL_ARB_TABLE                        0x0018
65 #define IB_SMP_ATTR_LINEAR_FORWARD_TABLE        0x0019
66 #define IB_SMP_ATTR_RANDOM_FORWARD_TABLE        0x001A
67 #define IB_SMP_ATTR_MCAST_FORWARD_TABLE         0x001B
68 #define IB_SMP_ATTR_SM_INFO                                     0x0020
69 #define IB_SMP_ATTR_VENDOR_DIAG                         0x0030
70 #define IB_SMP_ATTR_LED_INFO                            0x0031
71 #define IB_SMP_ATTR_VENDOR_MASK                         0xFF00
72
73 struct ib_mad_hdr_st {
74         __u8 method;
75         __u8 class_version;
76         __u8 mgmt_class;
77         __u8 base_version;
78         __u16 class_specific;
79         __u16 status;
80         __u32 tid[2];
81         __u16 resv;
82         __u16 attr_id;
83         __u32 attr_mod;
84 } __attribute__ ((packed));
85
86 struct rmpp_hdr_st {
87         __u32 raw[3];
88 } __attribute__ ((packed));
89
90 struct sa_header_st {
91         __u32 sm_key[2];
92         __u16 attrib_offset;
93         __u16 r0;
94         __u32 comp_mask[2];
95 } __attribute__ ((packed));
96
97 struct ib_mad_st {
98         struct ib_mad_hdr_st mad_hdr;
99         __u8 data[232];
100 } __attribute__ ((packed));
101
102 union mad_u {
103         __u8 raw[256];
104         struct ib_mad_st mad;
105 } __attribute__ ((packed));
106
107 static int get_path_record(union ib_gid_u *dgid, __u16 * dlid_p, __u8 * sl_p,
108                            __u8 * rate_p);
109
110 #endif                          /* __ib_mad_h__ */