RT-AC56 3.0.0.4.374.37 core
[tomato.git] / release / src-rt-6.x.4708 / linux / linux-2.6.36 / drivers / scsi / bfa / include / defs / bfa_defs_iocfc.h
blob31e728a631ed29053f6d9da197406441c5255b9f
1 /*
2 * Copyright (c) 2005-2009 Brocade Communications Systems, Inc.
3 * All rights reserved
4 * www.brocade.com
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_IOCFC_H__
19 #define __BFA_DEFS_IOCFC_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>
27 #define BFA_IOCFC_INTR_DELAY 1125
28 #define BFA_IOCFC_INTR_LATENCY 225
29 #define BFA_IOCFCOE_INTR_DELAY 25
30 #define BFA_IOCFCOE_INTR_LATENCY 5
32 /**
33 * Interrupt coalescing configuration.
35 struct bfa_iocfc_intr_attr_s {
36 bfa_boolean_t coalesce; /* enable/disable coalescing */
37 u16 latency; /* latency in microseconds */
38 u16 delay; /* delay in microseconds */
41 /**
42 * IOC firmware configuraton
44 struct bfa_iocfc_fwcfg_s {
45 u16 num_fabrics; /* number of fabrics */
46 u16 num_lports; /* number of local lports */
47 u16 num_rports; /* number of remote ports */
48 u16 num_ioim_reqs; /* number of IO reqs */
49 u16 num_tskim_reqs; /* task management requests */
50 u16 num_iotm_reqs; /* number of TM IO reqs */
51 u16 num_tsktm_reqs; /* TM task management requests*/
52 u16 num_fcxp_reqs; /* unassisted FC exchanges */
53 u16 num_uf_bufs; /* unsolicited recv buffers */
54 u8 num_cqs;
55 u8 fw_tick_res; /*!< FW clock resolution in ms */
56 u8 rsvd[4];
60 struct bfa_iocfc_drvcfg_s {
61 u16 num_reqq_elems; /* number of req queue elements */
62 u16 num_rspq_elems; /* number of rsp queue elements */
63 u16 num_sgpgs; /* number of total SG pages */
64 u16 num_sboot_tgts; /* number of SAN boot targets */
65 u16 num_sboot_luns; /* number of SAN boot luns */
66 u16 ioc_recover; /* IOC recovery mode */
67 u16 min_cfg; /* minimum configuration */
68 u16 path_tov; /* device path timeout */
69 bfa_boolean_t delay_comp; /* delay completion of
70 failed inflight IOs */
71 u32 rsvd;
73 /**
74 * IOC configuration
76 struct bfa_iocfc_cfg_s {
77 struct bfa_iocfc_fwcfg_s fwcfg; /* firmware side config */
78 struct bfa_iocfc_drvcfg_s drvcfg; /* driver side config */
81 /**
82 * IOC firmware IO stats
84 struct bfa_fw_io_stats_s {
85 u32 host_abort; /* IO aborted by host driver*/
86 u32 host_cleanup; /* IO clean up by host driver */
88 u32 fw_io_timeout; /* IOs timedout */
89 u32 fw_frm_parse; /* frame parsed by f/w */
90 u32 fw_frm_data; /* fcp_data frame parsed by f/w */
91 u32 fw_frm_rsp; /* fcp_rsp frame parsed by f/w */
92 u32 fw_frm_xfer_rdy; /* xfer_rdy frame parsed by f/w */
93 u32 fw_frm_bls_acc; /* BLS ACC frame parsed by f/w */
94 u32 fw_frm_tgt_abort; /* target ABTS parsed by f/w */
95 u32 fw_frm_unknown; /* unknown parsed by f/w */
96 u32 fw_data_dma; /* f/w DMA'ed the data frame */
97 u32 fw_frm_drop; /* f/w drop the frame */
99 u32 rec_timeout; /* FW rec timed out */
100 u32 error_rec; /* FW sending rec on
101 * an error condition*/
102 u32 wait_for_si; /* FW wait for SI */
103 u32 rec_rsp_inval; /* REC rsp invalid */
104 u32 seqr_io_abort; /* target does not know cmd so abort */
105 u32 seqr_io_retry; /* SEQR failed so retry IO */
107 u32 itn_cisc_upd_rsp; /* ITN cisc updated on fcp_rsp */
108 u32 itn_cisc_upd_data; /* ITN cisc updated on fcp_data */
109 u32 itn_cisc_upd_xfer_rdy; /* ITN cisc updated on fcp_data */
111 u32 fcp_data_lost; /* fcp data lost */
113 u32 ro_set_in_xfer_rdy; /* Target set RO in Xfer_rdy frame */
114 u32 xfer_rdy_ooo_err; /* Out of order Xfer_rdy received */
115 u32 xfer_rdy_unknown_err; /* unknown error in xfer_rdy frame */
117 u32 io_abort_timeout; /* ABTS timedout */
118 u32 sler_initiated; /* SLER initiated */
120 u32 unexp_fcp_rsp; /* fcp response in wrong state */
122 u32 fcp_rsp_under_run; /* fcp rsp IO underrun */
123 u32 fcp_rsp_under_run_wr; /* fcp rsp IO underrun for write */
124 u32 fcp_rsp_under_run_err; /* fcp rsp IO underrun error */
125 u32 fcp_rsp_resid_inval; /* invalid residue */
126 u32 fcp_rsp_over_run; /* fcp rsp IO overrun */
127 u32 fcp_rsp_over_run_err; /* fcp rsp IO overrun error */
128 u32 fcp_rsp_proto_err; /* protocol error in fcp rsp */
129 u32 fcp_rsp_sense_err; /* error in sense info in fcp rsp */
130 u32 fcp_conf_req; /* FCP conf requested */
132 u32 tgt_aborted_io; /* target initiated abort */
134 u32 ioh_edtov_timeout_event;/* IOH edtov timer popped */
135 u32 ioh_fcp_rsp_excp_event; /* IOH FCP_RSP exception */
136 u32 ioh_fcp_conf_event; /* IOH FCP_CONF */
137 u32 ioh_mult_frm_rsp_event; /* IOH multi_frame FCP_RSP */
138 u32 ioh_hit_class2_event; /* IOH hit class2 */
139 u32 ioh_miss_other_event; /* IOH miss other */
140 u32 ioh_seq_cnt_err_event; /* IOH seq cnt error */
141 u32 ioh_len_err_event; /* IOH len error - fcp_dl !=
142 * bytes xfered */
143 u32 ioh_seq_len_err_event; /* IOH seq len error */
144 u32 ioh_data_oor_event; /* Data out of range */
145 u32 ioh_ro_ooo_event; /* Relative offset out of range */
146 u32 ioh_cpu_owned_event; /* IOH hit -iost owned by f/w */
147 u32 ioh_unexp_frame_event; /* unexpected frame recieved
148 * count */
149 u32 ioh_err_int; /* IOH error int during data-phase
150 * for scsi write
155 * IOC port firmware stats
158 struct bfa_fw_port_fpg_stats_s {
159 u32 intr_evt;
160 u32 intr;
161 u32 intr_excess;
162 u32 intr_cause0;
163 u32 intr_other;
164 u32 intr_other_ign;
165 u32 sig_lost;
166 u32 sig_regained;
167 u32 sync_lost;
168 u32 sync_to;
169 u32 sync_regained;
170 u32 div2_overflow;
171 u32 div2_underflow;
172 u32 efifo_overflow;
173 u32 efifo_underflow;
174 u32 idle_rx;
175 u32 lrr_rx;
176 u32 lr_rx;
177 u32 ols_rx;
178 u32 nos_rx;
179 u32 lip_rx;
180 u32 arbf0_rx;
181 u32 arb_rx;
182 u32 mrk_rx;
183 u32 const_mrk_rx;
184 u32 prim_unknown;
188 struct bfa_fw_port_lksm_stats_s {
189 u32 hwsm_success; /* hwsm state machine success */
190 u32 hwsm_fails; /* hwsm fails */
191 u32 hwsm_wdtov; /* hwsm timed out */
192 u32 swsm_success; /* swsm success */
193 u32 swsm_fails; /* swsm fails */
194 u32 swsm_wdtov; /* swsm timed out */
195 u32 busybufs; /* link init failed due to busybuf */
196 u32 buf_waits; /* bufwait state entries */
197 u32 link_fails; /* link failures */
198 u32 psp_errors; /* primitive sequence protocol errors */
199 u32 lr_unexp; /* No. of times LR rx-ed unexpectedly */
200 u32 lrr_unexp; /* No. of times LRR rx-ed unexpectedly */
201 u32 lr_tx; /* No. of times LR tx started */
202 u32 lrr_tx; /* No. of times LRR tx started */
203 u32 ols_tx; /* No. of times OLS tx started */
204 u32 nos_tx; /* No. of times NOS tx started */
205 u32 hwsm_lrr_rx; /* No. of times LRR rx-ed by HWSM */
206 u32 hwsm_lr_rx; /* No. of times LR rx-ed by HWSM */
210 struct bfa_fw_port_snsm_stats_s {
211 u32 hwsm_success; /* Successful hwsm terminations */
212 u32 hwsm_fails; /* hwsm fail count */
213 u32 hwsm_wdtov; /* hwsm timed out */
214 u32 swsm_success; /* swsm success */
215 u32 swsm_wdtov; /* swsm timed out */
216 u32 error_resets; /* error resets initiated by upsm */
217 u32 sync_lost; /* Sync loss count */
218 u32 sig_lost; /* Signal loss count */
222 struct bfa_fw_port_physm_stats_s {
223 u32 module_inserts; /* Module insert count */
224 u32 module_xtracts; /* Module extracts count */
225 u32 module_invalids; /* Invalid module inserted count */
226 u32 module_read_ign; /* Module validation status ignored */
227 u32 laser_faults; /* Laser fault count */
228 u32 rsvd;
232 struct bfa_fw_fip_stats_s {
233 u32 vlan_req; /* vlan discovery requests */
234 u32 vlan_notify; /* vlan notifications */
235 u32 vlan_err; /* vlan response error */
236 u32 vlan_timeouts; /* vlan disvoery timeouts */
237 u32 vlan_invalids; /* invalid vlan in discovery advert. */
238 u32 disc_req; /* Discovery solicit requests */
239 u32 disc_rsp; /* Discovery solicit response */
240 u32 disc_err; /* Discovery advt. parse errors */
241 u32 disc_unsol; /* Discovery unsolicited */
242 u32 disc_timeouts; /* Discovery timeouts */
243 u32 disc_fcf_unavail; /* Discovery FCF Not Avail. */
244 u32 linksvc_unsupp; /* Unsupported link service req */
245 u32 linksvc_err; /* Parse error in link service req */
246 u32 logo_req; /* FIP logos received */
247 u32 clrvlink_req; /* Clear virtual link req */
248 u32 op_unsupp; /* Unsupported FIP operation */
249 u32 untagged; /* Untagged frames (ignored) */
250 u32 invalid_version; /*!< Invalid FIP version */
254 struct bfa_fw_lps_stats_s {
255 u32 mac_invalids; /* Invalid mac assigned */
256 u32 rsvd;
260 struct bfa_fw_fcoe_stats_s {
261 u32 cee_linkups; /* CEE link up count */
262 u32 cee_linkdns; /* CEE link down count */
263 u32 fip_linkups; /* FIP link up count */
264 u32 fip_linkdns; /* FIP link up count */
265 u32 fip_fails; /* FIP fail count */
266 u32 mac_invalids; /* Invalid mac assigned */
270 * IOC firmware FCoE port stats
272 struct bfa_fw_fcoe_port_stats_s {
273 struct bfa_fw_fcoe_stats_s fcoe_stats;
274 struct bfa_fw_fip_stats_s fip_stats;
278 * IOC firmware FC port stats
280 struct bfa_fw_fc_port_stats_s {
281 struct bfa_fw_port_fpg_stats_s fpg_stats;
282 struct bfa_fw_port_physm_stats_s physm_stats;
283 struct bfa_fw_port_snsm_stats_s snsm_stats;
284 struct bfa_fw_port_lksm_stats_s lksm_stats;
288 * IOC firmware FC port stats
290 union bfa_fw_port_stats_s {
291 struct bfa_fw_fc_port_stats_s fc_stats;
292 struct bfa_fw_fcoe_port_stats_s fcoe_stats;
296 * IOC firmware stats
298 struct bfa_fw_stats_s {
299 struct bfa_fw_ioc_stats_s ioc_stats;
300 struct bfa_fw_io_stats_s io_stats;
301 union bfa_fw_port_stats_s port_stats;
305 * IOC statistics
307 struct bfa_iocfc_stats_s {
308 struct bfa_fw_stats_s fw_stats; /* firmware IOC stats */
312 * IOC attributes returned in queries
314 struct bfa_iocfc_attr_s {
315 struct bfa_iocfc_cfg_s config; /* IOCFC config */
316 struct bfa_iocfc_intr_attr_s intr_attr; /* interrupt attr */
319 #define BFA_IOCFC_PATHTOV_MAX 60
320 #define BFA_IOCFC_QDEPTH_MAX 2000
322 #endif /* __BFA_DEFS_IOC_H__ */