2 * Copyright (c) 2005-2009 Brocade Communications Systems, Inc.
6 * Linux driver for Brocade Fibre Channel Host Bus Adapter.
8 * This program is free software; you can redistribute it and/or modify it
9 * under the terms of the GNU General Public License (GPL) Version 2 as
10 * published by the Free Software Foundation
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License for more details.
18 #ifndef __BFA_DEFS_IOC_H__
19 #define __BFA_DEFS_IOC_H__
21 #include <protocol/types.h>
22 #include <defs/bfa_defs_types.h>
23 #include <defs/bfa_defs_version.h>
24 #include <defs/bfa_defs_adapter.h>
25 #include <defs/bfa_defs_pm.h>
28 BFA_IOC_DRIVER_LEN
= 16,
29 BFA_IOC_CHIP_REV_LEN
= 8,
33 * Driver and firmware versions.
35 struct bfa_ioc_driver_attr_s
{
36 char driver
[BFA_IOC_DRIVER_LEN
]; /* driver name */
37 char driver_ver
[BFA_VERSION_LEN
]; /* driver version */
38 char fw_ver
[BFA_VERSION_LEN
]; /* firmware version*/
39 char bios_ver
[BFA_VERSION_LEN
]; /* bios version */
40 char efi_ver
[BFA_VERSION_LEN
]; /* EFI version */
41 char ob_ver
[BFA_VERSION_LEN
]; /* openboot version*/
45 * IOC PCI device attributes
47 struct bfa_ioc_pci_attr_s
{
48 u16 vendor_id
; /* PCI vendor ID */
49 u16 device_id
; /* PCI device ID */
50 u16 ssid
; /* subsystem ID */
51 u16 ssvid
; /* subsystem vendor ID */
52 u32 pcifn
; /* PCI device function */
53 u32 rsvd
; /* padding */
54 u8 chip_rev
[BFA_IOC_CHIP_REV_LEN
]; /* chip revision */
61 BFA_IOC_RESET
= 1, /* IOC is in reset state */
62 BFA_IOC_SEMWAIT
= 2, /* Waiting for IOC hardware semaphore */
63 BFA_IOC_HWINIT
= 3, /* IOC hardware is being initialized */
64 BFA_IOC_GETATTR
= 4, /* IOC is being configured */
65 BFA_IOC_OPERATIONAL
= 5, /* IOC is operational */
66 BFA_IOC_INITFAIL
= 6, /* IOC hardware failure */
67 BFA_IOC_HBFAIL
= 7, /* IOC heart-beat failure */
68 BFA_IOC_DISABLING
= 8, /* IOC is being disabled */
69 BFA_IOC_DISABLED
= 9, /* IOC is disabled */
70 BFA_IOC_FWMISMATCH
= 10, /* IOC firmware different from drivers */
76 struct bfa_fw_ioc_stats_s
{
84 u32 ic_reqs
; /* interrupt coalesce reqs */
90 struct bfa_ioc_drv_stats_s
{
107 struct bfa_ioc_stats_s
{
108 struct bfa_ioc_drv_stats_s drv_stats
; /* driver IOC stats */
109 struct bfa_fw_ioc_stats_s fw_stats
; /* firmware IOC stats */
113 enum bfa_ioc_type_e
{
115 BFA_IOC_TYPE_FCoE
= 2,
120 * IOC attributes returned in queries
122 struct bfa_ioc_attr_s
{
123 enum bfa_ioc_type_e ioc_type
;
124 enum bfa_ioc_state state
; /* IOC state */
125 struct bfa_adapter_attr_s adapter_attr
; /* HBA attributes */
126 struct bfa_ioc_driver_attr_s driver_attr
; /* driver attr */
127 struct bfa_ioc_pci_attr_s pci_attr
;
128 u8 port_id
; /* port number */
129 u8 rsvd
[7]; /*!< 64bit align */
133 * BFA IOC level events
135 enum bfa_ioc_aen_event
{
136 BFA_IOC_AEN_HBGOOD
= 1, /* Heart Beat restore event */
137 BFA_IOC_AEN_HBFAIL
= 2, /* Heart Beat failure event */
138 BFA_IOC_AEN_ENABLE
= 3, /* IOC enabled event */
139 BFA_IOC_AEN_DISABLE
= 4, /* IOC disabled event */
140 BFA_IOC_AEN_FWMISMATCH
= 5, /* IOC firmware mismatch */
144 * BFA IOC level event data, now just a place holder
146 struct bfa_ioc_aen_data_s
{
152 #endif /* __BFA_DEFS_IOC_H__ */