blob: 79db9f12934cb59cc7a9af7450945f51c9f8587d (
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
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
|
/*
* 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 _FCT_DEFINES_H
#define _FCT_DEFINES_H
#ifdef __cplusplus
extern "C" {
#endif
typedef stmf_status_t fct_status_t;
/*
* Error codes
*/
#define FCT_SUCCESS STMF_SUCCESS
#define FCT_FAILURE STMF_TARGET_FAILURE
#define FCT_FCA_FAILURE (FCT_FAILURE | (uint64_t)0x0100000000000000)
#define FCT_BUSY STMF_BUSY
#define FCT_ABORT_SUCCESS STMF_ABORT_SUCCESS
#define FCT_ABORTED STMF_ABORTED
#define FCT_NOT_FOUND STMF_NOT_FOUND
#define FCT_TIMEOUT STMF_TIMEOUT
#define FCT_WORKER_STUCK (FCT_FAILURE | STMF_FSC(1))
#define FCT_ALLOC_FAILURE (FCT_FAILURE | STMF_FSC(2))
#define FCT_LOCAL_PORT_OFFLINE (FCT_FAILURE | STMF_FSC(3))
#define FCT_NO_XCHG_RESOURCE (FCT_FAILURE | STMF_FSC(4))
#define FCT_NOT_LOGGED_IN (FCT_FAILURE | STMF_FSC(5))
#define FCT_ABTS_RECEIVED (FCT_FAILURE | STMF_FSC(6))
#define FCT_RPORT_SENT_REJECT (FCT_FAILURE | STMF_FSC(7))
#define FCT_REJECT_STATUS(reason, expln) \
(FCT_RPORT_SENT_REJECT | (((uint64_t)(reason)) << 8) | \
((uint64_t)(expln)))
/*
* Event codes
*/
#define FCT_EVENT_LINK_UP 0x01
#define FCT_EVENT_LINK_DOWN 0x02
#define FCT_EVENT_LINK_RESET 0x03
#define FCT_EVENT_ADAPTER_FATAL 0x04
/*
* ELS OP codes
*/
#define ELS_OP_LSRJT 0x01
#define ELS_OP_ACC 0x02
#define ELS_OP_PLOGI 0x03
#define ELS_OP_FLOGI 0x04
#define ELS_OP_LOGO 0x05
#define ELS_OP_ABTX 0x06
#define ELS_OP_RLS 0x0f
#define ELS_OP_ECHO 0x10
#define ELS_OP_REC 0x13
#define ELS_OP_SRR 0x14
#define ELS_OP_PRLI 0x20
#define ELS_OP_PRLO 0x21
#define ELS_OP_SCN 0x22
#define ELS_OP_TPRLO 0x24
#define ELS_OP_PDISC 0x50
#define ELS_OP_ADISC 0x52
#define ELS_OP_RSCN 0x61
#define ELS_OP_SCR 0x62
#define ELS_OP_RNID 0x78
/*
* BLS replies
*/
#define BLS_OP_BA_ACC 0x84
#define BLS_OP_BA_RJT 0x85
/*
* Name Service Command Codes
*/
#define NS_GA_NXT 0x0100 /* Get All next */
#define NS_GPN_ID 0x0112 /* Get Port Name */
#define NS_GNN_ID 0x0113 /* Get Node Name */
#define NS_GCS_ID 0x0114 /* Get Class Of service */
#define NS_GFT_ID 0x0117 /* Get FC-4 Types */
#define NS_GSPN_ID 0x0118 /* Get Sym Port name */
#define NS_GPT_ID 0x011A /* Get Port Type */
#define NS_GID_PN 0x0121 /* Get port id for PN */
#define NS_GID_NN 0x0131 /* Get port id for NN */
#define NS_GIP_NN 0x0135 /* Get IP address */
#define NS_GIPA_NN 0x0136 /* Get I.P.A */
#define NS_GSNN_NN 0x0139 /* Get Sym Node name */
#define NS_GNN_IP 0x0153 /* Get Node name for IP */
#define NS_GIPA_IP 0x0156 /* Get I.P.A for IP */
#define NS_GID_FT 0x0171 /* Get port Id for FC-4 type */
#define NS_GID_PT 0x01A1 /* Get port Id for type */
#define NS_RPN_ID 0x0212 /* Reg port name */
#define NS_RNN_ID 0x0213 /* Reg node name */
#define NS_RCS_ID 0x0214 /* Reg C.O.S */
#define NS_RFT_ID 0x0217 /* Reg FC-4 Types */
#define NS_RSPN_ID 0x0218 /* Reg Sym Port name */
#define NS_RPT_ID 0x021A /* Reg Port Type */
#define NS_RIP_NN 0x0235 /* Reg I.P address */
#define NS_RIPA_NN 0x0236 /* Reg I.P.A */
#define NS_RSNN_NN 0x0239 /* Reg Sym Node name */
#define NS_DA_ID 0x0300 /* De-Register all */
#define CT_OP_RJT 0x8001
#define CT_OP_ACC 0x8002
/*
* PRLI bits
*/
#define PRLI_BIT_WRITE_XRDY_DISABLED 0x00000001
#define PRLI_BIT_READ_XRDY_DISABLED 0x00000002
#define PRLI_BIT_TARGET_FUNCTION 0x00000010
#define PRLI_BIT_INITIATOR_FUNCTION 0x00000020
#define PRLI_BIT_DATA_OVERLAY_ALLOWED 0x00000040
#define PRLI_BIT_FCP_CONF_ALLOWED 0x00000080
#define PRLI_BIT_RETRY 0x00000100
#define PRLI_BIT_TASK_RETRY_IDENT_REQUESTED 0x00000200
#define PRLI_BIT_REC_SUPPORT 0x00000400
#define FC_NS_CLASSF 0x01
#define FC_NS_CLASS1 0x02
#define FC_NS_CLASS2 0x04
#define FC_NS_CLASS3 0x08
#define FC_NS_CLASS4 0x10
#define FC_NS_CLASS5 0x20
#define FC_NS_CLASS6 0x40
/*
* SCR function code
*/
#define FC_SCR_FABRIC_REGISTRATION 0x01
#define FC_SCR_NPORT_REGISTRATION 0x02
#define FC_SCR_FULL_REGISTRATION 0x03
#define FC_SCR_CLEAR_REGISTRATION 0xFF
/*
* FCP_CNTL bits
*/
#define FCP_CNTL_TASK_ATTR(fcp_cntl) ((((uint32_t)(fcp_cntl)) >> 16) & 7)
#define TASK_ATTR_SIMPLE_Q 0
#define TASK_ATTR_HEAD_OF_Q 1
#define TASK_ATTR_ORDERED_Q 2
#define TASK_ATTR_ACA_Q 4
#define TASK_ATTR_UNTAGGED 5
#define FCP_CNTL_IS_TASK_MGMT(fcp_cntl) (((uint32_t)(fcp_cntl)) & 0xff00)
#define FCP_CNTL_TERMINATE_TASK 0x8000
#define FCP_CNTL_CLEAR_ACA 0x4000
#define FCP_CNTL_TARGET_RESET 0x2000
#define FCP_CNTL_LUN_RESET 0x1000
#define FCP_CNTL_CLEAR_TASK_SET 0x0400
#define FCP_CNTL_ABORT_TASK_SET 0x0200
#define FCP_CNTL_READ_DATA 0x2
#define FCP_CNTL_WRITE_DATA 0x1
/*
* SCSI STATUS BITS
*/
#define FCP_BIDI_RESP 0x8000
#define FCP_BIDI_UNDER 0x4000
#define FCP_BIDI_OVER 0x2000
#define FCP_CONF_REQ 0x1000
#define FCP_RESID_UNDER 0x0800
#define FCP_RESID_OVER 0x0400
#define FCP_SNS_LEN_VALID 0x0200
#define FCP_RESP_LEN_VALID 0x0100
/*
* Well known addresses ...
*/
#define NPORT_ID_DOM_CTLR_START 0xFFFC01
#define NPORT_ID_DOM_CTLR_END 0xFFFCFE
#define FS_GENERAL_MULTICAST 0xFFFFF7
#define FS_WELL_KNOWN_MULTICAST 0xFFFFF8
#define FS_HUNT_GROUP 0xFFFFF9
#define FS_MANAGEMENT_SERVER 0xFFFFFA
#define FS_TIME_SERVER 0xFFFFFB
#define FS_NAME_SERVER 0xFFFFFC
#define FS_FABRIC_CONTROLLER 0xFFFFFD
#define FS_FABRIC_F_PORT 0xFFFFFE
#define FS_BROADCAST 0xFFFFFF
#define FC_WELL_KNOWN_START 0xFFFFF0
#define FC_WELL_KNOWN_END 0xFFFFFF
#define FC_WELL_KNOWN_ADDR(x) \
((((x) >= FC_WELL_KNOWN_START) && ((x) <= FC_WELL_KNOWN_END)) ||\
(((x) >= NPORT_ID_DOM_CTLR_START) && ((x) <= NPORT_ID_DOM_CTLR_END)))
#define FC_WWN_LEN 8
/*
* NB: FC_WWN_BUFLEN should be 64-bit aligned (divisible by 8).
*/
#define FC_WWN_BUFLEN (FC_WWN_LEN * 3)
#define FC_WWN_STRLEN (FC_WWN_BUFLEN - 1) /* add trailing null */
struct fct_cmd;
struct fct_local_port;
struct fct_els;
struct fct_link_info;
struct fct_flogi_xchg;
struct fct_dbuf_store;
#ifdef __cplusplus
}
#endif
#endif /* _FCT_DEFINES_H */
|