blob: c290fb13d2d124921aa4f2c5c106d5ecc4d68e2e (
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
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
|
/*
* Copyright (c) 2005-2009 Brocade Communications Systems, Inc.
* All rights reserved
* www.brocade.com
*
* Linux driver for Brocade Fibre Channel Host Bus Adapter.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License (GPL) Version 2 as
* published by the Free Software Foundation
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*/
#ifndef __BFA_DEFS_IOCFC_H__
#define __BFA_DEFS_IOCFC_H__
#include <protocol/types.h>
#include <defs/bfa_defs_types.h>
#include <defs/bfa_defs_version.h>
#include <defs/bfa_defs_adapter.h>
#include <defs/bfa_defs_pm.h>
#define BFA_IOCFC_INTR_DELAY 1125
#define BFA_IOCFC_INTR_LATENCY 225
#define BFA_IOCFCOE_INTR_DELAY 25
#define BFA_IOCFCOE_INTR_LATENCY 5
/**
* Interrupt coalescing configuration.
*/
struct bfa_iocfc_intr_attr_s {
bfa_boolean_t coalesce; /* enable/disable coalescing */
u16 latency; /* latency in microseconds */
u16 delay; /* delay in microseconds */
};
/**
* IOC firmware configuraton
*/
struct bfa_iocfc_fwcfg_s {
u16 num_fabrics; /* number of fabrics */
u16 num_lports; /* number of local lports */
u16 num_rports; /* number of remote ports */
u16 num_ioim_reqs; /* number of IO reqs */
u16 num_tskim_reqs; /* task management requests */
u16 num_iotm_reqs; /* number of TM IO reqs */
u16 num_tsktm_reqs; /* TM task management requests*/
u16 num_fcxp_reqs; /* unassisted FC exchanges */
u16 num_uf_bufs; /* unsolicited recv buffers */
u8 num_cqs;
u8 rsvd[5];
};
struct bfa_iocfc_drvcfg_s {
u16 num_reqq_elems; /* number of req queue elements */
u16 num_rspq_elems; /* number of rsp queue elements */
u16 num_sgpgs; /* number of total SG pages */
u16 num_sboot_tgts; /* number of SAN boot targets */
u16 num_sboot_luns; /* number of SAN boot luns */
u16 ioc_recover; /* IOC recovery mode */
u16 min_cfg; /* minimum configuration */
u16 path_tov; /* device path timeout */
bfa_boolean_t delay_comp; /* delay completion of
failed inflight IOs */
u32 rsvd;
};
/**
* IOC configuration
*/
struct bfa_iocfc_cfg_s {
struct bfa_iocfc_fwcfg_s fwcfg; /* firmware side config */
struct bfa_iocfc_drvcfg_s drvcfg; /* driver side config */
};
/**
* IOC firmware IO stats
*/
struct bfa_fw_io_stats_s {
u32 host_abort; /* IO aborted by host driver*/
u32 host_cleanup; /* IO clean up by host driver */
u32 fw_io_timeout; /* IOs timedout */
u32 fw_frm_parse; /* frame parsed by f/w */
u32 fw_frm_data; /* fcp_data frame parsed by f/w */
u32 fw_frm_rsp; /* fcp_rsp frame parsed by f/w */
u32 fw_frm_xfer_rdy; /* xfer_rdy frame parsed by f/w */
u32 fw_frm_bls_acc; /* BLS ACC frame parsed by f/w */
u32 fw_frm_tgt_abort; /* target ABTS parsed by f/w */
u32 fw_frm_unknown; /* unknown parsed by f/w */
u32 fw_data_dma; /* f/w DMA'ed the data frame */
u32 fw_frm_drop; /* f/w drop the frame */
u32 rec_timeout; /* FW rec timed out */
u32 error_rec; /* FW sending rec on
* an error condition*/
u32 wait_for_si; /* FW wait for SI */
u32 rec_rsp_inval; /* REC rsp invalid */
u32 seqr_io_abort; /* target does not know cmd so abort */
u32 seqr_io_retry; /* SEQR failed so retry IO */
u32 itn_cisc_upd_rsp; /* ITN cisc updated on fcp_rsp */
u32 itn_cisc_upd_data; /* ITN cisc updated on fcp_data */
u32 itn_cisc_upd_xfer_rdy; /* ITN cisc updated on fcp_data */
u32 fcp_data_lost; /* fcp data lost */
u32 ro_set_in_xfer_rdy; /* Target set RO in Xfer_rdy frame */
u32 xfer_rdy_ooo_err; /* Out of order Xfer_rdy received */
u32 xfer_rdy_unknown_err; /* unknown error in xfer_rdy frame */
u32 io_abort_timeout; /* ABTS timedout */
u32 sler_initiated; /* SLER initiated */
u32 unexp_fcp_rsp; /* fcp response in wrong state */
u32 fcp_rsp_under_run; /* fcp rsp IO underrun */
u32 fcp_rsp_under_run_wr; /* fcp rsp IO underrun for write */
u32 fcp_rsp_under_run_err; /* fcp rsp IO underrun error */
u32 fcp_rsp_resid_inval; /* invalid residue */
u32 fcp_rsp_over_run; /* fcp rsp IO overrun */
u32 fcp_rsp_over_run_err; /* fcp rsp IO overrun error */
u32 fcp_rsp_proto_err; /* protocol error in fcp rsp */
u32 fcp_rsp_sense_err; /* error in sense info in fcp rsp */
u32 fcp_conf_req; /* FCP conf requested */
u32 tgt_aborted_io; /* target initiated abort */
u32 ioh_edtov_timeout_event;/* IOH edtov timer popped */
u32 ioh_fcp_rsp_excp_event; /* IOH FCP_RSP exception */
u32 ioh_fcp_conf_event; /* IOH FCP_CONF */
u32 ioh_mult_frm_rsp_event; /* IOH multi_frame FCP_RSP */
u32 ioh_hit_class2_event; /* IOH hit class2 */
u32 ioh_miss_other_event; /* IOH miss other */
u32 ioh_seq_cnt_err_event; /* IOH seq cnt error */
u32 ioh_len_err_event; /* IOH len error - fcp_dl !=
* bytes xfered */
u32 ioh_seq_len_err_event; /* IOH seq len error */
u32 ioh_data_oor_event; /* Data out of range */
u32 ioh_ro_ooo_event; /* Relative offset out of range */
u32 ioh_cpu_owned_event; /* IOH hit -iost owned by f/w */
u32 ioh_unexp_frame_event; /* unexpected frame recieved
* count */
u32 ioh_err_int; /* IOH error int during data-phase
* for scsi write
*/
};
/**
* IOC port firmware stats
*/
struct bfa_fw_port_fpg_stats_s {
u32 intr_evt;
u32 intr;
u32 intr_excess;
u32 intr_cause0;
u32 intr_other;
u32 intr_other_ign;
u32 sig_lost;
u32 sig_regained;
u32 sync_lost;
u32 sync_to;
u32 sync_regained;
u32 div2_overflow;
u32 div2_underflow;
u32 efifo_overflow;
u32 efifo_underflow;
u32 idle_rx;
u32 lrr_rx;
u32 lr_rx;
u32 ols_rx;
u32 nos_rx;
u32 lip_rx;
u32 arbf0_rx;
u32 mrk_rx;
u32 const_mrk_rx;
u32 prim_unknown;
u32 rsvd;
};
struct bfa_fw_port_lksm_stats_s {
u32 hwsm_success; /* hwsm state machine success */
u32 hwsm_fails; /* hwsm fails */
u32 hwsm_wdtov; /* hwsm timed out */
u32 swsm_success; /* swsm success */
u32 swsm_fails; /* swsm fails */
u32 swsm_wdtov; /* swsm timed out */
u32 busybufs; /* link init failed due to busybuf */
u32 buf_waits; /* bufwait state entries */
u32 link_fails; /* link failures */
u32 psp_errors; /* primitive sequence protocol errors */
u32 lr_unexp; /* No. of times LR rx-ed unexpectedly */
u32 lrr_unexp; /* No. of times LRR rx-ed unexpectedly */
u32 lr_tx; /* No. of times LR tx started */
u32 lrr_tx; /* No. of times LRR tx started */
u32 ols_tx; /* No. of times OLS tx started */
u32 nos_tx; /* No. of times NOS tx started */
};
struct bfa_fw_port_snsm_stats_s {
u32 hwsm_success; /* Successful hwsm terminations */
u32 hwsm_fails; /* hwsm fail count */
u32 hwsm_wdtov; /* hwsm timed out */
u32 swsm_success; /* swsm success */
u32 swsm_wdtov; /* swsm timed out */
u32 error_resets; /* error resets initiated by upsm */
u32 sync_lost; /* Sync loss count */
u32 sig_lost; /* Signal loss count */
};
struct bfa_fw_port_physm_stats_s {
u32 module_inserts; /* Module insert count */
u32 module_xtracts; /* Module extracts count */
u32 module_invalids; /* Invalid module inserted count */
u32 module_read_ign; /* Module validation status ignored */
u32 laser_faults; /* Laser fault count */
u32 rsvd;
};
struct bfa_fw_fip_stats_s {
u32 vlan_req; /* vlan discovery requests */
u32 vlan_notify; /* vlan notifications */
u32 vlan_err; /* vlan response error */
u32 vlan_timeouts; /* vlan disvoery timeouts */
u32 vlan_invalids; /* invalid vlan in discovery advert. */
u32 disc_req; /* Discovery solicit requests */
u32 disc_rsp; /* Discovery solicit response */
u32 disc_err; /* Discovery advt. parse errors */
u32 disc_unsol; /* Discovery unsolicited */
u32 disc_timeouts; /* Discovery timeouts */
u32 disc_fcf_unavail; /* Discovery FCF Not Avail. */
u32 linksvc_unsupp; /* Unsupported link service req */
u32 linksvc_err; /* Parse error in link service req */
u32 logo_req; /* Number of FIP logos received */
u32 clrvlink_req; /* Clear virtual link req */
u32 op_unsupp; /* Unsupported FIP operation */
u32 untagged; /* Untagged frames (ignored) */
u32 invalid_version; /*!< Invalid FIP version */
};
struct bfa_fw_lps_stats_s {
u32 mac_invalids; /* Invalid mac assigned */
u32 rsvd;
};
struct bfa_fw_fcoe_stats_s {
u32 cee_linkups; /* CEE link up count */
u32 cee_linkdns; /* CEE link down count */
u32 fip_linkups; /* FIP link up count */
u32 fip_linkdns; /* FIP link up count */
u32 fip_fails; /* FIP fail count */
u32 mac_invalids; /* Invalid mac assigned */
};
/**
* IOC firmware FCoE port stats
*/
struct bfa_fw_fcoe_port_stats_s {
struct bfa_fw_fcoe_stats_s fcoe_stats;
struct bfa_fw_fip_stats_s fip_stats;
};
/**
* IOC firmware FC port stats
*/
struct bfa_fw_fc_port_stats_s {
struct bfa_fw_port_fpg_stats_s fpg_stats;
struct bfa_fw_port_physm_stats_s physm_stats;
struct bfa_fw_port_snsm_stats_s snsm_stats;
struct bfa_fw_port_lksm_stats_s lksm_stats;
};
/**
* IOC firmware FC port stats
*/
union bfa_fw_port_stats_s {
struct bfa_fw_fc_port_stats_s fc_stats;
struct bfa_fw_fcoe_port_stats_s fcoe_stats;
};
/**
* IOC firmware stats
*/
struct bfa_fw_stats_s {
struct bfa_fw_ioc_stats_s ioc_stats;
struct bfa_fw_io_stats_s io_stats;
union bfa_fw_port_stats_s port_stats;
};
/**
* IOC statistics
*/
struct bfa_iocfc_stats_s {
struct bfa_fw_stats_s fw_stats; /* firmware IOC stats */
};
/**
* IOC attributes returned in queries
*/
struct bfa_iocfc_attr_s {
struct bfa_iocfc_cfg_s config; /* IOCFC config */
struct bfa_iocfc_intr_attr_s intr_attr; /* interrupt attr */
};
#define BFA_IOCFC_PATHTOV_MAX 60
#define BFA_IOCFC_QDEPTH_MAX 2000
#endif /* __BFA_DEFS_IOC_H__ */
|