]> CyberLeo.Net >> Repos - FreeBSD/releng/9.0.git/blob - sys/dev/cxgbe/common/t4fw_interface.h
Copy stable/9 to releng/9.0 as part of the FreeBSD 9.0-RELEASE release
[FreeBSD/releng/9.0.git] / sys / dev / cxgbe / common / t4fw_interface.h
1 /*-
2  * Copyright (c) 2011 Chelsio Communications, Inc.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  *    notice, this list of conditions and the following disclaimer in the
12  *    documentation and/or other materials provided with the distribution.
13  *
14  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24  * SUCH DAMAGE.
25  *
26  * $FreeBSD$
27  *
28  */
29
30 #ifndef _T4FW_INTERFACE_H_
31 #define _T4FW_INTERFACE_H_
32
33 /******************************************************************************
34  *   R E T U R N   V A L U E S
35  ********************************/
36
37 enum fw_retval {
38         FW_SUCCESS              = 0,    /* completed sucessfully */
39         FW_EPERM                = 1,    /* operation not permitted */
40         FW_EIO                  = 5,    /* input/output error; hw bad */
41         FW_ENOEXEC              = 8,    /* Exec format error; inv microcode */
42         FW_EAGAIN               = 11,   /* try again */
43         FW_ENOMEM               = 12,   /* out of memory */
44         FW_EFAULT               = 14,   /* bad address; fw bad */
45         FW_EBUSY                = 16,   /* resource busy */
46         FW_EEXIST               = 17,   /* File exists */
47         FW_EINVAL               = 22,   /* invalid argument */
48         FW_ENOSYS               = 38,   /* functionality not implemented */
49         FW_EPROTO               = 71,   /* protocol error */
50         FW_ETIMEDOUT            = 110,  /* timeout */
51         FW_EINPROGRESS          = 115,  /* fw internal */
52         FW_SCSI_ABORT_REQUESTED = 128,  /* */
53         FW_SCSI_ABORT_TIMEDOUT  = 129,  /* */
54         FW_SCSI_ABORTED         = 130,  /* */
55         FW_SCSI_CLOSE_REQUESTED = 131,  /* */
56         FW_ERR_LINK_DOWN        = 132,  /* */
57         FW_RDEV_NOT_READY       = 133,  /* */
58         FW_ERR_RDEV_LOST        = 134,  /* */
59         FW_ERR_RDEV_LOGO        = 135,  /* */
60         FW_FCOE_NO_XCHG         = 136,  /* */
61         FW_SCSI_RSP_ERR         = 137,  /* */
62         FW_ERR_RDEV_IMPL_LOGO   = 138,  /* */
63         FW_SCSI_UNDER_FLOW_ERR  = 139,  /* */
64         FW_SCSI_OVER_FLOW_ERR   = 140,  /* */
65 };
66
67 /******************************************************************************
68  *   W O R K   R E Q U E S T s
69  ********************************/
70
71 enum fw_wr_opcodes {
72         FW_FILTER_WR            = 0x02,
73         FW_ULPTX_WR             = 0x04,
74         FW_TP_WR                = 0x05,
75         FW_ETH_TX_PKT_WR        = 0x08,
76         FW_ETH_TX_PKTS_WR       = 0x09,
77         FW_EQ_FLUSH_WR          = 0x1b,
78         FW_FLOWC_WR             = 0x0a,
79         FW_OFLD_TX_DATA_WR      = 0x0b,
80         FW_CMD_WR               = 0x10,
81         FW_ETH_TX_PKT_VM_WR     = 0x11,
82         FW_RI_RES_WR            = 0x0c,
83         FW_RI_RDMA_WRITE_WR     = 0x14,
84         FW_RI_SEND_WR           = 0x15,
85         FW_RI_RDMA_READ_WR      = 0x16,
86         FW_RI_RECV_WR           = 0x17,
87         FW_RI_BIND_MW_WR        = 0x18,
88         FW_RI_FR_NSMR_WR        = 0x19,
89         FW_RI_INV_LSTAG_WR      = 0x1a,
90         FW_RI_WR                = 0x0d,
91         FW_ISCSI_NODE_WR        = 0x4a,
92         FW_LASTC2E_WR           = 0x4b
93 };
94
95 /*
96  * Generic work request header flit0
97  */
98 struct fw_wr_hdr {
99         __be32 hi;
100         __be32 lo;
101 };
102
103 /*      work request opcode (hi)
104  */
105 #define S_FW_WR_OP              24
106 #define M_FW_WR_OP              0xff
107 #define V_FW_WR_OP(x)           ((x) << S_FW_WR_OP)
108 #define G_FW_WR_OP(x)           (((x) >> S_FW_WR_OP) & M_FW_WR_OP)
109
110 /*      atomic flag (hi) - firmware encapsulates CPLs in CPL_BARRIER
111  */
112 #define S_FW_WR_ATOMIC          23
113 #define M_FW_WR_ATOMIC          0x1
114 #define V_FW_WR_ATOMIC(x)       ((x) << S_FW_WR_ATOMIC)
115 #define G_FW_WR_ATOMIC(x)       \
116     (((x) >> S_FW_WR_ATOMIC) & M_FW_WR_ATOMIC)
117 #define F_FW_WR_ATOMIC          V_FW_WR_ATOMIC(1U)
118
119 /*      flush flag (hi) - firmware flushes flushable work request buffered
120  *                            in the flow context.
121  */
122 #define S_FW_WR_FLUSH     22
123 #define M_FW_WR_FLUSH     0x1
124 #define V_FW_WR_FLUSH(x)  ((x) << S_FW_WR_FLUSH)
125 #define G_FW_WR_FLUSH(x)  \
126     (((x) >> S_FW_WR_FLUSH) & M_FW_WR_FLUSH)
127 #define F_FW_WR_FLUSH     V_FW_WR_FLUSH(1U)
128
129 /*      completion flag (hi) - firmware generates a cpl_fw6_ack
130  */
131 #define S_FW_WR_COMPL     21
132 #define M_FW_WR_COMPL     0x1
133 #define V_FW_WR_COMPL(x)  ((x) << S_FW_WR_COMPL)
134 #define G_FW_WR_COMPL(x)  \
135     (((x) >> S_FW_WR_COMPL) & M_FW_WR_COMPL)
136 #define F_FW_WR_COMPL     V_FW_WR_COMPL(1U)
137
138
139 /*      work request immediate data lengh (hi)
140  */
141 #define S_FW_WR_IMMDLEN 0
142 #define M_FW_WR_IMMDLEN 0xff
143 #define V_FW_WR_IMMDLEN(x)      ((x) << S_FW_WR_IMMDLEN)
144 #define G_FW_WR_IMMDLEN(x)      \
145     (((x) >> S_FW_WR_IMMDLEN) & M_FW_WR_IMMDLEN)
146
147 /*      egress queue status update to associated ingress queue entry (lo)
148  */
149 #define S_FW_WR_EQUIQ           31
150 #define M_FW_WR_EQUIQ           0x1
151 #define V_FW_WR_EQUIQ(x)        ((x) << S_FW_WR_EQUIQ)
152 #define G_FW_WR_EQUIQ(x)        (((x) >> S_FW_WR_EQUIQ) & M_FW_WR_EQUIQ)
153 #define F_FW_WR_EQUIQ           V_FW_WR_EQUIQ(1U)
154
155 /*      egress queue status update to egress queue status entry (lo)
156  */
157 #define S_FW_WR_EQUEQ           30
158 #define M_FW_WR_EQUEQ           0x1
159 #define V_FW_WR_EQUEQ(x)        ((x) << S_FW_WR_EQUEQ)
160 #define G_FW_WR_EQUEQ(x)        (((x) >> S_FW_WR_EQUEQ) & M_FW_WR_EQUEQ)
161 #define F_FW_WR_EQUEQ           V_FW_WR_EQUEQ(1U)
162
163 /*      flow context identifier (lo)
164  */
165 #define S_FW_WR_FLOWID          8
166 #define M_FW_WR_FLOWID          0xfffff
167 #define V_FW_WR_FLOWID(x)       ((x) << S_FW_WR_FLOWID)
168 #define G_FW_WR_FLOWID(x)       (((x) >> S_FW_WR_FLOWID) & M_FW_WR_FLOWID)
169
170 /*      length in units of 16-bytes (lo)
171  */
172 #define S_FW_WR_LEN16           0
173 #define M_FW_WR_LEN16           0xff
174 #define V_FW_WR_LEN16(x)        ((x) << S_FW_WR_LEN16)
175 #define G_FW_WR_LEN16(x)        (((x) >> S_FW_WR_LEN16) & M_FW_WR_LEN16)
176
177 /* valid filter configurations for compressed tuple
178  * Encodings: TPL - Compressed TUPLE for filter in addition to 4-tuple
179  * FR - FRAGMENT, FC - FCoE, MT - MPS MATCH TYPE, M - MPS MATCH,
180  * E - Ethertype, P - Port, PR - Protocol, T - TOS, IV - Inner VLAN,
181  * OV - Outer VLAN/VNIC_ID,
182 */
183 #define HW_TPL_FR_MT_M_E_P_FC           0x3C3
184 #define HW_TPL_FR_MT_M_PR_T_FC          0x3B3
185 #define HW_TPL_FR_MT_M_IV_P_FC          0x38B
186 #define HW_TPL_FR_MT_M_OV_P_FC          0x387
187 #define HW_TPL_FR_MT_E_PR_T             0x370
188 #define HW_TPL_FR_MT_E_PR_P_FC          0X363
189 #define HW_TPL_FR_MT_E_T_P_FC           0X353
190 #define HW_TPL_FR_MT_PR_IV_P_FC         0X32B
191 #define HW_TPL_FR_MT_PR_OV_P_FC         0X327
192 #define HW_TPL_FR_MT_T_IV_P_FC          0X31B
193 #define HW_TPL_FR_MT_T_OV_P_FC          0X317
194 #define HW_TPL_FR_M_E_PR_FC             0X2E1
195 #define HW_TPL_FR_M_E_T_FC              0X2D1
196 #define HW_TPL_FR_M_PR_IV_FC            0X2A9
197 #define HW_TPL_FR_M_PR_OV_FC            0X2A5
198 #define HW_TPL_FR_M_T_IV_FC             0X299
199 #define HW_TPL_FR_M_T_OV_FC             0X295
200 #define HW_TPL_FR_E_PR_T_P              0X272
201 #define HW_TPL_FR_E_PR_T_FC             0X271
202 #define HW_TPL_FR_E_IV_FC               0X249
203 #define HW_TPL_FR_E_OV_FC               0X245
204 #define HW_TPL_FR_PR_T_IV_FC            0X239
205 #define HW_TPL_FR_PR_T_OV_FC            0X235
206 #define HW_TPL_FR_IV_OV_FC              0X20D
207 #define HW_TPL_MT_M_E_PR                0X1E0
208 #define HW_TPL_MT_M_E_T                 0X1D0
209 #define HW_TPL_MT_E_PR_T_FC             0X171
210 #define HW_TPL_MT_E_IV                  0X148
211 #define HW_TPL_MT_E_OV                  0X144
212 #define HW_TPL_MT_PR_T_IV               0X138
213 #define HW_TPL_MT_PR_T_OV               0X134
214 #define HW_TPL_M_E_PR_P                 0X0E2
215 #define HW_TPL_M_E_T_P                  0X0D2
216 #define HW_TPL_E_PR_T_P_FC              0X073
217 #define HW_TPL_E_IV_P                   0X04A
218 #define HW_TPL_E_OV_P                   0X046
219 #define HW_TPL_PR_T_IV_P                0X03A
220 #define HW_TPL_PR_T_OV_P                0X036
221
222 /* filter wr reply code in cookie in CPL_SET_TCB_RPL */
223 enum fw_filter_wr_cookie {
224         FW_FILTER_WR_SUCCESS,
225         FW_FILTER_WR_FLT_ADDED,
226         FW_FILTER_WR_FLT_DELETED,
227         FW_FILTER_WR_SMT_TBL_FULL,
228         FW_FILTER_WR_EINVAL,
229 };
230
231 struct fw_filter_wr {
232         __be32 op_pkd;
233         __be32 len16_pkd;
234         __be64 r3;
235         __be32 tid_to_iq;
236         __be32 del_filter_to_l2tix;
237         __be16 ethtype;
238         __be16 ethtypem;
239         __u8   frag_to_ovlan_vldm;
240         __u8   smac_sel;
241         __be16 rx_chan_rx_rpl_iq;
242         __be32 maci_to_matchtypem;
243         __u8   ptcl;
244         __u8   ptclm;
245         __u8   ttyp;
246         __u8   ttypm;
247         __be16 ivlan;
248         __be16 ivlanm;
249         __be16 ovlan;
250         __be16 ovlanm;
251         __u8   lip[16];
252         __u8   lipm[16];
253         __u8   fip[16];
254         __u8   fipm[16];
255         __be16 lp;
256         __be16 lpm;
257         __be16 fp;
258         __be16 fpm;
259         __be16 r7;
260         __u8   sma[6];
261 };
262
263 #define S_FW_FILTER_WR_TID      12
264 #define M_FW_FILTER_WR_TID      0xfffff
265 #define V_FW_FILTER_WR_TID(x)   ((x) << S_FW_FILTER_WR_TID)
266 #define G_FW_FILTER_WR_TID(x)   \
267     (((x) >> S_FW_FILTER_WR_TID) & M_FW_FILTER_WR_TID)
268
269 #define S_FW_FILTER_WR_RQTYPE           11
270 #define M_FW_FILTER_WR_RQTYPE           0x1
271 #define V_FW_FILTER_WR_RQTYPE(x)        ((x) << S_FW_FILTER_WR_RQTYPE)
272 #define G_FW_FILTER_WR_RQTYPE(x)        \
273     (((x) >> S_FW_FILTER_WR_RQTYPE) & M_FW_FILTER_WR_RQTYPE)
274 #define F_FW_FILTER_WR_RQTYPE   V_FW_FILTER_WR_RQTYPE(1U)
275
276 #define S_FW_FILTER_WR_NOREPLY          10
277 #define M_FW_FILTER_WR_NOREPLY          0x1
278 #define V_FW_FILTER_WR_NOREPLY(x)       ((x) << S_FW_FILTER_WR_NOREPLY)
279 #define G_FW_FILTER_WR_NOREPLY(x)       \
280     (((x) >> S_FW_FILTER_WR_NOREPLY) & M_FW_FILTER_WR_NOREPLY)
281 #define F_FW_FILTER_WR_NOREPLY  V_FW_FILTER_WR_NOREPLY(1U)
282
283 #define S_FW_FILTER_WR_IQ       0
284 #define M_FW_FILTER_WR_IQ       0x3ff
285 #define V_FW_FILTER_WR_IQ(x)    ((x) << S_FW_FILTER_WR_IQ)
286 #define G_FW_FILTER_WR_IQ(x)    \
287     (((x) >> S_FW_FILTER_WR_IQ) & M_FW_FILTER_WR_IQ)
288
289 #define S_FW_FILTER_WR_DEL_FILTER       31
290 #define M_FW_FILTER_WR_DEL_FILTER       0x1
291 #define V_FW_FILTER_WR_DEL_FILTER(x)    ((x) << S_FW_FILTER_WR_DEL_FILTER)
292 #define G_FW_FILTER_WR_DEL_FILTER(x)    \
293     (((x) >> S_FW_FILTER_WR_DEL_FILTER) & M_FW_FILTER_WR_DEL_FILTER)
294 #define F_FW_FILTER_WR_DEL_FILTER       V_FW_FILTER_WR_DEL_FILTER(1U)
295
296 #define S_FW_FILTER_WR_RPTTID           25
297 #define M_FW_FILTER_WR_RPTTID           0x1
298 #define V_FW_FILTER_WR_RPTTID(x)        ((x) << S_FW_FILTER_WR_RPTTID)
299 #define G_FW_FILTER_WR_RPTTID(x)        \
300     (((x) >> S_FW_FILTER_WR_RPTTID) & M_FW_FILTER_WR_RPTTID)
301 #define F_FW_FILTER_WR_RPTTID   V_FW_FILTER_WR_RPTTID(1U)
302
303 #define S_FW_FILTER_WR_DROP     24
304 #define M_FW_FILTER_WR_DROP     0x1
305 #define V_FW_FILTER_WR_DROP(x)  ((x) << S_FW_FILTER_WR_DROP)
306 #define G_FW_FILTER_WR_DROP(x)  \
307     (((x) >> S_FW_FILTER_WR_DROP) & M_FW_FILTER_WR_DROP)
308 #define F_FW_FILTER_WR_DROP     V_FW_FILTER_WR_DROP(1U)
309
310 #define S_FW_FILTER_WR_DIRSTEER         23
311 #define M_FW_FILTER_WR_DIRSTEER         0x1
312 #define V_FW_FILTER_WR_DIRSTEER(x)      ((x) << S_FW_FILTER_WR_DIRSTEER)
313 #define G_FW_FILTER_WR_DIRSTEER(x)      \
314     (((x) >> S_FW_FILTER_WR_DIRSTEER) & M_FW_FILTER_WR_DIRSTEER)
315 #define F_FW_FILTER_WR_DIRSTEER V_FW_FILTER_WR_DIRSTEER(1U)
316
317 #define S_FW_FILTER_WR_MASKHASH         22
318 #define M_FW_FILTER_WR_MASKHASH         0x1
319 #define V_FW_FILTER_WR_MASKHASH(x)      ((x) << S_FW_FILTER_WR_MASKHASH)
320 #define G_FW_FILTER_WR_MASKHASH(x)      \
321     (((x) >> S_FW_FILTER_WR_MASKHASH) & M_FW_FILTER_WR_MASKHASH)
322 #define F_FW_FILTER_WR_MASKHASH V_FW_FILTER_WR_MASKHASH(1U)
323
324 #define S_FW_FILTER_WR_DIRSTEERHASH     21
325 #define M_FW_FILTER_WR_DIRSTEERHASH     0x1
326 #define V_FW_FILTER_WR_DIRSTEERHASH(x)  ((x) << S_FW_FILTER_WR_DIRSTEERHASH)
327 #define G_FW_FILTER_WR_DIRSTEERHASH(x)  \
328     (((x) >> S_FW_FILTER_WR_DIRSTEERHASH) & M_FW_FILTER_WR_DIRSTEERHASH)
329 #define F_FW_FILTER_WR_DIRSTEERHASH     V_FW_FILTER_WR_DIRSTEERHASH(1U)
330
331 #define S_FW_FILTER_WR_LPBK     20
332 #define M_FW_FILTER_WR_LPBK     0x1
333 #define V_FW_FILTER_WR_LPBK(x)  ((x) << S_FW_FILTER_WR_LPBK)
334 #define G_FW_FILTER_WR_LPBK(x)  \
335     (((x) >> S_FW_FILTER_WR_LPBK) & M_FW_FILTER_WR_LPBK)
336 #define F_FW_FILTER_WR_LPBK     V_FW_FILTER_WR_LPBK(1U)
337
338 #define S_FW_FILTER_WR_DMAC     19
339 #define M_FW_FILTER_WR_DMAC     0x1
340 #define V_FW_FILTER_WR_DMAC(x)  ((x) << S_FW_FILTER_WR_DMAC)
341 #define G_FW_FILTER_WR_DMAC(x)  \
342     (((x) >> S_FW_FILTER_WR_DMAC) & M_FW_FILTER_WR_DMAC)
343 #define F_FW_FILTER_WR_DMAC     V_FW_FILTER_WR_DMAC(1U)
344
345 #define S_FW_FILTER_WR_SMAC     18
346 #define M_FW_FILTER_WR_SMAC     0x1
347 #define V_FW_FILTER_WR_SMAC(x)  ((x) << S_FW_FILTER_WR_SMAC)
348 #define G_FW_FILTER_WR_SMAC(x)  \
349     (((x) >> S_FW_FILTER_WR_SMAC) & M_FW_FILTER_WR_SMAC)
350 #define F_FW_FILTER_WR_SMAC     V_FW_FILTER_WR_SMAC(1U)
351
352 #define S_FW_FILTER_WR_INSVLAN          17
353 #define M_FW_FILTER_WR_INSVLAN          0x1
354 #define V_FW_FILTER_WR_INSVLAN(x)       ((x) << S_FW_FILTER_WR_INSVLAN)
355 #define G_FW_FILTER_WR_INSVLAN(x)       \
356     (((x) >> S_FW_FILTER_WR_INSVLAN) & M_FW_FILTER_WR_INSVLAN)
357 #define F_FW_FILTER_WR_INSVLAN  V_FW_FILTER_WR_INSVLAN(1U)
358
359 #define S_FW_FILTER_WR_RMVLAN           16
360 #define M_FW_FILTER_WR_RMVLAN           0x1
361 #define V_FW_FILTER_WR_RMVLAN(x)        ((x) << S_FW_FILTER_WR_RMVLAN)
362 #define G_FW_FILTER_WR_RMVLAN(x)        \
363     (((x) >> S_FW_FILTER_WR_RMVLAN) & M_FW_FILTER_WR_RMVLAN)
364 #define F_FW_FILTER_WR_RMVLAN   V_FW_FILTER_WR_RMVLAN(1U)
365
366 #define S_FW_FILTER_WR_HITCNTS          15
367 #define M_FW_FILTER_WR_HITCNTS          0x1
368 #define V_FW_FILTER_WR_HITCNTS(x)       ((x) << S_FW_FILTER_WR_HITCNTS)
369 #define G_FW_FILTER_WR_HITCNTS(x)       \
370     (((x) >> S_FW_FILTER_WR_HITCNTS) & M_FW_FILTER_WR_HITCNTS)
371 #define F_FW_FILTER_WR_HITCNTS  V_FW_FILTER_WR_HITCNTS(1U)
372
373 #define S_FW_FILTER_WR_TXCHAN           13
374 #define M_FW_FILTER_WR_TXCHAN           0x3
375 #define V_FW_FILTER_WR_TXCHAN(x)        ((x) << S_FW_FILTER_WR_TXCHAN)
376 #define G_FW_FILTER_WR_TXCHAN(x)        \
377     (((x) >> S_FW_FILTER_WR_TXCHAN) & M_FW_FILTER_WR_TXCHAN)
378
379 #define S_FW_FILTER_WR_PRIO     12
380 #define M_FW_FILTER_WR_PRIO     0x1
381 #define V_FW_FILTER_WR_PRIO(x)  ((x) << S_FW_FILTER_WR_PRIO)
382 #define G_FW_FILTER_WR_PRIO(x)  \
383     (((x) >> S_FW_FILTER_WR_PRIO) & M_FW_FILTER_WR_PRIO)
384 #define F_FW_FILTER_WR_PRIO     V_FW_FILTER_WR_PRIO(1U)
385
386 #define S_FW_FILTER_WR_L2TIX    0
387 #define M_FW_FILTER_WR_L2TIX    0xfff
388 #define V_FW_FILTER_WR_L2TIX(x) ((x) << S_FW_FILTER_WR_L2TIX)
389 #define G_FW_FILTER_WR_L2TIX(x) \
390     (((x) >> S_FW_FILTER_WR_L2TIX) & M_FW_FILTER_WR_L2TIX)
391
392 #define S_FW_FILTER_WR_FRAG     7
393 #define M_FW_FILTER_WR_FRAG     0x1
394 #define V_FW_FILTER_WR_FRAG(x)  ((x) << S_FW_FILTER_WR_FRAG)
395 #define G_FW_FILTER_WR_FRAG(x)  \
396     (((x) >> S_FW_FILTER_WR_FRAG) & M_FW_FILTER_WR_FRAG)
397 #define F_FW_FILTER_WR_FRAG     V_FW_FILTER_WR_FRAG(1U)
398
399 #define S_FW_FILTER_WR_FRAGM    6
400 #define M_FW_FILTER_WR_FRAGM    0x1
401 #define V_FW_FILTER_WR_FRAGM(x) ((x) << S_FW_FILTER_WR_FRAGM)
402 #define G_FW_FILTER_WR_FRAGM(x) \
403     (((x) >> S_FW_FILTER_WR_FRAGM) & M_FW_FILTER_WR_FRAGM)
404 #define F_FW_FILTER_WR_FRAGM    V_FW_FILTER_WR_FRAGM(1U)
405
406 #define S_FW_FILTER_WR_IVLAN_VLD        5
407 #define M_FW_FILTER_WR_IVLAN_VLD        0x1
408 #define V_FW_FILTER_WR_IVLAN_VLD(x)     ((x) << S_FW_FILTER_WR_IVLAN_VLD)
409 #define G_FW_FILTER_WR_IVLAN_VLD(x)     \
410     (((x) >> S_FW_FILTER_WR_IVLAN_VLD) & M_FW_FILTER_WR_IVLAN_VLD)
411 #define F_FW_FILTER_WR_IVLAN_VLD        V_FW_FILTER_WR_IVLAN_VLD(1U)
412
413 #define S_FW_FILTER_WR_OVLAN_VLD        4
414 #define M_FW_FILTER_WR_OVLAN_VLD        0x1
415 #define V_FW_FILTER_WR_OVLAN_VLD(x)     ((x) << S_FW_FILTER_WR_OVLAN_VLD)
416 #define G_FW_FILTER_WR_OVLAN_VLD(x)     \
417     (((x) >> S_FW_FILTER_WR_OVLAN_VLD) & M_FW_FILTER_WR_OVLAN_VLD)
418 #define F_FW_FILTER_WR_OVLAN_VLD        V_FW_FILTER_WR_OVLAN_VLD(1U)
419
420 #define S_FW_FILTER_WR_IVLAN_VLDM       3
421 #define M_FW_FILTER_WR_IVLAN_VLDM       0x1
422 #define V_FW_FILTER_WR_IVLAN_VLDM(x)    ((x) << S_FW_FILTER_WR_IVLAN_VLDM)
423 #define G_FW_FILTER_WR_IVLAN_VLDM(x)    \
424     (((x) >> S_FW_FILTER_WR_IVLAN_VLDM) & M_FW_FILTER_WR_IVLAN_VLDM)
425 #define F_FW_FILTER_WR_IVLAN_VLDM       V_FW_FILTER_WR_IVLAN_VLDM(1U)
426
427 #define S_FW_FILTER_WR_OVLAN_VLDM       2
428 #define M_FW_FILTER_WR_OVLAN_VLDM       0x1
429 #define V_FW_FILTER_WR_OVLAN_VLDM(x)    ((x) << S_FW_FILTER_WR_OVLAN_VLDM)
430 #define G_FW_FILTER_WR_OVLAN_VLDM(x)    \
431     (((x) >> S_FW_FILTER_WR_OVLAN_VLDM) & M_FW_FILTER_WR_OVLAN_VLDM)
432 #define F_FW_FILTER_WR_OVLAN_VLDM       V_FW_FILTER_WR_OVLAN_VLDM(1U)
433
434 #define S_FW_FILTER_WR_RX_CHAN          15
435 #define M_FW_FILTER_WR_RX_CHAN          0x1
436 #define V_FW_FILTER_WR_RX_CHAN(x)       ((x) << S_FW_FILTER_WR_RX_CHAN)
437 #define G_FW_FILTER_WR_RX_CHAN(x)       \
438     (((x) >> S_FW_FILTER_WR_RX_CHAN) & M_FW_FILTER_WR_RX_CHAN)
439 #define F_FW_FILTER_WR_RX_CHAN  V_FW_FILTER_WR_RX_CHAN(1U)
440
441 #define S_FW_FILTER_WR_RX_RPL_IQ        0
442 #define M_FW_FILTER_WR_RX_RPL_IQ        0x3ff
443 #define V_FW_FILTER_WR_RX_RPL_IQ(x)     ((x) << S_FW_FILTER_WR_RX_RPL_IQ)
444 #define G_FW_FILTER_WR_RX_RPL_IQ(x)     \
445     (((x) >> S_FW_FILTER_WR_RX_RPL_IQ) & M_FW_FILTER_WR_RX_RPL_IQ)
446
447 #define S_FW_FILTER_WR_MACI     23
448 #define M_FW_FILTER_WR_MACI     0x1ff
449 #define V_FW_FILTER_WR_MACI(x)  ((x) << S_FW_FILTER_WR_MACI)
450 #define G_FW_FILTER_WR_MACI(x)  \
451     (((x) >> S_FW_FILTER_WR_MACI) & M_FW_FILTER_WR_MACI)
452
453 #define S_FW_FILTER_WR_MACIM    14
454 #define M_FW_FILTER_WR_MACIM    0x1ff
455 #define V_FW_FILTER_WR_MACIM(x) ((x) << S_FW_FILTER_WR_MACIM)
456 #define G_FW_FILTER_WR_MACIM(x) \
457     (((x) >> S_FW_FILTER_WR_MACIM) & M_FW_FILTER_WR_MACIM)
458
459 #define S_FW_FILTER_WR_FCOE     13
460 #define M_FW_FILTER_WR_FCOE     0x1
461 #define V_FW_FILTER_WR_FCOE(x)  ((x) << S_FW_FILTER_WR_FCOE)
462 #define G_FW_FILTER_WR_FCOE(x)  \
463     (((x) >> S_FW_FILTER_WR_FCOE) & M_FW_FILTER_WR_FCOE)
464 #define F_FW_FILTER_WR_FCOE     V_FW_FILTER_WR_FCOE(1U)
465
466 #define S_FW_FILTER_WR_FCOEM    12
467 #define M_FW_FILTER_WR_FCOEM    0x1
468 #define V_FW_FILTER_WR_FCOEM(x) ((x) << S_FW_FILTER_WR_FCOEM)
469 #define G_FW_FILTER_WR_FCOEM(x) \
470     (((x) >> S_FW_FILTER_WR_FCOEM) & M_FW_FILTER_WR_FCOEM)
471 #define F_FW_FILTER_WR_FCOEM    V_FW_FILTER_WR_FCOEM(1U)
472
473 #define S_FW_FILTER_WR_PORT     9
474 #define M_FW_FILTER_WR_PORT     0x7
475 #define V_FW_FILTER_WR_PORT(x)  ((x) << S_FW_FILTER_WR_PORT)
476 #define G_FW_FILTER_WR_PORT(x)  \
477     (((x) >> S_FW_FILTER_WR_PORT) & M_FW_FILTER_WR_PORT)
478
479 #define S_FW_FILTER_WR_PORTM    6
480 #define M_FW_FILTER_WR_PORTM    0x7
481 #define V_FW_FILTER_WR_PORTM(x) ((x) << S_FW_FILTER_WR_PORTM)
482 #define G_FW_FILTER_WR_PORTM(x) \
483     (((x) >> S_FW_FILTER_WR_PORTM) & M_FW_FILTER_WR_PORTM)
484
485 #define S_FW_FILTER_WR_MATCHTYPE        3
486 #define M_FW_FILTER_WR_MATCHTYPE        0x7
487 #define V_FW_FILTER_WR_MATCHTYPE(x)     ((x) << S_FW_FILTER_WR_MATCHTYPE)
488 #define G_FW_FILTER_WR_MATCHTYPE(x)     \
489     (((x) >> S_FW_FILTER_WR_MATCHTYPE) & M_FW_FILTER_WR_MATCHTYPE)
490
491 #define S_FW_FILTER_WR_MATCHTYPEM       0
492 #define M_FW_FILTER_WR_MATCHTYPEM       0x7
493 #define V_FW_FILTER_WR_MATCHTYPEM(x)    ((x) << S_FW_FILTER_WR_MATCHTYPEM)
494 #define G_FW_FILTER_WR_MATCHTYPEM(x)    \
495     (((x) >> S_FW_FILTER_WR_MATCHTYPEM) & M_FW_FILTER_WR_MATCHTYPEM)
496
497 struct fw_ulptx_wr {
498         __be32 op_to_compl;
499         __be32 flowid_len16;
500         __u64  cookie;
501 };
502
503 struct fw_tp_wr {
504         __be32 op_to_immdlen;
505         __be32 flowid_len16;
506         __u64  cookie;
507 };
508
509 struct fw_eth_tx_pkt_wr {
510         __be32 op_immdlen;
511         __be32 equiq_to_len16;
512         __be64 r3;
513 };
514
515 struct fw_eth_tx_pkts_wr {
516         __be32 op_immdlen;
517         __be32 equiq_to_len16;
518         __be32 r3;
519         __be16 plen;
520         __u8   npkt;
521         __u8   type;
522 };
523
524 struct fw_eq_flush_wr {
525         __u8   opcode;
526         __u8   r1[3];
527         __be32 equiq_to_len16;
528         __be64 r3;
529 };
530
531 enum fw_flowc_mnem {
532         FW_FLOWC_MNEM_PFNVFN,           /* PFN [15:8] VFN [7:0] */
533         FW_FLOWC_MNEM_CH,
534         FW_FLOWC_MNEM_PORT,
535         FW_FLOWC_MNEM_IQID,
536         FW_FLOWC_MNEM_SNDNXT,
537         FW_FLOWC_MNEM_RCVNXT,
538         FW_FLOWC_MNEM_SNDBUF,
539         FW_FLOWC_MNEM_MSS,
540         FW_FLOWC_MEM_TXDATAPLEN_MAX,
541 };
542
543 struct fw_flowc_mnemval {
544         __u8   mnemonic;
545         __u8   r4[3];
546         __be32 val;
547 };
548
549 struct fw_flowc_wr {
550         __be32 op_to_nparams;
551         __be32 flowid_len16;
552 #ifndef C99_NOT_SUPPORTED
553         struct fw_flowc_mnemval mnemval[0];
554 #endif
555 };
556
557 #define S_FW_FLOWC_WR_NPARAMS           0
558 #define M_FW_FLOWC_WR_NPARAMS           0xff
559 #define V_FW_FLOWC_WR_NPARAMS(x)        ((x) << S_FW_FLOWC_WR_NPARAMS)
560 #define G_FW_FLOWC_WR_NPARAMS(x)        \
561     (((x) >> S_FW_FLOWC_WR_NPARAMS) & M_FW_FLOWC_WR_NPARAMS)
562
563 struct fw_ofld_tx_data_wr {
564         __be32 op_to_immdlen;
565         __be32 flowid_len16;
566         __be32 plen;
567         __be32 tunnel_to_proxy;
568 };
569
570 #define S_FW_OFLD_TX_DATA_WR_TUNNEL     19
571 #define M_FW_OFLD_TX_DATA_WR_TUNNEL     0x1
572 #define V_FW_OFLD_TX_DATA_WR_TUNNEL(x)  ((x) << S_FW_OFLD_TX_DATA_WR_TUNNEL)
573 #define G_FW_OFLD_TX_DATA_WR_TUNNEL(x)  \
574     (((x) >> S_FW_OFLD_TX_DATA_WR_TUNNEL) & M_FW_OFLD_TX_DATA_WR_TUNNEL)
575 #define F_FW_OFLD_TX_DATA_WR_TUNNEL     V_FW_OFLD_TX_DATA_WR_TUNNEL(1U)
576
577 #define S_FW_OFLD_TX_DATA_WR_SAVE       18
578 #define M_FW_OFLD_TX_DATA_WR_SAVE       0x1
579 #define V_FW_OFLD_TX_DATA_WR_SAVE(x)    ((x) << S_FW_OFLD_TX_DATA_WR_SAVE)
580 #define G_FW_OFLD_TX_DATA_WR_SAVE(x)    \
581     (((x) >> S_FW_OFLD_TX_DATA_WR_SAVE) & M_FW_OFLD_TX_DATA_WR_SAVE)
582 #define F_FW_OFLD_TX_DATA_WR_SAVE       V_FW_OFLD_TX_DATA_WR_SAVE(1U)
583
584 #define S_FW_OFLD_TX_DATA_WR_FLUSH      17
585 #define M_FW_OFLD_TX_DATA_WR_FLUSH      0x1
586 #define V_FW_OFLD_TX_DATA_WR_FLUSH(x)   ((x) << S_FW_OFLD_TX_DATA_WR_FLUSH)
587 #define G_FW_OFLD_TX_DATA_WR_FLUSH(x)   \
588     (((x) >> S_FW_OFLD_TX_DATA_WR_FLUSH) & M_FW_OFLD_TX_DATA_WR_FLUSH)
589 #define F_FW_OFLD_TX_DATA_WR_FLUSH      V_FW_OFLD_TX_DATA_WR_FLUSH(1U)
590
591 #define S_FW_OFLD_TX_DATA_WR_URGENT     16
592 #define M_FW_OFLD_TX_DATA_WR_URGENT     0x1
593 #define V_FW_OFLD_TX_DATA_WR_URGENT(x)  ((x) << S_FW_OFLD_TX_DATA_WR_URGENT)
594 #define G_FW_OFLD_TX_DATA_WR_URGENT(x)  \
595     (((x) >> S_FW_OFLD_TX_DATA_WR_URGENT) & M_FW_OFLD_TX_DATA_WR_URGENT)
596 #define F_FW_OFLD_TX_DATA_WR_URGENT     V_FW_OFLD_TX_DATA_WR_URGENT(1U)
597
598 #define S_FW_OFLD_TX_DATA_WR_MORE       15
599 #define M_FW_OFLD_TX_DATA_WR_MORE       0x1
600 #define V_FW_OFLD_TX_DATA_WR_MORE(x)    ((x) << S_FW_OFLD_TX_DATA_WR_MORE)
601 #define G_FW_OFLD_TX_DATA_WR_MORE(x)    \
602     (((x) >> S_FW_OFLD_TX_DATA_WR_MORE) & M_FW_OFLD_TX_DATA_WR_MORE)
603 #define F_FW_OFLD_TX_DATA_WR_MORE       V_FW_OFLD_TX_DATA_WR_MORE(1U)
604
605 #define S_FW_OFLD_TX_DATA_WR_SHOVE      14
606 #define M_FW_OFLD_TX_DATA_WR_SHOVE      0x1
607 #define V_FW_OFLD_TX_DATA_WR_SHOVE(x)   ((x) << S_FW_OFLD_TX_DATA_WR_SHOVE)
608 #define G_FW_OFLD_TX_DATA_WR_SHOVE(x)   \
609     (((x) >> S_FW_OFLD_TX_DATA_WR_SHOVE) & M_FW_OFLD_TX_DATA_WR_SHOVE)
610 #define F_FW_OFLD_TX_DATA_WR_SHOVE      V_FW_OFLD_TX_DATA_WR_SHOVE(1U)
611
612 #define S_FW_OFLD_TX_DATA_WR_ULPMODE    10
613 #define M_FW_OFLD_TX_DATA_WR_ULPMODE    0xf
614 #define V_FW_OFLD_TX_DATA_WR_ULPMODE(x) ((x) << S_FW_OFLD_TX_DATA_WR_ULPMODE)
615 #define G_FW_OFLD_TX_DATA_WR_ULPMODE(x) \
616     (((x) >> S_FW_OFLD_TX_DATA_WR_ULPMODE) & M_FW_OFLD_TX_DATA_WR_ULPMODE)
617
618 #define S_FW_OFLD_TX_DATA_WR_ULPSUBMODE         6
619 #define M_FW_OFLD_TX_DATA_WR_ULPSUBMODE         0xf
620 #define V_FW_OFLD_TX_DATA_WR_ULPSUBMODE(x)      \
621     ((x) << S_FW_OFLD_TX_DATA_WR_ULPSUBMODE)
622 #define G_FW_OFLD_TX_DATA_WR_ULPSUBMODE(x)      \
623     (((x) >> S_FW_OFLD_TX_DATA_WR_ULPSUBMODE) & \
624      M_FW_OFLD_TX_DATA_WR_ULPSUBMODE)
625
626 #define S_FW_OFLD_TX_DATA_WR_PROXY      5
627 #define M_FW_OFLD_TX_DATA_WR_PROXY      0x1
628 #define V_FW_OFLD_TX_DATA_WR_PROXY(x)   ((x) << S_FW_OFLD_TX_DATA_WR_PROXY)
629 #define G_FW_OFLD_TX_DATA_WR_PROXY(x)   \
630     (((x) >> S_FW_OFLD_TX_DATA_WR_PROXY) & M_FW_OFLD_TX_DATA_WR_PROXY)
631 #define F_FW_OFLD_TX_DATA_WR_PROXY      V_FW_OFLD_TX_DATA_WR_PROXY(1U)
632
633 struct fw_cmd_wr {
634         __be32 op_dma;
635         __be32 len16_pkd;
636         __be64 cookie_daddr;
637 };
638
639 #define S_FW_CMD_WR_DMA         17
640 #define M_FW_CMD_WR_DMA         0x1
641 #define V_FW_CMD_WR_DMA(x)      ((x) << S_FW_CMD_WR_DMA)
642 #define G_FW_CMD_WR_DMA(x)      (((x) >> S_FW_CMD_WR_DMA) & M_FW_CMD_WR_DMA)
643 #define F_FW_CMD_WR_DMA V_FW_CMD_WR_DMA(1U)
644
645 struct fw_eth_tx_pkt_vm_wr {
646         __be32 op_immdlen;
647         __be32 equiq_to_len16;
648         __be32 r3[2];
649         __u8   ethmacdst[6];
650         __u8   ethmacsrc[6];
651         __be16 ethtype;
652         __be16 vlantci;
653 };
654
655 /******************************************************************************
656  *   R I   W O R K   R E Q U E S T s
657  **************************************/
658
659 enum fw_ri_wr_opcode {
660         FW_RI_RDMA_WRITE                = 0x0,               /* IETF RDMAP v1.0 ... */
661         FW_RI_READ_REQ                  = 0x1,
662         FW_RI_READ_RESP                 = 0x2,
663         FW_RI_SEND                      = 0x3,
664         FW_RI_SEND_WITH_INV             = 0x4,
665         FW_RI_SEND_WITH_SE              = 0x5,
666         FW_RI_SEND_WITH_SE_INV          = 0x6,
667         FW_RI_TERMINATE                 = 0x7,
668         FW_RI_RDMA_INIT                 = 0x8,                /* CHELSIO RI specific ... */
669         FW_RI_BIND_MW                   = 0x9,
670         FW_RI_FAST_REGISTER             = 0xa,
671         FW_RI_LOCAL_INV                 = 0xb,
672         FW_RI_QP_MODIFY                 = 0xc,
673         FW_RI_BYPASS                    = 0xd,
674         FW_RI_RECEIVE                   = 0xe,
675
676         FW_RI_SGE_EC_CR_RETURN          = 0xf
677 };
678
679 enum fw_ri_wr_flags {
680         FW_RI_COMPLETION_FLAG           = 0x01,
681         FW_RI_NOTIFICATION_FLAG         = 0x02,
682         FW_RI_SOLICITED_EVENT_FLAG      = 0x04,
683         FW_RI_READ_FENCE_FLAG           = 0x08,
684         FW_RI_LOCAL_FENCE_FLAG          = 0x10,
685         FW_RI_RDMA_READ_INVALIDATE      = 0x20
686 };
687
688 enum fw_ri_mpa_attrs {
689         FW_RI_MPA_RX_MARKER_ENABLE      = 0x01,
690         FW_RI_MPA_TX_MARKER_ENABLE      = 0x02,
691         FW_RI_MPA_CRC_ENABLE            = 0x04,
692         FW_RI_MPA_IETF_ENABLE           = 0x08
693 };
694
695 enum fw_ri_qp_caps {
696         FW_RI_QP_RDMA_READ_ENABLE       = 0x01,
697         FW_RI_QP_RDMA_WRITE_ENABLE      = 0x02,
698         FW_RI_QP_BIND_ENABLE            = 0x04,
699         FW_RI_QP_FAST_REGISTER_ENABLE   = 0x08,
700         FW_RI_QP_STAG0_ENABLE           = 0x10,
701         FW_RI_QP_RDMA_READ_REQ_0B_ENABLE= 0x80,
702 };
703
704 enum fw_ri_addr_type {
705         FW_RI_ZERO_BASED_TO             = 0x00,
706         FW_RI_VA_BASED_TO               = 0x01
707 };
708
709 enum fw_ri_mem_perms {
710         FW_RI_MEM_ACCESS_REM_WRITE      = 0x01,
711         FW_RI_MEM_ACCESS_REM_READ       = 0x02,
712         FW_RI_MEM_ACCESS_REM            = 0x03,
713         FW_RI_MEM_ACCESS_LOCAL_WRITE    = 0x04,
714         FW_RI_MEM_ACCESS_LOCAL_READ     = 0x08,
715         FW_RI_MEM_ACCESS_LOCAL          = 0x0C
716 };
717
718 enum fw_ri_stag_type {
719         FW_RI_STAG_NSMR                 = 0x00,
720         FW_RI_STAG_SMR                  = 0x01,
721         FW_RI_STAG_MW                   = 0x02,
722         FW_RI_STAG_MW_RELAXED           = 0x03
723 };
724
725 enum fw_ri_data_op {
726         FW_RI_DATA_IMMD                 = 0x81,
727         FW_RI_DATA_DSGL                 = 0x82,
728         FW_RI_DATA_ISGL                 = 0x83
729 };
730
731 enum fw_ri_sgl_depth {
732         FW_RI_SGL_DEPTH_MAX_SQ          = 16,
733         FW_RI_SGL_DEPTH_MAX_RQ          = 4
734 };
735
736 enum fw_ri_cqe_err {
737         FW_RI_CQE_ERR_SUCCESS           = 0x00, /* success, no error detected */
738         FW_RI_CQE_ERR_STAG              = 0x01, /* STAG invalid */
739         FW_RI_CQE_ERR_PDID              = 0x02, /* PDID mismatch */
740         FW_RI_CQE_ERR_QPID              = 0x03, /* QPID mismatch */
741         FW_RI_CQE_ERR_ACCESS            = 0x04, /* Invalid access right */
742         FW_RI_CQE_ERR_WRAP              = 0x05, /* Wrap error */
743         FW_RI_CQE_ERR_BOUND             = 0x06, /* base and bounds violation */
744         FW_RI_CQE_ERR_INVALIDATE_SHARED_MR = 0x07, /* attempt to invalidate a SMR */
745         FW_RI_CQE_ERR_INVALIDATE_MR_WITH_MW_BOUND = 0x08, /* attempt to invalidate a MR w MW */
746         FW_RI_CQE_ERR_ECC               = 0x09, /* ECC error detected */
747         FW_RI_CQE_ERR_ECC_PSTAG         = 0x0A, /* ECC error detected when reading the PSTAG for a MW Invalidate */
748         FW_RI_CQE_ERR_PBL_ADDR_BOUND    = 0x0B, /* pbl address out of bound : software error */
749         FW_RI_CQE_ERR_CRC               = 0x10, /* CRC error */
750         FW_RI_CQE_ERR_MARKER            = 0x11, /* Marker error */
751         FW_RI_CQE_ERR_PDU_LEN_ERR       = 0x12, /* invalid PDU length */
752         FW_RI_CQE_ERR_OUT_OF_RQE        = 0x13, /* out of RQE */
753         FW_RI_CQE_ERR_DDP_VERSION       = 0x14, /* wrong DDP version */
754         FW_RI_CQE_ERR_RDMA_VERSION      = 0x15, /* wrong RDMA version */
755         FW_RI_CQE_ERR_OPCODE            = 0x16, /* invalid rdma opcode */
756         FW_RI_CQE_ERR_DDP_QUEUE_NUM     = 0x17, /* invalid ddp queue number */
757         FW_RI_CQE_ERR_MSN               = 0x18, /* MSN error */
758         FW_RI_CQE_ERR_TBIT              = 0x19, /* tag bit not set correctly */
759         FW_RI_CQE_ERR_MO                = 0x1A, /* MO not zero for TERMINATE or READ_REQ */
760         FW_RI_CQE_ERR_MSN_GAP           = 0x1B, /* */
761         FW_RI_CQE_ERR_MSN_RANGE         = 0x1C, /* */
762         FW_RI_CQE_ERR_IRD_OVERFLOW      = 0x1D, /* */
763         FW_RI_CQE_ERR_RQE_ADDR_BOUND    = 0x1E, /*  RQE address out of bound : software error */
764         FW_RI_CQE_ERR_INTERNAL_ERR      = 0x1F  /* internel error (opcode mismatch) */
765
766 };
767
768 struct fw_ri_dsge_pair {
769         __be32  len[2];
770         __be64  addr[2];
771 };
772
773 struct fw_ri_dsgl {
774         __u8    op;
775         __u8    r1;
776         __be16  nsge;
777         __be32  len0;
778         __be64  addr0;
779 #ifndef C99_NOT_SUPPORTED
780         struct fw_ri_dsge_pair sge[0];
781 #endif
782 };
783
784 struct fw_ri_sge {
785         __be32 stag;
786         __be32 len;
787         __be64 to;
788 };
789
790 struct fw_ri_isgl {
791         __u8    op;
792         __u8    r1;
793         __be16  nsge;
794         __be32  r2;
795 #ifndef C99_NOT_SUPPORTED
796         struct fw_ri_sge sge[0];
797 #endif
798 };
799
800 struct fw_ri_immd {
801         __u8    op;
802         __u8    r1;
803         __be16  r2;
804         __be32  immdlen;
805 #ifndef C99_NOT_SUPPORTED
806         __u8    data[0];
807 #endif
808 };
809
810 struct fw_ri_tpte {
811         __be32 valid_to_pdid;
812         __be32 locread_to_qpid;
813         __be32 nosnoop_pbladdr;
814         __be32 len_lo;
815         __be32 va_hi;
816         __be32 va_lo_fbo;
817         __be32 dca_mwbcnt_pstag;
818         __be32 len_hi;
819 };
820
821 #define S_FW_RI_TPTE_VALID              31
822 #define M_FW_RI_TPTE_VALID              0x1
823 #define V_FW_RI_TPTE_VALID(x)           ((x) << S_FW_RI_TPTE_VALID)
824 #define G_FW_RI_TPTE_VALID(x)           \
825     (((x) >> S_FW_RI_TPTE_VALID) & M_FW_RI_TPTE_VALID)
826 #define F_FW_RI_TPTE_VALID              V_FW_RI_TPTE_VALID(1U)
827
828 #define S_FW_RI_TPTE_STAGKEY            23
829 #define M_FW_RI_TPTE_STAGKEY            0xff
830 #define V_FW_RI_TPTE_STAGKEY(x)         ((x) << S_FW_RI_TPTE_STAGKEY)
831 #define G_FW_RI_TPTE_STAGKEY(x)         \
832     (((x) >> S_FW_RI_TPTE_STAGKEY) & M_FW_RI_TPTE_STAGKEY)
833
834 #define S_FW_RI_TPTE_STAGSTATE          22
835 #define M_FW_RI_TPTE_STAGSTATE          0x1
836 #define V_FW_RI_TPTE_STAGSTATE(x)       ((x) << S_FW_RI_TPTE_STAGSTATE)
837 #define G_FW_RI_TPTE_STAGSTATE(x)       \
838     (((x) >> S_FW_RI_TPTE_STAGSTATE) & M_FW_RI_TPTE_STAGSTATE)
839 #define F_FW_RI_TPTE_STAGSTATE          V_FW_RI_TPTE_STAGSTATE(1U)
840
841 #define S_FW_RI_TPTE_STAGTYPE           20
842 #define M_FW_RI_TPTE_STAGTYPE           0x3
843 #define V_FW_RI_TPTE_STAGTYPE(x)        ((x) << S_FW_RI_TPTE_STAGTYPE)
844 #define G_FW_RI_TPTE_STAGTYPE(x)        \
845     (((x) >> S_FW_RI_TPTE_STAGTYPE) & M_FW_RI_TPTE_STAGTYPE)
846
847 #define S_FW_RI_TPTE_PDID               0
848 #define M_FW_RI_TPTE_PDID               0xfffff
849 #define V_FW_RI_TPTE_PDID(x)            ((x) << S_FW_RI_TPTE_PDID)
850 #define G_FW_RI_TPTE_PDID(x)            \
851     (((x) >> S_FW_RI_TPTE_PDID) & M_FW_RI_TPTE_PDID)
852
853 #define S_FW_RI_TPTE_PERM               28
854 #define M_FW_RI_TPTE_PERM               0xf
855 #define V_FW_RI_TPTE_PERM(x)            ((x) << S_FW_RI_TPTE_PERM)
856 #define G_FW_RI_TPTE_PERM(x)            \
857     (((x) >> S_FW_RI_TPTE_PERM) & M_FW_RI_TPTE_PERM)
858
859 #define S_FW_RI_TPTE_REMINVDIS          27
860 #define M_FW_RI_TPTE_REMINVDIS          0x1
861 #define V_FW_RI_TPTE_REMINVDIS(x)       ((x) << S_FW_RI_TPTE_REMINVDIS)
862 #define G_FW_RI_TPTE_REMINVDIS(x)       \
863     (((x) >> S_FW_RI_TPTE_REMINVDIS) & M_FW_RI_TPTE_REMINVDIS)
864 #define F_FW_RI_TPTE_REMINVDIS          V_FW_RI_TPTE_REMINVDIS(1U)
865
866 #define S_FW_RI_TPTE_ADDRTYPE           26
867 #define M_FW_RI_TPTE_ADDRTYPE           1
868 #define V_FW_RI_TPTE_ADDRTYPE(x)        ((x) << S_FW_RI_TPTE_ADDRTYPE)
869 #define G_FW_RI_TPTE_ADDRTYPE(x)        \
870     (((x) >> S_FW_RI_TPTE_ADDRTYPE) & M_FW_RI_TPTE_ADDRTYPE)
871 #define F_FW_RI_TPTE_ADDRTYPE           V_FW_RI_TPTE_ADDRTYPE(1U)
872
873 #define S_FW_RI_TPTE_MWBINDEN           25
874 #define M_FW_RI_TPTE_MWBINDEN           0x1
875 #define V_FW_RI_TPTE_MWBINDEN(x)        ((x) << S_FW_RI_TPTE_MWBINDEN)
876 #define G_FW_RI_TPTE_MWBINDEN(x)        \
877     (((x) >> S_FW_RI_TPTE_MWBINDEN) & M_FW_RI_TPTE_MWBINDEN)
878 #define F_FW_RI_TPTE_MWBINDEN           V_FW_RI_TPTE_MWBINDEN(1U)
879
880 #define S_FW_RI_TPTE_PS                 20
881 #define M_FW_RI_TPTE_PS                 0x1f
882 #define V_FW_RI_TPTE_PS(x)              ((x) << S_FW_RI_TPTE_PS)
883 #define G_FW_RI_TPTE_PS(x)              \
884     (((x) >> S_FW_RI_TPTE_PS) & M_FW_RI_TPTE_PS)
885
886 #define S_FW_RI_TPTE_QPID               0
887 #define M_FW_RI_TPTE_QPID               0xfffff
888 #define V_FW_RI_TPTE_QPID(x)            ((x) << S_FW_RI_TPTE_QPID)
889 #define G_FW_RI_TPTE_QPID(x)            \
890     (((x) >> S_FW_RI_TPTE_QPID) & M_FW_RI_TPTE_QPID)
891
892 #define S_FW_RI_TPTE_NOSNOOP            31
893 #define M_FW_RI_TPTE_NOSNOOP            0x1
894 #define V_FW_RI_TPTE_NOSNOOP(x)         ((x) << S_FW_RI_TPTE_NOSNOOP)
895 #define G_FW_RI_TPTE_NOSNOOP(x)         \
896     (((x) >> S_FW_RI_TPTE_NOSNOOP) & M_FW_RI_TPTE_NOSNOOP)
897 #define F_FW_RI_TPTE_NOSNOOP            V_FW_RI_TPTE_NOSNOOP(1U)
898
899 #define S_FW_RI_TPTE_PBLADDR            0
900 #define M_FW_RI_TPTE_PBLADDR            0x1fffffff
901 #define V_FW_RI_TPTE_PBLADDR(x)         ((x) << S_FW_RI_TPTE_PBLADDR)
902 #define G_FW_RI_TPTE_PBLADDR(x)         \
903     (((x) >> S_FW_RI_TPTE_PBLADDR) & M_FW_RI_TPTE_PBLADDR)
904
905 #define S_FW_RI_TPTE_DCA                24
906 #define M_FW_RI_TPTE_DCA                0x1f
907 #define V_FW_RI_TPTE_DCA(x)             ((x) << S_FW_RI_TPTE_DCA)
908 #define G_FW_RI_TPTE_DCA(x)             \
909     (((x) >> S_FW_RI_TPTE_DCA) & M_FW_RI_TPTE_DCA)
910
911 #define S_FW_RI_TPTE_MWBCNT_PSTAG       0
912 #define M_FW_RI_TPTE_MWBCNT_PSTAG       0xffffff
913 #define V_FW_RI_TPTE_MWBCNT_PSTAT(x)    \
914     ((x) << S_FW_RI_TPTE_MWBCNT_PSTAG)
915 #define G_FW_RI_TPTE_MWBCNT_PSTAG(x)    \
916     (((x) >> S_FW_RI_TPTE_MWBCNT_PSTAG) & M_FW_RI_TPTE_MWBCNT_PSTAG)
917
918 enum fw_ri_cqe_rxtx {
919         FW_RI_CQE_RXTX_RX = 0x0,
920         FW_RI_CQE_RXTX_TX = 0x1,
921 };
922
923 struct fw_ri_cqe {
924         union fw_ri_rxtx {
925                 struct fw_ri_scqe {
926                 __be32  qpid_n_stat_rxtx_type;
927                 __be32  plen;
928                 __be32  reserved;
929                 __be32  wrid;
930                 } scqe;
931                 struct fw_ri_rcqe {
932                 __be32  qpid_n_stat_rxtx_type;
933                 __be32  plen;
934                 __be32  stag;
935                 __be32  msn;
936                 } rcqe;
937         } u;
938 };
939
940 #define S_FW_RI_CQE_QPID      12
941 #define M_FW_RI_CQE_QPID      0xfffff
942 #define V_FW_RI_CQE_QPID(x)   ((x) << S_FW_RI_CQE_QPID)
943 #define G_FW_RI_CQE_QPID(x)   \
944     (((x) >> S_FW_RI_CQE_QPID) &  M_FW_RI_CQE_QPID)
945
946 #define S_FW_RI_CQE_NOTIFY    10
947 #define M_FW_RI_CQE_NOTIFY    0x1
948 #define V_FW_RI_CQE_NOTIFY(x) ((x) << S_FW_RI_CQE_NOTIFY)
949 #define G_FW_RI_CQE_NOTIFY(x) \
950     (((x) >> S_FW_RI_CQE_NOTIFY) &  M_FW_RI_CQE_NOTIFY)
951
952 #define S_FW_RI_CQE_STATUS    5
953 #define M_FW_RI_CQE_STATUS    0x1f
954 #define V_FW_RI_CQE_STATUS(x) ((x) << S_FW_RI_CQE_STATUS)
955 #define G_FW_RI_CQE_STATUS(x) \
956     (((x) >> S_FW_RI_CQE_STATUS) &  M_FW_RI_CQE_STATUS)
957
958
959 #define S_FW_RI_CQE_RXTX      4
960 #define M_FW_RI_CQE_RXTX      0x1
961 #define V_FW_RI_CQE_RXTX(x)   ((x) << S_FW_RI_CQE_RXTX)
962 #define G_FW_RI_CQE_RXTX(x)   \
963     (((x) >> S_FW_RI_CQE_RXTX) &  M_FW_RI_CQE_RXTX)
964
965 #define S_FW_RI_CQE_TYPE      0
966 #define M_FW_RI_CQE_TYPE      0xf
967 #define V_FW_RI_CQE_TYPE(x)   ((x) << S_FW_RI_CQE_TYPE)
968 #define G_FW_RI_CQE_TYPE(x)   \
969     (((x) >> S_FW_RI_CQE_TYPE) &  M_FW_RI_CQE_TYPE)
970
971 enum fw_ri_res_type {
972         FW_RI_RES_TYPE_SQ,
973         FW_RI_RES_TYPE_RQ,
974         FW_RI_RES_TYPE_CQ,
975 };
976
977 enum fw_ri_res_op {
978         FW_RI_RES_OP_WRITE,
979         FW_RI_RES_OP_RESET,
980 };
981
982 struct fw_ri_res {
983         union fw_ri_restype {
984                 struct fw_ri_res_sqrq {
985                         __u8   restype;
986                         __u8   op;
987                         __be16 r3;
988                         __be32 eqid;
989                         __be32 r4[2];
990                         __be32 fetchszm_to_iqid;
991                         __be32 dcaen_to_eqsize;
992                         __be64 eqaddr;
993                 } sqrq;
994                 struct fw_ri_res_cq {
995                         __u8   restype;
996                         __u8   op;
997                         __be16 r3;
998                         __be32 iqid;
999                         __be32 r4[2];
1000                         __be32 iqandst_to_iqandstindex;
1001                         __be16 iqdroprss_to_iqesize;
1002                         __be16 iqsize;
1003                         __be64 iqaddr;
1004                         __be32 iqns_iqro;
1005                         __be32 r6_lo;
1006                         __be64 r7;
1007                 } cq;
1008         } u;
1009 };
1010
1011 struct fw_ri_res_wr {
1012         __be32 op_nres;
1013         __be32 len16_pkd;
1014         __u64  cookie;
1015 #ifndef C99_NOT_SUPPORTED
1016         struct fw_ri_res res[0];
1017 #endif
1018 };
1019
1020 #define S_FW_RI_RES_WR_NRES     0
1021 #define M_FW_RI_RES_WR_NRES     0xff
1022 #define V_FW_RI_RES_WR_NRES(x)  ((x) << S_FW_RI_RES_WR_NRES)
1023 #define G_FW_RI_RES_WR_NRES(x)  \
1024     (((x) >> S_FW_RI_RES_WR_NRES) & M_FW_RI_RES_WR_NRES)
1025
1026 #define S_FW_RI_RES_WR_FETCHSZM         26
1027 #define M_FW_RI_RES_WR_FETCHSZM         0x1
1028 #define V_FW_RI_RES_WR_FETCHSZM(x)      ((x) << S_FW_RI_RES_WR_FETCHSZM)
1029 #define G_FW_RI_RES_WR_FETCHSZM(x)      \
1030     (((x) >> S_FW_RI_RES_WR_FETCHSZM) & M_FW_RI_RES_WR_FETCHSZM)
1031 #define F_FW_RI_RES_WR_FETCHSZM V_FW_RI_RES_WR_FETCHSZM(1U)
1032
1033 #define S_FW_RI_RES_WR_STATUSPGNS       25
1034 #define M_FW_RI_RES_WR_STATUSPGNS       0x1
1035 #define V_FW_RI_RES_WR_STATUSPGNS(x)    ((x) << S_FW_RI_RES_WR_STATUSPGNS)
1036 #define G_FW_RI_RES_WR_STATUSPGNS(x)    \
1037     (((x) >> S_FW_RI_RES_WR_STATUSPGNS) & M_FW_RI_RES_WR_STATUSPGNS)
1038 #define F_FW_RI_RES_WR_STATUSPGNS       V_FW_RI_RES_WR_STATUSPGNS(1U)
1039
1040 #define S_FW_RI_RES_WR_STATUSPGRO       24
1041 #define M_FW_RI_RES_WR_STATUSPGRO       0x1
1042 #define V_FW_RI_RES_WR_STATUSPGRO(x)    ((x) << S_FW_RI_RES_WR_STATUSPGRO)
1043 #define G_FW_RI_RES_WR_STATUSPGRO(x)    \
1044     (((x) >> S_FW_RI_RES_WR_STATUSPGRO) & M_FW_RI_RES_WR_STATUSPGRO)
1045 #define F_FW_RI_RES_WR_STATUSPGRO       V_FW_RI_RES_WR_STATUSPGRO(1U)
1046
1047 #define S_FW_RI_RES_WR_FETCHNS          23
1048 #define M_FW_RI_RES_WR_FETCHNS          0x1
1049 #define V_FW_RI_RES_WR_FETCHNS(x)       ((x) << S_FW_RI_RES_WR_FETCHNS)
1050 #define G_FW_RI_RES_WR_FETCHNS(x)       \
1051     (((x) >> S_FW_RI_RES_WR_FETCHNS) & M_FW_RI_RES_WR_FETCHNS)
1052 #define F_FW_RI_RES_WR_FETCHNS  V_FW_RI_RES_WR_FETCHNS(1U)
1053
1054 #define S_FW_RI_RES_WR_FETCHRO          22
1055 #define M_FW_RI_RES_WR_FETCHRO          0x1
1056 #define V_FW_RI_RES_WR_FETCHRO(x)       ((x) << S_FW_RI_RES_WR_FETCHRO)
1057 #define G_FW_RI_RES_WR_FETCHRO(x)       \
1058     (((x) >> S_FW_RI_RES_WR_FETCHRO) & M_FW_RI_RES_WR_FETCHRO)
1059 #define F_FW_RI_RES_WR_FETCHRO  V_FW_RI_RES_WR_FETCHRO(1U)
1060
1061 #define S_FW_RI_RES_WR_HOSTFCMODE       20
1062 #define M_FW_RI_RES_WR_HOSTFCMODE       0x3
1063 #define V_FW_RI_RES_WR_HOSTFCMODE(x)    ((x) << S_FW_RI_RES_WR_HOSTFCMODE)
1064 #define G_FW_RI_RES_WR_HOSTFCMODE(x)    \
1065     (((x) >> S_FW_RI_RES_WR_HOSTFCMODE) & M_FW_RI_RES_WR_HOSTFCMODE)
1066
1067 #define S_FW_RI_RES_WR_CPRIO    19
1068 #define M_FW_RI_RES_WR_CPRIO    0x1
1069 #define V_FW_RI_RES_WR_CPRIO(x) ((x) << S_FW_RI_RES_WR_CPRIO)
1070 #define G_FW_RI_RES_WR_CPRIO(x) \
1071     (((x) >> S_FW_RI_RES_WR_CPRIO) & M_FW_RI_RES_WR_CPRIO)
1072 #define F_FW_RI_RES_WR_CPRIO    V_FW_RI_RES_WR_CPRIO(1U)
1073
1074 #define S_FW_RI_RES_WR_ONCHIP           18
1075 #define M_FW_RI_RES_WR_ONCHIP           0x1
1076 #define V_FW_RI_RES_WR_ONCHIP(x)        ((x) << S_FW_RI_RES_WR_ONCHIP)
1077 #define G_FW_RI_RES_WR_ONCHIP(x)        \
1078     (((x) >> S_FW_RI_RES_WR_ONCHIP) & M_FW_RI_RES_WR_ONCHIP)
1079 #define F_FW_RI_RES_WR_ONCHIP   V_FW_RI_RES_WR_ONCHIP(1U)
1080
1081 #define S_FW_RI_RES_WR_PCIECHN          16
1082 #define M_FW_RI_RES_WR_PCIECHN          0x3
1083 #define V_FW_RI_RES_WR_PCIECHN(x)       ((x) << S_FW_RI_RES_WR_PCIECHN)
1084 #define G_FW_RI_RES_WR_PCIECHN(x)       \
1085     (((x) >> S_FW_RI_RES_WR_PCIECHN) & M_FW_RI_RES_WR_PCIECHN)
1086
1087 #define S_FW_RI_RES_WR_IQID     0
1088 #define M_FW_RI_RES_WR_IQID     0xffff
1089 #define V_FW_RI_RES_WR_IQID(x)  ((x) << S_FW_RI_RES_WR_IQID)
1090 #define G_FW_RI_RES_WR_IQID(x)  \
1091     (((x) >> S_FW_RI_RES_WR_IQID) & M_FW_RI_RES_WR_IQID)
1092
1093 #define S_FW_RI_RES_WR_DCAEN    31
1094 #define M_FW_RI_RES_WR_DCAEN    0x1
1095 #define V_FW_RI_RES_WR_DCAEN(x) ((x) << S_FW_RI_RES_WR_DCAEN)
1096 #define G_FW_RI_RES_WR_DCAEN(x) \
1097     (((x) >> S_FW_RI_RES_WR_DCAEN) & M_FW_RI_RES_WR_DCAEN)
1098 #define F_FW_RI_RES_WR_DCAEN    V_FW_RI_RES_WR_DCAEN(1U)
1099
1100 #define S_FW_RI_RES_WR_DCACPU           26
1101 #define M_FW_RI_RES_WR_DCACPU           0x1f
1102 #define V_FW_RI_RES_WR_DCACPU(x)        ((x) << S_FW_RI_RES_WR_DCACPU)
1103 #define G_FW_RI_RES_WR_DCACPU(x)        \
1104     (((x) >> S_FW_RI_RES_WR_DCACPU) & M_FW_RI_RES_WR_DCACPU)
1105
1106 #define S_FW_RI_RES_WR_FBMIN    23
1107 #define M_FW_RI_RES_WR_FBMIN    0x7
1108 #define V_FW_RI_RES_WR_FBMIN(x) ((x) << S_FW_RI_RES_WR_FBMIN)
1109 #define G_FW_RI_RES_WR_FBMIN(x) \
1110     (((x) >> S_FW_RI_RES_WR_FBMIN) & M_FW_RI_RES_WR_FBMIN)
1111
1112 #define S_FW_RI_RES_WR_FBMAX    20
1113 #define M_FW_RI_RES_WR_FBMAX    0x7
1114 #define V_FW_RI_RES_WR_FBMAX(x) ((x) << S_FW_RI_RES_WR_FBMAX)
1115 #define G_FW_RI_RES_WR_FBMAX(x) \
1116     (((x) >> S_FW_RI_RES_WR_FBMAX) & M_FW_RI_RES_WR_FBMAX)
1117
1118 #define S_FW_RI_RES_WR_CIDXFTHRESHO     19
1119 #define M_FW_RI_RES_WR_CIDXFTHRESHO     0x1
1120 #define V_FW_RI_RES_WR_CIDXFTHRESHO(x)  ((x) << S_FW_RI_RES_WR_CIDXFTHRESHO)
1121 #define G_FW_RI_RES_WR_CIDXFTHRESHO(x)  \
1122     (((x) >> S_FW_RI_RES_WR_CIDXFTHRESHO) & M_FW_RI_RES_WR_CIDXFTHRESHO)
1123 #define F_FW_RI_RES_WR_CIDXFTHRESHO     V_FW_RI_RES_WR_CIDXFTHRESHO(1U)
1124
1125 #define S_FW_RI_RES_WR_CIDXFTHRESH      16
1126 #define M_FW_RI_RES_WR_CIDXFTHRESH      0x7
1127 #define V_FW_RI_RES_WR_CIDXFTHRESH(x)   ((x) << S_FW_RI_RES_WR_CIDXFTHRESH)
1128 #define G_FW_RI_RES_WR_CIDXFTHRESH(x)   \
1129     (((x) >> S_FW_RI_RES_WR_CIDXFTHRESH) & M_FW_RI_RES_WR_CIDXFTHRESH)
1130
1131 #define S_FW_RI_RES_WR_EQSIZE           0
1132 #define M_FW_RI_RES_WR_EQSIZE           0xffff
1133 #define V_FW_RI_RES_WR_EQSIZE(x)        ((x) << S_FW_RI_RES_WR_EQSIZE)
1134 #define G_FW_RI_RES_WR_EQSIZE(x)        \
1135     (((x) >> S_FW_RI_RES_WR_EQSIZE) & M_FW_RI_RES_WR_EQSIZE)
1136
1137 #define S_FW_RI_RES_WR_IQANDST          15
1138 #define M_FW_RI_RES_WR_IQANDST          0x1
1139 #define V_FW_RI_RES_WR_IQANDST(x)       ((x) << S_FW_RI_RES_WR_IQANDST)
1140 #define G_FW_RI_RES_WR_IQANDST(x)       \
1141     (((x) >> S_FW_RI_RES_WR_IQANDST) & M_FW_RI_RES_WR_IQANDST)
1142 #define F_FW_RI_RES_WR_IQANDST  V_FW_RI_RES_WR_IQANDST(1U)
1143
1144 #define S_FW_RI_RES_WR_IQANUS           14
1145 #define M_FW_RI_RES_WR_IQANUS           0x1
1146 #define V_FW_RI_RES_WR_IQANUS(x)        ((x) << S_FW_RI_RES_WR_IQANUS)
1147 #define G_FW_RI_RES_WR_IQANUS(x)        \
1148     (((x) >> S_FW_RI_RES_WR_IQANUS) & M_FW_RI_RES_WR_IQANUS)
1149 #define F_FW_RI_RES_WR_IQANUS   V_FW_RI_RES_WR_IQANUS(1U)
1150
1151 #define S_FW_RI_RES_WR_IQANUD           12
1152 #define M_FW_RI_RES_WR_IQANUD           0x3
1153 #define V_FW_RI_RES_WR_IQANUD(x)        ((x) << S_FW_RI_RES_WR_IQANUD)
1154 #define G_FW_RI_RES_WR_IQANUD(x)        \
1155     (((x) >> S_FW_RI_RES_WR_IQANUD) & M_FW_RI_RES_WR_IQANUD)
1156
1157 #define S_FW_RI_RES_WR_IQANDSTINDEX     0
1158 #define M_FW_RI_RES_WR_IQANDSTINDEX     0xfff
1159 #define V_FW_RI_RES_WR_IQANDSTINDEX(x)  ((x) << S_FW_RI_RES_WR_IQANDSTINDEX)
1160 #define G_FW_RI_RES_WR_IQANDSTINDEX(x)  \
1161     (((x) >> S_FW_RI_RES_WR_IQANDSTINDEX) & M_FW_RI_RES_WR_IQANDSTINDEX)
1162
1163 #define S_FW_RI_RES_WR_IQDROPRSS        15
1164 #define M_FW_RI_RES_WR_IQDROPRSS        0x1
1165 #define V_FW_RI_RES_WR_IQDROPRSS(x)     ((x) << S_FW_RI_RES_WR_IQDROPRSS)
1166 #define G_FW_RI_RES_WR_IQDROPRSS(x)     \
1167     (((x) >> S_FW_RI_RES_WR_IQDROPRSS) & M_FW_RI_RES_WR_IQDROPRSS)
1168 #define F_FW_RI_RES_WR_IQDROPRSS        V_FW_RI_RES_WR_IQDROPRSS(1U)
1169
1170 #define S_FW_RI_RES_WR_IQGTSMODE        14
1171 #define M_FW_RI_RES_WR_IQGTSMODE        0x1
1172 #define V_FW_RI_RES_WR_IQGTSMODE(x)     ((x) << S_FW_RI_RES_WR_IQGTSMODE)
1173 #define G_FW_RI_RES_WR_IQGTSMODE(x)     \
1174     (((x) >> S_FW_RI_RES_WR_IQGTSMODE) & M_FW_RI_RES_WR_IQGTSMODE)
1175 #define F_FW_RI_RES_WR_IQGTSMODE        V_FW_RI_RES_WR_IQGTSMODE(1U)
1176
1177 #define S_FW_RI_RES_WR_IQPCIECH         12
1178 #define M_FW_RI_RES_WR_IQPCIECH         0x3
1179 #define V_FW_RI_RES_WR_IQPCIECH(x)      ((x) << S_FW_RI_RES_WR_IQPCIECH)
1180 #define G_FW_RI_RES_WR_IQPCIECH(x)      \
1181     (((x) >> S_FW_RI_RES_WR_IQPCIECH) & M_FW_RI_RES_WR_IQPCIECH)
1182
1183 #define S_FW_RI_RES_WR_IQDCAEN          11
1184 #define M_FW_RI_RES_WR_IQDCAEN          0x1
1185 #define V_FW_RI_RES_WR_IQDCAEN(x)       ((x) << S_FW_RI_RES_WR_IQDCAEN)
1186 #define G_FW_RI_RES_WR_IQDCAEN(x)       \
1187     (((x) >> S_FW_RI_RES_WR_IQDCAEN) & M_FW_RI_RES_WR_IQDCAEN)
1188 #define F_FW_RI_RES_WR_IQDCAEN  V_FW_RI_RES_WR_IQDCAEN(1U)
1189
1190 #define S_FW_RI_RES_WR_IQDCACPU         6
1191 #define M_FW_RI_RES_WR_IQDCACPU         0x1f
1192 #define V_FW_RI_RES_WR_IQDCACPU(x)      ((x) << S_FW_RI_RES_WR_IQDCACPU)
1193 #define G_FW_RI_RES_WR_IQDCACPU(x)      \
1194     (((x) >> S_FW_RI_RES_WR_IQDCACPU) & M_FW_RI_RES_WR_IQDCACPU)
1195
1196 #define S_FW_RI_RES_WR_IQINTCNTTHRESH           4
1197 #define M_FW_RI_RES_WR_IQINTCNTTHRESH           0x3
1198 #define V_FW_RI_RES_WR_IQINTCNTTHRESH(x)        \
1199     ((x) << S_FW_RI_RES_WR_IQINTCNTTHRESH)
1200 #define G_FW_RI_RES_WR_IQINTCNTTHRESH(x)        \
1201     (((x) >> S_FW_RI_RES_WR_IQINTCNTTHRESH) & M_FW_RI_RES_WR_IQINTCNTTHRESH)
1202
1203 #define S_FW_RI_RES_WR_IQO      3
1204 #define M_FW_RI_RES_WR_IQO      0x1
1205 #define V_FW_RI_RES_WR_IQO(x)   ((x) << S_FW_RI_RES_WR_IQO)
1206 #define G_FW_RI_RES_WR_IQO(x)   \
1207     (((x) >> S_FW_RI_RES_WR_IQO) & M_FW_RI_RES_WR_IQO)
1208 #define F_FW_RI_RES_WR_IQO      V_FW_RI_RES_WR_IQO(1U)
1209
1210 #define S_FW_RI_RES_WR_IQCPRIO          2
1211 #define M_FW_RI_RES_WR_IQCPRIO          0x1
1212 #define V_FW_RI_RES_WR_IQCPRIO(x)       ((x) << S_FW_RI_RES_WR_IQCPRIO)
1213 #define G_FW_RI_RES_WR_IQCPRIO(x)       \
1214     (((x) >> S_FW_RI_RES_WR_IQCPRIO) & M_FW_RI_RES_WR_IQCPRIO)
1215 #define F_FW_RI_RES_WR_IQCPRIO  V_FW_RI_RES_WR_IQCPRIO(1U)
1216
1217 #define S_FW_RI_RES_WR_IQESIZE          0
1218 #define M_FW_RI_RES_WR_IQESIZE          0x3
1219 #define V_FW_RI_RES_WR_IQESIZE(x)       ((x) << S_FW_RI_RES_WR_IQESIZE)
1220 #define G_FW_RI_RES_WR_IQESIZE(x)       \
1221     (((x) >> S_FW_RI_RES_WR_IQESIZE) & M_FW_RI_RES_WR_IQESIZE)
1222
1223 #define S_FW_RI_RES_WR_IQNS     31
1224 #define M_FW_RI_RES_WR_IQNS     0x1
1225 #define V_FW_RI_RES_WR_IQNS(x)  ((x) << S_FW_RI_RES_WR_IQNS)
1226 #define G_FW_RI_RES_WR_IQNS(x)  \
1227     (((x) >> S_FW_RI_RES_WR_IQNS) & M_FW_RI_RES_WR_IQNS)
1228 #define F_FW_RI_RES_WR_IQNS     V_FW_RI_RES_WR_IQNS(1U)
1229
1230 #define S_FW_RI_RES_WR_IQRO     30
1231 #define M_FW_RI_RES_WR_IQRO     0x1
1232 #define V_FW_RI_RES_WR_IQRO(x)  ((x) << S_FW_RI_RES_WR_IQRO)
1233 #define G_FW_RI_RES_WR_IQRO(x)  \
1234     (((x) >> S_FW_RI_RES_WR_IQRO) & M_FW_RI_RES_WR_IQRO)
1235 #define F_FW_RI_RES_WR_IQRO     V_FW_RI_RES_WR_IQRO(1U)
1236
1237 struct fw_ri_rdma_write_wr {
1238         __u8   opcode;
1239         __u8   flags;
1240         __u16  wrid;
1241         __u8   r1[3];
1242         __u8   len16;
1243         __be64 r2;
1244         __be32 plen;
1245         __be32 stag_sink;
1246         __be64 to_sink;
1247 #ifndef C99_NOT_SUPPORTED
1248         union {
1249                 struct fw_ri_immd immd_src[0];
1250                 struct fw_ri_isgl isgl_src[0];
1251         } u;
1252 #endif
1253 };
1254
1255 struct fw_ri_send_wr {
1256         __u8   opcode;
1257         __u8   flags;
1258         __u16  wrid;
1259         __u8   r1[3];
1260         __u8   len16;
1261         __be32 sendop_pkd;
1262         __be32 stag_inv;
1263         __be32 plen;
1264         __be32 r3;
1265         __be64 r4;
1266 #ifndef C99_NOT_SUPPORTED
1267         union {
1268                 struct fw_ri_immd immd_src[0];
1269                 struct fw_ri_isgl isgl_src[0];
1270         } u;
1271 #endif
1272 };
1273
1274 #define S_FW_RI_SEND_WR_SENDOP          0
1275 #define M_FW_RI_SEND_WR_SENDOP          0xf
1276 #define V_FW_RI_SEND_WR_SENDOP(x)       ((x) << S_FW_RI_SEND_WR_SENDOP)
1277 #define G_FW_RI_SEND_WR_SENDOP(x)       \
1278     (((x) >> S_FW_RI_SEND_WR_SENDOP) & M_FW_RI_SEND_WR_SENDOP)
1279
1280 struct fw_ri_rdma_read_wr {
1281         __u8   opcode;
1282         __u8   flags;
1283         __u16  wrid;
1284         __u8   r1[3];
1285         __u8   len16;
1286         __be64 r2;
1287         __be32 stag_sink;
1288         __be32 to_sink_hi;
1289         __be32 to_sink_lo;
1290         __be32 plen;
1291         __be32 stag_src;
1292         __be32 to_src_hi;
1293         __be32 to_src_lo;
1294         __be32 r5;
1295 };
1296
1297 struct fw_ri_recv_wr {
1298         __u8   opcode;
1299         __u8   r1;
1300         __u16  wrid;
1301         __u8   r2[3];
1302         __u8   len16;
1303         struct fw_ri_isgl isgl;
1304 };
1305
1306 struct fw_ri_bind_mw_wr {
1307         __u8   opcode;
1308         __u8   flags;
1309         __u16  wrid;
1310         __u8   r1[3];
1311         __u8   len16;
1312         __u8   qpbinde_to_dcacpu;
1313         __u8   pgsz_shift;
1314         __u8   addr_type;
1315         __u8   mem_perms;
1316         __be32 stag_mr;
1317         __be32 stag_mw;
1318         __be32 r3;
1319         __be64 len_mw;
1320         __be64 va_fbo;
1321         __be64 r4;
1322 };
1323
1324 #define S_FW_RI_BIND_MW_WR_QPBINDE      6
1325 #define M_FW_RI_BIND_MW_WR_QPBINDE      0x1
1326 #define V_FW_RI_BIND_MW_WR_QPBINDE(x)   ((x) << S_FW_RI_BIND_MW_WR_QPBINDE)
1327 #define G_FW_RI_BIND_MW_WR_QPBINDE(x)   \
1328     (((x) >> S_FW_RI_BIND_MW_WR_QPBINDE) & M_FW_RI_BIND_MW_WR_QPBINDE)
1329 #define F_FW_RI_BIND_MW_WR_QPBINDE      V_FW_RI_BIND_MW_WR_QPBINDE(1U)
1330
1331 #define S_FW_RI_BIND_MW_WR_NS           5
1332 #define M_FW_RI_BIND_MW_WR_NS           0x1
1333 #define V_FW_RI_BIND_MW_WR_NS(x)        ((x) << S_FW_RI_BIND_MW_WR_NS)
1334 #define G_FW_RI_BIND_MW_WR_NS(x)        \
1335     (((x) >> S_FW_RI_BIND_MW_WR_NS) & M_FW_RI_BIND_MW_WR_NS)
1336 #define F_FW_RI_BIND_MW_WR_NS   V_FW_RI_BIND_MW_WR_NS(1U)
1337
1338 #define S_FW_RI_BIND_MW_WR_DCACPU       0
1339 #define M_FW_RI_BIND_MW_WR_DCACPU       0x1f
1340 #define V_FW_RI_BIND_MW_WR_DCACPU(x)    ((x) << S_FW_RI_BIND_MW_WR_DCACPU)
1341 #define G_FW_RI_BIND_MW_WR_DCACPU(x)    \
1342     (((x) >> S_FW_RI_BIND_MW_WR_DCACPU) & M_FW_RI_BIND_MW_WR_DCACPU)
1343
1344 struct fw_ri_fr_nsmr_wr {
1345         __u8   opcode;
1346         __u8   flags;
1347         __u16  wrid;
1348         __u8   r1[3];
1349         __u8   len16;
1350         __u8   qpbinde_to_dcacpu;
1351         __u8   pgsz_shift;
1352         __u8   addr_type;
1353         __u8   mem_perms;
1354         __be32 stag;
1355         __be32 len_hi;
1356         __be32 len_lo;
1357         __be32 va_hi;
1358         __be32 va_lo_fbo;
1359 };
1360
1361 #define S_FW_RI_FR_NSMR_WR_QPBINDE      6
1362 #define M_FW_RI_FR_NSMR_WR_QPBINDE      0x1
1363 #define V_FW_RI_FR_NSMR_WR_QPBINDE(x)   ((x) << S_FW_RI_FR_NSMR_WR_QPBINDE)
1364 #define G_FW_RI_FR_NSMR_WR_QPBINDE(x)   \
1365     (((x) >> S_FW_RI_FR_NSMR_WR_QPBINDE) & M_FW_RI_FR_NSMR_WR_QPBINDE)
1366 #define F_FW_RI_FR_NSMR_WR_QPBINDE      V_FW_RI_FR_NSMR_WR_QPBINDE(1U)
1367
1368 #define S_FW_RI_FR_NSMR_WR_NS           5
1369 #define M_FW_RI_FR_NSMR_WR_NS           0x1
1370 #define V_FW_RI_FR_NSMR_WR_NS(x)        ((x) << S_FW_RI_FR_NSMR_WR_NS)
1371 #define G_FW_RI_FR_NSMR_WR_NS(x)        \
1372     (((x) >> S_FW_RI_FR_NSMR_WR_NS) & M_FW_RI_FR_NSMR_WR_NS)
1373 #define F_FW_RI_FR_NSMR_WR_NS   V_FW_RI_FR_NSMR_WR_NS(1U)
1374
1375 #define S_FW_RI_FR_NSMR_WR_DCACPU       0
1376 #define M_FW_RI_FR_NSMR_WR_DCACPU       0x1f
1377 #define V_FW_RI_FR_NSMR_WR_DCACPU(x)    ((x) << S_FW_RI_FR_NSMR_WR_DCACPU)
1378 #define G_FW_RI_FR_NSMR_WR_DCACPU(x)    \
1379     (((x) >> S_FW_RI_FR_NSMR_WR_DCACPU) & M_FW_RI_FR_NSMR_WR_DCACPU)
1380
1381 struct fw_ri_inv_lstag_wr {
1382         __u8   opcode;
1383         __u8   flags;
1384         __u16  wrid;
1385         __u8   r1[3];
1386         __u8   len16;
1387         __be32 r2;
1388         __be32 stag_inv;
1389 };
1390
1391 enum fw_ri_type {
1392         FW_RI_TYPE_INIT,
1393         FW_RI_TYPE_FINI,
1394         FW_RI_TYPE_TERMINATE
1395 };
1396
1397 enum fw_ri_init_p2ptype {
1398         FW_RI_INIT_P2PTYPE_RDMA_WRITE           = FW_RI_RDMA_WRITE,
1399         FW_RI_INIT_P2PTYPE_READ_REQ             = FW_RI_READ_REQ,
1400         FW_RI_INIT_P2PTYPE_SEND                 = FW_RI_SEND,
1401         FW_RI_INIT_P2PTYPE_SEND_WITH_INV        = FW_RI_SEND_WITH_INV,
1402         FW_RI_INIT_P2PTYPE_SEND_WITH_SE         = FW_RI_SEND_WITH_SE,
1403         FW_RI_INIT_P2PTYPE_SEND_WITH_SE_INV     = FW_RI_SEND_WITH_SE_INV,
1404         FW_RI_INIT_P2PTYPE_DISABLED             = 0xf,
1405 };
1406
1407 struct fw_ri_wr {
1408         __be32 op_compl;
1409         __be32 flowid_len16;
1410         __u64  cookie;
1411         union fw_ri {
1412                 struct fw_ri_init {
1413                         __u8   type;
1414                         __u8   mpareqbit_p2ptype;
1415                         __u8   r4[2];
1416                         __u8   mpa_attrs;
1417                         __u8   qp_caps;
1418                         __be16 nrqe;
1419                         __be32 pdid;
1420                         __be32 qpid;
1421                         __be32 sq_eqid;
1422                         __be32 rq_eqid;
1423                         __be32 scqid;
1424                         __be32 rcqid;
1425                         __be32 ord_max;
1426                         __be32 ird_max;
1427                         __be32 iss;
1428                         __be32 irs;
1429                         __be32 hwrqsize;
1430                         __be32 hwrqaddr;
1431                         __be64 r5;
1432                         union fw_ri_init_p2p {
1433                                 struct fw_ri_rdma_write_wr write;
1434                                 struct fw_ri_rdma_read_wr read;
1435                                 struct fw_ri_send_wr send;
1436                         } u;
1437                 } init;
1438                 struct fw_ri_fini {
1439                         __u8   type;
1440                         __u8   r3[7];
1441                         __be64 r4;
1442                 } fini;
1443                 struct fw_ri_terminate {
1444                         __u8   type;
1445                         __u8   r3[3];
1446                         __be32 immdlen;
1447                         __u8   termmsg[40];
1448                 } terminate;
1449         } u;
1450 };
1451
1452 #define S_FW_RI_WR_MPAREQBIT    7
1453 #define M_FW_RI_WR_MPAREQBIT    0x1
1454 #define V_FW_RI_WR_MPAREQBIT(x) ((x) << S_FW_RI_WR_MPAREQBIT)
1455 #define G_FW_RI_WR_MPAREQBIT(x) \
1456     (((x) >> S_FW_RI_WR_MPAREQBIT) & M_FW_RI_WR_MPAREQBIT)
1457 #define F_FW_RI_WR_MPAREQBIT    V_FW_RI_WR_MPAREQBIT(1U)
1458
1459 #define S_FW_RI_WR_0BRRBIT      6
1460 #define M_FW_RI_WR_0BRRBIT      0x1
1461 #define V_FW_RI_WR_0BRRBIT(x)   ((x) << S_FW_RI_WR_0BRRBIT)
1462 #define G_FW_RI_WR_0BRRBIT(x)   \
1463     (((x) >> S_FW_RI_WR_0BRRBIT) & M_FW_RI_WR_0BRRBIT)
1464 #define F_FW_RI_WR_0BRRBIT      V_FW_RI_WR_0BRRBIT(1U)
1465
1466 #define S_FW_RI_WR_P2PTYPE      0
1467 #define M_FW_RI_WR_P2PTYPE      0xf
1468 #define V_FW_RI_WR_P2PTYPE(x)   ((x) << S_FW_RI_WR_P2PTYPE)
1469 #define G_FW_RI_WR_P2PTYPE(x)   \
1470     (((x) >> S_FW_RI_WR_P2PTYPE) & M_FW_RI_WR_P2PTYPE)
1471
1472 #ifdef FOISCSI
1473 struct fw_iscsi_node_wr {
1474         __u8   opcode;
1475         __u8   subop;
1476         __u8   node_attr_to_compl;
1477         __u8   len16;
1478         __u8   status;
1479         __u8   r2;
1480         __be16 immd_len;
1481         __be64 cookie;
1482         __be32 node_id;
1483         __be32 ctrl_handle;
1484         __be32 io_handle;
1485         __be32 r3;
1486 };
1487
1488 #define S_FW_ISCSI_NODE_WR_NODE_ATTR    7
1489 #define M_FW_ISCSI_NODE_WR_NODE_ATTR    0x1
1490 #define V_FW_ISCSI_NODE_WR_NODE_ATTR(x) ((x) << S_FW_ISCSI_NODE_WR_NODE_ATTR)
1491 #define G_FW_ISCSI_NODE_WR_NODE_ATTR(x) \
1492     (((x) >> S_FW_ISCSI_NODE_WR_NODE_ATTR) & M_FW_ISCSI_NODE_WR_NODE_ATTR)
1493 #define F_FW_ISCSI_NODE_WR_NODE_ATTR    V_FW_ISCSI_NODE_WR_NODE_ATTR(1U)
1494
1495 #define S_FW_ISCSI_NODE_WR_SESS_ATTR    6
1496 #define M_FW_ISCSI_NODE_WR_SESS_ATTR    0x1
1497 #define V_FW_ISCSI_NODE_WR_SESS_ATTR(x) ((x) << S_FW_ISCSI_NODE_WR_SESS_ATTR)
1498 #define G_FW_ISCSI_NODE_WR_SESS_ATTR(x) \
1499     (((x) >> S_FW_ISCSI_NODE_WR_SESS_ATTR) & M_FW_ISCSI_NODE_WR_SESS_ATTR)
1500 #define F_FW_ISCSI_NODE_WR_SESS_ATTR    V_FW_ISCSI_NODE_WR_SESS_ATTR(1U)
1501
1502 #define S_FW_ISCSI_NODE_WR_CONN_ATTR    5
1503 #define M_FW_ISCSI_NODE_WR_CONN_ATTR    0x1
1504 #define V_FW_ISCSI_NODE_WR_CONN_ATTR(x) ((x) << S_FW_ISCSI_NODE_WR_CONN_ATTR)
1505 #define G_FW_ISCSI_NODE_WR_CONN_ATTR(x) \
1506     (((x) >> S_FW_ISCSI_NODE_WR_CONN_ATTR) & M_FW_ISCSI_NODE_WR_CONN_ATTR)
1507 #define F_FW_ISCSI_NODE_WR_CONN_ATTR    V_FW_ISCSI_NODE_WR_CONN_ATTR(1U)
1508
1509 #define S_FW_ISCSI_NODE_WR_TGT_ATTR     4
1510 #define M_FW_ISCSI_NODE_WR_TGT_ATTR     0x1
1511 #define V_FW_ISCSI_NODE_WR_TGT_ATTR(x)  ((x) << S_FW_ISCSI_NODE_WR_TGT_ATTR)
1512 #define G_FW_ISCSI_NODE_WR_TGT_ATTR(x)  \
1513     (((x) >> S_FW_ISCSI_NODE_WR_TGT_ATTR) & M_FW_ISCSI_NODE_WR_TGT_ATTR)
1514 #define F_FW_ISCSI_NODE_WR_TGT_ATTR     V_FW_ISCSI_NODE_WR_TGT_ATTR(1U)
1515
1516 #define S_FW_ISCSI_NODE_WR_NODE_TYPE    3
1517 #define M_FW_ISCSI_NODE_WR_NODE_TYPE    0x1
1518 #define V_FW_ISCSI_NODE_WR_NODE_TYPE(x) ((x) << S_FW_ISCSI_NODE_WR_NODE_TYPE)
1519 #define G_FW_ISCSI_NODE_WR_NODE_TYPE(x) \
1520     (((x) >> S_FW_ISCSI_NODE_WR_NODE_TYPE) & M_FW_ISCSI_NODE_WR_NODE_TYPE)
1521 #define F_FW_ISCSI_NODE_WR_NODE_TYPE    V_FW_ISCSI_NODE_WR_NODE_TYPE(1U)
1522
1523 #define S_FW_ISCSI_NODE_WR_COMPL        0
1524 #define M_FW_ISCSI_NODE_WR_COMPL        0x1
1525 #define V_FW_ISCSI_NODE_WR_COMPL(x)     ((x) << S_FW_ISCSI_NODE_WR_COMPL)
1526 #define G_FW_ISCSI_NODE_WR_COMPL(x)     \
1527     (((x) >> S_FW_ISCSI_NODE_WR_COMPL) & M_FW_ISCSI_NODE_WR_COMPL)
1528 #define F_FW_ISCSI_NODE_WR_COMPL        V_FW_ISCSI_NODE_WR_COMPL(1U)
1529
1530 #endif
1531
1532 /******************************************************************************
1533  *  C O M M A N D s
1534  *********************/
1535
1536 /*
1537  * The maximum length of time, in miliseconds, that we expect any firmware
1538  * command to take to execute and return a reply to the host.  The RESET
1539  * and INITIALIZE commands can take a fair amount of time to execute but
1540  * most execute in far less time than this maximum.  This constant is used
1541  * by host software to determine how long to wait for a firmware command
1542  * reply before declaring the firmware as dead/unreachable ...
1543  */
1544 #define FW_CMD_MAX_TIMEOUT      10000
1545
1546 enum fw_cmd_opcodes {
1547         FW_LDST_CMD                    = 0x01,
1548         FW_RESET_CMD                   = 0x03,
1549         FW_HELLO_CMD                   = 0x04,
1550         FW_BYE_CMD                     = 0x05,
1551         FW_INITIALIZE_CMD              = 0x06,
1552         FW_CAPS_CONFIG_CMD             = 0x07,
1553         FW_PARAMS_CMD                  = 0x08,
1554         FW_PFVF_CMD                    = 0x09,
1555         FW_IQ_CMD                      = 0x10,
1556         FW_EQ_MNGT_CMD                 = 0x11,
1557         FW_EQ_ETH_CMD                  = 0x12,
1558         FW_EQ_CTRL_CMD                 = 0x13,
1559         FW_EQ_OFLD_CMD                 = 0x21,
1560         FW_VI_CMD                      = 0x14,
1561         FW_VI_MAC_CMD                  = 0x15,
1562         FW_VI_RXMODE_CMD               = 0x16,
1563         FW_VI_ENABLE_CMD               = 0x17,
1564         FW_VI_STATS_CMD                = 0x1a,
1565         FW_ACL_MAC_CMD                 = 0x18,
1566         FW_ACL_VLAN_CMD                = 0x19,
1567         FW_PORT_CMD                    = 0x1b,
1568         FW_PORT_STATS_CMD              = 0x1c,
1569         FW_PORT_LB_STATS_CMD           = 0x1d,
1570         FW_PORT_TRACE_CMD              = 0x1e,
1571         FW_PORT_TRACE_MMAP_CMD         = 0x1f,
1572         FW_RSS_IND_TBL_CMD             = 0x20,
1573         FW_RSS_GLB_CONFIG_CMD          = 0x22,
1574         FW_RSS_VI_CONFIG_CMD           = 0x23,
1575         FW_SCHED_CMD                   = 0x24,
1576         FW_DEVLOG_CMD                  = 0x25,
1577         FW_NETIF_CMD                   = 0x26,
1578         FW_LASTC2E_CMD                 = 0x40,
1579         FW_ERROR_CMD                   = 0x80,
1580         FW_DEBUG_CMD                   = 0x81,
1581
1582 };
1583
1584 enum fw_cmd_cap {
1585         FW_CMD_CAP_PF                  = 0x01,
1586         FW_CMD_CAP_DMAQ                = 0x02,
1587         FW_CMD_CAP_PORT                = 0x04,
1588         FW_CMD_CAP_PORTPROMISC         = 0x08,
1589         FW_CMD_CAP_PORTSTATS           = 0x10,
1590         FW_CMD_CAP_VF                  = 0x80,
1591 };
1592
1593 /*
1594  * Generic command header flit0
1595  */
1596 struct fw_cmd_hdr {
1597         __be32 hi;
1598         __be32 lo;
1599 };
1600
1601 #define S_FW_CMD_OP             24
1602 #define M_FW_CMD_OP             0xff
1603 #define V_FW_CMD_OP(x)          ((x) << S_FW_CMD_OP)
1604 #define G_FW_CMD_OP(x)          (((x) >> S_FW_CMD_OP) & M_FW_CMD_OP)
1605
1606 #define S_FW_CMD_REQUEST        23
1607 #define M_FW_CMD_REQUEST        0x1
1608 #define V_FW_CMD_REQUEST(x)     ((x) << S_FW_CMD_REQUEST)
1609 #define G_FW_CMD_REQUEST(x)     (((x) >> S_FW_CMD_REQUEST) & M_FW_CMD_REQUEST)
1610 #define F_FW_CMD_REQUEST        V_FW_CMD_REQUEST(1U)
1611
1612 #define S_FW_CMD_READ           22
1613 #define M_FW_CMD_READ           0x1
1614 #define V_FW_CMD_READ(x)        ((x) << S_FW_CMD_READ)
1615 #define G_FW_CMD_READ(x)        (((x) >> S_FW_CMD_READ) & M_FW_CMD_READ)
1616 #define F_FW_CMD_READ           V_FW_CMD_READ(1U)
1617
1618 #define S_FW_CMD_WRITE          21
1619 #define M_FW_CMD_WRITE          0x1
1620 #define V_FW_CMD_WRITE(x)       ((x) << S_FW_CMD_WRITE)
1621 #define G_FW_CMD_WRITE(x)       (((x) >> S_FW_CMD_WRITE) & M_FW_CMD_WRITE)
1622 #define F_FW_CMD_WRITE          V_FW_CMD_WRITE(1U)
1623
1624 #define S_FW_CMD_EXEC           20
1625 #define M_FW_CMD_EXEC           0x1
1626 #define V_FW_CMD_EXEC(x)        ((x) << S_FW_CMD_EXEC)
1627 #define G_FW_CMD_EXEC(x)        (((x) >> S_FW_CMD_EXEC) & M_FW_CMD_EXEC)
1628 #define F_FW_CMD_EXEC           V_FW_CMD_EXEC(1U)
1629
1630 #define S_FW_CMD_RAMASK         20
1631 #define M_FW_CMD_RAMASK         0xf
1632 #define V_FW_CMD_RAMASK(x)      ((x) << S_FW_CMD_RAMASK)
1633 #define G_FW_CMD_RAMASK(x)      (((x) >> S_FW_CMD_RAMASK) & M_FW_CMD_RAMASK)
1634
1635 #define S_FW_CMD_RETVAL         8
1636 #define M_FW_CMD_RETVAL         0xff
1637 #define V_FW_CMD_RETVAL(x)      ((x) << S_FW_CMD_RETVAL)
1638 #define G_FW_CMD_RETVAL(x)      (((x) >> S_FW_CMD_RETVAL) & M_FW_CMD_RETVAL)
1639
1640 #define S_FW_CMD_LEN16          0
1641 #define M_FW_CMD_LEN16          0xff
1642 #define V_FW_CMD_LEN16(x)       ((x) << S_FW_CMD_LEN16)
1643 #define G_FW_CMD_LEN16(x)       (((x) >> S_FW_CMD_LEN16) & M_FW_CMD_LEN16)
1644
1645 #define FW_LEN16(fw_struct) V_FW_CMD_LEN16(sizeof(fw_struct) / 16)
1646
1647 /*
1648  *      address spaces
1649  */
1650 enum fw_ldst_addrspc {
1651         FW_LDST_ADDRSPC_FIRMWARE  = 0x0001,
1652         FW_LDST_ADDRSPC_SGE_EGRC  = 0x0008,
1653         FW_LDST_ADDRSPC_SGE_INGC  = 0x0009,
1654         FW_LDST_ADDRSPC_SGE_FLMC  = 0x000a,
1655         FW_LDST_ADDRSPC_SGE_CONMC = 0x000b,
1656         FW_LDST_ADDRSPC_TP_PIO    = 0x0010,
1657         FW_LDST_ADDRSPC_TP_TM_PIO = 0x0011,
1658         FW_LDST_ADDRSPC_TP_MIB    = 0x0012,
1659         FW_LDST_ADDRSPC_MDIO      = 0x0018,
1660         FW_LDST_ADDRSPC_MPS       = 0x0020,
1661         FW_LDST_ADDRSPC_FUNC      = 0x0028,
1662         FW_LDST_ADDRSPC_FUNC_PCIE = 0x0029,
1663         FW_LDST_ADDRSPC_FUNC_I2C  = 0x002A,
1664 };
1665
1666 /*
1667  *      MDIO VSC8634 register access control field
1668  */
1669 enum fw_ldst_mdio_vsc8634_aid {
1670         FW_LDST_MDIO_VS_STANDARD,
1671         FW_LDST_MDIO_VS_EXTENDED,
1672         FW_LDST_MDIO_VS_GPIO
1673 };
1674
1675 enum fw_ldst_mps_fid {
1676         FW_LDST_MPS_ATRB,
1677         FW_LDST_MPS_RPLC
1678 };
1679
1680 enum fw_ldst_func_access_ctl {
1681         FW_LDST_FUNC_ACC_CTL_VIID,
1682         FW_LDST_FUNC_ACC_CTL_FID
1683 };
1684
1685 enum fw_ldst_func_mod_index {
1686         FW_LDST_FUNC_MPS
1687 };
1688
1689 struct fw_ldst_cmd {
1690         __be32 op_to_addrspace;
1691         __be32 cycles_to_len16;
1692         union fw_ldst {
1693                 struct fw_ldst_addrval {
1694                         __be32 addr;
1695                         __be32 val;
1696                 } addrval;
1697                 struct fw_ldst_idctxt {
1698                         __be32 physid;
1699                         __be32 msg_pkd;
1700                         __be32 ctxt_data7;
1701                         __be32 ctxt_data6;
1702                         __be32 ctxt_data5;
1703                         __be32 ctxt_data4;
1704                         __be32 ctxt_data3;
1705                         __be32 ctxt_data2;
1706                         __be32 ctxt_data1;
1707                         __be32 ctxt_data0;
1708                 } idctxt;
1709                 struct fw_ldst_mdio {
1710                         __be16 paddr_mmd;
1711                         __be16 raddr;
1712                         __be16 vctl;
1713                         __be16 rval;
1714                 } mdio;
1715                 struct fw_ldst_mps {
1716                         __be16 fid_ctl;
1717                         __be16 rplcpf_pkd;
1718                         __be32 rplc127_96;
1719                         __be32 rplc95_64;
1720                         __be32 rplc63_32;
1721                         __be32 rplc31_0;
1722                         __be32 atrb;
1723                         __be16 vlan[16];
1724                 } mps;
1725                 struct fw_ldst_func {
1726                         __u8   access_ctl;
1727                         __u8   mod_index;
1728                         __be16 ctl_id;
1729                         __be32 offset;
1730                         __be64 data0;
1731                         __be64 data1;
1732                 } func;
1733                 struct fw_ldst_pcie {
1734                         __u8   ctrl_to_fn;
1735                         __u8   bnum;
1736                         __u8   r;
1737                         __u8   ext_r;
1738                         __u8   select_naccess;
1739                         __u8   pcie_fn;
1740                         __be16 nset_pkd;
1741                         __be32 data[12];
1742                 } pcie;
1743                 struct fw_ldst_i2c {
1744                         __u8   pid_pkd;
1745                         __u8   base;
1746                         __u8   boffset;
1747                         __u8   data;
1748                         __be32 r9;
1749                 } i2c;
1750         } u;
1751 };
1752
1753 #define S_FW_LDST_CMD_ADDRSPACE         0
1754 #define M_FW_LDST_CMD_ADDRSPACE         0xff
1755 #define V_FW_LDST_CMD_ADDRSPACE(x)      ((x) << S_FW_LDST_CMD_ADDRSPACE)
1756 #define G_FW_LDST_CMD_ADDRSPACE(x)      \
1757     (((x) >> S_FW_LDST_CMD_ADDRSPACE) & M_FW_LDST_CMD_ADDRSPACE)
1758
1759 #define S_FW_LDST_CMD_CYCLES    16
1760 #define M_FW_LDST_CMD_CYCLES    0xffff
1761 #define V_FW_LDST_CMD_CYCLES(x) ((x) << S_FW_LDST_CMD_CYCLES)
1762 #define G_FW_LDST_CMD_CYCLES(x) \
1763     (((x) >> S_FW_LDST_CMD_CYCLES) & M_FW_LDST_CMD_CYCLES)
1764
1765 #define S_FW_LDST_CMD_MSG       31
1766 #define M_FW_LDST_CMD_MSG       0x1
1767 #define V_FW_LDST_CMD_MSG(x)    ((x) << S_FW_LDST_CMD_MSG)
1768 #define G_FW_LDST_CMD_MSG(x)    \
1769     (((x) >> S_FW_LDST_CMD_MSG) & M_FW_LDST_CMD_MSG)
1770 #define F_FW_LDST_CMD_MSG       V_FW_LDST_CMD_MSG(1U)
1771
1772 #define S_FW_LDST_CMD_PADDR     8
1773 #define M_FW_LDST_CMD_PADDR     0x1f
1774 #define V_FW_LDST_CMD_PADDR(x)  ((x) << S_FW_LDST_CMD_PADDR)
1775 #define G_FW_LDST_CMD_PADDR(x)  \
1776     (((x) >> S_FW_LDST_CMD_PADDR) & M_FW_LDST_CMD_PADDR)
1777
1778 #define S_FW_LDST_CMD_MMD       0
1779 #define M_FW_LDST_CMD_MMD       0x1f
1780 #define V_FW_LDST_CMD_MMD(x)    ((x) << S_FW_LDST_CMD_MMD)
1781 #define G_FW_LDST_CMD_MMD(x)    \
1782     (((x) >> S_FW_LDST_CMD_MMD) & M_FW_LDST_CMD_MMD)
1783
1784 #define S_FW_LDST_CMD_FID       15
1785 #define M_FW_LDST_CMD_FID       0x1
1786 #define V_FW_LDST_CMD_FID(x)    ((x) << S_FW_LDST_CMD_FID)
1787 #define G_FW_LDST_CMD_FID(x)    \
1788     (((x) >> S_FW_LDST_CMD_FID) & M_FW_LDST_CMD_FID)
1789 #define F_FW_LDST_CMD_FID       V_FW_LDST_CMD_FID(1U)
1790
1791 #define S_FW_LDST_CMD_CTL       0
1792 #define M_FW_LDST_CMD_CTL       0x7fff
1793 #define V_FW_LDST_CMD_CTL(x)    ((x) << S_FW_LDST_CMD_CTL)
1794 #define G_FW_LDST_CMD_CTL(x)    \
1795     (((x) >> S_FW_LDST_CMD_CTL) & M_FW_LDST_CMD_CTL)
1796
1797 #define S_FW_LDST_CMD_RPLCPF    0
1798 #define M_FW_LDST_CMD_RPLCPF    0xff
1799 #define V_FW_LDST_CMD_RPLCPF(x) ((x) << S_FW_LDST_CMD_RPLCPF)
1800 #define G_FW_LDST_CMD_RPLCPF(x) \
1801     (((x) >> S_FW_LDST_CMD_RPLCPF) & M_FW_LDST_CMD_RPLCPF)
1802
1803 #define S_FW_LDST_CMD_CTRL      7
1804 #define M_FW_LDST_CMD_CTRL      0x1
1805 #define V_FW_LDST_CMD_CTRL(x)   ((x) << S_FW_LDST_CMD_CTRL)
1806 #define G_FW_LDST_CMD_CTRL(x)   \
1807     (((x) >> S_FW_LDST_CMD_CTRL) & M_FW_LDST_CMD_CTRL)
1808 #define F_FW_LDST_CMD_CTRL      V_FW_LDST_CMD_CTRL(1U)
1809
1810 #define S_FW_LDST_CMD_LC        4
1811 #define M_FW_LDST_CMD_LC        0x1
1812 #define V_FW_LDST_CMD_LC(x)     ((x) << S_FW_LDST_CMD_LC)
1813 #define G_FW_LDST_CMD_LC(x)     (((x) >> S_FW_LDST_CMD_LC) & M_FW_LDST_CMD_LC)
1814 #define F_FW_LDST_CMD_LC        V_FW_LDST_CMD_LC(1U)
1815
1816 #define S_FW_LDST_CMD_AI        3
1817 #define M_FW_LDST_CMD_AI        0x1
1818 #define V_FW_LDST_CMD_AI(x)     ((x) << S_FW_LDST_CMD_AI)
1819 #define G_FW_LDST_CMD_AI(x)     (((x) >> S_FW_LDST_CMD_AI) & M_FW_LDST_CMD_AI)
1820 #define F_FW_LDST_CMD_AI        V_FW_LDST_CMD_AI(1U)
1821
1822 #define S_FW_LDST_CMD_FN        0
1823 #define M_FW_LDST_CMD_FN        0x7
1824 #define V_FW_LDST_CMD_FN(x)     ((x) << S_FW_LDST_CMD_FN)
1825 #define G_FW_LDST_CMD_FN(x)     (((x) >> S_FW_LDST_CMD_FN) & M_FW_LDST_CMD_FN)
1826
1827 #define S_FW_LDST_CMD_SELECT    4
1828 #define M_FW_LDST_CMD_SELECT    0xf
1829 #define V_FW_LDST_CMD_SELECT(x) ((x) << S_FW_LDST_CMD_SELECT)
1830 #define G_FW_LDST_CMD_SELECT(x) \
1831     (((x) >> S_FW_LDST_CMD_SELECT) & M_FW_LDST_CMD_SELECT)
1832
1833 #define S_FW_LDST_CMD_NACCESS           0
1834 #define M_FW_LDST_CMD_NACCESS           0xf
1835 #define V_FW_LDST_CMD_NACCESS(x)        ((x) << S_FW_LDST_CMD_NACCESS)
1836 #define G_FW_LDST_CMD_NACCESS(x)        \
1837     (((x) >> S_FW_LDST_CMD_NACCESS) & M_FW_LDST_CMD_NACCESS)
1838
1839 #define S_FW_LDST_CMD_NSET      14
1840 #define M_FW_LDST_CMD_NSET      0x3
1841 #define V_FW_LDST_CMD_NSET(x)   ((x) << S_FW_LDST_CMD_NSET)
1842 #define G_FW_LDST_CMD_NSET(x)   \
1843     (((x) >> S_FW_LDST_CMD_NSET) & M_FW_LDST_CMD_NSET)
1844
1845 #define S_FW_LDST_CMD_PID       6
1846 #define M_FW_LDST_CMD_PID       0x3
1847 #define V_FW_LDST_CMD_PID(x)    ((x) << S_FW_LDST_CMD_PID)
1848 #define G_FW_LDST_CMD_PID(x)    \
1849     (((x) >> S_FW_LDST_CMD_PID) & M_FW_LDST_CMD_PID)
1850
1851 struct fw_reset_cmd {
1852         __be32 op_to_write;
1853         __be32 retval_len16;
1854         __be32 val;
1855         __be32 r3;
1856 };
1857
1858 struct fw_hello_cmd {
1859         __be32 op_to_write;
1860         __be32 retval_len16;
1861         __be32 err_to_mbasyncnot;
1862         __be32 fwrev;
1863 };
1864
1865 #define S_FW_HELLO_CMD_ERR      31
1866 #define M_FW_HELLO_CMD_ERR      0x1
1867 #define V_FW_HELLO_CMD_ERR(x)   ((x) << S_FW_HELLO_CMD_ERR)
1868 #define G_FW_HELLO_CMD_ERR(x)   \
1869     (((x) >> S_FW_HELLO_CMD_ERR) & M_FW_HELLO_CMD_ERR)
1870 #define F_FW_HELLO_CMD_ERR      V_FW_HELLO_CMD_ERR(1U)
1871
1872 #define S_FW_HELLO_CMD_INIT     30
1873 #define M_FW_HELLO_CMD_INIT     0x1
1874 #define V_FW_HELLO_CMD_INIT(x)  ((x) << S_FW_HELLO_CMD_INIT)
1875 #define G_FW_HELLO_CMD_INIT(x)  \
1876     (((x) >> S_FW_HELLO_CMD_INIT) & M_FW_HELLO_CMD_INIT)
1877 #define F_FW_HELLO_CMD_INIT     V_FW_HELLO_CMD_INIT(1U)
1878
1879 #define S_FW_HELLO_CMD_MASTERDIS        29
1880 #define M_FW_HELLO_CMD_MASTERDIS        0x1
1881 #define V_FW_HELLO_CMD_MASTERDIS(x)     ((x) << S_FW_HELLO_CMD_MASTERDIS)
1882 #define G_FW_HELLO_CMD_MASTERDIS(x)     \
1883     (((x) >> S_FW_HELLO_CMD_MASTERDIS) & M_FW_HELLO_CMD_MASTERDIS)
1884 #define F_FW_HELLO_CMD_MASTERDIS        V_FW_HELLO_CMD_MASTERDIS(1U)
1885
1886 #define S_FW_HELLO_CMD_MASTERFORCE      28
1887 #define M_FW_HELLO_CMD_MASTERFORCE      0x1
1888 #define V_FW_HELLO_CMD_MASTERFORCE(x)   ((x) << S_FW_HELLO_CMD_MASTERFORCE)
1889 #define G_FW_HELLO_CMD_MASTERFORCE(x)   \
1890     (((x) >> S_FW_HELLO_CMD_MASTERFORCE) & M_FW_HELLO_CMD_MASTERFORCE)
1891 #define F_FW_HELLO_CMD_MASTERFORCE      V_FW_HELLO_CMD_MASTERFORCE(1U)
1892
1893 #define S_FW_HELLO_CMD_MBMASTER         24
1894 #define M_FW_HELLO_CMD_MBMASTER         0xf
1895 #define V_FW_HELLO_CMD_MBMASTER(x)      ((x) << S_FW_HELLO_CMD_MBMASTER)
1896 #define G_FW_HELLO_CMD_MBMASTER(x)      \
1897     (((x) >> S_FW_HELLO_CMD_MBMASTER) & M_FW_HELLO_CMD_MBMASTER)
1898
1899 #define S_FW_HELLO_CMD_MBASYNCNOTINT    23
1900 #define M_FW_HELLO_CMD_MBASYNCNOTINT    0x1
1901 #define V_FW_HELLO_CMD_MBASYNCNOTINT(x) ((x) << S_FW_HELLO_CMD_MBASYNCNOTINT)
1902 #define G_FW_HELLO_CMD_MBASYNCNOTINT(x) \
1903     (((x) >> S_FW_HELLO_CMD_MBASYNCNOTINT) & M_FW_HELLO_CMD_MBASYNCNOTINT)
1904 #define F_FW_HELLO_CMD_MBASYNCNOTINT    V_FW_HELLO_CMD_MBASYNCNOTINT(1U)
1905
1906 #define S_FW_HELLO_CMD_MBASYNCNOT       20
1907 #define M_FW_HELLO_CMD_MBASYNCNOT       0x7
1908 #define V_FW_HELLO_CMD_MBASYNCNOT(x)    ((x) << S_FW_HELLO_CMD_MBASYNCNOT)
1909 #define G_FW_HELLO_CMD_MBASYNCNOT(x)    \
1910     (((x) >> S_FW_HELLO_CMD_MBASYNCNOT) & M_FW_HELLO_CMD_MBASYNCNOT)
1911
1912 struct fw_bye_cmd {
1913         __be32 op_to_write;
1914         __be32 retval_len16;
1915         __be64 r3;
1916 };
1917
1918 struct fw_initialize_cmd {
1919         __be32 op_to_write;
1920         __be32 retval_len16;
1921         __be64 r3;
1922 };
1923
1924 enum fw_caps_config_hm {
1925         FW_CAPS_CONFIG_HM_PCIE          = 0x00000001,
1926         FW_CAPS_CONFIG_HM_PL            = 0x00000002,
1927         FW_CAPS_CONFIG_HM_SGE           = 0x00000004,
1928         FW_CAPS_CONFIG_HM_CIM           = 0x00000008,
1929         FW_CAPS_CONFIG_HM_ULPTX         = 0x00000010,
1930         FW_CAPS_CONFIG_HM_TP            = 0x00000020,
1931         FW_CAPS_CONFIG_HM_ULPRX         = 0x00000040,
1932         FW_CAPS_CONFIG_HM_PMRX          = 0x00000080,
1933         FW_CAPS_CONFIG_HM_PMTX          = 0x00000100,
1934         FW_CAPS_CONFIG_HM_MC            = 0x00000200,
1935         FW_CAPS_CONFIG_HM_LE            = 0x00000400,
1936         FW_CAPS_CONFIG_HM_MPS           = 0x00000800,
1937         FW_CAPS_CONFIG_HM_XGMAC         = 0x00001000,
1938         FW_CAPS_CONFIG_HM_CPLSWITCH     = 0x00002000,
1939         FW_CAPS_CONFIG_HM_T4DBG         = 0x00004000,
1940         FW_CAPS_CONFIG_HM_MI            = 0x00008000,
1941         FW_CAPS_CONFIG_HM_I2CM          = 0x00010000,
1942         FW_CAPS_CONFIG_HM_NCSI          = 0x00020000,
1943         FW_CAPS_CONFIG_HM_SMB           = 0x00040000,
1944         FW_CAPS_CONFIG_HM_MA            = 0x00080000,
1945         FW_CAPS_CONFIG_HM_EDRAM         = 0x00100000,
1946         FW_CAPS_CONFIG_HM_PMU           = 0x00200000,
1947         FW_CAPS_CONFIG_HM_UART          = 0x00400000,
1948         FW_CAPS_CONFIG_HM_SF            = 0x00800000,
1949 };
1950
1951 /*
1952  * The VF Register Map.
1953  *
1954  * The Scatter Gather Engine (SGE), Multiport Support module (MPS), PIO Local
1955  * bus module (PL) and CPU Interface Module (CIM) components are mapped via
1956  * the Slice to Module Map Table (see below) in the Physical Function Register
1957  * Map.  The Mail Box Data (MBDATA) range is mapped via the PCI-E Mailbox Base
1958  * and Offset registers in the PF Register Map.  The MBDATA base address is
1959  * quite constrained as it determines the Mailbox Data addresses for both PFs
1960  * and VFs, and therefore must fit in both the VF and PF Register Maps without
1961  * overlapping other registers.
1962  */
1963 #define FW_T4VF_SGE_BASE_ADDR      0x0000
1964 #define FW_T4VF_MPS_BASE_ADDR      0x0100
1965 #define FW_T4VF_PL_BASE_ADDR       0x0200
1966 #define FW_T4VF_MBDATA_BASE_ADDR   0x0240
1967 #define FW_T4VF_CIM_BASE_ADDR      0x0300
1968
1969 #define FW_T4VF_REGMAP_START       0x0000
1970 #define FW_T4VF_REGMAP_SIZE        0x0400
1971
1972 enum fw_caps_config_nbm {
1973         FW_CAPS_CONFIG_NBM_IPMI         = 0x00000001,
1974         FW_CAPS_CONFIG_NBM_NCSI         = 0x00000002,
1975 };
1976
1977 enum fw_caps_config_link {
1978         FW_CAPS_CONFIG_LINK_PPP         = 0x00000001,
1979         FW_CAPS_CONFIG_LINK_QFC         = 0x00000002,
1980         FW_CAPS_CONFIG_LINK_DCBX        = 0x00000004,
1981 };
1982
1983 enum fw_caps_config_switch {
1984         FW_CAPS_CONFIG_SWITCH_INGRESS   = 0x00000001,
1985         FW_CAPS_CONFIG_SWITCH_EGRESS    = 0x00000002,
1986 };
1987
1988 enum fw_caps_config_nic {
1989         FW_CAPS_CONFIG_NIC              = 0x00000001,
1990         FW_CAPS_CONFIG_NIC_VM           = 0x00000002,
1991         FW_CAPS_CONFIG_NIC_IDS          = 0x00000004,
1992 };
1993
1994 enum fw_caps_config_toe {
1995         FW_CAPS_CONFIG_TOE              = 0x00000001,
1996 };
1997
1998 enum fw_caps_config_rdma {
1999         FW_CAPS_CONFIG_RDMA_RDDP        = 0x00000001,
2000         FW_CAPS_CONFIG_RDMA_RDMAC       = 0x00000002,
2001 };
2002
2003 enum fw_caps_config_iscsi {
2004         FW_CAPS_CONFIG_ISCSI_INITIATOR_PDU = 0x00000001,
2005         FW_CAPS_CONFIG_ISCSI_TARGET_PDU = 0x00000002,
2006         FW_CAPS_CONFIG_ISCSI_INITIATOR_CNXOFLD = 0x00000004,
2007         FW_CAPS_CONFIG_ISCSI_TARGET_CNXOFLD = 0x00000008,
2008         FW_CAPS_CONFIG_ISCSI_INITIATOR_SSNOFLD = 0x00000010,
2009         FW_CAPS_CONFIG_ISCSI_TARGET_SSNOFLD = 0x00000020,
2010 };
2011
2012 enum fw_caps_config_fcoe {
2013         FW_CAPS_CONFIG_FCOE_INITIATOR   = 0x00000001,
2014         FW_CAPS_CONFIG_FCOE_TARGET      = 0x00000002,
2015         FW_CAPS_CONFIG_FCOE_CTRL_OFLD   = 0x00000004,
2016 };
2017
2018 struct fw_caps_config_cmd {
2019         __be32 op_to_write;
2020         __be32 retval_len16;
2021         __be32 r2;
2022         __be32 hwmbitmap;
2023         __be16 nbmcaps;
2024         __be16 linkcaps;
2025         __be16 switchcaps;
2026         __be16 r3;
2027         __be16 niccaps;
2028         __be16 toecaps;
2029         __be16 rdmacaps;
2030         __be16 r4;
2031         __be16 iscsicaps;
2032         __be16 fcoecaps;
2033         __be32 r5;
2034         __be64 r6;
2035 };
2036
2037 /*
2038  * params command mnemonics
2039  */
2040 enum fw_params_mnem {
2041         FW_PARAMS_MNEM_DEV              = 1,    /* device params */
2042         FW_PARAMS_MNEM_PFVF             = 2,    /* function params */
2043         FW_PARAMS_MNEM_REG              = 3,    /* limited register access */
2044         FW_PARAMS_MNEM_DMAQ             = 4,    /* dma queue params */
2045         FW_PARAMS_MNEM_LAST
2046 };
2047
2048 /*
2049  * device parameters
2050  */
2051 enum fw_params_param_dev {
2052         FW_PARAMS_PARAM_DEV_CCLK        = 0x00, /* chip core clock in khz */
2053         FW_PARAMS_PARAM_DEV_PORTVEC     = 0x01, /* the port vector */
2054         FW_PARAMS_PARAM_DEV_NTID        = 0x02, /* reads the number of TIDs
2055                                                  * allocated by the device's
2056                                                  * Lookup Engine
2057                                                  */
2058         FW_PARAMS_PARAM_DEV_FLOWC_BUFFIFO_SZ = 0x03,
2059         FW_PARAMS_PARAM_DEV_INTVER_NIC  = 0x04,
2060         FW_PARAMS_PARAM_DEV_INTVER_VNIC = 0x05,
2061         FW_PARAMS_PARAM_DEV_INTVER_OFLD = 0x06,
2062         FW_PARAMS_PARAM_DEV_INTVER_RI   = 0x07,
2063         FW_PARAMS_PARAM_DEV_INTVER_ISCSIPDU = 0x08,
2064         FW_PARAMS_PARAM_DEV_INTVER_ISCSI = 0x09,
2065         FW_PARAMS_PARAM_DEV_INTVER_FCOE = 0x0A,
2066         FW_PARAMS_PARAM_DEV_FWREV = 0x0B,
2067         FW_PARAMS_PARAM_DEV_TPREV = 0x0C,
2068 };
2069
2070 /*
2071  * physical and virtual function parameters
2072  */
2073 enum fw_params_param_pfvf {
2074         FW_PARAMS_PARAM_PFVF_RWXCAPS    = 0x00,
2075         FW_PARAMS_PARAM_PFVF_ROUTE_START = 0x01,
2076         FW_PARAMS_PARAM_PFVF_ROUTE_END = 0x02,
2077         FW_PARAMS_PARAM_PFVF_CLIP_START = 0x03,
2078         FW_PARAMS_PARAM_PFVF_CLIP_END = 0x04,
2079         FW_PARAMS_PARAM_PFVF_FILTER_START = 0x05,
2080         FW_PARAMS_PARAM_PFVF_FILTER_END = 0x06,
2081         FW_PARAMS_PARAM_PFVF_SERVER_START = 0x07,
2082         FW_PARAMS_PARAM_PFVF_SERVER_END = 0x08,
2083         FW_PARAMS_PARAM_PFVF_TDDP_START = 0x09,
2084         FW_PARAMS_PARAM_PFVF_TDDP_END = 0x0A,
2085         FW_PARAMS_PARAM_PFVF_ISCSI_START = 0x0B,
2086         FW_PARAMS_PARAM_PFVF_ISCSI_END = 0x0C,
2087         FW_PARAMS_PARAM_PFVF_STAG_START = 0x0D,
2088         FW_PARAMS_PARAM_PFVF_STAG_END = 0x0E,
2089         FW_PARAMS_PARAM_PFVF_RQ_START = 0x1F,
2090         FW_PARAMS_PARAM_PFVF_RQ_END     = 0x10,
2091         FW_PARAMS_PARAM_PFVF_PBL_START = 0x11,
2092         FW_PARAMS_PARAM_PFVF_PBL_END    = 0x12,
2093         FW_PARAMS_PARAM_PFVF_L2T_START = 0x13,
2094         FW_PARAMS_PARAM_PFVF_L2T_END = 0x14,
2095         FW_PARAMS_PARAM_PFVF_SQRQ_START = 0x15,
2096         FW_PARAMS_PARAM_PFVF_SQRQ_END   = 0x16,
2097         FW_PARAMS_PARAM_PFVF_CQ_START   = 0x17,
2098         FW_PARAMS_PARAM_PFVF_CQ_END     = 0x18,
2099         FW_PARAMS_PARAM_PFVF_SCHEDCLASS_ETH = 0x20,
2100         FW_PARAMS_PARAM_PFVF_VIID       = 0x24,
2101         FW_PARAMS_PARAM_PFVF_CPMASK     = 0x25,
2102         FW_PARAMS_PARAM_PFVF_OCQ_START  = 0x26,
2103         FW_PARAMS_PARAM_PFVF_OCQ_END    = 0x27,
2104         FW_PARAMS_PARAM_PFVF_CONM_MAP   = 0x28,
2105         FW_PARAMS_PARAM_PFVF_IQFLINT_START = 0x29,
2106         FW_PARAMS_PARAM_PFVF_IQFLINT_END = 0x2A,
2107         FW_PARAMS_PARAM_PFVF_EQ_START   = 0x2B,
2108         FW_PARAMS_PARAM_PFVF_EQ_END     = 0x2C
2109 };
2110
2111 /*
2112  * dma queue parameters
2113  */
2114 enum fw_params_param_dmaq {
2115         FW_PARAMS_PARAM_DMAQ_IQ_DCAEN_DCACPU = 0x00,
2116         FW_PARAMS_PARAM_DMAQ_IQ_INTCNTTHRESH = 0x01,
2117         FW_PARAMS_PARAM_DMAQ_EQ_CMPLIQID_MNGT = 0x10,
2118         FW_PARAMS_PARAM_DMAQ_EQ_CMPLIQID_CTRL = 0x11,
2119         FW_PARAMS_PARAM_DMAQ_EQ_SCHEDCLASS_ETH = 0x12,
2120 };
2121
2122 #define S_FW_PARAMS_MNEM        24
2123 #define M_FW_PARAMS_MNEM        0xff
2124 #define V_FW_PARAMS_MNEM(x)     ((x) << S_FW_PARAMS_MNEM)
2125 #define G_FW_PARAMS_MNEM(x)     \
2126     (((x) >> S_FW_PARAMS_MNEM) & M_FW_PARAMS_MNEM)
2127
2128 #define S_FW_PARAMS_PARAM_X     16
2129 #define M_FW_PARAMS_PARAM_X     0xff
2130 #define V_FW_PARAMS_PARAM_X(x) ((x) << S_FW_PARAMS_PARAM_X)
2131 #define G_FW_PARAMS_PARAM_X(x) \
2132     (((x) >> S_FW_PARAMS_PARAM_X) & M_FW_PARAMS_PARAM_X)
2133
2134 #define S_FW_PARAMS_PARAM_Y     8
2135 #define M_FW_PARAMS_PARAM_Y     0xff
2136 #define V_FW_PARAMS_PARAM_Y(x) ((x) << S_FW_PARAMS_PARAM_Y)
2137 #define G_FW_PARAMS_PARAM_Y(x) \
2138     (((x) >> S_FW_PARAMS_PARAM_Y) & M_FW_PARAMS_PARAM_Y)
2139
2140 #define S_FW_PARAMS_PARAM_Z     0
2141 #define M_FW_PARAMS_PARAM_Z     0xff
2142 #define V_FW_PARAMS_PARAM_Z(x) ((x) << S_FW_PARAMS_PARAM_Z)
2143 #define G_FW_PARAMS_PARAM_Z(x) \
2144     (((x) >> S_FW_PARAMS_PARAM_Z) & M_FW_PARAMS_PARAM_Z)
2145
2146 #define S_FW_PARAMS_PARAM_XYZ   0
2147 #define M_FW_PARAMS_PARAM_XYZ   0xffffff
2148 #define V_FW_PARAMS_PARAM_XYZ(x) ((x) << S_FW_PARAMS_PARAM_XYZ)
2149 #define G_FW_PARAMS_PARAM_XYZ(x) \
2150     (((x) >> S_FW_PARAMS_PARAM_XYZ) & M_FW_PARAMS_PARAM_XYZ)
2151
2152 #define S_FW_PARAMS_PARAM_YZ    0
2153 #define M_FW_PARAMS_PARAM_YZ    0xffff
2154 #define V_FW_PARAMS_PARAM_YZ(x) ((x) << S_FW_PARAMS_PARAM_YZ)
2155 #define G_FW_PARAMS_PARAM_YZ(x) \
2156     (((x) >> S_FW_PARAMS_PARAM_YZ) & M_FW_PARAMS_PARAM_YZ)
2157
2158 struct fw_params_cmd {
2159         __be32 op_to_vfn;
2160         __be32 retval_len16;
2161         struct fw_params_param {
2162                 __be32 mnem;
2163                 __be32 val;
2164         } param[7];
2165 };
2166
2167 #define S_FW_PARAMS_CMD_PFN     8
2168 #define M_FW_PARAMS_CMD_PFN     0x7
2169 #define V_FW_PARAMS_CMD_PFN(x)  ((x) << S_FW_PARAMS_CMD_PFN)
2170 #define G_FW_PARAMS_CMD_PFN(x)  \
2171     (((x) >> S_FW_PARAMS_CMD_PFN) & M_FW_PARAMS_CMD_PFN)
2172
2173 #define S_FW_PARAMS_CMD_VFN     0
2174 #define M_FW_PARAMS_CMD_VFN     0xff
2175 #define V_FW_PARAMS_CMD_VFN(x)  ((x) << S_FW_PARAMS_CMD_VFN)
2176 #define G_FW_PARAMS_CMD_VFN(x)  \
2177     (((x) >> S_FW_PARAMS_CMD_VFN) & M_FW_PARAMS_CMD_VFN)
2178
2179 struct fw_pfvf_cmd {
2180         __be32 op_to_vfn;
2181         __be32 retval_len16;
2182         __be32 niqflint_niq;
2183         __be32 type_to_neq;
2184         __be32 tc_to_nexactf;
2185         __be32 r_caps_to_nethctrl;
2186         __be16 nricq;
2187         __be16 nriqp;
2188         __be32 r4;
2189 };
2190
2191 #define S_FW_PFVF_CMD_PFN       8
2192 #define M_FW_PFVF_CMD_PFN       0x7
2193 #define V_FW_PFVF_CMD_PFN(x)    ((x) << S_FW_PFVF_CMD_PFN)
2194 #define G_FW_PFVF_CMD_PFN(x)    \
2195     (((x) >> S_FW_PFVF_CMD_PFN) & M_FW_PFVF_CMD_PFN)
2196
2197 #define S_FW_PFVF_CMD_VFN       0
2198 #define M_FW_PFVF_CMD_VFN       0xff
2199 #define V_FW_PFVF_CMD_VFN(x)    ((x) << S_FW_PFVF_CMD_VFN)
2200 #define G_FW_PFVF_CMD_VFN(x)    \
2201     (((x) >> S_FW_PFVF_CMD_VFN) & M_FW_PFVF_CMD_VFN)
2202
2203 #define S_FW_PFVF_CMD_NIQFLINT          20
2204 #define M_FW_PFVF_CMD_NIQFLINT          0xfff
2205 #define V_FW_PFVF_CMD_NIQFLINT(x)       ((x) << S_FW_PFVF_CMD_NIQFLINT)
2206 #define G_FW_PFVF_CMD_NIQFLINT(x)       \
2207     (((x) >> S_FW_PFVF_CMD_NIQFLINT) & M_FW_PFVF_CMD_NIQFLINT)
2208
2209 #define S_FW_PFVF_CMD_NIQ       0
2210 #define M_FW_PFVF_CMD_NIQ       0xfffff
2211 #define V_FW_PFVF_CMD_NIQ(x)    ((x) << S_FW_PFVF_CMD_NIQ)
2212 #define G_FW_PFVF_CMD_NIQ(x)    \
2213     (((x) >> S_FW_PFVF_CMD_NIQ) & M_FW_PFVF_CMD_NIQ)
2214
2215 #define S_FW_PFVF_CMD_TYPE      31
2216 #define M_FW_PFVF_CMD_TYPE      0x1
2217 #define V_FW_PFVF_CMD_TYPE(x)   ((x) << S_FW_PFVF_CMD_TYPE)
2218 #define G_FW_PFVF_CMD_TYPE(x)   \
2219     (((x) >> S_FW_PFVF_CMD_TYPE) & M_FW_PFVF_CMD_TYPE)
2220 #define F_FW_PFVF_CMD_TYPE      V_FW_PFVF_CMD_TYPE(1U)
2221
2222 #define S_FW_PFVF_CMD_CMASK     24
2223 #define M_FW_PFVF_CMD_CMASK     0xf
2224 #define V_FW_PFVF_CMD_CMASK(x)  ((x) << S_FW_PFVF_CMD_CMASK)
2225 #define G_FW_PFVF_CMD_CMASK(x)  \
2226     (((x) >> S_FW_PFVF_CMD_CMASK) & M_FW_PFVF_CMD_CMASK)
2227
2228 #define S_FW_PFVF_CMD_PMASK     20
2229 #define M_FW_PFVF_CMD_PMASK     0xf
2230 #define V_FW_PFVF_CMD_PMASK(x)  ((x) << S_FW_PFVF_CMD_PMASK)
2231 #define G_FW_PFVF_CMD_PMASK(x)  \
2232     (((x) >> S_FW_PFVF_CMD_PMASK) & M_FW_PFVF_CMD_PMASK)
2233
2234 #define S_FW_PFVF_CMD_NEQ       0
2235 #define M_FW_PFVF_CMD_NEQ       0xfffff
2236 #define V_FW_PFVF_CMD_NEQ(x)    ((x) << S_FW_PFVF_CMD_NEQ)
2237 #define G_FW_PFVF_CMD_NEQ(x)    \
2238     (((x) >> S_FW_PFVF_CMD_NEQ) & M_FW_PFVF_CMD_NEQ)
2239
2240 #define S_FW_PFVF_CMD_TC        24
2241 #define M_FW_PFVF_CMD_TC        0xff
2242 #define V_FW_PFVF_CMD_TC(x)     ((x) << S_FW_PFVF_CMD_TC)
2243 #define G_FW_PFVF_CMD_TC(x)     (((x) >> S_FW_PFVF_CMD_TC) & M_FW_PFVF_CMD_TC)
2244
2245 #define S_FW_PFVF_CMD_NVI       16
2246 #define M_FW_PFVF_CMD_NVI       0xff
2247 #define V_FW_PFVF_CMD_NVI(x)    ((x) << S_FW_PFVF_CMD_NVI)
2248 #define G_FW_PFVF_CMD_NVI(x)    \
2249     (((x) >> S_FW_PFVF_CMD_NVI) & M_FW_PFVF_CMD_NVI)
2250
2251 #define S_FW_PFVF_CMD_NEXACTF           0
2252 #define M_FW_PFVF_CMD_NEXACTF           0xffff
2253 #define V_FW_PFVF_CMD_NEXACTF(x)        ((x) << S_FW_PFVF_CMD_NEXACTF)
2254 #define G_FW_PFVF_CMD_NEXACTF(x)        \
2255     (((x) >> S_FW_PFVF_CMD_NEXACTF) & M_FW_PFVF_CMD_NEXACTF)
2256
2257 #define S_FW_PFVF_CMD_R_CAPS    24
2258 #define M_FW_PFVF_CMD_R_CAPS    0xff
2259 #define V_FW_PFVF_CMD_R_CAPS(x) ((x) << S_FW_PFVF_CMD_R_CAPS)
2260 #define G_FW_PFVF_CMD_R_CAPS(x) \
2261     (((x) >> S_FW_PFVF_CMD_R_CAPS) & M_FW_PFVF_CMD_R_CAPS)
2262
2263 #define S_FW_PFVF_CMD_WX_CAPS           16
2264 #define M_FW_PFVF_CMD_WX_CAPS           0xff
2265 #define V_FW_PFVF_CMD_WX_CAPS(x)        ((x) << S_FW_PFVF_CMD_WX_CAPS)
2266 #define G_FW_PFVF_CMD_WX_CAPS(x)        \
2267     (((x) >> S_FW_PFVF_CMD_WX_CAPS) & M_FW_PFVF_CMD_WX_CAPS)
2268
2269 #define S_FW_PFVF_CMD_NETHCTRL          0
2270 #define M_FW_PFVF_CMD_NETHCTRL          0xffff
2271 #define V_FW_PFVF_CMD_NETHCTRL(x)       ((x) << S_FW_PFVF_CMD_NETHCTRL)
2272 #define G_FW_PFVF_CMD_NETHCTRL(x)       \
2273     (((x) >> S_FW_PFVF_CMD_NETHCTRL) & M_FW_PFVF_CMD_NETHCTRL)
2274 /*
2275  *      ingress queue type; the first 1K ingress queues can have associated 0,
2276  *      1 or 2 free lists and an interrupt, all other ingress queues lack these
2277  *      capabilities
2278  */
2279 enum fw_iq_type {
2280         FW_IQ_TYPE_FL_INT_CAP,
2281         FW_IQ_TYPE_NO_FL_INT_CAP
2282 };
2283
2284 struct fw_iq_cmd {
2285         __be32 op_to_vfn;
2286         __be32 alloc_to_len16;
2287         __be16 physiqid;
2288         __be16 iqid;
2289         __be16 fl0id;
2290         __be16 fl1id;
2291         __be32 type_to_iqandstindex;
2292         __be16 iqdroprss_to_iqesize;
2293         __be16 iqsize;
2294         __be64 iqaddr;
2295         __be32 iqns_to_fl0congen;
2296         __be16 fl0dcaen_to_fl0cidxfthresh;
2297         __be16 fl0size;
2298         __be64 fl0addr;
2299         __be32 fl1cngchmap_to_fl1congen;
2300         __be16 fl1dcaen_to_fl1cidxfthresh;
2301         __be16 fl1size;
2302         __be64 fl1addr;
2303 };
2304
2305 #define S_FW_IQ_CMD_PFN         8
2306 #define M_FW_IQ_CMD_PFN         0x7
2307 #define V_FW_IQ_CMD_PFN(x)      ((x) << S_FW_IQ_CMD_PFN)
2308 #define G_FW_IQ_CMD_PFN(x)      (((x) >> S_FW_IQ_CMD_PFN) & M_FW_IQ_CMD_PFN)
2309
2310 #define S_FW_IQ_CMD_VFN         0
2311 #define M_FW_IQ_CMD_VFN         0xff
2312 #define V_FW_IQ_CMD_VFN(x)      ((x) << S_FW_IQ_CMD_VFN)
2313 #define G_FW_IQ_CMD_VFN(x)      (((x) >> S_FW_IQ_CMD_VFN) & M_FW_IQ_CMD_VFN)
2314
2315 #define S_FW_IQ_CMD_ALLOC       31
2316 #define M_FW_IQ_CMD_ALLOC       0x1
2317 #define V_FW_IQ_CMD_ALLOC(x)    ((x) << S_FW_IQ_CMD_ALLOC)
2318 #define G_FW_IQ_CMD_ALLOC(x)    \
2319     (((x) >> S_FW_IQ_CMD_ALLOC) & M_FW_IQ_CMD_ALLOC)
2320 #define F_FW_IQ_CMD_ALLOC       V_FW_IQ_CMD_ALLOC(1U)
2321
2322 #define S_FW_IQ_CMD_FREE        30
2323 #define M_FW_IQ_CMD_FREE        0x1
2324 #define V_FW_IQ_CMD_FREE(x)     ((x) << S_FW_IQ_CMD_FREE)
2325 #define G_FW_IQ_CMD_FREE(x)     (((x) >> S_FW_IQ_CMD_FREE) & M_FW_IQ_CMD_FREE)
2326 #define F_FW_IQ_CMD_FREE        V_FW_IQ_CMD_FREE(1U)
2327
2328 #define S_FW_IQ_CMD_MODIFY      29
2329 #define M_FW_IQ_CMD_MODIFY      0x1
2330 #define V_FW_IQ_CMD_MODIFY(x)   ((x) << S_FW_IQ_CMD_MODIFY)
2331 #define G_FW_IQ_CMD_MODIFY(x)   \
2332     (((x) >> S_FW_IQ_CMD_MODIFY) & M_FW_IQ_CMD_MODIFY)
2333 #define F_FW_IQ_CMD_MODIFY      V_FW_IQ_CMD_MODIFY(1U)
2334
2335 #define S_FW_IQ_CMD_IQSTART     28
2336 #define M_FW_IQ_CMD_IQSTART     0x1
2337 #define V_FW_IQ_CMD_IQSTART(x)  ((x) << S_FW_IQ_CMD_IQSTART)
2338 #define G_FW_IQ_CMD_IQSTART(x)  \
2339     (((x) >> S_FW_IQ_CMD_IQSTART) & M_FW_IQ_CMD_IQSTART)
2340 #define F_FW_IQ_CMD_IQSTART     V_FW_IQ_CMD_IQSTART(1U)
2341
2342 #define S_FW_IQ_CMD_IQSTOP      27
2343 #define M_FW_IQ_CMD_IQSTOP      0x1
2344 #define V_FW_IQ_CMD_IQSTOP(x)   ((x) << S_FW_IQ_CMD_IQSTOP)
2345 #define G_FW_IQ_CMD_IQSTOP(x)   \
2346     (((x) >> S_FW_IQ_CMD_IQSTOP) & M_FW_IQ_CMD_IQSTOP)
2347 #define F_FW_IQ_CMD_IQSTOP      V_FW_IQ_CMD_IQSTOP(1U)
2348
2349 #define S_FW_IQ_CMD_TYPE        29
2350 #define M_FW_IQ_CMD_TYPE        0x7
2351 #define V_FW_IQ_CMD_TYPE(x)     ((x) << S_FW_IQ_CMD_TYPE)
2352 #define G_FW_IQ_CMD_TYPE(x)     (((x) >> S_FW_IQ_CMD_TYPE) & M_FW_IQ_CMD_TYPE)
2353
2354 #define S_FW_IQ_CMD_IQASYNCH    28
2355 #define M_FW_IQ_CMD_IQASYNCH    0x1
2356 #define V_FW_IQ_CMD_IQASYNCH(x) ((x) << S_FW_IQ_CMD_IQASYNCH)
2357 #define G_FW_IQ_CMD_IQASYNCH(x) \
2358     (((x) >> S_FW_IQ_CMD_IQASYNCH) & M_FW_IQ_CMD_IQASYNCH)
2359 #define F_FW_IQ_CMD_IQASYNCH    V_FW_IQ_CMD_IQASYNCH(1U)
2360
2361 #define S_FW_IQ_CMD_VIID        16
2362 #define M_FW_IQ_CMD_VIID        0xfff
2363 #define V_FW_IQ_CMD_VIID(x)     ((x) << S_FW_IQ_CMD_VIID)
2364 #define G_FW_IQ_CMD_VIID(x)     (((x) >> S_FW_IQ_CMD_VIID) & M_FW_IQ_CMD_VIID)
2365
2366 #define S_FW_IQ_CMD_IQANDST     15
2367 #define M_FW_IQ_CMD_IQANDST     0x1
2368 #define V_FW_IQ_CMD_IQANDST(x)  ((x) << S_FW_IQ_CMD_IQANDST)
2369 #define G_FW_IQ_CMD_IQANDST(x)  \
2370     (((x) >> S_FW_IQ_CMD_IQANDST) & M_FW_IQ_CMD_IQANDST)
2371 #define F_FW_IQ_CMD_IQANDST     V_FW_IQ_CMD_IQANDST(1U)
2372
2373 #define S_FW_IQ_CMD_IQANUS      14
2374 #define M_FW_IQ_CMD_IQANUS      0x1
2375 #define V_FW_IQ_CMD_IQANUS(x)   ((x) << S_FW_IQ_CMD_IQANUS)
2376 #define G_FW_IQ_CMD_IQANUS(x)   \
2377     (((x) >> S_FW_IQ_CMD_IQANUS) & M_FW_IQ_CMD_IQANUS)
2378 #define F_FW_IQ_CMD_IQANUS      V_FW_IQ_CMD_IQANUS(1U)
2379
2380 #define S_FW_IQ_CMD_IQANUD      12
2381 #define M_FW_IQ_CMD_IQANUD      0x3
2382 #define V_FW_IQ_CMD_IQANUD(x)   ((x) << S_FW_IQ_CMD_IQANUD)
2383 #define G_FW_IQ_CMD_IQANUD(x)   \
2384     (((x) >> S_FW_IQ_CMD_IQANUD) & M_FW_IQ_CMD_IQANUD)
2385
2386 #define S_FW_IQ_CMD_IQANDSTINDEX        0
2387 #define M_FW_IQ_CMD_IQANDSTINDEX        0xfff
2388 #define V_FW_IQ_CMD_IQANDSTINDEX(x)     ((x) << S_FW_IQ_CMD_IQANDSTINDEX)
2389 #define G_FW_IQ_CMD_IQANDSTINDEX(x)     \
2390     (((x) >> S_FW_IQ_CMD_IQANDSTINDEX) & M_FW_IQ_CMD_IQANDSTINDEX)
2391
2392 #define S_FW_IQ_CMD_IQDROPRSS           15
2393 #define M_FW_IQ_CMD_IQDROPRSS           0x1
2394 #define V_FW_IQ_CMD_IQDROPRSS(x)        ((x) << S_FW_IQ_CMD_IQDROPRSS)
2395 #define G_FW_IQ_CMD_IQDROPRSS(x)        \
2396     (((x) >> S_FW_IQ_CMD_IQDROPRSS) & M_FW_IQ_CMD_IQDROPRSS)
2397 #define F_FW_IQ_CMD_IQDROPRSS   V_FW_IQ_CMD_IQDROPRSS(1U)
2398
2399 #define S_FW_IQ_CMD_IQGTSMODE           14
2400 #define M_FW_IQ_CMD_IQGTSMODE           0x1
2401 #define V_FW_IQ_CMD_IQGTSMODE(x)        ((x) << S_FW_IQ_CMD_IQGTSMODE)
2402 #define G_FW_IQ_CMD_IQGTSMODE(x)        \
2403     (((x) >> S_FW_IQ_CMD_IQGTSMODE) & M_FW_IQ_CMD_IQGTSMODE)
2404 #define F_FW_IQ_CMD_IQGTSMODE   V_FW_IQ_CMD_IQGTSMODE(1U)
2405
2406 #define S_FW_IQ_CMD_IQPCIECH    12
2407 #define M_FW_IQ_CMD_IQPCIECH    0x3
2408 #define V_FW_IQ_CMD_IQPCIECH(x) ((x) << S_FW_IQ_CMD_IQPCIECH)
2409 #define G_FW_IQ_CMD_IQPCIECH(x) \
2410     (((x) >> S_FW_IQ_CMD_IQPCIECH) & M_FW_IQ_CMD_IQPCIECH)
2411
2412 #define S_FW_IQ_CMD_IQDCAEN     11
2413 #define M_FW_IQ_CMD_IQDCAEN     0x1
2414 #define V_FW_IQ_CMD_IQDCAEN(x)  ((x) << S_FW_IQ_CMD_IQDCAEN)
2415 #define G_FW_IQ_CMD_IQDCAEN(x)  \
2416     (((x) >> S_FW_IQ_CMD_IQDCAEN) & M_FW_IQ_CMD_IQDCAEN)
2417 #define F_FW_IQ_CMD_IQDCAEN     V_FW_IQ_CMD_IQDCAEN(1U)
2418
2419 #define S_FW_IQ_CMD_IQDCACPU    6
2420 #define M_FW_IQ_CMD_IQDCACPU    0x1f
2421 #define V_FW_IQ_CMD_IQDCACPU(x) ((x) << S_FW_IQ_CMD_IQDCACPU)
2422 #define G_FW_IQ_CMD_IQDCACPU(x) \
2423     (((x) >> S_FW_IQ_CMD_IQDCACPU) & M_FW_IQ_CMD_IQDCACPU)
2424
2425 #define S_FW_IQ_CMD_IQINTCNTTHRESH      4
2426 #define M_FW_IQ_CMD_IQINTCNTTHRESH      0x3
2427 #define V_FW_IQ_CMD_IQINTCNTTHRESH(x)   ((x) << S_FW_IQ_CMD_IQINTCNTTHRESH)
2428 #define G_FW_IQ_CMD_IQINTCNTTHRESH(x)   \
2429     (((x) >> S_FW_IQ_CMD_IQINTCNTTHRESH) & M_FW_IQ_CMD_IQINTCNTTHRESH)
2430
2431 #define S_FW_IQ_CMD_IQO         3
2432 #define M_FW_IQ_CMD_IQO         0x1
2433 #define V_FW_IQ_CMD_IQO(x)      ((x) << S_FW_IQ_CMD_IQO)
2434 #define G_FW_IQ_CMD_IQO(x)      (((x) >> S_FW_IQ_CMD_IQO) & M_FW_IQ_CMD_IQO)
2435 #define F_FW_IQ_CMD_IQO V_FW_IQ_CMD_IQO(1U)
2436
2437 #define S_FW_IQ_CMD_IQCPRIO     2
2438 #define M_FW_IQ_CMD_IQCPRIO     0x1
2439 #define V_FW_IQ_CMD_IQCPRIO(x)  ((x) << S_FW_IQ_CMD_IQCPRIO)
2440 #define G_FW_IQ_CMD_IQCPRIO(x)  \
2441     (((x) >> S_FW_IQ_CMD_IQCPRIO) & M_FW_IQ_CMD_IQCPRIO)
2442 #define F_FW_IQ_CMD_IQCPRIO     V_FW_IQ_CMD_IQCPRIO(1U)
2443
2444 #define S_FW_IQ_CMD_IQESIZE     0
2445 #define M_FW_IQ_CMD_IQESIZE     0x3
2446 #define V_FW_IQ_CMD_IQESIZE(x)  ((x) << S_FW_IQ_CMD_IQESIZE)
2447 #define G_FW_IQ_CMD_IQESIZE(x)  \
2448     (((x) >> S_FW_IQ_CMD_IQESIZE) & M_FW_IQ_CMD_IQESIZE)
2449
2450 #define S_FW_IQ_CMD_IQNS        31
2451 #define M_FW_IQ_CMD_IQNS        0x1
2452 #define V_FW_IQ_CMD_IQNS(x)     ((x) << S_FW_IQ_CMD_IQNS)
2453 #define G_FW_IQ_CMD_IQNS(x)     (((x) >> S_FW_IQ_CMD_IQNS) & M_FW_IQ_CMD_IQNS)
2454 #define F_FW_IQ_CMD_IQNS        V_FW_IQ_CMD_IQNS(1U)
2455
2456 #define S_FW_IQ_CMD_IQRO        30
2457 #define M_FW_IQ_CMD_IQRO        0x1
2458 #define V_FW_IQ_CMD_IQRO(x)     ((x) << S_FW_IQ_CMD_IQRO)
2459 #define G_FW_IQ_CMD_IQRO(x)     (((x) >> S_FW_IQ_CMD_IQRO) & M_FW_IQ_CMD_IQRO)
2460 #define F_FW_IQ_CMD_IQRO        V_FW_IQ_CMD_IQRO(1U)
2461
2462 #define S_FW_IQ_CMD_IQFLINTIQHSEN       28
2463 #define M_FW_IQ_CMD_IQFLINTIQHSEN       0x3
2464 #define V_FW_IQ_CMD_IQFLINTIQHSEN(x)    ((x) << S_FW_IQ_CMD_IQFLINTIQHSEN)
2465 #define G_FW_IQ_CMD_IQFLINTIQHSEN(x)    \
2466     (((x) >> S_FW_IQ_CMD_IQFLINTIQHSEN) & M_FW_IQ_CMD_IQFLINTIQHSEN)
2467
2468 #define S_FW_IQ_CMD_IQFLINTCONGEN       27
2469 #define M_FW_IQ_CMD_IQFLINTCONGEN       0x1
2470 #define V_FW_IQ_CMD_IQFLINTCONGEN(x)    ((x) << S_FW_IQ_CMD_IQFLINTCONGEN)
2471 #define G_FW_IQ_CMD_IQFLINTCONGEN(x)    \
2472     (((x) >> S_FW_IQ_CMD_IQFLINTCONGEN) & M_FW_IQ_CMD_IQFLINTCONGEN)
2473 #define F_FW_IQ_CMD_IQFLINTCONGEN       V_FW_IQ_CMD_IQFLINTCONGEN(1U)
2474
2475 #define S_FW_IQ_CMD_IQFLINTISCSIC       26
2476 #define M_FW_IQ_CMD_IQFLINTISCSIC       0x1
2477 #define V_FW_IQ_CMD_IQFLINTISCSIC(x)    ((x) << S_FW_IQ_CMD_IQFLINTISCSIC)
2478 #define G_FW_IQ_CMD_IQFLINTISCSIC(x)    \
2479     (((x) >> S_FW_IQ_CMD_IQFLINTISCSIC) & M_FW_IQ_CMD_IQFLINTISCSIC)
2480 #define F_FW_IQ_CMD_IQFLINTISCSIC       V_FW_IQ_CMD_IQFLINTISCSIC(1U)
2481
2482 #define S_FW_IQ_CMD_FL0CNGCHMAP         20
2483 #define M_FW_IQ_CMD_FL0CNGCHMAP         0xf
2484 #define V_FW_IQ_CMD_FL0CNGCHMAP(x)      ((x) << S_FW_IQ_CMD_FL0CNGCHMAP)
2485 #define G_FW_IQ_CMD_FL0CNGCHMAP(x)      \
2486     (((x) >> S_FW_IQ_CMD_FL0CNGCHMAP) & M_FW_IQ_CMD_FL0CNGCHMAP)
2487
2488 #define S_FW_IQ_CMD_FL0CACHELOCK        15
2489 #define M_FW_IQ_CMD_FL0CACHELOCK        0x1
2490 #define V_FW_IQ_CMD_FL0CACHELOCK(x)     ((x) << S_FW_IQ_CMD_FL0CACHELOCK)
2491 #define G_FW_IQ_CMD_FL0CACHELOCK(x)     \
2492     (((x) >> S_FW_IQ_CMD_FL0CACHELOCK) & M_FW_IQ_CMD_FL0CACHELOCK)
2493 #define F_FW_IQ_CMD_FL0CACHELOCK        V_FW_IQ_CMD_FL0CACHELOCK(1U)
2494
2495 #define S_FW_IQ_CMD_FL0DBP      14
2496 #define M_FW_IQ_CMD_FL0DBP      0x1
2497 #define V_FW_IQ_CMD_FL0DBP(x)   ((x) << S_FW_IQ_CMD_FL0DBP)
2498 #define G_FW_IQ_CMD_FL0DBP(x)   \
2499     (((x) >> S_FW_IQ_CMD_FL0DBP) & M_FW_IQ_CMD_FL0DBP)
2500 #define F_FW_IQ_CMD_FL0DBP      V_FW_IQ_CMD_FL0DBP(1U)
2501
2502 #define S_FW_IQ_CMD_FL0DATANS           13
2503 #define M_FW_IQ_CMD_FL0DATANS           0x1
2504 #define V_FW_IQ_CMD_FL0DATANS(x)        ((x) << S_FW_IQ_CMD_FL0DATANS)
2505 #define G_FW_IQ_CMD_FL0DATANS(x)        \
2506     (((x) >> S_FW_IQ_CMD_FL0DATANS) & M_FW_IQ_CMD_FL0DATANS)
2507 #define F_FW_IQ_CMD_FL0DATANS   V_FW_IQ_CMD_FL0DATANS(1U)
2508
2509 #define S_FW_IQ_CMD_FL0DATARO           12
2510 #define M_FW_IQ_CMD_FL0DATARO           0x1
2511 #define V_FW_IQ_CMD_FL0DATARO(x)        ((x) << S_FW_IQ_CMD_FL0DATARO)
2512 #define G_FW_IQ_CMD_FL0DATARO(x)        \
2513     (((x) >> S_FW_IQ_CMD_FL0DATARO) & M_FW_IQ_CMD_FL0DATARO)
2514 #define F_FW_IQ_CMD_FL0DATARO   V_FW_IQ_CMD_FL0DATARO(1U)
2515
2516 #define S_FW_IQ_CMD_FL0CONGCIF          11
2517 #define M_FW_IQ_CMD_FL0CONGCIF          0x1
2518 #define V_FW_IQ_CMD_FL0CONGCIF(x)       ((x) << S_FW_IQ_CMD_FL0CONGCIF)
2519 #define G_FW_IQ_CMD_FL0CONGCIF(x)       \
2520     (((x) >> S_FW_IQ_CMD_FL0CONGCIF) & M_FW_IQ_CMD_FL0CONGCIF)
2521 #define F_FW_IQ_CMD_FL0CONGCIF  V_FW_IQ_CMD_FL0CONGCIF(1U)
2522
2523 #define S_FW_IQ_CMD_FL0ONCHIP           10
2524 #define M_FW_IQ_CMD_FL0ONCHIP           0x1
2525 #define V_FW_IQ_CMD_FL0ONCHIP(x)        ((x) << S_FW_IQ_CMD_FL0ONCHIP)
2526 #define G_FW_IQ_CMD_FL0ONCHIP(x)        \
2527     (((x) >> S_FW_IQ_CMD_FL0ONCHIP) & M_FW_IQ_CMD_FL0ONCHIP)
2528 #define F_FW_IQ_CMD_FL0ONCHIP   V_FW_IQ_CMD_FL0ONCHIP(1U)
2529
2530 #define S_FW_IQ_CMD_FL0STATUSPGNS       9
2531 #define M_FW_IQ_CMD_FL0STATUSPGNS       0x1
2532 #define V_FW_IQ_CMD_FL0STATUSPGNS(x)    ((x) << S_FW_IQ_CMD_FL0STATUSPGNS)
2533 #define G_FW_IQ_CMD_FL0STATUSPGNS(x)    \
2534     (((x) >> S_FW_IQ_CMD_FL0STATUSPGNS) & M_FW_IQ_CMD_FL0STATUSPGNS)
2535 #define F_FW_IQ_CMD_FL0STATUSPGNS       V_FW_IQ_CMD_FL0STATUSPGNS(1U)
2536
2537 #define S_FW_IQ_CMD_FL0STATUSPGRO       8
2538 #define M_FW_IQ_CMD_FL0STATUSPGRO       0x1
2539 #define V_FW_IQ_CMD_FL0STATUSPGRO(x)    ((x) << S_FW_IQ_CMD_FL0STATUSPGRO)
2540 #define G_FW_IQ_CMD_FL0STATUSPGRO(x)    \
2541     (((x) >> S_FW_IQ_CMD_FL0STATUSPGRO) & M_FW_IQ_CMD_FL0STATUSPGRO)
2542 #define F_FW_IQ_CMD_FL0STATUSPGRO       V_FW_IQ_CMD_FL0STATUSPGRO(1U)
2543
2544 #define S_FW_IQ_CMD_FL0FETCHNS          7
2545 #define M_FW_IQ_CMD_FL0FETCHNS          0x1
2546 #define V_FW_IQ_CMD_FL0FETCHNS(x)       ((x) << S_FW_IQ_CMD_FL0FETCHNS)
2547 #define G_FW_IQ_CMD_FL0FETCHNS(x)       \
2548     (((x) >> S_FW_IQ_CMD_FL0FETCHNS) & M_FW_IQ_CMD_FL0FETCHNS)
2549 #define F_FW_IQ_CMD_FL0FETCHNS  V_FW_IQ_CMD_FL0FETCHNS(1U)
2550
2551 #define S_FW_IQ_CMD_FL0FETCHRO          6
2552 #define M_FW_IQ_CMD_FL0FETCHRO          0x1
2553 #define V_FW_IQ_CMD_FL0FETCHRO(x)       ((x) << S_FW_IQ_CMD_FL0FETCHRO)
2554 #define G_FW_IQ_CMD_FL0FETCHRO(x)       \
2555     (((x) >> S_FW_IQ_CMD_FL0FETCHRO) & M_FW_IQ_CMD_FL0FETCHRO)
2556 #define F_FW_IQ_CMD_FL0FETCHRO  V_FW_IQ_CMD_FL0FETCHRO(1U)
2557
2558 #define S_FW_IQ_CMD_FL0HOSTFCMODE       4
2559 #define M_FW_IQ_CMD_FL0HOSTFCMODE       0x3
2560 #define V_FW_IQ_CMD_FL0HOSTFCMODE(x)    ((x) << S_FW_IQ_CMD_FL0HOSTFCMODE)
2561 #define G_FW_IQ_CMD_FL0HOSTFCMODE(x)    \
2562     (((x) >> S_FW_IQ_CMD_FL0HOSTFCMODE) & M_FW_IQ_CMD_FL0HOSTFCMODE)
2563
2564 #define S_FW_IQ_CMD_FL0CPRIO    3
2565 #define M_FW_IQ_CMD_FL0CPRIO    0x1
2566 #define V_FW_IQ_CMD_FL0CPRIO(x) ((x) << S_FW_IQ_CMD_FL0CPRIO)
2567 #define G_FW_IQ_CMD_FL0CPRIO(x) \
2568     (((x) >> S_FW_IQ_CMD_FL0CPRIO) & M_FW_IQ_CMD_FL0CPRIO)
2569 #define F_FW_IQ_CMD_FL0CPRIO    V_FW_IQ_CMD_FL0CPRIO(1U)
2570
2571 #define S_FW_IQ_CMD_FL0PADEN    2
2572 #define M_FW_IQ_CMD_FL0PADEN    0x1
2573 #define V_FW_IQ_CMD_FL0PADEN(x) ((x) << S_FW_IQ_CMD_FL0PADEN)
2574 #define G_FW_IQ_CMD_FL0PADEN(x) \
2575     (((x) >> S_FW_IQ_CMD_FL0PADEN) & M_FW_IQ_CMD_FL0PADEN)
2576 #define F_FW_IQ_CMD_FL0PADEN    V_FW_IQ_CMD_FL0PADEN(1U)
2577
2578 #define S_FW_IQ_CMD_FL0PACKEN           1
2579 #define M_FW_IQ_CMD_FL0PACKEN           0x1
2580 #define V_FW_IQ_CMD_FL0PACKEN(x)        ((x) << S_FW_IQ_CMD_FL0PACKEN)
2581 #define G_FW_IQ_CMD_FL0PACKEN(x)        \
2582     (((x) >> S_FW_IQ_CMD_FL0PACKEN) & M_FW_IQ_CMD_FL0PACKEN)
2583 #define F_FW_IQ_CMD_FL0PACKEN   V_FW_IQ_CMD_FL0PACKEN(1U)
2584
2585 #define S_FW_IQ_CMD_FL0CONGEN           0
2586 #define M_FW_IQ_CMD_FL0CONGEN           0x1
2587 #define V_FW_IQ_CMD_FL0CONGEN(x)        ((x) << S_FW_IQ_CMD_FL0CONGEN)
2588 #define G_FW_IQ_CMD_FL0CONGEN(x)        \
2589     (((x) >> S_FW_IQ_CMD_FL0CONGEN) & M_FW_IQ_CMD_FL0CONGEN)
2590 #define F_FW_IQ_CMD_FL0CONGEN   V_FW_IQ_CMD_FL0CONGEN(1U)
2591
2592 #define S_FW_IQ_CMD_FL0DCAEN    15
2593 #define M_FW_IQ_CMD_FL0DCAEN    0x1
2594 #define V_FW_IQ_CMD_FL0DCAEN(x) ((x) << S_FW_IQ_CMD_FL0DCAEN)
2595 #define G_FW_IQ_CMD_FL0DCAEN(x) \
2596     (((x) >> S_FW_IQ_CMD_FL0DCAEN) & M_FW_IQ_CMD_FL0DCAEN)
2597 #define F_FW_IQ_CMD_FL0DCAEN    V_FW_IQ_CMD_FL0DCAEN(1U)
2598
2599 #define S_FW_IQ_CMD_FL0DCACPU           10
2600 #define M_FW_IQ_CMD_FL0DCACPU           0x1f
2601 #define V_FW_IQ_CMD_FL0DCACPU(x)        ((x) << S_FW_IQ_CMD_FL0DCACPU)
2602 #define G_FW_IQ_CMD_FL0DCACPU(x)        \
2603     (((x) >> S_FW_IQ_CMD_FL0DCACPU) & M_FW_IQ_CMD_FL0DCACPU)
2604
2605 #define S_FW_IQ_CMD_FL0FBMIN    7
2606 #define M_FW_IQ_CMD_FL0FBMIN    0x7
2607 #define V_FW_IQ_CMD_FL0FBMIN(x) ((x) << S_FW_IQ_CMD_FL0FBMIN)
2608 #define G_FW_IQ_CMD_FL0FBMIN(x) \
2609     (((x) >> S_FW_IQ_CMD_FL0FBMIN) & M_FW_IQ_CMD_FL0FBMIN)
2610
2611 #define S_FW_IQ_CMD_FL0FBMAX    4
2612 #define M_FW_IQ_CMD_FL0FBMAX    0x7
2613 #define V_FW_IQ_CMD_FL0FBMAX(x) ((x) << S_FW_IQ_CMD_FL0FBMAX)
2614 #define G_FW_IQ_CMD_FL0FBMAX(x) \
2615     (((x) >> S_FW_IQ_CMD_FL0FBMAX) & M_FW_IQ_CMD_FL0FBMAX)
2616
2617 #define S_FW_IQ_CMD_FL0CIDXFTHRESHO     3
2618 #define M_FW_IQ_CMD_FL0CIDXFTHRESHO     0x1
2619 #define V_FW_IQ_CMD_FL0CIDXFTHRESHO(x)  ((x) << S_FW_IQ_CMD_FL0CIDXFTHRESHO)
2620 #define G_FW_IQ_CMD_FL0CIDXFTHRESHO(x)  \
2621     (((x) >> S_FW_IQ_CMD_FL0CIDXFTHRESHO) & M_FW_IQ_CMD_FL0CIDXFTHRESHO)
2622 #define F_FW_IQ_CMD_FL0CIDXFTHRESHO     V_FW_IQ_CMD_FL0CIDXFTHRESHO(1U)
2623
2624 #define S_FW_IQ_CMD_FL0CIDXFTHRESH      0
2625 #define M_FW_IQ_CMD_FL0CIDXFTHRESH      0x7
2626 #define V_FW_IQ_CMD_FL0CIDXFTHRESH(x)   ((x) << S_FW_IQ_CMD_FL0CIDXFTHRESH)
2627 #define G_FW_IQ_CMD_FL0CIDXFTHRESH(x)   \
2628     (((x) >> S_FW_IQ_CMD_FL0CIDXFTHRESH) & M_FW_IQ_CMD_FL0CIDXFTHRESH)
2629
2630 #define S_FW_IQ_CMD_FL1CNGCHMAP         20
2631 #define M_FW_IQ_CMD_FL1CNGCHMAP         0xf
2632 #define V_FW_IQ_CMD_FL1CNGCHMAP(x)      ((x) << S_FW_IQ_CMD_FL1CNGCHMAP)
2633 #define G_FW_IQ_CMD_FL1CNGCHMAP(x)      \
2634     (((x) >> S_FW_IQ_CMD_FL1CNGCHMAP) & M_FW_IQ_CMD_FL1CNGCHMAP)
2635
2636 #define S_FW_IQ_CMD_FL1CACHELOCK        15
2637 #define M_FW_IQ_CMD_FL1CACHELOCK        0x1
2638 #define V_FW_IQ_CMD_FL1CACHELOCK(x)     ((x) << S_FW_IQ_CMD_FL1CACHELOCK)
2639 #define G_FW_IQ_CMD_FL1CACHELOCK(x)     \
2640     (((x) >> S_FW_IQ_CMD_FL1CACHELOCK) & M_FW_IQ_CMD_FL1CACHELOCK)
2641 #define F_FW_IQ_CMD_FL1CACHELOCK        V_FW_IQ_CMD_FL1CACHELOCK(1U)
2642
2643 #define S_FW_IQ_CMD_FL1DBP      14
2644 #define M_FW_IQ_CMD_FL1DBP      0x1
2645 #define V_FW_IQ_CMD_FL1DBP(x)   ((x) << S_FW_IQ_CMD_FL1DBP)
2646 #define G_FW_IQ_CMD_FL1DBP(x)   \
2647     (((x) >> S_FW_IQ_CMD_FL1DBP) & M_FW_IQ_CMD_FL1DBP)
2648 #define F_FW_IQ_CMD_FL1DBP      V_FW_IQ_CMD_FL1DBP(1U)
2649
2650 #define S_FW_IQ_CMD_FL1DATANS           13
2651 #define M_FW_IQ_CMD_FL1DATANS           0x1
2652 #define V_FW_IQ_CMD_FL1DATANS(x)        ((x) << S_FW_IQ_CMD_FL1DATANS)
2653 #define G_FW_IQ_CMD_FL1DATANS(x)        \
2654     (((x) >> S_FW_IQ_CMD_FL1DATANS) & M_FW_IQ_CMD_FL1DATANS)
2655 #define F_FW_IQ_CMD_FL1DATANS   V_FW_IQ_CMD_FL1DATANS(1U)
2656
2657 #define S_FW_IQ_CMD_FL1DATARO           12
2658 #define M_FW_IQ_CMD_FL1DATARO           0x1
2659 #define V_FW_IQ_CMD_FL1DATARO(x)        ((x) << S_FW_IQ_CMD_FL1DATARO)
2660 #define G_FW_IQ_CMD_FL1DATARO(x)        \
2661     (((x) >> S_FW_IQ_CMD_FL1DATARO) & M_FW_IQ_CMD_FL1DATARO)
2662 #define F_FW_IQ_CMD_FL1DATARO   V_FW_IQ_CMD_FL1DATARO(1U)
2663
2664 #define S_FW_IQ_CMD_FL1CONGCIF          11
2665 #define M_FW_IQ_CMD_FL1CONGCIF          0x1
2666 #define V_FW_IQ_CMD_FL1CONGCIF(x)       ((x) << S_FW_IQ_CMD_FL1CONGCIF)
2667 #define G_FW_IQ_CMD_FL1CONGCIF(x)       \
2668     (((x) >> S_FW_IQ_CMD_FL1CONGCIF) & M_FW_IQ_CMD_FL1CONGCIF)
2669 #define F_FW_IQ_CMD_FL1CONGCIF  V_FW_IQ_CMD_FL1CONGCIF(1U)
2670
2671 #define S_FW_IQ_CMD_FL1ONCHIP           10
2672 #define M_FW_IQ_CMD_FL1ONCHIP           0x1
2673 #define V_FW_IQ_CMD_FL1ONCHIP(x)        ((x) << S_FW_IQ_CMD_FL1ONCHIP)
2674 #define G_FW_IQ_CMD_FL1ONCHIP(x)        \
2675     (((x) >> S_FW_IQ_CMD_FL1ONCHIP) & M_FW_IQ_CMD_FL1ONCHIP)
2676 #define F_FW_IQ_CMD_FL1ONCHIP   V_FW_IQ_CMD_FL1ONCHIP(1U)
2677
2678 #define S_FW_IQ_CMD_FL1STATUSPGNS       9
2679 #define M_FW_IQ_CMD_FL1STATUSPGNS       0x1
2680 #define V_FW_IQ_CMD_FL1STATUSPGNS(x)    ((x) << S_FW_IQ_CMD_FL1STATUSPGNS)
2681 #define G_FW_IQ_CMD_FL1STATUSPGNS(x)    \
2682     (((x) >> S_FW_IQ_CMD_FL1STATUSPGNS) & M_FW_IQ_CMD_FL1STATUSPGNS)
2683 #define F_FW_IQ_CMD_FL1STATUSPGNS       V_FW_IQ_CMD_FL1STATUSPGNS(1U)
2684
2685 #define S_FW_IQ_CMD_FL1STATUSPGRO       8
2686 #define M_FW_IQ_CMD_FL1STATUSPGRO       0x1
2687 #define V_FW_IQ_CMD_FL1STATUSPGRO(x)    ((x) << S_FW_IQ_CMD_FL1STATUSPGRO)
2688 #define G_FW_IQ_CMD_FL1STATUSPGRO(x)    \
2689     (((x) >> S_FW_IQ_CMD_FL1STATUSPGRO) & M_FW_IQ_CMD_FL1STATUSPGRO)
2690 #define F_FW_IQ_CMD_FL1STATUSPGRO       V_FW_IQ_CMD_FL1STATUSPGRO(1U)
2691
2692 #define S_FW_IQ_CMD_FL1FETCHNS          7
2693 #define M_FW_IQ_CMD_FL1FETCHNS          0x1
2694 #define V_FW_IQ_CMD_FL1FETCHNS(x)       ((x) << S_FW_IQ_CMD_FL1FETCHNS)
2695 #define G_FW_IQ_CMD_FL1FETCHNS(x)       \
2696     (((x) >> S_FW_IQ_CMD_FL1FETCHNS) & M_FW_IQ_CMD_FL1FETCHNS)
2697 #define F_FW_IQ_CMD_FL1FETCHNS  V_FW_IQ_CMD_FL1FETCHNS(1U)
2698
2699 #define S_FW_IQ_CMD_FL1FETCHRO          6
2700 #define M_FW_IQ_CMD_FL1FETCHRO          0x1
2701 #define V_FW_IQ_CMD_FL1FETCHRO(x)       ((x) << S_FW_IQ_CMD_FL1FETCHRO)
2702 #define G_FW_IQ_CMD_FL1FETCHRO(x)       \
2703     (((x) >> S_FW_IQ_CMD_FL1FETCHRO) & M_FW_IQ_CMD_FL1FETCHRO)
2704 #define F_FW_IQ_CMD_FL1FETCHRO  V_FW_IQ_CMD_FL1FETCHRO(1U)
2705
2706 #define S_FW_IQ_CMD_FL1HOSTFCMODE       4
2707 #define M_FW_IQ_CMD_FL1HOSTFCMODE       0x3
2708 #define V_FW_IQ_CMD_FL1HOSTFCMODE(x)    ((x) << S_FW_IQ_CMD_FL1HOSTFCMODE)
2709 #define G_FW_IQ_CMD_FL1HOSTFCMODE(x)    \
2710     (((x) >> S_FW_IQ_CMD_FL1HOSTFCMODE) & M_FW_IQ_CMD_FL1HOSTFCMODE)
2711
2712 #define S_FW_IQ_CMD_FL1CPRIO    3
2713 #define M_FW_IQ_CMD_FL1CPRIO    0x1
2714 #define V_FW_IQ_CMD_FL1CPRIO(x) ((x) << S_FW_IQ_CMD_FL1CPRIO)
2715 #define G_FW_IQ_CMD_FL1CPRIO(x) \
2716     (((x) >> S_FW_IQ_CMD_FL1CPRIO) & M_FW_IQ_CMD_FL1CPRIO)
2717 #define F_FW_IQ_CMD_FL1CPRIO    V_FW_IQ_CMD_FL1CPRIO(1U)
2718
2719 #define S_FW_IQ_CMD_FL1PADEN    2
2720 #define M_FW_IQ_CMD_FL1PADEN    0x1
2721 #define V_FW_IQ_CMD_FL1PADEN(x) ((x) << S_FW_IQ_CMD_FL1PADEN)
2722 #define G_FW_IQ_CMD_FL1PADEN(x) \
2723     (((x) >> S_FW_IQ_CMD_FL1PADEN) & M_FW_IQ_CMD_FL1PADEN)
2724 #define F_FW_IQ_CMD_FL1PADEN    V_FW_IQ_CMD_FL1PADEN(1U)
2725
2726 #define S_FW_IQ_CMD_FL1PACKEN           1
2727 #define M_FW_IQ_CMD_FL1PACKEN           0x1
2728 #define V_FW_IQ_CMD_FL1PACKEN(x)        ((x) << S_FW_IQ_CMD_FL1PACKEN)
2729 #define G_FW_IQ_CMD_FL1PACKEN(x)        \
2730     (((x) >> S_FW_IQ_CMD_FL1PACKEN) & M_FW_IQ_CMD_FL1PACKEN)
2731 #define F_FW_IQ_CMD_FL1PACKEN   V_FW_IQ_CMD_FL1PACKEN(1U)
2732
2733 #define S_FW_IQ_CMD_FL1CONGEN           0
2734 #define M_FW_IQ_CMD_FL1CONGEN           0x1
2735 #define V_FW_IQ_CMD_FL1CONGEN(x)        ((x) << S_FW_IQ_CMD_FL1CONGEN)
2736 #define G_FW_IQ_CMD_FL1CONGEN(x)        \
2737     (((x) >> S_FW_IQ_CMD_FL1CONGEN) & M_FW_IQ_CMD_FL1CONGEN)
2738 #define F_FW_IQ_CMD_FL1CONGEN   V_FW_IQ_CMD_FL1CONGEN(1U)
2739
2740 #define S_FW_IQ_CMD_FL1DCAEN    15
2741 #define M_FW_IQ_CMD_FL1DCAEN    0x1
2742 #define V_FW_IQ_CMD_FL1DCAEN(x) ((x) << S_FW_IQ_CMD_FL1DCAEN)
2743 #define G_FW_IQ_CMD_FL1DCAEN(x) \
2744     (((x) >> S_FW_IQ_CMD_FL1DCAEN) & M_FW_IQ_CMD_FL1DCAEN)
2745 #define F_FW_IQ_CMD_FL1DCAEN    V_FW_IQ_CMD_FL1DCAEN(1U)
2746
2747 #define S_FW_IQ_CMD_FL1DCACPU           10
2748 #define M_FW_IQ_CMD_FL1DCACPU           0x1f
2749 #define V_FW_IQ_CMD_FL1DCACPU(x)        ((x) << S_FW_IQ_CMD_FL1DCACPU)
2750 #define G_FW_IQ_CMD_FL1DCACPU(x)        \
2751     (((x) >> S_FW_IQ_CMD_FL1DCACPU) & M_FW_IQ_CMD_FL1DCACPU)
2752
2753 #define S_FW_IQ_CMD_FL1FBMIN    7
2754 #define M_FW_IQ_CMD_FL1FBMIN    0x7
2755 #define V_FW_IQ_CMD_FL1FBMIN(x) ((x) << S_FW_IQ_CMD_FL1FBMIN)
2756 #define G_FW_IQ_CMD_FL1FBMIN(x) \
2757     (((x) >> S_FW_IQ_CMD_FL1FBMIN) & M_FW_IQ_CMD_FL1FBMIN)
2758
2759 #define S_FW_IQ_CMD_FL1FBMAX    4
2760 #define M_FW_IQ_CMD_FL1FBMAX    0x7
2761 #define V_FW_IQ_CMD_FL1FBMAX(x) ((x) << S_FW_IQ_CMD_FL1FBMAX)
2762 #define G_FW_IQ_CMD_FL1FBMAX(x) \
2763     (((x) >> S_FW_IQ_CMD_FL1FBMAX) & M_FW_IQ_CMD_FL1FBMAX)
2764
2765 #define S_FW_IQ_CMD_FL1CIDXFTHRESHO     3
2766 #define M_FW_IQ_CMD_FL1CIDXFTHRESHO     0x1
2767 #define V_FW_IQ_CMD_FL1CIDXFTHRESHO(x)  ((x) << S_FW_IQ_CMD_FL1CIDXFTHRESHO)
2768 #define G_FW_IQ_CMD_FL1CIDXFTHRESHO(x)  \
2769     (((x) >> S_FW_IQ_CMD_FL1CIDXFTHRESHO) & M_FW_IQ_CMD_FL1CIDXFTHRESHO)
2770 #define F_FW_IQ_CMD_FL1CIDXFTHRESHO     V_FW_IQ_CMD_FL1CIDXFTHRESHO(1U)
2771
2772 #define S_FW_IQ_CMD_FL1CIDXFTHRESH      0
2773 #define M_FW_IQ_CMD_FL1CIDXFTHRESH      0x7
2774 #define V_FW_IQ_CMD_FL1CIDXFTHRESH(x)   ((x) << S_FW_IQ_CMD_FL1CIDXFTHRESH)
2775 #define G_FW_IQ_CMD_FL1CIDXFTHRESH(x)   \
2776     (((x) >> S_FW_IQ_CMD_FL1CIDXFTHRESH) & M_FW_IQ_CMD_FL1CIDXFTHRESH)
2777
2778 struct fw_eq_mngt_cmd {
2779         __be32 op_to_vfn;
2780         __be32 alloc_to_len16;
2781         __be32 cmpliqid_eqid;
2782         __be32 physeqid_pkd;
2783         __be32 fetchszm_to_iqid;
2784         __be32 dcaen_to_eqsize;
2785         __be64 eqaddr;
2786 };
2787
2788 #define S_FW_EQ_MNGT_CMD_PFN    8
2789 #define M_FW_EQ_MNGT_CMD_PFN    0x7
2790 #define V_FW_EQ_MNGT_CMD_PFN(x) ((x) << S_FW_EQ_MNGT_CMD_PFN)
2791 #define G_FW_EQ_MNGT_CMD_PFN(x) \
2792     (((x) >> S_FW_EQ_MNGT_CMD_PFN) & M_FW_EQ_MNGT_CMD_PFN)
2793
2794 #define S_FW_EQ_MNGT_CMD_VFN    0
2795 #define M_FW_EQ_MNGT_CMD_VFN    0xff
2796 #define V_FW_EQ_MNGT_CMD_VFN(x) ((x) << S_FW_EQ_MNGT_CMD_VFN)
2797 #define G_FW_EQ_MNGT_CMD_VFN(x) \
2798     (((x) >> S_FW_EQ_MNGT_CMD_VFN) & M_FW_EQ_MNGT_CMD_VFN)
2799
2800 #define S_FW_EQ_MNGT_CMD_ALLOC          31
2801 #define M_FW_EQ_MNGT_CMD_ALLOC          0x1
2802 #define V_FW_EQ_MNGT_CMD_ALLOC(x)       ((x) << S_FW_EQ_MNGT_CMD_ALLOC)
2803 #define G_FW_EQ_MNGT_CMD_ALLOC(x)       \
2804     (((x) >> S_FW_EQ_MNGT_CMD_ALLOC) & M_FW_EQ_MNGT_CMD_ALLOC)
2805 #define F_FW_EQ_MNGT_CMD_ALLOC  V_FW_EQ_MNGT_CMD_ALLOC(1U)
2806
2807 #define S_FW_EQ_MNGT_CMD_FREE           30
2808 #define M_FW_EQ_MNGT_CMD_FREE           0x1
2809 #define V_FW_EQ_MNGT_CMD_FREE(x)        ((x) << S_FW_EQ_MNGT_CMD_FREE)
2810 #define G_FW_EQ_MNGT_CMD_FREE(x)        \
2811     (((x) >> S_FW_EQ_MNGT_CMD_FREE) & M_FW_EQ_MNGT_CMD_FREE)
2812 #define F_FW_EQ_MNGT_CMD_FREE   V_FW_EQ_MNGT_CMD_FREE(1U)
2813
2814 #define S_FW_EQ_MNGT_CMD_MODIFY         29
2815 #define M_FW_EQ_MNGT_CMD_MODIFY         0x1
2816 #define V_FW_EQ_MNGT_CMD_MODIFY(x)      ((x) << S_FW_EQ_MNGT_CMD_MODIFY)
2817 #define G_FW_EQ_MNGT_CMD_MODIFY(x)      \
2818     (((x) >> S_FW_EQ_MNGT_CMD_MODIFY) & M_FW_EQ_MNGT_CMD_MODIFY)
2819 #define F_FW_EQ_MNGT_CMD_MODIFY V_FW_EQ_MNGT_CMD_MODIFY(1U)
2820
2821 #define S_FW_EQ_MNGT_CMD_EQSTART        28
2822 #define M_FW_EQ_MNGT_CMD_EQSTART        0x1
2823 #define V_FW_EQ_MNGT_CMD_EQSTART(x)     ((x) << S_FW_EQ_MNGT_CMD_EQSTART)
2824 #define G_FW_EQ_MNGT_CMD_EQSTART(x)     \
2825     (((x) >> S_FW_EQ_MNGT_CMD_EQSTART) & M_FW_EQ_MNGT_CMD_EQSTART)
2826 #define F_FW_EQ_MNGT_CMD_EQSTART        V_FW_EQ_MNGT_CMD_EQSTART(1U)
2827
2828 #define S_FW_EQ_MNGT_CMD_EQSTOP         27
2829 #define M_FW_EQ_MNGT_CMD_EQSTOP         0x1
2830 #define V_FW_EQ_MNGT_CMD_EQSTOP(x)      ((x) << S_FW_EQ_MNGT_CMD_EQSTOP)
2831 #define G_FW_EQ_MNGT_CMD_EQSTOP(x)      \
2832     (((x) >> S_FW_EQ_MNGT_CMD_EQSTOP) & M_FW_EQ_MNGT_CMD_EQSTOP)
2833 #define F_FW_EQ_MNGT_CMD_EQSTOP V_FW_EQ_MNGT_CMD_EQSTOP(1U)
2834
2835 #define S_FW_EQ_MNGT_CMD_CMPLIQID       20
2836 #define M_FW_EQ_MNGT_CMD_CMPLIQID       0xfff
2837 #define V_FW_EQ_MNGT_CMD_CMPLIQID(x)    ((x) << S_FW_EQ_MNGT_CMD_CMPLIQID)
2838 #define G_FW_EQ_MNGT_CMD_CMPLIQID(x)    \
2839     (((x) >> S_FW_EQ_MNGT_CMD_CMPLIQID) & M_FW_EQ_MNGT_CMD_CMPLIQID)
2840
2841 #define S_FW_EQ_MNGT_CMD_EQID           0
2842 #define M_FW_EQ_MNGT_CMD_EQID           0xfffff
2843 #define V_FW_EQ_MNGT_CMD_EQID(x)        ((x) << S_FW_EQ_MNGT_CMD_EQID)
2844 #define G_FW_EQ_MNGT_CMD_EQID(x)        \
2845     (((x) >> S_FW_EQ_MNGT_CMD_EQID) & M_FW_EQ_MNGT_CMD_EQID)
2846
2847 #define S_FW_EQ_MNGT_CMD_PHYSEQID       0
2848 #define M_FW_EQ_MNGT_CMD_PHYSEQID       0xfffff
2849 #define V_FW_EQ_MNGT_CMD_PHYSEQID(x)    ((x) << S_FW_EQ_MNGT_CMD_PHYSEQID)
2850 #define G_FW_EQ_MNGT_CMD_PHYSEQID(x)    \
2851     (((x) >> S_FW_EQ_MNGT_CMD_PHYSEQID) & M_FW_EQ_MNGT_CMD_PHYSEQID)
2852
2853 #define S_FW_EQ_MNGT_CMD_FETCHSZM       26
2854 #define M_FW_EQ_MNGT_CMD_FETCHSZM       0x1
2855 #define V_FW_EQ_MNGT_CMD_FETCHSZM(x)    ((x) << S_FW_EQ_MNGT_CMD_FETCHSZM)
2856 #define G_FW_EQ_MNGT_CMD_FETCHSZM(x)    \
2857     (((x) >> S_FW_EQ_MNGT_CMD_FETCHSZM) & M_FW_EQ_MNGT_CMD_FETCHSZM)
2858 #define F_FW_EQ_MNGT_CMD_FETCHSZM       V_FW_EQ_MNGT_CMD_FETCHSZM(1U)
2859
2860 #define S_FW_EQ_MNGT_CMD_STATUSPGNS     25
2861 #define M_FW_EQ_MNGT_CMD_STATUSPGNS     0x1
2862 #define V_FW_EQ_MNGT_CMD_STATUSPGNS(x)  ((x) << S_FW_EQ_MNGT_CMD_STATUSPGNS)
2863 #define G_FW_EQ_MNGT_CMD_STATUSPGNS(x)  \
2864     (((x) >> S_FW_EQ_MNGT_CMD_STATUSPGNS) & M_FW_EQ_MNGT_CMD_STATUSPGNS)
2865 #define F_FW_EQ_MNGT_CMD_STATUSPGNS     V_FW_EQ_MNGT_CMD_STATUSPGNS(1U)
2866
2867 #define S_FW_EQ_MNGT_CMD_STATUSPGRO     24
2868 #define M_FW_EQ_MNGT_CMD_STATUSPGRO     0x1
2869 #define V_FW_EQ_MNGT_CMD_STATUSPGRO(x)  ((x) << S_FW_EQ_MNGT_CMD_STATUSPGRO)
2870 #define G_FW_EQ_MNGT_CMD_STATUSPGRO(x)  \
2871     (((x) >> S_FW_EQ_MNGT_CMD_STATUSPGRO) & M_FW_EQ_MNGT_CMD_STATUSPGRO)
2872 #define F_FW_EQ_MNGT_CMD_STATUSPGRO     V_FW_EQ_MNGT_CMD_STATUSPGRO(1U)
2873
2874 #define S_FW_EQ_MNGT_CMD_FETCHNS        23
2875 #define M_FW_EQ_MNGT_CMD_FETCHNS        0x1
2876 #define V_FW_EQ_MNGT_CMD_FETCHNS(x)     ((x) << S_FW_EQ_MNGT_CMD_FETCHNS)
2877 #define G_FW_EQ_MNGT_CMD_FETCHNS(x)     \
2878     (((x) >> S_FW_EQ_MNGT_CMD_FETCHNS) & M_FW_EQ_MNGT_CMD_FETCHNS)
2879 #define F_FW_EQ_MNGT_CMD_FETCHNS        V_FW_EQ_MNGT_CMD_FETCHNS(1U)
2880
2881 #define S_FW_EQ_MNGT_CMD_FETCHRO        22
2882 #define M_FW_EQ_MNGT_CMD_FETCHRO        0x1
2883 #define V_FW_EQ_MNGT_CMD_FETCHRO(x)     ((x) << S_FW_EQ_MNGT_CMD_FETCHRO)
2884 #define G_FW_EQ_MNGT_CMD_FETCHRO(x)     \
2885     (((x) >> S_FW_EQ_MNGT_CMD_FETCHRO) & M_FW_EQ_MNGT_CMD_FETCHRO)
2886 #define F_FW_EQ_MNGT_CMD_FETCHRO        V_FW_EQ_MNGT_CMD_FETCHRO(1U)
2887
2888 #define S_FW_EQ_MNGT_CMD_HOSTFCMODE     20
2889 #define M_FW_EQ_MNGT_CMD_HOSTFCMODE     0x3
2890 #define V_FW_EQ_MNGT_CMD_HOSTFCMODE(x)  ((x) << S_FW_EQ_MNGT_CMD_HOSTFCMODE)
2891 #define G_FW_EQ_MNGT_CMD_HOSTFCMODE(x)  \
2892     (((x) >> S_FW_EQ_MNGT_CMD_HOSTFCMODE) & M_FW_EQ_MNGT_CMD_HOSTFCMODE)
2893
2894 #define S_FW_EQ_MNGT_CMD_CPRIO          19
2895 #define M_FW_EQ_MNGT_CMD_CPRIO          0x1
2896 #define V_FW_EQ_MNGT_CMD_CPRIO(x)       ((x) << S_FW_EQ_MNGT_CMD_CPRIO)
2897 #define G_FW_EQ_MNGT_CMD_CPRIO(x)       \
2898     (((x) >> S_FW_EQ_MNGT_CMD_CPRIO) & M_FW_EQ_MNGT_CMD_CPRIO)
2899 #define F_FW_EQ_MNGT_CMD_CPRIO  V_FW_EQ_MNGT_CMD_CPRIO(1U)
2900
2901 #define S_FW_EQ_MNGT_CMD_ONCHIP         18
2902 #define M_FW_EQ_MNGT_CMD_ONCHIP         0x1
2903 #define V_FW_EQ_MNGT_CMD_ONCHIP(x)      ((x) << S_FW_EQ_MNGT_CMD_ONCHIP)
2904 #define G_FW_EQ_MNGT_CMD_ONCHIP(x)      \
2905     (((x) >> S_FW_EQ_MNGT_CMD_ONCHIP) & M_FW_EQ_MNGT_CMD_ONCHIP)
2906 #define F_FW_EQ_MNGT_CMD_ONCHIP V_FW_EQ_MNGT_CMD_ONCHIP(1U)
2907
2908 #define S_FW_EQ_MNGT_CMD_PCIECHN        16
2909 #define M_FW_EQ_MNGT_CMD_PCIECHN        0x3
2910 #define V_FW_EQ_MNGT_CMD_PCIECHN(x)     ((x) << S_FW_EQ_MNGT_CMD_PCIECHN)
2911 #define G_FW_EQ_MNGT_CMD_PCIECHN(x)     \
2912     (((x) >> S_FW_EQ_MNGT_CMD_PCIECHN) & M_FW_EQ_MNGT_CMD_PCIECHN)
2913
2914 #define S_FW_EQ_MNGT_CMD_IQID           0
2915 #define M_FW_EQ_MNGT_CMD_IQID           0xffff
2916 #define V_FW_EQ_MNGT_CMD_IQID(x)        ((x) << S_FW_EQ_MNGT_CMD_IQID)
2917 #define G_FW_EQ_MNGT_CMD_IQID(x)        \
2918     (((x) >> S_FW_EQ_MNGT_CMD_IQID) & M_FW_EQ_MNGT_CMD_IQID)
2919
2920 #define S_FW_EQ_MNGT_CMD_DCAEN          31
2921 #define M_FW_EQ_MNGT_CMD_DCAEN          0x1
2922 #define V_FW_EQ_MNGT_CMD_DCAEN(x)       ((x) << S_FW_EQ_MNGT_CMD_DCAEN)
2923 #define G_FW_EQ_MNGT_CMD_DCAEN(x)       \
2924     (((x) >> S_FW_EQ_MNGT_CMD_DCAEN) & M_FW_EQ_MNGT_CMD_DCAEN)
2925 #define F_FW_EQ_MNGT_CMD_DCAEN  V_FW_EQ_MNGT_CMD_DCAEN(1U)
2926
2927 #define S_FW_EQ_MNGT_CMD_DCACPU         26
2928 #define M_FW_EQ_MNGT_CMD_DCACPU         0x1f
2929 #define V_FW_EQ_MNGT_CMD_DCACPU(x)      ((x) << S_FW_EQ_MNGT_CMD_DCACPU)
2930 #define G_FW_EQ_MNGT_CMD_DCACPU(x)      \
2931     (((x) >> S_FW_EQ_MNGT_CMD_DCACPU) & M_FW_EQ_MNGT_CMD_DCACPU)
2932
2933 #define S_FW_EQ_MNGT_CMD_FBMIN          23
2934 #define M_FW_EQ_MNGT_CMD_FBMIN          0x7
2935 #define V_FW_EQ_MNGT_CMD_FBMIN(x)       ((x) << S_FW_EQ_MNGT_CMD_FBMIN)
2936 #define G_FW_EQ_MNGT_CMD_FBMIN(x)       \
2937     (((x) >> S_FW_EQ_MNGT_CMD_FBMIN) & M_FW_EQ_MNGT_CMD_FBMIN)
2938
2939 #define S_FW_EQ_MNGT_CMD_FBMAX          20
2940 #define M_FW_EQ_MNGT_CMD_FBMAX          0x7
2941 #define V_FW_EQ_MNGT_CMD_FBMAX(x)       ((x) << S_FW_EQ_MNGT_CMD_FBMAX)
2942 #define G_FW_EQ_MNGT_CMD_FBMAX(x)       \
2943     (((x) >> S_FW_EQ_MNGT_CMD_FBMAX) & M_FW_EQ_MNGT_CMD_FBMAX)
2944
2945 #define S_FW_EQ_MNGT_CMD_CIDXFTHRESHO           19
2946 #define M_FW_EQ_MNGT_CMD_CIDXFTHRESHO           0x1
2947 #define V_FW_EQ_MNGT_CMD_CIDXFTHRESHO(x)        \
2948     ((x) << S_FW_EQ_MNGT_CMD_CIDXFTHRESHO)
2949 #define G_FW_EQ_MNGT_CMD_CIDXFTHRESHO(x)        \
2950     (((x) >> S_FW_EQ_MNGT_CMD_CIDXFTHRESHO) & M_FW_EQ_MNGT_CMD_CIDXFTHRESHO)
2951 #define F_FW_EQ_MNGT_CMD_CIDXFTHRESHO   V_FW_EQ_MNGT_CMD_CIDXFTHRESHO(1U)
2952
2953 #define S_FW_EQ_MNGT_CMD_CIDXFTHRESH    16
2954 #define M_FW_EQ_MNGT_CMD_CIDXFTHRESH    0x7
2955 #define V_FW_EQ_MNGT_CMD_CIDXFTHRESH(x) ((x) << S_FW_EQ_MNGT_CMD_CIDXFTHRESH)
2956 #define G_FW_EQ_MNGT_CMD_CIDXFTHRESH(x) \
2957     (((x) >> S_FW_EQ_MNGT_CMD_CIDXFTHRESH) & M_FW_EQ_MNGT_CMD_CIDXFTHRESH)
2958
2959 #define S_FW_EQ_MNGT_CMD_EQSIZE         0
2960 #define M_FW_EQ_MNGT_CMD_EQSIZE         0xffff
2961 #define V_FW_EQ_MNGT_CMD_EQSIZE(x)      ((x) << S_FW_EQ_MNGT_CMD_EQSIZE)
2962 #define G_FW_EQ_MNGT_CMD_EQSIZE(x)      \
2963     (((x) >> S_FW_EQ_MNGT_CMD_EQSIZE) & M_FW_EQ_MNGT_CMD_EQSIZE)
2964
2965 struct fw_eq_eth_cmd {
2966         __be32 op_to_vfn;
2967         __be32 alloc_to_len16;
2968         __be32 eqid_pkd;
2969         __be32 physeqid_pkd;
2970         __be32 fetchszm_to_iqid;
2971         __be32 dcaen_to_eqsize;
2972         __be64 eqaddr;
2973         __be32 viid_pkd;
2974         __be32 r8_lo;
2975         __be64 r9;
2976 };
2977
2978 #define S_FW_EQ_ETH_CMD_PFN     8
2979 #define M_FW_EQ_ETH_CMD_PFN     0x7
2980 #define V_FW_EQ_ETH_CMD_PFN(x)  ((x) << S_FW_EQ_ETH_CMD_PFN)
2981 #define G_FW_EQ_ETH_CMD_PFN(x)  \
2982     (((x) >> S_FW_EQ_ETH_CMD_PFN) & M_FW_EQ_ETH_CMD_PFN)
2983
2984 #define S_FW_EQ_ETH_CMD_VFN     0
2985 #define M_FW_EQ_ETH_CMD_VFN     0xff
2986 #define V_FW_EQ_ETH_CMD_VFN(x)  ((x) << S_FW_EQ_ETH_CMD_VFN)
2987 #define G_FW_EQ_ETH_CMD_VFN(x)  \
2988     (((x) >> S_FW_EQ_ETH_CMD_VFN) & M_FW_EQ_ETH_CMD_VFN)
2989
2990 #define S_FW_EQ_ETH_CMD_ALLOC           31
2991 #define M_FW_EQ_ETH_CMD_ALLOC           0x1
2992 #define V_FW_EQ_ETH_CMD_ALLOC(x)        ((x) << S_FW_EQ_ETH_CMD_ALLOC)
2993 #define G_FW_EQ_ETH_CMD_ALLOC(x)        \
2994     (((x) >> S_FW_EQ_ETH_CMD_ALLOC) & M_FW_EQ_ETH_CMD_ALLOC)
2995 #define F_FW_EQ_ETH_CMD_ALLOC   V_FW_EQ_ETH_CMD_ALLOC(1U)
2996
2997 #define S_FW_EQ_ETH_CMD_FREE    30
2998 #define M_FW_EQ_ETH_CMD_FREE    0x1
2999 #define V_FW_EQ_ETH_CMD_FREE(x) ((x) << S_FW_EQ_ETH_CMD_FREE)
3000 #define G_FW_EQ_ETH_CMD_FREE(x) \
3001     (((x) >> S_FW_EQ_ETH_CMD_FREE) & M_FW_EQ_ETH_CMD_FREE)
3002 #define F_FW_EQ_ETH_CMD_FREE    V_FW_EQ_ETH_CMD_FREE(1U)
3003
3004 #define S_FW_EQ_ETH_CMD_MODIFY          29
3005 #define M_FW_EQ_ETH_CMD_MODIFY          0x1
3006 #define V_FW_EQ_ETH_CMD_MODIFY(x)       ((x) << S_FW_EQ_ETH_CMD_MODIFY)
3007 #define G_FW_EQ_ETH_CMD_MODIFY(x)       \
3008     (((x) >> S_FW_EQ_ETH_CMD_MODIFY) & M_FW_EQ_ETH_CMD_MODIFY)
3009 #define F_FW_EQ_ETH_CMD_MODIFY  V_FW_EQ_ETH_CMD_MODIFY(1U)
3010
3011 #define S_FW_EQ_ETH_CMD_EQSTART         28
3012 #define M_FW_EQ_ETH_CMD_EQSTART         0x1
3013 #define V_FW_EQ_ETH_CMD_EQSTART(x)      ((x) << S_FW_EQ_ETH_CMD_EQSTART)
3014 #define G_FW_EQ_ETH_CMD_EQSTART(x)      \
3015     (((x) >> S_FW_EQ_ETH_CMD_EQSTART) & M_FW_EQ_ETH_CMD_EQSTART)
3016 #define F_FW_EQ_ETH_CMD_EQSTART V_FW_EQ_ETH_CMD_EQSTART(1U)
3017
3018 #define S_FW_EQ_ETH_CMD_EQSTOP          27
3019 #define M_FW_EQ_ETH_CMD_EQSTOP          0x1
3020 #define V_FW_EQ_ETH_CMD_EQSTOP(x)       ((x) << S_FW_EQ_ETH_CMD_EQSTOP)
3021 #define G_FW_EQ_ETH_CMD_EQSTOP(x)       \
3022     (((x) >> S_FW_EQ_ETH_CMD_EQSTOP) & M_FW_EQ_ETH_CMD_EQSTOP)
3023 #define F_FW_EQ_ETH_CMD_EQSTOP  V_FW_EQ_ETH_CMD_EQSTOP(1U)
3024
3025 #define S_FW_EQ_ETH_CMD_EQID    0
3026 #define M_FW_EQ_ETH_CMD_EQID    0xfffff
3027 #define V_FW_EQ_ETH_CMD_EQID(x) ((x) << S_FW_EQ_ETH_CMD_EQID)
3028 #define G_FW_EQ_ETH_CMD_EQID(x) \
3029     (((x) >> S_FW_EQ_ETH_CMD_EQID) & M_FW_EQ_ETH_CMD_EQID)
3030
3031 #define S_FW_EQ_ETH_CMD_PHYSEQID        0
3032 #define M_FW_EQ_ETH_CMD_PHYSEQID        0xfffff
3033 #define V_FW_EQ_ETH_CMD_PHYSEQID(x)     ((x) << S_FW_EQ_ETH_CMD_PHYSEQID)
3034 #define G_FW_EQ_ETH_CMD_PHYSEQID(x)     \
3035     (((x) >> S_FW_EQ_ETH_CMD_PHYSEQID) & M_FW_EQ_ETH_CMD_PHYSEQID)
3036
3037 #define S_FW_EQ_ETH_CMD_FETCHSZM        26
3038 #define M_FW_EQ_ETH_CMD_FETCHSZM        0x1
3039 #define V_FW_EQ_ETH_CMD_FETCHSZM(x)     ((x) << S_FW_EQ_ETH_CMD_FETCHSZM)
3040 #define G_FW_EQ_ETH_CMD_FETCHSZM(x)     \
3041     (((x) >> S_FW_EQ_ETH_CMD_FETCHSZM) & M_FW_EQ_ETH_CMD_FETCHSZM)
3042 #define F_FW_EQ_ETH_CMD_FETCHSZM        V_FW_EQ_ETH_CMD_FETCHSZM(1U)
3043
3044 #define S_FW_EQ_ETH_CMD_STATUSPGNS      25
3045 #define M_FW_EQ_ETH_CMD_STATUSPGNS      0x1
3046 #define V_FW_EQ_ETH_CMD_STATUSPGNS(x)   ((x) << S_FW_EQ_ETH_CMD_STATUSPGNS)
3047 #define G_FW_EQ_ETH_CMD_STATUSPGNS(x)   \
3048     (((x) >> S_FW_EQ_ETH_CMD_STATUSPGNS) & M_FW_EQ_ETH_CMD_STATUSPGNS)
3049 #define F_FW_EQ_ETH_CMD_STATUSPGNS      V_FW_EQ_ETH_CMD_STATUSPGNS(1U)
3050
3051 #define S_FW_EQ_ETH_CMD_STATUSPGRO      24
3052 #define M_FW_EQ_ETH_CMD_STATUSPGRO      0x1
3053 #define V_FW_EQ_ETH_CMD_STATUSPGRO(x)   ((x) << S_FW_EQ_ETH_CMD_STATUSPGRO)
3054 #define G_FW_EQ_ETH_CMD_STATUSPGRO(x)   \
3055     (((x) >> S_FW_EQ_ETH_CMD_STATUSPGRO) & M_FW_EQ_ETH_CMD_STATUSPGRO)
3056 #define F_FW_EQ_ETH_CMD_STATUSPGRO      V_FW_EQ_ETH_CMD_STATUSPGRO(1U)
3057
3058 #define S_FW_EQ_ETH_CMD_FETCHNS         23
3059 #define M_FW_EQ_ETH_CMD_FETCHNS         0x1
3060 #define V_FW_EQ_ETH_CMD_FETCHNS(x)      ((x) << S_FW_EQ_ETH_CMD_FETCHNS)
3061 #define G_FW_EQ_ETH_CMD_FETCHNS(x)      \
3062     (((x) >> S_FW_EQ_ETH_CMD_FETCHNS) & M_FW_EQ_ETH_CMD_FETCHNS)
3063 #define F_FW_EQ_ETH_CMD_FETCHNS V_FW_EQ_ETH_CMD_FETCHNS(1U)
3064
3065 #define S_FW_EQ_ETH_CMD_FETCHRO         22
3066 #define M_FW_EQ_ETH_CMD_FETCHRO         0x1
3067 #define V_FW_EQ_ETH_CMD_FETCHRO(x)      ((x) << S_FW_EQ_ETH_CMD_FETCHRO)
3068 #define G_FW_EQ_ETH_CMD_FETCHRO(x)      \
3069     (((x) >> S_FW_EQ_ETH_CMD_FETCHRO) & M_FW_EQ_ETH_CMD_FETCHRO)
3070 #define F_FW_EQ_ETH_CMD_FETCHRO V_FW_EQ_ETH_CMD_FETCHRO(1U)
3071
3072 #define S_FW_EQ_ETH_CMD_HOSTFCMODE      20
3073 #define M_FW_EQ_ETH_CMD_HOSTFCMODE      0x3
3074 #define V_FW_EQ_ETH_CMD_HOSTFCMODE(x)   ((x) << S_FW_EQ_ETH_CMD_HOSTFCMODE)
3075 #define G_FW_EQ_ETH_CMD_HOSTFCMODE(x)   \
3076     (((x) >> S_FW_EQ_ETH_CMD_HOSTFCMODE) & M_FW_EQ_ETH_CMD_HOSTFCMODE)
3077
3078 #define S_FW_EQ_ETH_CMD_CPRIO           19
3079 #define M_FW_EQ_ETH_CMD_CPRIO           0x1
3080 #define V_FW_EQ_ETH_CMD_CPRIO(x)        ((x) << S_FW_EQ_ETH_CMD_CPRIO)
3081 #define G_FW_EQ_ETH_CMD_CPRIO(x)        \
3082     (((x) >> S_FW_EQ_ETH_CMD_CPRIO) & M_FW_EQ_ETH_CMD_CPRIO)
3083 #define F_FW_EQ_ETH_CMD_CPRIO   V_FW_EQ_ETH_CMD_CPRIO(1U)
3084
3085 #define S_FW_EQ_ETH_CMD_ONCHIP          18
3086 #define M_FW_EQ_ETH_CMD_ONCHIP          0x1
3087 #define V_FW_EQ_ETH_CMD_ONCHIP(x)       ((x) << S_FW_EQ_ETH_CMD_ONCHIP)
3088 #define G_FW_EQ_ETH_CMD_ONCHIP(x)       \
3089     (((x) >> S_FW_EQ_ETH_CMD_ONCHIP) & M_FW_EQ_ETH_CMD_ONCHIP)
3090 #define F_FW_EQ_ETH_CMD_ONCHIP  V_FW_EQ_ETH_CMD_ONCHIP(1U)
3091
3092 #define S_FW_EQ_ETH_CMD_PCIECHN         16
3093 #define M_FW_EQ_ETH_CMD_PCIECHN         0x3
3094 #define V_FW_EQ_ETH_CMD_PCIECHN(x)      ((x) << S_FW_EQ_ETH_CMD_PCIECHN)
3095 #define G_FW_EQ_ETH_CMD_PCIECHN(x)      \
3096     (((x) >> S_FW_EQ_ETH_CMD_PCIECHN) & M_FW_EQ_ETH_CMD_PCIECHN)
3097
3098 #define S_FW_EQ_ETH_CMD_IQID    0
3099 #define M_FW_EQ_ETH_CMD_IQID    0xffff
3100 #define V_FW_EQ_ETH_CMD_IQID(x) ((x) << S_FW_EQ_ETH_CMD_IQID)
3101 #define G_FW_EQ_ETH_CMD_IQID(x) \
3102     (((x) >> S_FW_EQ_ETH_CMD_IQID) & M_FW_EQ_ETH_CMD_IQID)
3103
3104 #define S_FW_EQ_ETH_CMD_DCAEN           31
3105 #define M_FW_EQ_ETH_CMD_DCAEN           0x1
3106 #define V_FW_EQ_ETH_CMD_DCAEN(x)        ((x) << S_FW_EQ_ETH_CMD_DCAEN)
3107 #define G_FW_EQ_ETH_CMD_DCAEN(x)        \
3108     (((x) >> S_FW_EQ_ETH_CMD_DCAEN) & M_FW_EQ_ETH_CMD_DCAEN)
3109 #define F_FW_EQ_ETH_CMD_DCAEN   V_FW_EQ_ETH_CMD_DCAEN(1U)
3110
3111 #define S_FW_EQ_ETH_CMD_DCACPU          26
3112 #define M_FW_EQ_ETH_CMD_DCACPU          0x1f
3113 #define V_FW_EQ_ETH_CMD_DCACPU(x)       ((x) << S_FW_EQ_ETH_CMD_DCACPU)
3114 #define G_FW_EQ_ETH_CMD_DCACPU(x)       \
3115     (((x) >> S_FW_EQ_ETH_CMD_DCACPU) & M_FW_EQ_ETH_CMD_DCACPU)
3116
3117 #define S_FW_EQ_ETH_CMD_FBMIN           23
3118 #define M_FW_EQ_ETH_CMD_FBMIN           0x7
3119 #define V_FW_EQ_ETH_CMD_FBMIN(x)        ((x) << S_FW_EQ_ETH_CMD_FBMIN)
3120 #define G_FW_EQ_ETH_CMD_FBMIN(x)        \
3121     (((x) >> S_FW_EQ_ETH_CMD_FBMIN) & M_FW_EQ_ETH_CMD_FBMIN)
3122
3123 #define S_FW_EQ_ETH_CMD_FBMAX           20
3124 #define M_FW_EQ_ETH_CMD_FBMAX           0x7
3125 #define V_FW_EQ_ETH_CMD_FBMAX(x)        ((x) << S_FW_EQ_ETH_CMD_FBMAX)
3126 #define G_FW_EQ_ETH_CMD_FBMAX(x)        \
3127     (((x) >> S_FW_EQ_ETH_CMD_FBMAX) & M_FW_EQ_ETH_CMD_FBMAX)
3128
3129 #define S_FW_EQ_ETH_CMD_CIDXFTHRESHO    19
3130 #define M_FW_EQ_ETH_CMD_CIDXFTHRESHO    0x1
3131 #define V_FW_EQ_ETH_CMD_CIDXFTHRESHO(x) ((x) << S_FW_EQ_ETH_CMD_CIDXFTHRESHO)
3132 #define G_FW_EQ_ETH_CMD_CIDXFTHRESHO(x) \
3133     (((x) >> S_FW_EQ_ETH_CMD_CIDXFTHRESHO) & M_FW_EQ_ETH_CMD_CIDXFTHRESHO)
3134 #define F_FW_EQ_ETH_CMD_CIDXFTHRESHO    V_FW_EQ_ETH_CMD_CIDXFTHRESHO(1U)
3135
3136 #define S_FW_EQ_ETH_CMD_CIDXFTHRESH     16
3137 #define M_FW_EQ_ETH_CMD_CIDXFTHRESH     0x7
3138 #define V_FW_EQ_ETH_CMD_CIDXFTHRESH(x)  ((x) << S_FW_EQ_ETH_CMD_CIDXFTHRESH)
3139 #define G_FW_EQ_ETH_CMD_CIDXFTHRESH(x)  \
3140     (((x) >> S_FW_EQ_ETH_CMD_CIDXFTHRESH) & M_FW_EQ_ETH_CMD_CIDXFTHRESH)
3141
3142 #define S_FW_EQ_ETH_CMD_EQSIZE          0
3143 #define M_FW_EQ_ETH_CMD_EQSIZE          0xffff
3144 #define V_FW_EQ_ETH_CMD_EQSIZE(x)       ((x) << S_FW_EQ_ETH_CMD_EQSIZE)
3145 #define G_FW_EQ_ETH_CMD_EQSIZE(x)       \
3146     (((x) >> S_FW_EQ_ETH_CMD_EQSIZE) & M_FW_EQ_ETH_CMD_EQSIZE)
3147
3148 #define S_FW_EQ_ETH_CMD_VIID    16
3149 #define M_FW_EQ_ETH_CMD_VIID    0xfff
3150 #define V_FW_EQ_ETH_CMD_VIID(x) ((x) << S_FW_EQ_ETH_CMD_VIID)
3151 #define G_FW_EQ_ETH_CMD_VIID(x) \
3152     (((x) >> S_FW_EQ_ETH_CMD_VIID) & M_FW_EQ_ETH_CMD_VIID)
3153
3154 struct fw_eq_ctrl_cmd {
3155         __be32 op_to_vfn;
3156         __be32 alloc_to_len16;
3157         __be32 cmpliqid_eqid;
3158         __be32 physeqid_pkd;
3159         __be32 fetchszm_to_iqid;
3160         __be32 dcaen_to_eqsize;
3161         __be64 eqaddr;
3162 };
3163
3164 #define S_FW_EQ_CTRL_CMD_PFN    8
3165 #define M_FW_EQ_CTRL_CMD_PFN    0x7
3166 #define V_FW_EQ_CTRL_CMD_PFN(x) ((x) << S_FW_EQ_CTRL_CMD_PFN)
3167 #define G_FW_EQ_CTRL_CMD_PFN(x) \
3168     (((x) >> S_FW_EQ_CTRL_CMD_PFN) & M_FW_EQ_CTRL_CMD_PFN)
3169
3170 #define S_FW_EQ_CTRL_CMD_VFN    0
3171 #define M_FW_EQ_CTRL_CMD_VFN    0xff
3172 #define V_FW_EQ_CTRL_CMD_VFN(x) ((x) << S_FW_EQ_CTRL_CMD_VFN)
3173 #define G_FW_EQ_CTRL_CMD_VFN(x) \
3174     (((x) >> S_FW_EQ_CTRL_CMD_VFN) & M_FW_EQ_CTRL_CMD_VFN)
3175
3176 #define S_FW_EQ_CTRL_CMD_ALLOC          31
3177 #define M_FW_EQ_CTRL_CMD_ALLOC          0x1
3178 #define V_FW_EQ_CTRL_CMD_ALLOC(x)       ((x) << S_FW_EQ_CTRL_CMD_ALLOC)
3179 #define G_FW_EQ_CTRL_CMD_ALLOC(x)       \
3180     (((x) >> S_FW_EQ_CTRL_CMD_ALLOC) & M_FW_EQ_CTRL_CMD_ALLOC)
3181 #define F_FW_EQ_CTRL_CMD_ALLOC  V_FW_EQ_CTRL_CMD_ALLOC(1U)
3182
3183 #define S_FW_EQ_CTRL_CMD_FREE           30
3184 #define M_FW_EQ_CTRL_CMD_FREE           0x1
3185 #define V_FW_EQ_CTRL_CMD_FREE(x)        ((x) << S_FW_EQ_CTRL_CMD_FREE)
3186 #define G_FW_EQ_CTRL_CMD_FREE(x)        \
3187     (((x) >> S_FW_EQ_CTRL_CMD_FREE) & M_FW_EQ_CTRL_CMD_FREE)
3188 #define F_FW_EQ_CTRL_CMD_FREE   V_FW_EQ_CTRL_CMD_FREE(1U)
3189
3190 #define S_FW_EQ_CTRL_CMD_MODIFY         29
3191 #define M_FW_EQ_CTRL_CMD_MODIFY         0x1
3192 #define V_FW_EQ_CTRL_CMD_MODIFY(x)      ((x) << S_FW_EQ_CTRL_CMD_MODIFY)
3193 #define G_FW_EQ_CTRL_CMD_MODIFY(x)      \
3194     (((x) >> S_FW_EQ_CTRL_CMD_MODIFY) & M_FW_EQ_CTRL_CMD_MODIFY)
3195 #define F_FW_EQ_CTRL_CMD_MODIFY V_FW_EQ_CTRL_CMD_MODIFY(1U)
3196
3197 #define S_FW_EQ_CTRL_CMD_EQSTART        28
3198 #define M_FW_EQ_CTRL_CMD_EQSTART        0x1
3199 #define V_FW_EQ_CTRL_CMD_EQSTART(x)     ((x) << S_FW_EQ_CTRL_CMD_EQSTART)
3200 #define G_FW_EQ_CTRL_CMD_EQSTART(x)     \
3201     (((x) >> S_FW_EQ_CTRL_CMD_EQSTART) & M_FW_EQ_CTRL_CMD_EQSTART)
3202 #define F_FW_EQ_CTRL_CMD_EQSTART        V_FW_EQ_CTRL_CMD_EQSTART(1U)
3203
3204 #define S_FW_EQ_CTRL_CMD_EQSTOP         27
3205 #define M_FW_EQ_CTRL_CMD_EQSTOP         0x1
3206 #define V_FW_EQ_CTRL_CMD_EQSTOP(x)      ((x) << S_FW_EQ_CTRL_CMD_EQSTOP)
3207 #define G_FW_EQ_CTRL_CMD_EQSTOP(x)      \
3208     (((x) >> S_FW_EQ_CTRL_CMD_EQSTOP) & M_FW_EQ_CTRL_CMD_EQSTOP)
3209 #define F_FW_EQ_CTRL_CMD_EQSTOP V_FW_EQ_CTRL_CMD_EQSTOP(1U)
3210
3211 #define S_FW_EQ_CTRL_CMD_CMPLIQID       20
3212 #define M_FW_EQ_CTRL_CMD_CMPLIQID       0xfff
3213 #define V_FW_EQ_CTRL_CMD_CMPLIQID(x)    ((x) << S_FW_EQ_CTRL_CMD_CMPLIQID)
3214 #define G_FW_EQ_CTRL_CMD_CMPLIQID(x)    \
3215     (((x) >> S_FW_EQ_CTRL_CMD_CMPLIQID) & M_FW_EQ_CTRL_CMD_CMPLIQID)
3216
3217 #define S_FW_EQ_CTRL_CMD_EQID           0
3218 #define M_FW_EQ_CTRL_CMD_EQID           0xfffff
3219 #define V_FW_EQ_CTRL_CMD_EQID(x)        ((x) << S_FW_EQ_CTRL_CMD_EQID)
3220 #define G_FW_EQ_CTRL_CMD_EQID(x)        \
3221     (((x) >> S_FW_EQ_CTRL_CMD_EQID) & M_FW_EQ_CTRL_CMD_EQID)
3222
3223 #define S_FW_EQ_CTRL_CMD_PHYSEQID       0
3224 #define M_FW_EQ_CTRL_CMD_PHYSEQID       0xfffff
3225 #define V_FW_EQ_CTRL_CMD_PHYSEQID(x)    ((x) << S_FW_EQ_CTRL_CMD_PHYSEQID)
3226 #define G_FW_EQ_CTRL_CMD_PHYSEQID(x)    \
3227     (((x) >> S_FW_EQ_CTRL_CMD_PHYSEQID) & M_FW_EQ_CTRL_CMD_PHYSEQID)
3228
3229 #define S_FW_EQ_CTRL_CMD_FETCHSZM       26
3230 #define M_FW_EQ_CTRL_CMD_FETCHSZM       0x1
3231 #define V_FW_EQ_CTRL_CMD_FETCHSZM(x)    ((x) << S_FW_EQ_CTRL_CMD_FETCHSZM)
3232 #define G_FW_EQ_CTRL_CMD_FETCHSZM(x)    \
3233     (((x) >> S_FW_EQ_CTRL_CMD_FETCHSZM) & M_FW_EQ_CTRL_CMD_FETCHSZM)
3234 #define F_FW_EQ_CTRL_CMD_FETCHSZM       V_FW_EQ_CTRL_CMD_FETCHSZM(1U)
3235
3236 #define S_FW_EQ_CTRL_CMD_STATUSPGNS     25
3237 #define M_FW_EQ_CTRL_CMD_STATUSPGNS     0x1
3238 #define V_FW_EQ_CTRL_CMD_STATUSPGNS(x)  ((x) << S_FW_EQ_CTRL_CMD_STATUSPGNS)
3239 #define G_FW_EQ_CTRL_CMD_STATUSPGNS(x)  \
3240     (((x) >> S_FW_EQ_CTRL_CMD_STATUSPGNS) & M_FW_EQ_CTRL_CMD_STATUSPGNS)
3241 #define F_FW_EQ_CTRL_CMD_STATUSPGNS     V_FW_EQ_CTRL_CMD_STATUSPGNS(1U)
3242
3243 #define S_FW_EQ_CTRL_CMD_STATUSPGRO     24
3244 #define M_FW_EQ_CTRL_CMD_STATUSPGRO     0x1
3245 #define V_FW_EQ_CTRL_CMD_STATUSPGRO(x)  ((x) << S_FW_EQ_CTRL_CMD_STATUSPGRO)
3246 #define G_FW_EQ_CTRL_CMD_STATUSPGRO(x)  \
3247     (((x) >> S_FW_EQ_CTRL_CMD_STATUSPGRO) & M_FW_EQ_CTRL_CMD_STATUSPGRO)
3248 #define F_FW_EQ_CTRL_CMD_STATUSPGRO     V_FW_EQ_CTRL_CMD_STATUSPGRO(1U)
3249
3250 #define S_FW_EQ_CTRL_CMD_FETCHNS        23
3251 #define M_FW_EQ_CTRL_CMD_FETCHNS        0x1
3252 #define V_FW_EQ_CTRL_CMD_FETCHNS(x)     ((x) << S_FW_EQ_CTRL_CMD_FETCHNS)
3253 #define G_FW_EQ_CTRL_CMD_FETCHNS(x)     \
3254     (((x) >> S_FW_EQ_CTRL_CMD_FETCHNS) & M_FW_EQ_CTRL_CMD_FETCHNS)
3255 #define F_FW_EQ_CTRL_CMD_FETCHNS        V_FW_EQ_CTRL_CMD_FETCHNS(1U)
3256
3257 #define S_FW_EQ_CTRL_CMD_FETCHRO        22
3258 #define M_FW_EQ_CTRL_CMD_FETCHRO        0x1
3259 #define V_FW_EQ_CTRL_CMD_FETCHRO(x)     ((x) << S_FW_EQ_CTRL_CMD_FETCHRO)
3260 #define G_FW_EQ_CTRL_CMD_FETCHRO(x)     \
3261     (((x) >> S_FW_EQ_CTRL_CMD_FETCHRO) & M_FW_EQ_CTRL_CMD_FETCHRO)
3262 #define F_FW_EQ_CTRL_CMD_FETCHRO        V_FW_EQ_CTRL_CMD_FETCHRO(1U)
3263
3264 #define S_FW_EQ_CTRL_CMD_HOSTFCMODE     20
3265 #define M_FW_EQ_CTRL_CMD_HOSTFCMODE     0x3
3266 #define V_FW_EQ_CTRL_CMD_HOSTFCMODE(x)  ((x) << S_FW_EQ_CTRL_CMD_HOSTFCMODE)
3267 #define G_FW_EQ_CTRL_CMD_HOSTFCMODE(x)  \
3268     (((x) >> S_FW_EQ_CTRL_CMD_HOSTFCMODE) & M_FW_EQ_CTRL_CMD_HOSTFCMODE)
3269
3270 #define S_FW_EQ_CTRL_CMD_CPRIO          19
3271 #define M_FW_EQ_CTRL_CMD_CPRIO          0x1
3272 #define V_FW_EQ_CTRL_CMD_CPRIO(x)       ((x) << S_FW_EQ_CTRL_CMD_CPRIO)
3273 #define G_FW_EQ_CTRL_CMD_CPRIO(x)       \
3274     (((x) >> S_FW_EQ_CTRL_CMD_CPRIO) & M_FW_EQ_CTRL_CMD_CPRIO)
3275 #define F_FW_EQ_CTRL_CMD_CPRIO  V_FW_EQ_CTRL_CMD_CPRIO(1U)
3276
3277 #define S_FW_EQ_CTRL_CMD_ONCHIP         18
3278 #define M_FW_EQ_CTRL_CMD_ONCHIP         0x1
3279 #define V_FW_EQ_CTRL_CMD_ONCHIP(x)      ((x) << S_FW_EQ_CTRL_CMD_ONCHIP)
3280 #define G_FW_EQ_CTRL_CMD_ONCHIP(x)      \
3281     (((x) >> S_FW_EQ_CTRL_CMD_ONCHIP) & M_FW_EQ_CTRL_CMD_ONCHIP)
3282 #define F_FW_EQ_CTRL_CMD_ONCHIP V_FW_EQ_CTRL_CMD_ONCHIP(1U)
3283
3284 #define S_FW_EQ_CTRL_CMD_PCIECHN        16
3285 #define M_FW_EQ_CTRL_CMD_PCIECHN        0x3
3286 #define V_FW_EQ_CTRL_CMD_PCIECHN(x)     ((x) << S_FW_EQ_CTRL_CMD_PCIECHN)
3287 #define G_FW_EQ_CTRL_CMD_PCIECHN(x)     \
3288     (((x) >> S_FW_EQ_CTRL_CMD_PCIECHN) & M_FW_EQ_CTRL_CMD_PCIECHN)
3289
3290 #define S_FW_EQ_CTRL_CMD_IQID           0
3291 #define M_FW_EQ_CTRL_CMD_IQID           0xffff
3292 #define V_FW_EQ_CTRL_CMD_IQID(x)        ((x) << S_FW_EQ_CTRL_CMD_IQID)
3293 #define G_FW_EQ_CTRL_CMD_IQID(x)        \
3294     (((x) >> S_FW_EQ_CTRL_CMD_IQID) & M_FW_EQ_CTRL_CMD_IQID)
3295
3296 #define S_FW_EQ_CTRL_CMD_DCAEN          31
3297 #define M_FW_EQ_CTRL_CMD_DCAEN          0x1
3298 #define V_FW_EQ_CTRL_CMD_DCAEN(x)       ((x) << S_FW_EQ_CTRL_CMD_DCAEN)
3299 #define G_FW_EQ_CTRL_CMD_DCAEN(x)       \
3300     (((x) >> S_FW_EQ_CTRL_CMD_DCAEN) & M_FW_EQ_CTRL_CMD_DCAEN)
3301 #define F_FW_EQ_CTRL_CMD_DCAEN  V_FW_EQ_CTRL_CMD_DCAEN(1U)
3302
3303 #define S_FW_EQ_CTRL_CMD_DCACPU         26
3304 #define M_FW_EQ_CTRL_CMD_DCACPU         0x1f
3305 #define V_FW_EQ_CTRL_CMD_DCACPU(x)      ((x) << S_FW_EQ_CTRL_CMD_DCACPU)
3306 #define G_FW_EQ_CTRL_CMD_DCACPU(x)      \
3307     (((x) >> S_FW_EQ_CTRL_CMD_DCACPU) & M_FW_EQ_CTRL_CMD_DCACPU)
3308
3309 #define S_FW_EQ_CTRL_CMD_FBMIN          23
3310 #define M_FW_EQ_CTRL_CMD_FBMIN          0x7
3311 #define V_FW_EQ_CTRL_CMD_FBMIN(x)       ((x) << S_FW_EQ_CTRL_CMD_FBMIN)
3312 #define G_FW_EQ_CTRL_CMD_FBMIN(x)       \
3313     (((x) >> S_FW_EQ_CTRL_CMD_FBMIN) & M_FW_EQ_CTRL_CMD_FBMIN)
3314
3315 #define S_FW_EQ_CTRL_CMD_FBMAX          20
3316 #define M_FW_EQ_CTRL_CMD_FBMAX          0x7
3317 #define V_FW_EQ_CTRL_CMD_FBMAX(x)       ((x) << S_FW_EQ_CTRL_CMD_FBMAX)
3318 #define G_FW_EQ_CTRL_CMD_FBMAX(x)       \
3319     (((x) >> S_FW_EQ_CTRL_CMD_FBMAX) & M_FW_EQ_CTRL_CMD_FBMAX)
3320
3321 #define S_FW_EQ_CTRL_CMD_CIDXFTHRESHO           19
3322 #define M_FW_EQ_CTRL_CMD_CIDXFTHRESHO           0x1
3323 #define V_FW_EQ_CTRL_CMD_CIDXFTHRESHO(x)        \
3324     ((x) << S_FW_EQ_CTRL_CMD_CIDXFTHRESHO)
3325 #define G_FW_EQ_CTRL_CMD_CIDXFTHRESHO(x)        \
3326     (((x) >> S_FW_EQ_CTRL_CMD_CIDXFTHRESHO) & M_FW_EQ_CTRL_CMD_CIDXFTHRESHO)
3327 #define F_FW_EQ_CTRL_CMD_CIDXFTHRESHO   V_FW_EQ_CTRL_CMD_CIDXFTHRESHO(1U)
3328
3329 #define S_FW_EQ_CTRL_CMD_CIDXFTHRESH    16
3330 #define M_FW_EQ_CTRL_CMD_CIDXFTHRESH    0x7
3331 #define V_FW_EQ_CTRL_CMD_CIDXFTHRESH(x) ((x) << S_FW_EQ_CTRL_CMD_CIDXFTHRESH)
3332 #define G_FW_EQ_CTRL_CMD_CIDXFTHRESH(x) \
3333     (((x) >> S_FW_EQ_CTRL_CMD_CIDXFTHRESH) & M_FW_EQ_CTRL_CMD_CIDXFTHRESH)
3334
3335 #define S_FW_EQ_CTRL_CMD_EQSIZE         0
3336 #define M_FW_EQ_CTRL_CMD_EQSIZE         0xffff
3337 #define V_FW_EQ_CTRL_CMD_EQSIZE(x)      ((x) << S_FW_EQ_CTRL_CMD_EQSIZE)
3338 #define G_FW_EQ_CTRL_CMD_EQSIZE(x)      \
3339     (((x) >> S_FW_EQ_CTRL_CMD_EQSIZE) & M_FW_EQ_CTRL_CMD_EQSIZE)
3340
3341 struct fw_eq_ofld_cmd {
3342         __be32 op_to_vfn;
3343         __be32 alloc_to_len16;
3344         __be32 eqid_pkd;
3345         __be32 physeqid_pkd;
3346         __be32 fetchszm_to_iqid;
3347         __be32 dcaen_to_eqsize;
3348         __be64 eqaddr;
3349 };
3350
3351 #define S_FW_EQ_OFLD_CMD_PFN    8
3352 #define M_FW_EQ_OFLD_CMD_PFN    0x7
3353 #define V_FW_EQ_OFLD_CMD_PFN(x) ((x) << S_FW_EQ_OFLD_CMD_PFN)
3354 #define G_FW_EQ_OFLD_CMD_PFN(x) \
3355     (((x) >> S_FW_EQ_OFLD_CMD_PFN) & M_FW_EQ_OFLD_CMD_PFN)
3356
3357 #define S_FW_EQ_OFLD_CMD_VFN    0
3358 #define M_FW_EQ_OFLD_CMD_VFN    0xff
3359 #define V_FW_EQ_OFLD_CMD_VFN(x) ((x) << S_FW_EQ_OFLD_CMD_VFN)
3360 #define G_FW_EQ_OFLD_CMD_VFN(x) \
3361     (((x) >> S_FW_EQ_OFLD_CMD_VFN) & M_FW_EQ_OFLD_CMD_VFN)
3362
3363 #define S_FW_EQ_OFLD_CMD_ALLOC          31
3364 #define M_FW_EQ_OFLD_CMD_ALLOC          0x1
3365 #define V_FW_EQ_OFLD_CMD_ALLOC(x)       ((x) << S_FW_EQ_OFLD_CMD_ALLOC)
3366 #define G_FW_EQ_OFLD_CMD_ALLOC(x)       \
3367     (((x) >> S_FW_EQ_OFLD_CMD_ALLOC) & M_FW_EQ_OFLD_CMD_ALLOC)
3368 #define F_FW_EQ_OFLD_CMD_ALLOC  V_FW_EQ_OFLD_CMD_ALLOC(1U)
3369
3370 #define S_FW_EQ_OFLD_CMD_FREE           30
3371 #define M_FW_EQ_OFLD_CMD_FREE           0x1
3372 #define V_FW_EQ_OFLD_CMD_FREE(x)        ((x) << S_FW_EQ_OFLD_CMD_FREE)
3373 #define G_FW_EQ_OFLD_CMD_FREE(x)        \
3374     (((x) >> S_FW_EQ_OFLD_CMD_FREE) & M_FW_EQ_OFLD_CMD_FREE)
3375 #define F_FW_EQ_OFLD_CMD_FREE   V_FW_EQ_OFLD_CMD_FREE(1U)
3376
3377 #define S_FW_EQ_OFLD_CMD_MODIFY         29
3378 #define M_FW_EQ_OFLD_CMD_MODIFY         0x1
3379 #define V_FW_EQ_OFLD_CMD_MODIFY(x)      ((x) << S_FW_EQ_OFLD_CMD_MODIFY)
3380 #define G_FW_EQ_OFLD_CMD_MODIFY(x)      \
3381     (((x) >> S_FW_EQ_OFLD_CMD_MODIFY) & M_FW_EQ_OFLD_CMD_MODIFY)
3382 #define F_FW_EQ_OFLD_CMD_MODIFY V_FW_EQ_OFLD_CMD_MODIFY(1U)
3383
3384 #define S_FW_EQ_OFLD_CMD_EQSTART        28
3385 #define M_FW_EQ_OFLD_CMD_EQSTART        0x1
3386 #define V_FW_EQ_OFLD_CMD_EQSTART(x)     ((x) << S_FW_EQ_OFLD_CMD_EQSTART)
3387 #define G_FW_EQ_OFLD_CMD_EQSTART(x)     \
3388     (((x) >> S_FW_EQ_OFLD_CMD_EQSTART) & M_FW_EQ_OFLD_CMD_EQSTART)
3389 #define F_FW_EQ_OFLD_CMD_EQSTART        V_FW_EQ_OFLD_CMD_EQSTART(1U)
3390
3391 #define S_FW_EQ_OFLD_CMD_EQSTOP         27
3392 #define M_FW_EQ_OFLD_CMD_EQSTOP         0x1
3393 #define V_FW_EQ_OFLD_CMD_EQSTOP(x)      ((x) << S_FW_EQ_OFLD_CMD_EQSTOP)
3394 #define G_FW_EQ_OFLD_CMD_EQSTOP(x)      \
3395     (((x) >> S_FW_EQ_OFLD_CMD_EQSTOP) & M_FW_EQ_OFLD_CMD_EQSTOP)
3396 #define F_FW_EQ_OFLD_CMD_EQSTOP V_FW_EQ_OFLD_CMD_EQSTOP(1U)
3397
3398 #define S_FW_EQ_OFLD_CMD_EQID           0
3399 #define M_FW_EQ_OFLD_CMD_EQID           0xfffff
3400 #define V_FW_EQ_OFLD_CMD_EQID(x)        ((x) << S_FW_EQ_OFLD_CMD_EQID)
3401 #define G_FW_EQ_OFLD_CMD_EQID(x)        \
3402     (((x) >> S_FW_EQ_OFLD_CMD_EQID) & M_FW_EQ_OFLD_CMD_EQID)
3403
3404 #define S_FW_EQ_OFLD_CMD_PHYSEQID       0
3405 #define M_FW_EQ_OFLD_CMD_PHYSEQID       0xfffff
3406 #define V_FW_EQ_OFLD_CMD_PHYSEQID(x)    ((x) << S_FW_EQ_OFLD_CMD_PHYSEQID)
3407 #define G_FW_EQ_OFLD_CMD_PHYSEQID(x)    \
3408     (((x) >> S_FW_EQ_OFLD_CMD_PHYSEQID) & M_FW_EQ_OFLD_CMD_PHYSEQID)
3409
3410 #define S_FW_EQ_OFLD_CMD_FETCHSZM       26
3411 #define M_FW_EQ_OFLD_CMD_FETCHSZM       0x1
3412 #define V_FW_EQ_OFLD_CMD_FETCHSZM(x)    ((x) << S_FW_EQ_OFLD_CMD_FETCHSZM)
3413 #define G_FW_EQ_OFLD_CMD_FETCHSZM(x)    \
3414     (((x) >> S_FW_EQ_OFLD_CMD_FETCHSZM) & M_FW_EQ_OFLD_CMD_FETCHSZM)
3415 #define F_FW_EQ_OFLD_CMD_FETCHSZM       V_FW_EQ_OFLD_CMD_FETCHSZM(1U)
3416
3417 #define S_FW_EQ_OFLD_CMD_STATUSPGNS     25
3418 #define M_FW_EQ_OFLD_CMD_STATUSPGNS     0x1
3419 #define V_FW_EQ_OFLD_CMD_STATUSPGNS(x)  ((x) << S_FW_EQ_OFLD_CMD_STATUSPGNS)
3420 #define G_FW_EQ_OFLD_CMD_STATUSPGNS(x)  \
3421     (((x) >> S_FW_EQ_OFLD_CMD_STATUSPGNS) & M_FW_EQ_OFLD_CMD_STATUSPGNS)
3422 #define F_FW_EQ_OFLD_CMD_STATUSPGNS     V_FW_EQ_OFLD_CMD_STATUSPGNS(1U)
3423
3424 #define S_FW_EQ_OFLD_CMD_STATUSPGRO     24
3425 #define M_FW_EQ_OFLD_CMD_STATUSPGRO     0x1
3426 #define V_FW_EQ_OFLD_CMD_STATUSPGRO(x)  ((x) << S_FW_EQ_OFLD_CMD_STATUSPGRO)
3427 #define G_FW_EQ_OFLD_CMD_STATUSPGRO(x)  \
3428     (((x) >> S_FW_EQ_OFLD_CMD_STATUSPGRO) & M_FW_EQ_OFLD_CMD_STATUSPGRO)
3429 #define F_FW_EQ_OFLD_CMD_STATUSPGRO     V_FW_EQ_OFLD_CMD_STATUSPGRO(1U)
3430
3431 #define S_FW_EQ_OFLD_CMD_FETCHNS        23
3432 #define M_FW_EQ_OFLD_CMD_FETCHNS        0x1
3433 #define V_FW_EQ_OFLD_CMD_FETCHNS(x)     ((x) << S_FW_EQ_OFLD_CMD_FETCHNS)
3434 #define G_FW_EQ_OFLD_CMD_FETCHNS(x)     \
3435     (((x) >> S_FW_EQ_OFLD_CMD_FETCHNS) & M_FW_EQ_OFLD_CMD_FETCHNS)
3436 #define F_FW_EQ_OFLD_CMD_FETCHNS        V_FW_EQ_OFLD_CMD_FETCHNS(1U)
3437
3438 #define S_FW_EQ_OFLD_CMD_FETCHRO        22
3439 #define M_FW_EQ_OFLD_CMD_FETCHRO        0x1
3440 #define V_FW_EQ_OFLD_CMD_FETCHRO(x)     ((x) << S_FW_EQ_OFLD_CMD_FETCHRO)
3441 #define G_FW_EQ_OFLD_CMD_FETCHRO(x)     \
3442     (((x) >> S_FW_EQ_OFLD_CMD_FETCHRO) & M_FW_EQ_OFLD_CMD_FETCHRO)
3443 #define F_FW_EQ_OFLD_CMD_FETCHRO        V_FW_EQ_OFLD_CMD_FETCHRO(1U)
3444
3445 #define S_FW_EQ_OFLD_CMD_HOSTFCMODE     20
3446 #define M_FW_EQ_OFLD_CMD_HOSTFCMODE     0x3
3447 #define V_FW_EQ_OFLD_CMD_HOSTFCMODE(x)  ((x) << S_FW_EQ_OFLD_CMD_HOSTFCMODE)
3448 #define G_FW_EQ_OFLD_CMD_HOSTFCMODE(x)  \
3449     (((x) >> S_FW_EQ_OFLD_CMD_HOSTFCMODE) & M_FW_EQ_OFLD_CMD_HOSTFCMODE)
3450
3451 #define S_FW_EQ_OFLD_CMD_CPRIO          19
3452 #define M_FW_EQ_OFLD_CMD_CPRIO          0x1
3453 #define V_FW_EQ_OFLD_CMD_CPRIO(x)       ((x) << S_FW_EQ_OFLD_CMD_CPRIO)
3454 #define G_FW_EQ_OFLD_CMD_CPRIO(x)       \
3455     (((x) >> S_FW_EQ_OFLD_CMD_CPRIO) & M_FW_EQ_OFLD_CMD_CPRIO)
3456 #define F_FW_EQ_OFLD_CMD_CPRIO  V_FW_EQ_OFLD_CMD_CPRIO(1U)
3457
3458 #define S_FW_EQ_OFLD_CMD_ONCHIP         18
3459 #define M_FW_EQ_OFLD_CMD_ONCHIP         0x1
3460 #define V_FW_EQ_OFLD_CMD_ONCHIP(x)      ((x) << S_FW_EQ_OFLD_CMD_ONCHIP)
3461 #define G_FW_EQ_OFLD_CMD_ONCHIP(x)      \
3462     (((x) >> S_FW_EQ_OFLD_CMD_ONCHIP) & M_FW_EQ_OFLD_CMD_ONCHIP)
3463 #define F_FW_EQ_OFLD_CMD_ONCHIP V_FW_EQ_OFLD_CMD_ONCHIP(1U)
3464
3465 #define S_FW_EQ_OFLD_CMD_PCIECHN        16
3466 #define M_FW_EQ_OFLD_CMD_PCIECHN        0x3
3467 #define V_FW_EQ_OFLD_CMD_PCIECHN(x)     ((x) << S_FW_EQ_OFLD_CMD_PCIECHN)
3468 #define G_FW_EQ_OFLD_CMD_PCIECHN(x)     \
3469     (((x) >> S_FW_EQ_OFLD_CMD_PCIECHN) & M_FW_EQ_OFLD_CMD_PCIECHN)
3470
3471 #define S_FW_EQ_OFLD_CMD_IQID           0
3472 #define M_FW_EQ_OFLD_CMD_IQID           0xffff
3473 #define V_FW_EQ_OFLD_CMD_IQID(x)        ((x) << S_FW_EQ_OFLD_CMD_IQID)
3474 #define G_FW_EQ_OFLD_CMD_IQID(x)        \
3475     (((x) >> S_FW_EQ_OFLD_CMD_IQID) & M_FW_EQ_OFLD_CMD_IQID)
3476
3477 #define S_FW_EQ_OFLD_CMD_DCAEN          31
3478 #define M_FW_EQ_OFLD_CMD_DCAEN          0x1
3479 #define V_FW_EQ_OFLD_CMD_DCAEN(x)       ((x) << S_FW_EQ_OFLD_CMD_DCAEN)
3480 #define G_FW_EQ_OFLD_CMD_DCAEN(x)       \
3481     (((x) >> S_FW_EQ_OFLD_CMD_DCAEN) & M_FW_EQ_OFLD_CMD_DCAEN)
3482 #define F_FW_EQ_OFLD_CMD_DCAEN  V_FW_EQ_OFLD_CMD_DCAEN(1U)
3483
3484 #define S_FW_EQ_OFLD_CMD_DCACPU         26
3485 #define M_FW_EQ_OFLD_CMD_DCACPU         0x1f
3486 #define V_FW_EQ_OFLD_CMD_DCACPU(x)      ((x) << S_FW_EQ_OFLD_CMD_DCACPU)
3487 #define G_FW_EQ_OFLD_CMD_DCACPU(x)      \
3488     (((x) >> S_FW_EQ_OFLD_CMD_DCACPU) & M_FW_EQ_OFLD_CMD_DCACPU)
3489
3490 #define S_FW_EQ_OFLD_CMD_FBMIN          23
3491 #define M_FW_EQ_OFLD_CMD_FBMIN          0x7
3492 #define V_FW_EQ_OFLD_CMD_FBMIN(x)       ((x) << S_FW_EQ_OFLD_CMD_FBMIN)
3493 #define G_FW_EQ_OFLD_CMD_FBMIN(x)       \
3494     (((x) >> S_FW_EQ_OFLD_CMD_FBMIN) & M_FW_EQ_OFLD_CMD_FBMIN)
3495
3496 #define S_FW_EQ_OFLD_CMD_FBMAX          20
3497 #define M_FW_EQ_OFLD_CMD_FBMAX          0x7
3498 #define V_FW_EQ_OFLD_CMD_FBMAX(x)       ((x) << S_FW_EQ_OFLD_CMD_FBMAX)
3499 #define G_FW_EQ_OFLD_CMD_FBMAX(x)       \
3500     (((x) >> S_FW_EQ_OFLD_CMD_FBMAX) & M_FW_EQ_OFLD_CMD_FBMAX)
3501
3502 #define S_FW_EQ_OFLD_CMD_CIDXFTHRESHO           19
3503 #define M_FW_EQ_OFLD_CMD_CIDXFTHRESHO           0x1
3504 #define V_FW_EQ_OFLD_CMD_CIDXFTHRESHO(x)        \
3505     ((x) << S_FW_EQ_OFLD_CMD_CIDXFTHRESHO)
3506 #define G_FW_EQ_OFLD_CMD_CIDXFTHRESHO(x)        \
3507     (((x) >> S_FW_EQ_OFLD_CMD_CIDXFTHRESHO) & M_FW_EQ_OFLD_CMD_CIDXFTHRESHO)
3508 #define F_FW_EQ_OFLD_CMD_CIDXFTHRESHO   V_FW_EQ_OFLD_CMD_CIDXFTHRESHO(1U)
3509
3510 #define S_FW_EQ_OFLD_CMD_CIDXFTHRESH    16
3511 #define M_FW_EQ_OFLD_CMD_CIDXFTHRESH    0x7
3512 #define V_FW_EQ_OFLD_CMD_CIDXFTHRESH(x) ((x) << S_FW_EQ_OFLD_CMD_CIDXFTHRESH)
3513 #define G_FW_EQ_OFLD_CMD_CIDXFTHRESH(x) \
3514     (((x) >> S_FW_EQ_OFLD_CMD_CIDXFTHRESH) & M_FW_EQ_OFLD_CMD_CIDXFTHRESH)
3515
3516 #define S_FW_EQ_OFLD_CMD_EQSIZE         0
3517 #define M_FW_EQ_OFLD_CMD_EQSIZE         0xffff
3518 #define V_FW_EQ_OFLD_CMD_EQSIZE(x)      ((x) << S_FW_EQ_OFLD_CMD_EQSIZE)
3519 #define G_FW_EQ_OFLD_CMD_EQSIZE(x)      \
3520     (((x) >> S_FW_EQ_OFLD_CMD_EQSIZE) & M_FW_EQ_OFLD_CMD_EQSIZE)
3521 /* Macros for VIID parsing:
3522    VIID - [10:8] PFN, [7] VI Valid, [6:0] VI number */
3523 #define S_FW_VIID_PFN           8
3524 #define M_FW_VIID_PFN           0x7
3525 #define V_FW_VIID_PFN(x)        ((x) << S_FW_VIID_PFN)
3526 #define G_FW_VIID_PFN(x)        (((x) >> S_FW_VIID_PFN) & M_FW_VIID_PFN)
3527
3528 #define S_FW_VIID_VIVLD         7
3529 #define M_FW_VIID_VIVLD         0x1
3530 #define V_FW_VIID_VIVLD(x)      ((x) << S_FW_VIID_VIVLD)
3531 #define G_FW_VIID_VIVLD(x)      (((x) >> S_FW_VIID_VIVLD) & M_FW_VIID_VIVLD)
3532
3533 #define S_FW_VIID_VIN           0
3534 #define M_FW_VIID_VIN           0x7F
3535 #define V_FW_VIID_VIN(x)        ((x) << S_FW_VIID_VIN)
3536 #define G_FW_VIID_VIN(x)        (((x) >> S_FW_VIID_VIN) & M_FW_VIID_VIN)
3537
3538 enum fw_vi_func {
3539         FW_VI_FUNC_ETH,
3540         FW_VI_FUNC_OFLD,
3541         FW_VI_FUNC_IWARP,
3542         FW_VI_FUNC_OPENISCSI,
3543         FW_VI_FUNC_OPENFCOE,
3544         FW_VI_FUNC_FOISCSI,
3545         FW_VI_FUNC_FOFCOE,
3546         FW_VI_FUNC_FW,
3547 };
3548
3549 struct fw_vi_cmd {
3550         __be32 op_to_vfn;
3551         __be32 alloc_to_len16;
3552         __be16 type_to_viid;
3553         __u8   mac[6];
3554         __u8   portid_pkd;
3555         __u8   nmac;
3556         __u8   nmac0[6];
3557         __be16 rsssize_pkd;
3558         __u8   nmac1[6];
3559         __be16 idsiiq_pkd;
3560         __u8   nmac2[6];
3561         __be16 idseiq_pkd;
3562         __u8   nmac3[6];
3563         __be64 r9;
3564         __be64 r10;
3565 };
3566
3567 #define S_FW_VI_CMD_PFN         8
3568 #define M_FW_VI_CMD_PFN         0x7
3569 #define V_FW_VI_CMD_PFN(x)      ((x) << S_FW_VI_CMD_PFN)
3570 #define G_FW_VI_CMD_PFN(x)      (((x) >> S_FW_VI_CMD_PFN) & M_FW_VI_CMD_PFN)
3571
3572 #define S_FW_VI_CMD_VFN         0
3573 #define M_FW_VI_CMD_VFN         0xff
3574 #define V_FW_VI_CMD_VFN(x)      ((x) << S_FW_VI_CMD_VFN)
3575 #define G_FW_VI_CMD_VFN(x)      (((x) >> S_FW_VI_CMD_VFN) & M_FW_VI_CMD_VFN)
3576
3577 #define S_FW_VI_CMD_ALLOC       31
3578 #define M_FW_VI_CMD_ALLOC       0x1
3579 #define V_FW_VI_CMD_ALLOC(x)    ((x) << S_FW_VI_CMD_ALLOC)
3580 #define G_FW_VI_CMD_ALLOC(x)    \
3581     (((x) >> S_FW_VI_CMD_ALLOC) & M_FW_VI_CMD_ALLOC)
3582 #define F_FW_VI_CMD_ALLOC       V_FW_VI_CMD_ALLOC(1U)
3583
3584 #define S_FW_VI_CMD_FREE        30
3585 #define M_FW_VI_CMD_FREE        0x1
3586 #define V_FW_VI_CMD_FREE(x)     ((x) << S_FW_VI_CMD_FREE)
3587 #define G_FW_VI_CMD_FREE(x)     (((x) >> S_FW_VI_CMD_FREE) & M_FW_VI_CMD_FREE)
3588 #define F_FW_VI_CMD_FREE        V_FW_VI_CMD_FREE(1U)
3589
3590 #define S_FW_VI_CMD_TYPE        15
3591 #define M_FW_VI_CMD_TYPE        0x1
3592 #define V_FW_VI_CMD_TYPE(x)     ((x) << S_FW_VI_CMD_TYPE)
3593 #define G_FW_VI_CMD_TYPE(x)     (((x) >> S_FW_VI_CMD_TYPE) & M_FW_VI_CMD_TYPE)
3594 #define F_FW_VI_CMD_TYPE        V_FW_VI_CMD_TYPE(1U)
3595
3596 #define S_FW_VI_CMD_FUNC        12
3597 #define M_FW_VI_CMD_FUNC        0x7
3598 #define V_FW_VI_CMD_FUNC(x)     ((x) << S_FW_VI_CMD_FUNC)
3599 #define G_FW_VI_CMD_FUNC(x)     (((x) >> S_FW_VI_CMD_FUNC) & M_FW_VI_CMD_FUNC)
3600
3601 #define S_FW_VI_CMD_VIID        0
3602 #define M_FW_VI_CMD_VIID        0xfff
3603 #define V_FW_VI_CMD_VIID(x)     ((x) << S_FW_VI_CMD_VIID)
3604 #define G_FW_VI_CMD_VIID(x)     (((x) >> S_FW_VI_CMD_VIID) & M_FW_VI_CMD_VIID)
3605
3606 #define S_FW_VI_CMD_PORTID      4
3607 #define M_FW_VI_CMD_PORTID      0xf
3608 #define V_FW_VI_CMD_PORTID(x)   ((x) << S_FW_VI_CMD_PORTID)
3609 #define G_FW_VI_CMD_PORTID(x)   \
3610     (((x) >> S_FW_VI_CMD_PORTID) & M_FW_VI_CMD_PORTID)
3611
3612 #define S_FW_VI_CMD_RSSSIZE     0
3613 #define M_FW_VI_CMD_RSSSIZE     0x7ff
3614 #define V_FW_VI_CMD_RSSSIZE(x)  ((x) << S_FW_VI_CMD_RSSSIZE)
3615 #define G_FW_VI_CMD_RSSSIZE(x)  \
3616     (((x) >> S_FW_VI_CMD_RSSSIZE) & M_FW_VI_CMD_RSSSIZE)
3617
3618 #define S_FW_VI_CMD_IDSIIQ      0
3619 #define M_FW_VI_CMD_IDSIIQ      0x3ff
3620 #define V_FW_VI_CMD_IDSIIQ(x)   ((x) << S_FW_VI_CMD_IDSIIQ)
3621 #define G_FW_VI_CMD_IDSIIQ(x)   \
3622     (((x) >> S_FW_VI_CMD_IDSIIQ) & M_FW_VI_CMD_IDSIIQ)
3623
3624 #define S_FW_VI_CMD_IDSEIQ      0
3625 #define M_FW_VI_CMD_IDSEIQ      0x3ff
3626 #define V_FW_VI_CMD_IDSEIQ(x)   ((x) << S_FW_VI_CMD_IDSEIQ)
3627 #define G_FW_VI_CMD_IDSEIQ(x)   \
3628     (((x) >> S_FW_VI_CMD_IDSEIQ) & M_FW_VI_CMD_IDSEIQ)
3629
3630 /* Special VI_MAC command index ids */
3631 #define FW_VI_MAC_ADD_MAC               0x3FF
3632 #define FW_VI_MAC_ADD_PERSIST_MAC       0x3FE
3633 #define FW_VI_MAC_MAC_BASED_FREE        0x3FD
3634 #define FW_CLS_TCAM_NUM_ENTRIES         336
3635
3636 enum fw_vi_mac_smac {
3637         FW_VI_MAC_MPS_TCAM_ENTRY,
3638         FW_VI_MAC_MPS_TCAM_ONLY,
3639         FW_VI_MAC_SMT_ONLY,
3640         FW_VI_MAC_SMT_AND_MPSTCAM
3641 };
3642
3643 enum fw_vi_mac_result {
3644         FW_VI_MAC_R_SUCCESS,
3645         FW_VI_MAC_R_F_NONEXISTENT_NOMEM,
3646         FW_VI_MAC_R_SMAC_FAIL,
3647         FW_VI_MAC_R_F_ACL_CHECK
3648 };
3649
3650 struct fw_vi_mac_cmd {
3651         __be32 op_to_viid;
3652         __be32 freemacs_to_len16;
3653         union fw_vi_mac {
3654                 struct fw_vi_mac_exact {
3655                         __be16 valid_to_idx;
3656                         __u8   macaddr[6];
3657                 } exact[7];
3658                 struct fw_vi_mac_hash {
3659                         __be64 hashvec;
3660                 } hash;
3661         } u;
3662 };
3663
3664 #define S_FW_VI_MAC_CMD_VIID    0
3665 #define M_FW_VI_MAC_CMD_VIID    0xfff
3666 #define V_FW_VI_MAC_CMD_VIID(x) ((x) << S_FW_VI_MAC_CMD_VIID)
3667 #define G_FW_VI_MAC_CMD_VIID(x) \
3668     (((x) >> S_FW_VI_MAC_CMD_VIID) & M_FW_VI_MAC_CMD_VIID)
3669
3670 #define S_FW_VI_MAC_CMD_FREEMACS        31
3671 #define M_FW_VI_MAC_CMD_FREEMACS        0x1
3672 #define V_FW_VI_MAC_CMD_FREEMACS(x)     ((x) << S_FW_VI_MAC_CMD_FREEMACS)
3673 #define G_FW_VI_MAC_CMD_FREEMACS(x)     \
3674     (((x) >> S_FW_VI_MAC_CMD_FREEMACS) & M_FW_VI_MAC_CMD_FREEMACS)
3675 #define F_FW_VI_MAC_CMD_FREEMACS        V_FW_VI_MAC_CMD_FREEMACS(1U)
3676
3677 #define S_FW_VI_MAC_CMD_HASHVECEN       23
3678 #define M_FW_VI_MAC_CMD_HASHVECEN       0x1
3679 #define V_FW_VI_MAC_CMD_HASHVECEN(x)    ((x) << S_FW_VI_MAC_CMD_HASHVECEN)
3680 #define G_FW_VI_MAC_CMD_HASHVECEN(x)    \
3681     (((x) >> S_FW_VI_MAC_CMD_HASHVECEN) & M_FW_VI_MAC_CMD_HASHVECEN)
3682 #define F_FW_VI_MAC_CMD_HASHVECEN       V_FW_VI_MAC_CMD_HASHVECEN(1U)
3683
3684 #define S_FW_VI_MAC_CMD_HASHUNIEN       22
3685 #define M_FW_VI_MAC_CMD_HASHUNIEN       0x1
3686 #define V_FW_VI_MAC_CMD_HASHUNIEN(x)    ((x) << S_FW_VI_MAC_CMD_HASHUNIEN)
3687 #define G_FW_VI_MAC_CMD_HASHUNIEN(x)    \
3688     (((x) >> S_FW_VI_MAC_CMD_HASHUNIEN) & M_FW_VI_MAC_CMD_HASHUNIEN)
3689 #define F_FW_VI_MAC_CMD_HASHUNIEN       V_FW_VI_MAC_CMD_HASHUNIEN(1U)
3690
3691 #define S_FW_VI_MAC_CMD_VALID           15
3692 #define M_FW_VI_MAC_CMD_VALID           0x1
3693 #define V_FW_VI_MAC_CMD_VALID(x)        ((x) << S_FW_VI_MAC_CMD_VALID)
3694 #define G_FW_VI_MAC_CMD_VALID(x)        \
3695     (((x) >> S_FW_VI_MAC_CMD_VALID) & M_FW_VI_MAC_CMD_VALID)
3696 #define F_FW_VI_MAC_CMD_VALID   V_FW_VI_MAC_CMD_VALID(1U)
3697
3698 #define S_FW_VI_MAC_CMD_PRIO    12
3699 #define M_FW_VI_MAC_CMD_PRIO    0x7
3700 #define V_FW_VI_MAC_CMD_PRIO(x) ((x) << S_FW_VI_MAC_CMD_PRIO)
3701 #define G_FW_VI_MAC_CMD_PRIO(x) \
3702     (((x) >> S_FW_VI_MAC_CMD_PRIO) & M_FW_VI_MAC_CMD_PRIO)
3703
3704 #define S_FW_VI_MAC_CMD_SMAC_RESULT     10
3705 #define M_FW_VI_MAC_CMD_SMAC_RESULT     0x3
3706 #define V_FW_VI_MAC_CMD_SMAC_RESULT(x)  ((x) << S_FW_VI_MAC_CMD_SMAC_RESULT)
3707 #define G_FW_VI_MAC_CMD_SMAC_RESULT(x)  \
3708     (((x) >> S_FW_VI_MAC_CMD_SMAC_RESULT) & M_FW_VI_MAC_CMD_SMAC_RESULT)
3709
3710 #define S_FW_VI_MAC_CMD_IDX     0
3711 #define M_FW_VI_MAC_CMD_IDX     0x3ff
3712 #define V_FW_VI_MAC_CMD_IDX(x)  ((x) << S_FW_VI_MAC_CMD_IDX)
3713 #define G_FW_VI_MAC_CMD_IDX(x)  \
3714     (((x) >> S_FW_VI_MAC_CMD_IDX) & M_FW_VI_MAC_CMD_IDX)
3715
3716 /* T4 max MTU supported */
3717 #define T4_MAX_MTU_SUPPORTED    9600
3718 #define FW_RXMODE_MTU_NO_CHG    65535
3719
3720 struct fw_vi_rxmode_cmd {
3721         __be32 op_to_viid;
3722         __be32 retval_len16;
3723         __be32 mtu_to_vlanexen;
3724         __be32 r4_lo;
3725 };
3726
3727 #define S_FW_VI_RXMODE_CMD_VIID         0
3728 #define M_FW_VI_RXMODE_CMD_VIID         0xfff
3729 #define V_FW_VI_RXMODE_CMD_VIID(x)      ((x) << S_FW_VI_RXMODE_CMD_VIID)
3730 #define G_FW_VI_RXMODE_CMD_VIID(x)      \
3731     (((x) >> S_FW_VI_RXMODE_CMD_VIID) & M_FW_VI_RXMODE_CMD_VIID)
3732
3733 #define S_FW_VI_RXMODE_CMD_MTU          16
3734 #define M_FW_VI_RXMODE_CMD_MTU          0xffff
3735 #define V_FW_VI_RXMODE_CMD_MTU(x)       ((x) << S_FW_VI_RXMODE_CMD_MTU)
3736 #define G_FW_VI_RXMODE_CMD_MTU(x)       \
3737     (((x) >> S_FW_VI_RXMODE_CMD_MTU) & M_FW_VI_RXMODE_CMD_MTU)
3738
3739 #define S_FW_VI_RXMODE_CMD_PROMISCEN    14
3740 #define M_FW_VI_RXMODE_CMD_PROMISCEN    0x3
3741 #define V_FW_VI_RXMODE_CMD_PROMISCEN(x) ((x) << S_FW_VI_RXMODE_CMD_PROMISCEN)
3742 #define G_FW_VI_RXMODE_CMD_PROMISCEN(x) \
3743     (((x) >> S_FW_VI_RXMODE_CMD_PROMISCEN) & M_FW_VI_RXMODE_CMD_PROMISCEN)
3744
3745 #define S_FW_VI_RXMODE_CMD_ALLMULTIEN           12
3746 #define M_FW_VI_RXMODE_CMD_ALLMULTIEN           0x3
3747 #define V_FW_VI_RXMODE_CMD_ALLMULTIEN(x)        \
3748     ((x) << S_FW_VI_RXMODE_CMD_ALLMULTIEN)
3749 #define G_FW_VI_RXMODE_CMD_ALLMULTIEN(x)        \
3750     (((x) >> S_FW_VI_RXMODE_CMD_ALLMULTIEN) & M_FW_VI_RXMODE_CMD_ALLMULTIEN)
3751
3752 #define S_FW_VI_RXMODE_CMD_BROADCASTEN          10
3753 #define M_FW_VI_RXMODE_CMD_BROADCASTEN          0x3
3754 #define V_FW_VI_RXMODE_CMD_BROADCASTEN(x)       \
3755     ((x) << S_FW_VI_RXMODE_CMD_BROADCASTEN)
3756 #define G_FW_VI_RXMODE_CMD_BROADCASTEN(x)       \
3757     (((x) >> S_FW_VI_RXMODE_CMD_BROADCASTEN) & M_FW_VI_RXMODE_CMD_BROADCASTEN)
3758
3759 #define S_FW_VI_RXMODE_CMD_VLANEXEN     8
3760 #define M_FW_VI_RXMODE_CMD_VLANEXEN     0x3
3761 #define V_FW_VI_RXMODE_CMD_VLANEXEN(x)  ((x) << S_FW_VI_RXMODE_CMD_VLANEXEN)
3762 #define G_FW_VI_RXMODE_CMD_VLANEXEN(x)  \
3763     (((x) >> S_FW_VI_RXMODE_CMD_VLANEXEN) & M_FW_VI_RXMODE_CMD_VLANEXEN)
3764
3765 struct fw_vi_enable_cmd {
3766         __be32 op_to_viid;
3767         __be32 ien_to_len16;
3768         __be16 blinkdur;
3769         __be16 r3;
3770         __be32 r4;
3771 };
3772
3773 #define S_FW_VI_ENABLE_CMD_VIID         0
3774 #define M_FW_VI_ENABLE_CMD_VIID         0xfff
3775 #define V_FW_VI_ENABLE_CMD_VIID(x)      ((x) << S_FW_VI_ENABLE_CMD_VIID)
3776 #define G_FW_VI_ENABLE_CMD_VIID(x)      \
3777     (((x) >> S_FW_VI_ENABLE_CMD_VIID) & M_FW_VI_ENABLE_CMD_VIID)
3778
3779 #define S_FW_VI_ENABLE_CMD_IEN          31
3780 #define M_FW_VI_ENABLE_CMD_IEN          0x1
3781 #define V_FW_VI_ENABLE_CMD_IEN(x)       ((x) << S_FW_VI_ENABLE_CMD_IEN)
3782 #define G_FW_VI_ENABLE_CMD_IEN(x)       \
3783     (((x) >> S_FW_VI_ENABLE_CMD_IEN) & M_FW_VI_ENABLE_CMD_IEN)
3784 #define F_FW_VI_ENABLE_CMD_IEN  V_FW_VI_ENABLE_CMD_IEN(1U)
3785
3786 #define S_FW_VI_ENABLE_CMD_EEN          30
3787 #define M_FW_VI_ENABLE_CMD_EEN          0x1
3788 #define V_FW_VI_ENABLE_CMD_EEN(x)       ((x) << S_FW_VI_ENABLE_CMD_EEN)
3789 #define G_FW_VI_ENABLE_CMD_EEN(x)       \
3790     (((x) >> S_FW_VI_ENABLE_CMD_EEN) & M_FW_VI_ENABLE_CMD_EEN)
3791 #define F_FW_VI_ENABLE_CMD_EEN  V_FW_VI_ENABLE_CMD_EEN(1U)
3792
3793 #define S_FW_VI_ENABLE_CMD_LED          29
3794 #define M_FW_VI_ENABLE_CMD_LED          0x1
3795 #define V_FW_VI_ENABLE_CMD_LED(x)       ((x) << S_FW_VI_ENABLE_CMD_LED)
3796 #define G_FW_VI_ENABLE_CMD_LED(x)       \
3797     (((x) >> S_FW_VI_ENABLE_CMD_LED) & M_FW_VI_ENABLE_CMD_LED)
3798 #define F_FW_VI_ENABLE_CMD_LED  V_FW_VI_ENABLE_CMD_LED(1U)
3799
3800 /* VI VF stats offset definitions */
3801 #define VI_VF_NUM_STATS 16
3802 enum fw_vi_stats_vf_index {
3803         FW_VI_VF_STAT_TX_BCAST_BYTES_IX,
3804         FW_VI_VF_STAT_TX_BCAST_FRAMES_IX,
3805         FW_VI_VF_STAT_TX_MCAST_BYTES_IX,
3806         FW_VI_VF_STAT_TX_MCAST_FRAMES_IX,
3807         FW_VI_VF_STAT_TX_UCAST_BYTES_IX,
3808         FW_VI_VF_STAT_TX_UCAST_FRAMES_IX,
3809         FW_VI_VF_STAT_TX_DROP_FRAMES_IX,
3810         FW_VI_VF_STAT_TX_OFLD_BYTES_IX,
3811         FW_VI_VF_STAT_TX_OFLD_FRAMES_IX,
3812         FW_VI_VF_STAT_RX_BCAST_BYTES_IX,
3813         FW_VI_VF_STAT_RX_BCAST_FRAMES_IX,
3814         FW_VI_VF_STAT_RX_MCAST_BYTES_IX,
3815         FW_VI_VF_STAT_RX_MCAST_FRAMES_IX,
3816         FW_VI_VF_STAT_RX_UCAST_BYTES_IX,
3817         FW_VI_VF_STAT_RX_UCAST_FRAMES_IX,
3818         FW_VI_VF_STAT_RX_ERR_FRAMES_IX
3819 };
3820
3821 /* VI PF stats offset definitions */
3822 #define VI_PF_NUM_STATS 17
3823 enum fw_vi_stats_pf_index {
3824         FW_VI_PF_STAT_TX_BCAST_BYTES_IX,
3825         FW_VI_PF_STAT_TX_BCAST_FRAMES_IX,
3826         FW_VI_PF_STAT_TX_MCAST_BYTES_IX,
3827         FW_VI_PF_STAT_TX_MCAST_FRAMES_IX,
3828         FW_VI_PF_STAT_TX_UCAST_BYTES_IX,
3829         FW_VI_PF_STAT_TX_UCAST_FRAMES_IX,
3830         FW_VI_PF_STAT_TX_OFLD_BYTES_IX,
3831         FW_VI_PF_STAT_TX_OFLD_FRAMES_IX,
3832         FW_VI_PF_STAT_RX_BYTES_IX,
3833         FW_VI_PF_STAT_RX_FRAMES_IX,
3834         FW_VI_PF_STAT_RX_BCAST_BYTES_IX,
3835         FW_VI_PF_STAT_RX_BCAST_FRAMES_IX,
3836         FW_VI_PF_STAT_RX_MCAST_BYTES_IX,
3837         FW_VI_PF_STAT_RX_MCAST_FRAMES_IX,
3838         FW_VI_PF_STAT_RX_UCAST_BYTES_IX,
3839         FW_VI_PF_STAT_RX_UCAST_FRAMES_IX,
3840         FW_VI_PF_STAT_RX_ERR_FRAMES_IX
3841 };
3842
3843 struct fw_vi_stats_cmd {
3844         __be32 op_to_viid;
3845         __be32 retval_len16;
3846         union fw_vi_stats {
3847                 struct fw_vi_stats_ctl {
3848                         __be16 nstats_ix;
3849                         __be16 r6;
3850                         __be32 r7;
3851                         __be64 stat0;
3852                         __be64 stat1;
3853                         __be64 stat2;
3854                         __be64 stat3;
3855                         __be64 stat4;
3856                         __be64 stat5;
3857                 } ctl;
3858                 struct fw_vi_stats_pf {
3859                         __be64 tx_bcast_bytes;
3860                         __be64 tx_bcast_frames;
3861                         __be64 tx_mcast_bytes;
3862                         __be64 tx_mcast_frames;
3863                         __be64 tx_ucast_bytes;
3864                         __be64 tx_ucast_frames;
3865                         __be64 tx_offload_bytes;
3866                         __be64 tx_offload_frames;
3867                         __be64 rx_pf_bytes;
3868                         __be64 rx_pf_frames;
3869                         __be64 rx_bcast_bytes;
3870                         __be64 rx_bcast_frames;
3871                         __be64 rx_mcast_bytes;
3872                         __be64 rx_mcast_frames;
3873                         __be64 rx_ucast_bytes;
3874                         __be64 rx_ucast_frames;
3875                         __be64 rx_err_frames;
3876                 } pf;
3877                 struct fw_vi_stats_vf {
3878                         __be64 tx_bcast_bytes;
3879                         __be64 tx_bcast_frames;
3880                         __be64 tx_mcast_bytes;
3881                         __be64 tx_mcast_frames;
3882                         __be64 tx_ucast_bytes;
3883                         __be64 tx_ucast_frames;
3884                         __be64 tx_drop_frames;
3885                         __be64 tx_offload_bytes;
3886                         __be64 tx_offload_frames;
3887                         __be64 rx_bcast_bytes;
3888                         __be64 rx_bcast_frames;
3889                         __be64 rx_mcast_bytes;
3890                         __be64 rx_mcast_frames;
3891                         __be64 rx_ucast_bytes;
3892                         __be64 rx_ucast_frames;
3893                         __be64 rx_err_frames;
3894                 } vf;
3895         } u;
3896 };
3897
3898 #define S_FW_VI_STATS_CMD_VIID          0
3899 #define M_FW_VI_STATS_CMD_VIID          0xfff
3900 #define V_FW_VI_STATS_CMD_VIID(x)       ((x) << S_FW_VI_STATS_CMD_VIID)
3901 #define G_FW_VI_STATS_CMD_VIID(x)       \
3902     (((x) >> S_FW_VI_STATS_CMD_VIID) & M_FW_VI_STATS_CMD_VIID)
3903
3904 #define S_FW_VI_STATS_CMD_NSTATS        12
3905 #define M_FW_VI_STATS_CMD_NSTATS        0x7
3906 #define V_FW_VI_STATS_CMD_NSTATS(x)     ((x) << S_FW_VI_STATS_CMD_NSTATS)
3907 #define G_FW_VI_STATS_CMD_NSTATS(x)     \
3908     (((x) >> S_FW_VI_STATS_CMD_NSTATS) & M_FW_VI_STATS_CMD_NSTATS)
3909
3910 #define S_FW_VI_STATS_CMD_IX    0
3911 #define M_FW_VI_STATS_CMD_IX    0x1f
3912 #define V_FW_VI_STATS_CMD_IX(x) ((x) << S_FW_VI_STATS_CMD_IX)
3913 #define G_FW_VI_STATS_CMD_IX(x) \
3914     (((x) >> S_FW_VI_STATS_CMD_IX) & M_FW_VI_STATS_CMD_IX)
3915
3916 struct fw_acl_mac_cmd {
3917         __be32 op_to_vfn;
3918         __be32 en_to_len16;
3919         __u8   nmac;
3920         __u8   r3[7];
3921         __be16 r4;
3922         __u8   macaddr0[6];
3923         __be16 r5;
3924         __u8   macaddr1[6];
3925         __be16 r6;
3926         __u8   macaddr2[6];
3927         __be16 r7;
3928         __u8   macaddr3[6];
3929 };
3930
3931 #define S_FW_ACL_MAC_CMD_PFN    8
3932 #define M_FW_ACL_MAC_CMD_PFN    0x7
3933 #define V_FW_ACL_MAC_CMD_PFN(x) ((x) << S_FW_ACL_MAC_CMD_PFN)
3934 #define G_FW_ACL_MAC_CMD_PFN(x) \
3935     (((x) >> S_FW_ACL_MAC_CMD_PFN) & M_FW_ACL_MAC_CMD_PFN)
3936
3937 #define S_FW_ACL_MAC_CMD_VFN    0
3938 #define M_FW_ACL_MAC_CMD_VFN    0xff
3939 #define V_FW_ACL_MAC_CMD_VFN(x) ((x) << S_FW_ACL_MAC_CMD_VFN)
3940 #define G_FW_ACL_MAC_CMD_VFN(x) \
3941     (((x) >> S_FW_ACL_MAC_CMD_VFN) & M_FW_ACL_MAC_CMD_VFN)
3942
3943 #define S_FW_ACL_MAC_CMD_EN     31
3944 #define M_FW_ACL_MAC_CMD_EN     0x1
3945 #define V_FW_ACL_MAC_CMD_EN(x)  ((x) << S_FW_ACL_MAC_CMD_EN)
3946 #define G_FW_ACL_MAC_CMD_EN(x)  \
3947     (((x) >> S_FW_ACL_MAC_CMD_EN) & M_FW_ACL_MAC_CMD_EN)
3948 #define F_FW_ACL_MAC_CMD_EN     V_FW_ACL_MAC_CMD_EN(1U)
3949
3950 struct fw_acl_vlan_cmd {
3951         __be32 op_to_vfn;
3952         __be32 en_to_len16;
3953         __u8   nvlan;
3954         __u8   dropnovlan_fm;
3955         __u8   r3_lo[6];
3956         __be16 vlanid[16];
3957 };
3958
3959 #define S_FW_ACL_VLAN_CMD_PFN           8
3960 #define M_FW_ACL_VLAN_CMD_PFN           0x7
3961 #define V_FW_ACL_VLAN_CMD_PFN(x)        ((x) << S_FW_ACL_VLAN_CMD_PFN)
3962 #define G_FW_ACL_VLAN_CMD_PFN(x)        \
3963     (((x) >> S_FW_ACL_VLAN_CMD_PFN) & M_FW_ACL_VLAN_CMD_PFN)
3964
3965 #define S_FW_ACL_VLAN_CMD_VFN           0
3966 #define M_FW_ACL_VLAN_CMD_VFN           0xff
3967 #define V_FW_ACL_VLAN_CMD_VFN(x)        ((x) << S_FW_ACL_VLAN_CMD_VFN)
3968 #define G_FW_ACL_VLAN_CMD_VFN(x)        \
3969     (((x) >> S_FW_ACL_VLAN_CMD_VFN) & M_FW_ACL_VLAN_CMD_VFN)
3970
3971 #define S_FW_ACL_VLAN_CMD_EN    31
3972 #define M_FW_ACL_VLAN_CMD_EN    0x1
3973 #define V_FW_ACL_VLAN_CMD_EN(x) ((x) << S_FW_ACL_VLAN_CMD_EN)
3974 #define G_FW_ACL_VLAN_CMD_EN(x) \
3975     (((x) >> S_FW_ACL_VLAN_CMD_EN) & M_FW_ACL_VLAN_CMD_EN)
3976 #define F_FW_ACL_VLAN_CMD_EN    V_FW_ACL_VLAN_CMD_EN(1U)
3977
3978 #define S_FW_ACL_VLAN_CMD_DROPNOVLAN    7
3979 #define M_FW_ACL_VLAN_CMD_DROPNOVLAN    0x1
3980 #define V_FW_ACL_VLAN_CMD_DROPNOVLAN(x) ((x) << S_FW_ACL_VLAN_CMD_DROPNOVLAN)
3981 #define G_FW_ACL_VLAN_CMD_DROPNOVLAN(x) \
3982     (((x) >> S_FW_ACL_VLAN_CMD_DROPNOVLAN) & M_FW_ACL_VLAN_CMD_DROPNOVLAN)
3983 #define F_FW_ACL_VLAN_CMD_DROPNOVLAN    V_FW_ACL_VLAN_CMD_DROPNOVLAN(1U)
3984
3985 #define S_FW_ACL_VLAN_CMD_FM    6
3986 #define M_FW_ACL_VLAN_CMD_FM    0x1
3987 #define V_FW_ACL_VLAN_CMD_FM(x) ((x) << S_FW_ACL_VLAN_CMD_FM)
3988 #define G_FW_ACL_VLAN_CMD_FM(x) \
3989     (((x) >> S_FW_ACL_VLAN_CMD_FM) & M_FW_ACL_VLAN_CMD_FM)
3990 #define F_FW_ACL_VLAN_CMD_FM    V_FW_ACL_VLAN_CMD_FM(1U)
3991
3992 /* port capabilities bitmap */
3993 enum fw_port_cap {
3994         FW_PORT_CAP_SPEED_100M          = 0x0001,
3995         FW_PORT_CAP_SPEED_1G            = 0x0002,
3996         FW_PORT_CAP_SPEED_2_5G          = 0x0004,
3997         FW_PORT_CAP_SPEED_10G           = 0x0008,
3998         FW_PORT_CAP_SPEED_40G           = 0x0010,
3999         FW_PORT_CAP_SPEED_100G          = 0x0020,
4000         FW_PORT_CAP_FC_RX               = 0x0040,
4001         FW_PORT_CAP_FC_TX               = 0x0080,
4002         FW_PORT_CAP_ANEG                = 0x0100,
4003         FW_PORT_CAP_MDIX                = 0x0200,
4004         FW_PORT_CAP_MDIAUTO             = 0x0400,
4005         FW_PORT_CAP_FEC                 = 0x0800,
4006         FW_PORT_CAP_TECHKR              = 0x1000,
4007         FW_PORT_CAP_TECHKX4             = 0x2000,
4008 };
4009
4010 #define S_FW_PORT_AUXLINFO_MDI          3
4011 #define M_FW_PORT_AUXLINFO_MDI          0x3
4012 #define V_FW_PORT_AUXLINFO_MDI(x)       ((x) << S_FW_PORT_AUXLINFO_MDI)
4013 #define G_FW_PORT_AUXLINFO_MDI(x) \
4014     (((x) >> S_FW_PORT_AUXLINFO_MDI) & M_FW_PORT_AUXLINFO_MDI)
4015
4016 #define S_FW_PORT_AUXLINFO_KX4          2
4017 #define M_FW_PORT_AUXLINFO_KX4          0x1
4018 #define V_FW_PORT_AUXLINFO_KX4(x)       ((x) << S_FW_PORT_AUXLINFO_KX4)
4019 #define G_FW_PORT_AUXLINFO_KX4(x) \
4020     (((x) >> S_FW_PORT_AUXLINFO_KX4) & M_FW_PORT_AUXLINFO_KX4)
4021 #define F_FW_PORT_AUXLINFO_KX4          V_FW_PORT_AUXLINFO_KX4(1U)
4022
4023 #define S_FW_PORT_AUXLINFO_KR           1
4024 #define M_FW_PORT_AUXLINFO_KR           0x1
4025 #define V_FW_PORT_AUXLINFO_KR(x)        ((x) << S_FW_PORT_AUXLINFO_KR)
4026 #define G_FW_PORT_AUXLINFO_KR(x) \
4027     (((x) >> S_FW_PORT_AUXLINFO_KR) & M_FW_PORT_AUXLINFO_KR)
4028 #define F_FW_PORT_AUXLINFO_KR           V_FW_PORT_AUXLINFO_KR(1U)
4029
4030 #define S_FW_PORT_AUXLINFO_FEC          0
4031 #define M_FW_PORT_AUXLINFO_FEC          0x1
4032 #define V_FW_PORT_AUXLINFO_FEC(x)       ((x) << S_FW_PORT_AUXLINFO_FEC)
4033 #define G_FW_PORT_AUXLINFO_FEC(x) \
4034     (((x) >> S_FW_PORT_AUXLINFO_FEC) & M_FW_PORT_AUXLINFO_FEC) 
4035 #define F_FW_PORT_AUXLINFO_FEC          V_FW_PORT_AUXLINFO_FEC(1U)
4036
4037 #define S_FW_PORT_RCAP_AUX      11
4038 #define M_FW_PORT_RCAP_AUX      0x7
4039 #define V_FW_PORT_RCAP_AUX(x)   ((x) << S_FW_PORT_RCAP_AUX)
4040 #define G_FW_PORT_RCAP_AUX(x) \
4041     (((x) >> S_FW_PORT_RCAP_AUX) & M_FW_PORT_RCAP_AUX)
4042
4043 #define S_FW_PORT_CAP_SPEED     0
4044 #define M_FW_PORT_CAP_SPEED     0x3f
4045 #define V_FW_PORT_CAP_SPEED(x)  ((x) << S_FW_PORT_CAP_SPEED)
4046 #define G_FW_PORT_CAP_SPEED(x) \
4047     (((x) >> S_FW_PORT_CAP_SPEED) & M_FW_PORT_CAP_SPEED)
4048
4049 #define S_FW_PORT_CAP_FC        6
4050 #define M_FW_PORT_CAP_FC        0x3
4051 #define V_FW_PORT_CAP_FC(x)     ((x) << S_FW_PORT_CAP_FC)
4052 #define G_FW_PORT_CAP_FC(x) \
4053     (((x) >> S_FW_PORT_CAP_FC) & M_FW_PORT_CAP_FC)
4054
4055 #define S_FW_PORT_CAP_ANEG      8
4056 #define M_FW_PORT_CAP_ANEG      0x1
4057 #define V_FW_PORT_CAP_ANEG(x)   ((x) << S_FW_PORT_CAP_ANEG)
4058 #define G_FW_PORT_CAP_ANEG(x) \
4059     (((x) >> S_FW_PORT_CAP_ANEG) & M_FW_PORT_CAP_ANEG)
4060
4061 enum fw_port_mdi {
4062         FW_PORT_CAP_MDI_UNCHANGED,
4063         FW_PORT_CAP_MDI_AUTO,
4064         FW_PORT_CAP_MDI_F_STRAIGHT,
4065         FW_PORT_CAP_MDI_F_CROSSOVER
4066 };
4067
4068 #define S_FW_PORT_CAP_MDI 9
4069 #define M_FW_PORT_CAP_MDI 3
4070 #define V_FW_PORT_CAP_MDI(x) ((x) << S_FW_PORT_CAP_MDI)
4071 #define G_FW_PORT_CAP_MDI(x) (((x) >> S_FW_PORT_CAP_MDI) & M_FW_PORT_CAP_MDI)
4072
4073 enum fw_port_action {
4074         FW_PORT_ACTION_L1_CFG           = 0x0001,
4075         FW_PORT_ACTION_L2_CFG           = 0x0002,
4076         FW_PORT_ACTION_GET_PORT_INFO    = 0x0003,
4077         FW_PORT_ACTION_L2_PPP_CFG       = 0x0004,
4078         FW_PORT_ACTION_L2_DCB_CFG       = 0x0005,
4079         FW_PORT_ACTION_LOW_PWR_TO_NORMAL = 0x0010,
4080         FW_PORT_ACTION_L1_LOW_PWR_EN    = 0x0011,
4081         FW_PORT_ACTION_L2_WOL_MODE_EN   = 0x0012,
4082         FW_PORT_ACTION_LPBK_TO_NORMAL   = 0x0020,
4083         FW_PORT_ACTION_L1_SS_LPBK_ASIC  = 0x0021,
4084         FW_PORT_ACTION_L1_WS_LPBK_ASIC  = 0x0023,
4085         FW_PORT_ACTION_L1_EXT_LPBK      = 0x0026,
4086         FW_PORT_ACTION_PHY_RESET        = 0x0040,
4087         FW_PORT_ACTION_PMA_RESET        = 0x0041,
4088         FW_PORT_ACTION_PCS_RESET        = 0x0042,
4089         FW_PORT_ACTION_PHYXS_RESET      = 0x0043,
4090         FW_PORT_ACTION_DTEXS_REEST      = 0x0044,
4091         FW_PORT_ACTION_AN_RESET         = 0x0045
4092 };
4093
4094 enum fw_port_l2cfg_ctlbf {
4095         FW_PORT_L2_CTLBF_OVLAN0 = 0x01,
4096         FW_PORT_L2_CTLBF_OVLAN1 = 0x02,
4097         FW_PORT_L2_CTLBF_OVLAN2 = 0x04,
4098         FW_PORT_L2_CTLBF_OVLAN3 = 0x08,
4099         FW_PORT_L2_CTLBF_IVLAN  = 0x10,
4100         FW_PORT_L2_CTLBF_TXIPG  = 0x20,
4101         FW_PORT_L2_CTLBF_MTU    = 0x40
4102 };
4103
4104 enum fw_port_dcb_cfg {
4105         FW_PORT_DCB_CFG_PG      = 0x01,
4106         FW_PORT_DCB_CFG_PFC     = 0x02,
4107         FW_PORT_DCB_CFG_APPL    = 0x04
4108 };
4109
4110 enum fw_port_dcb_cfg_rc {
4111         FW_PORT_DCB_CFG_SUCCESS = 0x0,
4112         FW_PORT_DCB_CFG_ERROR   = 0x1
4113 };
4114
4115 enum fw_port_dcb_type {
4116         FW_PORT_DCB_TYPE_PGID           = 0x00,
4117         FW_PORT_DCB_TYPE_PGRATE         = 0x01,
4118         FW_PORT_DCB_TYPE_PRIORATE       = 0x02,
4119         FW_PORT_DCB_TYPE_PFC            = 0x03,
4120         FW_PORT_DCB_TYPE_APP_ID         = 0x04,
4121 };
4122
4123 struct fw_port_cmd {
4124         __be32 op_to_portid;
4125         __be32 action_to_len16;
4126         union fw_port {
4127                 struct fw_port_l1cfg {
4128                         __be32 rcap;
4129                         __be32 r;
4130                 } l1cfg;
4131                 struct fw_port_l2cfg {
4132                         __u8   ctlbf;
4133                         __u8   ovlan3_to_ivlan0;
4134                         __be16 ivlantype;
4135                         __be16 txipg_force_pinfo;
4136                         __be16 mtu;
4137                         __be16 ovlan0mask;
4138                         __be16 ovlan0type;
4139                         __be16 ovlan1mask;
4140                         __be16 ovlan1type;
4141                         __be16 ovlan2mask;
4142                         __be16 ovlan2type;
4143                         __be16 ovlan3mask;
4144                         __be16 ovlan3type;
4145                 } l2cfg;
4146                 struct fw_port_info {
4147                         __be32 lstatus_to_modtype;
4148                         __be16 pcap;
4149                         __be16 acap;
4150                         __be16 mtu;
4151                         __u8   cbllen;
4152                         __u8   auxlinfo;
4153                         __be32 r8;
4154                         __be64 r9;
4155                 } info;
4156                 union fw_port_dcb {
4157                         struct fw_port_dcb_pgid {
4158                                 __u8   type;
4159                                 __u8   apply_pkd;
4160                                 __u8   r10_lo[2];
4161                                 __be32 pgid;
4162                                 __be64 r11;
4163                         } pgid;
4164                         struct fw_port_dcb_pgrate {
4165                                 __u8   type;
4166                                 __u8   apply_pkd;
4167                                 __u8   r10_lo[6];
4168                                 __u8   pgrate[8];
4169                         } pgrate;
4170                         struct fw_port_dcb_priorate {
4171                                 __u8   type;
4172                                 __u8   apply_pkd;
4173                                 __u8   r10_lo[6];
4174                                 __u8   strict_priorate[8];
4175                         } priorate;
4176                         struct fw_port_dcb_pfc {
4177                                 __u8   type;
4178                                 __u8   pfcen;
4179                                 __be16 r10[3];
4180                                 __be64 r11;
4181                         } pfc;
4182                         struct fw_port_app_priority {
4183                                 __u8   type;
4184                                 __u8   r10_lo[3];
4185                                 __u8   prio;
4186                                 __u8   sel;
4187                                 __be16 protocolid;
4188                                 __u8   r12[8];
4189                         } app_priority;
4190                 } dcb;
4191         } u;
4192 };
4193
4194 #define S_FW_PORT_CMD_READ      22
4195 #define M_FW_PORT_CMD_READ      0x1
4196 #define V_FW_PORT_CMD_READ(x)   ((x) << S_FW_PORT_CMD_READ)
4197 #define G_FW_PORT_CMD_READ(x)   \
4198     (((x) >> S_FW_PORT_CMD_READ) & M_FW_PORT_CMD_READ)
4199 #define F_FW_PORT_CMD_READ      V_FW_PORT_CMD_READ(1U)
4200
4201 #define S_FW_PORT_CMD_PORTID    0
4202 #define M_FW_PORT_CMD_PORTID    0xf
4203 #define V_FW_PORT_CMD_PORTID(x) ((x) << S_FW_PORT_CMD_PORTID)
4204 #define G_FW_PORT_CMD_PORTID(x) \
4205     (((x) >> S_FW_PORT_CMD_PORTID) & M_FW_PORT_CMD_PORTID)
4206
4207 #define S_FW_PORT_CMD_ACTION    16
4208 #define M_FW_PORT_CMD_ACTION    0xffff
4209 #define V_FW_PORT_CMD_ACTION(x) ((x) << S_FW_PORT_CMD_ACTION)
4210 #define G_FW_PORT_CMD_ACTION(x) \
4211     (((x) >> S_FW_PORT_CMD_ACTION) & M_FW_PORT_CMD_ACTION)
4212
4213 #define S_FW_PORT_CMD_OVLAN3    7
4214 #define M_FW_PORT_CMD_OVLAN3    0x1
4215 #define V_FW_PORT_CMD_OVLAN3(x) ((x) << S_FW_PORT_CMD_OVLAN3)
4216 #define G_FW_PORT_CMD_OVLAN3(x) \
4217     (((x) >> S_FW_PORT_CMD_OVLAN3) & M_FW_PORT_CMD_OVLAN3)
4218 #define F_FW_PORT_CMD_OVLAN3    V_FW_PORT_CMD_OVLAN3(1U)
4219
4220 #define S_FW_PORT_CMD_OVLAN2    6
4221 #define M_FW_PORT_CMD_OVLAN2    0x1
4222 #define V_FW_PORT_CMD_OVLAN2(x) ((x) << S_FW_PORT_CMD_OVLAN2)
4223 #define G_FW_PORT_CMD_OVLAN2(x) \
4224     (((x) >> S_FW_PORT_CMD_OVLAN2) & M_FW_PORT_CMD_OVLAN2)
4225 #define F_FW_PORT_CMD_OVLAN2    V_FW_PORT_CMD_OVLAN2(1U)
4226
4227 #define S_FW_PORT_CMD_OVLAN1    5
4228 #define M_FW_PORT_CMD_OVLAN1    0x1
4229 #define V_FW_PORT_CMD_OVLAN1(x) ((x) << S_FW_PORT_CMD_OVLAN1)
4230 #define G_FW_PORT_CMD_OVLAN1(x) \
4231     (((x) >> S_FW_PORT_CMD_OVLAN1) & M_FW_PORT_CMD_OVLAN1)
4232 #define F_FW_PORT_CMD_OVLAN1    V_FW_PORT_CMD_OVLAN1(1U)
4233
4234 #define S_FW_PORT_CMD_OVLAN0    4
4235 #define M_FW_PORT_CMD_OVLAN0    0x1
4236 #define V_FW_PORT_CMD_OVLAN0(x) ((x) << S_FW_PORT_CMD_OVLAN0)
4237 #define G_FW_PORT_CMD_OVLAN0(x) \
4238     (((x) >> S_FW_PORT_CMD_OVLAN0) & M_FW_PORT_CMD_OVLAN0)
4239 #define F_FW_PORT_CMD_OVLAN0    V_FW_PORT_CMD_OVLAN0(1U)
4240
4241 #define S_FW_PORT_CMD_IVLAN0    3
4242 #define M_FW_PORT_CMD_IVLAN0    0x1
4243 #define V_FW_PORT_CMD_IVLAN0(x) ((x) << S_FW_PORT_CMD_IVLAN0)
4244 #define G_FW_PORT_CMD_IVLAN0(x) \
4245     (((x) >> S_FW_PORT_CMD_IVLAN0) & M_FW_PORT_CMD_IVLAN0)
4246 #define F_FW_PORT_CMD_IVLAN0    V_FW_PORT_CMD_IVLAN0(1U)
4247
4248 #define S_FW_PORT_CMD_TXIPG     3
4249 #define M_FW_PORT_CMD_TXIPG     0x1fff
4250 #define V_FW_PORT_CMD_TXIPG(x)  ((x) << S_FW_PORT_CMD_TXIPG)
4251 #define G_FW_PORT_CMD_TXIPG(x)  \
4252     (((x) >> S_FW_PORT_CMD_TXIPG) & M_FW_PORT_CMD_TXIPG)
4253
4254 #define S_FW_PORT_CMD_FORCE_PINFO       0
4255 #define M_FW_PORT_CMD_FORCE_PINFO       0x1
4256 #define V_FW_PORT_CMD_FORCE_PINFO(x)    ((x) << S_FW_PORT_CMD_FORCE_PINFO)
4257 #define G_FW_PORT_CMD_FORCE_PINFO(x)    \
4258     (((x) >> S_FW_PORT_CMD_FORCE_PINFO) & M_FW_PORT_CMD_FORCE_PINFO)
4259 #define F_FW_PORT_CMD_FORCE_PINFO       V_FW_PORT_CMD_FORCE_PINFO(1U)
4260
4261 #define S_FW_PORT_CMD_LSTATUS           31
4262 #define M_FW_PORT_CMD_LSTATUS           0x1
4263 #define V_FW_PORT_CMD_LSTATUS(x)        ((x) << S_FW_PORT_CMD_LSTATUS)
4264 #define G_FW_PORT_CMD_LSTATUS(x)        \
4265     (((x) >> S_FW_PORT_CMD_LSTATUS) & M_FW_PORT_CMD_LSTATUS)
4266 #define F_FW_PORT_CMD_LSTATUS   V_FW_PORT_CMD_LSTATUS(1U)
4267
4268 #define S_FW_PORT_CMD_LSPEED    24
4269 #define M_FW_PORT_CMD_LSPEED    0x3f
4270 #define V_FW_PORT_CMD_LSPEED(x) ((x) << S_FW_PORT_CMD_LSPEED)
4271 #define G_FW_PORT_CMD_LSPEED(x) \
4272     (((x) >> S_FW_PORT_CMD_LSPEED) & M_FW_PORT_CMD_LSPEED)
4273
4274 #define S_FW_PORT_CMD_TXPAUSE           23
4275 #define M_FW_PORT_CMD_TXPAUSE           0x1
4276 #define V_FW_PORT_CMD_TXPAUSE(x)        ((x) << S_FW_PORT_CMD_TXPAUSE)
4277 #define G_FW_PORT_CMD_TXPAUSE(x)        \
4278     (((x) >> S_FW_PORT_CMD_TXPAUSE) & M_FW_PORT_CMD_TXPAUSE)
4279 #define F_FW_PORT_CMD_TXPAUSE   V_FW_PORT_CMD_TXPAUSE(1U)
4280
4281 #define S_FW_PORT_CMD_RXPAUSE           22
4282 #define M_FW_PORT_CMD_RXPAUSE           0x1
4283 #define V_FW_PORT_CMD_RXPAUSE(x)        ((x) << S_FW_PORT_CMD_RXPAUSE)
4284 #define G_FW_PORT_CMD_RXPAUSE(x)        \
4285     (((x) >> S_FW_PORT_CMD_RXPAUSE) & M_FW_PORT_CMD_RXPAUSE)
4286 #define F_FW_PORT_CMD_RXPAUSE   V_FW_PORT_CMD_RXPAUSE(1U)
4287
4288 #define S_FW_PORT_CMD_MDIOCAP           21
4289 #define M_FW_PORT_CMD_MDIOCAP           0x1
4290 #define V_FW_PORT_CMD_MDIOCAP(x)        ((x) << S_FW_PORT_CMD_MDIOCAP)
4291 #define G_FW_PORT_CMD_MDIOCAP(x)        \
4292     (((x) >> S_FW_PORT_CMD_MDIOCAP) & M_FW_PORT_CMD_MDIOCAP)
4293 #define F_FW_PORT_CMD_MDIOCAP   V_FW_PORT_CMD_MDIOCAP(1U)
4294
4295 #define S_FW_PORT_CMD_MDIOADDR          16
4296 #define M_FW_PORT_CMD_MDIOADDR          0x1f
4297 #define V_FW_PORT_CMD_MDIOADDR(x)       ((x) << S_FW_PORT_CMD_MDIOADDR)
4298 #define G_FW_PORT_CMD_MDIOADDR(x)       \
4299     (((x) >> S_FW_PORT_CMD_MDIOADDR) & M_FW_PORT_CMD_MDIOADDR)
4300
4301 #define S_FW_PORT_CMD_LPTXPAUSE         15
4302 #define M_FW_PORT_CMD_LPTXPAUSE         0x1
4303 #define V_FW_PORT_CMD_LPTXPAUSE(x)      ((x) << S_FW_PORT_CMD_LPTXPAUSE)
4304 #define G_FW_PORT_CMD_LPTXPAUSE(x)      \
4305     (((x) >> S_FW_PORT_CMD_LPTXPAUSE) & M_FW_PORT_CMD_LPTXPAUSE)
4306 #define F_FW_PORT_CMD_LPTXPAUSE V_FW_PORT_CMD_LPTXPAUSE(1U)
4307
4308 #define S_FW_PORT_CMD_LPRXPAUSE         14
4309 #define M_FW_PORT_CMD_LPRXPAUSE         0x1
4310 #define V_FW_PORT_CMD_LPRXPAUSE(x)      ((x) << S_FW_PORT_CMD_LPRXPAUSE)
4311 #define G_FW_PORT_CMD_LPRXPAUSE(x)      \
4312     (((x) >> S_FW_PORT_CMD_LPRXPAUSE) & M_FW_PORT_CMD_LPRXPAUSE)
4313 #define F_FW_PORT_CMD_LPRXPAUSE V_FW_PORT_CMD_LPRXPAUSE(1U)
4314
4315 #define S_FW_PORT_CMD_PTYPE     8
4316 #define M_FW_PORT_CMD_PTYPE     0x1f
4317 #define V_FW_PORT_CMD_PTYPE(x)  ((x) << S_FW_PORT_CMD_PTYPE)
4318 #define G_FW_PORT_CMD_PTYPE(x)  \
4319     (((x) >> S_FW_PORT_CMD_PTYPE) & M_FW_PORT_CMD_PTYPE)
4320
4321 #define S_FW_PORT_CMD_LINKDNRC          5
4322 #define M_FW_PORT_CMD_LINKDNRC          0x7
4323 #define V_FW_PORT_CMD_LINKDNRC(x)       ((x) << S_FW_PORT_CMD_LINKDNRC)
4324 #define G_FW_PORT_CMD_LINKDNRC(x)       \
4325     (((x) >> S_FW_PORT_CMD_LINKDNRC) & M_FW_PORT_CMD_LINKDNRC)
4326
4327 #define S_FW_PORT_CMD_MODTYPE           0
4328 #define M_FW_PORT_CMD_MODTYPE           0x1f
4329 #define V_FW_PORT_CMD_MODTYPE(x)        ((x) << S_FW_PORT_CMD_MODTYPE)
4330 #define G_FW_PORT_CMD_MODTYPE(x)        \
4331     (((x) >> S_FW_PORT_CMD_MODTYPE) & M_FW_PORT_CMD_MODTYPE)
4332
4333 #define S_FW_PORT_CMD_APPLY     7
4334 #define M_FW_PORT_CMD_APPLY     0x1
4335 #define V_FW_PORT_CMD_APPLY(x)  ((x) << S_FW_PORT_CMD_APPLY)
4336 #define G_FW_PORT_CMD_APPLY(x)  \
4337     (((x) >> S_FW_PORT_CMD_APPLY) & M_FW_PORT_CMD_APPLY)
4338 #define F_FW_PORT_CMD_APPLY     V_FW_PORT_CMD_APPLY(1U)
4339
4340 #define S_FW_PORT_CMD_APPLY     7
4341 #define M_FW_PORT_CMD_APPLY     0x1
4342 #define V_FW_PORT_CMD_APPLY(x)  ((x) << S_FW_PORT_CMD_APPLY)
4343 #define G_FW_PORT_CMD_APPLY(x)  \
4344     (((x) >> S_FW_PORT_CMD_APPLY) & M_FW_PORT_CMD_APPLY)
4345 #define F_FW_PORT_CMD_APPLY     V_FW_PORT_CMD_APPLY(1U)
4346
4347 #define S_FW_PORT_CMD_APPLY     7
4348 #define M_FW_PORT_CMD_APPLY     0x1
4349 #define V_FW_PORT_CMD_APPLY(x)  ((x) << S_FW_PORT_CMD_APPLY)
4350 #define G_FW_PORT_CMD_APPLY(x)  \
4351     (((x) >> S_FW_PORT_CMD_APPLY) & M_FW_PORT_CMD_APPLY)
4352 #define F_FW_PORT_CMD_APPLY     V_FW_PORT_CMD_APPLY(1U)
4353
4354 /*
4355  *      These are configured into the VPD and hence tools that generate
4356  *      VPD may use this enumeration.
4357  *      extPHY  #lanes  T4_I2C  extI2C  BP_Eq   BP_ANEG Speed
4358  */
4359 enum fw_port_type {
4360         FW_PORT_TYPE_FIBER_XFI  =  0,   /* Y, 1, N, Y, N, N, 10G */
4361         FW_PORT_TYPE_FIBER_XAUI =  1,   /* Y, 4, N, Y, N, N, 10G */
4362         FW_PORT_TYPE_BT_SGMII   =  2,   /* Y, 1, No, No, No, No, 1G/100M */
4363         FW_PORT_TYPE_BT_XFI     =  3,   /* Y, 1, No, No, No, No, 10G */
4364         FW_PORT_TYPE_BT_XAUI    =  4,   /* Y, 4, No, No, No, No, 10G/1G/100M? */
4365         FW_PORT_TYPE_KX4        =  5,   /* No, 4, No, No, Yes, Yes, 10G */
4366         FW_PORT_TYPE_CX4        =  6,   /* No, 4, No, No, No, No, 10G */
4367         FW_PORT_TYPE_KX         =  7,   /* No, 1, No, No, Yes, No, 1G */
4368         FW_PORT_TYPE_KR         =  8,   /* No, 1, No, No, Yes, Yes, 10G */
4369         FW_PORT_TYPE_SFP        =  9,   /* No, 1, Yes, No, No, No, 10G */
4370         FW_PORT_TYPE_BP_AP      = 10,   /* No, 1, No, No, Yes, Yes, 10G, BP ANGE */
4371         FW_PORT_TYPE_BP4_AP     = 11,   /* No, 4, No, No, Yes, Yes, 10G, BP ANGE */
4372
4373         FW_PORT_TYPE_NONE = M_FW_PORT_CMD_PTYPE
4374 };
4375
4376 /* These are read from module's EEPROM and determined once the
4377    module is inserted. */
4378 enum fw_port_module_type {
4379         FW_PORT_MOD_TYPE_NA             = 0x0,
4380         FW_PORT_MOD_TYPE_LR             = 0x1,
4381         FW_PORT_MOD_TYPE_SR             = 0x2,
4382         FW_PORT_MOD_TYPE_ER             = 0x3,
4383         FW_PORT_MOD_TYPE_TWINAX_PASSIVE = 0x4,
4384         FW_PORT_MOD_TYPE_TWINAX_ACTIVE  = 0x5,
4385         FW_PORT_MOD_TYPE_LRM            = 0x6,
4386         FW_PORT_MOD_TYPE_UNKNOWN        = M_FW_PORT_CMD_MODTYPE - 2,
4387         FW_PORT_MOD_TYPE_NOTSUPPORTED   = M_FW_PORT_CMD_MODTYPE - 1,
4388         FW_PORT_MOD_TYPE_NONE           = M_FW_PORT_CMD_MODTYPE
4389 };
4390
4391 /* used by FW and tools may use this to generate VPD */
4392 enum fw_port_mod_sub_type {
4393         FW_PORT_MOD_SUB_TYPE_NA,
4394         FW_PORT_MOD_SUB_TYPE_MV88E114X=0x1,
4395         FW_PORT_MOD_SUB_TYPE_BT_VSC8634=0x8,
4396
4397         /*
4398          * The following will never been in the VPD.  They are TWINAX cable
4399          * lengths decoded from SFP+ module i2c PROMs.  These should almost
4400          * certainly go somewhere else ...
4401          */
4402         FW_PORT_MOD_SUB_TYPE_TWINAX_1=0x9,
4403         FW_PORT_MOD_SUB_TYPE_TWINAX_3=0xA,
4404         FW_PORT_MOD_SUB_TYPE_TWINAX_5=0xB,
4405         FW_PORT_MOD_SUB_TYPE_TWINAX_7=0xC,
4406 };
4407
4408 /* link down reason codes (3b) */
4409 enum fw_port_link_dn_rc {
4410         FW_PORT_LINK_DN_RC_NONE,
4411         FW_PORT_LINK_DN_RC_REMFLT,
4412         FW_PORT_LINK_DN_ANEG_F,
4413         FW_PORT_LINK_DN_MS_RES_F,
4414         FW_PORT_LINK_DN_UNKNOWN
4415 };
4416
4417 /* port stats */
4418 #define FW_NUM_PORT_STATS 50
4419 #define FW_NUM_PORT_TX_STATS 23
4420 #define FW_NUM_PORT_RX_STATS 27
4421
4422 enum fw_port_stats_tx_index {
4423         FW_STAT_TX_PORT_BYTES_IX,
4424         FW_STAT_TX_PORT_FRAMES_IX,
4425         FW_STAT_TX_PORT_BCAST_IX,
4426         FW_STAT_TX_PORT_MCAST_IX,
4427         FW_STAT_TX_PORT_UCAST_IX,
4428         FW_STAT_TX_PORT_ERROR_IX,
4429         FW_STAT_TX_PORT_64B_IX,
4430         FW_STAT_TX_PORT_65B_127B_IX,
4431         FW_STAT_TX_PORT_128B_255B_IX,
4432         FW_STAT_TX_PORT_256B_511B_IX,
4433         FW_STAT_TX_PORT_512B_1023B_IX,
4434         FW_STAT_TX_PORT_1024B_1518B_IX,
4435         FW_STAT_TX_PORT_1519B_MAX_IX,
4436         FW_STAT_TX_PORT_DROP_IX,
4437         FW_STAT_TX_PORT_PAUSE_IX,
4438         FW_STAT_TX_PORT_PPP0_IX,
4439         FW_STAT_TX_PORT_PPP1_IX,
4440         FW_STAT_TX_PORT_PPP2_IX,
4441         FW_STAT_TX_PORT_PPP3_IX,
4442         FW_STAT_TX_PORT_PPP4_IX,
4443         FW_STAT_TX_PORT_PPP5_IX,
4444         FW_STAT_TX_PORT_PPP6_IX,
4445         FW_STAT_TX_PORT_PPP7_IX
4446 };
4447
4448 enum fw_port_stat_rx_index {
4449         FW_STAT_RX_PORT_BYTES_IX,
4450         FW_STAT_RX_PORT_FRAMES_IX,
4451         FW_STAT_RX_PORT_BCAST_IX,
4452         FW_STAT_RX_PORT_MCAST_IX,
4453         FW_STAT_RX_PORT_UCAST_IX,
4454         FW_STAT_RX_PORT_MTU_ERROR_IX,
4455         FW_STAT_RX_PORT_MTU_CRC_ERROR_IX,
4456         FW_STAT_RX_PORT_CRC_ERROR_IX,
4457         FW_STAT_RX_PORT_LEN_ERROR_IX,
4458         FW_STAT_RX_PORT_SYM_ERROR_IX,
4459         FW_STAT_RX_PORT_64B_IX,
4460         FW_STAT_RX_PORT_65B_127B_IX,
4461         FW_STAT_RX_PORT_128B_255B_IX,
4462         FW_STAT_RX_PORT_256B_511B_IX,
4463         FW_STAT_RX_PORT_512B_1023B_IX,
4464         FW_STAT_RX_PORT_1024B_1518B_IX,
4465         FW_STAT_RX_PORT_1519B_MAX_IX,
4466         FW_STAT_RX_PORT_PAUSE_IX,
4467         FW_STAT_RX_PORT_PPP0_IX,
4468         FW_STAT_RX_PORT_PPP1_IX,
4469         FW_STAT_RX_PORT_PPP2_IX,
4470         FW_STAT_RX_PORT_PPP3_IX,
4471         FW_STAT_RX_PORT_PPP4_IX,
4472         FW_STAT_RX_PORT_PPP5_IX,
4473         FW_STAT_RX_PORT_PPP6_IX,
4474         FW_STAT_RX_PORT_PPP7_IX,
4475         FW_STAT_RX_PORT_LESS_64B_IX
4476 };
4477
4478 struct fw_port_stats_cmd {
4479         __be32 op_to_portid;
4480         __be32 retval_len16;
4481         union fw_port_stats {
4482                 struct fw_port_stats_ctl {
4483                         __u8   nstats_bg_bm;
4484                         __u8   tx_ix;
4485                         __be16 r6;
4486                         __be32 r7;
4487                         __be64 stat0;
4488                         __be64 stat1;
4489                         __be64 stat2;
4490                         __be64 stat3;
4491                         __be64 stat4;
4492                         __be64 stat5;
4493                 } ctl;
4494                 struct fw_port_stats_all {
4495                         __be64 tx_bytes;
4496                         __be64 tx_frames;
4497                         __be64 tx_bcast;
4498                         __be64 tx_mcast;
4499                         __be64 tx_ucast;
4500                         __be64 tx_error;
4501                         __be64 tx_64b;
4502                         __be64 tx_65b_127b;
4503                         __be64 tx_128b_255b;
4504                         __be64 tx_256b_511b;
4505                         __be64 tx_512b_1023b;
4506                         __be64 tx_1024b_1518b;
4507                         __be64 tx_1519b_max;
4508                         __be64 tx_drop;
4509                         __be64 tx_pause;
4510                         __be64 tx_ppp0;
4511                         __be64 tx_ppp1;
4512                         __be64 tx_ppp2;
4513                         __be64 tx_ppp3;
4514                         __be64 tx_ppp4;
4515                         __be64 tx_ppp5;
4516                         __be64 tx_ppp6;
4517                         __be64 tx_ppp7;
4518                         __be64 rx_bytes;
4519                         __be64 rx_frames;
4520                         __be64 rx_bcast;
4521                         __be64 rx_mcast;
4522                         __be64 rx_ucast;
4523                         __be64 rx_mtu_error;
4524                         __be64 rx_mtu_crc_error;
4525                         __be64 rx_crc_error;
4526                         __be64 rx_len_error;
4527                         __be64 rx_sym_error;
4528                         __be64 rx_64b;
4529                         __be64 rx_65b_127b;
4530                         __be64 rx_128b_255b;
4531                         __be64 rx_256b_511b;
4532                         __be64 rx_512b_1023b;
4533                         __be64 rx_1024b_1518b;
4534                         __be64 rx_1519b_max;
4535                         __be64 rx_pause;
4536                         __be64 rx_ppp0;
4537                         __be64 rx_ppp1;
4538                         __be64 rx_ppp2;
4539                         __be64 rx_ppp3;
4540                         __be64 rx_ppp4;
4541                         __be64 rx_ppp5;
4542                         __be64 rx_ppp6;
4543                         __be64 rx_ppp7;
4544                         __be64 rx_less_64b;
4545                         __be64 rx_bg_drop;
4546                         __be64 rx_bg_trunc;
4547                 } all;
4548         } u;
4549 };
4550
4551 #define S_FW_PORT_STATS_CMD_NSTATS      4
4552 #define M_FW_PORT_STATS_CMD_NSTATS      0x7
4553 #define V_FW_PORT_STATS_CMD_NSTATS(x)   ((x) << S_FW_PORT_STATS_CMD_NSTATS)
4554 #define G_FW_PORT_STATS_CMD_NSTATS(x)   \
4555     (((x) >> S_FW_PORT_STATS_CMD_NSTATS) & M_FW_PORT_STATS_CMD_NSTATS)
4556
4557 #define S_FW_PORT_STATS_CMD_BG_BM       0
4558 #define M_FW_PORT_STATS_CMD_BG_BM       0x3
4559 #define V_FW_PORT_STATS_CMD_BG_BM(x)    ((x) << S_FW_PORT_STATS_CMD_BG_BM)
4560 #define G_FW_PORT_STATS_CMD_BG_BM(x)    \
4561     (((x) >> S_FW_PORT_STATS_CMD_BG_BM) & M_FW_PORT_STATS_CMD_BG_BM)
4562
4563 #define S_FW_PORT_STATS_CMD_TX          7
4564 #define M_FW_PORT_STATS_CMD_TX          0x1
4565 #define V_FW_PORT_STATS_CMD_TX(x)       ((x) << S_FW_PORT_STATS_CMD_TX)
4566 #define G_FW_PORT_STATS_CMD_TX(x)       \
4567     (((x) >> S_FW_PORT_STATS_CMD_TX) & M_FW_PORT_STATS_CMD_TX)
4568 #define F_FW_PORT_STATS_CMD_TX  V_FW_PORT_STATS_CMD_TX(1U)
4569
4570 #define S_FW_PORT_STATS_CMD_IX          0
4571 #define M_FW_PORT_STATS_CMD_IX          0x3f
4572 #define V_FW_PORT_STATS_CMD_IX(x)       ((x) << S_FW_PORT_STATS_CMD_IX)
4573 #define G_FW_PORT_STATS_CMD_IX(x)       \
4574     (((x) >> S_FW_PORT_STATS_CMD_IX) & M_FW_PORT_STATS_CMD_IX)
4575
4576 /* port loopback stats */
4577 #define FW_NUM_LB_STATS 14
4578 enum fw_port_lb_stats_index {
4579         FW_STAT_LB_PORT_BYTES_IX,
4580         FW_STAT_LB_PORT_FRAMES_IX,
4581         FW_STAT_LB_PORT_BCAST_IX,
4582         FW_STAT_LB_PORT_MCAST_IX,
4583         FW_STAT_LB_PORT_UCAST_IX,
4584         FW_STAT_LB_PORT_ERROR_IX,
4585         FW_STAT_LB_PORT_64B_IX,
4586         FW_STAT_LB_PORT_65B_127B_IX,
4587         FW_STAT_LB_PORT_128B_255B_IX,
4588         FW_STAT_LB_PORT_256B_511B_IX,
4589         FW_STAT_LB_PORT_512B_1023B_IX,
4590         FW_STAT_LB_PORT_1024B_1518B_IX,
4591         FW_STAT_LB_PORT_1519B_MAX_IX,
4592         FW_STAT_LB_PORT_DROP_FRAMES_IX
4593 };
4594
4595 struct fw_port_lb_stats_cmd {
4596         __be32 op_to_lbport;
4597         __be32 retval_len16;
4598         union fw_port_lb_stats {
4599                 struct fw_port_lb_stats_ctl {
4600                         __u8   nstats_bg_bm;
4601                         __u8   ix_pkd;
4602                         __be16 r6;
4603                         __be32 r7;
4604                         __be64 stat0;
4605                         __be64 stat1;
4606                         __be64 stat2;
4607                         __be64 stat3;
4608                         __be64 stat4;
4609                         __be64 stat5;
4610                 } ctl;
4611                 struct fw_port_lb_stats_all {
4612                         __be64 tx_bytes;
4613                         __be64 tx_frames;
4614                         __be64 tx_bcast;
4615                         __be64 tx_mcast;
4616                         __be64 tx_ucast;
4617                         __be64 tx_error;
4618                         __be64 tx_64b;
4619                         __be64 tx_65b_127b;
4620                         __be64 tx_128b_255b;
4621                         __be64 tx_256b_511b;
4622                         __be64 tx_512b_1023b;
4623                         __be64 tx_1024b_1518b;
4624                         __be64 tx_1519b_max;
4625                         __be64 rx_lb_drop;
4626                         __be64 rx_lb_trunc;
4627                 } all;
4628         } u;
4629 };
4630
4631 #define S_FW_PORT_LB_STATS_CMD_LBPORT           0
4632 #define M_FW_PORT_LB_STATS_CMD_LBPORT           0xf
4633 #define V_FW_PORT_LB_STATS_CMD_LBPORT(x)        \
4634     ((x) << S_FW_PORT_LB_STATS_CMD_LBPORT)
4635 #define G_FW_PORT_LB_STATS_CMD_LBPORT(x)        \
4636     (((x) >> S_FW_PORT_LB_STATS_CMD_LBPORT) & M_FW_PORT_LB_STATS_CMD_LBPORT)
4637
4638 #define S_FW_PORT_LB_STATS_CMD_NSTATS           4
4639 #define M_FW_PORT_LB_STATS_CMD_NSTATS           0x7
4640 #define V_FW_PORT_LB_STATS_CMD_NSTATS(x)        \
4641     ((x) << S_FW_PORT_LB_STATS_CMD_NSTATS)
4642 #define G_FW_PORT_LB_STATS_CMD_NSTATS(x)        \
4643     (((x) >> S_FW_PORT_LB_STATS_CMD_NSTATS) & M_FW_PORT_LB_STATS_CMD_NSTATS)
4644
4645 #define S_FW_PORT_LB_STATS_CMD_BG_BM    0
4646 #define M_FW_PORT_LB_STATS_CMD_BG_BM    0x3
4647 #define V_FW_PORT_LB_STATS_CMD_BG_BM(x) ((x) << S_FW_PORT_LB_STATS_CMD_BG_BM)
4648 #define G_FW_PORT_LB_STATS_CMD_BG_BM(x) \
4649     (((x) >> S_FW_PORT_LB_STATS_CMD_BG_BM) & M_FW_PORT_LB_STATS_CMD_BG_BM)
4650
4651 #define S_FW_PORT_LB_STATS_CMD_IX       0
4652 #define M_FW_PORT_LB_STATS_CMD_IX       0xf
4653 #define V_FW_PORT_LB_STATS_CMD_IX(x)    ((x) << S_FW_PORT_LB_STATS_CMD_IX)
4654 #define G_FW_PORT_LB_STATS_CMD_IX(x)    \
4655     (((x) >> S_FW_PORT_LB_STATS_CMD_IX) & M_FW_PORT_LB_STATS_CMD_IX)
4656
4657 /* Trace related defines */
4658 #define FW_TRACE_CAPTURE_MAX_SINGLE_FLT_MODE 10240
4659 #define FW_TRACE_CAPTURE_MAX_MULTI_FLT_MODE  2560
4660
4661 struct fw_port_trace_cmd {
4662         __be32 op_to_portid;
4663         __be32 retval_len16;
4664         __be16 traceen_to_pciech;
4665         __be16 qnum;
4666         __be32 r5;
4667 };
4668
4669 #define S_FW_PORT_TRACE_CMD_PORTID      0
4670 #define M_FW_PORT_TRACE_CMD_PORTID      0xf
4671 #define V_FW_PORT_TRACE_CMD_PORTID(x)   ((x) << S_FW_PORT_TRACE_CMD_PORTID)
4672 #define G_FW_PORT_TRACE_CMD_PORTID(x)   \
4673     (((x) >> S_FW_PORT_TRACE_CMD_PORTID) & M_FW_PORT_TRACE_CMD_PORTID)
4674
4675 #define S_FW_PORT_TRACE_CMD_TRACEEN     15
4676 #define M_FW_PORT_TRACE_CMD_TRACEEN     0x1
4677 #define V_FW_PORT_TRACE_CMD_TRACEEN(x)  ((x) << S_FW_PORT_TRACE_CMD_TRACEEN)
4678 #define G_FW_PORT_TRACE_CMD_TRACEEN(x)  \
4679     (((x) >> S_FW_PORT_TRACE_CMD_TRACEEN) & M_FW_PORT_TRACE_CMD_TRACEEN)
4680 #define F_FW_PORT_TRACE_CMD_TRACEEN     V_FW_PORT_TRACE_CMD_TRACEEN(1U)
4681
4682 #define S_FW_PORT_TRACE_CMD_FLTMODE     14
4683 #define M_FW_PORT_TRACE_CMD_FLTMODE     0x1
4684 #define V_FW_PORT_TRACE_CMD_FLTMODE(x)  ((x) << S_FW_PORT_TRACE_CMD_FLTMODE)
4685 #define G_FW_PORT_TRACE_CMD_FLTMODE(x)  \
4686     (((x) >> S_FW_PORT_TRACE_CMD_FLTMODE) & M_FW_PORT_TRACE_CMD_FLTMODE)
4687 #define F_FW_PORT_TRACE_CMD_FLTMODE     V_FW_PORT_TRACE_CMD_FLTMODE(1U)
4688
4689 #define S_FW_PORT_TRACE_CMD_DUPLEN      13
4690 #define M_FW_PORT_TRACE_CMD_DUPLEN      0x1
4691 #define V_FW_PORT_TRACE_CMD_DUPLEN(x)   ((x) << S_FW_PORT_TRACE_CMD_DUPLEN)
4692 #define G_FW_PORT_TRACE_CMD_DUPLEN(x)   \
4693     (((x) >> S_FW_PORT_TRACE_CMD_DUPLEN) & M_FW_PORT_TRACE_CMD_DUPLEN)
4694 #define F_FW_PORT_TRACE_CMD_DUPLEN      V_FW_PORT_TRACE_CMD_DUPLEN(1U)
4695
4696 #define S_FW_PORT_TRACE_CMD_RUNTFLTSIZE         8
4697 #define M_FW_PORT_TRACE_CMD_RUNTFLTSIZE         0x1f
4698 #define V_FW_PORT_TRACE_CMD_RUNTFLTSIZE(x)      \
4699     ((x) << S_FW_PORT_TRACE_CMD_RUNTFLTSIZE)
4700 #define G_FW_PORT_TRACE_CMD_RUNTFLTSIZE(x)      \
4701     (((x) >> S_FW_PORT_TRACE_CMD_RUNTFLTSIZE) & \
4702      M_FW_PORT_TRACE_CMD_RUNTFLTSIZE)
4703
4704 #define S_FW_PORT_TRACE_CMD_PCIECH      6
4705 #define M_FW_PORT_TRACE_CMD_PCIECH      0x3
4706 #define V_FW_PORT_TRACE_CMD_PCIECH(x)   ((x) << S_FW_PORT_TRACE_CMD_PCIECH)
4707 #define G_FW_PORT_TRACE_CMD_PCIECH(x)   \
4708     (((x) >> S_FW_PORT_TRACE_CMD_PCIECH) & M_FW_PORT_TRACE_CMD_PCIECH)
4709
4710 struct fw_port_trace_mmap_cmd {
4711         __be32 op_to_portid;
4712         __be32 retval_len16;
4713         __be32 fid_to_skipoffset;
4714         __be32 minpktsize_capturemax;
4715         __u8   map[224];
4716 };
4717
4718 #define S_FW_PORT_TRACE_MMAP_CMD_PORTID         0
4719 #define M_FW_PORT_TRACE_MMAP_CMD_PORTID         0xf
4720 #define V_FW_PORT_TRACE_MMAP_CMD_PORTID(x)      \
4721     ((x) << S_FW_PORT_TRACE_MMAP_CMD_PORTID)
4722 #define G_FW_PORT_TRACE_MMAP_CMD_PORTID(x)      \
4723     (((x) >> S_FW_PORT_TRACE_MMAP_CMD_PORTID) & \
4724      M_FW_PORT_TRACE_MMAP_CMD_PORTID)
4725
4726 #define S_FW_PORT_TRACE_MMAP_CMD_FID    30
4727 #define M_FW_PORT_TRACE_MMAP_CMD_FID    0x3
4728 #define V_FW_PORT_TRACE_MMAP_CMD_FID(x) ((x) << S_FW_PORT_TRACE_MMAP_CMD_FID)
4729 #define G_FW_PORT_TRACE_MMAP_CMD_FID(x) \
4730     (((x) >> S_FW_PORT_TRACE_MMAP_CMD_FID) & M_FW_PORT_TRACE_MMAP_CMD_FID)
4731
4732 #define S_FW_PORT_TRACE_MMAP_CMD_MMAPEN         29
4733 #define M_FW_PORT_TRACE_MMAP_CMD_MMAPEN         0x1
4734 #define V_FW_PORT_TRACE_MMAP_CMD_MMAPEN(x)      \
4735     ((x) << S_FW_PORT_TRACE_MMAP_CMD_MMAPEN)
4736 #define G_FW_PORT_TRACE_MMAP_CMD_MMAPEN(x)      \
4737     (((x) >> S_FW_PORT_TRACE_MMAP_CMD_MMAPEN) & \
4738      M_FW_PORT_TRACE_MMAP_CMD_MMAPEN)
4739 #define F_FW_PORT_TRACE_MMAP_CMD_MMAPEN V_FW_PORT_TRACE_MMAP_CMD_MMAPEN(1U)
4740
4741 #define S_FW_PORT_TRACE_MMAP_CMD_DCMAPEN        28
4742 #define M_FW_PORT_TRACE_MMAP_CMD_DCMAPEN        0x1
4743 #define V_FW_PORT_TRACE_MMAP_CMD_DCMAPEN(x)     \
4744     ((x) << S_FW_PORT_TRACE_MMAP_CMD_DCMAPEN)
4745 #define G_FW_PORT_TRACE_MMAP_CMD_DCMAPEN(x)     \
4746     (((x) >> S_FW_PORT_TRACE_MMAP_CMD_DCMAPEN) & \
4747      M_FW_PORT_TRACE_MMAP_CMD_DCMAPEN)
4748 #define F_FW_PORT_TRACE_MMAP_CMD_DCMAPEN        \
4749     V_FW_PORT_TRACE_MMAP_CMD_DCMAPEN(1U)
4750
4751 #define S_FW_PORT_TRACE_MMAP_CMD_SKIPLENGTH     8
4752 #define M_FW_PORT_TRACE_MMAP_CMD_SKIPLENGTH     0x1f
4753 #define V_FW_PORT_TRACE_MMAP_CMD_SKIPLENGTH(x)  \
4754     ((x) << S_FW_PORT_TRACE_MMAP_CMD_SKIPLENGTH)
4755 #define G_FW_PORT_TRACE_MMAP_CMD_SKIPLENGTH(x)  \
4756     (((x) >> S_FW_PORT_TRACE_MMAP_CMD_SKIPLENGTH) & \
4757      M_FW_PORT_TRACE_MMAP_CMD_SKIPLENGTH)
4758
4759 #define S_FW_PORT_TRACE_MMAP_CMD_SKIPOFFSET     0
4760 #define M_FW_PORT_TRACE_MMAP_CMD_SKIPOFFSET     0x1f
4761 #define V_FW_PORT_TRACE_MMAP_CMD_SKIPOFFSET(x)  \
4762     ((x) << S_FW_PORT_TRACE_MMAP_CMD_SKIPOFFSET)
4763 #define G_FW_PORT_TRACE_MMAP_CMD_SKIPOFFSET(x)  \
4764     (((x) >> S_FW_PORT_TRACE_MMAP_CMD_SKIPOFFSET) & \
4765      M_FW_PORT_TRACE_MMAP_CMD_SKIPOFFSET)
4766
4767 #define S_FW_PORT_TRACE_MMAP_CMD_MINPKTSIZE     18
4768 #define M_FW_PORT_TRACE_MMAP_CMD_MINPKTSIZE     0x3fff
4769 #define V_FW_PORT_TRACE_MMAP_CMD_MINPKTSIZE(x)  \
4770     ((x) << S_FW_PORT_TRACE_MMAP_CMD_MINPKTSIZE)
4771 #define G_FW_PORT_TRACE_MMAP_CMD_MINPKTSIZE(x)  \
4772     (((x) >> S_FW_PORT_TRACE_MMAP_CMD_MINPKTSIZE) & \
4773      M_FW_PORT_TRACE_MMAP_CMD_MINPKTSIZE)
4774
4775 #define S_FW_PORT_TRACE_MMAP_CMD_CAPTUREMAX     0
4776 #define M_FW_PORT_TRACE_MMAP_CMD_CAPTUREMAX     0x3fff
4777 #define V_FW_PORT_TRACE_MMAP_CMD_CAPTUREMAX(x)  \
4778     ((x) << S_FW_PORT_TRACE_MMAP_CMD_CAPTUREMAX)
4779 #define G_FW_PORT_TRACE_MMAP_CMD_CAPTUREMAX(x)  \
4780     (((x) >> S_FW_PORT_TRACE_MMAP_CMD_CAPTUREMAX) & \
4781      M_FW_PORT_TRACE_MMAP_CMD_CAPTUREMAX)
4782
4783 struct fw_rss_ind_tbl_cmd {
4784         __be32 op_to_viid;
4785         __be32 retval_len16;
4786         __be16 niqid;
4787         __be16 startidx;
4788         __be32 r3;
4789         __be32 iq0_to_iq2;
4790         __be32 iq3_to_iq5;
4791         __be32 iq6_to_iq8;
4792         __be32 iq9_to_iq11;
4793         __be32 iq12_to_iq14;
4794         __be32 iq15_to_iq17;
4795         __be32 iq18_to_iq20;
4796         __be32 iq21_to_iq23;
4797         __be32 iq24_to_iq26;
4798         __be32 iq27_to_iq29;
4799         __be32 iq30_iq31;
4800         __be32 r15_lo;
4801 };
4802
4803 #define S_FW_RSS_IND_TBL_CMD_VIID       0
4804 #define M_FW_RSS_IND_TBL_CMD_VIID       0xfff
4805 #define V_FW_RSS_IND_TBL_CMD_VIID(x)    ((x) << S_FW_RSS_IND_TBL_CMD_VIID)
4806 #define G_FW_RSS_IND_TBL_CMD_VIID(x)    \
4807     (((x) >> S_FW_RSS_IND_TBL_CMD_VIID) & M_FW_RSS_IND_TBL_CMD_VIID)
4808
4809 #define S_FW_RSS_IND_TBL_CMD_IQ0        20
4810 #define M_FW_RSS_IND_TBL_CMD_IQ0        0x3ff
4811 #define V_FW_RSS_IND_TBL_CMD_IQ0(x)     ((x) << S_FW_RSS_IND_TBL_CMD_IQ0)
4812 #define G_FW_RSS_IND_TBL_CMD_IQ0(x)     \
4813     (((x) >> S_FW_RSS_IND_TBL_CMD_IQ0) & M_FW_RSS_IND_TBL_CMD_IQ0)
4814
4815 #define S_FW_RSS_IND_TBL_CMD_IQ1        10
4816 #define M_FW_RSS_IND_TBL_CMD_IQ1        0x3ff
4817 #define V_FW_RSS_IND_TBL_CMD_IQ1(x)     ((x) << S_FW_RSS_IND_TBL_CMD_IQ1)
4818 #define G_FW_RSS_IND_TBL_CMD_IQ1(x)     \
4819     (((x) >> S_FW_RSS_IND_TBL_CMD_IQ1) & M_FW_RSS_IND_TBL_CMD_IQ1)
4820
4821 #define S_FW_RSS_IND_TBL_CMD_IQ2        0
4822 #define M_FW_RSS_IND_TBL_CMD_IQ2        0x3ff
4823 #define V_FW_RSS_IND_TBL_CMD_IQ2(x)     ((x) << S_FW_RSS_IND_TBL_CMD_IQ2)
4824 #define G_FW_RSS_IND_TBL_CMD_IQ2(x)     \
4825     (((x) >> S_FW_RSS_IND_TBL_CMD_IQ2) & M_FW_RSS_IND_TBL_CMD_IQ2)
4826
4827 #define S_FW_RSS_IND_TBL_CMD_IQ3        20
4828 #define M_FW_RSS_IND_TBL_CMD_IQ3        0x3ff
4829 #define V_FW_RSS_IND_TBL_CMD_IQ3(x)     ((x) << S_FW_RSS_IND_TBL_CMD_IQ3)
4830 #define G_FW_RSS_IND_TBL_CMD_IQ3(x)     \
4831     (((x) >> S_FW_RSS_IND_TBL_CMD_IQ3) & M_FW_RSS_IND_TBL_CMD_IQ3)
4832
4833 #define S_FW_RSS_IND_TBL_CMD_IQ4        10
4834 #define M_FW_RSS_IND_TBL_CMD_IQ4        0x3ff
4835 #define V_FW_RSS_IND_TBL_CMD_IQ4(x)     ((x) << S_FW_RSS_IND_TBL_CMD_IQ4)
4836 #define G_FW_RSS_IND_TBL_CMD_IQ4(x)     \
4837     (((x) >> S_FW_RSS_IND_TBL_CMD_IQ4) & M_FW_RSS_IND_TBL_CMD_IQ4)
4838
4839 #define S_FW_RSS_IND_TBL_CMD_IQ5        0
4840 #define M_FW_RSS_IND_TBL_CMD_IQ5        0x3ff
4841 #define V_FW_RSS_IND_TBL_CMD_IQ5(x)     ((x) << S_FW_RSS_IND_TBL_CMD_IQ5)
4842 #define G_FW_RSS_IND_TBL_CMD_IQ5(x)     \
4843     (((x) >> S_FW_RSS_IND_TBL_CMD_IQ5) & M_FW_RSS_IND_TBL_CMD_IQ5)
4844
4845 #define S_FW_RSS_IND_TBL_CMD_IQ6        20
4846 #define M_FW_RSS_IND_TBL_CMD_IQ6        0x3ff
4847 #define V_FW_RSS_IND_TBL_CMD_IQ6(x)     ((x) << S_FW_RSS_IND_TBL_CMD_IQ6)
4848 #define G_FW_RSS_IND_TBL_CMD_IQ6(x)     \
4849     (((x) >> S_FW_RSS_IND_TBL_CMD_IQ6) & M_FW_RSS_IND_TBL_CMD_IQ6)
4850
4851 #define S_FW_RSS_IND_TBL_CMD_IQ7        10
4852 #define M_FW_RSS_IND_TBL_CMD_IQ7        0x3ff
4853 #define V_FW_RSS_IND_TBL_CMD_IQ7(x)     ((x) << S_FW_RSS_IND_TBL_CMD_IQ7)
4854 #define G_FW_RSS_IND_TBL_CMD_IQ7(x)     \
4855     (((x) >> S_FW_RSS_IND_TBL_CMD_IQ7) & M_FW_RSS_IND_TBL_CMD_IQ7)
4856
4857 #define S_FW_RSS_IND_TBL_CMD_IQ8        0
4858 #define M_FW_RSS_IND_TBL_CMD_IQ8        0x3ff
4859 #define V_FW_RSS_IND_TBL_CMD_IQ8(x)     ((x) << S_FW_RSS_IND_TBL_CMD_IQ8)
4860 #define G_FW_RSS_IND_TBL_CMD_IQ8(x)     \
4861     (((x) >> S_FW_RSS_IND_TBL_CMD_IQ8) & M_FW_RSS_IND_TBL_CMD_IQ8)
4862
4863 #define S_FW_RSS_IND_TBL_CMD_IQ9        20
4864 #define M_FW_RSS_IND_TBL_CMD_IQ9        0x3ff
4865 #define V_FW_RSS_IND_TBL_CMD_IQ9(x)     ((x) << S_FW_RSS_IND_TBL_CMD_IQ9)
4866 #define G_FW_RSS_IND_TBL_CMD_IQ9(x)     \
4867     (((x) >> S_FW_RSS_IND_TBL_CMD_IQ9) & M_FW_RSS_IND_TBL_CMD_IQ9)
4868
4869 #define S_FW_RSS_IND_TBL_CMD_IQ10       10
4870 #define M_FW_RSS_IND_TBL_CMD_IQ10       0x3ff
4871 #define V_FW_RSS_IND_TBL_CMD_IQ10(x)    ((x) << S_FW_RSS_IND_TBL_CMD_IQ10)
4872 #define G_FW_RSS_IND_TBL_CMD_IQ10(x)    \
4873     (((x) >> S_FW_RSS_IND_TBL_CMD_IQ10) & M_FW_RSS_IND_TBL_CMD_IQ10)
4874
4875 #define S_FW_RSS_IND_TBL_CMD_IQ11       0
4876 #define M_FW_RSS_IND_TBL_CMD_IQ11       0x3ff
4877 #define V_FW_RSS_IND_TBL_CMD_IQ11(x)    ((x) << S_FW_RSS_IND_TBL_CMD_IQ11)
4878 #define G_FW_RSS_IND_TBL_CMD_IQ11(x)    \
4879     (((x) >> S_FW_RSS_IND_TBL_CMD_IQ11) & M_FW_RSS_IND_TBL_CMD_IQ11)
4880
4881 #define S_FW_RSS_IND_TBL_CMD_IQ12       20
4882 #define M_FW_RSS_IND_TBL_CMD_IQ12       0x3ff
4883 #define V_FW_RSS_IND_TBL_CMD_IQ12(x)    ((x) << S_FW_RSS_IND_TBL_CMD_IQ12)
4884 #define G_FW_RSS_IND_TBL_CMD_IQ12(x)    \
4885     (((x) >> S_FW_RSS_IND_TBL_CMD_IQ12) & M_FW_RSS_IND_TBL_CMD_IQ12)
4886
4887 #define S_FW_RSS_IND_TBL_CMD_IQ13       10
4888 #define M_FW_RSS_IND_TBL_CMD_IQ13       0x3ff
4889 #define V_FW_RSS_IND_TBL_CMD_IQ13(x)    ((x) << S_FW_RSS_IND_TBL_CMD_IQ13)
4890 #define G_FW_RSS_IND_TBL_CMD_IQ13(x)    \
4891     (((x) >> S_FW_RSS_IND_TBL_CMD_IQ13) & M_FW_RSS_IND_TBL_CMD_IQ13)
4892
4893 #define S_FW_RSS_IND_TBL_CMD_IQ14       0
4894 #define M_FW_RSS_IND_TBL_CMD_IQ14       0x3ff
4895 #define V_FW_RSS_IND_TBL_CMD_IQ14(x)    ((x) << S_FW_RSS_IND_TBL_CMD_IQ14)
4896 #define G_FW_RSS_IND_TBL_CMD_IQ14(x)    \
4897     (((x) >> S_FW_RSS_IND_TBL_CMD_IQ14) & M_FW_RSS_IND_TBL_CMD_IQ14)
4898
4899 #define S_FW_RSS_IND_TBL_CMD_IQ15       20
4900 #define M_FW_RSS_IND_TBL_CMD_IQ15       0x3ff
4901 #define V_FW_RSS_IND_TBL_CMD_IQ15(x)    ((x) << S_FW_RSS_IND_TBL_CMD_IQ15)
4902 #define G_FW_RSS_IND_TBL_CMD_IQ15(x)    \
4903     (((x) >> S_FW_RSS_IND_TBL_CMD_IQ15) & M_FW_RSS_IND_TBL_CMD_IQ15)
4904
4905 #define S_FW_RSS_IND_TBL_CMD_IQ16       10
4906 #define M_FW_RSS_IND_TBL_CMD_IQ16       0x3ff
4907 #define V_FW_RSS_IND_TBL_CMD_IQ16(x)    ((x) << S_FW_RSS_IND_TBL_CMD_IQ16)
4908 #define G_FW_RSS_IND_TBL_CMD_IQ16(x)    \
4909     (((x) >> S_FW_RSS_IND_TBL_CMD_IQ16) & M_FW_RSS_IND_TBL_CMD_IQ16)
4910
4911 #define S_FW_RSS_IND_TBL_CMD_IQ17       0
4912 #define M_FW_RSS_IND_TBL_CMD_IQ17       0x3ff
4913 #define V_FW_RSS_IND_TBL_CMD_IQ17(x)    ((x) << S_FW_RSS_IND_TBL_CMD_IQ17)
4914 #define G_FW_RSS_IND_TBL_CMD_IQ17(x)    \
4915     (((x) >> S_FW_RSS_IND_TBL_CMD_IQ17) & M_FW_RSS_IND_TBL_CMD_IQ17)
4916
4917 #define S_FW_RSS_IND_TBL_CMD_IQ18       20
4918 #define M_FW_RSS_IND_TBL_CMD_IQ18       0x3ff
4919 #define V_FW_RSS_IND_TBL_CMD_IQ18(x)    ((x) << S_FW_RSS_IND_TBL_CMD_IQ18)
4920 #define G_FW_RSS_IND_TBL_CMD_IQ18(x)    \
4921     (((x) >> S_FW_RSS_IND_TBL_CMD_IQ18) & M_FW_RSS_IND_TBL_CMD_IQ18)
4922
4923 #define S_FW_RSS_IND_TBL_CMD_IQ19       10
4924 #define M_FW_RSS_IND_TBL_CMD_IQ19       0x3ff
4925 #define V_FW_RSS_IND_TBL_CMD_IQ19(x)    ((x) << S_FW_RSS_IND_TBL_CMD_IQ19)
4926 #define G_FW_RSS_IND_TBL_CMD_IQ19(x)    \
4927     (((x) >> S_FW_RSS_IND_TBL_CMD_IQ19) & M_FW_RSS_IND_TBL_CMD_IQ19)
4928
4929 #define S_FW_RSS_IND_TBL_CMD_IQ20       0
4930 #define M_FW_RSS_IND_TBL_CMD_IQ20       0x3ff
4931 #define V_FW_RSS_IND_TBL_CMD_IQ20(x)    ((x) << S_FW_RSS_IND_TBL_CMD_IQ20)
4932 #define G_FW_RSS_IND_TBL_CMD_IQ20(x)    \
4933     (((x) >> S_FW_RSS_IND_TBL_CMD_IQ20) & M_FW_RSS_IND_TBL_CMD_IQ20)
4934
4935 #define S_FW_RSS_IND_TBL_CMD_IQ21       20
4936 #define M_FW_RSS_IND_TBL_CMD_IQ21       0x3ff
4937 #define V_FW_RSS_IND_TBL_CMD_IQ21(x)    ((x) << S_FW_RSS_IND_TBL_CMD_IQ21)
4938 #define G_FW_RSS_IND_TBL_CMD_IQ21(x)    \
4939     (((x) >> S_FW_RSS_IND_TBL_CMD_IQ21) & M_FW_RSS_IND_TBL_CMD_IQ21)
4940
4941 #define S_FW_RSS_IND_TBL_CMD_IQ22       10
4942 #define M_FW_RSS_IND_TBL_CMD_IQ22       0x3ff
4943 #define V_FW_RSS_IND_TBL_CMD_IQ22(x)    ((x) << S_FW_RSS_IND_TBL_CMD_IQ22)
4944 #define G_FW_RSS_IND_TBL_CMD_IQ22(x)    \
4945     (((x) >> S_FW_RSS_IND_TBL_CMD_IQ22) & M_FW_RSS_IND_TBL_CMD_IQ22)
4946
4947 #define S_FW_RSS_IND_TBL_CMD_IQ23       0
4948 #define M_FW_RSS_IND_TBL_CMD_IQ23       0x3ff
4949 #define V_FW_RSS_IND_TBL_CMD_IQ23(x)    ((x) << S_FW_RSS_IND_TBL_CMD_IQ23)
4950 #define G_FW_RSS_IND_TBL_CMD_IQ23(x)    \
4951     (((x) >> S_FW_RSS_IND_TBL_CMD_IQ23) & M_FW_RSS_IND_TBL_CMD_IQ23)
4952
4953 #define S_FW_RSS_IND_TBL_CMD_IQ24       20
4954 #define M_FW_RSS_IND_TBL_CMD_IQ24       0x3ff
4955 #define V_FW_RSS_IND_TBL_CMD_IQ24(x)    ((x) << S_FW_RSS_IND_TBL_CMD_IQ24)
4956 #define G_FW_RSS_IND_TBL_CMD_IQ24(x)    \
4957     (((x) >> S_FW_RSS_IND_TBL_CMD_IQ24) & M_FW_RSS_IND_TBL_CMD_IQ24)
4958
4959 #define S_FW_RSS_IND_TBL_CMD_IQ25       10
4960 #define M_FW_RSS_IND_TBL_CMD_IQ25       0x3ff
4961 #define V_FW_RSS_IND_TBL_CMD_IQ25(x)    ((x) << S_FW_RSS_IND_TBL_CMD_IQ25)
4962 #define G_FW_RSS_IND_TBL_CMD_IQ25(x)    \
4963     (((x) >> S_FW_RSS_IND_TBL_CMD_IQ25) & M_FW_RSS_IND_TBL_CMD_IQ25)
4964
4965 #define S_FW_RSS_IND_TBL_CMD_IQ26       0
4966 #define M_FW_RSS_IND_TBL_CMD_IQ26       0x3ff
4967 #define V_FW_RSS_IND_TBL_CMD_IQ26(x)    ((x) << S_FW_RSS_IND_TBL_CMD_IQ26)
4968 #define G_FW_RSS_IND_TBL_CMD_IQ26(x)    \
4969     (((x) >> S_FW_RSS_IND_TBL_CMD_IQ26) & M_FW_RSS_IND_TBL_CMD_IQ26)
4970
4971 #define S_FW_RSS_IND_TBL_CMD_IQ27       20
4972 #define M_FW_RSS_IND_TBL_CMD_IQ27       0x3ff
4973 #define V_FW_RSS_IND_TBL_CMD_IQ27(x)    ((x) << S_FW_RSS_IND_TBL_CMD_IQ27)
4974 #define G_FW_RSS_IND_TBL_CMD_IQ27(x)    \
4975     (((x) >> S_FW_RSS_IND_TBL_CMD_IQ27) & M_FW_RSS_IND_TBL_CMD_IQ27)
4976
4977 #define S_FW_RSS_IND_TBL_CMD_IQ28       10
4978 #define M_FW_RSS_IND_TBL_CMD_IQ28       0x3ff
4979 #define V_FW_RSS_IND_TBL_CMD_IQ28(x)    ((x) << S_FW_RSS_IND_TBL_CMD_IQ28)
4980 #define G_FW_RSS_IND_TBL_CMD_IQ28(x)    \
4981     (((x) >> S_FW_RSS_IND_TBL_CMD_IQ28) & M_FW_RSS_IND_TBL_CMD_IQ28)
4982
4983 #define S_FW_RSS_IND_TBL_CMD_IQ29       0
4984 #define M_FW_RSS_IND_TBL_CMD_IQ29       0x3ff
4985 #define V_FW_RSS_IND_TBL_CMD_IQ29(x)    ((x) << S_FW_RSS_IND_TBL_CMD_IQ29)
4986 #define G_FW_RSS_IND_TBL_CMD_IQ29(x)    \
4987     (((x) >> S_FW_RSS_IND_TBL_CMD_IQ29) & M_FW_RSS_IND_TBL_CMD_IQ29)
4988
4989 #define S_FW_RSS_IND_TBL_CMD_IQ30       20
4990 #define M_FW_RSS_IND_TBL_CMD_IQ30       0x3ff
4991 #define V_FW_RSS_IND_TBL_CMD_IQ30(x)    ((x) << S_FW_RSS_IND_TBL_CMD_IQ30)
4992 #define G_FW_RSS_IND_TBL_CMD_IQ30(x)    \
4993     (((x) >> S_FW_RSS_IND_TBL_CMD_IQ30) & M_FW_RSS_IND_TBL_CMD_IQ30)
4994
4995 #define S_FW_RSS_IND_TBL_CMD_IQ31       10
4996 #define M_FW_RSS_IND_TBL_CMD_IQ31       0x3ff
4997 #define V_FW_RSS_IND_TBL_CMD_IQ31(x)    ((x) << S_FW_RSS_IND_TBL_CMD_IQ31)
4998 #define G_FW_RSS_IND_TBL_CMD_IQ31(x)    \
4999     (((x) >> S_FW_RSS_IND_TBL_CMD_IQ31) & M_FW_RSS_IND_TBL_CMD_IQ31)
5000
5001 struct fw_rss_glb_config_cmd {
5002         __be32 op_to_write;
5003         __be32 retval_len16;
5004         union fw_rss_glb_config {
5005                 struct fw_rss_glb_config_manual {
5006                         __be32 mode_pkd;
5007                         __be32 r3;
5008                         __be64 r4;
5009                         __be64 r5;
5010                 } manual;
5011                 struct fw_rss_glb_config_basicvirtual {
5012                         __be32 mode_pkd;
5013                         __be32 synmapen_to_hashtoeplitz;
5014                         __be64 r8;
5015                         __be64 r9;
5016                 } basicvirtual;
5017         } u;
5018 };
5019
5020 #define S_FW_RSS_GLB_CONFIG_CMD_MODE    28
5021 #define M_FW_RSS_GLB_CONFIG_CMD_MODE    0xf
5022 #define V_FW_RSS_GLB_CONFIG_CMD_MODE(x) ((x) << S_FW_RSS_GLB_CONFIG_CMD_MODE)
5023 #define G_FW_RSS_GLB_CONFIG_CMD_MODE(x) \
5024     (((x) >> S_FW_RSS_GLB_CONFIG_CMD_MODE) & M_FW_RSS_GLB_CONFIG_CMD_MODE)
5025
5026 #define FW_RSS_GLB_CONFIG_CMD_MODE_MANUAL       0
5027 #define FW_RSS_GLB_CONFIG_CMD_MODE_BASICVIRTUAL 1
5028 #define FW_RSS_GLB_CONFIG_CMD_MODE_MAX          1
5029
5030 #define S_FW_RSS_GLB_CONFIG_CMD_SYNMAPEN        8
5031 #define M_FW_RSS_GLB_CONFIG_CMD_SYNMAPEN        0x1
5032 #define V_FW_RSS_GLB_CONFIG_CMD_SYNMAPEN(x)     \
5033     ((x) << S_FW_RSS_GLB_CONFIG_CMD_SYNMAPEN)
5034 #define G_FW_RSS_GLB_CONFIG_CMD_SYNMAPEN(x)     \
5035     (((x) >> S_FW_RSS_GLB_CONFIG_CMD_SYNMAPEN) & \
5036      M_FW_RSS_GLB_CONFIG_CMD_SYNMAPEN)
5037 #define F_FW_RSS_GLB_CONFIG_CMD_SYNMAPEN        \
5038     V_FW_RSS_GLB_CONFIG_CMD_SYNMAPEN(1U)
5039
5040 #define S_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV6           7
5041 #define M_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV6           0x1
5042 #define V_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV6(x)        \
5043     ((x) << S_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV6)
5044 #define G_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV6(x)        \
5045     (((x) >> S_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV6) & \
5046      M_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV6)
5047 #define F_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV6   \
5048     V_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV6(1U)
5049
5050 #define S_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV6           6
5051 #define M_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV6           0x1
5052 #define V_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV6(x)        \
5053     ((x) << S_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV6)
5054 #define G_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV6(x)        \
5055     (((x) >> S_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV6) & \
5056      M_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV6)
5057 #define F_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV6   \
5058     V_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV6(1U)
5059
5060 #define S_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV4           5
5061 #define M_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV4           0x1
5062 #define V_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV4(x)        \
5063     ((x) << S_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV4)
5064 #define G_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV4(x)        \
5065     (((x) >> S_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV4) & \
5066      M_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV4)
5067 #define F_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV4   \
5068     V_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV4(1U)
5069
5070 #define S_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV4           4
5071 #define M_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV4           0x1
5072 #define V_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV4(x)        \
5073     ((x) << S_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV4)
5074 #define G_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV4(x)        \
5075     (((x) >> S_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV4) & \
5076      M_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV4)
5077 #define F_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV4   \
5078     V_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV4(1U)
5079
5080 #define S_FW_RSS_GLB_CONFIG_CMD_OFDMAPEN        3
5081 #define M_FW_RSS_GLB_CONFIG_CMD_OFDMAPEN        0x1
5082 #define V_FW_RSS_GLB_CONFIG_CMD_OFDMAPEN(x)     \
5083     ((x) << S_FW_RSS_GLB_CONFIG_CMD_OFDMAPEN)
5084 #define G_FW_RSS_GLB_CONFIG_CMD_OFDMAPEN(x)     \
5085     (((x) >> S_FW_RSS_GLB_CONFIG_CMD_OFDMAPEN) & \
5086      M_FW_RSS_GLB_CONFIG_CMD_OFDMAPEN)
5087 #define F_FW_RSS_GLB_CONFIG_CMD_OFDMAPEN        \
5088     V_FW_RSS_GLB_CONFIG_CMD_OFDMAPEN(1U)
5089
5090 #define S_FW_RSS_GLB_CONFIG_CMD_TNLMAPEN        2
5091 #define M_FW_RSS_GLB_CONFIG_CMD_TNLMAPEN        0x1
5092 #define V_FW_RSS_GLB_CONFIG_CMD_TNLMAPEN(x)     \
5093     ((x) << S_FW_RSS_GLB_CONFIG_CMD_TNLMAPEN)
5094 #define G_FW_RSS_GLB_CONFIG_CMD_TNLMAPEN(x)     \
5095     (((x) >> S_FW_RSS_GLB_CONFIG_CMD_TNLMAPEN) & \
5096      M_FW_RSS_GLB_CONFIG_CMD_TNLMAPEN)
5097 #define F_FW_RSS_GLB_CONFIG_CMD_TNLMAPEN        \
5098     V_FW_RSS_GLB_CONFIG_CMD_TNLMAPEN(1U)
5099
5100 #define S_FW_RSS_GLB_CONFIG_CMD_TNLALLLKP       1
5101 #define M_FW_RSS_GLB_CONFIG_CMD_TNLALLLKP       0x1
5102 #define V_FW_RSS_GLB_CONFIG_CMD_TNLALLLKP(x)    \
5103     ((x) << S_FW_RSS_GLB_CONFIG_CMD_TNLALLLKP)
5104 #define G_FW_RSS_GLB_CONFIG_CMD_TNLALLLKP(x)    \
5105     (((x) >> S_FW_RSS_GLB_CONFIG_CMD_TNLALLLKP) & \
5106      M_FW_RSS_GLB_CONFIG_CMD_TNLALLLKP)
5107 #define F_FW_RSS_GLB_CONFIG_CMD_TNLALLLKP       \
5108     V_FW_RSS_GLB_CONFIG_CMD_TNLALLLKP(1U)
5109
5110 #define S_FW_RSS_GLB_CONFIG_CMD_HASHTOEPLITZ    0
5111 #define M_FW_RSS_GLB_CONFIG_CMD_HASHTOEPLITZ    0x1
5112 #define V_FW_RSS_GLB_CONFIG_CMD_HASHTOEPLITZ(x) \
5113     ((x) << S_FW_RSS_GLB_CONFIG_CMD_HASHTOEPLITZ)
5114 #define G_FW_RSS_GLB_CONFIG_CMD_HASHTOEPLITZ(x) \
5115     (((x) >> S_FW_RSS_GLB_CONFIG_CMD_HASHTOEPLITZ) & \
5116      M_FW_RSS_GLB_CONFIG_CMD_HASHTOEPLITZ)
5117 #define F_FW_RSS_GLB_CONFIG_CMD_HASHTOEPLITZ    \
5118     V_FW_RSS_GLB_CONFIG_CMD_HASHTOEPLITZ(1U)
5119
5120 struct fw_rss_vi_config_cmd {
5121         __be32 op_to_viid;
5122         __be32 retval_len16;
5123         union fw_rss_vi_config {
5124                 struct fw_rss_vi_config_manual {
5125                         __be64 r3;
5126                         __be64 r4;
5127                         __be64 r5;
5128                 } manual;
5129                 struct fw_rss_vi_config_basicvirtual {
5130                         __be32 r6;
5131                         __be32 defaultq_to_udpen;
5132                         __be64 r9;
5133                         __be64 r10;
5134                 } basicvirtual;
5135         } u;
5136 };
5137
5138 #define S_FW_RSS_VI_CONFIG_CMD_VIID     0
5139 #define M_FW_RSS_VI_CONFIG_CMD_VIID     0xfff
5140 #define V_FW_RSS_VI_CONFIG_CMD_VIID(x)  ((x) << S_FW_RSS_VI_CONFIG_CMD_VIID)
5141 #define G_FW_RSS_VI_CONFIG_CMD_VIID(x)  \
5142     (((x) >> S_FW_RSS_VI_CONFIG_CMD_VIID) & M_FW_RSS_VI_CONFIG_CMD_VIID)
5143
5144 #define S_FW_RSS_VI_CONFIG_CMD_DEFAULTQ         16
5145 #define M_FW_RSS_VI_CONFIG_CMD_DEFAULTQ         0x3ff
5146 #define V_FW_RSS_VI_CONFIG_CMD_DEFAULTQ(x)      \
5147     ((x) << S_FW_RSS_VI_CONFIG_CMD_DEFAULTQ)
5148 #define G_FW_RSS_VI_CONFIG_CMD_DEFAULTQ(x)      \
5149     (((x) >> S_FW_RSS_VI_CONFIG_CMD_DEFAULTQ) & \
5150      M_FW_RSS_VI_CONFIG_CMD_DEFAULTQ)
5151
5152 #define S_FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN     4
5153 #define M_FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN     0x1
5154 #define V_FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN(x)  \
5155     ((x) << S_FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN)
5156 #define G_FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN(x)  \
5157     (((x) >> S_FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN) & \
5158      M_FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN)
5159 #define F_FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN     \
5160     V_FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN(1U)
5161
5162 #define S_FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN      3
5163 #define M_FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN      0x1
5164 #define V_FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN(x)   \
5165     ((x) << S_FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN)
5166 #define G_FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN(x)   \
5167     (((x) >> S_FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN) & \
5168      M_FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN)
5169 #define F_FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN      \
5170     V_FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN(1U)
5171
5172 #define S_FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN     2
5173 #define M_FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN     0x1
5174 #define V_FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN(x)  \
5175     ((x) << S_FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN)
5176 #define G_FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN(x)  \
5177     (((x) >> S_FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN) & \
5178      M_FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN)
5179 #define F_FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN     \
5180     V_FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN(1U)
5181
5182 #define S_FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN      1
5183 #define M_FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN      0x1
5184 #define V_FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN(x)   \
5185     ((x) << S_FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN)
5186 #define G_FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN(x)   \
5187     (((x) >> S_FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN) & \
5188      M_FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN)
5189 #define F_FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN      \
5190     V_FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN(1U)
5191
5192 #define S_FW_RSS_VI_CONFIG_CMD_UDPEN            0
5193 #define M_FW_RSS_VI_CONFIG_CMD_UDPEN            0x1
5194 #define V_FW_RSS_VI_CONFIG_CMD_UDPEN(x)         \
5195     ((x) << S_FW_RSS_VI_CONFIG_CMD_UDPEN)
5196 #define G_FW_RSS_VI_CONFIG_CMD_UDPEN(x)         \
5197     (((x) >> S_FW_RSS_VI_CONFIG_CMD_UDPEN) & \
5198      M_FW_RSS_VI_CONFIG_CMD_UDPEN)
5199 #define F_FW_RSS_VI_CONFIG_CMD_UDPEN            \
5200     V_FW_RSS_VI_CONFIG_CMD_UDPEN(1U)
5201
5202 enum fw_sched_sc {
5203         FW_SCHED_SC_CONFIG              = 0,
5204         FW_SCHED_SC_PARAMS              = 1,
5205 };
5206
5207 enum fw_sched_type {
5208         FW_SCHED_TYPE_PKTSCHED          = 0,
5209         FW_SCHED_TYPE_STREAMSCHED       = 1,
5210 };
5211
5212 enum fw_sched_params_level {
5213         FW_SCHED_PARAMS_LEVEL_CL_RL     = 0,
5214         FW_SCHED_PARAMS_LEVEL_CL_WRR    = 1,
5215         FW_SCHED_PARAMS_LEVEL_CH_RL     = 2,
5216         FW_SCHED_PARAMS_LEVEL_CH_WRR    = 3,
5217 };
5218
5219 enum fw_sched_params_mode {
5220         FW_SCHED_PARAMS_MODE_CLASS      = 0,
5221         FW_SCHED_PARAMS_MODE_FLOW       = 1,
5222 };
5223
5224 enum fw_sched_params_unit {
5225         FW_SCHED_PARAMS_UNIT_BITRATE    = 0,
5226         FW_SCHED_PARAMS_UNIT_PKTRATE    = 1,
5227 };
5228
5229 enum fw_sched_params_rate {
5230         FW_SCHED_PARAMS_RATE_REL        = 0,
5231         FW_SCHED_PARAMS_RATE_ABS        = 1,
5232 };
5233
5234 struct fw_sched_cmd {
5235         __be32 op_to_write;
5236         __be32 retval_len16;
5237         union fw_sched {
5238                 struct fw_sched_config {
5239                         __u8   sc;
5240                         __u8   type;
5241                         __u8   minmaxen;
5242                         __u8   r3[5];
5243                 } config;
5244                 struct fw_sched_params {
5245                         __u8   sc;
5246                         __u8   type;
5247                         __u8   level;
5248                         __u8   mode;
5249                         __u8   unit;
5250                         __u8   rate;
5251                         __u8   ch;
5252                         __u8   cl;
5253                         __be32 min;
5254                         __be32 max;
5255                         __be16 weight;
5256                         __be16 pktsize;
5257                         __be32 r4;
5258                 } params;
5259         } u;
5260 };
5261
5262 /*
5263  *      length of the formatting string
5264  */
5265 #define FW_DEVLOG_FMT_LEN       192
5266
5267 /*
5268  *      maximum number of the formatting string parameters
5269  */
5270 #define FW_DEVLOG_FMT_PARAMS_NUM 8
5271
5272 /*
5273  *      priority levels
5274  */
5275 enum fw_devlog_level {
5276         FW_DEVLOG_LEVEL_EMERG   = 0x0,
5277         FW_DEVLOG_LEVEL_CRIT    = 0x1,
5278         FW_DEVLOG_LEVEL_ERR     = 0x2,
5279         FW_DEVLOG_LEVEL_NOTICE  = 0x3,
5280         FW_DEVLOG_LEVEL_INFO    = 0x4,
5281         FW_DEVLOG_LEVEL_DEBUG   = 0x5,
5282         FW_DEVLOG_LEVEL_MAX     = 0x5,
5283 };
5284
5285 /*
5286  *      facilities that may send a log message
5287  */
5288 enum fw_devlog_facility {
5289         FW_DEVLOG_FACILITY_CORE         = 0x00,
5290         FW_DEVLOG_FACILITY_SCHED        = 0x02,
5291         FW_DEVLOG_FACILITY_TIMER        = 0x04,
5292         FW_DEVLOG_FACILITY_RES          = 0x06,
5293         FW_DEVLOG_FACILITY_HW           = 0x08,
5294         FW_DEVLOG_FACILITY_FLR          = 0x10,
5295         FW_DEVLOG_FACILITY_DMAQ         = 0x12,
5296         FW_DEVLOG_FACILITY_PHY          = 0x14,
5297         FW_DEVLOG_FACILITY_MAC          = 0x16,
5298         FW_DEVLOG_FACILITY_PORT         = 0x18,
5299         FW_DEVLOG_FACILITY_VI           = 0x1A,
5300         FW_DEVLOG_FACILITY_FILTER       = 0x1C,
5301         FW_DEVLOG_FACILITY_ACL          = 0x1E,
5302         FW_DEVLOG_FACILITY_TM           = 0x20,
5303         FW_DEVLOG_FACILITY_QFC          = 0x22,
5304         FW_DEVLOG_FACILITY_DCB          = 0x24,
5305         FW_DEVLOG_FACILITY_ETH          = 0x26,
5306         FW_DEVLOG_FACILITY_OFLD         = 0x28,
5307         FW_DEVLOG_FACILITY_RI           = 0x2A,
5308         FW_DEVLOG_FACILITY_ISCSI        = 0x2C,
5309         FW_DEVLOG_FACILITY_FCOE         = 0x2E,
5310         FW_DEVLOG_FACILITY_FOISCSI      = 0x30,
5311         FW_DEVLOG_FACILITY_FOFCOE       = 0x32,
5312         FW_DEVLOG_FACILITY_MAX          = 0x32,
5313 };
5314
5315 /*
5316  *      log message format
5317  */
5318 struct fw_devlog_e {
5319         __be64  timestamp;
5320         __be32  seqno;
5321         __be16  reserved1;
5322         __u8    level;
5323         __u8    facility;
5324         __u8    fmt[FW_DEVLOG_FMT_LEN];
5325         __be32  params[FW_DEVLOG_FMT_PARAMS_NUM];
5326         __be32  reserved3[4];
5327 };
5328
5329 struct fw_devlog_cmd {
5330         __be32 op_to_write;
5331         __be32 retval_len16;
5332         __u8   level;
5333         __u8   r2[7];
5334         __be32 memtype_devlog_memaddr16_devlog;
5335         __be32 memsize_devlog;
5336         __be32 r3[2];
5337 };
5338
5339 #define S_FW_DEVLOG_CMD_MEMTYPE_DEVLOG          28
5340 #define M_FW_DEVLOG_CMD_MEMTYPE_DEVLOG          0xf
5341 #define V_FW_DEVLOG_CMD_MEMTYPE_DEVLOG(x)       \
5342     ((x) << S_FW_DEVLOG_CMD_MEMTYPE_DEVLOG)
5343 #define G_FW_DEVLOG_CMD_MEMTYPE_DEVLOG(x)       \
5344     (((x) >> S_FW_DEVLOG_CMD_MEMTYPE_DEVLOG) & M_FW_DEVLOG_CMD_MEMTYPE_DEVLOG)
5345
5346 #define S_FW_DEVLOG_CMD_MEMADDR16_DEVLOG        0
5347 #define M_FW_DEVLOG_CMD_MEMADDR16_DEVLOG        0xfffffff
5348 #define V_FW_DEVLOG_CMD_MEMADDR16_DEVLOG(x)     \
5349     ((x) << S_FW_DEVLOG_CMD_MEMADDR16_DEVLOG)
5350 #define G_FW_DEVLOG_CMD_MEMADDR16_DEVLOG(x)     \
5351     (((x) >> S_FW_DEVLOG_CMD_MEMADDR16_DEVLOG) & \
5352      M_FW_DEVLOG_CMD_MEMADDR16_DEVLOG)
5353
5354 struct fw_netif_cmd {
5355         __be32 op_portid;
5356         __be32 retval_to_len16;
5357         __be32 add_to_ipv4gw;
5358         __be32 vlanid_mtuval;
5359         __be32 gwaddr;
5360         __be32 addr;
5361         __be32 nmask;
5362         __be32 bcaddr;
5363 };
5364
5365 #define S_FW_NETIF_CMD_PORTID           0
5366 #define M_FW_NETIF_CMD_PORTID           0xf
5367 #define V_FW_NETIF_CMD_PORTID(x)        ((x) << S_FW_NETIF_CMD_PORTID)
5368 #define G_FW_NETIF_CMD_PORTID(x)        \
5369     (((x) >> S_FW_NETIF_CMD_PORTID) & M_FW_NETIF_CMD_PORTID)
5370
5371 #define S_FW_NETIF_CMD_RETVAL           24
5372 #define M_FW_NETIF_CMD_RETVAL           0xff
5373 #define V_FW_NETIF_CMD_RETVAL(x)        ((x) << S_FW_NETIF_CMD_RETVAL)
5374 #define G_FW_NETIF_CMD_RETVAL(x)        \
5375     (((x) >> S_FW_NETIF_CMD_RETVAL) & M_FW_NETIF_CMD_RETVAL)
5376
5377 #define S_FW_NETIF_CMD_IFIDX    16
5378 #define M_FW_NETIF_CMD_IFIDX    0xff
5379 #define V_FW_NETIF_CMD_IFIDX(x) ((x) << S_FW_NETIF_CMD_IFIDX)
5380 #define G_FW_NETIF_CMD_IFIDX(x) \
5381     (((x) >> S_FW_NETIF_CMD_IFIDX) & M_FW_NETIF_CMD_IFIDX)
5382
5383 #define S_FW_NETIF_CMD_LEN16    0
5384 #define M_FW_NETIF_CMD_LEN16    0xff
5385 #define V_FW_NETIF_CMD_LEN16(x) ((x) << S_FW_NETIF_CMD_LEN16)
5386 #define G_FW_NETIF_CMD_LEN16(x) \
5387     (((x) >> S_FW_NETIF_CMD_LEN16) & M_FW_NETIF_CMD_LEN16)
5388
5389 #define S_FW_NETIF_CMD_ADD      31
5390 #define M_FW_NETIF_CMD_ADD      0x1
5391 #define V_FW_NETIF_CMD_ADD(x)   ((x) << S_FW_NETIF_CMD_ADD)
5392 #define G_FW_NETIF_CMD_ADD(x)   \
5393     (((x) >> S_FW_NETIF_CMD_ADD) & M_FW_NETIF_CMD_ADD)
5394 #define F_FW_NETIF_CMD_ADD      V_FW_NETIF_CMD_ADD(1U)
5395
5396 #define S_FW_NETIF_CMD_LINK     30
5397 #define M_FW_NETIF_CMD_LINK     0x1
5398 #define V_FW_NETIF_CMD_LINK(x)  ((x) << S_FW_NETIF_CMD_LINK)
5399 #define G_FW_NETIF_CMD_LINK(x)  \
5400     (((x) >> S_FW_NETIF_CMD_LINK) & M_FW_NETIF_CMD_LINK)
5401 #define F_FW_NETIF_CMD_LINK     V_FW_NETIF_CMD_LINK(1U)
5402
5403 #define S_FW_NETIF_CMD_VLAN     29
5404 #define M_FW_NETIF_CMD_VLAN     0x1
5405 #define V_FW_NETIF_CMD_VLAN(x)  ((x) << S_FW_NETIF_CMD_VLAN)
5406 #define G_FW_NETIF_CMD_VLAN(x)  \
5407     (((x) >> S_FW_NETIF_CMD_VLAN) & M_FW_NETIF_CMD_VLAN)
5408 #define F_FW_NETIF_CMD_VLAN     V_FW_NETIF_CMD_VLAN(1U)
5409
5410 #define S_FW_NETIF_CMD_MTU      28
5411 #define M_FW_NETIF_CMD_MTU      0x1
5412 #define V_FW_NETIF_CMD_MTU(x)   ((x) << S_FW_NETIF_CMD_MTU)
5413 #define G_FW_NETIF_CMD_MTU(x)   \
5414     (((x) >> S_FW_NETIF_CMD_MTU) & M_FW_NETIF_CMD_MTU)
5415 #define F_FW_NETIF_CMD_MTU      V_FW_NETIF_CMD_MTU(1U)
5416
5417 #define S_FW_NETIF_CMD_DHCP     27
5418 #define M_FW_NETIF_CMD_DHCP     0x1
5419 #define V_FW_NETIF_CMD_DHCP(x)  ((x) << S_FW_NETIF_CMD_DHCP)
5420 #define G_FW_NETIF_CMD_DHCP(x)  \
5421     (((x) >> S_FW_NETIF_CMD_DHCP) & M_FW_NETIF_CMD_DHCP)
5422 #define F_FW_NETIF_CMD_DHCP     V_FW_NETIF_CMD_DHCP(1U)
5423
5424 #define S_FW_NETIF_CMD_IPV4BCADDR       3
5425 #define M_FW_NETIF_CMD_IPV4BCADDR       0x1
5426 #define V_FW_NETIF_CMD_IPV4BCADDR(x)    ((x) << S_FW_NETIF_CMD_IPV4BCADDR)
5427 #define G_FW_NETIF_CMD_IPV4BCADDR(x)    \
5428     (((x) >> S_FW_NETIF_CMD_IPV4BCADDR) & M_FW_NETIF_CMD_IPV4BCADDR)
5429 #define F_FW_NETIF_CMD_IPV4BCADDR       V_FW_NETIF_CMD_IPV4BCADDR(1U)
5430
5431 #define S_FW_NETIF_CMD_IPV4NMASK        2
5432 #define M_FW_NETIF_CMD_IPV4NMASK        0x1
5433 #define V_FW_NETIF_CMD_IPV4NMASK(x)     ((x) << S_FW_NETIF_CMD_IPV4NMASK)
5434 #define G_FW_NETIF_CMD_IPV4NMASK(x)     \
5435     (((x) >> S_FW_NETIF_CMD_IPV4NMASK) & M_FW_NETIF_CMD_IPV4NMASK)
5436 #define F_FW_NETIF_CMD_IPV4NMASK        V_FW_NETIF_CMD_IPV4NMASK(1U)
5437
5438 #define S_FW_NETIF_CMD_IPV4ADDR         1
5439 #define M_FW_NETIF_CMD_IPV4ADDR         0x1
5440 #define V_FW_NETIF_CMD_IPV4ADDR(x)      ((x) << S_FW_NETIF_CMD_IPV4ADDR)
5441 #define G_FW_NETIF_CMD_IPV4ADDR(x)      \
5442     (((x) >> S_FW_NETIF_CMD_IPV4ADDR) & M_FW_NETIF_CMD_IPV4ADDR)
5443 #define F_FW_NETIF_CMD_IPV4ADDR V_FW_NETIF_CMD_IPV4ADDR(1U)
5444
5445 #define S_FW_NETIF_CMD_IPV4GW           0
5446 #define M_FW_NETIF_CMD_IPV4GW           0x1
5447 #define V_FW_NETIF_CMD_IPV4GW(x)        ((x) << S_FW_NETIF_CMD_IPV4GW)
5448 #define G_FW_NETIF_CMD_IPV4GW(x)        \
5449     (((x) >> S_FW_NETIF_CMD_IPV4GW) & M_FW_NETIF_CMD_IPV4GW)
5450 #define F_FW_NETIF_CMD_IPV4GW   V_FW_NETIF_CMD_IPV4GW(1U)
5451
5452 #define S_FW_NETIF_CMD_VLANID           16
5453 #define M_FW_NETIF_CMD_VLANID           0xfff
5454 #define V_FW_NETIF_CMD_VLANID(x)        ((x) << S_FW_NETIF_CMD_VLANID)
5455 #define G_FW_NETIF_CMD_VLANID(x)        \
5456     (((x) >> S_FW_NETIF_CMD_VLANID) & M_FW_NETIF_CMD_VLANID)
5457
5458 #define S_FW_NETIF_CMD_MTUVAL           0
5459 #define M_FW_NETIF_CMD_MTUVAL           0xffff
5460 #define V_FW_NETIF_CMD_MTUVAL(x)        ((x) << S_FW_NETIF_CMD_MTUVAL)
5461 #define G_FW_NETIF_CMD_MTUVAL(x)        \
5462     (((x) >> S_FW_NETIF_CMD_MTUVAL) & M_FW_NETIF_CMD_MTUVAL)
5463
5464 enum fw_error_type {
5465         FW_ERROR_TYPE_EXCEPTION         = 0x0,
5466         FW_ERROR_TYPE_HWMODULE          = 0x1,
5467         FW_ERROR_TYPE_WR                = 0x2,
5468         FW_ERROR_TYPE_ACL               = 0x3,
5469 };
5470
5471 struct fw_error_cmd {
5472         __be32 op_to_type;
5473         __be32 len16_pkd;
5474         union fw_error {
5475                 struct fw_error_exception {
5476                         __be32 info[6];
5477                 } exception;
5478                 struct fw_error_hwmodule {
5479                         __be32 regaddr;
5480                         __be32 regval;
5481                 } hwmodule;
5482                 struct fw_error_wr {
5483                         __be16 cidx;
5484                         __be16 pfn_vfn;
5485                         __be32 eqid;
5486                         __u8   wrhdr[16];
5487                 } wr;
5488                 struct fw_error_acl {
5489                         __be16 cidx;
5490                         __be16 pfn_vfn;
5491                         __be32 eqid;
5492                         __be16 mv_pkd;
5493                         __u8   val[6];
5494                         __be64 r4;
5495                 } acl;
5496         } u;
5497 };
5498
5499 #define S_FW_ERROR_CMD_FATAL    4
5500 #define M_FW_ERROR_CMD_FATAL    0x1
5501 #define V_FW_ERROR_CMD_FATAL(x) ((x) << S_FW_ERROR_CMD_FATAL)
5502 #define G_FW_ERROR_CMD_FATAL(x) \
5503     (((x) >> S_FW_ERROR_CMD_FATAL) & M_FW_ERROR_CMD_FATAL)
5504 #define F_FW_ERROR_CMD_FATAL    V_FW_ERROR_CMD_FATAL(1U)
5505
5506 #define S_FW_ERROR_CMD_TYPE     0
5507 #define M_FW_ERROR_CMD_TYPE     0xf
5508 #define V_FW_ERROR_CMD_TYPE(x)  ((x) << S_FW_ERROR_CMD_TYPE)
5509 #define G_FW_ERROR_CMD_TYPE(x)  \
5510     (((x) >> S_FW_ERROR_CMD_TYPE) & M_FW_ERROR_CMD_TYPE)
5511
5512 #define S_FW_ERROR_CMD_PFN      8
5513 #define M_FW_ERROR_CMD_PFN      0x7
5514 #define V_FW_ERROR_CMD_PFN(x)   ((x) << S_FW_ERROR_CMD_PFN)
5515 #define G_FW_ERROR_CMD_PFN(x)   \
5516     (((x) >> S_FW_ERROR_CMD_PFN) & M_FW_ERROR_CMD_PFN)
5517
5518 #define S_FW_ERROR_CMD_VFN      0
5519 #define M_FW_ERROR_CMD_VFN      0xff
5520 #define V_FW_ERROR_CMD_VFN(x)   ((x) << S_FW_ERROR_CMD_VFN)
5521 #define G_FW_ERROR_CMD_VFN(x)   \
5522     (((x) >> S_FW_ERROR_CMD_VFN) & M_FW_ERROR_CMD_VFN)
5523
5524 #define S_FW_ERROR_CMD_PFN      8
5525 #define M_FW_ERROR_CMD_PFN      0x7
5526 #define V_FW_ERROR_CMD_PFN(x)   ((x) << S_FW_ERROR_CMD_PFN)
5527 #define G_FW_ERROR_CMD_PFN(x)   \
5528     (((x) >> S_FW_ERROR_CMD_PFN) & M_FW_ERROR_CMD_PFN)
5529
5530 #define S_FW_ERROR_CMD_VFN      0
5531 #define M_FW_ERROR_CMD_VFN      0xff
5532 #define V_FW_ERROR_CMD_VFN(x)   ((x) << S_FW_ERROR_CMD_VFN)
5533 #define G_FW_ERROR_CMD_VFN(x)   \
5534     (((x) >> S_FW_ERROR_CMD_VFN) & M_FW_ERROR_CMD_VFN)
5535
5536 #define S_FW_ERROR_CMD_MV       15
5537 #define M_FW_ERROR_CMD_MV       0x1
5538 #define V_FW_ERROR_CMD_MV(x)    ((x) << S_FW_ERROR_CMD_MV)
5539 #define G_FW_ERROR_CMD_MV(x)    \
5540     (((x) >> S_FW_ERROR_CMD_MV) & M_FW_ERROR_CMD_MV)
5541 #define F_FW_ERROR_CMD_MV       V_FW_ERROR_CMD_MV(1U)
5542
5543 struct fw_debug_cmd {
5544         __be32 op_type;
5545         __be32 len16_pkd;
5546         union fw_debug {
5547                 struct fw_debug_assert {
5548                         __be32 fcid;
5549                         __be32 line;
5550                         __be32 x;
5551                         __be32 y;
5552                         __u8   filename_0_7[8];
5553                         __u8   filename_8_15[8];
5554                         __be64 r3;
5555                 } assert;
5556                 struct fw_debug_prt {
5557                         __be16 dprtstridx;
5558                         __be16 r3[3];
5559                         __be32 dprtstrparam0;
5560                         __be32 dprtstrparam1;
5561                         __be32 dprtstrparam2;
5562                         __be32 dprtstrparam3;
5563                 } prt;
5564         } u;
5565 };
5566
5567 #define S_FW_DEBUG_CMD_TYPE     0
5568 #define M_FW_DEBUG_CMD_TYPE     0xff
5569 #define V_FW_DEBUG_CMD_TYPE(x)  ((x) << S_FW_DEBUG_CMD_TYPE)
5570 #define G_FW_DEBUG_CMD_TYPE(x)  \
5571     (((x) >> S_FW_DEBUG_CMD_TYPE) & M_FW_DEBUG_CMD_TYPE)
5572
5573 /******************************************************************************
5574  *   B I N A R Y   H E A D E R   F O R M A T
5575  **********************************************/
5576
5577 /*
5578  *      firmware binary header format
5579  */
5580 struct fw_hdr {
5581         __u8    ver;
5582         __u8    reserved1;
5583         __be16  len512;                 /* bin length in units of 512-bytes */
5584         __be32  fw_ver;                 /* firmware version */
5585         __be32  tp_microcode_ver;       /* tcp processor microcode version */
5586         __u8    intfver_nic;
5587         __u8    intfver_vnic;
5588         __u8    intfver_ofld;
5589         __u8    intfver_ri;
5590         __u8    intfver_iscsipdu;
5591         __u8    intfver_iscsi;
5592         __u8    intfver_fcoe;
5593         __u8    reserved2;
5594         __be32  reserved3[27];
5595 };
5596
5597 #define S_FW_HDR_FW_VER_MAJOR   24
5598 #define M_FW_HDR_FW_VER_MAJOR   0xff
5599 #define V_FW_HDR_FW_VER_MAJOR(x) \
5600     ((x) << S_FW_HDR_FW_VER_MAJOR)
5601 #define G_FW_HDR_FW_VER_MAJOR(x) \
5602     (((x) >> S_FW_HDR_FW_VER_MAJOR) & M_FW_HDR_FW_VER_MAJOR)
5603
5604 #define S_FW_HDR_FW_VER_MINOR   16
5605 #define M_FW_HDR_FW_VER_MINOR   0xff
5606 #define V_FW_HDR_FW_VER_MINOR(x) \
5607     ((x) << S_FW_HDR_FW_VER_MINOR)
5608 #define G_FW_HDR_FW_VER_MINOR(x) \
5609     (((x) >> S_FW_HDR_FW_VER_MINOR) & M_FW_HDR_FW_VER_MINOR)
5610
5611 #define S_FW_HDR_FW_VER_MICRO   8
5612 #define M_FW_HDR_FW_VER_MICRO   0xff
5613 #define V_FW_HDR_FW_VER_MICRO(x) \
5614     ((x) << S_FW_HDR_FW_VER_MICRO)
5615 #define G_FW_HDR_FW_VER_MICRO(x) \
5616     (((x) >> S_FW_HDR_FW_VER_MICRO) & M_FW_HDR_FW_VER_MICRO)
5617
5618 #define S_FW_HDR_FW_VER_BUILD   0
5619 #define M_FW_HDR_FW_VER_BUILD   0xff
5620 #define V_FW_HDR_FW_VER_BUILD(x) \
5621     ((x) << S_FW_HDR_FW_VER_BUILD)
5622 #define G_FW_HDR_FW_VER_BUILD(x) \
5623     (((x) >> S_FW_HDR_FW_VER_BUILD) & M_FW_HDR_FW_VER_BUILD)
5624
5625 #endif /* _T4FW_INTERFACE_H_ */