1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
|
/*
* Copyright (c) 2005-2009 Brocade Communications Systems, Inc.
* All rights reserved
* www.brocade.com
*
* Linux driver for Brocade Fibre Channel Host Bus Adapter.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License (GPL) Version 2 as
* published by the Free Software Foundation
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*/
#ifndef __FDMI_H__
#define __FDMI_H__
#include <protocol/types.h>
#include <protocol/fc.h>
#include <protocol/ct.h>
#pragma pack(1)
/*
* FDMI Command Codes
*/
#define FDMI_GRHL 0x0100
#define FDMI_GHAT 0x0101
#define FDMI_GRPL 0x0102
#define FDMI_GPAT 0x0110
#define FDMI_RHBA 0x0200
#define FDMI_RHAT 0x0201
#define FDMI_RPRT 0x0210
#define FDMI_RPA 0x0211
#define FDMI_DHBA 0x0300
#define FDMI_DPRT 0x0310
/*
* FDMI reason codes
*/
#define FDMI_NO_ADDITIONAL_EXP 0x00
#define FDMI_HBA_ALREADY_REG 0x10
#define FDMI_HBA_ATTRIB_NOT_REG 0x11
#define FDMI_HBA_ATTRIB_MULTIPLE 0x12
#define FDMI_HBA_ATTRIB_LENGTH_INVALID 0x13
#define FDMI_HBA_ATTRIB_NOT_PRESENT 0x14
#define FDMI_PORT_ORIG_NOT_IN_LIST 0x15
#define FDMI_PORT_HBA_NOT_IN_LIST 0x16
#define FDMI_PORT_ATTRIB_NOT_REG 0x20
#define FDMI_PORT_NOT_REG 0x21
#define FDMI_PORT_ATTRIB_MULTIPLE 0x22
#define FDMI_PORT_ATTRIB_LENGTH_INVALID 0x23
#define FDMI_PORT_ALREADY_REGISTEREED 0x24
/*
* FDMI Transmission Speed Mask values
*/
#define FDMI_TRANS_SPEED_1G 0x00000001
#define FDMI_TRANS_SPEED_2G 0x00000002
#define FDMI_TRANS_SPEED_10G 0x00000004
#define FDMI_TRANS_SPEED_4G 0x00000008
#define FDMI_TRANS_SPEED_8G 0x00000010
#define FDMI_TRANS_SPEED_16G 0x00000020
#define FDMI_TRANS_SPEED_UNKNOWN 0x00008000
/*
* FDMI HBA attribute types
*/
enum fdmi_hba_attribute_type {
FDMI_HBA_ATTRIB_NODENAME = 1, /* 0x0001 */
FDMI_HBA_ATTRIB_MANUFACTURER, /* 0x0002 */
FDMI_HBA_ATTRIB_SERIALNUM, /* 0x0003 */
FDMI_HBA_ATTRIB_MODEL, /* 0x0004 */
FDMI_HBA_ATTRIB_MODEL_DESC, /* 0x0005 */
FDMI_HBA_ATTRIB_HW_VERSION, /* 0x0006 */
FDMI_HBA_ATTRIB_DRIVER_VERSION, /* 0x0007 */
FDMI_HBA_ATTRIB_ROM_VERSION, /* 0x0008 */
FDMI_HBA_ATTRIB_FW_VERSION, /* 0x0009 */
FDMI_HBA_ATTRIB_OS_NAME, /* 0x000A */
FDMI_HBA_ATTRIB_MAX_CT, /* 0x000B */
FDMI_HBA_ATTRIB_MAX_TYPE
};
/*
* FDMI Port attribute types
*/
enum fdmi_port_attribute_type {
FDMI_PORT_ATTRIB_FC4_TYPES = 1, /* 0x0001 */
FDMI_PORT_ATTRIB_SUPP_SPEED, /* 0x0002 */
FDMI_PORT_ATTRIB_PORT_SPEED, /* 0x0003 */
FDMI_PORT_ATTRIB_FRAME_SIZE, /* 0x0004 */
FDMI_PORT_ATTRIB_DEV_NAME, /* 0x0005 */
FDMI_PORT_ATTRIB_HOST_NAME, /* 0x0006 */
FDMI_PORT_ATTR_MAX_TYPE
};
/*
* FDMI attribute
*/
struct fdmi_attr_s {
u16 type;
u16 len;
u8 value[1];
};
/*
* HBA Attribute Block
*/
struct fdmi_hba_attr_s {
u32 attr_count; /* # of attributes */
struct fdmi_attr_s hba_attr; /* n attributes */
};
/*
* Registered Port List
*/
struct fdmi_port_list_s {
u32 num_ports; /* number Of Port Entries */
wwn_t port_entry; /* one or more */
};
/*
* Port Attribute Block
*/
struct fdmi_port_attr_s {
u32 attr_count; /* # of attributes */
struct fdmi_attr_s port_attr; /* n attributes */
};
/*
* FDMI Register HBA Attributes
*/
struct fdmi_rhba_s {
wwn_t hba_id; /* HBA Identifier */
struct fdmi_port_list_s port_list; /* Registered Port List */
struct fdmi_hba_attr_s hba_attr_blk; /* HBA attribute block */
};
/*
* FDMI Register Port
*/
struct fdmi_rprt_s {
wwn_t hba_id; /* HBA Identifier */
wwn_t port_name; /* Port wwn */
struct fdmi_port_attr_s port_attr_blk; /* Port Attr Block */
};
/*
* FDMI Register Port Attributes
*/
struct fdmi_rpa_s {
wwn_t port_name; /* port wwn */
struct fdmi_port_attr_s port_attr_blk; /* Port Attr Block */
};
#pragma pack()
#endif
|