Print this page
MFV: illumos-omnios@aea0472ecb9ee91fa70556d6f6a941c10c989f1d
Add support for Emulex Corporation Lancer Gen6: LPe32000 FC Host Adapter
Author: Andy Fiddaman <omnios@citrus-it.co.uk>
NEX-1878 update emlxs from source provided by Emulex
| Split |
Close |
| Expand all |
| Collapse all |
--- old/usr/src/uts/common/sys/fibre-channel/fca/emlxs/emlxs_fcf.h
+++ new/usr/src/uts/common/sys/fibre-channel/fca/emlxs/emlxs_fcf.h
1 1 /*
2 2 * CDDL HEADER START
3 3 *
4 4 * The contents of this file are subject to the terms of the
5 5 * Common Development and Distribution License (the "License").
6 6 * You may not use this file except in compliance with the License.
7 7 *
8 8 * You can obtain a copy of the license at
9 9 * http://www.opensource.org/licenses/cddl1.txt.
10 10 * See the License for the specific language governing permissions
11 11 * and limitations under the License.
12 12 *
13 13 * When distributing Covered Code, include this CDDL HEADER in each
14 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
|
↓ open down ↓ |
14 lines elided |
↑ open up ↑ |
15 15 * If applicable, add the following below this CDDL HEADER, with the
16 16 * fields enclosed by brackets "[]" replaced with your own identifying
17 17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 18 *
19 19 * CDDL HEADER END
20 20 */
21 21
22 22 /*
23 23 * Copyright (c) 2004-2012 Emulex. All rights reserved.
24 24 * Use is subject to license terms.
25 + * Copyright 2018 OmniOS Community Edition (OmniOSce) Association.
25 26 */
26 27
27 28 #ifndef _EMLXS_FCF_H
28 29 #define _EMLXS_FCF_H
29 30
30 31 #ifdef __cplusplus
31 32 extern "C" {
32 33 #endif
33 34
34 35 #define FCFTAB_MAX_FCFI_COUNT 1
35 36 #define FCFI_MAX_VFI_COUNT 1
36 37
37 38 /* Internal generic events */
38 39 #define FCF_EVENT_STATE_ENTER 0
39 40
40 41 /* External async fabric events */
41 42 #define FCF_EVENT_SHUTDOWN 1
42 43 #define FCF_EVENT_LINKUP 2
43 44 #define FCF_EVENT_LINKDOWN 3
44 45 #define FCF_EVENT_CVL 4
45 46 #define FCF_EVENT_FCFTAB_FULL 5
46 47 #define FCF_EVENT_FCF_FOUND 6
47 48 #define FCF_EVENT_FCF_LOST 7
48 49 #define FCF_EVENT_FCF_CHANGED 8
49 50
50 51 /* Internal async events */
51 52 #define FCF_EVENT_FCFTAB_ONLINE 9
52 53 #define FCF_EVENT_FCFTAB_OFFLINE 10
53 54
54 55 #define FCF_EVENT_FCFI_ONLINE 11
55 56 #define FCF_EVENT_FCFI_OFFLINE 12
56 57 #define FCF_EVENT_FCFI_PAUSE 13
57 58
58 59 #define FCF_EVENT_VFI_ONLINE 14
59 60 #define FCF_EVENT_VFI_OFFLINE 15
60 61 #define FCF_EVENT_VFI_PAUSE 16
61 62
62 63 #define FCF_EVENT_VPI_ONLINE 17
63 64 #define FCF_EVENT_VPI_OFFLINE 18
64 65 #define FCF_EVENT_VPI_PAUSE 19
65 66
66 67 #define FCF_EVENT_RPI_ONLINE 20
67 68 #define FCF_EVENT_RPI_OFFLINE 21
68 69 #define FCF_EVENT_RPI_PAUSE 22
69 70 #define FCF_EVENT_RPI_RESUME 23
70 71
71 72 /* State change reason codes */ /* explan */
72 73 #define FCF_REASON_NONE 0
73 74 #define FCF_REASON_REENTER 1
74 75 #define FCF_REASON_EVENT 2 /* evt */
75 76 #define FCF_REASON_REQUESTED 3
76 77 #define FCF_REASON_NO_MBOX 4
77 78 #define FCF_REASON_NO_BUFFER 5
78 79 #define FCF_REASON_SEND_FAILED 6 /* status */
79 80 #define FCF_REASON_MBOX_FAILED 7 /* status */
80 81 #define FCF_REASON_MBOX_BUSY 8 /* status */
81 82 #define FCF_REASON_NO_FCFI 9
82 83 #define FCF_REASON_NO_VFI 10
83 84 #define FCF_REASON_ONLINE_FAILED 11
84 85 #define FCF_REASON_OFFLINE_FAILED 12
85 86 #define FCF_REASON_OP_FAILED 13 /* attempts */
86 87 #define FCF_REASON_NO_PKT 14
87 88 #define FCF_REASON_NO_NODE 15
88 89 #define FCF_REASON_NOT_ALLOWED 16
89 90 #define FCF_REASON_UNUSED 17
90 91 #define FCF_REASON_INVALID 18
91 92
92 93 typedef struct XRIobj
|
↓ open down ↓ |
58 lines elided |
↑ open up ↑ |
93 94 {
94 95 struct XRIobj *_f;
95 96 struct XRIobj *_b;
96 97 uint16_t XRI;
97 98 uint16_t state;
98 99 #define XRI_STATE_FREE 0
99 100 #define XRI_STATE_ALLOCATED 1
100 101
101 102 uint16_t sge_count;
102 103 uint16_t iotag;
103 - MBUF_INFO SGList;
104 + MATCHMAP *SGList;
105 + uint32_t SGSeg;
104 106 struct RPIobj *rpip;
105 107 struct RPIobj *reserved_rpip;
106 108 emlxs_buf_t *sbp;
107 109 uint32_t rx_id; /* Used for unsol exchanges */
108 110 uint32_t flag;
109 111 #define EMLXS_XRI_RESERVED 0x00000001
110 112 #define EMLXS_XRI_PENDING_IO 0x00000002
111 113 #define EMLXS_XRI_BUSY 0x00000004
112 114
113 115 uint32_t type;
114 116 #define EMLXS_XRI_SOL_FCP_TYPE 1
115 117 #define EMLXS_XRI_UNSOL_FCP_TYPE 2
116 118 #define EMLXS_XRI_SOL_CT_TYPE 3
117 119 #define EMLXS_XRI_UNSOL_CT_TYPE 4
118 120 #define EMLXS_XRI_SOL_ELS_TYPE 5
119 121 #define EMLXS_XRI_UNSOL_ELS_TYPE 6
120 122 #define EMLXS_XRI_SOL_BLS_TYPE 7
121 123
122 124 } XRIobj_t;
123 125
124 126
125 127 typedef struct emlxs_deferred_cmpl
126 128 {
127 129 struct emlxs_port *port;
128 130 struct emlxs_node *node;
129 131
130 132 void *arg1;
131 133 void *arg2;
132 134 void *arg3;
133 135
134 136 } emlxs_deferred_cmpl_t;
135 137
136 138
137 139 #define FABRIC_RPI 0xffff
138 140
139 141 typedef struct RPIobj
140 142 {
141 143 uint16_t index;
142 144 uint16_t RPI;
143 145
144 146 uint16_t prev_reason;
145 147 uint16_t prev_state;
146 148
147 149 uint16_t reason;
148 150 uint16_t state;
149 151 #define RPI_STATE_FREE 0
150 152
151 153 #define RPI_STATE_RESERVED 1
152 154 #define RPI_STATE_OFFLINE 2
153 155
154 156 #define RPI_STATE_UNREG_CMPL 3
155 157 #define RPI_STATE_UNREG_FAILED 4
156 158 #define RPI_STATE_UNREG 5
157 159
158 160 #define RPI_STATE_REG 6
159 161 #define RPI_STATE_REG_FAILED 7
160 162 #define RPI_STATE_REG_CMPL 8
161 163
162 164 #define RPI_STATE_PAUSED 9
163 165
164 166 #define RPI_STATE_RESUME 10
165 167 #define RPI_STATE_RESUME_FAILED 11
166 168 #define RPI_STATE_RESUME_CMPL 12
167 169
168 170 #define RPI_STATE_ONLINE 13
169 171
170 172
171 173 uint32_t flag;
172 174 #define EMLXS_RPI_VPI 0x00000010 /* rpi_online set */
173 175 #define EMLXS_RPI_PAUSED 0x00000020 /* rpi_paused set */
174 176 #define EMLXS_RPI_REG 0x00000040
175 177
176 178 #define EMLXS_RPI_FIRST 0x80000000
177 179
178 180 uint32_t attempts;
179 181 uint32_t xri_count; /* Managed by XRIobj_t */
180 182
181 183 uint32_t idle_timer;
182 184
183 185 struct VPIobj *vpip;
184 186
185 187 /* Node info */
186 188 struct emlxs_node *node;
187 189 uint32_t did;
188 190 SERV_PARM sparam;
189 191
190 192 emlxs_deferred_cmpl_t *cmpl;
191 193
192 194 } RPIobj_t;
193 195
194 196
195 197 typedef struct VPIobj
196 198 {
197 199 uint16_t index;
198 200 uint16_t VPI;
199 201
200 202 uint16_t prev_reason;
201 203 uint16_t prev_state;
202 204
203 205 uint16_t reason;
204 206 uint16_t state;
205 207 #define VPI_STATE_OFFLINE 0
206 208
207 209 #define VPI_STATE_INIT 1
208 210 #define VPI_STATE_INIT_FAILED 2
209 211 #define VPI_STATE_INIT_CMPL 3
210 212
211 213 #define VPI_STATE_UNREG_CMPL 4
212 214 #define VPI_STATE_UNREG_FAILED 5
213 215 #define VPI_STATE_UNREG 6
214 216
215 217 #define VPI_STATE_LOGO_CMPL 7
216 218 #define VPI_STATE_LOGO_FAILED 8
217 219 #define VPI_STATE_LOGO 9
218 220
219 221 #define VPI_STATE_PORT_OFFLINE 10
220 222 #define VPI_STATE_PORT_ONLINE 11
221 223
222 224 #define VPI_STATE_LOGI 12
223 225 #define VPI_STATE_LOGI_FAILED 13
224 226 #define VPI_STATE_LOGI_CMPL 14
225 227
226 228 #define VPI_STATE_REG 15
227 229 #define VPI_STATE_REG_FAILED 16
228 230 #define VPI_STATE_REG_CMPL 17
229 231
230 232 #define VPI_STATE_PAUSED 18
231 233 #define VPI_STATE_ONLINE 19
232 234
233 235
234 236 uint32_t flag;
235 237 #define EMLXS_VPI_ONLINE_REQ 0x00000001
236 238 #define EMLXS_VPI_OFFLINE_REQ 0x00000002
237 239 #define EMLXS_VPI_PAUSE_REQ 0x00000004
238 240 #define EMLXS_VPI_REQ_MASK 0x0000000F
239 241
240 242 #define EMLXS_VPI_VFI 0x00000010 /* vpi_online set */
241 243 #define EMLXS_VPI_VFI_LOGI 0x00000020 /* logi_count set */
242 244 #define EMLXS_VPI_INIT 0x00000040
243 245 #define EMLXS_VPI_REG 0x00000080
244 246 #define EMLXS_VPI_PORT_ONLINE 0x00000100
245 247 #define EMLXS_VPI_LOGI 0x00000200
246 248 #define EMLXS_VPI_PORT_UNBIND 0x40000000
247 249 #define EMLXS_VPI_PORT_ENABLED 0x80000000
248 250
249 251 uint32_t attempts;
250 252
251 253 RPIobj_t fabric_rpi; /* Reserved Fabric RPI object */
252 254 RPIobj_t *fabric_rpip; /* Fabric RPI pointer (&fabric_rpi) */
253 255 RPIobj_t *p2p_rpip;
254 256
255 257 struct emlxs_port *port;
256 258
257 259 struct VFIobj *vfip; /* Managed by VFIobj_t */
258 260 uint32_t rpi_online; /* Managed by RPIobj_t */
259 261 uint32_t rpi_paused; /* Managed by RPIobj_t */
260 262
261 263 } VPIobj_t;
262 264
263 265
264 266 typedef struct VFIobj
265 267 {
266 268 uint16_t index;
267 269 uint16_t VFI;
268 270
269 271 uint16_t prev_reason;
270 272 uint16_t prev_state;
271 273
272 274 uint16_t reason;
273 275 uint16_t state;
274 276 #define VFI_STATE_OFFLINE 0
275 277
276 278 #define VFI_STATE_INIT 1
277 279 #define VFI_STATE_INIT_FAILED 2
278 280 #define VFI_STATE_INIT_CMPL 3
279 281
280 282 #define VFI_STATE_VPI_OFFLINE_CMPL 4
281 283 #define VFI_STATE_VPI_OFFLINE 5
282 284
283 285 #define VFI_STATE_VPI_ONLINE 6
284 286 #define VFI_STATE_VPI_ONLINE_CMPL 7
285 287
286 288 #define VFI_STATE_UNREG_CMPL 8
287 289 #define VFI_STATE_UNREG_FAILED 9
288 290 #define VFI_STATE_UNREG 10
289 291
290 292 #define VFI_STATE_REG 11
291 293 #define VFI_STATE_REG_FAILED 12
292 294 #define VFI_STATE_REG_CMPL 13
293 295
294 296 #define VFI_STATE_PAUSED 14
295 297 #define VFI_STATE_ONLINE 15
296 298
297 299 uint32_t flag;
298 300 #define EMLXS_VFI_ONLINE_REQ 0x00000001
299 301 #define EMLXS_VFI_OFFLINE_REQ 0x00000002
300 302 #define EMLXS_VFI_PAUSE_REQ 0x00000004
301 303 #define EMLXS_VFI_REQ_MASK 0x0000000F
302 304
303 305 #define EMLXS_VFI_FCFI 0x00000010 /* vfi_online set */
304 306 #define EMLXS_VFI_INIT 0x00000020
305 307 #define EMLXS_VFI_REG 0x00000040
306 308
307 309 SERV_PARM sparam; /* Last registered sparams */
308 310
309 311 uint32_t attempts;
310 312
311 313 struct FCFIobj *fcfp; /* Managed by FCFIobj_t */
312 314
313 315 uint32_t vpi_online; /* Managed by VPIobj_t */
314 316 uint32_t logi_count; /* Managed by VPIobj_t */
315 317 struct VPIobj *flogi_vpip; /* Managed by VPIobj_t */
316 318
317 319 } VFIobj_t;
318 320
319 321
320 322 typedef struct FCFIobj
321 323 {
322 324 uint16_t index;
323 325 uint16_t FCFI;
324 326
325 327 uint16_t fcf_index;
326 328 uint16_t vlan_id;
327 329
328 330 uint16_t prev_reason;
329 331 uint16_t prev_state;
330 332
331 333 uint16_t reason;
332 334 uint16_t state;
333 335 #define FCFI_STATE_FREE 0
334 336
335 337 #define FCFI_STATE_OFFLINE 1
336 338
337 339 #define FCFI_STATE_UNREG_CMPL 2
338 340 #define FCFI_STATE_UNREG_FAILED 3
339 341 #define FCFI_STATE_UNREG 4
340 342
341 343 #define FCFI_STATE_REG 5
342 344 #define FCFI_STATE_REG_FAILED 6
343 345 #define FCFI_STATE_REG_CMPL 7
344 346
345 347 #define FCFI_STATE_VFI_OFFLINE_CMPL 8
346 348 #define FCFI_STATE_VFI_OFFLINE 9
347 349
348 350 #define FCFI_STATE_VFI_ONLINE 10
349 351 #define FCFI_STATE_VFI_ONLINE_CMPL 11
350 352
351 353 #define FCFI_STATE_PAUSED 12
352 354 #define FCFI_STATE_ONLINE 13
353 355
354 356
355 357 uint16_t pad;
356 358 uint16_t generation;
357 359
358 360 uint32_t offline_timer;
359 361 uint32_t attempts;
360 362
361 363 uint32_t event_tag;
362 364 uint32_t flag;
363 365 #define EMLXS_FCFI_ONLINE_REQ 0x00000001
364 366 #define EMLXS_FCFI_OFFLINE_REQ 0x00000002
365 367 #define EMLXS_FCFI_PAUSE_REQ 0x00000004
366 368 #define EMLXS_FCFI_REQ_MASK 0x0000000F
367 369
368 370 #define EMLXS_FCFI_FCFTAB 0x00000010 /* fcfi_online set */
369 371 #define EMLXS_FCFI_REG 0x00000020
370 372
371 373 #define EMLXS_FCFI_VALID 0x00000100
372 374 #define EMLXS_FCFI_AVAILABLE 0x00000200
373 375 #define EMLXS_FCFI_CONFIGURED 0x00000400
374 376 #define EMLXS_FCFI_FRESH 0x00000800
375 377 #define EMLXS_FCFI_FAILED 0x00001000
376 378 #define EMLXS_FCFI_SELECTED 0x00002000 /* in use */
377 379
378 380 #define EMLXS_FCFI_VLAN_ID 0x00010000
379 381 #define EMLXS_FCFI_BOOT 0x00020000
380 382 #define EMLXS_FCFI_PRIMARY 0x00040000
381 383
382 384 #define EMLXS_FCFI_TAGGED 0x80000000
383 385
384 386 /* struct VFTable vftab */
385 387
386 388 FCF_RECORD_t fcf_rec;
387 389 uint32_t priority;
388 390
389 391 uint32_t vfi_online; /* Managed by VFIobj_t */
390 392
391 393 } FCFIobj_t;
392 394
393 395
394 396 typedef struct VFTable
395 397 {
396 398 uint16_t prev_reason;
397 399 uint16_t prev_state;
398 400
399 401 uint16_t reason;
400 402 uint16_t state;
401 403 #define VFTAB_STATE_DISABLED 0
402 404
403 405 uint32_t vfi_active;
404 406 uint32_t vfi_count;
405 407 VFIobj_t *table;
406 408
407 409 } VFTable_t;
408 410
409 411 typedef struct FCFTable
410 412 {
411 413
412 414 uint16_t prev_reason;
413 415 uint16_t prev_state;
414 416
415 417 uint16_t reason;
416 418 uint16_t state;
417 419 /* Common states */
418 420 #define FCFTAB_STATE_SHUTDOWN 0
419 421 #define FCFTAB_STATE_OFFLINE 1
420 422
421 423 /* FCOE states */
422 424 #define FCOE_FCFTAB_STATE_SHUTDOWN FCFTAB_STATE_SHUTDOWN
423 425 #define FCOE_FCFTAB_STATE_OFFLINE FCFTAB_STATE_OFFLINE
424 426
425 427 #define FCOE_FCFTAB_STATE_SOLICIT 2
426 428 #define FCOE_FCFTAB_STATE_SOLICIT_FAILED 3
427 429 #define FCOE_FCFTAB_STATE_SOLICIT_CMPL 4
428 430
429 431 #define FCOE_FCFTAB_STATE_READ 5
430 432 #define FCOE_FCFTAB_STATE_READ_FAILED 6
431 433 #define FCOE_FCFTAB_STATE_READ_CMPL 7
432 434
433 435 #define FCOE_FCFTAB_STATE_FCFI_OFFLINE_CMPL 8
434 436 #define FCOE_FCFTAB_STATE_FCFI_OFFLINE 9
435 437
436 438 #define FCOE_FCFTAB_STATE_FCFI_ONLINE 10
437 439 #define FCOE_FCFTAB_STATE_FCFI_ONLINE_CMPL 11
438 440
439 441 #define FCOE_FCFTAB_STATE_ONLINE 12
440 442
441 443
442 444 /* FC states */
443 445 #define FC_FCFTAB_STATE_SHUTDOWN FCFTAB_STATE_SHUTDOWN
444 446 #define FC_FCFTAB_STATE_OFFLINE FCFTAB_STATE_OFFLINE
445 447
446 448 #define FC_FCFTAB_STATE_TOPO 2
447 449 #define FC_FCFTAB_STATE_TOPO_FAILED 3
448 450 #define FC_FCFTAB_STATE_TOPO_CMPL 4
449 451
450 452 #define FC_FCFTAB_STATE_CFGLINK 5
451 453 #define FC_FCFTAB_STATE_CFGLINK_FAILED 6
452 454 #define FC_FCFTAB_STATE_CFGLINK_CMPL 7
453 455
454 456 #define FC_FCFTAB_STATE_SPARM 8
455 457 #define FC_FCFTAB_STATE_SPARM_FAILED 9
456 458 #define FC_FCFTAB_STATE_SPARM_CMPL 10
457 459
458 460 #define FC_FCFTAB_STATE_FCFI_OFFLINE_CMPL 11
459 461 #define FC_FCFTAB_STATE_FCFI_OFFLINE 12
460 462
461 463 #define FC_FCFTAB_STATE_FCFI_ONLINE 13
462 464 #define FC_FCFTAB_STATE_FCFI_ONLINE_CMPL 14
463 465
464 466 #define FC_FCFTAB_STATE_ONLINE 15
465 467
466 468
467 469 uint16_t TID;
468 470 uint16_t generation;
469 471
470 472 uint32_t flag;
471 473 /* Common flags */
472 474 #define EMLXS_FCFTAB_REQ_MASK 0x0000000F
473 475 #define EMLXS_FCFTAB_SHUTDOWN 0x80000000
474 476
475 477 /* FCOE flags */
476 478 #define EMLXS_FCOE_FCFTAB_SOL_REQ 0x00000001
477 479 #define EMLXS_FCOE_FCFTAB_READ_REQ 0x00000002
478 480 #define EMLXS_FCOE_FCFTAB_OFFLINE_REQ 0x00000004
479 481
480 482 /* FC flags */
481 483 #define EMLXS_FC_FCFTAB_TOPO_REQ 0x00000001
482 484 #define EMLXS_FC_FCFTAB_CFGLINK_REQ 0x00000002
483 485 #define EMLXS_FC_FCFTAB_SPARM_REQ 0x00000004
484 486 #define EMLXS_FC_FCFTAB_OFFLINE_REQ 0x00000008
485 487
486 488 uint32_t attempts;
487 489
488 490 uint32_t fcfi_online; /* Managed by FCFIobj_t */
489 491
490 492 FCFIobj_t *fcfi[FCFTAB_MAX_FCFI_COUNT];
491 493 uint32_t fcfi_count;
492 494
493 495 FCFIobj_t *table;
494 496 uint16_t table_count;
495 497
496 498 uint32_t online_timer; /* FC */
497 499
498 500 uint32_t sol_timer; /* FCOE */
499 501 uint32_t read_timer; /* FCOE */
500 502
501 503 } FCFTable_t;
502 504 #define FCFTAB_READ_ALL (void*)0xffff
503 505
504 506 #ifdef __cplusplus
505 507 }
506 508 #endif
507 509
508 510 #endif /* _EMLXS_FCF_H */
|
↓ open down ↓ |
395 lines elided |
↑ open up ↑ |
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX