1a9800bebSGarrett D'Amore /* 2a9800bebSGarrett D'Amore * CDDL HEADER START 3a9800bebSGarrett D'Amore * 4a9800bebSGarrett D'Amore * The contents of this file are subject to the terms of the 5a9800bebSGarrett D'Amore * Common Development and Distribution License (the "License"). 6a9800bebSGarrett D'Amore * You may not use this file except in compliance with the License. 7a9800bebSGarrett D'Amore * 88f23e9faSHans Rosenfeld * You can obtain a copy of the license at 98f23e9faSHans Rosenfeld * http://www.opensource.org/licenses/cddl1.txt. 10a9800bebSGarrett D'Amore * See the License for the specific language governing permissions 11a9800bebSGarrett D'Amore * and limitations under the License. 12a9800bebSGarrett D'Amore * 13a9800bebSGarrett D'Amore * When distributing Covered Code, include this CDDL HEADER in each 14a9800bebSGarrett D'Amore * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15a9800bebSGarrett D'Amore * If applicable, add the following below this CDDL HEADER, with the 16a9800bebSGarrett D'Amore * fields enclosed by brackets "[]" replaced with your own identifying 17a9800bebSGarrett D'Amore * information: Portions Copyright [yyyy] [name of copyright owner] 18a9800bebSGarrett D'Amore * 19a9800bebSGarrett D'Amore * CDDL HEADER END 20a9800bebSGarrett D'Amore */ 21a9800bebSGarrett D'Amore 22a9800bebSGarrett D'Amore /* 238f23e9faSHans Rosenfeld * Copyright (c) 2004-2012 Emulex. All rights reserved. 24a9800bebSGarrett D'Amore * Use is subject to license terms. 25*a3170057SPaul Winder * Copyright 2018 OmniOS Community Edition (OmniOSce) Association. 26a9800bebSGarrett D'Amore */ 27a9800bebSGarrett D'Amore 28a9800bebSGarrett D'Amore #ifndef _EMLXS_FCF_H 29a9800bebSGarrett D'Amore #define _EMLXS_FCF_H 30a9800bebSGarrett D'Amore 31a9800bebSGarrett D'Amore #ifdef __cplusplus 32a9800bebSGarrett D'Amore extern "C" { 33a9800bebSGarrett D'Amore #endif 34a9800bebSGarrett D'Amore 35a9800bebSGarrett D'Amore #define FCFTAB_MAX_FCFI_COUNT 1 36a9800bebSGarrett D'Amore #define FCFI_MAX_VFI_COUNT 1 37a9800bebSGarrett D'Amore 38a9800bebSGarrett D'Amore /* Internal generic events */ 39a9800bebSGarrett D'Amore #define FCF_EVENT_STATE_ENTER 0 40a9800bebSGarrett D'Amore 41a9800bebSGarrett D'Amore /* External async fabric events */ 42a9800bebSGarrett D'Amore #define FCF_EVENT_SHUTDOWN 1 43a9800bebSGarrett D'Amore #define FCF_EVENT_LINKUP 2 44a9800bebSGarrett D'Amore #define FCF_EVENT_LINKDOWN 3 45a9800bebSGarrett D'Amore #define FCF_EVENT_CVL 4 46a9800bebSGarrett D'Amore #define FCF_EVENT_FCFTAB_FULL 5 47a9800bebSGarrett D'Amore #define FCF_EVENT_FCF_FOUND 6 48a9800bebSGarrett D'Amore #define FCF_EVENT_FCF_LOST 7 49a9800bebSGarrett D'Amore #define FCF_EVENT_FCF_CHANGED 8 50a9800bebSGarrett D'Amore 51a9800bebSGarrett D'Amore /* Internal async events */ 528f23e9faSHans Rosenfeld #define FCF_EVENT_FCFTAB_ONLINE 9 538f23e9faSHans Rosenfeld #define FCF_EVENT_FCFTAB_OFFLINE 10 54a9800bebSGarrett D'Amore 558f23e9faSHans Rosenfeld #define FCF_EVENT_FCFI_ONLINE 11 568f23e9faSHans Rosenfeld #define FCF_EVENT_FCFI_OFFLINE 12 578f23e9faSHans Rosenfeld #define FCF_EVENT_FCFI_PAUSE 13 58a9800bebSGarrett D'Amore 598f23e9faSHans Rosenfeld #define FCF_EVENT_VFI_ONLINE 14 608f23e9faSHans Rosenfeld #define FCF_EVENT_VFI_OFFLINE 15 618f23e9faSHans Rosenfeld #define FCF_EVENT_VFI_PAUSE 16 62a9800bebSGarrett D'Amore 638f23e9faSHans Rosenfeld #define FCF_EVENT_VPI_ONLINE 17 648f23e9faSHans Rosenfeld #define FCF_EVENT_VPI_OFFLINE 18 658f23e9faSHans Rosenfeld #define FCF_EVENT_VPI_PAUSE 19 668f23e9faSHans Rosenfeld 678f23e9faSHans Rosenfeld #define FCF_EVENT_RPI_ONLINE 20 688f23e9faSHans Rosenfeld #define FCF_EVENT_RPI_OFFLINE 21 698f23e9faSHans Rosenfeld #define FCF_EVENT_RPI_PAUSE 22 708f23e9faSHans Rosenfeld #define FCF_EVENT_RPI_RESUME 23 71a9800bebSGarrett D'Amore 72a9800bebSGarrett D'Amore /* State change reason codes */ /* explan */ 73a9800bebSGarrett D'Amore #define FCF_REASON_NONE 0 74a9800bebSGarrett D'Amore #define FCF_REASON_REENTER 1 75a9800bebSGarrett D'Amore #define FCF_REASON_EVENT 2 /* evt */ 76a9800bebSGarrett D'Amore #define FCF_REASON_REQUESTED 3 77a9800bebSGarrett D'Amore #define FCF_REASON_NO_MBOX 4 78a9800bebSGarrett D'Amore #define FCF_REASON_NO_BUFFER 5 79a9800bebSGarrett D'Amore #define FCF_REASON_SEND_FAILED 6 /* status */ 80a9800bebSGarrett D'Amore #define FCF_REASON_MBOX_FAILED 7 /* status */ 818f23e9faSHans Rosenfeld #define FCF_REASON_MBOX_BUSY 8 /* status */ 828f23e9faSHans Rosenfeld #define FCF_REASON_NO_FCFI 9 838f23e9faSHans Rosenfeld #define FCF_REASON_NO_VFI 10 848f23e9faSHans Rosenfeld #define FCF_REASON_ONLINE_FAILED 11 858f23e9faSHans Rosenfeld #define FCF_REASON_OFFLINE_FAILED 12 868f23e9faSHans Rosenfeld #define FCF_REASON_OP_FAILED 13 /* attempts */ 878f23e9faSHans Rosenfeld #define FCF_REASON_NO_PKT 14 888f23e9faSHans Rosenfeld #define FCF_REASON_NO_NODE 15 898f23e9faSHans Rosenfeld #define FCF_REASON_NOT_ALLOWED 16 908f23e9faSHans Rosenfeld #define FCF_REASON_UNUSED 17 918f23e9faSHans Rosenfeld #define FCF_REASON_INVALID 18 92a9800bebSGarrett D'Amore 93a9800bebSGarrett D'Amore typedef struct XRIobj 94a9800bebSGarrett D'Amore { 95a9800bebSGarrett D'Amore struct XRIobj *_f; 96a9800bebSGarrett D'Amore struct XRIobj *_b; 97a9800bebSGarrett D'Amore uint16_t XRI; 98a9800bebSGarrett D'Amore uint16_t state; 99a9800bebSGarrett D'Amore #define XRI_STATE_FREE 0 100a9800bebSGarrett D'Amore #define XRI_STATE_ALLOCATED 1 101a9800bebSGarrett D'Amore 102a9800bebSGarrett D'Amore uint16_t sge_count; 103a9800bebSGarrett D'Amore uint16_t iotag; 104*a3170057SPaul Winder MATCHMAP *SGList; 105*a3170057SPaul Winder uint32_t SGSeg; 106a9800bebSGarrett D'Amore struct RPIobj *rpip; 1078f23e9faSHans Rosenfeld struct RPIobj *reserved_rpip; 108a9800bebSGarrett D'Amore emlxs_buf_t *sbp; 109a9800bebSGarrett D'Amore uint32_t rx_id; /* Used for unsol exchanges */ 110a9800bebSGarrett D'Amore uint32_t flag; 111a9800bebSGarrett D'Amore #define EMLXS_XRI_RESERVED 0x00000001 112a9800bebSGarrett D'Amore #define EMLXS_XRI_PENDING_IO 0x00000002 1138f23e9faSHans Rosenfeld #define EMLXS_XRI_BUSY 0x00000004 1148f23e9faSHans Rosenfeld 1158f23e9faSHans Rosenfeld uint32_t type; 1168f23e9faSHans Rosenfeld #define EMLXS_XRI_SOL_FCP_TYPE 1 1178f23e9faSHans Rosenfeld #define EMLXS_XRI_UNSOL_FCP_TYPE 2 1188f23e9faSHans Rosenfeld #define EMLXS_XRI_SOL_CT_TYPE 3 1198f23e9faSHans Rosenfeld #define EMLXS_XRI_UNSOL_CT_TYPE 4 1208f23e9faSHans Rosenfeld #define EMLXS_XRI_SOL_ELS_TYPE 5 1218f23e9faSHans Rosenfeld #define EMLXS_XRI_UNSOL_ELS_TYPE 6 1228f23e9faSHans Rosenfeld #define EMLXS_XRI_SOL_BLS_TYPE 7 123a9800bebSGarrett D'Amore 124a9800bebSGarrett D'Amore } XRIobj_t; 125a9800bebSGarrett D'Amore 126a9800bebSGarrett D'Amore 127a9800bebSGarrett D'Amore typedef struct emlxs_deferred_cmpl 128a9800bebSGarrett D'Amore { 129a9800bebSGarrett D'Amore struct emlxs_port *port; 130a9800bebSGarrett D'Amore struct emlxs_node *node; 131a9800bebSGarrett D'Amore 132a9800bebSGarrett D'Amore void *arg1; 133a9800bebSGarrett D'Amore void *arg2; 134a9800bebSGarrett D'Amore void *arg3; 135a9800bebSGarrett D'Amore 136a9800bebSGarrett D'Amore } emlxs_deferred_cmpl_t; 137a9800bebSGarrett D'Amore 138a9800bebSGarrett D'Amore 1398f23e9faSHans Rosenfeld #define FABRIC_RPI 0xffff 1408f23e9faSHans Rosenfeld 141a9800bebSGarrett D'Amore typedef struct RPIobj 142a9800bebSGarrett D'Amore { 143a9800bebSGarrett D'Amore uint16_t index; 144a9800bebSGarrett D'Amore uint16_t RPI; 145a9800bebSGarrett D'Amore 146a9800bebSGarrett D'Amore uint16_t prev_reason; 147a9800bebSGarrett D'Amore uint16_t prev_state; 148a9800bebSGarrett D'Amore 149a9800bebSGarrett D'Amore uint16_t reason; 150a9800bebSGarrett D'Amore uint16_t state; 151a9800bebSGarrett D'Amore #define RPI_STATE_FREE 0 152a9800bebSGarrett D'Amore 1538f23e9faSHans Rosenfeld #define RPI_STATE_RESERVED 1 1548f23e9faSHans Rosenfeld #define RPI_STATE_OFFLINE 2 155a9800bebSGarrett D'Amore 1568f23e9faSHans Rosenfeld #define RPI_STATE_UNREG_CMPL 3 1578f23e9faSHans Rosenfeld #define RPI_STATE_UNREG_FAILED 4 1588f23e9faSHans Rosenfeld #define RPI_STATE_UNREG 5 159a9800bebSGarrett D'Amore 1608f23e9faSHans Rosenfeld #define RPI_STATE_REG 6 1618f23e9faSHans Rosenfeld #define RPI_STATE_REG_FAILED 7 1628f23e9faSHans Rosenfeld #define RPI_STATE_REG_CMPL 8 163a9800bebSGarrett D'Amore 1648f23e9faSHans Rosenfeld #define RPI_STATE_PAUSED 9 165a9800bebSGarrett D'Amore 1668f23e9faSHans Rosenfeld #define RPI_STATE_RESUME 10 1678f23e9faSHans Rosenfeld #define RPI_STATE_RESUME_FAILED 11 1688f23e9faSHans Rosenfeld #define RPI_STATE_RESUME_CMPL 12 1698f23e9faSHans Rosenfeld 1708f23e9faSHans Rosenfeld #define RPI_STATE_ONLINE 13 171a9800bebSGarrett D'Amore 172a9800bebSGarrett D'Amore 173a9800bebSGarrett D'Amore uint32_t flag; 174a9800bebSGarrett D'Amore #define EMLXS_RPI_VPI 0x00000010 /* rpi_online set */ 175a9800bebSGarrett D'Amore #define EMLXS_RPI_PAUSED 0x00000020 /* rpi_paused set */ 176a9800bebSGarrett D'Amore #define EMLXS_RPI_REG 0x00000040 177a9800bebSGarrett D'Amore 178a9800bebSGarrett D'Amore #define EMLXS_RPI_FIRST 0x80000000 179a9800bebSGarrett D'Amore 180a9800bebSGarrett D'Amore uint32_t attempts; 181a9800bebSGarrett D'Amore uint32_t xri_count; /* Managed by XRIobj_t */ 182a9800bebSGarrett D'Amore 1838f23e9faSHans Rosenfeld uint32_t idle_timer; 1848f23e9faSHans Rosenfeld 185a9800bebSGarrett D'Amore struct VPIobj *vpip; 186a9800bebSGarrett D'Amore 187a9800bebSGarrett D'Amore /* Node info */ 188a9800bebSGarrett D'Amore struct emlxs_node *node; 189a9800bebSGarrett D'Amore uint32_t did; 190a9800bebSGarrett D'Amore SERV_PARM sparam; 191a9800bebSGarrett D'Amore 192a9800bebSGarrett D'Amore emlxs_deferred_cmpl_t *cmpl; 193a9800bebSGarrett D'Amore 194a9800bebSGarrett D'Amore } RPIobj_t; 195a9800bebSGarrett D'Amore 196a9800bebSGarrett D'Amore 197a9800bebSGarrett D'Amore typedef struct VPIobj 198a9800bebSGarrett D'Amore { 199a9800bebSGarrett D'Amore uint16_t index; 200a9800bebSGarrett D'Amore uint16_t VPI; 201a9800bebSGarrett D'Amore 202a9800bebSGarrett D'Amore uint16_t prev_reason; 203a9800bebSGarrett D'Amore uint16_t prev_state; 204a9800bebSGarrett D'Amore 205a9800bebSGarrett D'Amore uint16_t reason; 206a9800bebSGarrett D'Amore uint16_t state; 207a9800bebSGarrett D'Amore #define VPI_STATE_OFFLINE 0 208a9800bebSGarrett D'Amore 209a9800bebSGarrett D'Amore #define VPI_STATE_INIT 1 210a9800bebSGarrett D'Amore #define VPI_STATE_INIT_FAILED 2 211a9800bebSGarrett D'Amore #define VPI_STATE_INIT_CMPL 3 212a9800bebSGarrett D'Amore 213a9800bebSGarrett D'Amore #define VPI_STATE_UNREG_CMPL 4 214a9800bebSGarrett D'Amore #define VPI_STATE_UNREG_FAILED 5 215a9800bebSGarrett D'Amore #define VPI_STATE_UNREG 6 216a9800bebSGarrett D'Amore 217a9800bebSGarrett D'Amore #define VPI_STATE_LOGO_CMPL 7 218a9800bebSGarrett D'Amore #define VPI_STATE_LOGO_FAILED 8 219a9800bebSGarrett D'Amore #define VPI_STATE_LOGO 9 220a9800bebSGarrett D'Amore 221a9800bebSGarrett D'Amore #define VPI_STATE_PORT_OFFLINE 10 222a9800bebSGarrett D'Amore #define VPI_STATE_PORT_ONLINE 11 223a9800bebSGarrett D'Amore 224a9800bebSGarrett D'Amore #define VPI_STATE_LOGI 12 225a9800bebSGarrett D'Amore #define VPI_STATE_LOGI_FAILED 13 226a9800bebSGarrett D'Amore #define VPI_STATE_LOGI_CMPL 14 227a9800bebSGarrett D'Amore 228a9800bebSGarrett D'Amore #define VPI_STATE_REG 15 229a9800bebSGarrett D'Amore #define VPI_STATE_REG_FAILED 16 230a9800bebSGarrett D'Amore #define VPI_STATE_REG_CMPL 17 231a9800bebSGarrett D'Amore 232a9800bebSGarrett D'Amore #define VPI_STATE_PAUSED 18 233a9800bebSGarrett D'Amore #define VPI_STATE_ONLINE 19 234a9800bebSGarrett D'Amore 235a9800bebSGarrett D'Amore 236a9800bebSGarrett D'Amore uint32_t flag; 237a9800bebSGarrett D'Amore #define EMLXS_VPI_ONLINE_REQ 0x00000001 238a9800bebSGarrett D'Amore #define EMLXS_VPI_OFFLINE_REQ 0x00000002 239a9800bebSGarrett D'Amore #define EMLXS_VPI_PAUSE_REQ 0x00000004 240a9800bebSGarrett D'Amore #define EMLXS_VPI_REQ_MASK 0x0000000F 241a9800bebSGarrett D'Amore 242a9800bebSGarrett D'Amore #define EMLXS_VPI_VFI 0x00000010 /* vpi_online set */ 243a9800bebSGarrett D'Amore #define EMLXS_VPI_VFI_LOGI 0x00000020 /* logi_count set */ 244a9800bebSGarrett D'Amore #define EMLXS_VPI_INIT 0x00000040 245a9800bebSGarrett D'Amore #define EMLXS_VPI_REG 0x00000080 246a9800bebSGarrett D'Amore #define EMLXS_VPI_PORT_ONLINE 0x00000100 247a9800bebSGarrett D'Amore #define EMLXS_VPI_LOGI 0x00000200 2488f23e9faSHans Rosenfeld #define EMLXS_VPI_PORT_UNBIND 0x40000000 249a9800bebSGarrett D'Amore #define EMLXS_VPI_PORT_ENABLED 0x80000000 250a9800bebSGarrett D'Amore 251a9800bebSGarrett D'Amore uint32_t attempts; 252a9800bebSGarrett D'Amore 2538f23e9faSHans Rosenfeld RPIobj_t fabric_rpi; /* Reserved Fabric RPI object */ 2548f23e9faSHans Rosenfeld RPIobj_t *fabric_rpip; /* Fabric RPI pointer (&fabric_rpi) */ 2558f23e9faSHans Rosenfeld RPIobj_t *p2p_rpip; 256a9800bebSGarrett D'Amore 257a9800bebSGarrett D'Amore struct emlxs_port *port; 258a9800bebSGarrett D'Amore 259a9800bebSGarrett D'Amore struct VFIobj *vfip; /* Managed by VFIobj_t */ 260a9800bebSGarrett D'Amore uint32_t rpi_online; /* Managed by RPIobj_t */ 261a9800bebSGarrett D'Amore uint32_t rpi_paused; /* Managed by RPIobj_t */ 262a9800bebSGarrett D'Amore 263a9800bebSGarrett D'Amore } VPIobj_t; 264a9800bebSGarrett D'Amore 265a9800bebSGarrett D'Amore 266a9800bebSGarrett D'Amore typedef struct VFIobj 267a9800bebSGarrett D'Amore { 268a9800bebSGarrett D'Amore uint16_t index; 269a9800bebSGarrett D'Amore uint16_t VFI; 270a9800bebSGarrett D'Amore 271a9800bebSGarrett D'Amore uint16_t prev_reason; 272a9800bebSGarrett D'Amore uint16_t prev_state; 273a9800bebSGarrett D'Amore 274a9800bebSGarrett D'Amore uint16_t reason; 275a9800bebSGarrett D'Amore uint16_t state; 276a9800bebSGarrett D'Amore #define VFI_STATE_OFFLINE 0 277a9800bebSGarrett D'Amore 278a9800bebSGarrett D'Amore #define VFI_STATE_INIT 1 279a9800bebSGarrett D'Amore #define VFI_STATE_INIT_FAILED 2 280a9800bebSGarrett D'Amore #define VFI_STATE_INIT_CMPL 3 281a9800bebSGarrett D'Amore 282a9800bebSGarrett D'Amore #define VFI_STATE_VPI_OFFLINE_CMPL 4 283a9800bebSGarrett D'Amore #define VFI_STATE_VPI_OFFLINE 5 284a9800bebSGarrett D'Amore 285a9800bebSGarrett D'Amore #define VFI_STATE_VPI_ONLINE 6 286a9800bebSGarrett D'Amore #define VFI_STATE_VPI_ONLINE_CMPL 7 287a9800bebSGarrett D'Amore 288a9800bebSGarrett D'Amore #define VFI_STATE_UNREG_CMPL 8 289a9800bebSGarrett D'Amore #define VFI_STATE_UNREG_FAILED 9 290a9800bebSGarrett D'Amore #define VFI_STATE_UNREG 10 291a9800bebSGarrett D'Amore 292a9800bebSGarrett D'Amore #define VFI_STATE_REG 11 293a9800bebSGarrett D'Amore #define VFI_STATE_REG_FAILED 12 294a9800bebSGarrett D'Amore #define VFI_STATE_REG_CMPL 13 295a9800bebSGarrett D'Amore 296a9800bebSGarrett D'Amore #define VFI_STATE_PAUSED 14 297a9800bebSGarrett D'Amore #define VFI_STATE_ONLINE 15 298a9800bebSGarrett D'Amore 299a9800bebSGarrett D'Amore uint32_t flag; 300a9800bebSGarrett D'Amore #define EMLXS_VFI_ONLINE_REQ 0x00000001 301a9800bebSGarrett D'Amore #define EMLXS_VFI_OFFLINE_REQ 0x00000002 302a9800bebSGarrett D'Amore #define EMLXS_VFI_PAUSE_REQ 0x00000004 303a9800bebSGarrett D'Amore #define EMLXS_VFI_REQ_MASK 0x0000000F 304a9800bebSGarrett D'Amore 305a9800bebSGarrett D'Amore #define EMLXS_VFI_FCFI 0x00000010 /* vfi_online set */ 306a9800bebSGarrett D'Amore #define EMLXS_VFI_INIT 0x00000020 307a9800bebSGarrett D'Amore #define EMLXS_VFI_REG 0x00000040 308a9800bebSGarrett D'Amore 3098f23e9faSHans Rosenfeld SERV_PARM sparam; /* Last registered sparams */ 3108f23e9faSHans Rosenfeld 311a9800bebSGarrett D'Amore uint32_t attempts; 312a9800bebSGarrett D'Amore 313a9800bebSGarrett D'Amore struct FCFIobj *fcfp; /* Managed by FCFIobj_t */ 3148f23e9faSHans Rosenfeld 315a9800bebSGarrett D'Amore uint32_t vpi_online; /* Managed by VPIobj_t */ 316a9800bebSGarrett D'Amore uint32_t logi_count; /* Managed by VPIobj_t */ 3178f23e9faSHans Rosenfeld struct VPIobj *flogi_vpip; /* Managed by VPIobj_t */ 318a9800bebSGarrett D'Amore 319a9800bebSGarrett D'Amore } VFIobj_t; 320a9800bebSGarrett D'Amore 321a9800bebSGarrett D'Amore 322a9800bebSGarrett D'Amore typedef struct FCFIobj 323a9800bebSGarrett D'Amore { 324a9800bebSGarrett D'Amore uint16_t index; 325a9800bebSGarrett D'Amore uint16_t FCFI; 326a9800bebSGarrett D'Amore 327a9800bebSGarrett D'Amore uint16_t fcf_index; 328a9800bebSGarrett D'Amore uint16_t vlan_id; 329a9800bebSGarrett D'Amore 330a9800bebSGarrett D'Amore uint16_t prev_reason; 331a9800bebSGarrett D'Amore uint16_t prev_state; 332a9800bebSGarrett D'Amore 333a9800bebSGarrett D'Amore uint16_t reason; 334a9800bebSGarrett D'Amore uint16_t state; 335a9800bebSGarrett D'Amore #define FCFI_STATE_FREE 0 336a9800bebSGarrett D'Amore 337a9800bebSGarrett D'Amore #define FCFI_STATE_OFFLINE 1 338a9800bebSGarrett D'Amore 339a9800bebSGarrett D'Amore #define FCFI_STATE_UNREG_CMPL 2 340a9800bebSGarrett D'Amore #define FCFI_STATE_UNREG_FAILED 3 341a9800bebSGarrett D'Amore #define FCFI_STATE_UNREG 4 342a9800bebSGarrett D'Amore 343a9800bebSGarrett D'Amore #define FCFI_STATE_REG 5 344a9800bebSGarrett D'Amore #define FCFI_STATE_REG_FAILED 6 345a9800bebSGarrett D'Amore #define FCFI_STATE_REG_CMPL 7 346a9800bebSGarrett D'Amore 347a9800bebSGarrett D'Amore #define FCFI_STATE_VFI_OFFLINE_CMPL 8 348a9800bebSGarrett D'Amore #define FCFI_STATE_VFI_OFFLINE 9 349a9800bebSGarrett D'Amore 350a9800bebSGarrett D'Amore #define FCFI_STATE_VFI_ONLINE 10 351a9800bebSGarrett D'Amore #define FCFI_STATE_VFI_ONLINE_CMPL 11 352a9800bebSGarrett D'Amore 353a9800bebSGarrett D'Amore #define FCFI_STATE_PAUSED 12 354a9800bebSGarrett D'Amore #define FCFI_STATE_ONLINE 13 355a9800bebSGarrett D'Amore 3568f23e9faSHans Rosenfeld 3578f23e9faSHans Rosenfeld uint16_t pad; 3588f23e9faSHans Rosenfeld uint16_t generation; 3598f23e9faSHans Rosenfeld 360a9800bebSGarrett D'Amore uint32_t offline_timer; 361a9800bebSGarrett D'Amore uint32_t attempts; 3628f23e9faSHans Rosenfeld 363a9800bebSGarrett D'Amore uint32_t event_tag; 364a9800bebSGarrett D'Amore uint32_t flag; 365a9800bebSGarrett D'Amore #define EMLXS_FCFI_ONLINE_REQ 0x00000001 366a9800bebSGarrett D'Amore #define EMLXS_FCFI_OFFLINE_REQ 0x00000002 367a9800bebSGarrett D'Amore #define EMLXS_FCFI_PAUSE_REQ 0x00000004 368a9800bebSGarrett D'Amore #define EMLXS_FCFI_REQ_MASK 0x0000000F 369a9800bebSGarrett D'Amore 370a9800bebSGarrett D'Amore #define EMLXS_FCFI_FCFTAB 0x00000010 /* fcfi_online set */ 371a9800bebSGarrett D'Amore #define EMLXS_FCFI_REG 0x00000020 372a9800bebSGarrett D'Amore 373a9800bebSGarrett D'Amore #define EMLXS_FCFI_VALID 0x00000100 374a9800bebSGarrett D'Amore #define EMLXS_FCFI_AVAILABLE 0x00000200 375a9800bebSGarrett D'Amore #define EMLXS_FCFI_CONFIGURED 0x00000400 376a9800bebSGarrett D'Amore #define EMLXS_FCFI_FRESH 0x00000800 377a9800bebSGarrett D'Amore #define EMLXS_FCFI_FAILED 0x00001000 378a9800bebSGarrett D'Amore #define EMLXS_FCFI_SELECTED 0x00002000 /* in use */ 379a9800bebSGarrett D'Amore 380a9800bebSGarrett D'Amore #define EMLXS_FCFI_VLAN_ID 0x00010000 381a9800bebSGarrett D'Amore #define EMLXS_FCFI_BOOT 0x00020000 382a9800bebSGarrett D'Amore #define EMLXS_FCFI_PRIMARY 0x00040000 383a9800bebSGarrett D'Amore 384a9800bebSGarrett D'Amore #define EMLXS_FCFI_TAGGED 0x80000000 385a9800bebSGarrett D'Amore 386a9800bebSGarrett D'Amore /* struct VFTable vftab */ 387a9800bebSGarrett D'Amore 388a9800bebSGarrett D'Amore FCF_RECORD_t fcf_rec; 389a9800bebSGarrett D'Amore uint32_t priority; 390a9800bebSGarrett D'Amore 391a9800bebSGarrett D'Amore uint32_t vfi_online; /* Managed by VFIobj_t */ 392a9800bebSGarrett D'Amore 393a9800bebSGarrett D'Amore } FCFIobj_t; 394a9800bebSGarrett D'Amore 395a9800bebSGarrett D'Amore 396a9800bebSGarrett D'Amore typedef struct VFTable 397a9800bebSGarrett D'Amore { 398a9800bebSGarrett D'Amore uint16_t prev_reason; 399a9800bebSGarrett D'Amore uint16_t prev_state; 400a9800bebSGarrett D'Amore 401a9800bebSGarrett D'Amore uint16_t reason; 402a9800bebSGarrett D'Amore uint16_t state; 403a9800bebSGarrett D'Amore #define VFTAB_STATE_DISABLED 0 404a9800bebSGarrett D'Amore 405a9800bebSGarrett D'Amore uint32_t vfi_active; 406a9800bebSGarrett D'Amore uint32_t vfi_count; 407a9800bebSGarrett D'Amore VFIobj_t *table; 408a9800bebSGarrett D'Amore 409a9800bebSGarrett D'Amore } VFTable_t; 410a9800bebSGarrett D'Amore 411a9800bebSGarrett D'Amore typedef struct FCFTable 412a9800bebSGarrett D'Amore { 413a9800bebSGarrett D'Amore 414a9800bebSGarrett D'Amore uint16_t prev_reason; 415a9800bebSGarrett D'Amore uint16_t prev_state; 416a9800bebSGarrett D'Amore 417a9800bebSGarrett D'Amore uint16_t reason; 418a9800bebSGarrett D'Amore uint16_t state; 4198f23e9faSHans Rosenfeld /* Common states */ 420a9800bebSGarrett D'Amore #define FCFTAB_STATE_SHUTDOWN 0 421a9800bebSGarrett D'Amore #define FCFTAB_STATE_OFFLINE 1 422a9800bebSGarrett D'Amore 4238f23e9faSHans Rosenfeld /* FCOE states */ 4248f23e9faSHans Rosenfeld #define FCOE_FCFTAB_STATE_SHUTDOWN FCFTAB_STATE_SHUTDOWN 4258f23e9faSHans Rosenfeld #define FCOE_FCFTAB_STATE_OFFLINE FCFTAB_STATE_OFFLINE 426a9800bebSGarrett D'Amore 4278f23e9faSHans Rosenfeld #define FCOE_FCFTAB_STATE_SOLICIT 2 4288f23e9faSHans Rosenfeld #define FCOE_FCFTAB_STATE_SOLICIT_FAILED 3 4298f23e9faSHans Rosenfeld #define FCOE_FCFTAB_STATE_SOLICIT_CMPL 4 430a9800bebSGarrett D'Amore 4318f23e9faSHans Rosenfeld #define FCOE_FCFTAB_STATE_READ 5 4328f23e9faSHans Rosenfeld #define FCOE_FCFTAB_STATE_READ_FAILED 6 4338f23e9faSHans Rosenfeld #define FCOE_FCFTAB_STATE_READ_CMPL 7 434a9800bebSGarrett D'Amore 4358f23e9faSHans Rosenfeld #define FCOE_FCFTAB_STATE_FCFI_OFFLINE_CMPL 8 4368f23e9faSHans Rosenfeld #define FCOE_FCFTAB_STATE_FCFI_OFFLINE 9 437a9800bebSGarrett D'Amore 4388f23e9faSHans Rosenfeld #define FCOE_FCFTAB_STATE_FCFI_ONLINE 10 4398f23e9faSHans Rosenfeld #define FCOE_FCFTAB_STATE_FCFI_ONLINE_CMPL 11 440a9800bebSGarrett D'Amore 4418f23e9faSHans Rosenfeld #define FCOE_FCFTAB_STATE_ONLINE 12 442a9800bebSGarrett D'Amore 4438f23e9faSHans Rosenfeld 4448f23e9faSHans Rosenfeld /* FC states */ 4458f23e9faSHans Rosenfeld #define FC_FCFTAB_STATE_SHUTDOWN FCFTAB_STATE_SHUTDOWN 4468f23e9faSHans Rosenfeld #define FC_FCFTAB_STATE_OFFLINE FCFTAB_STATE_OFFLINE 4478f23e9faSHans Rosenfeld 4488f23e9faSHans Rosenfeld #define FC_FCFTAB_STATE_TOPO 2 4498f23e9faSHans Rosenfeld #define FC_FCFTAB_STATE_TOPO_FAILED 3 4508f23e9faSHans Rosenfeld #define FC_FCFTAB_STATE_TOPO_CMPL 4 4518f23e9faSHans Rosenfeld 4528f23e9faSHans Rosenfeld #define FC_FCFTAB_STATE_CFGLINK 5 4538f23e9faSHans Rosenfeld #define FC_FCFTAB_STATE_CFGLINK_FAILED 6 4548f23e9faSHans Rosenfeld #define FC_FCFTAB_STATE_CFGLINK_CMPL 7 4558f23e9faSHans Rosenfeld 4568f23e9faSHans Rosenfeld #define FC_FCFTAB_STATE_SPARM 8 4578f23e9faSHans Rosenfeld #define FC_FCFTAB_STATE_SPARM_FAILED 9 4588f23e9faSHans Rosenfeld #define FC_FCFTAB_STATE_SPARM_CMPL 10 4598f23e9faSHans Rosenfeld 4608f23e9faSHans Rosenfeld #define FC_FCFTAB_STATE_FCFI_OFFLINE_CMPL 11 4618f23e9faSHans Rosenfeld #define FC_FCFTAB_STATE_FCFI_OFFLINE 12 4628f23e9faSHans Rosenfeld 4638f23e9faSHans Rosenfeld #define FC_FCFTAB_STATE_FCFI_ONLINE 13 4648f23e9faSHans Rosenfeld #define FC_FCFTAB_STATE_FCFI_ONLINE_CMPL 14 4658f23e9faSHans Rosenfeld 4668f23e9faSHans Rosenfeld #define FC_FCFTAB_STATE_ONLINE 15 4678f23e9faSHans Rosenfeld 4688f23e9faSHans Rosenfeld 4698f23e9faSHans Rosenfeld uint16_t TID; 4708f23e9faSHans Rosenfeld uint16_t generation; 4718f23e9faSHans Rosenfeld 472a9800bebSGarrett D'Amore uint32_t flag; 4738f23e9faSHans Rosenfeld /* Common flags */ 474a9800bebSGarrett D'Amore #define EMLXS_FCFTAB_REQ_MASK 0x0000000F 475a9800bebSGarrett D'Amore #define EMLXS_FCFTAB_SHUTDOWN 0x80000000 476a9800bebSGarrett D'Amore 4778f23e9faSHans Rosenfeld /* FCOE flags */ 4788f23e9faSHans Rosenfeld #define EMLXS_FCOE_FCFTAB_SOL_REQ 0x00000001 4798f23e9faSHans Rosenfeld #define EMLXS_FCOE_FCFTAB_READ_REQ 0x00000002 4808f23e9faSHans Rosenfeld #define EMLXS_FCOE_FCFTAB_OFFLINE_REQ 0x00000004 4818f23e9faSHans Rosenfeld 4828f23e9faSHans Rosenfeld /* FC flags */ 4838f23e9faSHans Rosenfeld #define EMLXS_FC_FCFTAB_TOPO_REQ 0x00000001 4848f23e9faSHans Rosenfeld #define EMLXS_FC_FCFTAB_CFGLINK_REQ 0x00000002 4858f23e9faSHans Rosenfeld #define EMLXS_FC_FCFTAB_SPARM_REQ 0x00000004 4868f23e9faSHans Rosenfeld #define EMLXS_FC_FCFTAB_OFFLINE_REQ 0x00000008 4878f23e9faSHans Rosenfeld 488a9800bebSGarrett D'Amore uint32_t attempts; 489a9800bebSGarrett D'Amore 490a9800bebSGarrett D'Amore uint32_t fcfi_online; /* Managed by FCFIobj_t */ 491a9800bebSGarrett D'Amore 492a9800bebSGarrett D'Amore FCFIobj_t *fcfi[FCFTAB_MAX_FCFI_COUNT]; 493a9800bebSGarrett D'Amore uint32_t fcfi_count; 494a9800bebSGarrett D'Amore 495a9800bebSGarrett D'Amore FCFIobj_t *table; 496a9800bebSGarrett D'Amore uint16_t table_count; 497a9800bebSGarrett D'Amore 4988f23e9faSHans Rosenfeld uint32_t online_timer; /* FC */ 4998f23e9faSHans Rosenfeld 5008f23e9faSHans Rosenfeld uint32_t sol_timer; /* FCOE */ 5018f23e9faSHans Rosenfeld uint32_t read_timer; /* FCOE */ 502a9800bebSGarrett D'Amore 503a9800bebSGarrett D'Amore } FCFTable_t; 504a9800bebSGarrett D'Amore #define FCFTAB_READ_ALL (void*)0xffff 505a9800bebSGarrett D'Amore 506a9800bebSGarrett D'Amore #ifdef __cplusplus 507a9800bebSGarrett D'Amore } 508a9800bebSGarrett D'Amore #endif 509a9800bebSGarrett D'Amore 510a9800bebSGarrett D'Amore #endif /* _EMLXS_FCF_H */ 511