blob: 93e6128ccc07adcedcb4fa000219718cc6eb04b4 (
plain)
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
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
|
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _FCTIO_H
#define _FCTIO_H
#ifdef __cplusplus
extern "C" {
#endif
#define FCT_IOCTL (((uint32_t)'F') << 24)
#define FCTIO_CMD (FCT_IOCTL | 2007)
#define FCTIO_SUB_CMD ('Z' << 8)
#define FCTIO_ADAPTER_LIST (FCTIO_SUB_CMD + 0x01)
#define FCTIO_GET_ADAPTER_ATTRIBUTES (FCTIO_SUB_CMD + 0x02)
#define FCTIO_GET_ADAPTER_PORT_ATTRIBUTES (FCTIO_SUB_CMD + 0x03)
#define FCTIO_GET_DISCOVERED_PORT_ATTRIBUTES (FCTIO_SUB_CMD + 0x04)
#define FCTIO_GET_PORT_ATTRIBUTES (FCTIO_SUB_CMD + 0x05)
#define FCTIO_GET_ADAPTER_PORT_STATS (FCTIO_SUB_CMD + 0x06)
#define FCTIO_GET_LINK_STATUS (FCTIO_SUB_CMD + 0x07)
#define FCTIO_FORCE_LIP (FCTIO_SUB_CMD + 0x08)
/*
* fcio_xfer definitions
*/
#define FCTIO_XFER_NONE 0x00
#define FCTIO_XFER_READ 0x01
#define FCTIO_XFER_WRITE 0x02
#define FCTIO_XFER_RW (FCTIO_XFER_READ | FCTIO_XFER_WRITE)
typedef struct fctio {
uint16_t fctio_xfer; /* direction */
uint16_t fctio_cmd; /* sub command */
uint16_t fctio_flags; /* flags */
uint16_t fctio_cmd_flags; /* command specific flags */
uint32_t fctio_ilen; /* Input buffer length */
uint32_t fctio_olen; /* Output buffer length */
uint32_t fctio_alen; /* Auxillary buffer length */
uint32_t fctio_errno; /* FC internal error code */
uint64_t fctio_ibuf; /* Input buffer */
uint64_t fctio_obuf; /* Output buffer */
uint64_t fctio_abuf; /* Auxillary buffer */
} fctio_t;
#define FCT_HBA_LIST_VERSION 1
typedef struct fc_tgt_hba_list {
uint32_t version;
uint32_t numPorts;
uint8_t port_wwn[1][8];
} fc_tgt_hba_list_t;
#define FCT_HBA_ADAPTER_ATTRIBUTES_VERSION 1
typedef struct fc_tgt_hba_adapter_attributes {
uint32_t version; /* Set to FC_HBA_ADAPTER_ATTRIBUTES_VERSION */
uint32_t reserved_1;
char Manufacturer[64];
char SerialNumber[64];
char Model[256];
char ModelDescription[256];
uint8_t NodeWWN[8];
char NodeSymbolicName[256];
char HardwareVersion[256];
char DriverVersion[256];
char OptionROMVersion[256];
char FirmwareVersion[256];
uint32_t VendorSpecificID;
uint32_t NumberOfPorts;
char DriverName[256];
uint64_t reserved_2;
} fc_tgt_hba_adapter_attributes_t;
#define FCT_HBA_PORT_ATTRIBUTES_VERSION 1
typedef struct fc_tgt_hba_port_attributes {
uint32_t version; /* FC_HBA_PORT_ATTRIBUTES_VERSION */
uint32_t reserved_1;
uint64_t lastChange;
uint8_t NodeWWN[8];
uint8_t PortWWN[8];
uint32_t PortFcId;
uint32_t PortType;
uint32_t PortState;
uint32_t PortSupportedClassofService;
uint8_t PortSupportedFc4Types[32];
uint8_t PortActiveFc4Types[32];
char PortSymbolicName[256];
uint32_t PortSupportedSpeed;
uint32_t PortSpeed;
uint32_t PortMaxFrameSize;
uint32_t NumberofDiscoveredPorts;
uint8_t FabricName[8];
uint64_t reserved_2;
} fc_tgt_hba_port_attributes_t;
#define FCT_HBA_ADAPTER_PORT_STATS_VERSION 1
typedef struct fc_tgt_hba_adapter_port_stats {
uint32_t version; /* FC_HBA_ADAPTER_PORT_STATS_VERSION */
uint32_t reserved_1;
uint64_t SecondsSinceLastReset;
uint64_t TxFrames;
uint64_t TxWords;
uint64_t RxFrames;
uint64_t RxWords;
uint64_t LIPCount;
uint64_t NOSCount;
uint64_t ErrorFrames;
uint64_t DumpedFrames;
uint64_t LinkFailureCount;
uint64_t LossOfSyncCount;
uint64_t LossOfSignalCount;
uint64_t PrimitiveSeqProtocolErrCount;
uint64_t InvalidTxWordCount;
uint64_t InvalidCRCCount;
uint64_t reserved_2;
} fc_tgt_hba_adapter_port_stats_t;
/*
* Constant values derived from T11 FC-HBA
*/
#define FC_HBA_PORTTYPE_UNKNOWN 1 /* Unknown */
#define FC_HBA_PORTTYPE_OTHER 2 /* Other */
#define FC_HBA_PORTTYPE_NOTPRESENT 3 /* Not present */
#define FC_HBA_PORTTYPE_NPORT 5 /* Fabric */
#define FC_HBA_PORTTYPE_NLPORT 6 /* Public Loop */
#define FC_HBA_PORTTYPE_FLPORT 7
#define FC_HBA_PORTTYPE_FPORT 8 /* Fabric Port */
#define FC_HBA_PORTTYPE_EPORT 9 /* Fabric expansion port */
#define FC_HBA_PORTTYPE_GPORT 10 /* Generic Fabric Port */
#define FC_HBA_PORTTYPE_LPORT 20 /* Private Loop */
#define FC_HBA_PORTTYPE_PTP 21 /* Point to Point */
#define FC_HBA_PORTSTATE_UNKNOWN 1 /* Unknown */
#define FC_HBA_PORTSTATE_ONLINE 2 /* Operational */
#define FC_HBA_PORTSTATE_OFFLINE 3 /* User Offline */
#define FC_HBA_PORTSTATE_BYPASSED 4 /* Bypassed */
#define FC_HBA_PORTSTATE_DIAGNOSTICS 5 /* In diagnostics mode */
#define FC_HBA_PORTSTATE_LINKDOWN 6 /* Link Down */
#define FC_HBA_PORTSTATE_ERROR 7 /* Port Error */
#define FC_HBA_PORTSTATE_LOOPBACK 8 /* Loopback */
/*
* HBA/Port attributes tracked for the T11 FC-HBA specification
*/
#define FC_HBA_PORTSPEED_UNKNOWN 0 /* Unknown - transceiver */
/* incable of reporting */
#define FC_HBA_PORTSPEED_1GBIT 1 /* 1 GBit/sec */
#define FC_HBA_PORTSPEED_2GBIT 2 /* 2 GBit/sec */
#define FC_HBA_PORTSPEED_10GBIT 4 /* 10 GBit/sec */
#define FC_HBA_PORTSPEED_4GBIT 8 /* 4 GBit/sec */
#define FC_HBA_PORTSPEED_8GBIT 16 /* 8 GBit/sec */
#define FC_HBA_PORTSPEED_16GBIT 32 /* 16 GBit/sec */
#define FC_HBA_PORTSPEED_NOT_NEGOTIATED (1<<15) /* Speed not established */
#define FCTIO_SUCCESS 0
#define FCTIO_FAILURE 1
#define FCTIO_BADWWN 2
#define FCTIO_MOREDATA 3
#define FCTIO_OUTOFBOUNDS 4
/* Sysevent defs */
#define EC_SUNFC "EC_sunfc"
#define ESC_SUNFC_PORT_ATTACH "ESC_sunfc_port_attach"
#define ESC_SUNFC_PORT_DETACH "ESC_sunfc_port_detach"
#define ESC_SUNFC_PORT_ONLINE "ESC_sunfc_port_online"
#define ESC_SUNFC_PORT_OFFLINE "ESC_sunfc_port_offline"
#define ESC_SUNFC_PORT_RSCN "ESC_sunfc_port_rscn"
#define ESC_SUNFC_TARGET_ADD "ESC_sunfc_target_add"
#define ESC_SUNFC_TARGET_REMOVE "ESC_sunfc_target_remove"
#ifdef __cplusplus
}
#endif
#endif /* _FCTIO_H */
|