1f7917c00SJeff Kirsher /*
2f7917c00SJeff Kirsher  * This file is part of the Chelsio T4 Ethernet driver for Linux.
3f7917c00SJeff Kirsher  *
4b72a32daSRahul Lakkireddy  * Copyright (c) 2009-2016 Chelsio Communications, Inc. All rights reserved.
5f7917c00SJeff Kirsher  *
6f7917c00SJeff Kirsher  * This software is available to you under a choice of one of two
7f7917c00SJeff Kirsher  * licenses.  You may choose to be licensed under the terms of the GNU
8f7917c00SJeff Kirsher  * General Public License (GPL) Version 2, available from the file
9f7917c00SJeff Kirsher  * COPYING in the main directory of this source tree, or the
10f7917c00SJeff Kirsher  * OpenIB.org BSD license below:
11f7917c00SJeff Kirsher  *
12f7917c00SJeff Kirsher  *     Redistribution and use in source and binary forms, with or
13f7917c00SJeff Kirsher  *     without modification, are permitted provided that the following
14f7917c00SJeff Kirsher  *     conditions are met:
15f7917c00SJeff Kirsher  *
16f7917c00SJeff Kirsher  *      - Redistributions of source code must retain the above
17f7917c00SJeff Kirsher  *        copyright notice, this list of conditions and the following
18f7917c00SJeff Kirsher  *        disclaimer.
19f7917c00SJeff Kirsher  *
20f7917c00SJeff Kirsher  *      - Redistributions in binary form must reproduce the above
21f7917c00SJeff Kirsher  *        copyright notice, this list of conditions and the following
22f7917c00SJeff Kirsher  *        disclaimer in the documentation and/or other materials
23f7917c00SJeff Kirsher  *        provided with the distribution.
24f7917c00SJeff Kirsher  *
25f7917c00SJeff Kirsher  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
26f7917c00SJeff Kirsher  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
27f7917c00SJeff Kirsher  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
28f7917c00SJeff Kirsher  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
29f7917c00SJeff Kirsher  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
30f7917c00SJeff Kirsher  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
31f7917c00SJeff Kirsher  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
32f7917c00SJeff Kirsher  * SOFTWARE.
33f7917c00SJeff Kirsher  */
34f7917c00SJeff Kirsher 
35f7917c00SJeff Kirsher #ifndef _T4FW_INTERFACE_H_
36f7917c00SJeff Kirsher #define _T4FW_INTERFACE_H_
37f7917c00SJeff Kirsher 
385be78ee9SVipul Pandya enum fw_retval {
39dbedd44eSJoe Perches 	FW_SUCCESS		= 0,	/* completed successfully */
405be78ee9SVipul Pandya 	FW_EPERM		= 1,	/* operation not permitted */
415be78ee9SVipul Pandya 	FW_ENOENT		= 2,	/* no such file or directory */
425be78ee9SVipul Pandya 	FW_EIO			= 5,	/* input/output error; hw bad */
435be78ee9SVipul Pandya 	FW_ENOEXEC		= 8,	/* exec format error; inv microcode */
445be78ee9SVipul Pandya 	FW_EAGAIN		= 11,	/* try again */
455be78ee9SVipul Pandya 	FW_ENOMEM		= 12,	/* out of memory */
465be78ee9SVipul Pandya 	FW_EFAULT		= 14,	/* bad address; fw bad */
475be78ee9SVipul Pandya 	FW_EBUSY		= 16,	/* resource busy */
485be78ee9SVipul Pandya 	FW_EEXIST		= 17,	/* file exists */
49989594e2SAnish Bhatt 	FW_ENODEV		= 19,	/* no such device */
505be78ee9SVipul Pandya 	FW_EINVAL		= 22,	/* invalid argument */
515be78ee9SVipul Pandya 	FW_ENOSPC		= 28,	/* no space left on device */
525be78ee9SVipul Pandya 	FW_ENOSYS		= 38,	/* functionality not implemented */
53989594e2SAnish Bhatt 	FW_ENODATA		= 61,	/* no data available */
545be78ee9SVipul Pandya 	FW_EPROTO		= 71,	/* protocol error */
555be78ee9SVipul Pandya 	FW_EADDRINUSE		= 98,	/* address already in use */
565be78ee9SVipul Pandya 	FW_EADDRNOTAVAIL	= 99,	/* cannot assigned requested address */
575be78ee9SVipul Pandya 	FW_ENETDOWN		= 100,	/* network is down */
585be78ee9SVipul Pandya 	FW_ENETUNREACH		= 101,	/* network is unreachable */
595be78ee9SVipul Pandya 	FW_ENOBUFS		= 105,	/* no buffer space available */
605be78ee9SVipul Pandya 	FW_ETIMEDOUT		= 110,	/* timeout */
615be78ee9SVipul Pandya 	FW_EINPROGRESS		= 115,	/* fw internal */
625be78ee9SVipul Pandya 	FW_SCSI_ABORT_REQUESTED	= 128,	/* */
635be78ee9SVipul Pandya 	FW_SCSI_ABORT_TIMEDOUT	= 129,	/* */
645be78ee9SVipul Pandya 	FW_SCSI_ABORTED		= 130,	/* */
655be78ee9SVipul Pandya 	FW_SCSI_CLOSE_REQUESTED	= 131,	/* */
665be78ee9SVipul Pandya 	FW_ERR_LINK_DOWN	= 132,	/* */
675be78ee9SVipul Pandya 	FW_RDEV_NOT_READY	= 133,	/* */
685be78ee9SVipul Pandya 	FW_ERR_RDEV_LOST	= 134,	/* */
695be78ee9SVipul Pandya 	FW_ERR_RDEV_LOGO	= 135,	/* */
705be78ee9SVipul Pandya 	FW_FCOE_NO_XCHG		= 136,	/* */
715be78ee9SVipul Pandya 	FW_SCSI_RSP_ERR		= 137,	/* */
725be78ee9SVipul Pandya 	FW_ERR_RDEV_IMPL_LOGO	= 138,	/* */
735be78ee9SVipul Pandya 	FW_SCSI_UNDER_FLOW_ERR  = 139,	/* */
745be78ee9SVipul Pandya 	FW_SCSI_OVER_FLOW_ERR   = 140,	/* */
755be78ee9SVipul Pandya 	FW_SCSI_DDP_ERR		= 141,	/* DDP error*/
765be78ee9SVipul Pandya 	FW_SCSI_TASK_ERR	= 142,	/* No SCSI tasks available */
77f2b7e78dSVipul Pandya };
78f2b7e78dSVipul Pandya 
79f7917c00SJeff Kirsher #define FW_T4VF_SGE_BASE_ADDR      0x0000
80f7917c00SJeff Kirsher #define FW_T4VF_MPS_BASE_ADDR      0x0100
81f7917c00SJeff Kirsher #define FW_T4VF_PL_BASE_ADDR       0x0200
82f7917c00SJeff Kirsher #define FW_T4VF_MBDATA_BASE_ADDR   0x0240
83f7917c00SJeff Kirsher #define FW_T4VF_CIM_BASE_ADDR      0x0300
84f7917c00SJeff Kirsher 
85f7917c00SJeff Kirsher enum fw_wr_opcodes {
86f7917c00SJeff Kirsher 	FW_FILTER_WR                   = 0x02,
87f7917c00SJeff Kirsher 	FW_ULPTX_WR                    = 0x04,
88f7917c00SJeff Kirsher 	FW_TP_WR                       = 0x05,
89f7917c00SJeff Kirsher 	FW_ETH_TX_PKT_WR               = 0x08,
904846d533SRahul Lakkireddy 	FW_ETH_TX_EO_WR                = 0x1c,
915be78ee9SVipul Pandya 	FW_OFLD_CONNECTION_WR          = 0x2f,
92f7917c00SJeff Kirsher 	FW_FLOWC_WR                    = 0x0a,
93f7917c00SJeff Kirsher 	FW_OFLD_TX_DATA_WR             = 0x0b,
94f7917c00SJeff Kirsher 	FW_CMD_WR                      = 0x10,
95f7917c00SJeff Kirsher 	FW_ETH_TX_PKT_VM_WR            = 0x11,
96f7917c00SJeff Kirsher 	FW_RI_RES_WR                   = 0x0c,
97f7917c00SJeff Kirsher 	FW_RI_INIT_WR                  = 0x0d,
98f7917c00SJeff Kirsher 	FW_RI_RDMA_WRITE_WR            = 0x14,
99f7917c00SJeff Kirsher 	FW_RI_SEND_WR                  = 0x15,
100f7917c00SJeff Kirsher 	FW_RI_RDMA_READ_WR             = 0x16,
101f7917c00SJeff Kirsher 	FW_RI_RECV_WR                  = 0x17,
102f7917c00SJeff Kirsher 	FW_RI_BIND_MW_WR               = 0x18,
103f7917c00SJeff Kirsher 	FW_RI_FR_NSMR_WR               = 0x19,
10449b53a93SSteve Wise 	FW_RI_FR_NSMR_TPTE_WR	       = 0x20,
105f3910c62SRaju Rangoju 	FW_RI_RDMA_WRITE_CMPL_WR       = 0x21,
106f7917c00SJeff Kirsher 	FW_RI_INV_LSTAG_WR             = 0x1a,
107b96c5cbbSVarun Prakash 	FW_ISCSI_TX_DATA_WR	       = 0x45,
108a4569504SAtul Gupta 	FW_PTP_TX_PKT_WR               = 0x46,
109e1087089SAtul Gupta 	FW_TLSTX_DATA_WR	       = 0x68,
110d6657781SHariprasad Shenai 	FW_CRYPTO_LOOKASIDE_WR         = 0X6d,
1110ff90994SKumar Sanghvi 	FW_LASTC2E_WR                  = 0x70,
1120ff90994SKumar Sanghvi 	FW_FILTER2_WR		       = 0x77
113f7917c00SJeff Kirsher };
114f7917c00SJeff Kirsher 
115f7917c00SJeff Kirsher struct fw_wr_hdr {
116f7917c00SJeff Kirsher 	__be32 hi;
117f7917c00SJeff Kirsher 	__be32 lo;
118f7917c00SJeff Kirsher };
119f7917c00SJeff Kirsher 
120e2ac9628SHariprasad Shenai /* work request opcode (hi) */
121e2ac9628SHariprasad Shenai #define FW_WR_OP_S	24
122e2ac9628SHariprasad Shenai #define FW_WR_OP_M      0xff
123e2ac9628SHariprasad Shenai #define FW_WR_OP_V(x)   ((x) << FW_WR_OP_S)
124e2ac9628SHariprasad Shenai #define FW_WR_OP_G(x)   (((x) >> FW_WR_OP_S) & FW_WR_OP_M)
125f7917c00SJeff Kirsher 
126e2ac9628SHariprasad Shenai /* atomic flag (hi) - firmware encapsulates CPLs in CPL_BARRIER */
127e2ac9628SHariprasad Shenai #define FW_WR_ATOMIC_S		23
128e2ac9628SHariprasad Shenai #define FW_WR_ATOMIC_V(x)	((x) << FW_WR_ATOMIC_S)
129e2ac9628SHariprasad Shenai 
130e2ac9628SHariprasad Shenai /* flush flag (hi) - firmware flushes flushable work request buffered
131e2ac9628SHariprasad Shenai  * in the flow context.
132e2ac9628SHariprasad Shenai  */
133e2ac9628SHariprasad Shenai #define FW_WR_FLUSH_S     22
134e2ac9628SHariprasad Shenai #define FW_WR_FLUSH_V(x)  ((x) << FW_WR_FLUSH_S)
135e2ac9628SHariprasad Shenai 
136e2ac9628SHariprasad Shenai /* completion flag (hi) - firmware generates a cpl_fw6_ack */
137e2ac9628SHariprasad Shenai #define FW_WR_COMPL_S     21
138e2ac9628SHariprasad Shenai #define FW_WR_COMPL_V(x)  ((x) << FW_WR_COMPL_S)
139e2ac9628SHariprasad Shenai #define FW_WR_COMPL_F     FW_WR_COMPL_V(1U)
140e2ac9628SHariprasad Shenai 
141e2ac9628SHariprasad Shenai /* work request immediate data length (hi) */
142e2ac9628SHariprasad Shenai #define FW_WR_IMMDLEN_S 0
143e2ac9628SHariprasad Shenai #define FW_WR_IMMDLEN_M 0xff
144e2ac9628SHariprasad Shenai #define FW_WR_IMMDLEN_V(x)      ((x) << FW_WR_IMMDLEN_S)
145e2ac9628SHariprasad Shenai 
146e2ac9628SHariprasad Shenai /* egress queue status update to associated ingress queue entry (lo) */
147e2ac9628SHariprasad Shenai #define FW_WR_EQUIQ_S           31
148e2ac9628SHariprasad Shenai #define FW_WR_EQUIQ_V(x)        ((x) << FW_WR_EQUIQ_S)
149e2ac9628SHariprasad Shenai #define FW_WR_EQUIQ_F           FW_WR_EQUIQ_V(1U)
150e2ac9628SHariprasad Shenai 
151e2ac9628SHariprasad Shenai /* egress queue status update to egress queue status entry (lo) */
152e2ac9628SHariprasad Shenai #define FW_WR_EQUEQ_S           30
153e2ac9628SHariprasad Shenai #define FW_WR_EQUEQ_V(x)        ((x) << FW_WR_EQUEQ_S)
154e2ac9628SHariprasad Shenai #define FW_WR_EQUEQ_F           FW_WR_EQUEQ_V(1U)
155e2ac9628SHariprasad Shenai 
156e2ac9628SHariprasad Shenai /* flow context identifier (lo) */
157e2ac9628SHariprasad Shenai #define FW_WR_FLOWID_S          8
158e2ac9628SHariprasad Shenai #define FW_WR_FLOWID_V(x)       ((x) << FW_WR_FLOWID_S)
159e2ac9628SHariprasad Shenai 
160e2ac9628SHariprasad Shenai /* length in units of 16-bytes (lo) */
161e2ac9628SHariprasad Shenai #define FW_WR_LEN16_S           0
162e2ac9628SHariprasad Shenai #define FW_WR_LEN16_V(x)        ((x) << FW_WR_LEN16_S)
163f7917c00SJeff Kirsher 
16413ee15d3SVipul Pandya #define HW_TPL_FR_MT_PR_IV_P_FC         0X32B
1655be78ee9SVipul Pandya #define HW_TPL_FR_MT_PR_OV_P_FC         0X327
16613ee15d3SVipul Pandya 
167f2b7e78dSVipul Pandya /* filter wr reply code in cookie in CPL_SET_TCB_RPL */
168f2b7e78dSVipul Pandya enum fw_filter_wr_cookie {
169f2b7e78dSVipul Pandya 	FW_FILTER_WR_SUCCESS,
170f2b7e78dSVipul Pandya 	FW_FILTER_WR_FLT_ADDED,
171f2b7e78dSVipul Pandya 	FW_FILTER_WR_FLT_DELETED,
172f2b7e78dSVipul Pandya 	FW_FILTER_WR_SMT_TBL_FULL,
173f2b7e78dSVipul Pandya 	FW_FILTER_WR_EINVAL,
174f2b7e78dSVipul Pandya };
175f2b7e78dSVipul Pandya 
176f2b7e78dSVipul Pandya struct fw_filter_wr {
177f2b7e78dSVipul Pandya 	__be32 op_pkd;
178f2b7e78dSVipul Pandya 	__be32 len16_pkd;
179f2b7e78dSVipul Pandya 	__be64 r3;
180f2b7e78dSVipul Pandya 	__be32 tid_to_iq;
181f2b7e78dSVipul Pandya 	__be32 del_filter_to_l2tix;
182f2b7e78dSVipul Pandya 	__be16 ethtype;
183f2b7e78dSVipul Pandya 	__be16 ethtypem;
184f2b7e78dSVipul Pandya 	__u8   frag_to_ovlan_vldm;
185f2b7e78dSVipul Pandya 	__u8   smac_sel;
186f2b7e78dSVipul Pandya 	__be16 rx_chan_rx_rpl_iq;
187f2b7e78dSVipul Pandya 	__be32 maci_to_matchtypem;
188f2b7e78dSVipul Pandya 	__u8   ptcl;
189f2b7e78dSVipul Pandya 	__u8   ptclm;
190f2b7e78dSVipul Pandya 	__u8   ttyp;
191f2b7e78dSVipul Pandya 	__u8   ttypm;
192f2b7e78dSVipul Pandya 	__be16 ivlan;
193f2b7e78dSVipul Pandya 	__be16 ivlanm;
194f2b7e78dSVipul Pandya 	__be16 ovlan;
195f2b7e78dSVipul Pandya 	__be16 ovlanm;
196f2b7e78dSVipul Pandya 	__u8   lip[16];
197f2b7e78dSVipul Pandya 	__u8   lipm[16];
198f2b7e78dSVipul Pandya 	__u8   fip[16];
199f2b7e78dSVipul Pandya 	__u8   fipm[16];
200f2b7e78dSVipul Pandya 	__be16 lp;
201f2b7e78dSVipul Pandya 	__be16 lpm;
202f2b7e78dSVipul Pandya 	__be16 fp;
203f2b7e78dSVipul Pandya 	__be16 fpm;
204f2b7e78dSVipul Pandya 	__be16 r7;
205f2b7e78dSVipul Pandya 	__u8   sma[6];
206f2b7e78dSVipul Pandya };
207f2b7e78dSVipul Pandya 
2080ff90994SKumar Sanghvi struct fw_filter2_wr {
2090ff90994SKumar Sanghvi 	__be32 op_pkd;
2100ff90994SKumar Sanghvi 	__be32 len16_pkd;
2110ff90994SKumar Sanghvi 	__be64 r3;
2120ff90994SKumar Sanghvi 	__be32 tid_to_iq;
2130ff90994SKumar Sanghvi 	__be32 del_filter_to_l2tix;
2140ff90994SKumar Sanghvi 	__be16 ethtype;
2150ff90994SKumar Sanghvi 	__be16 ethtypem;
2160ff90994SKumar Sanghvi 	__u8   frag_to_ovlan_vldm;
2170ff90994SKumar Sanghvi 	__u8   smac_sel;
2180ff90994SKumar Sanghvi 	__be16 rx_chan_rx_rpl_iq;
2190ff90994SKumar Sanghvi 	__be32 maci_to_matchtypem;
2200ff90994SKumar Sanghvi 	__u8   ptcl;
2210ff90994SKumar Sanghvi 	__u8   ptclm;
2220ff90994SKumar Sanghvi 	__u8   ttyp;
2230ff90994SKumar Sanghvi 	__u8   ttypm;
2240ff90994SKumar Sanghvi 	__be16 ivlan;
2250ff90994SKumar Sanghvi 	__be16 ivlanm;
2260ff90994SKumar Sanghvi 	__be16 ovlan;
2270ff90994SKumar Sanghvi 	__be16 ovlanm;
2280ff90994SKumar Sanghvi 	__u8   lip[16];
2290ff90994SKumar Sanghvi 	__u8   lipm[16];
2300ff90994SKumar Sanghvi 	__u8   fip[16];
2310ff90994SKumar Sanghvi 	__u8   fipm[16];
2320ff90994SKumar Sanghvi 	__be16 lp;
2330ff90994SKumar Sanghvi 	__be16 lpm;
2340ff90994SKumar Sanghvi 	__be16 fp;
2350ff90994SKumar Sanghvi 	__be16 fpm;
2360ff90994SKumar Sanghvi 	__be16 r7;
2370ff90994SKumar Sanghvi 	__u8   sma[6];
2380ff90994SKumar Sanghvi 	__be16 r8;
2390ff90994SKumar Sanghvi 	__u8   filter_type_swapmac;
2400ff90994SKumar Sanghvi 	__u8   natmode_to_ulp_type;
2410ff90994SKumar Sanghvi 	__be16 newlport;
2420ff90994SKumar Sanghvi 	__be16 newfport;
2430ff90994SKumar Sanghvi 	__u8   newlip[16];
2440ff90994SKumar Sanghvi 	__u8   newfip[16];
2450ff90994SKumar Sanghvi 	__be32 natseqcheck;
2460ff90994SKumar Sanghvi 	__be32 r9;
2470ff90994SKumar Sanghvi 	__be64 r10;
2480ff90994SKumar Sanghvi 	__be64 r11;
2490ff90994SKumar Sanghvi 	__be64 r12;
2500ff90994SKumar Sanghvi 	__be64 r13;
2510ff90994SKumar Sanghvi };
2520ff90994SKumar Sanghvi 
25377a80e23SHariprasad Shenai #define FW_FILTER_WR_TID_S      12
25477a80e23SHariprasad Shenai #define FW_FILTER_WR_TID_M      0xfffff
25577a80e23SHariprasad Shenai #define FW_FILTER_WR_TID_V(x)   ((x) << FW_FILTER_WR_TID_S)
25677a80e23SHariprasad Shenai #define FW_FILTER_WR_TID_G(x)   \
25777a80e23SHariprasad Shenai 	(((x) >> FW_FILTER_WR_TID_S) & FW_FILTER_WR_TID_M)
258f2b7e78dSVipul Pandya 
25977a80e23SHariprasad Shenai #define FW_FILTER_WR_RQTYPE_S           11
26077a80e23SHariprasad Shenai #define FW_FILTER_WR_RQTYPE_M           0x1
26177a80e23SHariprasad Shenai #define FW_FILTER_WR_RQTYPE_V(x)        ((x) << FW_FILTER_WR_RQTYPE_S)
26277a80e23SHariprasad Shenai #define FW_FILTER_WR_RQTYPE_G(x)        \
26377a80e23SHariprasad Shenai 	(((x) >> FW_FILTER_WR_RQTYPE_S) & FW_FILTER_WR_RQTYPE_M)
26477a80e23SHariprasad Shenai #define FW_FILTER_WR_RQTYPE_F   FW_FILTER_WR_RQTYPE_V(1U)
265f2b7e78dSVipul Pandya 
26677a80e23SHariprasad Shenai #define FW_FILTER_WR_NOREPLY_S          10
26777a80e23SHariprasad Shenai #define FW_FILTER_WR_NOREPLY_M          0x1
26877a80e23SHariprasad Shenai #define FW_FILTER_WR_NOREPLY_V(x)       ((x) << FW_FILTER_WR_NOREPLY_S)
26977a80e23SHariprasad Shenai #define FW_FILTER_WR_NOREPLY_G(x)       \
27077a80e23SHariprasad Shenai 	(((x) >> FW_FILTER_WR_NOREPLY_S) & FW_FILTER_WR_NOREPLY_M)
27177a80e23SHariprasad Shenai #define FW_FILTER_WR_NOREPLY_F  FW_FILTER_WR_NOREPLY_V(1U)
272f2b7e78dSVipul Pandya 
27377a80e23SHariprasad Shenai #define FW_FILTER_WR_IQ_S       0
27477a80e23SHariprasad Shenai #define FW_FILTER_WR_IQ_M       0x3ff
27577a80e23SHariprasad Shenai #define FW_FILTER_WR_IQ_V(x)    ((x) << FW_FILTER_WR_IQ_S)
27677a80e23SHariprasad Shenai #define FW_FILTER_WR_IQ_G(x)    \
27777a80e23SHariprasad Shenai 	(((x) >> FW_FILTER_WR_IQ_S) & FW_FILTER_WR_IQ_M)
278f2b7e78dSVipul Pandya 
27977a80e23SHariprasad Shenai #define FW_FILTER_WR_DEL_FILTER_S       31
28077a80e23SHariprasad Shenai #define FW_FILTER_WR_DEL_FILTER_M       0x1
28177a80e23SHariprasad Shenai #define FW_FILTER_WR_DEL_FILTER_V(x)    ((x) << FW_FILTER_WR_DEL_FILTER_S)
28277a80e23SHariprasad Shenai #define FW_FILTER_WR_DEL_FILTER_G(x)    \
28377a80e23SHariprasad Shenai 	(((x) >> FW_FILTER_WR_DEL_FILTER_S) & FW_FILTER_WR_DEL_FILTER_M)
28477a80e23SHariprasad Shenai #define FW_FILTER_WR_DEL_FILTER_F       FW_FILTER_WR_DEL_FILTER_V(1U)
285f2b7e78dSVipul Pandya 
28677a80e23SHariprasad Shenai #define FW_FILTER_WR_RPTTID_S           25
28777a80e23SHariprasad Shenai #define FW_FILTER_WR_RPTTID_M           0x1
28877a80e23SHariprasad Shenai #define FW_FILTER_WR_RPTTID_V(x)        ((x) << FW_FILTER_WR_RPTTID_S)
28977a80e23SHariprasad Shenai #define FW_FILTER_WR_RPTTID_G(x)        \
29077a80e23SHariprasad Shenai 	(((x) >> FW_FILTER_WR_RPTTID_S) & FW_FILTER_WR_RPTTID_M)
29177a80e23SHariprasad Shenai #define FW_FILTER_WR_RPTTID_F   FW_FILTER_WR_RPTTID_V(1U)
292f2b7e78dSVipul Pandya 
29377a80e23SHariprasad Shenai #define FW_FILTER_WR_DROP_S     24
29477a80e23SHariprasad Shenai #define FW_FILTER_WR_DROP_M     0x1
29577a80e23SHariprasad Shenai #define FW_FILTER_WR_DROP_V(x)  ((x) << FW_FILTER_WR_DROP_S)
29677a80e23SHariprasad Shenai #define FW_FILTER_WR_DROP_G(x)  \
29777a80e23SHariprasad Shenai 	(((x) >> FW_FILTER_WR_DROP_S) & FW_FILTER_WR_DROP_M)
29877a80e23SHariprasad Shenai #define FW_FILTER_WR_DROP_F     FW_FILTER_WR_DROP_V(1U)
299f2b7e78dSVipul Pandya 
30077a80e23SHariprasad Shenai #define FW_FILTER_WR_DIRSTEER_S         23
30177a80e23SHariprasad Shenai #define FW_FILTER_WR_DIRSTEER_M         0x1
30277a80e23SHariprasad Shenai #define FW_FILTER_WR_DIRSTEER_V(x)      ((x) << FW_FILTER_WR_DIRSTEER_S)
30377a80e23SHariprasad Shenai #define FW_FILTER_WR_DIRSTEER_G(x)      \
30477a80e23SHariprasad Shenai 	(((x) >> FW_FILTER_WR_DIRSTEER_S) & FW_FILTER_WR_DIRSTEER_M)
30577a80e23SHariprasad Shenai #define FW_FILTER_WR_DIRSTEER_F FW_FILTER_WR_DIRSTEER_V(1U)
306f2b7e78dSVipul Pandya 
30777a80e23SHariprasad Shenai #define FW_FILTER_WR_MASKHASH_S         22
30877a80e23SHariprasad Shenai #define FW_FILTER_WR_MASKHASH_M         0x1
30977a80e23SHariprasad Shenai #define FW_FILTER_WR_MASKHASH_V(x)      ((x) << FW_FILTER_WR_MASKHASH_S)
31077a80e23SHariprasad Shenai #define FW_FILTER_WR_MASKHASH_G(x)      \
31177a80e23SHariprasad Shenai 	(((x) >> FW_FILTER_WR_MASKHASH_S) & FW_FILTER_WR_MASKHASH_M)
31277a80e23SHariprasad Shenai #define FW_FILTER_WR_MASKHASH_F FW_FILTER_WR_MASKHASH_V(1U)
313f2b7e78dSVipul Pandya 
31477a80e23SHariprasad Shenai #define FW_FILTER_WR_DIRSTEERHASH_S     21
31577a80e23SHariprasad Shenai #define FW_FILTER_WR_DIRSTEERHASH_M     0x1
31677a80e23SHariprasad Shenai #define FW_FILTER_WR_DIRSTEERHASH_V(x)  ((x) << FW_FILTER_WR_DIRSTEERHASH_S)
31777a80e23SHariprasad Shenai #define FW_FILTER_WR_DIRSTEERHASH_G(x)  \
31877a80e23SHariprasad Shenai 	(((x) >> FW_FILTER_WR_DIRSTEERHASH_S) & FW_FILTER_WR_DIRSTEERHASH_M)
31977a80e23SHariprasad Shenai #define FW_FILTER_WR_DIRSTEERHASH_F     FW_FILTER_WR_DIRSTEERHASH_V(1U)
320f2b7e78dSVipul Pandya 
32177a80e23SHariprasad Shenai #define FW_FILTER_WR_LPBK_S     20
32277a80e23SHariprasad Shenai #define FW_FILTER_WR_LPBK_M     0x1
32377a80e23SHariprasad Shenai #define FW_FILTER_WR_LPBK_V(x)  ((x) << FW_FILTER_WR_LPBK_S)
32477a80e23SHariprasad Shenai #define FW_FILTER_WR_LPBK_G(x)  \
32577a80e23SHariprasad Shenai 	(((x) >> FW_FILTER_WR_LPBK_S) & FW_FILTER_WR_LPBK_M)
32677a80e23SHariprasad Shenai #define FW_FILTER_WR_LPBK_F     FW_FILTER_WR_LPBK_V(1U)
327f2b7e78dSVipul Pandya 
32877a80e23SHariprasad Shenai #define FW_FILTER_WR_DMAC_S     19
32977a80e23SHariprasad Shenai #define FW_FILTER_WR_DMAC_M     0x1
33077a80e23SHariprasad Shenai #define FW_FILTER_WR_DMAC_V(x)  ((x) << FW_FILTER_WR_DMAC_S)
33177a80e23SHariprasad Shenai #define FW_FILTER_WR_DMAC_G(x)  \
33277a80e23SHariprasad Shenai 	(((x) >> FW_FILTER_WR_DMAC_S) & FW_FILTER_WR_DMAC_M)
33377a80e23SHariprasad Shenai #define FW_FILTER_WR_DMAC_F     FW_FILTER_WR_DMAC_V(1U)
334f2b7e78dSVipul Pandya 
33577a80e23SHariprasad Shenai #define FW_FILTER_WR_SMAC_S     18
33677a80e23SHariprasad Shenai #define FW_FILTER_WR_SMAC_M     0x1
33777a80e23SHariprasad Shenai #define FW_FILTER_WR_SMAC_V(x)  ((x) << FW_FILTER_WR_SMAC_S)
33877a80e23SHariprasad Shenai #define FW_FILTER_WR_SMAC_G(x)  \
33977a80e23SHariprasad Shenai 	(((x) >> FW_FILTER_WR_SMAC_S) & FW_FILTER_WR_SMAC_M)
34077a80e23SHariprasad Shenai #define FW_FILTER_WR_SMAC_F     FW_FILTER_WR_SMAC_V(1U)
341f2b7e78dSVipul Pandya 
34277a80e23SHariprasad Shenai #define FW_FILTER_WR_INSVLAN_S          17
34377a80e23SHariprasad Shenai #define FW_FILTER_WR_INSVLAN_M          0x1
34477a80e23SHariprasad Shenai #define FW_FILTER_WR_INSVLAN_V(x)       ((x) << FW_FILTER_WR_INSVLAN_S)
34577a80e23SHariprasad Shenai #define FW_FILTER_WR_INSVLAN_G(x)       \
34677a80e23SHariprasad Shenai 	(((x) >> FW_FILTER_WR_INSVLAN_S) & FW_FILTER_WR_INSVLAN_M)
34777a80e23SHariprasad Shenai #define FW_FILTER_WR_INSVLAN_F  FW_FILTER_WR_INSVLAN_V(1U)
348f2b7e78dSVipul Pandya 
34977a80e23SHariprasad Shenai #define FW_FILTER_WR_RMVLAN_S           16
35077a80e23SHariprasad Shenai #define FW_FILTER_WR_RMVLAN_M           0x1
35177a80e23SHariprasad Shenai #define FW_FILTER_WR_RMVLAN_V(x)        ((x) << FW_FILTER_WR_RMVLAN_S)
35277a80e23SHariprasad Shenai #define FW_FILTER_WR_RMVLAN_G(x)        \
35377a80e23SHariprasad Shenai 	(((x) >> FW_FILTER_WR_RMVLAN_S) & FW_FILTER_WR_RMVLAN_M)
35477a80e23SHariprasad Shenai #define FW_FILTER_WR_RMVLAN_F   FW_FILTER_WR_RMVLAN_V(1U)
355f2b7e78dSVipul Pandya 
35677a80e23SHariprasad Shenai #define FW_FILTER_WR_HITCNTS_S          15
35777a80e23SHariprasad Shenai #define FW_FILTER_WR_HITCNTS_M          0x1
35877a80e23SHariprasad Shenai #define FW_FILTER_WR_HITCNTS_V(x)       ((x) << FW_FILTER_WR_HITCNTS_S)
35977a80e23SHariprasad Shenai #define FW_FILTER_WR_HITCNTS_G(x)       \
36077a80e23SHariprasad Shenai 	(((x) >> FW_FILTER_WR_HITCNTS_S) & FW_FILTER_WR_HITCNTS_M)
36177a80e23SHariprasad Shenai #define FW_FILTER_WR_HITCNTS_F  FW_FILTER_WR_HITCNTS_V(1U)
362f2b7e78dSVipul Pandya 
36377a80e23SHariprasad Shenai #define FW_FILTER_WR_TXCHAN_S           13
36477a80e23SHariprasad Shenai #define FW_FILTER_WR_TXCHAN_M           0x3
36577a80e23SHariprasad Shenai #define FW_FILTER_WR_TXCHAN_V(x)        ((x) << FW_FILTER_WR_TXCHAN_S)
36677a80e23SHariprasad Shenai #define FW_FILTER_WR_TXCHAN_G(x)        \
36777a80e23SHariprasad Shenai 	(((x) >> FW_FILTER_WR_TXCHAN_S) & FW_FILTER_WR_TXCHAN_M)
368f2b7e78dSVipul Pandya 
36977a80e23SHariprasad Shenai #define FW_FILTER_WR_PRIO_S     12
37077a80e23SHariprasad Shenai #define FW_FILTER_WR_PRIO_M     0x1
37177a80e23SHariprasad Shenai #define FW_FILTER_WR_PRIO_V(x)  ((x) << FW_FILTER_WR_PRIO_S)
37277a80e23SHariprasad Shenai #define FW_FILTER_WR_PRIO_G(x)  \
37377a80e23SHariprasad Shenai 	(((x) >> FW_FILTER_WR_PRIO_S) & FW_FILTER_WR_PRIO_M)
37477a80e23SHariprasad Shenai #define FW_FILTER_WR_PRIO_F     FW_FILTER_WR_PRIO_V(1U)
375f2b7e78dSVipul Pandya 
37677a80e23SHariprasad Shenai #define FW_FILTER_WR_L2TIX_S    0
37777a80e23SHariprasad Shenai #define FW_FILTER_WR_L2TIX_M    0xfff
37877a80e23SHariprasad Shenai #define FW_FILTER_WR_L2TIX_V(x) ((x) << FW_FILTER_WR_L2TIX_S)
37977a80e23SHariprasad Shenai #define FW_FILTER_WR_L2TIX_G(x) \
38077a80e23SHariprasad Shenai 	(((x) >> FW_FILTER_WR_L2TIX_S) & FW_FILTER_WR_L2TIX_M)
381f2b7e78dSVipul Pandya 
38277a80e23SHariprasad Shenai #define FW_FILTER_WR_FRAG_S     7
38377a80e23SHariprasad Shenai #define FW_FILTER_WR_FRAG_M     0x1
38477a80e23SHariprasad Shenai #define FW_FILTER_WR_FRAG_V(x)  ((x) << FW_FILTER_WR_FRAG_S)
38577a80e23SHariprasad Shenai #define FW_FILTER_WR_FRAG_G(x)  \
38677a80e23SHariprasad Shenai 	(((x) >> FW_FILTER_WR_FRAG_S) & FW_FILTER_WR_FRAG_M)
38777a80e23SHariprasad Shenai #define FW_FILTER_WR_FRAG_F     FW_FILTER_WR_FRAG_V(1U)
388f2b7e78dSVipul Pandya 
38977a80e23SHariprasad Shenai #define FW_FILTER_WR_FRAGM_S    6
39077a80e23SHariprasad Shenai #define FW_FILTER_WR_FRAGM_M    0x1
39177a80e23SHariprasad Shenai #define FW_FILTER_WR_FRAGM_V(x) ((x) << FW_FILTER_WR_FRAGM_S)
39277a80e23SHariprasad Shenai #define FW_FILTER_WR_FRAGM_G(x) \
39377a80e23SHariprasad Shenai 	(((x) >> FW_FILTER_WR_FRAGM_S) & FW_FILTER_WR_FRAGM_M)
39477a80e23SHariprasad Shenai #define FW_FILTER_WR_FRAGM_F    FW_FILTER_WR_FRAGM_V(1U)
395f2b7e78dSVipul Pandya 
39677a80e23SHariprasad Shenai #define FW_FILTER_WR_IVLAN_VLD_S        5
39777a80e23SHariprasad Shenai #define FW_FILTER_WR_IVLAN_VLD_M        0x1
39877a80e23SHariprasad Shenai #define FW_FILTER_WR_IVLAN_VLD_V(x)     ((x) << FW_FILTER_WR_IVLAN_VLD_S)
39977a80e23SHariprasad Shenai #define FW_FILTER_WR_IVLAN_VLD_G(x)     \
40077a80e23SHariprasad Shenai 	(((x) >> FW_FILTER_WR_IVLAN_VLD_S) & FW_FILTER_WR_IVLAN_VLD_M)
40177a80e23SHariprasad Shenai #define FW_FILTER_WR_IVLAN_VLD_F        FW_FILTER_WR_IVLAN_VLD_V(1U)
402f2b7e78dSVipul Pandya 
40377a80e23SHariprasad Shenai #define FW_FILTER_WR_OVLAN_VLD_S        4
40477a80e23SHariprasad Shenai #define FW_FILTER_WR_OVLAN_VLD_M        0x1
40577a80e23SHariprasad Shenai #define FW_FILTER_WR_OVLAN_VLD_V(x)     ((x) << FW_FILTER_WR_OVLAN_VLD_S)
40677a80e23SHariprasad Shenai #define FW_FILTER_WR_OVLAN_VLD_G(x)     \
40777a80e23SHariprasad Shenai 	(((x) >> FW_FILTER_WR_OVLAN_VLD_S) & FW_FILTER_WR_OVLAN_VLD_M)
40877a80e23SHariprasad Shenai #define FW_FILTER_WR_OVLAN_VLD_F        FW_FILTER_WR_OVLAN_VLD_V(1U)
409f2b7e78dSVipul Pandya 
41077a80e23SHariprasad Shenai #define FW_FILTER_WR_IVLAN_VLDM_S       3
41177a80e23SHariprasad Shenai #define FW_FILTER_WR_IVLAN_VLDM_M       0x1
41277a80e23SHariprasad Shenai #define FW_FILTER_WR_IVLAN_VLDM_V(x)    ((x) << FW_FILTER_WR_IVLAN_VLDM_S)
41377a80e23SHariprasad Shenai #define FW_FILTER_WR_IVLAN_VLDM_G(x)    \
41477a80e23SHariprasad Shenai 	(((x) >> FW_FILTER_WR_IVLAN_VLDM_S) & FW_FILTER_WR_IVLAN_VLDM_M)
41577a80e23SHariprasad Shenai #define FW_FILTER_WR_IVLAN_VLDM_F       FW_FILTER_WR_IVLAN_VLDM_V(1U)
416f2b7e78dSVipul Pandya 
41777a80e23SHariprasad Shenai #define FW_FILTER_WR_OVLAN_VLDM_S       2
41877a80e23SHariprasad Shenai #define FW_FILTER_WR_OVLAN_VLDM_M       0x1
41977a80e23SHariprasad Shenai #define FW_FILTER_WR_OVLAN_VLDM_V(x)    ((x) << FW_FILTER_WR_OVLAN_VLDM_S)
42077a80e23SHariprasad Shenai #define FW_FILTER_WR_OVLAN_VLDM_G(x)    \
42177a80e23SHariprasad Shenai 	(((x) >> FW_FILTER_WR_OVLAN_VLDM_S) & FW_FILTER_WR_OVLAN_VLDM_M)
42277a80e23SHariprasad Shenai #define FW_FILTER_WR_OVLAN_VLDM_F       FW_FILTER_WR_OVLAN_VLDM_V(1U)
423f2b7e78dSVipul Pandya 
42477a80e23SHariprasad Shenai #define FW_FILTER_WR_RX_CHAN_S          15
42577a80e23SHariprasad Shenai #define FW_FILTER_WR_RX_CHAN_M          0x1
42677a80e23SHariprasad Shenai #define FW_FILTER_WR_RX_CHAN_V(x)       ((x) << FW_FILTER_WR_RX_CHAN_S)
42777a80e23SHariprasad Shenai #define FW_FILTER_WR_RX_CHAN_G(x)       \
42877a80e23SHariprasad Shenai 	(((x) >> FW_FILTER_WR_RX_CHAN_S) & FW_FILTER_WR_RX_CHAN_M)
42977a80e23SHariprasad Shenai #define FW_FILTER_WR_RX_CHAN_F  FW_FILTER_WR_RX_CHAN_V(1U)
430f2b7e78dSVipul Pandya 
43177a80e23SHariprasad Shenai #define FW_FILTER_WR_RX_RPL_IQ_S        0
43277a80e23SHariprasad Shenai #define FW_FILTER_WR_RX_RPL_IQ_M        0x3ff
43377a80e23SHariprasad Shenai #define FW_FILTER_WR_RX_RPL_IQ_V(x)     ((x) << FW_FILTER_WR_RX_RPL_IQ_S)
43477a80e23SHariprasad Shenai #define FW_FILTER_WR_RX_RPL_IQ_G(x)     \
43577a80e23SHariprasad Shenai 	(((x) >> FW_FILTER_WR_RX_RPL_IQ_S) & FW_FILTER_WR_RX_RPL_IQ_M)
436f2b7e78dSVipul Pandya 
4370ff90994SKumar Sanghvi #define FW_FILTER2_WR_FILTER_TYPE_S	1
4380ff90994SKumar Sanghvi #define FW_FILTER2_WR_FILTER_TYPE_M	0x1
4390ff90994SKumar Sanghvi #define FW_FILTER2_WR_FILTER_TYPE_V(x)	((x) << FW_FILTER2_WR_FILTER_TYPE_S)
4400ff90994SKumar Sanghvi #define FW_FILTER2_WR_FILTER_TYPE_G(x)  \
4410ff90994SKumar Sanghvi 	(((x) >> FW_FILTER2_WR_FILTER_TYPE_S) & FW_FILTER2_WR_FILTER_TYPE_M)
4420ff90994SKumar Sanghvi #define FW_FILTER2_WR_FILTER_TYPE_F	FW_FILTER2_WR_FILTER_TYPE_V(1U)
4430ff90994SKumar Sanghvi 
4440ff90994SKumar Sanghvi #define FW_FILTER2_WR_NATMODE_S		5
4450ff90994SKumar Sanghvi #define FW_FILTER2_WR_NATMODE_M		0x7
4460ff90994SKumar Sanghvi #define FW_FILTER2_WR_NATMODE_V(x)	((x) << FW_FILTER2_WR_NATMODE_S)
4470ff90994SKumar Sanghvi #define FW_FILTER2_WR_NATMODE_G(x)      \
4480ff90994SKumar Sanghvi 	(((x) >> FW_FILTER2_WR_NATMODE_S) & FW_FILTER2_WR_NATMODE_M)
4490ff90994SKumar Sanghvi 
4500ff90994SKumar Sanghvi #define FW_FILTER2_WR_NATFLAGCHECK_S	4
4510ff90994SKumar Sanghvi #define FW_FILTER2_WR_NATFLAGCHECK_M	0x1
4520ff90994SKumar Sanghvi #define FW_FILTER2_WR_NATFLAGCHECK_V(x)	((x) << FW_FILTER2_WR_NATFLAGCHECK_S)
4530ff90994SKumar Sanghvi #define FW_FILTER2_WR_NATFLAGCHECK_G(x) \
4540ff90994SKumar Sanghvi 	(((x) >> FW_FILTER2_WR_NATFLAGCHECK_S) & FW_FILTER2_WR_NATFLAGCHECK_M)
4550ff90994SKumar Sanghvi #define FW_FILTER2_WR_NATFLAGCHECK_F	FW_FILTER2_WR_NATFLAGCHECK_V(1U)
4560ff90994SKumar Sanghvi 
4570ff90994SKumar Sanghvi #define FW_FILTER2_WR_ULP_TYPE_S	0
4580ff90994SKumar Sanghvi #define FW_FILTER2_WR_ULP_TYPE_M	0xf
4590ff90994SKumar Sanghvi #define FW_FILTER2_WR_ULP_TYPE_V(x)	((x) << FW_FILTER2_WR_ULP_TYPE_S)
4600ff90994SKumar Sanghvi #define FW_FILTER2_WR_ULP_TYPE_G(x)     \
4610ff90994SKumar Sanghvi 	(((x) >> FW_FILTER2_WR_ULP_TYPE_S) & FW_FILTER2_WR_ULP_TYPE_M)
4620ff90994SKumar Sanghvi 
46377a80e23SHariprasad Shenai #define FW_FILTER_WR_MACI_S     23
46477a80e23SHariprasad Shenai #define FW_FILTER_WR_MACI_M     0x1ff
46577a80e23SHariprasad Shenai #define FW_FILTER_WR_MACI_V(x)  ((x) << FW_FILTER_WR_MACI_S)
46677a80e23SHariprasad Shenai #define FW_FILTER_WR_MACI_G(x)  \
46777a80e23SHariprasad Shenai 	(((x) >> FW_FILTER_WR_MACI_S) & FW_FILTER_WR_MACI_M)
468f2b7e78dSVipul Pandya 
46977a80e23SHariprasad Shenai #define FW_FILTER_WR_MACIM_S    14
47077a80e23SHariprasad Shenai #define FW_FILTER_WR_MACIM_M    0x1ff
47177a80e23SHariprasad Shenai #define FW_FILTER_WR_MACIM_V(x) ((x) << FW_FILTER_WR_MACIM_S)
47277a80e23SHariprasad Shenai #define FW_FILTER_WR_MACIM_G(x) \
47377a80e23SHariprasad Shenai 	(((x) >> FW_FILTER_WR_MACIM_S) & FW_FILTER_WR_MACIM_M)
474f2b7e78dSVipul Pandya 
47577a80e23SHariprasad Shenai #define FW_FILTER_WR_FCOE_S     13
47677a80e23SHariprasad Shenai #define FW_FILTER_WR_FCOE_M     0x1
47777a80e23SHariprasad Shenai #define FW_FILTER_WR_FCOE_V(x)  ((x) << FW_FILTER_WR_FCOE_S)
47877a80e23SHariprasad Shenai #define FW_FILTER_WR_FCOE_G(x)  \
47977a80e23SHariprasad Shenai 	(((x) >> FW_FILTER_WR_FCOE_S) & FW_FILTER_WR_FCOE_M)
48077a80e23SHariprasad Shenai #define FW_FILTER_WR_FCOE_F     FW_FILTER_WR_FCOE_V(1U)
481f2b7e78dSVipul Pandya 
48277a80e23SHariprasad Shenai #define FW_FILTER_WR_FCOEM_S    12
48377a80e23SHariprasad Shenai #define FW_FILTER_WR_FCOEM_M    0x1
48477a80e23SHariprasad Shenai #define FW_FILTER_WR_FCOEM_V(x) ((x) << FW_FILTER_WR_FCOEM_S)
48577a80e23SHariprasad Shenai #define FW_FILTER_WR_FCOEM_G(x) \
48677a80e23SHariprasad Shenai 	(((x) >> FW_FILTER_WR_FCOEM_S) & FW_FILTER_WR_FCOEM_M)
48777a80e23SHariprasad Shenai #define FW_FILTER_WR_FCOEM_F    FW_FILTER_WR_FCOEM_V(1U)
488f2b7e78dSVipul Pandya 
48977a80e23SHariprasad Shenai #define FW_FILTER_WR_PORT_S     9
49077a80e23SHariprasad Shenai #define FW_FILTER_WR_PORT_M     0x7
49177a80e23SHariprasad Shenai #define FW_FILTER_WR_PORT_V(x)  ((x) << FW_FILTER_WR_PORT_S)
49277a80e23SHariprasad Shenai #define FW_FILTER_WR_PORT_G(x)  \
49377a80e23SHariprasad Shenai 	(((x) >> FW_FILTER_WR_PORT_S) & FW_FILTER_WR_PORT_M)
494f2b7e78dSVipul Pandya 
49577a80e23SHariprasad Shenai #define FW_FILTER_WR_PORTM_S    6
49677a80e23SHariprasad Shenai #define FW_FILTER_WR_PORTM_M    0x7
49777a80e23SHariprasad Shenai #define FW_FILTER_WR_PORTM_V(x) ((x) << FW_FILTER_WR_PORTM_S)
49877a80e23SHariprasad Shenai #define FW_FILTER_WR_PORTM_G(x) \
49977a80e23SHariprasad Shenai 	(((x) >> FW_FILTER_WR_PORTM_S) & FW_FILTER_WR_PORTM_M)
500f2b7e78dSVipul Pandya 
50177a80e23SHariprasad Shenai #define FW_FILTER_WR_MATCHTYPE_S        3
50277a80e23SHariprasad Shenai #define FW_FILTER_WR_MATCHTYPE_M        0x7
50377a80e23SHariprasad Shenai #define FW_FILTER_WR_MATCHTYPE_V(x)     ((x) << FW_FILTER_WR_MATCHTYPE_S)
50477a80e23SHariprasad Shenai #define FW_FILTER_WR_MATCHTYPE_G(x)     \
50577a80e23SHariprasad Shenai 	(((x) >> FW_FILTER_WR_MATCHTYPE_S) & FW_FILTER_WR_MATCHTYPE_M)
506f2b7e78dSVipul Pandya 
50777a80e23SHariprasad Shenai #define FW_FILTER_WR_MATCHTYPEM_S       0
50877a80e23SHariprasad Shenai #define FW_FILTER_WR_MATCHTYPEM_M       0x7
50977a80e23SHariprasad Shenai #define FW_FILTER_WR_MATCHTYPEM_V(x)    ((x) << FW_FILTER_WR_MATCHTYPEM_S)
51077a80e23SHariprasad Shenai #define FW_FILTER_WR_MATCHTYPEM_G(x)    \
51177a80e23SHariprasad Shenai 	(((x) >> FW_FILTER_WR_MATCHTYPEM_S) & FW_FILTER_WR_MATCHTYPEM_M)
512f2b7e78dSVipul Pandya 
513f7917c00SJeff Kirsher struct fw_ulptx_wr {
514f7917c00SJeff Kirsher 	__be32 op_to_compl;
515f7917c00SJeff Kirsher 	__be32 flowid_len16;
516f7917c00SJeff Kirsher 	u64 cookie;
517f7917c00SJeff Kirsher };
518f7917c00SJeff Kirsher 
519a6ec572bSAtul Gupta #define FW_ULPTX_WR_DATA_S      28
520a6ec572bSAtul Gupta #define FW_ULPTX_WR_DATA_M      0x1
521a6ec572bSAtul Gupta #define FW_ULPTX_WR_DATA_V(x)   ((x) << FW_ULPTX_WR_DATA_S)
522a6ec572bSAtul Gupta #define FW_ULPTX_WR_DATA_G(x)   \
523a6ec572bSAtul Gupta 	(((x) >> FW_ULPTX_WR_DATA_S) & FW_ULPTX_WR_DATA_M)
524a6ec572bSAtul Gupta #define FW_ULPTX_WR_DATA_F      FW_ULPTX_WR_DATA_V(1U)
525a6ec572bSAtul Gupta 
526f7917c00SJeff Kirsher struct fw_tp_wr {
527f7917c00SJeff Kirsher 	__be32 op_to_immdlen;
528f7917c00SJeff Kirsher 	__be32 flowid_len16;
529f7917c00SJeff Kirsher 	u64 cookie;
530f7917c00SJeff Kirsher };
531f7917c00SJeff Kirsher 
532f7917c00SJeff Kirsher struct fw_eth_tx_pkt_wr {
533f7917c00SJeff Kirsher 	__be32 op_immdlen;
534f7917c00SJeff Kirsher 	__be32 equiq_to_len16;
535f7917c00SJeff Kirsher 	__be64 r3;
536f7917c00SJeff Kirsher };
537f7917c00SJeff Kirsher 
5384846d533SRahul Lakkireddy enum fw_eth_tx_eo_type {
5391a2a14fbSRahul Lakkireddy 	FW_ETH_TX_EO_TYPE_UDPSEG = 0,
5401a2a14fbSRahul Lakkireddy 	FW_ETH_TX_EO_TYPE_TCPSEG,
5414846d533SRahul Lakkireddy };
5424846d533SRahul Lakkireddy 
5434846d533SRahul Lakkireddy struct fw_eth_tx_eo_wr {
5444846d533SRahul Lakkireddy 	__be32 op_immdlen;
5454846d533SRahul Lakkireddy 	__be32 equiq_to_len16;
5464846d533SRahul Lakkireddy 	__be64 r3;
5474846d533SRahul Lakkireddy 	union fw_eth_tx_eo {
5481a2a14fbSRahul Lakkireddy 		struct fw_eth_tx_eo_udpseg {
5491a2a14fbSRahul Lakkireddy 			__u8   type;
5501a2a14fbSRahul Lakkireddy 			__u8   ethlen;
5511a2a14fbSRahul Lakkireddy 			__be16 iplen;
5521a2a14fbSRahul Lakkireddy 			__u8   udplen;
5531a2a14fbSRahul Lakkireddy 			__u8   rtplen;
5541a2a14fbSRahul Lakkireddy 			__be16 r4;
5551a2a14fbSRahul Lakkireddy 			__be16 mss;
5561a2a14fbSRahul Lakkireddy 			__be16 schedpktsize;
5571a2a14fbSRahul Lakkireddy 			__be32 plen;
5581a2a14fbSRahul Lakkireddy 		} udpseg;
5594846d533SRahul Lakkireddy 		struct fw_eth_tx_eo_tcpseg {
5604846d533SRahul Lakkireddy 			__u8   type;
5614846d533SRahul Lakkireddy 			__u8   ethlen;
5624846d533SRahul Lakkireddy 			__be16 iplen;
5634846d533SRahul Lakkireddy 			__u8   tcplen;
5644846d533SRahul Lakkireddy 			__u8   tsclk_tsoff;
5654846d533SRahul Lakkireddy 			__be16 r4;
5664846d533SRahul Lakkireddy 			__be16 mss;
5674846d533SRahul Lakkireddy 			__be16 r5;
5684846d533SRahul Lakkireddy 			__be32 plen;
5694846d533SRahul Lakkireddy 		} tcpseg;
5704846d533SRahul Lakkireddy 	} u;
5714846d533SRahul Lakkireddy };
5724846d533SRahul Lakkireddy 
5734846d533SRahul Lakkireddy #define FW_ETH_TX_EO_WR_IMMDLEN_S	0
5744846d533SRahul Lakkireddy #define FW_ETH_TX_EO_WR_IMMDLEN_M	0x1ff
5754846d533SRahul Lakkireddy #define FW_ETH_TX_EO_WR_IMMDLEN_V(x)	((x) << FW_ETH_TX_EO_WR_IMMDLEN_S)
5764846d533SRahul Lakkireddy #define FW_ETH_TX_EO_WR_IMMDLEN_G(x)	\
5774846d533SRahul Lakkireddy 	(((x) >> FW_ETH_TX_EO_WR_IMMDLEN_S) & FW_ETH_TX_EO_WR_IMMDLEN_M)
5784846d533SRahul Lakkireddy 
5795be78ee9SVipul Pandya struct fw_ofld_connection_wr {
5805be78ee9SVipul Pandya 	__be32 op_compl;
5815be78ee9SVipul Pandya 	__be32 len16_pkd;
5825be78ee9SVipul Pandya 	__u64  cookie;
5835be78ee9SVipul Pandya 	__be64 r2;
5845be78ee9SVipul Pandya 	__be64 r3;
5855be78ee9SVipul Pandya 	struct fw_ofld_connection_le {
5865be78ee9SVipul Pandya 		__be32 version_cpl;
5875be78ee9SVipul Pandya 		__be32 filter;
5885be78ee9SVipul Pandya 		__be32 r1;
5895be78ee9SVipul Pandya 		__be16 lport;
5905be78ee9SVipul Pandya 		__be16 pport;
5915be78ee9SVipul Pandya 		union fw_ofld_connection_leip {
5925be78ee9SVipul Pandya 			struct fw_ofld_connection_le_ipv4 {
5935be78ee9SVipul Pandya 				__be32 pip;
5945be78ee9SVipul Pandya 				__be32 lip;
5955be78ee9SVipul Pandya 				__be64 r0;
5965be78ee9SVipul Pandya 				__be64 r1;
5975be78ee9SVipul Pandya 				__be64 r2;
5985be78ee9SVipul Pandya 			} ipv4;
5995be78ee9SVipul Pandya 			struct fw_ofld_connection_le_ipv6 {
6005be78ee9SVipul Pandya 				__be64 pip_hi;
6015be78ee9SVipul Pandya 				__be64 pip_lo;
6025be78ee9SVipul Pandya 				__be64 lip_hi;
6035be78ee9SVipul Pandya 				__be64 lip_lo;
6045be78ee9SVipul Pandya 			} ipv6;
6055be78ee9SVipul Pandya 		} u;
6065be78ee9SVipul Pandya 	} le;
6075be78ee9SVipul Pandya 	struct fw_ofld_connection_tcb {
6085be78ee9SVipul Pandya 		__be32 t_state_to_astid;
6095be78ee9SVipul Pandya 		__be16 cplrxdataack_cplpassacceptrpl;
6105be78ee9SVipul Pandya 		__be16 rcv_adv;
6115be78ee9SVipul Pandya 		__be32 rcv_nxt;
6125be78ee9SVipul Pandya 		__be32 tx_max;
6135be78ee9SVipul Pandya 		__be64 opt0;
6145be78ee9SVipul Pandya 		__be32 opt2;
6155be78ee9SVipul Pandya 		__be32 r1;
6165be78ee9SVipul Pandya 		__be64 r2;
6175be78ee9SVipul Pandya 		__be64 r3;
6185be78ee9SVipul Pandya 	} tcb;
6195be78ee9SVipul Pandya };
6205be78ee9SVipul Pandya 
62177a80e23SHariprasad Shenai #define FW_OFLD_CONNECTION_WR_VERSION_S                31
62277a80e23SHariprasad Shenai #define FW_OFLD_CONNECTION_WR_VERSION_M                0x1
62377a80e23SHariprasad Shenai #define FW_OFLD_CONNECTION_WR_VERSION_V(x)     \
62477a80e23SHariprasad Shenai 	((x) << FW_OFLD_CONNECTION_WR_VERSION_S)
62577a80e23SHariprasad Shenai #define FW_OFLD_CONNECTION_WR_VERSION_G(x)     \
62677a80e23SHariprasad Shenai 	(((x) >> FW_OFLD_CONNECTION_WR_VERSION_S) & \
62777a80e23SHariprasad Shenai 	FW_OFLD_CONNECTION_WR_VERSION_M)
62877a80e23SHariprasad Shenai #define FW_OFLD_CONNECTION_WR_VERSION_F        \
62977a80e23SHariprasad Shenai 	FW_OFLD_CONNECTION_WR_VERSION_V(1U)
6305be78ee9SVipul Pandya 
63177a80e23SHariprasad Shenai #define FW_OFLD_CONNECTION_WR_CPL_S    30
63277a80e23SHariprasad Shenai #define FW_OFLD_CONNECTION_WR_CPL_M    0x1
63377a80e23SHariprasad Shenai #define FW_OFLD_CONNECTION_WR_CPL_V(x) ((x) << FW_OFLD_CONNECTION_WR_CPL_S)
63477a80e23SHariprasad Shenai #define FW_OFLD_CONNECTION_WR_CPL_G(x) \
63577a80e23SHariprasad Shenai 	(((x) >> FW_OFLD_CONNECTION_WR_CPL_S) & FW_OFLD_CONNECTION_WR_CPL_M)
63677a80e23SHariprasad Shenai #define FW_OFLD_CONNECTION_WR_CPL_F    FW_OFLD_CONNECTION_WR_CPL_V(1U)
6375be78ee9SVipul Pandya 
63877a80e23SHariprasad Shenai #define FW_OFLD_CONNECTION_WR_T_STATE_S                28
63977a80e23SHariprasad Shenai #define FW_OFLD_CONNECTION_WR_T_STATE_M                0xf
64077a80e23SHariprasad Shenai #define FW_OFLD_CONNECTION_WR_T_STATE_V(x)     \
64177a80e23SHariprasad Shenai 	((x) << FW_OFLD_CONNECTION_WR_T_STATE_S)
64277a80e23SHariprasad Shenai #define FW_OFLD_CONNECTION_WR_T_STATE_G(x)     \
64377a80e23SHariprasad Shenai 	(((x) >> FW_OFLD_CONNECTION_WR_T_STATE_S) & \
64477a80e23SHariprasad Shenai 	FW_OFLD_CONNECTION_WR_T_STATE_M)
6455be78ee9SVipul Pandya 
64677a80e23SHariprasad Shenai #define FW_OFLD_CONNECTION_WR_RCV_SCALE_S      24
64777a80e23SHariprasad Shenai #define FW_OFLD_CONNECTION_WR_RCV_SCALE_M      0xf
64877a80e23SHariprasad Shenai #define FW_OFLD_CONNECTION_WR_RCV_SCALE_V(x)   \
64977a80e23SHariprasad Shenai 	((x) << FW_OFLD_CONNECTION_WR_RCV_SCALE_S)
65077a80e23SHariprasad Shenai #define FW_OFLD_CONNECTION_WR_RCV_SCALE_G(x)   \
65177a80e23SHariprasad Shenai 	(((x) >> FW_OFLD_CONNECTION_WR_RCV_SCALE_S) & \
65277a80e23SHariprasad Shenai 	FW_OFLD_CONNECTION_WR_RCV_SCALE_M)
6535be78ee9SVipul Pandya 
65477a80e23SHariprasad Shenai #define FW_OFLD_CONNECTION_WR_ASTID_S          0
65577a80e23SHariprasad Shenai #define FW_OFLD_CONNECTION_WR_ASTID_M          0xffffff
65677a80e23SHariprasad Shenai #define FW_OFLD_CONNECTION_WR_ASTID_V(x)       \
65777a80e23SHariprasad Shenai 	((x) << FW_OFLD_CONNECTION_WR_ASTID_S)
65877a80e23SHariprasad Shenai #define FW_OFLD_CONNECTION_WR_ASTID_G(x)       \
65977a80e23SHariprasad Shenai 	(((x) >> FW_OFLD_CONNECTION_WR_ASTID_S) & FW_OFLD_CONNECTION_WR_ASTID_M)
6605be78ee9SVipul Pandya 
66177a80e23SHariprasad Shenai #define FW_OFLD_CONNECTION_WR_CPLRXDATAACK_S   15
66277a80e23SHariprasad Shenai #define FW_OFLD_CONNECTION_WR_CPLRXDATAACK_M   0x1
66377a80e23SHariprasad Shenai #define FW_OFLD_CONNECTION_WR_CPLRXDATAACK_V(x)        \
66477a80e23SHariprasad Shenai 	((x) << FW_OFLD_CONNECTION_WR_CPLRXDATAACK_S)
66577a80e23SHariprasad Shenai #define FW_OFLD_CONNECTION_WR_CPLRXDATAACK_G(x)        \
66677a80e23SHariprasad Shenai 	(((x) >> FW_OFLD_CONNECTION_WR_CPLRXDATAACK_S) & \
66777a80e23SHariprasad Shenai 	FW_OFLD_CONNECTION_WR_CPLRXDATAACK_M)
66877a80e23SHariprasad Shenai #define FW_OFLD_CONNECTION_WR_CPLRXDATAACK_F   \
66977a80e23SHariprasad Shenai 	FW_OFLD_CONNECTION_WR_CPLRXDATAACK_V(1U)
6705be78ee9SVipul Pandya 
67177a80e23SHariprasad Shenai #define FW_OFLD_CONNECTION_WR_CPLPASSACCEPTRPL_S       14
67277a80e23SHariprasad Shenai #define FW_OFLD_CONNECTION_WR_CPLPASSACCEPTRPL_M       0x1
67377a80e23SHariprasad Shenai #define FW_OFLD_CONNECTION_WR_CPLPASSACCEPTRPL_V(x)    \
67477a80e23SHariprasad Shenai 	((x) << FW_OFLD_CONNECTION_WR_CPLPASSACCEPTRPL_S)
67577a80e23SHariprasad Shenai #define FW_OFLD_CONNECTION_WR_CPLPASSACCEPTRPL_G(x)    \
67677a80e23SHariprasad Shenai 	(((x) >> FW_OFLD_CONNECTION_WR_CPLPASSACCEPTRPL_S) & \
67777a80e23SHariprasad Shenai 	FW_OFLD_CONNECTION_WR_CPLPASSACCEPTRPL_M)
67877a80e23SHariprasad Shenai #define FW_OFLD_CONNECTION_WR_CPLPASSACCEPTRPL_F       \
67977a80e23SHariprasad Shenai 	FW_OFLD_CONNECTION_WR_CPLPASSACCEPTRPL_V(1U)
6805be78ee9SVipul Pandya 
681e1087089SAtul Gupta enum fw_flowc_mnem_tcpstate {
682e1087089SAtul Gupta 	FW_FLOWC_MNEM_TCPSTATE_CLOSED   = 0, /* illegal */
683e1087089SAtul Gupta 	FW_FLOWC_MNEM_TCPSTATE_LISTEN   = 1, /* illegal */
684e1087089SAtul Gupta 	FW_FLOWC_MNEM_TCPSTATE_SYNSENT  = 2, /* illegal */
685e1087089SAtul Gupta 	FW_FLOWC_MNEM_TCPSTATE_SYNRECEIVED = 3, /* illegal */
686e1087089SAtul Gupta 	FW_FLOWC_MNEM_TCPSTATE_ESTABLISHED = 4, /* default */
687e1087089SAtul Gupta 	FW_FLOWC_MNEM_TCPSTATE_CLOSEWAIT = 5, /* got peer close already */
688e1087089SAtul Gupta 	FW_FLOWC_MNEM_TCPSTATE_FINWAIT1 = 6, /* haven't gotten ACK for FIN and
689e1087089SAtul Gupta 					      * will resend FIN - equiv ESTAB
690e1087089SAtul Gupta 					      */
691e1087089SAtul Gupta 	FW_FLOWC_MNEM_TCPSTATE_CLOSING  = 7, /* haven't gotten ACK for FIN and
692e1087089SAtul Gupta 					      * will resend FIN but have
693e1087089SAtul Gupta 					      * received FIN
694e1087089SAtul Gupta 					      */
695e1087089SAtul Gupta 	FW_FLOWC_MNEM_TCPSTATE_LASTACK  = 8, /* haven't gotten ACK for FIN and
696e1087089SAtul Gupta 					      * will resend FIN but have
697e1087089SAtul Gupta 					      * received FIN
698e1087089SAtul Gupta 					      */
699e1087089SAtul Gupta 	FW_FLOWC_MNEM_TCPSTATE_FINWAIT2 = 9, /* sent FIN and got FIN + ACK,
700e1087089SAtul Gupta 					      * waiting for FIN
701e1087089SAtul Gupta 					      */
702e1087089SAtul Gupta 	FW_FLOWC_MNEM_TCPSTATE_TIMEWAIT = 10, /* not expected */
703e1087089SAtul Gupta };
704e1087089SAtul Gupta 
7050e395b3cSRahul Lakkireddy enum fw_flowc_mnem_eostate {
7060e395b3cSRahul Lakkireddy 	FW_FLOWC_MNEM_EOSTATE_ESTABLISHED = 1, /* default */
7070e395b3cSRahul Lakkireddy 	/* graceful close, after sending outstanding payload */
7080e395b3cSRahul Lakkireddy 	FW_FLOWC_MNEM_EOSTATE_CLOSING = 2,
7090e395b3cSRahul Lakkireddy };
7100e395b3cSRahul Lakkireddy 
711f7917c00SJeff Kirsher enum fw_flowc_mnem {
712f7917c00SJeff Kirsher 	FW_FLOWC_MNEM_PFNVFN,		/* PFN [15:8] VFN [7:0] */
713f7917c00SJeff Kirsher 	FW_FLOWC_MNEM_CH,
714f7917c00SJeff Kirsher 	FW_FLOWC_MNEM_PORT,
715f7917c00SJeff Kirsher 	FW_FLOWC_MNEM_IQID,
716f7917c00SJeff Kirsher 	FW_FLOWC_MNEM_SNDNXT,
717f7917c00SJeff Kirsher 	FW_FLOWC_MNEM_RCVNXT,
718f7917c00SJeff Kirsher 	FW_FLOWC_MNEM_SNDBUF,
719f7917c00SJeff Kirsher 	FW_FLOWC_MNEM_MSS,
72064bfead8SKaren Xie 	FW_FLOWC_MNEM_TXDATAPLEN_MAX,
721b96c5cbbSVarun Prakash 	FW_FLOWC_MNEM_TCPSTATE,
722b96c5cbbSVarun Prakash 	FW_FLOWC_MNEM_EOSTATE,
723b96c5cbbSVarun Prakash 	FW_FLOWC_MNEM_SCHEDCLASS,
724b96c5cbbSVarun Prakash 	FW_FLOWC_MNEM_DCBPRIO,
725b96c5cbbSVarun Prakash 	FW_FLOWC_MNEM_SND_SCALE,
726b96c5cbbSVarun Prakash 	FW_FLOWC_MNEM_RCV_SCALE,
727e1087089SAtul Gupta 	FW_FLOWC_MNEM_ULD_MODE,
728e1087089SAtul Gupta 	FW_FLOWC_MNEM_MAX,
729f7917c00SJeff Kirsher };
730f7917c00SJeff Kirsher 
731f7917c00SJeff Kirsher struct fw_flowc_mnemval {
732f7917c00SJeff Kirsher 	u8 mnemonic;
733f7917c00SJeff Kirsher 	u8 r4[3];
734f7917c00SJeff Kirsher 	__be32 val;
735f7917c00SJeff Kirsher };
736f7917c00SJeff Kirsher 
737f7917c00SJeff Kirsher struct fw_flowc_wr {
738f7917c00SJeff Kirsher 	__be32 op_to_nparams;
739f7917c00SJeff Kirsher 	__be32 flowid_len16;
74065dc2f1aSGustavo A. R. Silva 	struct fw_flowc_mnemval mnemval[];
741f7917c00SJeff Kirsher };
742f7917c00SJeff Kirsher 
743e2ac9628SHariprasad Shenai #define FW_FLOWC_WR_NPARAMS_S           0
744e2ac9628SHariprasad Shenai #define FW_FLOWC_WR_NPARAMS_V(x)        ((x) << FW_FLOWC_WR_NPARAMS_S)
745e2ac9628SHariprasad Shenai 
746f7917c00SJeff Kirsher struct fw_ofld_tx_data_wr {
747f7917c00SJeff Kirsher 	__be32 op_to_immdlen;
748f7917c00SJeff Kirsher 	__be32 flowid_len16;
749f7917c00SJeff Kirsher 	__be32 plen;
750f7917c00SJeff Kirsher 	__be32 tunnel_to_proxy;
751f7917c00SJeff Kirsher };
752f7917c00SJeff Kirsher 
753e1087089SAtul Gupta #define FW_OFLD_TX_DATA_WR_ALIGNPLD_S   30
754e1087089SAtul Gupta #define FW_OFLD_TX_DATA_WR_ALIGNPLD_V(x) ((x) << FW_OFLD_TX_DATA_WR_ALIGNPLD_S)
755e1087089SAtul Gupta #define FW_OFLD_TX_DATA_WR_ALIGNPLD_F   FW_OFLD_TX_DATA_WR_ALIGNPLD_V(1U)
756e1087089SAtul Gupta 
757e1087089SAtul Gupta #define FW_OFLD_TX_DATA_WR_SHOVE_S      29
758e1087089SAtul Gupta #define FW_OFLD_TX_DATA_WR_SHOVE_V(x)   ((x) << FW_OFLD_TX_DATA_WR_SHOVE_S)
759e1087089SAtul Gupta #define FW_OFLD_TX_DATA_WR_SHOVE_F      FW_OFLD_TX_DATA_WR_SHOVE_V(1U)
760e1087089SAtul Gupta 
761e2ac9628SHariprasad Shenai #define FW_OFLD_TX_DATA_WR_TUNNEL_S     19
762e2ac9628SHariprasad Shenai #define FW_OFLD_TX_DATA_WR_TUNNEL_V(x)  ((x) << FW_OFLD_TX_DATA_WR_TUNNEL_S)
763e2ac9628SHariprasad Shenai 
764e2ac9628SHariprasad Shenai #define FW_OFLD_TX_DATA_WR_SAVE_S       18
765e2ac9628SHariprasad Shenai #define FW_OFLD_TX_DATA_WR_SAVE_V(x)    ((x) << FW_OFLD_TX_DATA_WR_SAVE_S)
766e2ac9628SHariprasad Shenai 
767e2ac9628SHariprasad Shenai #define FW_OFLD_TX_DATA_WR_FLUSH_S      17
768e2ac9628SHariprasad Shenai #define FW_OFLD_TX_DATA_WR_FLUSH_V(x)   ((x) << FW_OFLD_TX_DATA_WR_FLUSH_S)
769e2ac9628SHariprasad Shenai #define FW_OFLD_TX_DATA_WR_FLUSH_F      FW_OFLD_TX_DATA_WR_FLUSH_V(1U)
770e2ac9628SHariprasad Shenai 
771e2ac9628SHariprasad Shenai #define FW_OFLD_TX_DATA_WR_URGENT_S     16
772e2ac9628SHariprasad Shenai #define FW_OFLD_TX_DATA_WR_URGENT_V(x)  ((x) << FW_OFLD_TX_DATA_WR_URGENT_S)
773e2ac9628SHariprasad Shenai 
774e2ac9628SHariprasad Shenai #define FW_OFLD_TX_DATA_WR_MORE_S       15
775e2ac9628SHariprasad Shenai #define FW_OFLD_TX_DATA_WR_MORE_V(x)    ((x) << FW_OFLD_TX_DATA_WR_MORE_S)
776e2ac9628SHariprasad Shenai 
777e2ac9628SHariprasad Shenai #define FW_OFLD_TX_DATA_WR_ULPMODE_S    10
778e2ac9628SHariprasad Shenai #define FW_OFLD_TX_DATA_WR_ULPMODE_V(x) ((x) << FW_OFLD_TX_DATA_WR_ULPMODE_S)
779e2ac9628SHariprasad Shenai 
780e2ac9628SHariprasad Shenai #define FW_OFLD_TX_DATA_WR_ULPSUBMODE_S         6
781e2ac9628SHariprasad Shenai #define FW_OFLD_TX_DATA_WR_ULPSUBMODE_V(x)      \
782e2ac9628SHariprasad Shenai 	((x) << FW_OFLD_TX_DATA_WR_ULPSUBMODE_S)
783e2ac9628SHariprasad Shenai 
784f7917c00SJeff Kirsher struct fw_cmd_wr {
785f7917c00SJeff Kirsher 	__be32 op_dma;
786f7917c00SJeff Kirsher 	__be32 len16_pkd;
787f7917c00SJeff Kirsher 	__be64 cookie_daddr;
788f7917c00SJeff Kirsher };
789f7917c00SJeff Kirsher 
790e2ac9628SHariprasad Shenai #define FW_CMD_WR_DMA_S         17
791e2ac9628SHariprasad Shenai #define FW_CMD_WR_DMA_V(x)      ((x) << FW_CMD_WR_DMA_S)
792e2ac9628SHariprasad Shenai 
793f7917c00SJeff Kirsher struct fw_eth_tx_pkt_vm_wr {
794f7917c00SJeff Kirsher 	__be32 op_immdlen;
795f7917c00SJeff Kirsher 	__be32 equiq_to_len16;
796f7917c00SJeff Kirsher 	__be32 r3[2];
797*641d3ef0SKees Cook 	struct_group(firmware,
798*641d3ef0SKees Cook 		u8 ethmacdst[ETH_ALEN];
799*641d3ef0SKees Cook 		u8 ethmacsrc[ETH_ALEN];
800f7917c00SJeff Kirsher 		__be16 ethtype;
801f7917c00SJeff Kirsher 		__be16 vlantci;
802*641d3ef0SKees Cook 	);
803f7917c00SJeff Kirsher };
804f7917c00SJeff Kirsher 
8052422d9a3SSantosh Rastapur #define FW_CMD_MAX_TIMEOUT 10000
806f7917c00SJeff Kirsher 
807636f9d37SVipul Pandya /*
808636f9d37SVipul Pandya  * If a host driver does a HELLO and discovers that there's already a MASTER
809636f9d37SVipul Pandya  * selected, we may have to wait for that MASTER to finish issuing RESET,
810636f9d37SVipul Pandya  * configuration and INITIALIZE commands.  Also, there's a possibility that
811636f9d37SVipul Pandya  * our own HELLO may get lost if it happens right as the MASTER is issuign a
812636f9d37SVipul Pandya  * RESET command, so we need to be willing to make a few retries of our HELLO.
813636f9d37SVipul Pandya  */
814636f9d37SVipul Pandya #define FW_CMD_HELLO_TIMEOUT	(3 * FW_CMD_MAX_TIMEOUT)
815636f9d37SVipul Pandya #define FW_CMD_HELLO_RETRIES	3
816636f9d37SVipul Pandya 
817636f9d37SVipul Pandya 
818f7917c00SJeff Kirsher enum fw_cmd_opcodes {
819f7917c00SJeff Kirsher 	FW_LDST_CMD                    = 0x01,
820f7917c00SJeff Kirsher 	FW_RESET_CMD                   = 0x03,
821f7917c00SJeff Kirsher 	FW_HELLO_CMD                   = 0x04,
822f7917c00SJeff Kirsher 	FW_BYE_CMD                     = 0x05,
823f7917c00SJeff Kirsher 	FW_INITIALIZE_CMD              = 0x06,
824f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_CMD             = 0x07,
825f7917c00SJeff Kirsher 	FW_PARAMS_CMD                  = 0x08,
826f7917c00SJeff Kirsher 	FW_PFVF_CMD                    = 0x09,
827f7917c00SJeff Kirsher 	FW_IQ_CMD                      = 0x10,
828f7917c00SJeff Kirsher 	FW_EQ_MNGT_CMD                 = 0x11,
829f7917c00SJeff Kirsher 	FW_EQ_ETH_CMD                  = 0x12,
830f7917c00SJeff Kirsher 	FW_EQ_CTRL_CMD                 = 0x13,
831f7917c00SJeff Kirsher 	FW_EQ_OFLD_CMD                 = 0x21,
832f7917c00SJeff Kirsher 	FW_VI_CMD                      = 0x14,
833f7917c00SJeff Kirsher 	FW_VI_MAC_CMD                  = 0x15,
834f7917c00SJeff Kirsher 	FW_VI_RXMODE_CMD               = 0x16,
835f7917c00SJeff Kirsher 	FW_VI_ENABLE_CMD               = 0x17,
836f7917c00SJeff Kirsher 	FW_ACL_MAC_CMD                 = 0x18,
837f7917c00SJeff Kirsher 	FW_ACL_VLAN_CMD                = 0x19,
838f7917c00SJeff Kirsher 	FW_VI_STATS_CMD                = 0x1a,
839f7917c00SJeff Kirsher 	FW_PORT_CMD                    = 0x1b,
840f7917c00SJeff Kirsher 	FW_PORT_STATS_CMD              = 0x1c,
841f7917c00SJeff Kirsher 	FW_PORT_LB_STATS_CMD           = 0x1d,
842f7917c00SJeff Kirsher 	FW_PORT_TRACE_CMD              = 0x1e,
843f7917c00SJeff Kirsher 	FW_PORT_TRACE_MMAP_CMD         = 0x1f,
844f7917c00SJeff Kirsher 	FW_RSS_IND_TBL_CMD             = 0x20,
845f7917c00SJeff Kirsher 	FW_RSS_GLB_CONFIG_CMD          = 0x22,
846f7917c00SJeff Kirsher 	FW_RSS_VI_CONFIG_CMD           = 0x23,
847b72a32daSRahul Lakkireddy 	FW_SCHED_CMD                   = 0x24,
84849aa284fSHariprasad Shenai 	FW_DEVLOG_CMD                  = 0x25,
84901bcca68SVipul Pandya 	FW_CLIP_CMD                    = 0x28,
850a4569504SAtul Gupta 	FW_PTP_CMD                     = 0x3e,
8518b4e6b3cSArjun Vynipadath 	FW_HMA_CMD                     = 0x3f,
852f7917c00SJeff Kirsher 	FW_LASTC2E_CMD                 = 0x40,
853f7917c00SJeff Kirsher 	FW_ERROR_CMD                   = 0x80,
854f7917c00SJeff Kirsher 	FW_DEBUG_CMD                   = 0x81,
855f7917c00SJeff Kirsher };
856f7917c00SJeff Kirsher 
857f7917c00SJeff Kirsher enum fw_cmd_cap {
858f7917c00SJeff Kirsher 	FW_CMD_CAP_PF                  = 0x01,
859f7917c00SJeff Kirsher 	FW_CMD_CAP_DMAQ                = 0x02,
860f7917c00SJeff Kirsher 	FW_CMD_CAP_PORT                = 0x04,
861f7917c00SJeff Kirsher 	FW_CMD_CAP_PORTPROMISC         = 0x08,
862f7917c00SJeff Kirsher 	FW_CMD_CAP_PORTSTATS           = 0x10,
863f7917c00SJeff Kirsher 	FW_CMD_CAP_VF                  = 0x80,
864f7917c00SJeff Kirsher };
865f7917c00SJeff Kirsher 
866f7917c00SJeff Kirsher /*
867f7917c00SJeff Kirsher  * Generic command header flit0
868f7917c00SJeff Kirsher  */
869f7917c00SJeff Kirsher struct fw_cmd_hdr {
870f7917c00SJeff Kirsher 	__be32 hi;
871f7917c00SJeff Kirsher 	__be32 lo;
872f7917c00SJeff Kirsher };
873f7917c00SJeff Kirsher 
874e2ac9628SHariprasad Shenai #define FW_CMD_OP_S             24
875e2ac9628SHariprasad Shenai #define FW_CMD_OP_M             0xff
876e2ac9628SHariprasad Shenai #define FW_CMD_OP_V(x)          ((x) << FW_CMD_OP_S)
877e2ac9628SHariprasad Shenai #define FW_CMD_OP_G(x)          (((x) >> FW_CMD_OP_S) & FW_CMD_OP_M)
878e2ac9628SHariprasad Shenai 
879e2ac9628SHariprasad Shenai #define FW_CMD_REQUEST_S        23
880e2ac9628SHariprasad Shenai #define FW_CMD_REQUEST_V(x)     ((x) << FW_CMD_REQUEST_S)
881e2ac9628SHariprasad Shenai #define FW_CMD_REQUEST_F        FW_CMD_REQUEST_V(1U)
882e2ac9628SHariprasad Shenai 
883e2ac9628SHariprasad Shenai #define FW_CMD_READ_S           22
884e2ac9628SHariprasad Shenai #define FW_CMD_READ_V(x)        ((x) << FW_CMD_READ_S)
885e2ac9628SHariprasad Shenai #define FW_CMD_READ_F           FW_CMD_READ_V(1U)
886e2ac9628SHariprasad Shenai 
887e2ac9628SHariprasad Shenai #define FW_CMD_WRITE_S          21
888e2ac9628SHariprasad Shenai #define FW_CMD_WRITE_V(x)       ((x) << FW_CMD_WRITE_S)
889e2ac9628SHariprasad Shenai #define FW_CMD_WRITE_F          FW_CMD_WRITE_V(1U)
890e2ac9628SHariprasad Shenai 
891e2ac9628SHariprasad Shenai #define FW_CMD_EXEC_S           20
892e2ac9628SHariprasad Shenai #define FW_CMD_EXEC_V(x)        ((x) << FW_CMD_EXEC_S)
893e2ac9628SHariprasad Shenai #define FW_CMD_EXEC_F           FW_CMD_EXEC_V(1U)
894e2ac9628SHariprasad Shenai 
895e2ac9628SHariprasad Shenai #define FW_CMD_RAMASK_S         20
896e2ac9628SHariprasad Shenai #define FW_CMD_RAMASK_V(x)      ((x) << FW_CMD_RAMASK_S)
897e2ac9628SHariprasad Shenai 
898e2ac9628SHariprasad Shenai #define FW_CMD_RETVAL_S         8
899e2ac9628SHariprasad Shenai #define FW_CMD_RETVAL_M         0xff
900e2ac9628SHariprasad Shenai #define FW_CMD_RETVAL_V(x)      ((x) << FW_CMD_RETVAL_S)
901e2ac9628SHariprasad Shenai #define FW_CMD_RETVAL_G(x)      (((x) >> FW_CMD_RETVAL_S) & FW_CMD_RETVAL_M)
902e2ac9628SHariprasad Shenai 
903e2ac9628SHariprasad Shenai #define FW_CMD_LEN16_S          0
904e2ac9628SHariprasad Shenai #define FW_CMD_LEN16_V(x)       ((x) << FW_CMD_LEN16_S)
905e2ac9628SHariprasad Shenai 
906e2ac9628SHariprasad Shenai #define FW_LEN16(fw_struct)	FW_CMD_LEN16_V(sizeof(fw_struct) / 16)
907f7917c00SJeff Kirsher 
908f7917c00SJeff Kirsher enum fw_ldst_addrspc {
909f7917c00SJeff Kirsher 	FW_LDST_ADDRSPC_FIRMWARE  = 0x0001,
910f7917c00SJeff Kirsher 	FW_LDST_ADDRSPC_SGE_EGRC  = 0x0008,
911f7917c00SJeff Kirsher 	FW_LDST_ADDRSPC_SGE_INGC  = 0x0009,
912f7917c00SJeff Kirsher 	FW_LDST_ADDRSPC_SGE_FLMC  = 0x000a,
913f7917c00SJeff Kirsher 	FW_LDST_ADDRSPC_SGE_CONMC = 0x000b,
914f7917c00SJeff Kirsher 	FW_LDST_ADDRSPC_TP_PIO    = 0x0010,
915f7917c00SJeff Kirsher 	FW_LDST_ADDRSPC_TP_TM_PIO = 0x0011,
916f7917c00SJeff Kirsher 	FW_LDST_ADDRSPC_TP_MIB    = 0x0012,
917f7917c00SJeff Kirsher 	FW_LDST_ADDRSPC_MDIO      = 0x0018,
918f7917c00SJeff Kirsher 	FW_LDST_ADDRSPC_MPS       = 0x0020,
919ce91a923SNaresh Kumar Inna 	FW_LDST_ADDRSPC_FUNC      = 0x0028,
920ce91a923SNaresh Kumar Inna 	FW_LDST_ADDRSPC_FUNC_PCIE = 0x0029,
921f56ec676SArjun Vynipadath 	FW_LDST_ADDRSPC_I2C       = 0x0038,
922f7917c00SJeff Kirsher };
923f7917c00SJeff Kirsher 
924f7917c00SJeff Kirsher enum fw_ldst_mps_fid {
925f7917c00SJeff Kirsher 	FW_LDST_MPS_ATRB,
926f7917c00SJeff Kirsher 	FW_LDST_MPS_RPLC
927f7917c00SJeff Kirsher };
928f7917c00SJeff Kirsher 
929f7917c00SJeff Kirsher enum fw_ldst_func_access_ctl {
930f7917c00SJeff Kirsher 	FW_LDST_FUNC_ACC_CTL_VIID,
931f7917c00SJeff Kirsher 	FW_LDST_FUNC_ACC_CTL_FID
932f7917c00SJeff Kirsher };
933f7917c00SJeff Kirsher 
934f7917c00SJeff Kirsher enum fw_ldst_func_mod_index {
935f7917c00SJeff Kirsher 	FW_LDST_FUNC_MPS
936f7917c00SJeff Kirsher };
937f7917c00SJeff Kirsher 
938f7917c00SJeff Kirsher struct fw_ldst_cmd {
939f7917c00SJeff Kirsher 	__be32 op_to_addrspace;
940f7917c00SJeff Kirsher 	__be32 cycles_to_len16;
941f7917c00SJeff Kirsher 	union fw_ldst {
942f7917c00SJeff Kirsher 		struct fw_ldst_addrval {
943f7917c00SJeff Kirsher 			__be32 addr;
944f7917c00SJeff Kirsher 			__be32 val;
945f7917c00SJeff Kirsher 		} addrval;
946f7917c00SJeff Kirsher 		struct fw_ldst_idctxt {
947f7917c00SJeff Kirsher 			__be32 physid;
9485d700ecbSHariprasad Shenai 			__be32 msg_ctxtflush;
949f7917c00SJeff Kirsher 			__be32 ctxt_data7;
950f7917c00SJeff Kirsher 			__be32 ctxt_data6;
951f7917c00SJeff Kirsher 			__be32 ctxt_data5;
952f7917c00SJeff Kirsher 			__be32 ctxt_data4;
953f7917c00SJeff Kirsher 			__be32 ctxt_data3;
954f7917c00SJeff Kirsher 			__be32 ctxt_data2;
955f7917c00SJeff Kirsher 			__be32 ctxt_data1;
956f7917c00SJeff Kirsher 			__be32 ctxt_data0;
957f7917c00SJeff Kirsher 		} idctxt;
958f7917c00SJeff Kirsher 		struct fw_ldst_mdio {
959f7917c00SJeff Kirsher 			__be16 paddr_mmd;
960f7917c00SJeff Kirsher 			__be16 raddr;
961f7917c00SJeff Kirsher 			__be16 vctl;
962f7917c00SJeff Kirsher 			__be16 rval;
963f7917c00SJeff Kirsher 		} mdio;
964f2be053cSHariprasad Shenai 		struct fw_ldst_cim_rq {
965f2be053cSHariprasad Shenai 			u8 req_first64[8];
966f2be053cSHariprasad Shenai 			u8 req_second64[8];
967f2be053cSHariprasad Shenai 			u8 resp_first64[8];
968f2be053cSHariprasad Shenai 			u8 resp_second64[8];
969f2be053cSHariprasad Shenai 			__be32 r3[2];
970f2be053cSHariprasad Shenai 		} cim_rq;
9713ccc6cf7SHariprasad Shenai 		union fw_ldst_mps {
9723ccc6cf7SHariprasad Shenai 			struct fw_ldst_mps_rplc {
9733ccc6cf7SHariprasad Shenai 				__be16 fid_idx;
974f7917c00SJeff Kirsher 				__be16 rplcpf_pkd;
9753ccc6cf7SHariprasad Shenai 				__be32 rplc255_224;
9763ccc6cf7SHariprasad Shenai 				__be32 rplc223_192;
9773ccc6cf7SHariprasad Shenai 				__be32 rplc191_160;
9783ccc6cf7SHariprasad Shenai 				__be32 rplc159_128;
979f7917c00SJeff Kirsher 				__be32 rplc127_96;
980f7917c00SJeff Kirsher 				__be32 rplc95_64;
981f7917c00SJeff Kirsher 				__be32 rplc63_32;
982f7917c00SJeff Kirsher 				__be32 rplc31_0;
9833ccc6cf7SHariprasad Shenai 			} rplc;
9843ccc6cf7SHariprasad Shenai 			struct fw_ldst_mps_atrb {
9853ccc6cf7SHariprasad Shenai 				__be16 fid_mpsid;
9863ccc6cf7SHariprasad Shenai 				__be16 r2[3];
9873ccc6cf7SHariprasad Shenai 				__be32 r3[2];
9883ccc6cf7SHariprasad Shenai 				__be32 r4;
989f7917c00SJeff Kirsher 				__be32 atrb;
990f7917c00SJeff Kirsher 				__be16 vlan[16];
9913ccc6cf7SHariprasad Shenai 			} atrb;
992f7917c00SJeff Kirsher 		} mps;
993f7917c00SJeff Kirsher 		struct fw_ldst_func {
994f7917c00SJeff Kirsher 			u8 access_ctl;
995f7917c00SJeff Kirsher 			u8 mod_index;
996f7917c00SJeff Kirsher 			__be16 ctl_id;
997f7917c00SJeff Kirsher 			__be32 offset;
998f7917c00SJeff Kirsher 			__be64 data0;
999f7917c00SJeff Kirsher 			__be64 data1;
1000f7917c00SJeff Kirsher 		} func;
1001ce91a923SNaresh Kumar Inna 		struct fw_ldst_pcie {
1002ce91a923SNaresh Kumar Inna 			u8 ctrl_to_fn;
1003ce91a923SNaresh Kumar Inna 			u8 bnum;
1004ce91a923SNaresh Kumar Inna 			u8 r;
1005ce91a923SNaresh Kumar Inna 			u8 ext_r;
1006ce91a923SNaresh Kumar Inna 			u8 select_naccess;
1007ce91a923SNaresh Kumar Inna 			u8 pcie_fn;
1008ce91a923SNaresh Kumar Inna 			__be16 nset_pkd;
1009ce91a923SNaresh Kumar Inna 			__be32 data[12];
1010ce91a923SNaresh Kumar Inna 		} pcie;
1011f2be053cSHariprasad Shenai 		struct fw_ldst_i2c_deprecated {
1012f2be053cSHariprasad Shenai 			u8 pid_pkd;
1013f2be053cSHariprasad Shenai 			u8 base;
1014f2be053cSHariprasad Shenai 			u8 boffset;
1015f2be053cSHariprasad Shenai 			u8 data;
1016f2be053cSHariprasad Shenai 			__be32 r9;
1017f2be053cSHariprasad Shenai 		} i2c_deprecated;
1018f2be053cSHariprasad Shenai 		struct fw_ldst_i2c {
1019f2be053cSHariprasad Shenai 			u8 pid;
1020f2be053cSHariprasad Shenai 			u8 did;
1021f2be053cSHariprasad Shenai 			u8 boffset;
1022f2be053cSHariprasad Shenai 			u8 blen;
1023f2be053cSHariprasad Shenai 			__be32 r9;
1024f2be053cSHariprasad Shenai 			__u8   data[48];
1025f2be053cSHariprasad Shenai 		} i2c;
1026f2be053cSHariprasad Shenai 		struct fw_ldst_le {
1027f2be053cSHariprasad Shenai 			__be32 index;
1028f2be053cSHariprasad Shenai 			__be32 r9;
1029f2be053cSHariprasad Shenai 			u8 val[33];
1030f2be053cSHariprasad Shenai 			u8 r11[7];
1031f2be053cSHariprasad Shenai 		} le;
1032f7917c00SJeff Kirsher 	} u;
1033f7917c00SJeff Kirsher };
1034f7917c00SJeff Kirsher 
1035f2be053cSHariprasad Shenai #define FW_LDST_CMD_ADDRSPACE_S		0
1036f2be053cSHariprasad Shenai #define FW_LDST_CMD_ADDRSPACE_V(x)	((x) << FW_LDST_CMD_ADDRSPACE_S)
1037f2be053cSHariprasad Shenai 
10385167865aSHariprasad Shenai #define FW_LDST_CMD_MSG_S       31
10395167865aSHariprasad Shenai #define FW_LDST_CMD_MSG_V(x)	((x) << FW_LDST_CMD_MSG_S)
10405167865aSHariprasad Shenai 
10415d700ecbSHariprasad Shenai #define FW_LDST_CMD_CTXTFLUSH_S		30
10425d700ecbSHariprasad Shenai #define FW_LDST_CMD_CTXTFLUSH_V(x)	((x) << FW_LDST_CMD_CTXTFLUSH_S)
10435d700ecbSHariprasad Shenai #define FW_LDST_CMD_CTXTFLUSH_F		FW_LDST_CMD_CTXTFLUSH_V(1U)
10445d700ecbSHariprasad Shenai 
10455167865aSHariprasad Shenai #define FW_LDST_CMD_PADDR_S     8
10465167865aSHariprasad Shenai #define FW_LDST_CMD_PADDR_V(x)	((x) << FW_LDST_CMD_PADDR_S)
10475167865aSHariprasad Shenai 
10485167865aSHariprasad Shenai #define FW_LDST_CMD_MMD_S       0
10495167865aSHariprasad Shenai #define FW_LDST_CMD_MMD_V(x)	((x) << FW_LDST_CMD_MMD_S)
10505167865aSHariprasad Shenai 
10515167865aSHariprasad Shenai #define FW_LDST_CMD_FID_S       15
10525167865aSHariprasad Shenai #define FW_LDST_CMD_FID_V(x)	((x) << FW_LDST_CMD_FID_S)
10535167865aSHariprasad Shenai 
10543ccc6cf7SHariprasad Shenai #define FW_LDST_CMD_IDX_S	0
10553ccc6cf7SHariprasad Shenai #define FW_LDST_CMD_IDX_V(x)	((x) << FW_LDST_CMD_IDX_S)
10565167865aSHariprasad Shenai 
10575167865aSHariprasad Shenai #define FW_LDST_CMD_RPLCPF_S    0
10585167865aSHariprasad Shenai #define FW_LDST_CMD_RPLCPF_V(x)	((x) << FW_LDST_CMD_RPLCPF_S)
10595167865aSHariprasad Shenai 
10605167865aSHariprasad Shenai #define FW_LDST_CMD_LC_S        4
10615167865aSHariprasad Shenai #define FW_LDST_CMD_LC_V(x)     ((x) << FW_LDST_CMD_LC_S)
10625167865aSHariprasad Shenai #define FW_LDST_CMD_LC_F	FW_LDST_CMD_LC_V(1U)
10635167865aSHariprasad Shenai 
10645167865aSHariprasad Shenai #define FW_LDST_CMD_FN_S        0
10655167865aSHariprasad Shenai #define FW_LDST_CMD_FN_V(x)	((x) << FW_LDST_CMD_FN_S)
10665167865aSHariprasad Shenai 
10675167865aSHariprasad Shenai #define FW_LDST_CMD_NACCESS_S           0
10685167865aSHariprasad Shenai #define FW_LDST_CMD_NACCESS_V(x)	((x) << FW_LDST_CMD_NACCESS_S)
1069f7917c00SJeff Kirsher 
1070f7917c00SJeff Kirsher struct fw_reset_cmd {
1071f7917c00SJeff Kirsher 	__be32 op_to_write;
1072f7917c00SJeff Kirsher 	__be32 retval_len16;
1073f7917c00SJeff Kirsher 	__be32 val;
107426f7cbc0SVipul Pandya 	__be32 halt_pkd;
1075f7917c00SJeff Kirsher };
1076f7917c00SJeff Kirsher 
10775167865aSHariprasad Shenai #define FW_RESET_CMD_HALT_S	31
10785167865aSHariprasad Shenai #define FW_RESET_CMD_HALT_M     0x1
10795167865aSHariprasad Shenai #define FW_RESET_CMD_HALT_V(x)	((x) << FW_RESET_CMD_HALT_S)
10805167865aSHariprasad Shenai #define FW_RESET_CMD_HALT_G(x)  \
10815167865aSHariprasad Shenai 	(((x) >> FW_RESET_CMD_HALT_S) & FW_RESET_CMD_HALT_M)
10825167865aSHariprasad Shenai #define FW_RESET_CMD_HALT_F	FW_RESET_CMD_HALT_V(1U)
108326f7cbc0SVipul Pandya 
1084636f9d37SVipul Pandya enum fw_hellow_cmd {
1085636f9d37SVipul Pandya 	fw_hello_cmd_stage_os		= 0x0
1086636f9d37SVipul Pandya };
1087636f9d37SVipul Pandya 
1088f7917c00SJeff Kirsher struct fw_hello_cmd {
1089f7917c00SJeff Kirsher 	__be32 op_to_write;
1090f7917c00SJeff Kirsher 	__be32 retval_len16;
1091ce91a923SNaresh Kumar Inna 	__be32 err_to_clearinit;
1092f7917c00SJeff Kirsher 	__be32 fwrev;
1093f7917c00SJeff Kirsher };
1094f7917c00SJeff Kirsher 
10955167865aSHariprasad Shenai #define FW_HELLO_CMD_ERR_S      31
10965167865aSHariprasad Shenai #define FW_HELLO_CMD_ERR_V(x)   ((x) << FW_HELLO_CMD_ERR_S)
10975167865aSHariprasad Shenai #define FW_HELLO_CMD_ERR_F	FW_HELLO_CMD_ERR_V(1U)
10985167865aSHariprasad Shenai 
10995167865aSHariprasad Shenai #define FW_HELLO_CMD_INIT_S     30
11005167865aSHariprasad Shenai #define FW_HELLO_CMD_INIT_V(x)  ((x) << FW_HELLO_CMD_INIT_S)
11015167865aSHariprasad Shenai #define FW_HELLO_CMD_INIT_F	FW_HELLO_CMD_INIT_V(1U)
11025167865aSHariprasad Shenai 
11035167865aSHariprasad Shenai #define FW_HELLO_CMD_MASTERDIS_S	29
11045167865aSHariprasad Shenai #define FW_HELLO_CMD_MASTERDIS_V(x)	((x) << FW_HELLO_CMD_MASTERDIS_S)
11055167865aSHariprasad Shenai 
11065167865aSHariprasad Shenai #define FW_HELLO_CMD_MASTERFORCE_S      28
11075167865aSHariprasad Shenai #define FW_HELLO_CMD_MASTERFORCE_V(x)	((x) << FW_HELLO_CMD_MASTERFORCE_S)
11085167865aSHariprasad Shenai 
11095167865aSHariprasad Shenai #define FW_HELLO_CMD_MBMASTER_S		24
11105167865aSHariprasad Shenai #define FW_HELLO_CMD_MBMASTER_M		0xfU
11115167865aSHariprasad Shenai #define FW_HELLO_CMD_MBMASTER_V(x)	((x) << FW_HELLO_CMD_MBMASTER_S)
11125167865aSHariprasad Shenai #define FW_HELLO_CMD_MBMASTER_G(x)	\
11135167865aSHariprasad Shenai 	(((x) >> FW_HELLO_CMD_MBMASTER_S) & FW_HELLO_CMD_MBMASTER_M)
11145167865aSHariprasad Shenai 
11155167865aSHariprasad Shenai #define FW_HELLO_CMD_MBASYNCNOTINT_S    23
11165167865aSHariprasad Shenai #define FW_HELLO_CMD_MBASYNCNOTINT_V(x)	((x) << FW_HELLO_CMD_MBASYNCNOTINT_S)
11175167865aSHariprasad Shenai 
11185167865aSHariprasad Shenai #define FW_HELLO_CMD_MBASYNCNOT_S       20
11195167865aSHariprasad Shenai #define FW_HELLO_CMD_MBASYNCNOT_V(x)	((x) << FW_HELLO_CMD_MBASYNCNOT_S)
11205167865aSHariprasad Shenai 
11215167865aSHariprasad Shenai #define FW_HELLO_CMD_STAGE_S		17
11225167865aSHariprasad Shenai #define FW_HELLO_CMD_STAGE_V(x)		((x) << FW_HELLO_CMD_STAGE_S)
11235167865aSHariprasad Shenai 
11245167865aSHariprasad Shenai #define FW_HELLO_CMD_CLEARINIT_S        16
11255167865aSHariprasad Shenai #define FW_HELLO_CMD_CLEARINIT_V(x)     ((x) << FW_HELLO_CMD_CLEARINIT_S)
11265167865aSHariprasad Shenai #define FW_HELLO_CMD_CLEARINIT_F	FW_HELLO_CMD_CLEARINIT_V(1U)
11275167865aSHariprasad Shenai 
1128f7917c00SJeff Kirsher struct fw_bye_cmd {
1129f7917c00SJeff Kirsher 	__be32 op_to_write;
1130f7917c00SJeff Kirsher 	__be32 retval_len16;
1131f7917c00SJeff Kirsher 	__be64 r3;
1132f7917c00SJeff Kirsher };
1133f7917c00SJeff Kirsher 
1134f7917c00SJeff Kirsher struct fw_initialize_cmd {
1135f7917c00SJeff Kirsher 	__be32 op_to_write;
1136f7917c00SJeff Kirsher 	__be32 retval_len16;
1137f7917c00SJeff Kirsher 	__be64 r3;
1138f7917c00SJeff Kirsher };
1139f7917c00SJeff Kirsher 
1140f7917c00SJeff Kirsher enum fw_caps_config_hm {
1141f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_HM_PCIE		= 0x00000001,
1142f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_HM_PL		= 0x00000002,
1143f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_HM_SGE		= 0x00000004,
1144f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_HM_CIM		= 0x00000008,
1145f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_HM_ULPTX		= 0x00000010,
1146f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_HM_TP		= 0x00000020,
1147f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_HM_ULPRX		= 0x00000040,
1148f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_HM_PMRX		= 0x00000080,
1149f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_HM_PMTX		= 0x00000100,
1150f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_HM_MC		= 0x00000200,
1151f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_HM_LE		= 0x00000400,
1152f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_HM_MPS		= 0x00000800,
1153f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_HM_XGMAC		= 0x00001000,
1154f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_HM_CPLSWITCH	= 0x00002000,
1155f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_HM_T4DBG		= 0x00004000,
1156f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_HM_MI		= 0x00008000,
1157f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_HM_I2CM		= 0x00010000,
1158f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_HM_NCSI		= 0x00020000,
1159f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_HM_SMB		= 0x00040000,
1160f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_HM_MA		= 0x00080000,
1161f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_HM_EDRAM		= 0x00100000,
1162f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_HM_PMU		= 0x00200000,
1163f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_HM_UART		= 0x00400000,
1164f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_HM_SF		= 0x00800000,
1165f7917c00SJeff Kirsher };
1166f7917c00SJeff Kirsher 
1167f7917c00SJeff Kirsher enum fw_caps_config_nbm {
1168f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_NBM_IPMI		= 0x00000001,
1169f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_NBM_NCSI		= 0x00000002,
1170f7917c00SJeff Kirsher };
1171f7917c00SJeff Kirsher 
1172f7917c00SJeff Kirsher enum fw_caps_config_link {
1173f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_LINK_PPP		= 0x00000001,
1174f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_LINK_QFC		= 0x00000002,
1175f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_LINK_DCBX	= 0x00000004,
1176f7917c00SJeff Kirsher };
1177f7917c00SJeff Kirsher 
1178f7917c00SJeff Kirsher enum fw_caps_config_switch {
1179f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_SWITCH_INGRESS	= 0x00000001,
1180f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_SWITCH_EGRESS	= 0x00000002,
1181f7917c00SJeff Kirsher };
1182f7917c00SJeff Kirsher 
1183f7917c00SJeff Kirsher enum fw_caps_config_nic {
1184f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_NIC		= 0x00000001,
1185f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_NIC_VM		= 0x00000002,
11865c31254eSKumar Sanghvi 	FW_CAPS_CONFIG_NIC_HASHFILTER	= 0x00000020,
1187ab0367eaSRahul Lakkireddy 	FW_CAPS_CONFIG_NIC_ETHOFLD	= 0x00000040,
1188f7917c00SJeff Kirsher };
1189f7917c00SJeff Kirsher 
1190f7917c00SJeff Kirsher enum fw_caps_config_ofld {
1191f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_OFLD		= 0x00000001,
1192f7917c00SJeff Kirsher };
1193f7917c00SJeff Kirsher 
1194f7917c00SJeff Kirsher enum fw_caps_config_rdma {
1195f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_RDMA_RDDP	= 0x00000001,
1196f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_RDMA_RDMAC	= 0x00000002,
1197f7917c00SJeff Kirsher };
1198f7917c00SJeff Kirsher 
1199f7917c00SJeff Kirsher enum fw_caps_config_iscsi {
1200f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_ISCSI_INITIATOR_PDU = 0x00000001,
1201f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_ISCSI_TARGET_PDU = 0x00000002,
1202f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_ISCSI_INITIATOR_CNXOFLD = 0x00000004,
1203f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_ISCSI_TARGET_CNXOFLD = 0x00000008,
1204f7917c00SJeff Kirsher };
1205f7917c00SJeff Kirsher 
1206e1087089SAtul Gupta enum fw_caps_config_crypto {
1207e1087089SAtul Gupta 	FW_CAPS_CONFIG_CRYPTO_LOOKASIDE = 0x00000001,
1208e1087089SAtul Gupta 	FW_CAPS_CONFIG_TLS_INLINE = 0x00000002,
1209e1087089SAtul Gupta 	FW_CAPS_CONFIG_IPSEC_INLINE = 0x00000004,
1210a3ac249aSRohit Maheshwari 	FW_CAPS_CONFIG_TLS_HW = 0x00000008,
1211e1087089SAtul Gupta };
1212e1087089SAtul Gupta 
1213f7917c00SJeff Kirsher enum fw_caps_config_fcoe {
1214f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_FCOE_INITIATOR	= 0x00000001,
1215f7917c00SJeff Kirsher 	FW_CAPS_CONFIG_FCOE_TARGET	= 0x00000002,
1216ce91a923SNaresh Kumar Inna 	FW_CAPS_CONFIG_FCOE_CTRL_OFLD	= 0x00000004,
1217f7917c00SJeff Kirsher };
1218f7917c00SJeff Kirsher 
121952367a76SVipul Pandya enum fw_memtype_cf {
122052367a76SVipul Pandya 	FW_MEMTYPE_CF_EDC0		= 0x0,
122152367a76SVipul Pandya 	FW_MEMTYPE_CF_EDC1		= 0x1,
122252367a76SVipul Pandya 	FW_MEMTYPE_CF_EXTMEM		= 0x2,
122352367a76SVipul Pandya 	FW_MEMTYPE_CF_FLASH		= 0x4,
122452367a76SVipul Pandya 	FW_MEMTYPE_CF_INTERNAL		= 0x5,
12257ef65a42SHariprasad Shenai 	FW_MEMTYPE_CF_EXTMEM1           = 0x6,
12268b4e6b3cSArjun Vynipadath 	FW_MEMTYPE_CF_HMA		= 0x7,
122752367a76SVipul Pandya };
122852367a76SVipul Pandya 
1229f7917c00SJeff Kirsher struct fw_caps_config_cmd {
1230f7917c00SJeff Kirsher 	__be32 op_to_write;
1231ce91a923SNaresh Kumar Inna 	__be32 cfvalid_to_len16;
1232f7917c00SJeff Kirsher 	__be32 r2;
1233f7917c00SJeff Kirsher 	__be32 hwmbitmap;
1234f7917c00SJeff Kirsher 	__be16 nbmcaps;
1235f7917c00SJeff Kirsher 	__be16 linkcaps;
1236f7917c00SJeff Kirsher 	__be16 switchcaps;
1237f7917c00SJeff Kirsher 	__be16 r3;
1238f7917c00SJeff Kirsher 	__be16 niccaps;
1239f7917c00SJeff Kirsher 	__be16 ofldcaps;
1240f7917c00SJeff Kirsher 	__be16 rdmacaps;
124194cdb8bbSHariprasad Shenai 	__be16 cryptocaps;
1242f7917c00SJeff Kirsher 	__be16 iscsicaps;
1243f7917c00SJeff Kirsher 	__be16 fcoecaps;
124452367a76SVipul Pandya 	__be32 cfcsum;
124552367a76SVipul Pandya 	__be32 finiver;
124652367a76SVipul Pandya 	__be32 finicsum;
1247f7917c00SJeff Kirsher };
1248f7917c00SJeff Kirsher 
12495167865aSHariprasad Shenai #define FW_CAPS_CONFIG_CMD_CFVALID_S    27
12505167865aSHariprasad Shenai #define FW_CAPS_CONFIG_CMD_CFVALID_V(x) ((x) << FW_CAPS_CONFIG_CMD_CFVALID_S)
12515167865aSHariprasad Shenai #define FW_CAPS_CONFIG_CMD_CFVALID_F    FW_CAPS_CONFIG_CMD_CFVALID_V(1U)
12525167865aSHariprasad Shenai 
12535167865aSHariprasad Shenai #define FW_CAPS_CONFIG_CMD_MEMTYPE_CF_S		24
12545167865aSHariprasad Shenai #define FW_CAPS_CONFIG_CMD_MEMTYPE_CF_V(x)	\
12555167865aSHariprasad Shenai 	((x) << FW_CAPS_CONFIG_CMD_MEMTYPE_CF_S)
12565167865aSHariprasad Shenai 
12575167865aSHariprasad Shenai #define FW_CAPS_CONFIG_CMD_MEMADDR64K_CF_S      16
12585167865aSHariprasad Shenai #define FW_CAPS_CONFIG_CMD_MEMADDR64K_CF_V(x)	\
12595167865aSHariprasad Shenai 	((x) << FW_CAPS_CONFIG_CMD_MEMADDR64K_CF_S)
126052367a76SVipul Pandya 
1261f7917c00SJeff Kirsher /*
1262f7917c00SJeff Kirsher  * params command mnemonics
1263f7917c00SJeff Kirsher  */
1264f7917c00SJeff Kirsher enum fw_params_mnem {
1265f7917c00SJeff Kirsher 	FW_PARAMS_MNEM_DEV		= 1,	/* device params */
1266f7917c00SJeff Kirsher 	FW_PARAMS_MNEM_PFVF		= 2,	/* function params */
1267f7917c00SJeff Kirsher 	FW_PARAMS_MNEM_REG		= 3,	/* limited register access */
1268f7917c00SJeff Kirsher 	FW_PARAMS_MNEM_DMAQ		= 4,	/* dma queue params */
12697ef65a42SHariprasad Shenai 	FW_PARAMS_MNEM_CHNET            = 5,    /* chnet params */
1270f7917c00SJeff Kirsher 	FW_PARAMS_MNEM_LAST
1271f7917c00SJeff Kirsher };
1272f7917c00SJeff Kirsher 
1273f7917c00SJeff Kirsher /*
1274f7917c00SJeff Kirsher  * device parameters
1275f7917c00SJeff Kirsher  */
1276dcf10ec7SRaju Rangoju 
1277dcf10ec7SRaju Rangoju #define FW_PARAMS_PARAM_FILTER_MODE_S 16
1278dcf10ec7SRaju Rangoju #define FW_PARAMS_PARAM_FILTER_MODE_M 0xffff
1279dcf10ec7SRaju Rangoju #define FW_PARAMS_PARAM_FILTER_MODE_V(x)          \
1280dcf10ec7SRaju Rangoju 	((x) << FW_PARAMS_PARAM_FILTER_MODE_S)
1281dcf10ec7SRaju Rangoju #define FW_PARAMS_PARAM_FILTER_MODE_G(x)          \
1282dcf10ec7SRaju Rangoju 	(((x) >> FW_PARAMS_PARAM_FILTER_MODE_S) & \
1283dcf10ec7SRaju Rangoju 	FW_PARAMS_PARAM_FILTER_MODE_M)
1284dcf10ec7SRaju Rangoju 
1285dcf10ec7SRaju Rangoju #define FW_PARAMS_PARAM_FILTER_MASK_S 0
1286dcf10ec7SRaju Rangoju #define FW_PARAMS_PARAM_FILTER_MASK_M 0xffff
1287dcf10ec7SRaju Rangoju #define FW_PARAMS_PARAM_FILTER_MASK_V(x)          \
1288dcf10ec7SRaju Rangoju 	((x) << FW_PARAMS_PARAM_FILTER_MASK_S)
1289dcf10ec7SRaju Rangoju #define FW_PARAMS_PARAM_FILTER_MASK_G(x)          \
1290dcf10ec7SRaju Rangoju 	(((x) >> FW_PARAMS_PARAM_FILTER_MASK_S) & \
1291dcf10ec7SRaju Rangoju 	FW_PARAMS_PARAM_FILTER_MASK_M)
1292dcf10ec7SRaju Rangoju 
1293f7917c00SJeff Kirsher enum fw_params_param_dev {
1294f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_DEV_CCLK	= 0x00, /* chip core clock in khz */
1295f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_DEV_PORTVEC	= 0x01, /* the port vector */
1296f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_DEV_NTID	= 0x02, /* reads the number of TIDs
1297f7917c00SJeff Kirsher 						 * allocated by the device's
1298f7917c00SJeff Kirsher 						 * Lookup Engine
1299f7917c00SJeff Kirsher 						 */
1300f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_DEV_FLOWC_BUFFIFO_SZ = 0x03,
1301f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_DEV_INTVER_NIC	= 0x04,
1302f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_DEV_INTVER_VNIC = 0x05,
1303f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_DEV_INTVER_OFLD = 0x06,
1304f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_DEV_INTVER_RI	= 0x07,
1305f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_DEV_INTVER_ISCSIPDU = 0x08,
1306f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_DEV_INTVER_ISCSI = 0x09,
1307f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_DEV_INTVER_FCOE = 0x0A,
1308f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_DEV_FWREV = 0x0B,
1309f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_DEV_TPREV = 0x0C,
131052367a76SVipul Pandya 	FW_PARAMS_PARAM_DEV_CF = 0x0D,
131101b69614SHariprasad Shenai 	FW_PARAMS_PARAM_DEV_PHYFW = 0x0F,
131270a5f3bbSHariprasad Shenai 	FW_PARAMS_PARAM_DEV_DIAG = 0x11,
13134c2c5763SHariprasad Shenai 	FW_PARAMS_PARAM_DEV_MAXORDIRD_QP = 0x13, /* max supported QP IRD/ORD */
13144c2c5763SHariprasad Shenai 	FW_PARAMS_PARAM_DEV_MAXIRD_ADAPTER = 0x14, /* max supported adap IRD */
13151ac0f095SKumar Sanghvi 	FW_PARAMS_PARAM_DEV_ULPTX_MEMWRITE_DSGL = 0x17,
131649216c1cSHariprasad Shenai 	FW_PARAMS_PARAM_DEV_FWCACHE = 0x18,
1317760446f9SGanesh Goudar 	FW_PARAMS_PARAM_DEV_SCFGREV = 0x1A,
1318760446f9SGanesh Goudar 	FW_PARAMS_PARAM_DEV_VPDREV = 0x1B,
1319086de575SSteve Wise 	FW_PARAMS_PARAM_DEV_RI_FR_NSMR_TPTE_WR	= 0x1C,
13200ff90994SKumar Sanghvi 	FW_PARAMS_PARAM_DEV_FILTER2_WR  = 0x1D,
13218f46d467SArjun Vynipadath 	FW_PARAMS_PARAM_DEV_MPSBGMAP	= 0x1E,
132274dd5aa1SVishal Kulkarni 	FW_PARAMS_PARAM_DEV_TPCHMAP     = 0x1F,
13238b4e6b3cSArjun Vynipadath 	FW_PARAMS_PARAM_DEV_HMA_SIZE	= 0x20,
132443db9296SRaju Rangoju 	FW_PARAMS_PARAM_DEV_RDMA_WRITE_WITH_IMM = 0x21,
1325a248384eSVarun Prakash 	FW_PARAMS_PARAM_DEV_PPOD_EDRAM  = 0x23,
1326f3910c62SRaju Rangoju 	FW_PARAMS_PARAM_DEV_RI_WRITE_CMPL_WR    = 0x24,
1327c2193999SShahjada Abul Husain 	FW_PARAMS_PARAM_DEV_HPFILTER_REGION_SUPPORT = 0x26,
132802d805dcSSantosh Rastapur 	FW_PARAMS_PARAM_DEV_OPAQUE_VIID_SMT_EXTN = 0x27,
132974dd5aa1SVishal Kulkarni 	FW_PARAMS_PARAM_DEV_HASHFILTER_WITH_OFLD = 0x28,
1330d429005fSVishal Kulkarni 	FW_PARAMS_PARAM_DEV_DBQ_TIMER	= 0x29,
1331d429005fSVishal Kulkarni 	FW_PARAMS_PARAM_DEV_DBQ_TIMERTICK = 0x2A,
1332ab0367eaSRahul Lakkireddy 	FW_PARAMS_PARAM_DEV_NUM_TM_CLASS = 0x2B,
1333dcf10ec7SRaju Rangoju 	FW_PARAMS_PARAM_DEV_FILTER = 0x2E,
1334a3ac249aSRohit Maheshwari 	FW_PARAMS_PARAM_DEV_KTLS_HW = 0x31,
1335f7917c00SJeff Kirsher };
1336f7917c00SJeff Kirsher 
1337f7917c00SJeff Kirsher /*
1338f7917c00SJeff Kirsher  * physical and virtual function parameters
1339f7917c00SJeff Kirsher  */
1340f7917c00SJeff Kirsher enum fw_params_param_pfvf {
1341f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_PFVF_RWXCAPS	= 0x00,
1342f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_PFVF_ROUTE_START = 0x01,
1343f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_PFVF_ROUTE_END = 0x02,
1344f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_PFVF_CLIP_START = 0x03,
1345f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_PFVF_CLIP_END = 0x04,
1346f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_PFVF_FILTER_START = 0x05,
1347f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_PFVF_FILTER_END = 0x06,
1348f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_PFVF_SERVER_START = 0x07,
1349f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_PFVF_SERVER_END = 0x08,
1350f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_PFVF_TDDP_START = 0x09,
1351f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_PFVF_TDDP_END = 0x0A,
1352f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_PFVF_ISCSI_START = 0x0B,
1353f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_PFVF_ISCSI_END = 0x0C,
1354f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_PFVF_STAG_START = 0x0D,
1355f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_PFVF_STAG_END = 0x0E,
1356f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_PFVF_RQ_START = 0x1F,
1357f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_PFVF_RQ_END	= 0x10,
1358f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_PFVF_PBL_START = 0x11,
1359f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_PFVF_PBL_END	= 0x12,
1360f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_PFVF_L2T_START = 0x13,
1361f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_PFVF_L2T_END = 0x14,
1362f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_PFVF_SQRQ_START = 0x15,
1363f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_PFVF_SQRQ_END	= 0x16,
1364f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_PFVF_CQ_START	= 0x17,
1365f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_PFVF_CQ_END	= 0x18,
1366a3cdaa69SRaju Rangoju 	FW_PARAMS_PARAM_PFVF_SRQ_START  = 0x19,
1367a3cdaa69SRaju Rangoju 	FW_PARAMS_PARAM_PFVF_SRQ_END    = 0x1A,
1368f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_PFVF_SCHEDCLASS_ETH = 0x20,
1369f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_PFVF_VIID       = 0x24,
1370f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_PFVF_CPMASK     = 0x25,
1371f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_PFVF_OCQ_START  = 0x26,
1372f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_PFVF_OCQ_END    = 0x27,
1373f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_PFVF_CONM_MAP   = 0x28,
1374f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_PFVF_IQFLINT_START = 0x29,
1375f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_PFVF_IQFLINT_END = 0x2A,
1376f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_PFVF_EQ_START	= 0x2B,
1377f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_PFVF_EQ_END	= 0x2C,
137852367a76SVipul Pandya 	FW_PARAMS_PARAM_PFVF_ACTIVE_FILTER_START = 0x2D,
1379b407a4a9SVipul Pandya 	FW_PARAMS_PARAM_PFVF_ACTIVE_FILTER_END = 0x2E,
13809030e498SRahul Lakkireddy 	FW_PARAMS_PARAM_PFVF_ETHOFLD_START = 0x2F,
1381b407a4a9SVipul Pandya 	FW_PARAMS_PARAM_PFVF_ETHOFLD_END = 0x30,
138272a56ca9SHarsh Jain 	FW_PARAMS_PARAM_PFVF_CPLFW4MSG_ENCAP = 0x31,
13839030e498SRahul Lakkireddy 	FW_PARAMS_PARAM_PFVF_HPFILTER_START = 0x32,
13849030e498SRahul Lakkireddy 	FW_PARAMS_PARAM_PFVF_HPFILTER_END = 0x33,
1385e1087089SAtul Gupta 	FW_PARAMS_PARAM_PFVF_TLS_START = 0x34,
1386e1087089SAtul Gupta 	FW_PARAMS_PARAM_PFVF_TLS_END = 0x35,
13870e249898SArjun Vynipadath 	FW_PARAMS_PARAM_PFVF_RAWF_START = 0x36,
13880e249898SArjun Vynipadath 	FW_PARAMS_PARAM_PFVF_RAWF_END = 0x37,
13899030e498SRahul Lakkireddy 	FW_PARAMS_PARAM_PFVF_NCRYPTO_LOOKASIDE = 0x39,
1390c3168cabSGanesh Goudar 	FW_PARAMS_PARAM_PFVF_PORT_CAPS32 = 0x3A,
1391a248384eSVarun Prakash 	FW_PARAMS_PARAM_PFVF_PPOD_EDRAM_START = 0x3B,
1392a248384eSVarun Prakash 	FW_PARAMS_PARAM_PFVF_PPOD_EDRAM_END = 0x3C,
13938b965f3fSArjun Vynipadath 	FW_PARAMS_PARAM_PFVF_LINK_STATE = 0x40,
13948b965f3fSArjun Vynipadath };
13958b965f3fSArjun Vynipadath 
13968b965f3fSArjun Vynipadath /* Virtual link state as seen by the specified VF */
13978b965f3fSArjun Vynipadath enum vf_link_states {
13988b965f3fSArjun Vynipadath 	FW_VF_LINK_STATE_AUTO		= 0x00,
13998b965f3fSArjun Vynipadath 	FW_VF_LINK_STATE_ENABLE		= 0x01,
14008b965f3fSArjun Vynipadath 	FW_VF_LINK_STATE_DISABLE	= 0x02,
1401f7917c00SJeff Kirsher };
1402f7917c00SJeff Kirsher 
1403f7917c00SJeff Kirsher /*
1404f7917c00SJeff Kirsher  * dma queue parameters
1405f7917c00SJeff Kirsher  */
1406f7917c00SJeff Kirsher enum fw_params_param_dmaq {
1407f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_DMAQ_IQ_DCAEN_DCACPU = 0x00,
1408f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_DMAQ_IQ_INTCNTTHRESH = 0x01,
1409f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_DMAQ_EQ_CMPLIQID_MNGT = 0x10,
1410f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_DMAQ_EQ_CMPLIQID_CTRL = 0x11,
1411f7917c00SJeff Kirsher 	FW_PARAMS_PARAM_DMAQ_EQ_SCHEDCLASS_ETH = 0x12,
1412989594e2SAnish Bhatt 	FW_PARAMS_PARAM_DMAQ_EQ_DCBPRIO_ETH = 0x13,
1413d429005fSVishal Kulkarni 	FW_PARAMS_PARAM_DMAQ_EQ_TIMERIX	= 0x15,
1414b8b1ae99SHariprasad Shenai 	FW_PARAMS_PARAM_DMAQ_CONM_CTXT = 0x20,
1415f7917c00SJeff Kirsher };
1416f7917c00SJeff Kirsher 
1417a3ac249aSRohit Maheshwari enum fw_params_param_dev_ktls_hw {
1418a3ac249aSRohit Maheshwari 	FW_PARAMS_PARAM_DEV_KTLS_HW_DISABLE      = 0x00,
1419a3ac249aSRohit Maheshwari 	FW_PARAMS_PARAM_DEV_KTLS_HW_ENABLE       = 0x01,
1420a3ac249aSRohit Maheshwari 	FW_PARAMS_PARAM_DEV_KTLS_HW_USER_ENABLE  = 0x01,
1421a3ac249aSRohit Maheshwari };
1422a3ac249aSRohit Maheshwari 
142301b69614SHariprasad Shenai enum fw_params_param_dev_phyfw {
142401b69614SHariprasad Shenai 	FW_PARAMS_PARAM_DEV_PHYFW_DOWNLOAD = 0x00,
142501b69614SHariprasad Shenai 	FW_PARAMS_PARAM_DEV_PHYFW_VERSION = 0x01,
142601b69614SHariprasad Shenai };
142701b69614SHariprasad Shenai 
142870a5f3bbSHariprasad Shenai enum fw_params_param_dev_diag {
142970a5f3bbSHariprasad Shenai 	FW_PARAM_DEV_DIAG_TMP		= 0x00,
143070a5f3bbSHariprasad Shenai 	FW_PARAM_DEV_DIAG_VDD		= 0x01,
1431b1871915SGanesh Goudar 	FW_PARAM_DEV_DIAG_MAXTMPTHRESH	= 0x02,
143270a5f3bbSHariprasad Shenai };
143370a5f3bbSHariprasad Shenai 
1434dcf10ec7SRaju Rangoju enum fw_params_param_dev_filter {
1435dcf10ec7SRaju Rangoju 	FW_PARAM_DEV_FILTER_VNIC_MODE   = 0x00,
1436dcf10ec7SRaju Rangoju 	FW_PARAM_DEV_FILTER_MODE_MASK   = 0x01,
1437dcf10ec7SRaju Rangoju };
1438dcf10ec7SRaju Rangoju 
143949216c1cSHariprasad Shenai enum fw_params_param_dev_fwcache {
144049216c1cSHariprasad Shenai 	FW_PARAM_DEV_FWCACHE_FLUSH      = 0x00,
144149216c1cSHariprasad Shenai 	FW_PARAM_DEV_FWCACHE_FLUSHINV   = 0x01,
144249216c1cSHariprasad Shenai };
144349216c1cSHariprasad Shenai 
14445167865aSHariprasad Shenai #define FW_PARAMS_MNEM_S	24
14455167865aSHariprasad Shenai #define FW_PARAMS_MNEM_V(x)	((x) << FW_PARAMS_MNEM_S)
14465167865aSHariprasad Shenai 
14475167865aSHariprasad Shenai #define FW_PARAMS_PARAM_X_S     16
14485167865aSHariprasad Shenai #define FW_PARAMS_PARAM_X_V(x)	((x) << FW_PARAMS_PARAM_X_S)
14495167865aSHariprasad Shenai 
14505167865aSHariprasad Shenai #define FW_PARAMS_PARAM_Y_S	8
14515167865aSHariprasad Shenai #define FW_PARAMS_PARAM_Y_M	0xffU
14525167865aSHariprasad Shenai #define FW_PARAMS_PARAM_Y_V(x)	((x) << FW_PARAMS_PARAM_Y_S)
14535167865aSHariprasad Shenai #define FW_PARAMS_PARAM_Y_G(x)	(((x) >> FW_PARAMS_PARAM_Y_S) &\
14545167865aSHariprasad Shenai 		FW_PARAMS_PARAM_Y_M)
14555167865aSHariprasad Shenai 
14565167865aSHariprasad Shenai #define FW_PARAMS_PARAM_Z_S	0
14575167865aSHariprasad Shenai #define FW_PARAMS_PARAM_Z_M	0xffu
14585167865aSHariprasad Shenai #define FW_PARAMS_PARAM_Z_V(x)	((x) << FW_PARAMS_PARAM_Z_S)
14595167865aSHariprasad Shenai #define FW_PARAMS_PARAM_Z_G(x)	(((x) >> FW_PARAMS_PARAM_Z_S) &\
14605167865aSHariprasad Shenai 		FW_PARAMS_PARAM_Z_M)
14615167865aSHariprasad Shenai 
14625167865aSHariprasad Shenai #define FW_PARAMS_PARAM_XYZ_S		0
14635167865aSHariprasad Shenai #define FW_PARAMS_PARAM_XYZ_V(x)	((x) << FW_PARAMS_PARAM_XYZ_S)
14645167865aSHariprasad Shenai 
14655167865aSHariprasad Shenai #define FW_PARAMS_PARAM_YZ_S		0
14665167865aSHariprasad Shenai #define FW_PARAMS_PARAM_YZ_V(x)		((x) << FW_PARAMS_PARAM_YZ_S)
1467f7917c00SJeff Kirsher 
1468f7917c00SJeff Kirsher struct fw_params_cmd {
1469f7917c00SJeff Kirsher 	__be32 op_to_vfn;
1470f7917c00SJeff Kirsher 	__be32 retval_len16;
1471f7917c00SJeff Kirsher 	struct fw_params_param {
1472f7917c00SJeff Kirsher 		__be32 mnem;
1473f7917c00SJeff Kirsher 		__be32 val;
1474f7917c00SJeff Kirsher 	} param[7];
1475f7917c00SJeff Kirsher };
1476f7917c00SJeff Kirsher 
14775167865aSHariprasad Shenai #define FW_PARAMS_CMD_PFN_S     8
14785167865aSHariprasad Shenai #define FW_PARAMS_CMD_PFN_V(x)	((x) << FW_PARAMS_CMD_PFN_S)
14795167865aSHariprasad Shenai 
14805167865aSHariprasad Shenai #define FW_PARAMS_CMD_VFN_S     0
14815167865aSHariprasad Shenai #define FW_PARAMS_CMD_VFN_V(x)	((x) << FW_PARAMS_CMD_VFN_S)
1482f7917c00SJeff Kirsher 
1483f7917c00SJeff Kirsher struct fw_pfvf_cmd {
1484f7917c00SJeff Kirsher 	__be32 op_to_vfn;
1485f7917c00SJeff Kirsher 	__be32 retval_len16;
1486f7917c00SJeff Kirsher 	__be32 niqflint_niq;
1487f7917c00SJeff Kirsher 	__be32 type_to_neq;
1488f7917c00SJeff Kirsher 	__be32 tc_to_nexactf;
1489f7917c00SJeff Kirsher 	__be32 r_caps_to_nethctrl;
1490f7917c00SJeff Kirsher 	__be16 nricq;
1491f7917c00SJeff Kirsher 	__be16 nriqp;
1492f7917c00SJeff Kirsher 	__be32 r4;
1493f7917c00SJeff Kirsher };
1494f7917c00SJeff Kirsher 
14955167865aSHariprasad Shenai #define FW_PFVF_CMD_PFN_S	8
14965167865aSHariprasad Shenai #define FW_PFVF_CMD_PFN_V(x)	((x) << FW_PFVF_CMD_PFN_S)
1497f7917c00SJeff Kirsher 
14985167865aSHariprasad Shenai #define FW_PFVF_CMD_VFN_S       0
14995167865aSHariprasad Shenai #define FW_PFVF_CMD_VFN_V(x)	((x) << FW_PFVF_CMD_VFN_S)
1500f7917c00SJeff Kirsher 
15015167865aSHariprasad Shenai #define FW_PFVF_CMD_NIQFLINT_S          20
15025167865aSHariprasad Shenai #define FW_PFVF_CMD_NIQFLINT_M          0xfff
15035167865aSHariprasad Shenai #define FW_PFVF_CMD_NIQFLINT_V(x)	((x) << FW_PFVF_CMD_NIQFLINT_S)
15045167865aSHariprasad Shenai #define FW_PFVF_CMD_NIQFLINT_G(x)	\
15055167865aSHariprasad Shenai 	(((x) >> FW_PFVF_CMD_NIQFLINT_S) & FW_PFVF_CMD_NIQFLINT_M)
1506f7917c00SJeff Kirsher 
15075167865aSHariprasad Shenai #define FW_PFVF_CMD_NIQ_S       0
15085167865aSHariprasad Shenai #define FW_PFVF_CMD_NIQ_M       0xfffff
15095167865aSHariprasad Shenai #define FW_PFVF_CMD_NIQ_V(x)	((x) << FW_PFVF_CMD_NIQ_S)
15105167865aSHariprasad Shenai #define FW_PFVF_CMD_NIQ_G(x)	\
15115167865aSHariprasad Shenai 	(((x) >> FW_PFVF_CMD_NIQ_S) & FW_PFVF_CMD_NIQ_M)
1512f7917c00SJeff Kirsher 
15135167865aSHariprasad Shenai #define FW_PFVF_CMD_TYPE_S      31
15145167865aSHariprasad Shenai #define FW_PFVF_CMD_TYPE_M      0x1
15155167865aSHariprasad Shenai #define FW_PFVF_CMD_TYPE_V(x)   ((x) << FW_PFVF_CMD_TYPE_S)
15165167865aSHariprasad Shenai #define FW_PFVF_CMD_TYPE_G(x)	\
15175167865aSHariprasad Shenai 	(((x) >> FW_PFVF_CMD_TYPE_S) & FW_PFVF_CMD_TYPE_M)
15185167865aSHariprasad Shenai #define FW_PFVF_CMD_TYPE_F      FW_PFVF_CMD_TYPE_V(1U)
1519f7917c00SJeff Kirsher 
15205167865aSHariprasad Shenai #define FW_PFVF_CMD_CMASK_S     24
15215167865aSHariprasad Shenai #define FW_PFVF_CMD_CMASK_M	0xf
15225167865aSHariprasad Shenai #define FW_PFVF_CMD_CMASK_V(x)	((x) << FW_PFVF_CMD_CMASK_S)
15235167865aSHariprasad Shenai #define FW_PFVF_CMD_CMASK_G(x)	\
15245167865aSHariprasad Shenai 	(((x) >> FW_PFVF_CMD_CMASK_S) & FW_PFVF_CMD_CMASK_M)
1525f7917c00SJeff Kirsher 
15265167865aSHariprasad Shenai #define FW_PFVF_CMD_PMASK_S     20
15275167865aSHariprasad Shenai #define FW_PFVF_CMD_PMASK_M	0xf
15285167865aSHariprasad Shenai #define FW_PFVF_CMD_PMASK_V(x)	((x) << FW_PFVF_CMD_PMASK_S)
15295167865aSHariprasad Shenai #define FW_PFVF_CMD_PMASK_G(x) \
15305167865aSHariprasad Shenai 	(((x) >> FW_PFVF_CMD_PMASK_S) & FW_PFVF_CMD_PMASK_M)
1531f7917c00SJeff Kirsher 
15325167865aSHariprasad Shenai #define FW_PFVF_CMD_NEQ_S       0
15335167865aSHariprasad Shenai #define FW_PFVF_CMD_NEQ_M       0xfffff
15345167865aSHariprasad Shenai #define FW_PFVF_CMD_NEQ_V(x)	((x) << FW_PFVF_CMD_NEQ_S)
15355167865aSHariprasad Shenai #define FW_PFVF_CMD_NEQ_G(x)	\
15365167865aSHariprasad Shenai 	(((x) >> FW_PFVF_CMD_NEQ_S) & FW_PFVF_CMD_NEQ_M)
1537f7917c00SJeff Kirsher 
15385167865aSHariprasad Shenai #define FW_PFVF_CMD_TC_S        24
15395167865aSHariprasad Shenai #define FW_PFVF_CMD_TC_M        0xff
15405167865aSHariprasad Shenai #define FW_PFVF_CMD_TC_V(x)	((x) << FW_PFVF_CMD_TC_S)
15415167865aSHariprasad Shenai #define FW_PFVF_CMD_TC_G(x)	(((x) >> FW_PFVF_CMD_TC_S) & FW_PFVF_CMD_TC_M)
1542f7917c00SJeff Kirsher 
15435167865aSHariprasad Shenai #define FW_PFVF_CMD_NVI_S       16
15445167865aSHariprasad Shenai #define FW_PFVF_CMD_NVI_M       0xff
15455167865aSHariprasad Shenai #define FW_PFVF_CMD_NVI_V(x)	((x) << FW_PFVF_CMD_NVI_S)
15465167865aSHariprasad Shenai #define FW_PFVF_CMD_NVI_G(x)	(((x) >> FW_PFVF_CMD_NVI_S) & FW_PFVF_CMD_NVI_M)
1547f7917c00SJeff Kirsher 
15485167865aSHariprasad Shenai #define FW_PFVF_CMD_NEXACTF_S           0
15495167865aSHariprasad Shenai #define FW_PFVF_CMD_NEXACTF_M           0xffff
15505167865aSHariprasad Shenai #define FW_PFVF_CMD_NEXACTF_V(x)	((x) << FW_PFVF_CMD_NEXACTF_S)
15515167865aSHariprasad Shenai #define FW_PFVF_CMD_NEXACTF_G(x)	\
15525167865aSHariprasad Shenai 	(((x) >> FW_PFVF_CMD_NEXACTF_S) & FW_PFVF_CMD_NEXACTF_M)
1553f7917c00SJeff Kirsher 
15545167865aSHariprasad Shenai #define FW_PFVF_CMD_R_CAPS_S    24
15555167865aSHariprasad Shenai #define FW_PFVF_CMD_R_CAPS_M    0xff
15565167865aSHariprasad Shenai #define FW_PFVF_CMD_R_CAPS_V(x) ((x) << FW_PFVF_CMD_R_CAPS_S)
15575167865aSHariprasad Shenai #define FW_PFVF_CMD_R_CAPS_G(x) \
15585167865aSHariprasad Shenai 	(((x) >> FW_PFVF_CMD_R_CAPS_S) & FW_PFVF_CMD_R_CAPS_M)
1559f7917c00SJeff Kirsher 
15605167865aSHariprasad Shenai #define FW_PFVF_CMD_WX_CAPS_S           16
15615167865aSHariprasad Shenai #define FW_PFVF_CMD_WX_CAPS_M           0xff
15625167865aSHariprasad Shenai #define FW_PFVF_CMD_WX_CAPS_V(x)	((x) << FW_PFVF_CMD_WX_CAPS_S)
15635167865aSHariprasad Shenai #define FW_PFVF_CMD_WX_CAPS_G(x)	\
15645167865aSHariprasad Shenai 	(((x) >> FW_PFVF_CMD_WX_CAPS_S) & FW_PFVF_CMD_WX_CAPS_M)
15655167865aSHariprasad Shenai 
15665167865aSHariprasad Shenai #define FW_PFVF_CMD_NETHCTRL_S          0
15675167865aSHariprasad Shenai #define FW_PFVF_CMD_NETHCTRL_M          0xffff
15685167865aSHariprasad Shenai #define FW_PFVF_CMD_NETHCTRL_V(x)	((x) << FW_PFVF_CMD_NETHCTRL_S)
15695167865aSHariprasad Shenai #define FW_PFVF_CMD_NETHCTRL_G(x)	\
15705167865aSHariprasad Shenai 	(((x) >> FW_PFVF_CMD_NETHCTRL_S) & FW_PFVF_CMD_NETHCTRL_M)
1571f7917c00SJeff Kirsher 
1572f7917c00SJeff Kirsher enum fw_iq_type {
1573f7917c00SJeff Kirsher 	FW_IQ_TYPE_FL_INT_CAP,
1574f7917c00SJeff Kirsher 	FW_IQ_TYPE_NO_FL_INT_CAP
1575f7917c00SJeff Kirsher };
1576f7917c00SJeff Kirsher 
15778dce04f1SArjun Vynipadath enum fw_iq_iqtype {
15788dce04f1SArjun Vynipadath 	FW_IQ_IQTYPE_OTHER,
15798dce04f1SArjun Vynipadath 	FW_IQ_IQTYPE_NIC,
15808dce04f1SArjun Vynipadath 	FW_IQ_IQTYPE_OFLD,
15818dce04f1SArjun Vynipadath };
15828dce04f1SArjun Vynipadath 
1583f7917c00SJeff Kirsher struct fw_iq_cmd {
1584f7917c00SJeff Kirsher 	__be32 op_to_vfn;
1585f7917c00SJeff Kirsher 	__be32 alloc_to_len16;
1586f7917c00SJeff Kirsher 	__be16 physiqid;
1587f7917c00SJeff Kirsher 	__be16 iqid;
1588f7917c00SJeff Kirsher 	__be16 fl0id;
1589f7917c00SJeff Kirsher 	__be16 fl1id;
1590f7917c00SJeff Kirsher 	__be32 type_to_iqandstindex;
1591f7917c00SJeff Kirsher 	__be16 iqdroprss_to_iqesize;
1592f7917c00SJeff Kirsher 	__be16 iqsize;
1593f7917c00SJeff Kirsher 	__be64 iqaddr;
1594f7917c00SJeff Kirsher 	__be32 iqns_to_fl0congen;
1595f7917c00SJeff Kirsher 	__be16 fl0dcaen_to_fl0cidxfthresh;
1596f7917c00SJeff Kirsher 	__be16 fl0size;
1597f7917c00SJeff Kirsher 	__be64 fl0addr;
1598f7917c00SJeff Kirsher 	__be32 fl1cngchmap_to_fl1congen;
1599f7917c00SJeff Kirsher 	__be16 fl1dcaen_to_fl1cidxfthresh;
1600f7917c00SJeff Kirsher 	__be16 fl1size;
1601f7917c00SJeff Kirsher 	__be64 fl1addr;
1602f7917c00SJeff Kirsher };
1603f7917c00SJeff Kirsher 
16046e4b51a6SHariprasad Shenai #define FW_IQ_CMD_PFN_S		8
16056e4b51a6SHariprasad Shenai #define FW_IQ_CMD_PFN_V(x)	((x) << FW_IQ_CMD_PFN_S)
1606f7917c00SJeff Kirsher 
16076e4b51a6SHariprasad Shenai #define FW_IQ_CMD_VFN_S		0
16086e4b51a6SHariprasad Shenai #define FW_IQ_CMD_VFN_V(x)	((x) << FW_IQ_CMD_VFN_S)
1609f7917c00SJeff Kirsher 
16106e4b51a6SHariprasad Shenai #define FW_IQ_CMD_ALLOC_S	31
16116e4b51a6SHariprasad Shenai #define FW_IQ_CMD_ALLOC_V(x)	((x) << FW_IQ_CMD_ALLOC_S)
16126e4b51a6SHariprasad Shenai #define FW_IQ_CMD_ALLOC_F	FW_IQ_CMD_ALLOC_V(1U)
1613f7917c00SJeff Kirsher 
16146e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FREE_S	30
16156e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FREE_V(x)	((x) << FW_IQ_CMD_FREE_S)
16166e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FREE_F	FW_IQ_CMD_FREE_V(1U)
1617f7917c00SJeff Kirsher 
16186e4b51a6SHariprasad Shenai #define FW_IQ_CMD_MODIFY_S	29
16196e4b51a6SHariprasad Shenai #define FW_IQ_CMD_MODIFY_V(x)	((x) << FW_IQ_CMD_MODIFY_S)
16206e4b51a6SHariprasad Shenai #define FW_IQ_CMD_MODIFY_F	FW_IQ_CMD_MODIFY_V(1U)
1621f7917c00SJeff Kirsher 
16226e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQSTART_S	28
16236e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQSTART_V(x)	((x) << FW_IQ_CMD_IQSTART_S)
16246e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQSTART_F	FW_IQ_CMD_IQSTART_V(1U)
1625f7917c00SJeff Kirsher 
16266e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQSTOP_S	27
16276e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQSTOP_V(x)	((x) << FW_IQ_CMD_IQSTOP_S)
16286e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQSTOP_F	FW_IQ_CMD_IQSTOP_V(1U)
1629f7917c00SJeff Kirsher 
16306e4b51a6SHariprasad Shenai #define FW_IQ_CMD_TYPE_S	29
16316e4b51a6SHariprasad Shenai #define FW_IQ_CMD_TYPE_V(x)	((x) << FW_IQ_CMD_TYPE_S)
16326e4b51a6SHariprasad Shenai 
16336e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQASYNCH_S	28
16346e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQASYNCH_V(x)	((x) << FW_IQ_CMD_IQASYNCH_S)
16356e4b51a6SHariprasad Shenai 
16366e4b51a6SHariprasad Shenai #define FW_IQ_CMD_VIID_S	16
16376e4b51a6SHariprasad Shenai #define FW_IQ_CMD_VIID_V(x)	((x) << FW_IQ_CMD_VIID_S)
16386e4b51a6SHariprasad Shenai 
16396e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQANDST_S	15
16406e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQANDST_V(x)	((x) << FW_IQ_CMD_IQANDST_S)
16416e4b51a6SHariprasad Shenai 
16426e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQANUS_S	14
16436e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQANUS_V(x)	((x) << FW_IQ_CMD_IQANUS_S)
16446e4b51a6SHariprasad Shenai 
16456e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQANUD_S	12
16466e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQANUD_V(x)	((x) << FW_IQ_CMD_IQANUD_S)
16476e4b51a6SHariprasad Shenai 
16486e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQANDSTINDEX_S	0
16496e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQANDSTINDEX_V(x)	((x) << FW_IQ_CMD_IQANDSTINDEX_S)
16506e4b51a6SHariprasad Shenai 
16516e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQDROPRSS_S		15
16526e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQDROPRSS_V(x)	((x) << FW_IQ_CMD_IQDROPRSS_S)
16536e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQDROPRSS_F	FW_IQ_CMD_IQDROPRSS_V(1U)
16546e4b51a6SHariprasad Shenai 
16556e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQGTSMODE_S		14
16566e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQGTSMODE_V(x)	((x) << FW_IQ_CMD_IQGTSMODE_S)
16576e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQGTSMODE_F		FW_IQ_CMD_IQGTSMODE_V(1U)
16586e4b51a6SHariprasad Shenai 
16596e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQPCIECH_S	12
16606e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQPCIECH_V(x)	((x) << FW_IQ_CMD_IQPCIECH_S)
16616e4b51a6SHariprasad Shenai 
16626e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQDCAEN_S	11
16636e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQDCAEN_V(x)	((x) << FW_IQ_CMD_IQDCAEN_S)
16646e4b51a6SHariprasad Shenai 
16656e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQDCACPU_S	6
16666e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQDCACPU_V(x)	((x) << FW_IQ_CMD_IQDCACPU_S)
16676e4b51a6SHariprasad Shenai 
16686e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQINTCNTTHRESH_S	4
16696e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQINTCNTTHRESH_V(x)	((x) << FW_IQ_CMD_IQINTCNTTHRESH_S)
16706e4b51a6SHariprasad Shenai 
16716e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQO_S		3
16726e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQO_V(x)	((x) << FW_IQ_CMD_IQO_S)
16736e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQO_F		FW_IQ_CMD_IQO_V(1U)
16746e4b51a6SHariprasad Shenai 
16756e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQCPRIO_S	2
16766e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQCPRIO_V(x)	((x) << FW_IQ_CMD_IQCPRIO_S)
16776e4b51a6SHariprasad Shenai 
16786e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQESIZE_S	0
16796e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQESIZE_V(x)	((x) << FW_IQ_CMD_IQESIZE_S)
16806e4b51a6SHariprasad Shenai 
16816e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQNS_S	31
16826e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQNS_V(x)	((x) << FW_IQ_CMD_IQNS_S)
16836e4b51a6SHariprasad Shenai 
16846e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQRO_S	30
16856e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQRO_V(x)	((x) << FW_IQ_CMD_IQRO_S)
16866e4b51a6SHariprasad Shenai 
16876e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQFLINTIQHSEN_S	28
16886e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQFLINTIQHSEN_V(x)	((x) << FW_IQ_CMD_IQFLINTIQHSEN_S)
16896e4b51a6SHariprasad Shenai 
16906e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQFLINTCONGEN_S	27
16916e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQFLINTCONGEN_V(x)	((x) << FW_IQ_CMD_IQFLINTCONGEN_S)
1692145ef8a5SHariprasad Shenai #define FW_IQ_CMD_IQFLINTCONGEN_F	FW_IQ_CMD_IQFLINTCONGEN_V(1U)
16936e4b51a6SHariprasad Shenai 
16946e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQFLINTISCSIC_S	26
16956e4b51a6SHariprasad Shenai #define FW_IQ_CMD_IQFLINTISCSIC_V(x)	((x) << FW_IQ_CMD_IQFLINTISCSIC_S)
16966e4b51a6SHariprasad Shenai 
16978dce04f1SArjun Vynipadath #define FW_IQ_CMD_IQTYPE_S		24
16988dce04f1SArjun Vynipadath #define FW_IQ_CMD_IQTYPE_M		0x3
16998dce04f1SArjun Vynipadath #define FW_IQ_CMD_IQTYPE_V(x)		((x) << FW_IQ_CMD_IQTYPE_S)
17008dce04f1SArjun Vynipadath #define FW_IQ_CMD_IQTYPE_G(x)		\
17018dce04f1SArjun Vynipadath 	(((x) >> FW_IQ_CMD_IQTYPE_S) & FW_IQ_CMD_IQTYPE_M)
17028dce04f1SArjun Vynipadath 
17036e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0CNGCHMAP_S		20
17046e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0CNGCHMAP_V(x)	((x) << FW_IQ_CMD_FL0CNGCHMAP_S)
17056e4b51a6SHariprasad Shenai 
17066e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0CACHELOCK_S	15
17076e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0CACHELOCK_V(x)	((x) << FW_IQ_CMD_FL0CACHELOCK_S)
17086e4b51a6SHariprasad Shenai 
17096e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0DBP_S	14
17106e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0DBP_V(x)	((x) << FW_IQ_CMD_FL0DBP_S)
17116e4b51a6SHariprasad Shenai 
17126e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0DATANS_S		13
17136e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0DATANS_V(x)	((x) << FW_IQ_CMD_FL0DATANS_S)
17146e4b51a6SHariprasad Shenai 
17156e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0DATARO_S		12
17166e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0DATARO_V(x)	((x) << FW_IQ_CMD_FL0DATARO_S)
17176e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0DATARO_F		FW_IQ_CMD_FL0DATARO_V(1U)
17186e4b51a6SHariprasad Shenai 
17196e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0CONGCIF_S		11
17206e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0CONGCIF_V(x)	((x) << FW_IQ_CMD_FL0CONGCIF_S)
1721145ef8a5SHariprasad Shenai #define FW_IQ_CMD_FL0CONGCIF_F		FW_IQ_CMD_FL0CONGCIF_V(1U)
17226e4b51a6SHariprasad Shenai 
17236e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0ONCHIP_S		10
17246e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0ONCHIP_V(x)	((x) << FW_IQ_CMD_FL0ONCHIP_S)
17256e4b51a6SHariprasad Shenai 
17266e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0STATUSPGNS_S	9
17276e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0STATUSPGNS_V(x)	((x) << FW_IQ_CMD_FL0STATUSPGNS_S)
17286e4b51a6SHariprasad Shenai 
17296e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0STATUSPGRO_S	8
17306e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0STATUSPGRO_V(x)	((x) << FW_IQ_CMD_FL0STATUSPGRO_S)
17316e4b51a6SHariprasad Shenai 
17326e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0FETCHNS_S		7
17336e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0FETCHNS_V(x)	((x) << FW_IQ_CMD_FL0FETCHNS_S)
17346e4b51a6SHariprasad Shenai 
17356e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0FETCHRO_S		6
17366e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0FETCHRO_V(x)	((x) << FW_IQ_CMD_FL0FETCHRO_S)
17376e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0FETCHRO_F		FW_IQ_CMD_FL0FETCHRO_V(1U)
17386e4b51a6SHariprasad Shenai 
17396e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0HOSTFCMODE_S	4
17406e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0HOSTFCMODE_V(x)	((x) << FW_IQ_CMD_FL0HOSTFCMODE_S)
17416e4b51a6SHariprasad Shenai 
17426e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0CPRIO_S	3
17436e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0CPRIO_V(x)	((x) << FW_IQ_CMD_FL0CPRIO_S)
17446e4b51a6SHariprasad Shenai 
17456e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0PADEN_S	2
17466e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0PADEN_V(x)	((x) << FW_IQ_CMD_FL0PADEN_S)
17476e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0PADEN_F	FW_IQ_CMD_FL0PADEN_V(1U)
17486e4b51a6SHariprasad Shenai 
17496e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0PACKEN_S		1
17506e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0PACKEN_V(x)	((x) << FW_IQ_CMD_FL0PACKEN_S)
17516e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0PACKEN_F		FW_IQ_CMD_FL0PACKEN_V(1U)
17526e4b51a6SHariprasad Shenai 
17536e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0CONGEN_S		0
17546e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0CONGEN_V(x)	((x) << FW_IQ_CMD_FL0CONGEN_S)
17556e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0CONGEN_F		FW_IQ_CMD_FL0CONGEN_V(1U)
17566e4b51a6SHariprasad Shenai 
17576e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0DCAEN_S	15
17586e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0DCAEN_V(x)	((x) << FW_IQ_CMD_FL0DCAEN_S)
17596e4b51a6SHariprasad Shenai 
17606e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0DCACPU_S		10
17616e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0DCACPU_V(x)	((x) << FW_IQ_CMD_FL0DCACPU_S)
17626e4b51a6SHariprasad Shenai 
17636e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0FBMIN_S	7
17646e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0FBMIN_V(x)	((x) << FW_IQ_CMD_FL0FBMIN_S)
17656e4b51a6SHariprasad Shenai 
17666e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0FBMAX_S	4
17676e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0FBMAX_V(x)	((x) << FW_IQ_CMD_FL0FBMAX_S)
17686e4b51a6SHariprasad Shenai 
17696e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0CIDXFTHRESHO_S	3
17706e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0CIDXFTHRESHO_V(x)	((x) << FW_IQ_CMD_FL0CIDXFTHRESHO_S)
17716e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0CIDXFTHRESHO_F	FW_IQ_CMD_FL0CIDXFTHRESHO_V(1U)
17726e4b51a6SHariprasad Shenai 
17736e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0CIDXFTHRESH_S	0
17746e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL0CIDXFTHRESH_V(x)	((x) << FW_IQ_CMD_FL0CIDXFTHRESH_S)
17756e4b51a6SHariprasad Shenai 
17766e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1CNGCHMAP_S		20
17776e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1CNGCHMAP_V(x)	((x) << FW_IQ_CMD_FL1CNGCHMAP_S)
17786e4b51a6SHariprasad Shenai 
17796e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1CACHELOCK_S	15
17806e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1CACHELOCK_V(x)	((x) << FW_IQ_CMD_FL1CACHELOCK_S)
17816e4b51a6SHariprasad Shenai 
17826e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1DBP_S	14
17836e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1DBP_V(x)	((x) << FW_IQ_CMD_FL1DBP_S)
17846e4b51a6SHariprasad Shenai 
17856e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1DATANS_S		13
17866e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1DATANS_V(x)	((x) << FW_IQ_CMD_FL1DATANS_S)
17876e4b51a6SHariprasad Shenai 
17886e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1DATARO_S		12
17896e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1DATARO_V(x)	((x) << FW_IQ_CMD_FL1DATARO_S)
17906e4b51a6SHariprasad Shenai 
17916e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1CONGCIF_S		11
17926e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1CONGCIF_V(x)	((x) << FW_IQ_CMD_FL1CONGCIF_S)
17936e4b51a6SHariprasad Shenai 
17946e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1ONCHIP_S		10
17956e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1ONCHIP_V(x)	((x) << FW_IQ_CMD_FL1ONCHIP_S)
17966e4b51a6SHariprasad Shenai 
17976e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1STATUSPGNS_S	9
17986e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1STATUSPGNS_V(x)	((x) << FW_IQ_CMD_FL1STATUSPGNS_S)
17996e4b51a6SHariprasad Shenai 
18006e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1STATUSPGRO_S	8
18016e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1STATUSPGRO_V(x)	((x) << FW_IQ_CMD_FL1STATUSPGRO_S)
18026e4b51a6SHariprasad Shenai 
18036e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1FETCHNS_S		7
18046e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1FETCHNS_V(x)	((x) << FW_IQ_CMD_FL1FETCHNS_S)
18056e4b51a6SHariprasad Shenai 
18066e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1FETCHRO_S		6
18076e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1FETCHRO_V(x)	((x) << FW_IQ_CMD_FL1FETCHRO_S)
18086e4b51a6SHariprasad Shenai 
18096e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1HOSTFCMODE_S	4
18106e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1HOSTFCMODE_V(x)	((x) << FW_IQ_CMD_FL1HOSTFCMODE_S)
18116e4b51a6SHariprasad Shenai 
18126e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1CPRIO_S	3
18136e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1CPRIO_V(x)	((x) << FW_IQ_CMD_FL1CPRIO_S)
18146e4b51a6SHariprasad Shenai 
18156e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1PADEN_S	2
18166e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1PADEN_V(x)	((x) << FW_IQ_CMD_FL1PADEN_S)
18176e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1PADEN_F	FW_IQ_CMD_FL1PADEN_V(1U)
18186e4b51a6SHariprasad Shenai 
18196e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1PACKEN_S		1
18206e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1PACKEN_V(x)	((x) << FW_IQ_CMD_FL1PACKEN_S)
18216e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1PACKEN_F	FW_IQ_CMD_FL1PACKEN_V(1U)
18226e4b51a6SHariprasad Shenai 
18236e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1CONGEN_S		0
18246e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1CONGEN_V(x)	((x) << FW_IQ_CMD_FL1CONGEN_S)
18256e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1CONGEN_F	FW_IQ_CMD_FL1CONGEN_V(1U)
18266e4b51a6SHariprasad Shenai 
18276e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1DCAEN_S	15
18286e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1DCAEN_V(x)	((x) << FW_IQ_CMD_FL1DCAEN_S)
18296e4b51a6SHariprasad Shenai 
18306e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1DCACPU_S		10
18316e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1DCACPU_V(x)	((x) << FW_IQ_CMD_FL1DCACPU_S)
18326e4b51a6SHariprasad Shenai 
18336e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1FBMIN_S	7
18346e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1FBMIN_V(x)	((x) << FW_IQ_CMD_FL1FBMIN_S)
18356e4b51a6SHariprasad Shenai 
18366e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1FBMAX_S	4
18376e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1FBMAX_V(x)	((x) << FW_IQ_CMD_FL1FBMAX_S)
18386e4b51a6SHariprasad Shenai 
18396e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1CIDXFTHRESHO_S	3
18406e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1CIDXFTHRESHO_V(x)	((x) << FW_IQ_CMD_FL1CIDXFTHRESHO_S)
18416e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1CIDXFTHRESHO_F	FW_IQ_CMD_FL1CIDXFTHRESHO_V(1U)
18426e4b51a6SHariprasad Shenai 
18436e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1CIDXFTHRESH_S	0
18446e4b51a6SHariprasad Shenai #define FW_IQ_CMD_FL1CIDXFTHRESH_V(x)	((x) << FW_IQ_CMD_FL1CIDXFTHRESH_S)
1845f7917c00SJeff Kirsher 
1846f7917c00SJeff Kirsher struct fw_eq_eth_cmd {
1847f7917c00SJeff Kirsher 	__be32 op_to_vfn;
1848f7917c00SJeff Kirsher 	__be32 alloc_to_len16;
1849f7917c00SJeff Kirsher 	__be32 eqid_pkd;
1850f7917c00SJeff Kirsher 	__be32 physeqid_pkd;
1851f7917c00SJeff Kirsher 	__be32 fetchszm_to_iqid;
1852f7917c00SJeff Kirsher 	__be32 dcaen_to_eqsize;
1853f7917c00SJeff Kirsher 	__be64 eqaddr;
1854d429005fSVishal Kulkarni 	__be32 autoequiqe_to_viid;
1855d429005fSVishal Kulkarni 	__be32 timeren_timerix;
1856f7917c00SJeff Kirsher 	__be64 r9;
1857f7917c00SJeff Kirsher };
1858f7917c00SJeff Kirsher 
18596e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_PFN_S	8
18606e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_PFN_V(x)	((x) << FW_EQ_ETH_CMD_PFN_S)
1861f7917c00SJeff Kirsher 
18626e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_VFN_S	0
18636e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_VFN_V(x)	((x) << FW_EQ_ETH_CMD_VFN_S)
1864f7917c00SJeff Kirsher 
18656e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_ALLOC_S		31
18666e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_ALLOC_V(x)	((x) << FW_EQ_ETH_CMD_ALLOC_S)
18676e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_ALLOC_F	FW_EQ_ETH_CMD_ALLOC_V(1U)
1868f7917c00SJeff Kirsher 
18696e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_FREE_S	30
18706e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_FREE_V(x)	((x) << FW_EQ_ETH_CMD_FREE_S)
18716e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_FREE_F	FW_EQ_ETH_CMD_FREE_V(1U)
1872f7917c00SJeff Kirsher 
18736e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_MODIFY_S		29
18746e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_MODIFY_V(x)	((x) << FW_EQ_ETH_CMD_MODIFY_S)
18756e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_MODIFY_F	FW_EQ_ETH_CMD_MODIFY_V(1U)
18766e4b51a6SHariprasad Shenai 
18776e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_EQSTART_S		28
18786e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_EQSTART_V(x)	((x) << FW_EQ_ETH_CMD_EQSTART_S)
18796e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_EQSTART_F	FW_EQ_ETH_CMD_EQSTART_V(1U)
18806e4b51a6SHariprasad Shenai 
18816e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_EQSTOP_S		27
18826e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_EQSTOP_V(x)	((x) << FW_EQ_ETH_CMD_EQSTOP_S)
18836e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_EQSTOP_F	FW_EQ_ETH_CMD_EQSTOP_V(1U)
18846e4b51a6SHariprasad Shenai 
18856e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_EQID_S	0
18866e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_EQID_M	0xfffff
18876e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_EQID_V(x)	((x) << FW_EQ_ETH_CMD_EQID_S)
18886e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_EQID_G(x)	\
18896e4b51a6SHariprasad Shenai 	(((x) >> FW_EQ_ETH_CMD_EQID_S) & FW_EQ_ETH_CMD_EQID_M)
18906e4b51a6SHariprasad Shenai 
18916e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_PHYSEQID_S	0
18926e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_PHYSEQID_M	0xfffff
18936e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_PHYSEQID_V(x)	((x) << FW_EQ_ETH_CMD_PHYSEQID_S)
18946e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_PHYSEQID_G(x)	\
18956e4b51a6SHariprasad Shenai 	(((x) >> FW_EQ_ETH_CMD_PHYSEQID_S) & FW_EQ_ETH_CMD_PHYSEQID_M)
18966e4b51a6SHariprasad Shenai 
18976e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_FETCHSZM_S	26
18986e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_FETCHSZM_V(x)	((x) << FW_EQ_ETH_CMD_FETCHSZM_S)
18996e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_FETCHSZM_F	FW_EQ_ETH_CMD_FETCHSZM_V(1U)
19006e4b51a6SHariprasad Shenai 
19016e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_STATUSPGNS_S	25
19026e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_STATUSPGNS_V(x)	((x) << FW_EQ_ETH_CMD_STATUSPGNS_S)
19036e4b51a6SHariprasad Shenai 
19046e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_STATUSPGRO_S	24
19056e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_STATUSPGRO_V(x)	((x) << FW_EQ_ETH_CMD_STATUSPGRO_S)
19066e4b51a6SHariprasad Shenai 
19076e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_FETCHNS_S		23
19086e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_FETCHNS_V(x)	((x) << FW_EQ_ETH_CMD_FETCHNS_S)
19096e4b51a6SHariprasad Shenai 
19106e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_FETCHRO_S		22
19116e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_FETCHRO_V(x)	((x) << FW_EQ_ETH_CMD_FETCHRO_S)
19121ecc7b7aSHariprasad Shenai #define FW_EQ_ETH_CMD_FETCHRO_F		FW_EQ_ETH_CMD_FETCHRO_V(1U)
19136e4b51a6SHariprasad Shenai 
19146e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_HOSTFCMODE_S	20
19156e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_HOSTFCMODE_V(x)	((x) << FW_EQ_ETH_CMD_HOSTFCMODE_S)
19166e4b51a6SHariprasad Shenai 
19176e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_CPRIO_S		19
19186e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_CPRIO_V(x)	((x) << FW_EQ_ETH_CMD_CPRIO_S)
19196e4b51a6SHariprasad Shenai 
19206e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_ONCHIP_S		18
19216e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_ONCHIP_V(x)	((x) << FW_EQ_ETH_CMD_ONCHIP_S)
19226e4b51a6SHariprasad Shenai 
19236e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_PCIECHN_S		16
19246e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_PCIECHN_V(x)	((x) << FW_EQ_ETH_CMD_PCIECHN_S)
19256e4b51a6SHariprasad Shenai 
19266e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_IQID_S	0
19276e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_IQID_V(x)	((x) << FW_EQ_ETH_CMD_IQID_S)
19286e4b51a6SHariprasad Shenai 
19296e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_DCAEN_S		31
19306e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_DCAEN_V(x)	((x) << FW_EQ_ETH_CMD_DCAEN_S)
19316e4b51a6SHariprasad Shenai 
19326e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_DCACPU_S		26
19336e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_DCACPU_V(x)	((x) << FW_EQ_ETH_CMD_DCACPU_S)
19346e4b51a6SHariprasad Shenai 
19356e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_FBMIN_S		23
19366e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_FBMIN_V(x)	((x) << FW_EQ_ETH_CMD_FBMIN_S)
19376e4b51a6SHariprasad Shenai 
19386e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_FBMAX_S		20
19396e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_FBMAX_V(x)	((x) << FW_EQ_ETH_CMD_FBMAX_S)
19406e4b51a6SHariprasad Shenai 
19416e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_CIDXFTHRESHO_S	19
19426e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_CIDXFTHRESHO_V(x)	((x) << FW_EQ_ETH_CMD_CIDXFTHRESHO_S)
19436e4b51a6SHariprasad Shenai 
19446e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_CIDXFTHRESH_S	16
19456e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_CIDXFTHRESH_V(x)	((x) << FW_EQ_ETH_CMD_CIDXFTHRESH_S)
19466e4b51a6SHariprasad Shenai 
19476e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_EQSIZE_S		0
19486e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_EQSIZE_V(x)	((x) << FW_EQ_ETH_CMD_EQSIZE_S)
19496e4b51a6SHariprasad Shenai 
1950d429005fSVishal Kulkarni #define FW_EQ_ETH_CMD_AUTOEQUIQE_S	31
1951d429005fSVishal Kulkarni #define FW_EQ_ETH_CMD_AUTOEQUIQE_V(x)	((x) << FW_EQ_ETH_CMD_AUTOEQUIQE_S)
1952d429005fSVishal Kulkarni #define FW_EQ_ETH_CMD_AUTOEQUIQE_F	FW_EQ_ETH_CMD_AUTOEQUIQE_V(1U)
1953d429005fSVishal Kulkarni 
19546e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_AUTOEQUEQE_S	30
19556e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_AUTOEQUEQE_V(x)	((x) << FW_EQ_ETH_CMD_AUTOEQUEQE_S)
19566e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_AUTOEQUEQE_F	FW_EQ_ETH_CMD_AUTOEQUEQE_V(1U)
19576e4b51a6SHariprasad Shenai 
19586e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_VIID_S	16
19596e4b51a6SHariprasad Shenai #define FW_EQ_ETH_CMD_VIID_V(x)	((x) << FW_EQ_ETH_CMD_VIID_S)
1960f7917c00SJeff Kirsher 
1961d429005fSVishal Kulkarni #define FW_EQ_ETH_CMD_TIMEREN_S		3
1962d429005fSVishal Kulkarni #define FW_EQ_ETH_CMD_TIMEREN_M		0x1
1963d429005fSVishal Kulkarni #define FW_EQ_ETH_CMD_TIMEREN_V(x)	((x) << FW_EQ_ETH_CMD_TIMEREN_S)
1964d429005fSVishal Kulkarni #define FW_EQ_ETH_CMD_TIMEREN_G(x)	\
1965d429005fSVishal Kulkarni     (((x) >> FW_EQ_ETH_CMD_TIMEREN_S) & FW_EQ_ETH_CMD_TIMEREN_M)
1966d429005fSVishal Kulkarni #define FW_EQ_ETH_CMD_TIMEREN_F	FW_EQ_ETH_CMD_TIMEREN_V(1U)
1967d429005fSVishal Kulkarni 
1968d429005fSVishal Kulkarni #define FW_EQ_ETH_CMD_TIMERIX_S		0
1969d429005fSVishal Kulkarni #define FW_EQ_ETH_CMD_TIMERIX_M		0x7
1970d429005fSVishal Kulkarni #define FW_EQ_ETH_CMD_TIMERIX_V(x)	((x) << FW_EQ_ETH_CMD_TIMERIX_S)
1971d429005fSVishal Kulkarni #define FW_EQ_ETH_CMD_TIMERIX_G(x)	\
1972d429005fSVishal Kulkarni     (((x) >> FW_EQ_ETH_CMD_TIMERIX_S) & FW_EQ_ETH_CMD_TIMERIX_M)
1973d429005fSVishal Kulkarni 
1974f7917c00SJeff Kirsher struct fw_eq_ctrl_cmd {
1975f7917c00SJeff Kirsher 	__be32 op_to_vfn;
1976f7917c00SJeff Kirsher 	__be32 alloc_to_len16;
1977f7917c00SJeff Kirsher 	__be32 cmpliqid_eqid;
1978f7917c00SJeff Kirsher 	__be32 physeqid_pkd;
1979f7917c00SJeff Kirsher 	__be32 fetchszm_to_iqid;
1980f7917c00SJeff Kirsher 	__be32 dcaen_to_eqsize;
1981f7917c00SJeff Kirsher 	__be64 eqaddr;
1982f7917c00SJeff Kirsher };
1983f7917c00SJeff Kirsher 
19846e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_PFN_S	8
19856e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_PFN_V(x)	((x) << FW_EQ_CTRL_CMD_PFN_S)
1986f7917c00SJeff Kirsher 
19876e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_VFN_S	0
19886e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_VFN_V(x)	((x) << FW_EQ_CTRL_CMD_VFN_S)
1989f7917c00SJeff Kirsher 
19906e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_ALLOC_S		31
19916e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_ALLOC_V(x)	((x) << FW_EQ_CTRL_CMD_ALLOC_S)
19926e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_ALLOC_F		FW_EQ_CTRL_CMD_ALLOC_V(1U)
1993f7917c00SJeff Kirsher 
19946e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_FREE_S		30
19956e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_FREE_V(x)	((x) << FW_EQ_CTRL_CMD_FREE_S)
19966e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_FREE_F		FW_EQ_CTRL_CMD_FREE_V(1U)
1997f7917c00SJeff Kirsher 
19986e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_MODIFY_S		29
19996e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_MODIFY_V(x)	((x) << FW_EQ_CTRL_CMD_MODIFY_S)
20006e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_MODIFY_F		FW_EQ_CTRL_CMD_MODIFY_V(1U)
20016e4b51a6SHariprasad Shenai 
20026e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_EQSTART_S	28
20036e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_EQSTART_V(x)	((x) << FW_EQ_CTRL_CMD_EQSTART_S)
20046e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_EQSTART_F	FW_EQ_CTRL_CMD_EQSTART_V(1U)
20056e4b51a6SHariprasad Shenai 
20066e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_EQSTOP_S		27
20076e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_EQSTOP_V(x)	((x) << FW_EQ_CTRL_CMD_EQSTOP_S)
20086e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_EQSTOP_F		FW_EQ_CTRL_CMD_EQSTOP_V(1U)
20096e4b51a6SHariprasad Shenai 
20106e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_CMPLIQID_S	20
20116e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_CMPLIQID_V(x)	((x) << FW_EQ_CTRL_CMD_CMPLIQID_S)
20126e4b51a6SHariprasad Shenai 
20136e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_EQID_S		0
20146e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_EQID_M		0xfffff
20156e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_EQID_V(x)	((x) << FW_EQ_CTRL_CMD_EQID_S)
20166e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_EQID_G(x)	\
20176e4b51a6SHariprasad Shenai 	(((x) >> FW_EQ_CTRL_CMD_EQID_S) & FW_EQ_CTRL_CMD_EQID_M)
20186e4b51a6SHariprasad Shenai 
20196e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_PHYSEQID_S	0
20206e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_PHYSEQID_M	0xfffff
20216e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_PHYSEQID_G(x)	\
20226e4b51a6SHariprasad Shenai 	(((x) >> FW_EQ_CTRL_CMD_PHYSEQID_S) & FW_EQ_CTRL_CMD_PHYSEQID_M)
20236e4b51a6SHariprasad Shenai 
20246e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_FETCHSZM_S	26
20256e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_FETCHSZM_V(x)	((x) << FW_EQ_CTRL_CMD_FETCHSZM_S)
20266e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_FETCHSZM_F	FW_EQ_CTRL_CMD_FETCHSZM_V(1U)
20276e4b51a6SHariprasad Shenai 
20286e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_STATUSPGNS_S	25
20296e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_STATUSPGNS_V(x)	((x) << FW_EQ_CTRL_CMD_STATUSPGNS_S)
20306e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_STATUSPGNS_F	FW_EQ_CTRL_CMD_STATUSPGNS_V(1U)
20316e4b51a6SHariprasad Shenai 
20326e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_STATUSPGRO_S	24
20336e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_STATUSPGRO_V(x)	((x) << FW_EQ_CTRL_CMD_STATUSPGRO_S)
20346e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_STATUSPGRO_F	FW_EQ_CTRL_CMD_STATUSPGRO_V(1U)
20356e4b51a6SHariprasad Shenai 
20366e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_FETCHNS_S	23
20376e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_FETCHNS_V(x)	((x) << FW_EQ_CTRL_CMD_FETCHNS_S)
20386e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_FETCHNS_F	FW_EQ_CTRL_CMD_FETCHNS_V(1U)
20396e4b51a6SHariprasad Shenai 
20406e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_FETCHRO_S	22
20416e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_FETCHRO_V(x)	((x) << FW_EQ_CTRL_CMD_FETCHRO_S)
20426e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_FETCHRO_F	FW_EQ_CTRL_CMD_FETCHRO_V(1U)
20436e4b51a6SHariprasad Shenai 
20446e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_HOSTFCMODE_S	20
20456e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_HOSTFCMODE_V(x)	((x) << FW_EQ_CTRL_CMD_HOSTFCMODE_S)
20466e4b51a6SHariprasad Shenai 
20476e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_CPRIO_S		19
20486e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_CPRIO_V(x)	((x) << FW_EQ_CTRL_CMD_CPRIO_S)
20496e4b51a6SHariprasad Shenai 
20506e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_ONCHIP_S		18
20516e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_ONCHIP_V(x)	((x) << FW_EQ_CTRL_CMD_ONCHIP_S)
20526e4b51a6SHariprasad Shenai 
20536e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_PCIECHN_S	16
20546e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_PCIECHN_V(x)	((x) << FW_EQ_CTRL_CMD_PCIECHN_S)
20556e4b51a6SHariprasad Shenai 
20566e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_IQID_S		0
20576e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_IQID_V(x)	((x) << FW_EQ_CTRL_CMD_IQID_S)
20586e4b51a6SHariprasad Shenai 
20596e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_DCAEN_S		31
20606e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_DCAEN_V(x)	((x) << FW_EQ_CTRL_CMD_DCAEN_S)
20616e4b51a6SHariprasad Shenai 
20626e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_DCACPU_S		26
20636e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_DCACPU_V(x)	((x) << FW_EQ_CTRL_CMD_DCACPU_S)
20646e4b51a6SHariprasad Shenai 
20656e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_FBMIN_S		23
20666e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_FBMIN_V(x)	((x) << FW_EQ_CTRL_CMD_FBMIN_S)
20676e4b51a6SHariprasad Shenai 
20686e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_FBMAX_S		20
20696e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_FBMAX_V(x)	((x) << FW_EQ_CTRL_CMD_FBMAX_S)
20706e4b51a6SHariprasad Shenai 
20716e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_CIDXFTHRESHO_S		19
20726e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_CIDXFTHRESHO_V(x)	\
20736e4b51a6SHariprasad Shenai 	((x) << FW_EQ_CTRL_CMD_CIDXFTHRESHO_S)
20746e4b51a6SHariprasad Shenai 
20756e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_CIDXFTHRESH_S	16
20766e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_CIDXFTHRESH_V(x)	((x) << FW_EQ_CTRL_CMD_CIDXFTHRESH_S)
20776e4b51a6SHariprasad Shenai 
20786e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_EQSIZE_S		0
20796e4b51a6SHariprasad Shenai #define FW_EQ_CTRL_CMD_EQSIZE_V(x)	((x) << FW_EQ_CTRL_CMD_EQSIZE_S)
2080f7917c00SJeff Kirsher 
2081f7917c00SJeff Kirsher struct fw_eq_ofld_cmd {
2082f7917c00SJeff Kirsher 	__be32 op_to_vfn;
2083f7917c00SJeff Kirsher 	__be32 alloc_to_len16;
2084f7917c00SJeff Kirsher 	__be32 eqid_pkd;
2085f7917c00SJeff Kirsher 	__be32 physeqid_pkd;
2086f7917c00SJeff Kirsher 	__be32 fetchszm_to_iqid;
2087f7917c00SJeff Kirsher 	__be32 dcaen_to_eqsize;
2088f7917c00SJeff Kirsher 	__be64 eqaddr;
2089f7917c00SJeff Kirsher };
2090f7917c00SJeff Kirsher 
20916e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_PFN_S	8
20926e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_PFN_V(x)	((x) << FW_EQ_OFLD_CMD_PFN_S)
2093f7917c00SJeff Kirsher 
20946e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_VFN_S	0
20956e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_VFN_V(x)	((x) << FW_EQ_OFLD_CMD_VFN_S)
2096f7917c00SJeff Kirsher 
20976e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_ALLOC_S		31
20986e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_ALLOC_V(x)	((x) << FW_EQ_OFLD_CMD_ALLOC_S)
20996e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_ALLOC_F		FW_EQ_OFLD_CMD_ALLOC_V(1U)
2100f7917c00SJeff Kirsher 
21016e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_FREE_S		30
21026e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_FREE_V(x)	((x) << FW_EQ_OFLD_CMD_FREE_S)
21036e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_FREE_F		FW_EQ_OFLD_CMD_FREE_V(1U)
2104f7917c00SJeff Kirsher 
21056e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_MODIFY_S		29
21066e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_MODIFY_V(x)	((x) << FW_EQ_OFLD_CMD_MODIFY_S)
21076e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_MODIFY_F		FW_EQ_OFLD_CMD_MODIFY_V(1U)
21086e4b51a6SHariprasad Shenai 
21096e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_EQSTART_S	28
21106e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_EQSTART_V(x)	((x) << FW_EQ_OFLD_CMD_EQSTART_S)
21116e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_EQSTART_F	FW_EQ_OFLD_CMD_EQSTART_V(1U)
21126e4b51a6SHariprasad Shenai 
21136e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_EQSTOP_S		27
21146e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_EQSTOP_V(x)	((x) << FW_EQ_OFLD_CMD_EQSTOP_S)
21156e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_EQSTOP_F		FW_EQ_OFLD_CMD_EQSTOP_V(1U)
21166e4b51a6SHariprasad Shenai 
21176e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_EQID_S		0
21186e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_EQID_M		0xfffff
21196e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_EQID_V(x)	((x) << FW_EQ_OFLD_CMD_EQID_S)
21206e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_EQID_G(x)	\
21216e4b51a6SHariprasad Shenai 	(((x) >> FW_EQ_OFLD_CMD_EQID_S) & FW_EQ_OFLD_CMD_EQID_M)
21226e4b51a6SHariprasad Shenai 
21236e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_PHYSEQID_S	0
21246e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_PHYSEQID_M	0xfffff
21256e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_PHYSEQID_G(x)	\
21266e4b51a6SHariprasad Shenai 	(((x) >> FW_EQ_OFLD_CMD_PHYSEQID_S) & FW_EQ_OFLD_CMD_PHYSEQID_M)
21276e4b51a6SHariprasad Shenai 
21286e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_FETCHSZM_S	26
21296e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_FETCHSZM_V(x)	((x) << FW_EQ_OFLD_CMD_FETCHSZM_S)
21306e4b51a6SHariprasad Shenai 
21316e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_STATUSPGNS_S	25
21326e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_STATUSPGNS_V(x)	((x) << FW_EQ_OFLD_CMD_STATUSPGNS_S)
21336e4b51a6SHariprasad Shenai 
21346e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_STATUSPGRO_S	24
21356e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_STATUSPGRO_V(x)	((x) << FW_EQ_OFLD_CMD_STATUSPGRO_S)
21366e4b51a6SHariprasad Shenai 
21376e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_FETCHNS_S	23
21386e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_FETCHNS_V(x)	((x) << FW_EQ_OFLD_CMD_FETCHNS_S)
21396e4b51a6SHariprasad Shenai 
21406e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_FETCHRO_S	22
21416e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_FETCHRO_V(x)	((x) << FW_EQ_OFLD_CMD_FETCHRO_S)
21426e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_FETCHRO_F	FW_EQ_OFLD_CMD_FETCHRO_V(1U)
21436e4b51a6SHariprasad Shenai 
21446e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_HOSTFCMODE_S	20
21456e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_HOSTFCMODE_V(x)	((x) << FW_EQ_OFLD_CMD_HOSTFCMODE_S)
21466e4b51a6SHariprasad Shenai 
21476e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_CPRIO_S		19
21486e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_CPRIO_V(x)	((x) << FW_EQ_OFLD_CMD_CPRIO_S)
21496e4b51a6SHariprasad Shenai 
21506e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_ONCHIP_S		18
21516e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_ONCHIP_V(x)	((x) << FW_EQ_OFLD_CMD_ONCHIP_S)
21526e4b51a6SHariprasad Shenai 
21536e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_PCIECHN_S	16
21546e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_PCIECHN_V(x)	((x) << FW_EQ_OFLD_CMD_PCIECHN_S)
21556e4b51a6SHariprasad Shenai 
21566e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_IQID_S		0
21576e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_IQID_V(x)	((x) << FW_EQ_OFLD_CMD_IQID_S)
21586e4b51a6SHariprasad Shenai 
21596e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_DCAEN_S		31
21606e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_DCAEN_V(x)	((x) << FW_EQ_OFLD_CMD_DCAEN_S)
21616e4b51a6SHariprasad Shenai 
21626e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_DCACPU_S		26
21636e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_DCACPU_V(x)	((x) << FW_EQ_OFLD_CMD_DCACPU_S)
21646e4b51a6SHariprasad Shenai 
21656e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_FBMIN_S		23
21666e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_FBMIN_V(x)	((x) << FW_EQ_OFLD_CMD_FBMIN_S)
21676e4b51a6SHariprasad Shenai 
21686e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_FBMAX_S		20
21696e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_FBMAX_V(x)	((x) << FW_EQ_OFLD_CMD_FBMAX_S)
21706e4b51a6SHariprasad Shenai 
21716e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_CIDXFTHRESHO_S		19
21726e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_CIDXFTHRESHO_V(x)	\
21736e4b51a6SHariprasad Shenai 	((x) << FW_EQ_OFLD_CMD_CIDXFTHRESHO_S)
21746e4b51a6SHariprasad Shenai 
21756e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_CIDXFTHRESH_S	16
21766e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_CIDXFTHRESH_V(x)	((x) << FW_EQ_OFLD_CMD_CIDXFTHRESH_S)
21776e4b51a6SHariprasad Shenai 
21786e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_EQSIZE_S		0
21796e4b51a6SHariprasad Shenai #define FW_EQ_OFLD_CMD_EQSIZE_V(x)	((x) << FW_EQ_OFLD_CMD_EQSIZE_S)
2180f7917c00SJeff Kirsher 
2181f7917c00SJeff Kirsher /*
2182f7917c00SJeff Kirsher  * Macros for VIID parsing:
2183f7917c00SJeff Kirsher  * VIID - [10:8] PFN, [7] VI Valid, [6:0] VI number
2184f7917c00SJeff Kirsher  */
2185d7990b0cSAnish Bhatt 
2186d7990b0cSAnish Bhatt #define FW_VIID_PFN_S           8
2187d7990b0cSAnish Bhatt #define FW_VIID_PFN_M           0x7
2188d7990b0cSAnish Bhatt #define FW_VIID_PFN_G(x)        (((x) >> FW_VIID_PFN_S) & FW_VIID_PFN_M)
2189d7990b0cSAnish Bhatt 
21902b5fb1f2SHariprasad Shenai #define FW_VIID_VIVLD_S		7
21912b5fb1f2SHariprasad Shenai #define FW_VIID_VIVLD_M		0x1
21922b5fb1f2SHariprasad Shenai #define FW_VIID_VIVLD_G(x)	(((x) >> FW_VIID_VIVLD_S) & FW_VIID_VIVLD_M)
21932b5fb1f2SHariprasad Shenai 
21942b5fb1f2SHariprasad Shenai #define FW_VIID_VIN_S		0
21952b5fb1f2SHariprasad Shenai #define FW_VIID_VIN_M		0x7F
21962b5fb1f2SHariprasad Shenai #define FW_VIID_VIN_G(x)	(((x) >> FW_VIID_VIN_S) & FW_VIID_VIN_M)
2197f7917c00SJeff Kirsher 
2198f7917c00SJeff Kirsher struct fw_vi_cmd {
2199f7917c00SJeff Kirsher 	__be32 op_to_vfn;
2200f7917c00SJeff Kirsher 	__be32 alloc_to_len16;
2201f7917c00SJeff Kirsher 	__be16 type_viid;
2202f7917c00SJeff Kirsher 	u8 mac[6];
2203f7917c00SJeff Kirsher 	u8 portid_pkd;
2204f7917c00SJeff Kirsher 	u8 nmac;
2205f7917c00SJeff Kirsher 	u8 nmac0[6];
2206f7917c00SJeff Kirsher 	__be16 rsssize_pkd;
2207f7917c00SJeff Kirsher 	u8 nmac1[6];
2208f7917c00SJeff Kirsher 	__be16 idsiiq_pkd;
2209f7917c00SJeff Kirsher 	u8 nmac2[6];
2210f7917c00SJeff Kirsher 	__be16 idseiq_pkd;
2211f7917c00SJeff Kirsher 	u8 nmac3[6];
2212f7917c00SJeff Kirsher 	__be64 r9;
2213f7917c00SJeff Kirsher 	__be64 r10;
2214f7917c00SJeff Kirsher };
2215f7917c00SJeff Kirsher 
22162b5fb1f2SHariprasad Shenai #define FW_VI_CMD_PFN_S		8
22172b5fb1f2SHariprasad Shenai #define FW_VI_CMD_PFN_V(x)	((x) << FW_VI_CMD_PFN_S)
22182b5fb1f2SHariprasad Shenai 
22192b5fb1f2SHariprasad Shenai #define FW_VI_CMD_VFN_S		0
22202b5fb1f2SHariprasad Shenai #define FW_VI_CMD_VFN_V(x)	((x) << FW_VI_CMD_VFN_S)
22212b5fb1f2SHariprasad Shenai 
22222b5fb1f2SHariprasad Shenai #define FW_VI_CMD_ALLOC_S	31
22232b5fb1f2SHariprasad Shenai #define FW_VI_CMD_ALLOC_V(x)	((x) << FW_VI_CMD_ALLOC_S)
22242b5fb1f2SHariprasad Shenai #define FW_VI_CMD_ALLOC_F	FW_VI_CMD_ALLOC_V(1U)
22252b5fb1f2SHariprasad Shenai 
22262b5fb1f2SHariprasad Shenai #define FW_VI_CMD_FREE_S	30
22272b5fb1f2SHariprasad Shenai #define FW_VI_CMD_FREE_V(x)	((x) << FW_VI_CMD_FREE_S)
22282b5fb1f2SHariprasad Shenai #define FW_VI_CMD_FREE_F	FW_VI_CMD_FREE_V(1U)
22292b5fb1f2SHariprasad Shenai 
223002d805dcSSantosh Rastapur #define FW_VI_CMD_VFVLD_S	24
223102d805dcSSantosh Rastapur #define FW_VI_CMD_VFVLD_M	0x1
223202d805dcSSantosh Rastapur #define FW_VI_CMD_VFVLD_V(x)	((x) << FW_VI_CMD_VFVLD_S)
223302d805dcSSantosh Rastapur #define FW_VI_CMD_VFVLD_G(x)	\
223402d805dcSSantosh Rastapur 	(((x) >> FW_VI_CMD_VFVLD_S) & FW_VI_CMD_VFVLD_M)
223502d805dcSSantosh Rastapur #define FW_VI_CMD_VFVLD_F	FW_VI_CMD_VFVLD_V(1U)
223602d805dcSSantosh Rastapur 
223702d805dcSSantosh Rastapur #define FW_VI_CMD_VIN_S		16
223802d805dcSSantosh Rastapur #define FW_VI_CMD_VIN_M		0xff
223902d805dcSSantosh Rastapur #define FW_VI_CMD_VIN_V(x)	((x) << FW_VI_CMD_VIN_S)
224002d805dcSSantosh Rastapur #define FW_VI_CMD_VIN_G(x)	\
224102d805dcSSantosh Rastapur 	(((x) >> FW_VI_CMD_VIN_S) & FW_VI_CMD_VIN_M)
224202d805dcSSantosh Rastapur 
22432b5fb1f2SHariprasad Shenai #define FW_VI_CMD_VIID_S	0
22442b5fb1f2SHariprasad Shenai #define FW_VI_CMD_VIID_M	0xfff
22452b5fb1f2SHariprasad Shenai #define FW_VI_CMD_VIID_V(x)	((x) << FW_VI_CMD_VIID_S)
22462b5fb1f2SHariprasad Shenai #define FW_VI_CMD_VIID_G(x)	(((x) >> FW_VI_CMD_VIID_S) & FW_VI_CMD_VIID_M)
22472b5fb1f2SHariprasad Shenai 
22482b5fb1f2SHariprasad Shenai #define FW_VI_CMD_PORTID_S	4
22492b5fb1f2SHariprasad Shenai #define FW_VI_CMD_PORTID_M	0xf
22502b5fb1f2SHariprasad Shenai #define FW_VI_CMD_PORTID_V(x)	((x) << FW_VI_CMD_PORTID_S)
22512b5fb1f2SHariprasad Shenai #define FW_VI_CMD_PORTID_G(x)	\
22522b5fb1f2SHariprasad Shenai 	(((x) >> FW_VI_CMD_PORTID_S) & FW_VI_CMD_PORTID_M)
22532b5fb1f2SHariprasad Shenai 
22542b5fb1f2SHariprasad Shenai #define FW_VI_CMD_RSSSIZE_S	0
22552b5fb1f2SHariprasad Shenai #define FW_VI_CMD_RSSSIZE_M	0x7ff
22562b5fb1f2SHariprasad Shenai #define FW_VI_CMD_RSSSIZE_G(x)	\
22572b5fb1f2SHariprasad Shenai 	(((x) >> FW_VI_CMD_RSSSIZE_S) & FW_VI_CMD_RSSSIZE_M)
2258f7917c00SJeff Kirsher 
2259f7917c00SJeff Kirsher /* Special VI_MAC command index ids */
2260f7917c00SJeff Kirsher #define FW_VI_MAC_ADD_MAC		0x3FF
2261f7917c00SJeff Kirsher #define FW_VI_MAC_ADD_PERSIST_MAC	0x3FE
2262f7917c00SJeff Kirsher #define FW_VI_MAC_MAC_BASED_FREE	0x3FD
2263ef0fd85aSGanesh Goudar #define FW_VI_MAC_ID_BASED_FREE		0x3FC
2264f7917c00SJeff Kirsher #define FW_CLS_TCAM_NUM_ENTRIES		336
2265f7917c00SJeff Kirsher 
2266f7917c00SJeff Kirsher enum fw_vi_mac_smac {
2267f7917c00SJeff Kirsher 	FW_VI_MAC_MPS_TCAM_ENTRY,
2268f7917c00SJeff Kirsher 	FW_VI_MAC_MPS_TCAM_ONLY,
2269f7917c00SJeff Kirsher 	FW_VI_MAC_SMT_ONLY,
2270f7917c00SJeff Kirsher 	FW_VI_MAC_SMT_AND_MPSTCAM
2271f7917c00SJeff Kirsher };
2272f7917c00SJeff Kirsher 
2273f7917c00SJeff Kirsher enum fw_vi_mac_result {
2274f7917c00SJeff Kirsher 	FW_VI_MAC_R_SUCCESS,
2275f7917c00SJeff Kirsher 	FW_VI_MAC_R_F_NONEXISTENT_NOMEM,
2276f7917c00SJeff Kirsher 	FW_VI_MAC_R_SMAC_FAIL,
2277f7917c00SJeff Kirsher 	FW_VI_MAC_R_F_ACL_CHECK
2278f7917c00SJeff Kirsher };
2279f7917c00SJeff Kirsher 
2280ef0fd85aSGanesh Goudar enum fw_vi_mac_entry_types {
2281ef0fd85aSGanesh Goudar 	FW_VI_MAC_TYPE_EXACTMAC,
2282ef0fd85aSGanesh Goudar 	FW_VI_MAC_TYPE_HASHVEC,
2283ef0fd85aSGanesh Goudar 	FW_VI_MAC_TYPE_RAW,
2284ef0fd85aSGanesh Goudar 	FW_VI_MAC_TYPE_EXACTMAC_VNI,
2285ef0fd85aSGanesh Goudar };
2286ef0fd85aSGanesh Goudar 
2287f7917c00SJeff Kirsher struct fw_vi_mac_cmd {
2288f7917c00SJeff Kirsher 	__be32 op_to_viid;
2289f7917c00SJeff Kirsher 	__be32 freemacs_to_len16;
2290f7917c00SJeff Kirsher 	union fw_vi_mac {
2291f7917c00SJeff Kirsher 		struct fw_vi_mac_exact {
2292f7917c00SJeff Kirsher 			__be16 valid_to_idx;
2293f7917c00SJeff Kirsher 			u8 macaddr[6];
2294f7917c00SJeff Kirsher 		} exact[7];
2295f7917c00SJeff Kirsher 		struct fw_vi_mac_hash {
2296f7917c00SJeff Kirsher 			__be64 hashvec;
2297f7917c00SJeff Kirsher 		} hash;
2298ef0fd85aSGanesh Goudar 		struct fw_vi_mac_raw {
2299ef0fd85aSGanesh Goudar 			__be32 raw_idx_pkd;
2300ef0fd85aSGanesh Goudar 			__be32 data0_pkd;
2301ef0fd85aSGanesh Goudar 			__be32 data1[2];
2302ef0fd85aSGanesh Goudar 			__be64 data0m_pkd;
2303ef0fd85aSGanesh Goudar 			__be32 data1m[2];
2304ef0fd85aSGanesh Goudar 		} raw;
230598f3697fSKumar Sanghvi 		struct fw_vi_mac_vni {
230698f3697fSKumar Sanghvi 			__be16 valid_to_idx;
230798f3697fSKumar Sanghvi 			__u8 macaddr[6];
230898f3697fSKumar Sanghvi 			__be16 r7;
230998f3697fSKumar Sanghvi 			__u8 macaddr_mask[6];
231098f3697fSKumar Sanghvi 			__be32 lookup_type_to_vni;
231198f3697fSKumar Sanghvi 			__be32 vni_mask_pkd;
231298f3697fSKumar Sanghvi 		} exact_vni[2];
2313f7917c00SJeff Kirsher 	} u;
2314f7917c00SJeff Kirsher };
2315f7917c00SJeff Kirsher 
231602d805dcSSantosh Rastapur #define FW_VI_MAC_CMD_SMTID_S		12
231702d805dcSSantosh Rastapur #define FW_VI_MAC_CMD_SMTID_M		0xff
231802d805dcSSantosh Rastapur #define FW_VI_MAC_CMD_SMTID_V(x)	((x) << FW_VI_MAC_CMD_SMTID_S)
231902d805dcSSantosh Rastapur #define FW_VI_MAC_CMD_SMTID_G(x)	\
232002d805dcSSantosh Rastapur 	(((x) >> FW_VI_MAC_CMD_SMTID_S) & FW_VI_MAC_CMD_SMTID_M)
232102d805dcSSantosh Rastapur 
23222b5fb1f2SHariprasad Shenai #define FW_VI_MAC_CMD_VIID_S	0
23232b5fb1f2SHariprasad Shenai #define FW_VI_MAC_CMD_VIID_V(x)	((x) << FW_VI_MAC_CMD_VIID_S)
23242b5fb1f2SHariprasad Shenai 
23252b5fb1f2SHariprasad Shenai #define FW_VI_MAC_CMD_FREEMACS_S	31
23262b5fb1f2SHariprasad Shenai #define FW_VI_MAC_CMD_FREEMACS_V(x)	((x) << FW_VI_MAC_CMD_FREEMACS_S)
23272b5fb1f2SHariprasad Shenai 
2328ef0fd85aSGanesh Goudar #define FW_VI_MAC_CMD_ENTRY_TYPE_S      23
2329ef0fd85aSGanesh Goudar #define FW_VI_MAC_CMD_ENTRY_TYPE_M      0x7
2330ef0fd85aSGanesh Goudar #define FW_VI_MAC_CMD_ENTRY_TYPE_V(x)   ((x) << FW_VI_MAC_CMD_ENTRY_TYPE_S)
2331ef0fd85aSGanesh Goudar #define FW_VI_MAC_CMD_ENTRY_TYPE_G(x)	\
2332ef0fd85aSGanesh Goudar 	(((x) >> FW_VI_MAC_CMD_ENTRY_TYPE_S) & FW_VI_MAC_CMD_ENTRY_TYPE_M)
2333ef0fd85aSGanesh Goudar 
23342b5fb1f2SHariprasad Shenai #define FW_VI_MAC_CMD_HASHVECEN_S	23
23352b5fb1f2SHariprasad Shenai #define FW_VI_MAC_CMD_HASHVECEN_V(x)	((x) << FW_VI_MAC_CMD_HASHVECEN_S)
23362b5fb1f2SHariprasad Shenai #define FW_VI_MAC_CMD_HASHVECEN_F	FW_VI_MAC_CMD_HASHVECEN_V(1U)
23372b5fb1f2SHariprasad Shenai 
23382b5fb1f2SHariprasad Shenai #define FW_VI_MAC_CMD_HASHUNIEN_S	22
23392b5fb1f2SHariprasad Shenai #define FW_VI_MAC_CMD_HASHUNIEN_V(x)	((x) << FW_VI_MAC_CMD_HASHUNIEN_S)
23402b5fb1f2SHariprasad Shenai 
23412b5fb1f2SHariprasad Shenai #define FW_VI_MAC_CMD_VALID_S		15
23422b5fb1f2SHariprasad Shenai #define FW_VI_MAC_CMD_VALID_V(x)	((x) << FW_VI_MAC_CMD_VALID_S)
23432b5fb1f2SHariprasad Shenai #define FW_VI_MAC_CMD_VALID_F	FW_VI_MAC_CMD_VALID_V(1U)
23442b5fb1f2SHariprasad Shenai 
23452b5fb1f2SHariprasad Shenai #define FW_VI_MAC_CMD_PRIO_S	12
23462b5fb1f2SHariprasad Shenai #define FW_VI_MAC_CMD_PRIO_V(x)	((x) << FW_VI_MAC_CMD_PRIO_S)
23472b5fb1f2SHariprasad Shenai 
23482b5fb1f2SHariprasad Shenai #define FW_VI_MAC_CMD_SMAC_RESULT_S	10
23492b5fb1f2SHariprasad Shenai #define FW_VI_MAC_CMD_SMAC_RESULT_M	0x3
23502b5fb1f2SHariprasad Shenai #define FW_VI_MAC_CMD_SMAC_RESULT_V(x)	((x) << FW_VI_MAC_CMD_SMAC_RESULT_S)
23512b5fb1f2SHariprasad Shenai #define FW_VI_MAC_CMD_SMAC_RESULT_G(x)	\
23522b5fb1f2SHariprasad Shenai 	(((x) >> FW_VI_MAC_CMD_SMAC_RESULT_S) & FW_VI_MAC_CMD_SMAC_RESULT_M)
23532b5fb1f2SHariprasad Shenai 
23542b5fb1f2SHariprasad Shenai #define FW_VI_MAC_CMD_IDX_S	0
23552b5fb1f2SHariprasad Shenai #define FW_VI_MAC_CMD_IDX_M	0x3ff
23562b5fb1f2SHariprasad Shenai #define FW_VI_MAC_CMD_IDX_V(x)	((x) << FW_VI_MAC_CMD_IDX_S)
23572b5fb1f2SHariprasad Shenai #define FW_VI_MAC_CMD_IDX_G(x)	\
23582b5fb1f2SHariprasad Shenai 	(((x) >> FW_VI_MAC_CMD_IDX_S) & FW_VI_MAC_CMD_IDX_M)
2359f7917c00SJeff Kirsher 
2360ef0fd85aSGanesh Goudar #define FW_VI_MAC_CMD_RAW_IDX_S         16
2361ef0fd85aSGanesh Goudar #define FW_VI_MAC_CMD_RAW_IDX_M         0xffff
2362ef0fd85aSGanesh Goudar #define FW_VI_MAC_CMD_RAW_IDX_V(x)      ((x) << FW_VI_MAC_CMD_RAW_IDX_S)
2363ef0fd85aSGanesh Goudar #define FW_VI_MAC_CMD_RAW_IDX_G(x)      \
2364ef0fd85aSGanesh Goudar 	(((x) >> FW_VI_MAC_CMD_RAW_IDX_S) & FW_VI_MAC_CMD_RAW_IDX_M)
2365ef0fd85aSGanesh Goudar 
236698f3697fSKumar Sanghvi #define FW_VI_MAC_CMD_LOOKUP_TYPE_S	31
236798f3697fSKumar Sanghvi #define FW_VI_MAC_CMD_LOOKUP_TYPE_M	0x1
236898f3697fSKumar Sanghvi #define FW_VI_MAC_CMD_LOOKUP_TYPE_V(x)	((x) << FW_VI_MAC_CMD_LOOKUP_TYPE_S)
236998f3697fSKumar Sanghvi #define FW_VI_MAC_CMD_LOOKUP_TYPE_G(x)	\
237098f3697fSKumar Sanghvi 	(((x) >> FW_VI_MAC_CMD_LOOKUP_TYPE_S) & FW_VI_MAC_CMD_LOOKUP_TYPE_M)
237198f3697fSKumar Sanghvi #define FW_VI_MAC_CMD_LOOKUP_TYPE_F	FW_VI_MAC_CMD_LOOKUP_TYPE_V(1U)
237298f3697fSKumar Sanghvi 
237398f3697fSKumar Sanghvi #define FW_VI_MAC_CMD_DIP_HIT_S		30
237498f3697fSKumar Sanghvi #define FW_VI_MAC_CMD_DIP_HIT_M		0x1
237598f3697fSKumar Sanghvi #define FW_VI_MAC_CMD_DIP_HIT_V(x)	((x) << FW_VI_MAC_CMD_DIP_HIT_S)
237698f3697fSKumar Sanghvi #define FW_VI_MAC_CMD_DIP_HIT_G(x)	\
237798f3697fSKumar Sanghvi 	(((x) >> FW_VI_MAC_CMD_DIP_HIT_S) & FW_VI_MAC_CMD_DIP_HIT_M)
237898f3697fSKumar Sanghvi #define FW_VI_MAC_CMD_DIP_HIT_F		FW_VI_MAC_CMD_DIP_HIT_V(1U)
237998f3697fSKumar Sanghvi 
238098f3697fSKumar Sanghvi #define FW_VI_MAC_CMD_VNI_S		0
238198f3697fSKumar Sanghvi #define FW_VI_MAC_CMD_VNI_M		0xffffff
238298f3697fSKumar Sanghvi #define FW_VI_MAC_CMD_VNI_V(x)		((x) << FW_VI_MAC_CMD_VNI_S)
238398f3697fSKumar Sanghvi #define FW_VI_MAC_CMD_VNI_G(x)		\
238498f3697fSKumar Sanghvi 	(((x) >> FW_VI_MAC_CMD_VNI_S) & FW_VI_MAC_CMD_VNI_M)
238598f3697fSKumar Sanghvi 
238698f3697fSKumar Sanghvi #define FW_VI_MAC_CMD_VNI_MASK_S	0
238798f3697fSKumar Sanghvi #define FW_VI_MAC_CMD_VNI_MASK_M	0xffffff
238898f3697fSKumar Sanghvi #define FW_VI_MAC_CMD_VNI_MASK_V(x)	((x) << FW_VI_MAC_CMD_VNI_MASK_S)
238998f3697fSKumar Sanghvi #define FW_VI_MAC_CMD_VNI_MASK_G(x)	\
239098f3697fSKumar Sanghvi 	(((x) >> FW_VI_MAC_CMD_VNI_MASK_S) & FW_VI_MAC_CMD_VNI_MASK_M)
239198f3697fSKumar Sanghvi 
2392f7917c00SJeff Kirsher #define FW_RXMODE_MTU_NO_CHG	65535
2393f7917c00SJeff Kirsher 
2394f7917c00SJeff Kirsher struct fw_vi_rxmode_cmd {
2395f7917c00SJeff Kirsher 	__be32 op_to_viid;
2396f7917c00SJeff Kirsher 	__be32 retval_len16;
2397f7917c00SJeff Kirsher 	__be32 mtu_to_vlanexen;
2398f7917c00SJeff Kirsher 	__be32 r4_lo;
2399f7917c00SJeff Kirsher };
2400f7917c00SJeff Kirsher 
24012b5fb1f2SHariprasad Shenai #define FW_VI_RXMODE_CMD_VIID_S		0
24022b5fb1f2SHariprasad Shenai #define FW_VI_RXMODE_CMD_VIID_V(x)	((x) << FW_VI_RXMODE_CMD_VIID_S)
24032b5fb1f2SHariprasad Shenai 
24042b5fb1f2SHariprasad Shenai #define FW_VI_RXMODE_CMD_MTU_S		16
24052b5fb1f2SHariprasad Shenai #define FW_VI_RXMODE_CMD_MTU_M		0xffff
24062b5fb1f2SHariprasad Shenai #define FW_VI_RXMODE_CMD_MTU_V(x)	((x) << FW_VI_RXMODE_CMD_MTU_S)
24072b5fb1f2SHariprasad Shenai 
24082b5fb1f2SHariprasad Shenai #define FW_VI_RXMODE_CMD_PROMISCEN_S	14
24092b5fb1f2SHariprasad Shenai #define FW_VI_RXMODE_CMD_PROMISCEN_M	0x3
24102b5fb1f2SHariprasad Shenai #define FW_VI_RXMODE_CMD_PROMISCEN_V(x)	((x) << FW_VI_RXMODE_CMD_PROMISCEN_S)
24112b5fb1f2SHariprasad Shenai 
24122b5fb1f2SHariprasad Shenai #define FW_VI_RXMODE_CMD_ALLMULTIEN_S		12
24132b5fb1f2SHariprasad Shenai #define FW_VI_RXMODE_CMD_ALLMULTIEN_M		0x3
24142b5fb1f2SHariprasad Shenai #define FW_VI_RXMODE_CMD_ALLMULTIEN_V(x)	\
24152b5fb1f2SHariprasad Shenai 	((x) << FW_VI_RXMODE_CMD_ALLMULTIEN_S)
24162b5fb1f2SHariprasad Shenai 
24172b5fb1f2SHariprasad Shenai #define FW_VI_RXMODE_CMD_BROADCASTEN_S		10
24182b5fb1f2SHariprasad Shenai #define FW_VI_RXMODE_CMD_BROADCASTEN_M		0x3
24192b5fb1f2SHariprasad Shenai #define FW_VI_RXMODE_CMD_BROADCASTEN_V(x)	\
24202b5fb1f2SHariprasad Shenai 	((x) << FW_VI_RXMODE_CMD_BROADCASTEN_S)
24212b5fb1f2SHariprasad Shenai 
24222b5fb1f2SHariprasad Shenai #define FW_VI_RXMODE_CMD_VLANEXEN_S	8
24232b5fb1f2SHariprasad Shenai #define FW_VI_RXMODE_CMD_VLANEXEN_M	0x3
24242b5fb1f2SHariprasad Shenai #define FW_VI_RXMODE_CMD_VLANEXEN_V(x)	((x) << FW_VI_RXMODE_CMD_VLANEXEN_S)
2425f7917c00SJeff Kirsher 
2426f7917c00SJeff Kirsher struct fw_vi_enable_cmd {
2427f7917c00SJeff Kirsher 	__be32 op_to_viid;
2428f7917c00SJeff Kirsher 	__be32 ien_to_len16;
2429f7917c00SJeff Kirsher 	__be16 blinkdur;
2430f7917c00SJeff Kirsher 	__be16 r3;
2431f7917c00SJeff Kirsher 	__be32 r4;
2432f7917c00SJeff Kirsher };
2433f7917c00SJeff Kirsher 
24342b5fb1f2SHariprasad Shenai #define FW_VI_ENABLE_CMD_VIID_S         0
24352b5fb1f2SHariprasad Shenai #define FW_VI_ENABLE_CMD_VIID_V(x)      ((x) << FW_VI_ENABLE_CMD_VIID_S)
24362b5fb1f2SHariprasad Shenai 
24372b5fb1f2SHariprasad Shenai #define FW_VI_ENABLE_CMD_IEN_S		31
24382b5fb1f2SHariprasad Shenai #define FW_VI_ENABLE_CMD_IEN_V(x)	((x) << FW_VI_ENABLE_CMD_IEN_S)
24392b5fb1f2SHariprasad Shenai 
24402b5fb1f2SHariprasad Shenai #define FW_VI_ENABLE_CMD_EEN_S		30
24412b5fb1f2SHariprasad Shenai #define FW_VI_ENABLE_CMD_EEN_V(x)	((x) << FW_VI_ENABLE_CMD_EEN_S)
24422b5fb1f2SHariprasad Shenai 
24432b5fb1f2SHariprasad Shenai #define FW_VI_ENABLE_CMD_LED_S		29
24442b5fb1f2SHariprasad Shenai #define FW_VI_ENABLE_CMD_LED_V(x)	((x) << FW_VI_ENABLE_CMD_LED_S)
24452b5fb1f2SHariprasad Shenai #define FW_VI_ENABLE_CMD_LED_F	FW_VI_ENABLE_CMD_LED_V(1U)
24462b5fb1f2SHariprasad Shenai 
24472b5fb1f2SHariprasad Shenai #define FW_VI_ENABLE_CMD_DCB_INFO_S	28
24482b5fb1f2SHariprasad Shenai #define FW_VI_ENABLE_CMD_DCB_INFO_V(x)	((x) << FW_VI_ENABLE_CMD_DCB_INFO_S)
2449f7917c00SJeff Kirsher 
2450f7917c00SJeff Kirsher /* VI VF stats offset definitions */
2451f7917c00SJeff Kirsher #define VI_VF_NUM_STATS	16
2452f7917c00SJeff Kirsher enum fw_vi_stats_vf_index {
2453f7917c00SJeff Kirsher 	FW_VI_VF_STAT_TX_BCAST_BYTES_IX,
2454f7917c00SJeff Kirsher 	FW_VI_VF_STAT_TX_BCAST_FRAMES_IX,
2455f7917c00SJeff Kirsher 	FW_VI_VF_STAT_TX_MCAST_BYTES_IX,
2456f7917c00SJeff Kirsher 	FW_VI_VF_STAT_TX_MCAST_FRAMES_IX,
2457f7917c00SJeff Kirsher 	FW_VI_VF_STAT_TX_UCAST_BYTES_IX,
2458f7917c00SJeff Kirsher 	FW_VI_VF_STAT_TX_UCAST_FRAMES_IX,
2459f7917c00SJeff Kirsher 	FW_VI_VF_STAT_TX_DROP_FRAMES_IX,
2460f7917c00SJeff Kirsher 	FW_VI_VF_STAT_TX_OFLD_BYTES_IX,
2461f7917c00SJeff Kirsher 	FW_VI_VF_STAT_TX_OFLD_FRAMES_IX,
2462f7917c00SJeff Kirsher 	FW_VI_VF_STAT_RX_BCAST_BYTES_IX,
2463f7917c00SJeff Kirsher 	FW_VI_VF_STAT_RX_BCAST_FRAMES_IX,
2464f7917c00SJeff Kirsher 	FW_VI_VF_STAT_RX_MCAST_BYTES_IX,
2465f7917c00SJeff Kirsher 	FW_VI_VF_STAT_RX_MCAST_FRAMES_IX,
2466f7917c00SJeff Kirsher 	FW_VI_VF_STAT_RX_UCAST_BYTES_IX,
2467f7917c00SJeff Kirsher 	FW_VI_VF_STAT_RX_UCAST_FRAMES_IX,
2468f7917c00SJeff Kirsher 	FW_VI_VF_STAT_RX_ERR_FRAMES_IX
2469f7917c00SJeff Kirsher };
2470f7917c00SJeff Kirsher 
2471f7917c00SJeff Kirsher /* VI PF stats offset definitions */
2472f7917c00SJeff Kirsher #define VI_PF_NUM_STATS	17
2473f7917c00SJeff Kirsher enum fw_vi_stats_pf_index {
2474f7917c00SJeff Kirsher 	FW_VI_PF_STAT_TX_BCAST_BYTES_IX,
2475f7917c00SJeff Kirsher 	FW_VI_PF_STAT_TX_BCAST_FRAMES_IX,
2476f7917c00SJeff Kirsher 	FW_VI_PF_STAT_TX_MCAST_BYTES_IX,
2477f7917c00SJeff Kirsher 	FW_VI_PF_STAT_TX_MCAST_FRAMES_IX,
2478f7917c00SJeff Kirsher 	FW_VI_PF_STAT_TX_UCAST_BYTES_IX,
2479f7917c00SJeff Kirsher 	FW_VI_PF_STAT_TX_UCAST_FRAMES_IX,
2480f7917c00SJeff Kirsher 	FW_VI_PF_STAT_TX_OFLD_BYTES_IX,
2481f7917c00SJeff Kirsher 	FW_VI_PF_STAT_TX_OFLD_FRAMES_IX,
2482f7917c00SJeff Kirsher 	FW_VI_PF_STAT_RX_BYTES_IX,
2483f7917c00SJeff Kirsher 	FW_VI_PF_STAT_RX_FRAMES_IX,
2484f7917c00SJeff Kirsher 	FW_VI_PF_STAT_RX_BCAST_BYTES_IX,
2485f7917c00SJeff Kirsher 	FW_VI_PF_STAT_RX_BCAST_FRAMES_IX,
2486f7917c00SJeff Kirsher 	FW_VI_PF_STAT_RX_MCAST_BYTES_IX,
2487f7917c00SJeff Kirsher 	FW_VI_PF_STAT_RX_MCAST_FRAMES_IX,
2488f7917c00SJeff Kirsher 	FW_VI_PF_STAT_RX_UCAST_BYTES_IX,
2489f7917c00SJeff Kirsher 	FW_VI_PF_STAT_RX_UCAST_FRAMES_IX,
2490f7917c00SJeff Kirsher 	FW_VI_PF_STAT_RX_ERR_FRAMES_IX
2491f7917c00SJeff Kirsher };
2492f7917c00SJeff Kirsher 
2493f7917c00SJeff Kirsher struct fw_vi_stats_cmd {
2494f7917c00SJeff Kirsher 	__be32 op_to_viid;
2495f7917c00SJeff Kirsher 	__be32 retval_len16;
2496f7917c00SJeff Kirsher 	union fw_vi_stats {
2497f7917c00SJeff Kirsher 		struct fw_vi_stats_ctl {
2498f7917c00SJeff Kirsher 			__be16 nstats_ix;
2499f7917c00SJeff Kirsher 			__be16 r6;
2500f7917c00SJeff Kirsher 			__be32 r7;
2501f7917c00SJeff Kirsher 			__be64 stat0;
2502f7917c00SJeff Kirsher 			__be64 stat1;
2503f7917c00SJeff Kirsher 			__be64 stat2;
2504f7917c00SJeff Kirsher 			__be64 stat3;
2505f7917c00SJeff Kirsher 			__be64 stat4;
2506f7917c00SJeff Kirsher 			__be64 stat5;
2507f7917c00SJeff Kirsher 		} ctl;
2508f7917c00SJeff Kirsher 		struct fw_vi_stats_pf {
2509f7917c00SJeff Kirsher 			__be64 tx_bcast_bytes;
2510f7917c00SJeff Kirsher 			__be64 tx_bcast_frames;
2511f7917c00SJeff Kirsher 			__be64 tx_mcast_bytes;
2512f7917c00SJeff Kirsher 			__be64 tx_mcast_frames;
2513f7917c00SJeff Kirsher 			__be64 tx_ucast_bytes;
2514f7917c00SJeff Kirsher 			__be64 tx_ucast_frames;
2515f7917c00SJeff Kirsher 			__be64 tx_offload_bytes;
2516f7917c00SJeff Kirsher 			__be64 tx_offload_frames;
2517f7917c00SJeff Kirsher 			__be64 rx_pf_bytes;
2518f7917c00SJeff Kirsher 			__be64 rx_pf_frames;
2519f7917c00SJeff Kirsher 			__be64 rx_bcast_bytes;
2520f7917c00SJeff Kirsher 			__be64 rx_bcast_frames;
2521f7917c00SJeff Kirsher 			__be64 rx_mcast_bytes;
2522f7917c00SJeff Kirsher 			__be64 rx_mcast_frames;
2523f7917c00SJeff Kirsher 			__be64 rx_ucast_bytes;
2524f7917c00SJeff Kirsher 			__be64 rx_ucast_frames;
2525f7917c00SJeff Kirsher 			__be64 rx_err_frames;
2526f7917c00SJeff Kirsher 		} pf;
2527f7917c00SJeff Kirsher 		struct fw_vi_stats_vf {
2528f7917c00SJeff Kirsher 			__be64 tx_bcast_bytes;
2529f7917c00SJeff Kirsher 			__be64 tx_bcast_frames;
2530f7917c00SJeff Kirsher 			__be64 tx_mcast_bytes;
2531f7917c00SJeff Kirsher 			__be64 tx_mcast_frames;
2532f7917c00SJeff Kirsher 			__be64 tx_ucast_bytes;
2533f7917c00SJeff Kirsher 			__be64 tx_ucast_frames;
2534f7917c00SJeff Kirsher 			__be64 tx_drop_frames;
2535f7917c00SJeff Kirsher 			__be64 tx_offload_bytes;
2536f7917c00SJeff Kirsher 			__be64 tx_offload_frames;
2537f7917c00SJeff Kirsher 			__be64 rx_bcast_bytes;
2538f7917c00SJeff Kirsher 			__be64 rx_bcast_frames;
2539f7917c00SJeff Kirsher 			__be64 rx_mcast_bytes;
2540f7917c00SJeff Kirsher 			__be64 rx_mcast_frames;
2541f7917c00SJeff Kirsher 			__be64 rx_ucast_bytes;
2542f7917c00SJeff Kirsher 			__be64 rx_ucast_frames;
2543f7917c00SJeff Kirsher 			__be64 rx_err_frames;
2544f7917c00SJeff Kirsher 		} vf;
2545f7917c00SJeff Kirsher 	} u;
2546f7917c00SJeff Kirsher };
2547f7917c00SJeff Kirsher 
25482b5fb1f2SHariprasad Shenai #define FW_VI_STATS_CMD_VIID_S		0
25492b5fb1f2SHariprasad Shenai #define FW_VI_STATS_CMD_VIID_V(x)	((x) << FW_VI_STATS_CMD_VIID_S)
25502b5fb1f2SHariprasad Shenai 
25512b5fb1f2SHariprasad Shenai #define FW_VI_STATS_CMD_NSTATS_S	12
25522b5fb1f2SHariprasad Shenai #define FW_VI_STATS_CMD_NSTATS_V(x)	((x) << FW_VI_STATS_CMD_NSTATS_S)
25532b5fb1f2SHariprasad Shenai 
25542b5fb1f2SHariprasad Shenai #define FW_VI_STATS_CMD_IX_S	0
25552b5fb1f2SHariprasad Shenai #define FW_VI_STATS_CMD_IX_V(x)	((x) << FW_VI_STATS_CMD_IX_S)
2556f7917c00SJeff Kirsher 
2557f7917c00SJeff Kirsher struct fw_acl_mac_cmd {
2558f7917c00SJeff Kirsher 	__be32 op_to_vfn;
2559f7917c00SJeff Kirsher 	__be32 en_to_len16;
2560f7917c00SJeff Kirsher 	u8 nmac;
2561f7917c00SJeff Kirsher 	u8 r3[7];
2562f7917c00SJeff Kirsher 	__be16 r4;
2563f7917c00SJeff Kirsher 	u8 macaddr0[6];
2564f7917c00SJeff Kirsher 	__be16 r5;
2565f7917c00SJeff Kirsher 	u8 macaddr1[6];
2566f7917c00SJeff Kirsher 	__be16 r6;
2567f7917c00SJeff Kirsher 	u8 macaddr2[6];
2568f7917c00SJeff Kirsher 	__be16 r7;
2569f7917c00SJeff Kirsher 	u8 macaddr3[6];
2570f7917c00SJeff Kirsher };
2571f7917c00SJeff Kirsher 
25722b5fb1f2SHariprasad Shenai #define FW_ACL_MAC_CMD_PFN_S	8
25732b5fb1f2SHariprasad Shenai #define FW_ACL_MAC_CMD_PFN_V(x)	((x) << FW_ACL_MAC_CMD_PFN_S)
25742b5fb1f2SHariprasad Shenai 
25752b5fb1f2SHariprasad Shenai #define FW_ACL_MAC_CMD_VFN_S	0
25762b5fb1f2SHariprasad Shenai #define FW_ACL_MAC_CMD_VFN_V(x)	((x) << FW_ACL_MAC_CMD_VFN_S)
25772b5fb1f2SHariprasad Shenai 
25782b5fb1f2SHariprasad Shenai #define FW_ACL_MAC_CMD_EN_S	31
25792b5fb1f2SHariprasad Shenai #define FW_ACL_MAC_CMD_EN_V(x)	((x) << FW_ACL_MAC_CMD_EN_S)
2580f7917c00SJeff Kirsher 
2581f7917c00SJeff Kirsher struct fw_acl_vlan_cmd {
2582f7917c00SJeff Kirsher 	__be32 op_to_vfn;
2583f7917c00SJeff Kirsher 	__be32 en_to_len16;
2584f7917c00SJeff Kirsher 	u8 nvlan;
2585f7917c00SJeff Kirsher 	u8 dropnovlan_fm;
2586f7917c00SJeff Kirsher 	u8 r3_lo[6];
2587f7917c00SJeff Kirsher 	__be16 vlanid[16];
2588f7917c00SJeff Kirsher };
2589f7917c00SJeff Kirsher 
25902b5fb1f2SHariprasad Shenai #define FW_ACL_VLAN_CMD_PFN_S		8
25912b5fb1f2SHariprasad Shenai #define FW_ACL_VLAN_CMD_PFN_V(x)	((x) << FW_ACL_VLAN_CMD_PFN_S)
25922b5fb1f2SHariprasad Shenai 
25932b5fb1f2SHariprasad Shenai #define FW_ACL_VLAN_CMD_VFN_S		0
25942b5fb1f2SHariprasad Shenai #define FW_ACL_VLAN_CMD_VFN_V(x)	((x) << FW_ACL_VLAN_CMD_VFN_S)
25952b5fb1f2SHariprasad Shenai 
25962b5fb1f2SHariprasad Shenai #define FW_ACL_VLAN_CMD_EN_S		31
25979d5fd927SGanesh Goudar #define FW_ACL_VLAN_CMD_EN_M		0x1
25982b5fb1f2SHariprasad Shenai #define FW_ACL_VLAN_CMD_EN_V(x)		((x) << FW_ACL_VLAN_CMD_EN_S)
25999d5fd927SGanesh Goudar #define FW_ACL_VLAN_CMD_EN_G(x)         \
26009d5fd927SGanesh Goudar 	(((x) >> S_FW_ACL_VLAN_CMD_EN_S) & FW_ACL_VLAN_CMD_EN_M)
26019d5fd927SGanesh Goudar #define FW_ACL_VLAN_CMD_EN_F            FW_ACL_VLAN_CMD_EN_V(1U)
26022b5fb1f2SHariprasad Shenai 
26032b5fb1f2SHariprasad Shenai #define FW_ACL_VLAN_CMD_DROPNOVLAN_S	7
26042b5fb1f2SHariprasad Shenai #define FW_ACL_VLAN_CMD_DROPNOVLAN_V(x)	((x) << FW_ACL_VLAN_CMD_DROPNOVLAN_S)
2605a89cdd8eSCasey Leedom #define FW_ACL_VLAN_CMD_DROPNOVLAN_F    FW_ACL_VLAN_CMD_DROPNOVLAN_V(1U)
26062b5fb1f2SHariprasad Shenai 
26072b5fb1f2SHariprasad Shenai #define FW_ACL_VLAN_CMD_FM_S		6
26089d5fd927SGanesh Goudar #define FW_ACL_VLAN_CMD_FM_M		0x1
26092b5fb1f2SHariprasad Shenai #define FW_ACL_VLAN_CMD_FM_V(x)         ((x) << FW_ACL_VLAN_CMD_FM_S)
26109d5fd927SGanesh Goudar #define FW_ACL_VLAN_CMD_FM_G(x)         \
26119d5fd927SGanesh Goudar 	(((x) >> FW_ACL_VLAN_CMD_FM_S) & FW_ACL_VLAN_CMD_FM_M)
26129d5fd927SGanesh Goudar #define FW_ACL_VLAN_CMD_FM_F            FW_ACL_VLAN_CMD_FM_V(1U)
2613f7917c00SJeff Kirsher 
2614c3168cabSGanesh Goudar /* old 16-bit port capabilities bitmap (fw_port_cap16_t) */
2615f7917c00SJeff Kirsher enum fw_port_cap {
2616f7917c00SJeff Kirsher 	FW_PORT_CAP_SPEED_100M		= 0x0001,
2617f7917c00SJeff Kirsher 	FW_PORT_CAP_SPEED_1G		= 0x0002,
2618eb97ad99SGanesh Goudar 	FW_PORT_CAP_SPEED_25G		= 0x0004,
2619f7917c00SJeff Kirsher 	FW_PORT_CAP_SPEED_10G		= 0x0008,
2620f7917c00SJeff Kirsher 	FW_PORT_CAP_SPEED_40G		= 0x0010,
2621f7917c00SJeff Kirsher 	FW_PORT_CAP_SPEED_100G		= 0x0020,
2622f7917c00SJeff Kirsher 	FW_PORT_CAP_FC_RX		= 0x0040,
2623f7917c00SJeff Kirsher 	FW_PORT_CAP_FC_TX		= 0x0080,
2624f7917c00SJeff Kirsher 	FW_PORT_CAP_ANEG		= 0x0100,
26251d19023fSGanesh Goudar 	FW_PORT_CAP_MDIAUTO		= 0x0200,
26261d19023fSGanesh Goudar 	FW_PORT_CAP_MDISTRAIGHT		= 0x0400,
26273bb4858fSGanesh Goudar 	FW_PORT_CAP_FEC_RS		= 0x0800,
26283bb4858fSGanesh Goudar 	FW_PORT_CAP_FEC_BASER_RS	= 0x1000,
2629c5f732d7SGanesh Goudar 	FW_PORT_CAP_FORCE_PAUSE		= 0x2000,
2630eb97ad99SGanesh Goudar 	FW_PORT_CAP_802_3_PAUSE		= 0x4000,
2631eb97ad99SGanesh Goudar 	FW_PORT_CAP_802_3_ASM_DIR	= 0x8000,
2632f7917c00SJeff Kirsher };
2633f7917c00SJeff Kirsher 
26349b86a8d1SHariprasad Shenai #define FW_PORT_CAP_SPEED_S     0
26359b86a8d1SHariprasad Shenai #define FW_PORT_CAP_SPEED_M     0x3f
26369b86a8d1SHariprasad Shenai #define FW_PORT_CAP_SPEED_V(x)  ((x) << FW_PORT_CAP_SPEED_S)
26379b86a8d1SHariprasad Shenai #define FW_PORT_CAP_SPEED_G(x) \
26389b86a8d1SHariprasad Shenai 	(((x) >> FW_PORT_CAP_SPEED_S) & FW_PORT_CAP_SPEED_M)
26399b86a8d1SHariprasad Shenai 
2640f7917c00SJeff Kirsher enum fw_port_mdi {
26412b5fb1f2SHariprasad Shenai 	FW_PORT_CAP_MDI_UNCHANGED,
26422b5fb1f2SHariprasad Shenai 	FW_PORT_CAP_MDI_AUTO,
26432b5fb1f2SHariprasad Shenai 	FW_PORT_CAP_MDI_F_STRAIGHT,
26442b5fb1f2SHariprasad Shenai 	FW_PORT_CAP_MDI_F_CROSSOVER
2645f7917c00SJeff Kirsher };
2646f7917c00SJeff Kirsher 
26472b5fb1f2SHariprasad Shenai #define FW_PORT_CAP_MDI_S 9
26482b5fb1f2SHariprasad Shenai #define FW_PORT_CAP_MDI_V(x) ((x) << FW_PORT_CAP_MDI_S)
2649f7917c00SJeff Kirsher 
2650c3168cabSGanesh Goudar /* new 32-bit port capabilities bitmap (fw_port_cap32_t) */
2651c3168cabSGanesh Goudar #define	FW_PORT_CAP32_SPEED_100M	0x00000001UL
2652c3168cabSGanesh Goudar #define	FW_PORT_CAP32_SPEED_1G		0x00000002UL
2653c3168cabSGanesh Goudar #define	FW_PORT_CAP32_SPEED_10G		0x00000004UL
2654c3168cabSGanesh Goudar #define	FW_PORT_CAP32_SPEED_25G		0x00000008UL
2655c3168cabSGanesh Goudar #define	FW_PORT_CAP32_SPEED_40G		0x00000010UL
2656c3168cabSGanesh Goudar #define	FW_PORT_CAP32_SPEED_50G		0x00000020UL
2657c3168cabSGanesh Goudar #define	FW_PORT_CAP32_SPEED_100G	0x00000040UL
2658c3168cabSGanesh Goudar #define	FW_PORT_CAP32_SPEED_200G	0x00000080UL
2659c3168cabSGanesh Goudar #define	FW_PORT_CAP32_SPEED_400G	0x00000100UL
2660c3168cabSGanesh Goudar #define	FW_PORT_CAP32_SPEED_RESERVED1	0x00000200UL
2661c3168cabSGanesh Goudar #define	FW_PORT_CAP32_SPEED_RESERVED2	0x00000400UL
2662c3168cabSGanesh Goudar #define	FW_PORT_CAP32_SPEED_RESERVED3	0x00000800UL
2663c3168cabSGanesh Goudar #define	FW_PORT_CAP32_RESERVED1		0x0000f000UL
2664c3168cabSGanesh Goudar #define	FW_PORT_CAP32_FC_RX		0x00010000UL
2665c3168cabSGanesh Goudar #define	FW_PORT_CAP32_FC_TX		0x00020000UL
2666c3168cabSGanesh Goudar #define	FW_PORT_CAP32_802_3_PAUSE	0x00040000UL
2667c3168cabSGanesh Goudar #define	FW_PORT_CAP32_802_3_ASM_DIR	0x00080000UL
2668c3168cabSGanesh Goudar #define	FW_PORT_CAP32_ANEG		0x00100000UL
26691d19023fSGanesh Goudar #define	FW_PORT_CAP32_MDIAUTO		0x00200000UL
26701d19023fSGanesh Goudar #define	FW_PORT_CAP32_MDISTRAIGHT	0x00400000UL
2671c3168cabSGanesh Goudar #define	FW_PORT_CAP32_FEC_RS		0x00800000UL
2672c3168cabSGanesh Goudar #define	FW_PORT_CAP32_FEC_BASER_RS	0x01000000UL
2673c3168cabSGanesh Goudar #define	FW_PORT_CAP32_FEC_RESERVED1	0x02000000UL
2674c3168cabSGanesh Goudar #define	FW_PORT_CAP32_FEC_RESERVED2	0x04000000UL
2675c3168cabSGanesh Goudar #define	FW_PORT_CAP32_FEC_RESERVED3	0x08000000UL
2676c5f732d7SGanesh Goudar #define FW_PORT_CAP32_FORCE_PAUSE	0x10000000UL
2677c5f732d7SGanesh Goudar #define FW_PORT_CAP32_RESERVED2		0xe0000000UL
2678c3168cabSGanesh Goudar 
2679c3168cabSGanesh Goudar #define FW_PORT_CAP32_SPEED_S	0
2680c3168cabSGanesh Goudar #define FW_PORT_CAP32_SPEED_M	0xfff
2681c3168cabSGanesh Goudar #define FW_PORT_CAP32_SPEED_V(x)	((x) << FW_PORT_CAP32_SPEED_S)
2682c3168cabSGanesh Goudar #define FW_PORT_CAP32_SPEED_G(x) \
2683c3168cabSGanesh Goudar 	(((x) >> FW_PORT_CAP32_SPEED_S) & FW_PORT_CAP32_SPEED_M)
2684c3168cabSGanesh Goudar 
2685c3168cabSGanesh Goudar #define FW_PORT_CAP32_FC_S	16
2686c3168cabSGanesh Goudar #define FW_PORT_CAP32_FC_M	0x3
2687c3168cabSGanesh Goudar #define FW_PORT_CAP32_FC_V(x)	((x) << FW_PORT_CAP32_FC_S)
2688c3168cabSGanesh Goudar #define FW_PORT_CAP32_FC_G(x) \
2689c3168cabSGanesh Goudar 	(((x) >> FW_PORT_CAP32_FC_S) & FW_PORT_CAP32_FC_M)
2690c3168cabSGanesh Goudar 
2691c3168cabSGanesh Goudar #define FW_PORT_CAP32_802_3_S	18
2692c3168cabSGanesh Goudar #define FW_PORT_CAP32_802_3_M	0x3
2693c3168cabSGanesh Goudar #define FW_PORT_CAP32_802_3_V(x)	((x) << FW_PORT_CAP32_802_3_S)
2694c3168cabSGanesh Goudar #define FW_PORT_CAP32_802_3_G(x) \
2695c3168cabSGanesh Goudar 	(((x) >> FW_PORT_CAP32_802_3_S) & FW_PORT_CAP32_802_3_M)
2696c3168cabSGanesh Goudar 
2697c3168cabSGanesh Goudar #define FW_PORT_CAP32_ANEG_S	20
2698c3168cabSGanesh Goudar #define FW_PORT_CAP32_ANEG_M	0x1
2699c3168cabSGanesh Goudar #define FW_PORT_CAP32_ANEG_V(x)	((x) << FW_PORT_CAP32_ANEG_S)
2700c3168cabSGanesh Goudar #define FW_PORT_CAP32_ANEG_G(x) \
2701c3168cabSGanesh Goudar 	(((x) >> FW_PORT_CAP32_ANEG_S) & FW_PORT_CAP32_ANEG_M)
2702c3168cabSGanesh Goudar 
2703c3168cabSGanesh Goudar enum fw_port_mdi32 {
2704c3168cabSGanesh Goudar 	FW_PORT_CAP32_MDI_UNCHANGED,
2705c3168cabSGanesh Goudar 	FW_PORT_CAP32_MDI_AUTO,
2706c3168cabSGanesh Goudar 	FW_PORT_CAP32_MDI_F_STRAIGHT,
2707c3168cabSGanesh Goudar 	FW_PORT_CAP32_MDI_F_CROSSOVER
2708c3168cabSGanesh Goudar };
2709c3168cabSGanesh Goudar 
2710c3168cabSGanesh Goudar #define FW_PORT_CAP32_MDI_S 21
2711c3168cabSGanesh Goudar #define FW_PORT_CAP32_MDI_M 3
2712c3168cabSGanesh Goudar #define FW_PORT_CAP32_MDI_V(x) ((x) << FW_PORT_CAP32_MDI_S)
2713c3168cabSGanesh Goudar #define FW_PORT_CAP32_MDI_G(x) \
2714c3168cabSGanesh Goudar 	(((x) >> FW_PORT_CAP32_MDI_S) & FW_PORT_CAP32_MDI_M)
2715c3168cabSGanesh Goudar 
2716c3168cabSGanesh Goudar #define FW_PORT_CAP32_FEC_S	23
2717c3168cabSGanesh Goudar #define FW_PORT_CAP32_FEC_M	0x1f
2718c3168cabSGanesh Goudar #define FW_PORT_CAP32_FEC_V(x)	((x) << FW_PORT_CAP32_FEC_S)
2719c3168cabSGanesh Goudar #define FW_PORT_CAP32_FEC_G(x) \
2720c3168cabSGanesh Goudar 	(((x) >> FW_PORT_CAP32_FEC_S) & FW_PORT_CAP32_FEC_M)
2721c3168cabSGanesh Goudar 
2722c3168cabSGanesh Goudar /* macros to isolate various 32-bit Port Capabilities sub-fields */
2723c3168cabSGanesh Goudar #define CAP32_SPEED(__cap32) \
2724c3168cabSGanesh Goudar 	(FW_PORT_CAP32_SPEED_V(FW_PORT_CAP32_SPEED_M) & __cap32)
2725c3168cabSGanesh Goudar 
2726c3168cabSGanesh Goudar #define CAP32_FEC(__cap32) \
2727c3168cabSGanesh Goudar 	(FW_PORT_CAP32_FEC_V(FW_PORT_CAP32_FEC_M) & __cap32)
2728c3168cabSGanesh Goudar 
2729f7917c00SJeff Kirsher enum fw_port_action {
2730f7917c00SJeff Kirsher 	FW_PORT_ACTION_L1_CFG		= 0x0001,
2731f7917c00SJeff Kirsher 	FW_PORT_ACTION_L2_CFG		= 0x0002,
2732f7917c00SJeff Kirsher 	FW_PORT_ACTION_GET_PORT_INFO	= 0x0003,
2733f7917c00SJeff Kirsher 	FW_PORT_ACTION_L2_PPP_CFG	= 0x0004,
2734f7917c00SJeff Kirsher 	FW_PORT_ACTION_L2_DCB_CFG	= 0x0005,
2735989594e2SAnish Bhatt 	FW_PORT_ACTION_DCB_READ_TRANS	= 0x0006,
2736989594e2SAnish Bhatt 	FW_PORT_ACTION_DCB_READ_RECV	= 0x0007,
2737989594e2SAnish Bhatt 	FW_PORT_ACTION_DCB_READ_DET	= 0x0008,
2738c3168cabSGanesh Goudar 	FW_PORT_ACTION_L1_CFG32		= 0x0009,
2739c3168cabSGanesh Goudar 	FW_PORT_ACTION_GET_PORT_INFO32	= 0x000a,
2740f7917c00SJeff Kirsher 	FW_PORT_ACTION_LOW_PWR_TO_NORMAL = 0x0010,
2741f7917c00SJeff Kirsher 	FW_PORT_ACTION_L1_LOW_PWR_EN	= 0x0011,
2742f7917c00SJeff Kirsher 	FW_PORT_ACTION_L2_WOL_MODE_EN	= 0x0012,
2743f7917c00SJeff Kirsher 	FW_PORT_ACTION_LPBK_TO_NORMAL	= 0x0020,
2744f7917c00SJeff Kirsher 	FW_PORT_ACTION_L1_LPBK		= 0x0021,
2745f7917c00SJeff Kirsher 	FW_PORT_ACTION_L1_PMA_LPBK	= 0x0022,
2746f7917c00SJeff Kirsher 	FW_PORT_ACTION_L1_PCS_LPBK	= 0x0023,
2747f7917c00SJeff Kirsher 	FW_PORT_ACTION_L1_PHYXS_CSIDE_LPBK = 0x0024,
2748f7917c00SJeff Kirsher 	FW_PORT_ACTION_L1_PHYXS_ESIDE_LPBK = 0x0025,
2749f7917c00SJeff Kirsher 	FW_PORT_ACTION_PHY_RESET	= 0x0040,
2750f7917c00SJeff Kirsher 	FW_PORT_ACTION_PMA_RESET	= 0x0041,
2751f7917c00SJeff Kirsher 	FW_PORT_ACTION_PCS_RESET	= 0x0042,
2752f7917c00SJeff Kirsher 	FW_PORT_ACTION_PHYXS_RESET	= 0x0043,
2753f7917c00SJeff Kirsher 	FW_PORT_ACTION_DTEXS_REEST	= 0x0044,
2754f7917c00SJeff Kirsher 	FW_PORT_ACTION_AN_RESET		= 0x0045
2755f7917c00SJeff Kirsher };
2756f7917c00SJeff Kirsher 
2757f7917c00SJeff Kirsher enum fw_port_l2cfg_ctlbf {
2758f7917c00SJeff Kirsher 	FW_PORT_L2_CTLBF_OVLAN0	= 0x01,
2759f7917c00SJeff Kirsher 	FW_PORT_L2_CTLBF_OVLAN1	= 0x02,
2760f7917c00SJeff Kirsher 	FW_PORT_L2_CTLBF_OVLAN2	= 0x04,
2761f7917c00SJeff Kirsher 	FW_PORT_L2_CTLBF_OVLAN3	= 0x08,
2762f7917c00SJeff Kirsher 	FW_PORT_L2_CTLBF_IVLAN	= 0x10,
2763f7917c00SJeff Kirsher 	FW_PORT_L2_CTLBF_TXIPG	= 0x20
2764f7917c00SJeff Kirsher };
2765f7917c00SJeff Kirsher 
276610b00466SAnish Bhatt enum fw_port_dcb_versions {
276710b00466SAnish Bhatt 	FW_PORT_DCB_VER_UNKNOWN,
276810b00466SAnish Bhatt 	FW_PORT_DCB_VER_CEE1D0,
276910b00466SAnish Bhatt 	FW_PORT_DCB_VER_CEE1D01,
277010b00466SAnish Bhatt 	FW_PORT_DCB_VER_IEEE,
277110b00466SAnish Bhatt 	FW_PORT_DCB_VER_AUTO = 7
277210b00466SAnish Bhatt };
277310b00466SAnish Bhatt 
2774f7917c00SJeff Kirsher enum fw_port_dcb_cfg {
2775f7917c00SJeff Kirsher 	FW_PORT_DCB_CFG_PG	= 0x01,
2776f7917c00SJeff Kirsher 	FW_PORT_DCB_CFG_PFC	= 0x02,
2777f7917c00SJeff Kirsher 	FW_PORT_DCB_CFG_APPL	= 0x04
2778f7917c00SJeff Kirsher };
2779f7917c00SJeff Kirsher 
2780f7917c00SJeff Kirsher enum fw_port_dcb_cfg_rc {
2781f7917c00SJeff Kirsher 	FW_PORT_DCB_CFG_SUCCESS	= 0x0,
2782f7917c00SJeff Kirsher 	FW_PORT_DCB_CFG_ERROR	= 0x1
2783f7917c00SJeff Kirsher };
2784f7917c00SJeff Kirsher 
2785ce91a923SNaresh Kumar Inna enum fw_port_dcb_type {
2786ce91a923SNaresh Kumar Inna 	FW_PORT_DCB_TYPE_PGID		= 0x00,
2787ce91a923SNaresh Kumar Inna 	FW_PORT_DCB_TYPE_PGRATE		= 0x01,
2788ce91a923SNaresh Kumar Inna 	FW_PORT_DCB_TYPE_PRIORATE	= 0x02,
2789ce91a923SNaresh Kumar Inna 	FW_PORT_DCB_TYPE_PFC		= 0x03,
2790ce91a923SNaresh Kumar Inna 	FW_PORT_DCB_TYPE_APP_ID		= 0x04,
2791989594e2SAnish Bhatt 	FW_PORT_DCB_TYPE_CONTROL	= 0x05,
2792989594e2SAnish Bhatt };
2793989594e2SAnish Bhatt 
2794989594e2SAnish Bhatt enum fw_port_dcb_feature_state {
2795989594e2SAnish Bhatt 	FW_PORT_DCB_FEATURE_STATE_PENDING = 0x0,
2796989594e2SAnish Bhatt 	FW_PORT_DCB_FEATURE_STATE_SUCCESS = 0x1,
2797989594e2SAnish Bhatt 	FW_PORT_DCB_FEATURE_STATE_ERROR	= 0x2,
2798989594e2SAnish Bhatt 	FW_PORT_DCB_FEATURE_STATE_TIMEOUT = 0x3,
2799ce91a923SNaresh Kumar Inna };
2800ce91a923SNaresh Kumar Inna 
2801f7917c00SJeff Kirsher struct fw_port_cmd {
2802f7917c00SJeff Kirsher 	__be32 op_to_portid;
2803f7917c00SJeff Kirsher 	__be32 action_to_len16;
2804f7917c00SJeff Kirsher 	union fw_port {
2805f7917c00SJeff Kirsher 		struct fw_port_l1cfg {
2806f7917c00SJeff Kirsher 			__be32 rcap;
2807f7917c00SJeff Kirsher 			__be32 r;
2808f7917c00SJeff Kirsher 		} l1cfg;
2809f7917c00SJeff Kirsher 		struct fw_port_l2cfg {
2810989594e2SAnish Bhatt 			__u8   ctlbf;
2811989594e2SAnish Bhatt 			__u8   ovlan3_to_ivlan0;
2812f7917c00SJeff Kirsher 			__be16 ivlantype;
2813989594e2SAnish Bhatt 			__be16 txipg_force_pinfo;
2814989594e2SAnish Bhatt 			__be16 mtu;
2815f7917c00SJeff Kirsher 			__be16 ovlan0mask;
2816f7917c00SJeff Kirsher 			__be16 ovlan0type;
2817f7917c00SJeff Kirsher 			__be16 ovlan1mask;
2818f7917c00SJeff Kirsher 			__be16 ovlan1type;
2819f7917c00SJeff Kirsher 			__be16 ovlan2mask;
2820f7917c00SJeff Kirsher 			__be16 ovlan2type;
2821f7917c00SJeff Kirsher 			__be16 ovlan3mask;
2822f7917c00SJeff Kirsher 			__be16 ovlan3type;
2823f7917c00SJeff Kirsher 		} l2cfg;
2824f7917c00SJeff Kirsher 		struct fw_port_info {
2825f7917c00SJeff Kirsher 			__be32 lstatus_to_modtype;
2826f7917c00SJeff Kirsher 			__be16 pcap;
2827f7917c00SJeff Kirsher 			__be16 acap;
2828f7917c00SJeff Kirsher 			__be16 mtu;
2829f7917c00SJeff Kirsher 			__u8   cbllen;
2830989594e2SAnish Bhatt 			__u8   auxlinfo;
2831989594e2SAnish Bhatt 			__u8   dcbxdis_pkd;
2832eb97ad99SGanesh Goudar 			__u8   r8_lo;
2833eb97ad99SGanesh Goudar 			__be16 lpacap;
2834989594e2SAnish Bhatt 			__be64 r9;
2835f7917c00SJeff Kirsher 		} info;
2836989594e2SAnish Bhatt 		struct fw_port_diags {
2837989594e2SAnish Bhatt 			__u8   diagop;
2838989594e2SAnish Bhatt 			__u8   r[3];
2839989594e2SAnish Bhatt 			__be32 diagval;
2840989594e2SAnish Bhatt 		} diags;
2841989594e2SAnish Bhatt 		union fw_port_dcb {
2842989594e2SAnish Bhatt 			struct fw_port_dcb_pgid {
2843989594e2SAnish Bhatt 				__u8   type;
2844989594e2SAnish Bhatt 				__u8   apply_pkd;
2845989594e2SAnish Bhatt 				__u8   r10_lo[2];
2846989594e2SAnish Bhatt 				__be32 pgid;
2847989594e2SAnish Bhatt 				__be64 r11;
2848989594e2SAnish Bhatt 			} pgid;
2849989594e2SAnish Bhatt 			struct fw_port_dcb_pgrate {
2850989594e2SAnish Bhatt 				__u8   type;
2851989594e2SAnish Bhatt 				__u8   apply_pkd;
2852989594e2SAnish Bhatt 				__u8   r10_lo[5];
2853989594e2SAnish Bhatt 				__u8   num_tcs_supported;
2854989594e2SAnish Bhatt 				__u8   pgrate[8];
285510b00466SAnish Bhatt 				__u8   tsa[8];
2856989594e2SAnish Bhatt 			} pgrate;
2857989594e2SAnish Bhatt 			struct fw_port_dcb_priorate {
2858989594e2SAnish Bhatt 				__u8   type;
2859989594e2SAnish Bhatt 				__u8   apply_pkd;
2860989594e2SAnish Bhatt 				__u8   r10_lo[6];
2861989594e2SAnish Bhatt 				__u8   strict_priorate[8];
2862989594e2SAnish Bhatt 			} priorate;
2863989594e2SAnish Bhatt 			struct fw_port_dcb_pfc {
2864989594e2SAnish Bhatt 				__u8   type;
2865989594e2SAnish Bhatt 				__u8   pfcen;
2866989594e2SAnish Bhatt 				__u8   r10[5];
2867989594e2SAnish Bhatt 				__u8   max_pfc_tcs;
2868989594e2SAnish Bhatt 				__be64 r11;
2869989594e2SAnish Bhatt 			} pfc;
2870989594e2SAnish Bhatt 			struct fw_port_app_priority {
2871989594e2SAnish Bhatt 				__u8   type;
2872989594e2SAnish Bhatt 				__u8   r10[2];
2873989594e2SAnish Bhatt 				__u8   idx;
2874989594e2SAnish Bhatt 				__u8   user_prio_map;
2875989594e2SAnish Bhatt 				__u8   sel_field;
2876989594e2SAnish Bhatt 				__be16 protocolid;
2877989594e2SAnish Bhatt 				__be64 r12;
2878989594e2SAnish Bhatt 			} app_priority;
2879989594e2SAnish Bhatt 			struct fw_port_dcb_control {
2880989594e2SAnish Bhatt 				__u8   type;
2881989594e2SAnish Bhatt 				__u8   all_syncd_pkd;
288210b00466SAnish Bhatt 				__be16 dcb_version_to_app_state;
2883f7917c00SJeff Kirsher 				__be32 r11;
2884989594e2SAnish Bhatt 				__be64 r12;
2885989594e2SAnish Bhatt 			} control;
2886f7917c00SJeff Kirsher 		} dcb;
2887c3168cabSGanesh Goudar 		struct fw_port_l1cfg32 {
2888c3168cabSGanesh Goudar 			__be32 rcap32;
2889c3168cabSGanesh Goudar 			__be32 r;
2890c3168cabSGanesh Goudar 		} l1cfg32;
2891c3168cabSGanesh Goudar 		struct fw_port_info32 {
2892c3168cabSGanesh Goudar 			__be32 lstatus32_to_cbllen32;
2893c3168cabSGanesh Goudar 			__be32 auxlinfo32_mtu32;
2894c3168cabSGanesh Goudar 			__be32 linkattr32;
2895c3168cabSGanesh Goudar 			__be32 pcaps32;
2896c3168cabSGanesh Goudar 			__be32 acaps32;
2897c3168cabSGanesh Goudar 			__be32 lpacaps32;
2898c3168cabSGanesh Goudar 		} info32;
2899f7917c00SJeff Kirsher 	} u;
2900f7917c00SJeff Kirsher };
2901f7917c00SJeff Kirsher 
29022b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_READ_S	22
29032b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_READ_V(x)	((x) << FW_PORT_CMD_READ_S)
29042b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_READ_F	FW_PORT_CMD_READ_V(1U)
2905f7917c00SJeff Kirsher 
29062b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_PORTID_S	0
29072b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_PORTID_M	0xf
29082b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_PORTID_V(x)	((x) << FW_PORT_CMD_PORTID_S)
29092b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_PORTID_G(x)	\
29102b5fb1f2SHariprasad Shenai 	(((x) >> FW_PORT_CMD_PORTID_S) & FW_PORT_CMD_PORTID_M)
2911f7917c00SJeff Kirsher 
29122b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_ACTION_S	16
29132b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_ACTION_M	0xffff
29142b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_ACTION_V(x)	((x) << FW_PORT_CMD_ACTION_S)
29152b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_ACTION_G(x)	\
29162b5fb1f2SHariprasad Shenai 	(((x) >> FW_PORT_CMD_ACTION_S) & FW_PORT_CMD_ACTION_M)
2917f7917c00SJeff Kirsher 
29182b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_OVLAN3_S	7
29192b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_OVLAN3_V(x)	((x) << FW_PORT_CMD_OVLAN3_S)
2920f7917c00SJeff Kirsher 
29212b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_OVLAN2_S	6
29222b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_OVLAN2_V(x)	((x) << FW_PORT_CMD_OVLAN2_S)
2923f7917c00SJeff Kirsher 
29242b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_OVLAN1_S	5
29252b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_OVLAN1_V(x)	((x) << FW_PORT_CMD_OVLAN1_S)
2926f7917c00SJeff Kirsher 
29272b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_OVLAN0_S	4
29282b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_OVLAN0_V(x)	((x) << FW_PORT_CMD_OVLAN0_S)
2929989594e2SAnish Bhatt 
29302b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_IVLAN0_S	3
29312b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_IVLAN0_V(x)	((x) << FW_PORT_CMD_IVLAN0_S)
2932f7917c00SJeff Kirsher 
29332b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_TXIPG_S	3
29342b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_TXIPG_V(x)	((x) << FW_PORT_CMD_TXIPG_S)
29352b5fb1f2SHariprasad Shenai 
29362b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_LSTATUS_S           31
29372b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_LSTATUS_M           0x1
29382b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_LSTATUS_V(x)        ((x) << FW_PORT_CMD_LSTATUS_S)
29392b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_LSTATUS_G(x)        \
29402b5fb1f2SHariprasad Shenai 	(((x) >> FW_PORT_CMD_LSTATUS_S) & FW_PORT_CMD_LSTATUS_M)
29412b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_LSTATUS_F   FW_PORT_CMD_LSTATUS_V(1U)
29422b5fb1f2SHariprasad Shenai 
29432b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_LSPEED_S	24
29442b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_LSPEED_M	0x3f
29452b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_LSPEED_V(x)	((x) << FW_PORT_CMD_LSPEED_S)
29462b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_LSPEED_G(x)	\
29472b5fb1f2SHariprasad Shenai 	(((x) >> FW_PORT_CMD_LSPEED_S) & FW_PORT_CMD_LSPEED_M)
29482b5fb1f2SHariprasad Shenai 
29492b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_TXPAUSE_S		23
29502b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_TXPAUSE_V(x)	((x) << FW_PORT_CMD_TXPAUSE_S)
29512b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_TXPAUSE_F	FW_PORT_CMD_TXPAUSE_V(1U)
29522b5fb1f2SHariprasad Shenai 
29532b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_RXPAUSE_S		22
29542b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_RXPAUSE_V(x)	((x) << FW_PORT_CMD_RXPAUSE_S)
29552b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_RXPAUSE_F	FW_PORT_CMD_RXPAUSE_V(1U)
29562b5fb1f2SHariprasad Shenai 
29572b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_MDIOCAP_S		21
29582b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_MDIOCAP_V(x)	((x) << FW_PORT_CMD_MDIOCAP_S)
29592b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_MDIOCAP_F	FW_PORT_CMD_MDIOCAP_V(1U)
29602b5fb1f2SHariprasad Shenai 
29612b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_MDIOADDR_S		16
29622b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_MDIOADDR_M		0x1f
29632b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_MDIOADDR_G(x)	\
29642b5fb1f2SHariprasad Shenai 	(((x) >> FW_PORT_CMD_MDIOADDR_S) & FW_PORT_CMD_MDIOADDR_M)
29652b5fb1f2SHariprasad Shenai 
29662b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_LPTXPAUSE_S		15
29672b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_LPTXPAUSE_V(x)	((x) << FW_PORT_CMD_LPTXPAUSE_S)
29682b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_LPTXPAUSE_F	FW_PORT_CMD_LPTXPAUSE_V(1U)
29692b5fb1f2SHariprasad Shenai 
29702b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_LPRXPAUSE_S		14
29712b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_LPRXPAUSE_V(x)	((x) << FW_PORT_CMD_LPRXPAUSE_S)
29722b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_LPRXPAUSE_F	FW_PORT_CMD_LPRXPAUSE_V(1U)
29732b5fb1f2SHariprasad Shenai 
29742b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_PTYPE_S	8
29752b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_PTYPE_M	0x1f
29762b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_PTYPE_G(x)	\
29772b5fb1f2SHariprasad Shenai 	(((x) >> FW_PORT_CMD_PTYPE_S) & FW_PORT_CMD_PTYPE_M)
29782b5fb1f2SHariprasad Shenai 
2979ddc7740dSHariprasad Shenai #define FW_PORT_CMD_LINKDNRC_S		5
2980ddc7740dSHariprasad Shenai #define FW_PORT_CMD_LINKDNRC_M		0x7
2981ddc7740dSHariprasad Shenai #define FW_PORT_CMD_LINKDNRC_G(x)	\
2982ddc7740dSHariprasad Shenai 	(((x) >> FW_PORT_CMD_LINKDNRC_S) & FW_PORT_CMD_LINKDNRC_M)
2983ddc7740dSHariprasad Shenai 
29842b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_MODTYPE_S		0
29852b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_MODTYPE_M		0x1f
29862b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_MODTYPE_V(x)	((x) << FW_PORT_CMD_MODTYPE_S)
29872b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_MODTYPE_G(x)	\
29882b5fb1f2SHariprasad Shenai 	(((x) >> FW_PORT_CMD_MODTYPE_S) & FW_PORT_CMD_MODTYPE_M)
29892b5fb1f2SHariprasad Shenai 
29902b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_DCBXDIS_S		7
29912b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_DCBXDIS_V(x)	((x) << FW_PORT_CMD_DCBXDIS_S)
29922b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_DCBXDIS_F	FW_PORT_CMD_DCBXDIS_V(1U)
29932b5fb1f2SHariprasad Shenai 
29942b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_APPLY_S	7
29952b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_APPLY_V(x)	((x) << FW_PORT_CMD_APPLY_S)
29962b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_APPLY_F	FW_PORT_CMD_APPLY_V(1U)
29972b5fb1f2SHariprasad Shenai 
29982b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_ALL_SYNCD_S		7
29992b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_ALL_SYNCD_V(x)	((x) << FW_PORT_CMD_ALL_SYNCD_S)
30002b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_ALL_SYNCD_F	FW_PORT_CMD_ALL_SYNCD_V(1U)
30012b5fb1f2SHariprasad Shenai 
30022b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_DCB_VERSION_S	12
30032b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_DCB_VERSION_M	0x7
30042b5fb1f2SHariprasad Shenai #define FW_PORT_CMD_DCB_VERSION_G(x)	\
30052b5fb1f2SHariprasad Shenai 	(((x) >> FW_PORT_CMD_DCB_VERSION_S) & FW_PORT_CMD_DCB_VERSION_M)
3006f7917c00SJeff Kirsher 
3007c3168cabSGanesh Goudar #define FW_PORT_CMD_LSTATUS32_S		31
3008c3168cabSGanesh Goudar #define FW_PORT_CMD_LSTATUS32_M		0x1
3009c3168cabSGanesh Goudar #define FW_PORT_CMD_LSTATUS32_V(x)	((x) << FW_PORT_CMD_LSTATUS32_S)
3010c3168cabSGanesh Goudar #define FW_PORT_CMD_LSTATUS32_G(x)	\
3011c3168cabSGanesh Goudar 	(((x) >> FW_PORT_CMD_LSTATUS32_S) & FW_PORT_CMD_LSTATUS32_M)
3012c3168cabSGanesh Goudar #define FW_PORT_CMD_LSTATUS32_F	FW_PORT_CMD_LSTATUS32_V(1U)
3013c3168cabSGanesh Goudar 
3014c3168cabSGanesh Goudar #define FW_PORT_CMD_LINKDNRC32_S	28
3015c3168cabSGanesh Goudar #define FW_PORT_CMD_LINKDNRC32_M	0x7
3016c3168cabSGanesh Goudar #define FW_PORT_CMD_LINKDNRC32_V(x)	((x) << FW_PORT_CMD_LINKDNRC32_S)
3017c3168cabSGanesh Goudar #define FW_PORT_CMD_LINKDNRC32_G(x)	\
3018c3168cabSGanesh Goudar 	(((x) >> FW_PORT_CMD_LINKDNRC32_S) & FW_PORT_CMD_LINKDNRC32_M)
3019c3168cabSGanesh Goudar 
3020c3168cabSGanesh Goudar #define FW_PORT_CMD_DCBXDIS32_S		27
3021c3168cabSGanesh Goudar #define FW_PORT_CMD_DCBXDIS32_M		0x1
3022c3168cabSGanesh Goudar #define FW_PORT_CMD_DCBXDIS32_V(x)	((x) << FW_PORT_CMD_DCBXDIS32_S)
3023c3168cabSGanesh Goudar #define FW_PORT_CMD_DCBXDIS32_G(x)	\
3024c3168cabSGanesh Goudar 	(((x) >> FW_PORT_CMD_DCBXDIS32_S) & FW_PORT_CMD_DCBXDIS32_M)
3025c3168cabSGanesh Goudar #define FW_PORT_CMD_DCBXDIS32_F	FW_PORT_CMD_DCBXDIS32_V(1U)
3026c3168cabSGanesh Goudar 
3027c3168cabSGanesh Goudar #define FW_PORT_CMD_MDIOCAP32_S		26
3028c3168cabSGanesh Goudar #define FW_PORT_CMD_MDIOCAP32_M		0x1
3029c3168cabSGanesh Goudar #define FW_PORT_CMD_MDIOCAP32_V(x)	((x) << FW_PORT_CMD_MDIOCAP32_S)
3030c3168cabSGanesh Goudar #define FW_PORT_CMD_MDIOCAP32_G(x)	\
3031c3168cabSGanesh Goudar 	(((x) >> FW_PORT_CMD_MDIOCAP32_S) & FW_PORT_CMD_MDIOCAP32_M)
3032c3168cabSGanesh Goudar #define FW_PORT_CMD_MDIOCAP32_F	FW_PORT_CMD_MDIOCAP32_V(1U)
3033c3168cabSGanesh Goudar 
3034c3168cabSGanesh Goudar #define FW_PORT_CMD_MDIOADDR32_S	21
3035c3168cabSGanesh Goudar #define FW_PORT_CMD_MDIOADDR32_M	0x1f
3036c3168cabSGanesh Goudar #define FW_PORT_CMD_MDIOADDR32_V(x)	((x) << FW_PORT_CMD_MDIOADDR32_S)
3037c3168cabSGanesh Goudar #define FW_PORT_CMD_MDIOADDR32_G(x)	\
3038c3168cabSGanesh Goudar 	(((x) >> FW_PORT_CMD_MDIOADDR32_S) & FW_PORT_CMD_MDIOADDR32_M)
3039c3168cabSGanesh Goudar 
3040c3168cabSGanesh Goudar #define FW_PORT_CMD_PORTTYPE32_S	13
3041c3168cabSGanesh Goudar #define FW_PORT_CMD_PORTTYPE32_M	0xff
3042c3168cabSGanesh Goudar #define FW_PORT_CMD_PORTTYPE32_V(x)	((x) << FW_PORT_CMD_PORTTYPE32_S)
3043c3168cabSGanesh Goudar #define FW_PORT_CMD_PORTTYPE32_G(x)	\
3044c3168cabSGanesh Goudar 	(((x) >> FW_PORT_CMD_PORTTYPE32_S) & FW_PORT_CMD_PORTTYPE32_M)
3045c3168cabSGanesh Goudar 
3046c3168cabSGanesh Goudar #define FW_PORT_CMD_MODTYPE32_S		8
3047c3168cabSGanesh Goudar #define FW_PORT_CMD_MODTYPE32_M		0x1f
3048c3168cabSGanesh Goudar #define FW_PORT_CMD_MODTYPE32_V(x)	((x) << FW_PORT_CMD_MODTYPE32_S)
3049c3168cabSGanesh Goudar #define FW_PORT_CMD_MODTYPE32_G(x)	\
3050c3168cabSGanesh Goudar 	(((x) >> FW_PORT_CMD_MODTYPE32_S) & FW_PORT_CMD_MODTYPE32_M)
3051c3168cabSGanesh Goudar 
3052c3168cabSGanesh Goudar #define FW_PORT_CMD_CBLLEN32_S		0
3053c3168cabSGanesh Goudar #define FW_PORT_CMD_CBLLEN32_M		0xff
3054c3168cabSGanesh Goudar #define FW_PORT_CMD_CBLLEN32_V(x)	((x) << FW_PORT_CMD_CBLLEN32_S)
3055c3168cabSGanesh Goudar #define FW_PORT_CMD_CBLLEN32_G(x)	\
3056c3168cabSGanesh Goudar 	(((x) >> FW_PORT_CMD_CBLLEN32_S) & FW_PORT_CMD_CBLLEN32_M)
3057c3168cabSGanesh Goudar 
3058c3168cabSGanesh Goudar #define FW_PORT_CMD_AUXLINFO32_S	24
3059c3168cabSGanesh Goudar #define FW_PORT_CMD_AUXLINFO32_M	0xff
3060c3168cabSGanesh Goudar #define FW_PORT_CMD_AUXLINFO32_V(x)	((x) << FW_PORT_CMD_AUXLINFO32_S)
3061c3168cabSGanesh Goudar #define FW_PORT_CMD_AUXLINFO32_G(x)	\
3062c3168cabSGanesh Goudar 	(((x) >> FW_PORT_CMD_AUXLINFO32_S) & FW_PORT_CMD_AUXLINFO32_M)
3063c3168cabSGanesh Goudar 
3064c3168cabSGanesh Goudar #define FW_PORT_AUXLINFO32_KX4_S	2
3065c3168cabSGanesh Goudar #define FW_PORT_AUXLINFO32_KX4_M	0x1
3066c3168cabSGanesh Goudar #define FW_PORT_AUXLINFO32_KX4_V(x) \
3067c3168cabSGanesh Goudar 	((x) << FW_PORT_AUXLINFO32_KX4_S)
3068c3168cabSGanesh Goudar #define FW_PORT_AUXLINFO32_KX4_G(x) \
3069c3168cabSGanesh Goudar 	(((x) >> FW_PORT_AUXLINFO32_KX4_S) & FW_PORT_AUXLINFO32_KX4_M)
3070c3168cabSGanesh Goudar #define FW_PORT_AUXLINFO32_KX4_F	FW_PORT_AUXLINFO32_KX4_V(1U)
3071c3168cabSGanesh Goudar 
3072c3168cabSGanesh Goudar #define FW_PORT_AUXLINFO32_KR_S	1
3073c3168cabSGanesh Goudar #define FW_PORT_AUXLINFO32_KR_M	0x1
3074c3168cabSGanesh Goudar #define FW_PORT_AUXLINFO32_KR_V(x) \
3075c3168cabSGanesh Goudar 	((x) << FW_PORT_AUXLINFO32_KR_S)
3076c3168cabSGanesh Goudar #define FW_PORT_AUXLINFO32_KR_G(x) \
3077c3168cabSGanesh Goudar 	(((x) >> FW_PORT_AUXLINFO32_KR_S) & FW_PORT_AUXLINFO32_KR_M)
3078c3168cabSGanesh Goudar #define FW_PORT_AUXLINFO32_KR_F	FW_PORT_AUXLINFO32_KR_V(1U)
3079c3168cabSGanesh Goudar 
3080c3168cabSGanesh Goudar #define FW_PORT_CMD_MTU32_S	0
3081c3168cabSGanesh Goudar #define FW_PORT_CMD_MTU32_M	0xffff
3082c3168cabSGanesh Goudar #define FW_PORT_CMD_MTU32_V(x)	((x) << FW_PORT_CMD_MTU32_S)
3083c3168cabSGanesh Goudar #define FW_PORT_CMD_MTU32_G(x)	\
3084c3168cabSGanesh Goudar 	(((x) >> FW_PORT_CMD_MTU32_S) & FW_PORT_CMD_MTU32_M)
3085c3168cabSGanesh Goudar 
3086f7917c00SJeff Kirsher enum fw_port_type {
3087f7917c00SJeff Kirsher 	FW_PORT_TYPE_FIBER_XFI,
3088f7917c00SJeff Kirsher 	FW_PORT_TYPE_FIBER_XAUI,
3089f7917c00SJeff Kirsher 	FW_PORT_TYPE_BT_SGMII,
3090f7917c00SJeff Kirsher 	FW_PORT_TYPE_BT_XFI,
3091f7917c00SJeff Kirsher 	FW_PORT_TYPE_BT_XAUI,
3092f7917c00SJeff Kirsher 	FW_PORT_TYPE_KX4,
3093f7917c00SJeff Kirsher 	FW_PORT_TYPE_CX4,
3094f7917c00SJeff Kirsher 	FW_PORT_TYPE_KX,
3095f7917c00SJeff Kirsher 	FW_PORT_TYPE_KR,
3096f7917c00SJeff Kirsher 	FW_PORT_TYPE_SFP,
3097f7917c00SJeff Kirsher 	FW_PORT_TYPE_BP_AP,
3098f7917c00SJeff Kirsher 	FW_PORT_TYPE_BP4_AP,
309972aca4bfSKumar Sanghvi 	FW_PORT_TYPE_QSFP_10G,
310040e9de4bSHariprasad Shenai 	FW_PORT_TYPE_QSA,
31015aa80e51SHariprasad Shenai 	FW_PORT_TYPE_QSFP,
310272aca4bfSKumar Sanghvi 	FW_PORT_TYPE_BP40_BA,
3103eb97ad99SGanesh Goudar 	FW_PORT_TYPE_KR4_100G,
3104eb97ad99SGanesh Goudar 	FW_PORT_TYPE_CR4_QSFP,
3105eb97ad99SGanesh Goudar 	FW_PORT_TYPE_CR_QSFP,
3106eb97ad99SGanesh Goudar 	FW_PORT_TYPE_CR2_QSFP,
3107eb97ad99SGanesh Goudar 	FW_PORT_TYPE_SFP28,
31082061ec3fSGanesh Goudar 	FW_PORT_TYPE_KR_SFP28,
3109b39ab140SGanesh Goudar 	FW_PORT_TYPE_KR_XLAUI,
3110f7917c00SJeff Kirsher 
31112b5fb1f2SHariprasad Shenai 	FW_PORT_TYPE_NONE = FW_PORT_CMD_PTYPE_M
3112f7917c00SJeff Kirsher };
3113f7917c00SJeff Kirsher 
3114f7917c00SJeff Kirsher enum fw_port_module_type {
3115f7917c00SJeff Kirsher 	FW_PORT_MOD_TYPE_NA,
3116f7917c00SJeff Kirsher 	FW_PORT_MOD_TYPE_LR,
3117f7917c00SJeff Kirsher 	FW_PORT_MOD_TYPE_SR,
3118f7917c00SJeff Kirsher 	FW_PORT_MOD_TYPE_ER,
3119f7917c00SJeff Kirsher 	FW_PORT_MOD_TYPE_TWINAX_PASSIVE,
3120f7917c00SJeff Kirsher 	FW_PORT_MOD_TYPE_TWINAX_ACTIVE,
3121f7917c00SJeff Kirsher 	FW_PORT_MOD_TYPE_LRM,
31222b5fb1f2SHariprasad Shenai 	FW_PORT_MOD_TYPE_ERROR		= FW_PORT_CMD_MODTYPE_M - 3,
31232b5fb1f2SHariprasad Shenai 	FW_PORT_MOD_TYPE_UNKNOWN	= FW_PORT_CMD_MODTYPE_M - 2,
31242b5fb1f2SHariprasad Shenai 	FW_PORT_MOD_TYPE_NOTSUPPORTED	= FW_PORT_CMD_MODTYPE_M - 1,
3125f7917c00SJeff Kirsher 
31262b5fb1f2SHariprasad Shenai 	FW_PORT_MOD_TYPE_NONE = FW_PORT_CMD_MODTYPE_M
3127f7917c00SJeff Kirsher };
3128f7917c00SJeff Kirsher 
3129b407a4a9SVipul Pandya enum fw_port_mod_sub_type {
3130b407a4a9SVipul Pandya 	FW_PORT_MOD_SUB_TYPE_NA,
3131b407a4a9SVipul Pandya 	FW_PORT_MOD_SUB_TYPE_MV88E114X = 0x1,
3132b407a4a9SVipul Pandya 	FW_PORT_MOD_SUB_TYPE_TN8022 = 0x2,
3133b407a4a9SVipul Pandya 	FW_PORT_MOD_SUB_TYPE_AQ1202 = 0x3,
3134b407a4a9SVipul Pandya 	FW_PORT_MOD_SUB_TYPE_88x3120 = 0x4,
3135b407a4a9SVipul Pandya 	FW_PORT_MOD_SUB_TYPE_BCM84834 = 0x5,
3136b407a4a9SVipul Pandya 	FW_PORT_MOD_SUB_TYPE_BT_VSC8634 = 0x8,
3137b407a4a9SVipul Pandya 
3138b407a4a9SVipul Pandya 	/* The following will never been in the VPD.  They are TWINAX cable
3139b407a4a9SVipul Pandya 	 * lengths decoded from SFP+ module i2c PROMs.  These should
3140b407a4a9SVipul Pandya 	 * almost certainly go somewhere else ...
3141b407a4a9SVipul Pandya 	 */
3142b407a4a9SVipul Pandya 	FW_PORT_MOD_SUB_TYPE_TWINAX_1 = 0x9,
3143b407a4a9SVipul Pandya 	FW_PORT_MOD_SUB_TYPE_TWINAX_3 = 0xA,
3144b407a4a9SVipul Pandya 	FW_PORT_MOD_SUB_TYPE_TWINAX_5 = 0xB,
3145b407a4a9SVipul Pandya 	FW_PORT_MOD_SUB_TYPE_TWINAX_7 = 0xC,
3146b407a4a9SVipul Pandya };
3147b407a4a9SVipul Pandya 
3148f7917c00SJeff Kirsher enum fw_port_stats_tx_index {
31493ccc6cf7SHariprasad Shenai 	FW_STAT_TX_PORT_BYTES_IX = 0,
3150f7917c00SJeff Kirsher 	FW_STAT_TX_PORT_FRAMES_IX,
3151f7917c00SJeff Kirsher 	FW_STAT_TX_PORT_BCAST_IX,
3152f7917c00SJeff Kirsher 	FW_STAT_TX_PORT_MCAST_IX,
3153f7917c00SJeff Kirsher 	FW_STAT_TX_PORT_UCAST_IX,
3154f7917c00SJeff Kirsher 	FW_STAT_TX_PORT_ERROR_IX,
3155f7917c00SJeff Kirsher 	FW_STAT_TX_PORT_64B_IX,
3156f7917c00SJeff Kirsher 	FW_STAT_TX_PORT_65B_127B_IX,
3157f7917c00SJeff Kirsher 	FW_STAT_TX_PORT_128B_255B_IX,
3158f7917c00SJeff Kirsher 	FW_STAT_TX_PORT_256B_511B_IX,
3159f7917c00SJeff Kirsher 	FW_STAT_TX_PORT_512B_1023B_IX,
3160f7917c00SJeff Kirsher 	FW_STAT_TX_PORT_1024B_1518B_IX,
3161f7917c00SJeff Kirsher 	FW_STAT_TX_PORT_1519B_MAX_IX,
3162f7917c00SJeff Kirsher 	FW_STAT_TX_PORT_DROP_IX,
3163f7917c00SJeff Kirsher 	FW_STAT_TX_PORT_PAUSE_IX,
3164f7917c00SJeff Kirsher 	FW_STAT_TX_PORT_PPP0_IX,
3165f7917c00SJeff Kirsher 	FW_STAT_TX_PORT_PPP1_IX,
3166f7917c00SJeff Kirsher 	FW_STAT_TX_PORT_PPP2_IX,
3167f7917c00SJeff Kirsher 	FW_STAT_TX_PORT_PPP3_IX,
3168f7917c00SJeff Kirsher 	FW_STAT_TX_PORT_PPP4_IX,
3169f7917c00SJeff Kirsher 	FW_STAT_TX_PORT_PPP5_IX,
3170f7917c00SJeff Kirsher 	FW_STAT_TX_PORT_PPP6_IX,
31713ccc6cf7SHariprasad Shenai 	FW_STAT_TX_PORT_PPP7_IX,
31723ccc6cf7SHariprasad Shenai 	FW_NUM_PORT_TX_STATS
3173f7917c00SJeff Kirsher };
3174f7917c00SJeff Kirsher 
3175f7917c00SJeff Kirsher enum fw_port_stat_rx_index {
31763ccc6cf7SHariprasad Shenai 	FW_STAT_RX_PORT_BYTES_IX = 0,
3177f7917c00SJeff Kirsher 	FW_STAT_RX_PORT_FRAMES_IX,
3178f7917c00SJeff Kirsher 	FW_STAT_RX_PORT_BCAST_IX,
3179f7917c00SJeff Kirsher 	FW_STAT_RX_PORT_MCAST_IX,
3180f7917c00SJeff Kirsher 	FW_STAT_RX_PORT_UCAST_IX,
3181f7917c00SJeff Kirsher 	FW_STAT_RX_PORT_MTU_ERROR_IX,
3182f7917c00SJeff Kirsher 	FW_STAT_RX_PORT_MTU_CRC_ERROR_IX,
3183f7917c00SJeff Kirsher 	FW_STAT_RX_PORT_CRC_ERROR_IX,
3184f7917c00SJeff Kirsher 	FW_STAT_RX_PORT_LEN_ERROR_IX,
3185f7917c00SJeff Kirsher 	FW_STAT_RX_PORT_SYM_ERROR_IX,
3186f7917c00SJeff Kirsher 	FW_STAT_RX_PORT_64B_IX,
3187f7917c00SJeff Kirsher 	FW_STAT_RX_PORT_65B_127B_IX,
3188f7917c00SJeff Kirsher 	FW_STAT_RX_PORT_128B_255B_IX,
3189f7917c00SJeff Kirsher 	FW_STAT_RX_PORT_256B_511B_IX,
3190f7917c00SJeff Kirsher 	FW_STAT_RX_PORT_512B_1023B_IX,
3191f7917c00SJeff Kirsher 	FW_STAT_RX_PORT_1024B_1518B_IX,
3192f7917c00SJeff Kirsher 	FW_STAT_RX_PORT_1519B_MAX_IX,
3193f7917c00SJeff Kirsher 	FW_STAT_RX_PORT_PAUSE_IX,
3194f7917c00SJeff Kirsher 	FW_STAT_RX_PORT_PPP0_IX,
3195f7917c00SJeff Kirsher 	FW_STAT_RX_PORT_PPP1_IX,
3196f7917c00SJeff Kirsher 	FW_STAT_RX_PORT_PPP2_IX,
3197f7917c00SJeff Kirsher 	FW_STAT_RX_PORT_PPP3_IX,
3198f7917c00SJeff Kirsher 	FW_STAT_RX_PORT_PPP4_IX,
3199f7917c00SJeff Kirsher 	FW_STAT_RX_PORT_PPP5_IX,
3200f7917c00SJeff Kirsher 	FW_STAT_RX_PORT_PPP6_IX,
3201f7917c00SJeff Kirsher 	FW_STAT_RX_PORT_PPP7_IX,
32023ccc6cf7SHariprasad Shenai 	FW_STAT_RX_PORT_LESS_64B_IX,
32033ccc6cf7SHariprasad Shenai 	FW_STAT_RX_PORT_MAC_ERROR_IX,
32043ccc6cf7SHariprasad Shenai 	FW_NUM_PORT_RX_STATS
3205f7917c00SJeff Kirsher };
3206f7917c00SJeff Kirsher 
32073ccc6cf7SHariprasad Shenai /* port stats */
32083ccc6cf7SHariprasad Shenai #define FW_NUM_PORT_STATS (FW_NUM_PORT_TX_STATS + FW_NUM_PORT_RX_STATS)
32093ccc6cf7SHariprasad Shenai 
3210f7917c00SJeff Kirsher struct fw_port_stats_cmd {
3211f7917c00SJeff Kirsher 	__be32 op_to_portid;
3212f7917c00SJeff Kirsher 	__be32 retval_len16;
3213f7917c00SJeff Kirsher 	union fw_port_stats {
3214f7917c00SJeff Kirsher 		struct fw_port_stats_ctl {
3215f7917c00SJeff Kirsher 			u8 nstats_bg_bm;
3216f7917c00SJeff Kirsher 			u8 tx_ix;
3217f7917c00SJeff Kirsher 			__be16 r6;
3218f7917c00SJeff Kirsher 			__be32 r7;
3219f7917c00SJeff Kirsher 			__be64 stat0;
3220f7917c00SJeff Kirsher 			__be64 stat1;
3221f7917c00SJeff Kirsher 			__be64 stat2;
3222f7917c00SJeff Kirsher 			__be64 stat3;
3223f7917c00SJeff Kirsher 			__be64 stat4;
3224f7917c00SJeff Kirsher 			__be64 stat5;
3225f7917c00SJeff Kirsher 		} ctl;
3226f7917c00SJeff Kirsher 		struct fw_port_stats_all {
3227f7917c00SJeff Kirsher 			__be64 tx_bytes;
3228f7917c00SJeff Kirsher 			__be64 tx_frames;
3229f7917c00SJeff Kirsher 			__be64 tx_bcast;
3230f7917c00SJeff Kirsher 			__be64 tx_mcast;
3231f7917c00SJeff Kirsher 			__be64 tx_ucast;
3232f7917c00SJeff Kirsher 			__be64 tx_error;
3233f7917c00SJeff Kirsher 			__be64 tx_64b;
3234f7917c00SJeff Kirsher 			__be64 tx_65b_127b;
3235f7917c00SJeff Kirsher 			__be64 tx_128b_255b;
3236f7917c00SJeff Kirsher 			__be64 tx_256b_511b;
3237f7917c00SJeff Kirsher 			__be64 tx_512b_1023b;
3238f7917c00SJeff Kirsher 			__be64 tx_1024b_1518b;
3239f7917c00SJeff Kirsher 			__be64 tx_1519b_max;
3240f7917c00SJeff Kirsher 			__be64 tx_drop;
3241f7917c00SJeff Kirsher 			__be64 tx_pause;
3242f7917c00SJeff Kirsher 			__be64 tx_ppp0;
3243f7917c00SJeff Kirsher 			__be64 tx_ppp1;
3244f7917c00SJeff Kirsher 			__be64 tx_ppp2;
3245f7917c00SJeff Kirsher 			__be64 tx_ppp3;
3246f7917c00SJeff Kirsher 			__be64 tx_ppp4;
3247f7917c00SJeff Kirsher 			__be64 tx_ppp5;
3248f7917c00SJeff Kirsher 			__be64 tx_ppp6;
3249f7917c00SJeff Kirsher 			__be64 tx_ppp7;
3250f7917c00SJeff Kirsher 			__be64 rx_bytes;
3251f7917c00SJeff Kirsher 			__be64 rx_frames;
3252f7917c00SJeff Kirsher 			__be64 rx_bcast;
3253f7917c00SJeff Kirsher 			__be64 rx_mcast;
3254f7917c00SJeff Kirsher 			__be64 rx_ucast;
3255f7917c00SJeff Kirsher 			__be64 rx_mtu_error;
3256f7917c00SJeff Kirsher 			__be64 rx_mtu_crc_error;
3257f7917c00SJeff Kirsher 			__be64 rx_crc_error;
3258f7917c00SJeff Kirsher 			__be64 rx_len_error;
3259f7917c00SJeff Kirsher 			__be64 rx_sym_error;
3260f7917c00SJeff Kirsher 			__be64 rx_64b;
3261f7917c00SJeff Kirsher 			__be64 rx_65b_127b;
3262f7917c00SJeff Kirsher 			__be64 rx_128b_255b;
3263f7917c00SJeff Kirsher 			__be64 rx_256b_511b;
3264f7917c00SJeff Kirsher 			__be64 rx_512b_1023b;
3265f7917c00SJeff Kirsher 			__be64 rx_1024b_1518b;
3266f7917c00SJeff Kirsher 			__be64 rx_1519b_max;
3267f7917c00SJeff Kirsher 			__be64 rx_pause;
3268f7917c00SJeff Kirsher 			__be64 rx_ppp0;
3269f7917c00SJeff Kirsher 			__be64 rx_ppp1;
3270f7917c00SJeff Kirsher 			__be64 rx_ppp2;
3271f7917c00SJeff Kirsher 			__be64 rx_ppp3;
3272f7917c00SJeff Kirsher 			__be64 rx_ppp4;
3273f7917c00SJeff Kirsher 			__be64 rx_ppp5;
3274f7917c00SJeff Kirsher 			__be64 rx_ppp6;
3275f7917c00SJeff Kirsher 			__be64 rx_ppp7;
3276f7917c00SJeff Kirsher 			__be64 rx_less_64b;
3277f7917c00SJeff Kirsher 			__be64 rx_bg_drop;
3278f7917c00SJeff Kirsher 			__be64 rx_bg_trunc;
3279f7917c00SJeff Kirsher 		} all;
3280f7917c00SJeff Kirsher 	} u;
3281f7917c00SJeff Kirsher };
3282f7917c00SJeff Kirsher 
3283f7917c00SJeff Kirsher /* port loopback stats */
3284f7917c00SJeff Kirsher #define FW_NUM_LB_STATS 16
3285f7917c00SJeff Kirsher enum fw_port_lb_stats_index {
3286f7917c00SJeff Kirsher 	FW_STAT_LB_PORT_BYTES_IX,
3287f7917c00SJeff Kirsher 	FW_STAT_LB_PORT_FRAMES_IX,
3288f7917c00SJeff Kirsher 	FW_STAT_LB_PORT_BCAST_IX,
3289f7917c00SJeff Kirsher 	FW_STAT_LB_PORT_MCAST_IX,
3290f7917c00SJeff Kirsher 	FW_STAT_LB_PORT_UCAST_IX,
3291f7917c00SJeff Kirsher 	FW_STAT_LB_PORT_ERROR_IX,
3292f7917c00SJeff Kirsher 	FW_STAT_LB_PORT_64B_IX,
3293f7917c00SJeff Kirsher 	FW_STAT_LB_PORT_65B_127B_IX,
3294f7917c00SJeff Kirsher 	FW_STAT_LB_PORT_128B_255B_IX,
3295f7917c00SJeff Kirsher 	FW_STAT_LB_PORT_256B_511B_IX,
3296f7917c00SJeff Kirsher 	FW_STAT_LB_PORT_512B_1023B_IX,
3297f7917c00SJeff Kirsher 	FW_STAT_LB_PORT_1024B_1518B_IX,
3298f7917c00SJeff Kirsher 	FW_STAT_LB_PORT_1519B_MAX_IX,
3299f7917c00SJeff Kirsher 	FW_STAT_LB_PORT_DROP_FRAMES_IX
3300f7917c00SJeff Kirsher };
3301f7917c00SJeff Kirsher 
3302f7917c00SJeff Kirsher struct fw_port_lb_stats_cmd {
3303f7917c00SJeff Kirsher 	__be32 op_to_lbport;
3304f7917c00SJeff Kirsher 	__be32 retval_len16;
3305f7917c00SJeff Kirsher 	union fw_port_lb_stats {
3306f7917c00SJeff Kirsher 		struct fw_port_lb_stats_ctl {
3307f7917c00SJeff Kirsher 			u8 nstats_bg_bm;
3308f7917c00SJeff Kirsher 			u8 ix_pkd;
3309f7917c00SJeff Kirsher 			__be16 r6;
3310f7917c00SJeff Kirsher 			__be32 r7;
3311f7917c00SJeff Kirsher 			__be64 stat0;
3312f7917c00SJeff Kirsher 			__be64 stat1;
3313f7917c00SJeff Kirsher 			__be64 stat2;
3314f7917c00SJeff Kirsher 			__be64 stat3;
3315f7917c00SJeff Kirsher 			__be64 stat4;
3316f7917c00SJeff Kirsher 			__be64 stat5;
3317f7917c00SJeff Kirsher 		} ctl;
3318f7917c00SJeff Kirsher 		struct fw_port_lb_stats_all {
3319f7917c00SJeff Kirsher 			__be64 tx_bytes;
3320f7917c00SJeff Kirsher 			__be64 tx_frames;
3321f7917c00SJeff Kirsher 			__be64 tx_bcast;
3322f7917c00SJeff Kirsher 			__be64 tx_mcast;
3323f7917c00SJeff Kirsher 			__be64 tx_ucast;
3324f7917c00SJeff Kirsher 			__be64 tx_error;
3325f7917c00SJeff Kirsher 			__be64 tx_64b;
3326f7917c00SJeff Kirsher 			__be64 tx_65b_127b;
3327f7917c00SJeff Kirsher 			__be64 tx_128b_255b;
3328f7917c00SJeff Kirsher 			__be64 tx_256b_511b;
3329f7917c00SJeff Kirsher 			__be64 tx_512b_1023b;
3330f7917c00SJeff Kirsher 			__be64 tx_1024b_1518b;
3331f7917c00SJeff Kirsher 			__be64 tx_1519b_max;
3332f7917c00SJeff Kirsher 			__be64 rx_lb_drop;
3333f7917c00SJeff Kirsher 			__be64 rx_lb_trunc;
3334f7917c00SJeff Kirsher 		} all;
3335f7917c00SJeff Kirsher 	} u;
3336f7917c00SJeff Kirsher };
3337f7917c00SJeff Kirsher 
3338a4569504SAtul Gupta enum fw_ptp_subop {
3339a4569504SAtul Gupta 	/* none */
3340a4569504SAtul Gupta 	FW_PTP_SC_INIT_TIMER            = 0x00,
3341a4569504SAtul Gupta 	FW_PTP_SC_TX_TYPE               = 0x01,
3342a4569504SAtul Gupta 	/* init */
3343a4569504SAtul Gupta 	FW_PTP_SC_RXTIME_STAMP          = 0x08,
3344a4569504SAtul Gupta 	FW_PTP_SC_RDRX_TYPE             = 0x09,
3345a4569504SAtul Gupta 	/* ts */
3346a4569504SAtul Gupta 	FW_PTP_SC_ADJ_FREQ              = 0x10,
3347a4569504SAtul Gupta 	FW_PTP_SC_ADJ_TIME              = 0x11,
3348a4569504SAtul Gupta 	FW_PTP_SC_ADJ_FTIME             = 0x12,
3349a4569504SAtul Gupta 	FW_PTP_SC_WALL_CLOCK            = 0x13,
3350a4569504SAtul Gupta 	FW_PTP_SC_GET_TIME              = 0x14,
3351a4569504SAtul Gupta 	FW_PTP_SC_SET_TIME              = 0x15,
3352a4569504SAtul Gupta };
3353a4569504SAtul Gupta 
3354a4569504SAtul Gupta struct fw_ptp_cmd {
3355a4569504SAtul Gupta 	__be32 op_to_portid;
3356a4569504SAtul Gupta 	__be32 retval_len16;
3357a4569504SAtul Gupta 	union fw_ptp {
3358a4569504SAtul Gupta 		struct fw_ptp_sc {
3359a4569504SAtul Gupta 			__u8   sc;
3360a4569504SAtul Gupta 			__u8   r3[7];
3361a4569504SAtul Gupta 		} scmd;
3362a4569504SAtul Gupta 		struct fw_ptp_init {
3363a4569504SAtul Gupta 			__u8   sc;
3364a4569504SAtul Gupta 			__u8   txchan;
3365a4569504SAtul Gupta 			__be16 absid;
3366a4569504SAtul Gupta 			__be16 mode;
3367a4569504SAtul Gupta 			__be16 r3;
3368a4569504SAtul Gupta 		} init;
3369a4569504SAtul Gupta 		struct fw_ptp_ts {
3370a4569504SAtul Gupta 			__u8   sc;
3371a4569504SAtul Gupta 			__u8   sign;
3372a4569504SAtul Gupta 			__be16 r3;
3373a4569504SAtul Gupta 			__be32 ppb;
3374a4569504SAtul Gupta 			__be64 tm;
3375a4569504SAtul Gupta 		} ts;
3376a4569504SAtul Gupta 	} u;
3377a4569504SAtul Gupta 	__be64 r3;
3378a4569504SAtul Gupta };
3379a4569504SAtul Gupta 
3380a4569504SAtul Gupta #define FW_PTP_CMD_PORTID_S             0
3381a4569504SAtul Gupta #define FW_PTP_CMD_PORTID_M             0xf
3382a4569504SAtul Gupta #define FW_PTP_CMD_PORTID_V(x)          ((x) << FW_PTP_CMD_PORTID_S)
3383a4569504SAtul Gupta #define FW_PTP_CMD_PORTID_G(x)          \
3384a4569504SAtul Gupta 	(((x) >> FW_PTP_CMD_PORTID_S) & FW_PTP_CMD_PORTID_M)
3385a4569504SAtul Gupta 
3386f7917c00SJeff Kirsher struct fw_rss_ind_tbl_cmd {
3387f7917c00SJeff Kirsher 	__be32 op_to_viid;
3388f7917c00SJeff Kirsher 	__be32 retval_len16;
3389f7917c00SJeff Kirsher 	__be16 niqid;
3390f7917c00SJeff Kirsher 	__be16 startidx;
3391f7917c00SJeff Kirsher 	__be32 r3;
3392f7917c00SJeff Kirsher 	__be32 iq0_to_iq2;
3393f7917c00SJeff Kirsher 	__be32 iq3_to_iq5;
3394f7917c00SJeff Kirsher 	__be32 iq6_to_iq8;
3395f7917c00SJeff Kirsher 	__be32 iq9_to_iq11;
3396f7917c00SJeff Kirsher 	__be32 iq12_to_iq14;
3397f7917c00SJeff Kirsher 	__be32 iq15_to_iq17;
3398f7917c00SJeff Kirsher 	__be32 iq18_to_iq20;
3399f7917c00SJeff Kirsher 	__be32 iq21_to_iq23;
3400f7917c00SJeff Kirsher 	__be32 iq24_to_iq26;
3401f7917c00SJeff Kirsher 	__be32 iq27_to_iq29;
3402f7917c00SJeff Kirsher 	__be32 iq30_iq31;
3403f7917c00SJeff Kirsher 	__be32 r15_lo;
3404f7917c00SJeff Kirsher };
3405f7917c00SJeff Kirsher 
3406b2e1a3f0SHariprasad Shenai #define FW_RSS_IND_TBL_CMD_VIID_S	0
3407b2e1a3f0SHariprasad Shenai #define FW_RSS_IND_TBL_CMD_VIID_V(x)	((x) << FW_RSS_IND_TBL_CMD_VIID_S)
3408b2e1a3f0SHariprasad Shenai 
3409b2e1a3f0SHariprasad Shenai #define FW_RSS_IND_TBL_CMD_IQ0_S	20
3410b2e1a3f0SHariprasad Shenai #define FW_RSS_IND_TBL_CMD_IQ0_V(x)	((x) << FW_RSS_IND_TBL_CMD_IQ0_S)
3411b2e1a3f0SHariprasad Shenai 
3412b2e1a3f0SHariprasad Shenai #define FW_RSS_IND_TBL_CMD_IQ1_S	10
3413b2e1a3f0SHariprasad Shenai #define FW_RSS_IND_TBL_CMD_IQ1_V(x)	((x) << FW_RSS_IND_TBL_CMD_IQ1_S)
3414b2e1a3f0SHariprasad Shenai 
3415b2e1a3f0SHariprasad Shenai #define FW_RSS_IND_TBL_CMD_IQ2_S	0
3416b2e1a3f0SHariprasad Shenai #define FW_RSS_IND_TBL_CMD_IQ2_V(x)	((x) << FW_RSS_IND_TBL_CMD_IQ2_S)
3417b2e1a3f0SHariprasad Shenai 
3418f7917c00SJeff Kirsher struct fw_rss_glb_config_cmd {
3419f7917c00SJeff Kirsher 	__be32 op_to_write;
3420f7917c00SJeff Kirsher 	__be32 retval_len16;
3421f7917c00SJeff Kirsher 	union fw_rss_glb_config {
3422f7917c00SJeff Kirsher 		struct fw_rss_glb_config_manual {
3423f7917c00SJeff Kirsher 			__be32 mode_pkd;
3424f7917c00SJeff Kirsher 			__be32 r3;
3425f7917c00SJeff Kirsher 			__be64 r4;
3426f7917c00SJeff Kirsher 			__be64 r5;
3427f7917c00SJeff Kirsher 		} manual;
3428f7917c00SJeff Kirsher 		struct fw_rss_glb_config_basicvirtual {
3429f7917c00SJeff Kirsher 			__be32 mode_pkd;
3430f7917c00SJeff Kirsher 			__be32 synmapen_to_hashtoeplitz;
3431f7917c00SJeff Kirsher 			__be64 r8;
3432f7917c00SJeff Kirsher 			__be64 r9;
3433f7917c00SJeff Kirsher 		} basicvirtual;
3434f7917c00SJeff Kirsher 	} u;
3435f7917c00SJeff Kirsher };
3436f7917c00SJeff Kirsher 
3437b2e1a3f0SHariprasad Shenai #define FW_RSS_GLB_CONFIG_CMD_MODE_S	28
3438b2e1a3f0SHariprasad Shenai #define FW_RSS_GLB_CONFIG_CMD_MODE_M	0xf
3439b2e1a3f0SHariprasad Shenai #define FW_RSS_GLB_CONFIG_CMD_MODE_V(x)	((x) << FW_RSS_GLB_CONFIG_CMD_MODE_S)
3440b2e1a3f0SHariprasad Shenai #define FW_RSS_GLB_CONFIG_CMD_MODE_G(x)	\
3441b2e1a3f0SHariprasad Shenai 	(((x) >> FW_RSS_GLB_CONFIG_CMD_MODE_S) & FW_RSS_GLB_CONFIG_CMD_MODE_M)
3442f7917c00SJeff Kirsher 
3443f7917c00SJeff Kirsher #define FW_RSS_GLB_CONFIG_CMD_MODE_MANUAL	0
3444f7917c00SJeff Kirsher #define FW_RSS_GLB_CONFIG_CMD_MODE_BASICVIRTUAL	1
3445f7917c00SJeff Kirsher 
3446b2e1a3f0SHariprasad Shenai #define FW_RSS_GLB_CONFIG_CMD_SYNMAPEN_S	8
3447b2e1a3f0SHariprasad Shenai #define FW_RSS_GLB_CONFIG_CMD_SYNMAPEN_V(x)	\
3448b2e1a3f0SHariprasad Shenai 	((x) << FW_RSS_GLB_CONFIG_CMD_SYNMAPEN_S)
3449b2e1a3f0SHariprasad Shenai #define FW_RSS_GLB_CONFIG_CMD_SYNMAPEN_F	\
3450b2e1a3f0SHariprasad Shenai 	FW_RSS_GLB_CONFIG_CMD_SYNMAPEN_V(1U)
3451b2e1a3f0SHariprasad Shenai 
3452b2e1a3f0SHariprasad Shenai #define FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV6_S		7
3453b2e1a3f0SHariprasad Shenai #define FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV6_V(x)	\
3454b2e1a3f0SHariprasad Shenai 	((x) << FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV6_S)
3455b2e1a3f0SHariprasad Shenai #define FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV6_F	\
3456b2e1a3f0SHariprasad Shenai 	FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV6_V(1U)
3457b2e1a3f0SHariprasad Shenai 
3458b2e1a3f0SHariprasad Shenai #define FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV6_S		6
3459b2e1a3f0SHariprasad Shenai #define FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV6_V(x)	\
3460b2e1a3f0SHariprasad Shenai 	((x) << FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV6_S)
3461b2e1a3f0SHariprasad Shenai #define FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV6_F	\
3462b2e1a3f0SHariprasad Shenai 	FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV6_V(1U)
3463b2e1a3f0SHariprasad Shenai 
3464b2e1a3f0SHariprasad Shenai #define FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV4_S		5
3465b2e1a3f0SHariprasad Shenai #define FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV4_V(x)	\
3466b2e1a3f0SHariprasad Shenai 	((x) << FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV4_S)
3467b2e1a3f0SHariprasad Shenai #define FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV4_F	\
3468b2e1a3f0SHariprasad Shenai 	FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV4_V(1U)
3469b2e1a3f0SHariprasad Shenai 
3470b2e1a3f0SHariprasad Shenai #define FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV4_S		4
3471b2e1a3f0SHariprasad Shenai #define FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV4_V(x)	\
3472b2e1a3f0SHariprasad Shenai 	((x) << FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV4_S)
3473b2e1a3f0SHariprasad Shenai #define FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV4_F	\
3474b2e1a3f0SHariprasad Shenai 	FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV4_V(1U)
3475b2e1a3f0SHariprasad Shenai 
3476b2e1a3f0SHariprasad Shenai #define FW_RSS_GLB_CONFIG_CMD_OFDMAPEN_S	3
3477b2e1a3f0SHariprasad Shenai #define FW_RSS_GLB_CONFIG_CMD_OFDMAPEN_V(x)	\
3478b2e1a3f0SHariprasad Shenai 	((x) << FW_RSS_GLB_CONFIG_CMD_OFDMAPEN_S)
3479b2e1a3f0SHariprasad Shenai #define FW_RSS_GLB_CONFIG_CMD_OFDMAPEN_F	\
3480b2e1a3f0SHariprasad Shenai 	FW_RSS_GLB_CONFIG_CMD_OFDMAPEN_V(1U)
3481b2e1a3f0SHariprasad Shenai 
3482b2e1a3f0SHariprasad Shenai #define FW_RSS_GLB_CONFIG_CMD_TNLMAPEN_S	2
3483b2e1a3f0SHariprasad Shenai #define FW_RSS_GLB_CONFIG_CMD_TNLMAPEN_V(x)	\
3484b2e1a3f0SHariprasad Shenai 	((x) << FW_RSS_GLB_CONFIG_CMD_TNLMAPEN_S)
3485b2e1a3f0SHariprasad Shenai #define FW_RSS_GLB_CONFIG_CMD_TNLMAPEN_F	\
3486b2e1a3f0SHariprasad Shenai 	FW_RSS_GLB_CONFIG_CMD_TNLMAPEN_V(1U)
3487b2e1a3f0SHariprasad Shenai 
3488b2e1a3f0SHariprasad Shenai #define FW_RSS_GLB_CONFIG_CMD_TNLALLLKP_S	1
3489b2e1a3f0SHariprasad Shenai #define FW_RSS_GLB_CONFIG_CMD_TNLALLLKP_V(x)	\
3490b2e1a3f0SHariprasad Shenai 	((x) << FW_RSS_GLB_CONFIG_CMD_TNLALLLKP_S)
3491b2e1a3f0SHariprasad Shenai #define FW_RSS_GLB_CONFIG_CMD_TNLALLLKP_F	\
3492b2e1a3f0SHariprasad Shenai 	FW_RSS_GLB_CONFIG_CMD_TNLALLLKP_V(1U)
3493b2e1a3f0SHariprasad Shenai 
3494b2e1a3f0SHariprasad Shenai #define FW_RSS_GLB_CONFIG_CMD_HASHTOEPLITZ_S	0
3495b2e1a3f0SHariprasad Shenai #define FW_RSS_GLB_CONFIG_CMD_HASHTOEPLITZ_V(x)	\
3496b2e1a3f0SHariprasad Shenai 	((x) << FW_RSS_GLB_CONFIG_CMD_HASHTOEPLITZ_S)
3497b2e1a3f0SHariprasad Shenai #define FW_RSS_GLB_CONFIG_CMD_HASHTOEPLITZ_F	\
3498b2e1a3f0SHariprasad Shenai 	FW_RSS_GLB_CONFIG_CMD_HASHTOEPLITZ_V(1U)
3499b2e1a3f0SHariprasad Shenai 
3500f7917c00SJeff Kirsher struct fw_rss_vi_config_cmd {
3501f7917c00SJeff Kirsher 	__be32 op_to_viid;
3502f7917c00SJeff Kirsher #define FW_RSS_VI_CONFIG_CMD_VIID(x) ((x) << 0)
3503f7917c00SJeff Kirsher 	__be32 retval_len16;
3504f7917c00SJeff Kirsher 	union fw_rss_vi_config {
3505f7917c00SJeff Kirsher 		struct fw_rss_vi_config_manual {
3506f7917c00SJeff Kirsher 			__be64 r3;
3507f7917c00SJeff Kirsher 			__be64 r4;
3508f7917c00SJeff Kirsher 			__be64 r5;
3509f7917c00SJeff Kirsher 		} manual;
3510f7917c00SJeff Kirsher 		struct fw_rss_vi_config_basicvirtual {
3511f7917c00SJeff Kirsher 			__be32 r6;
3512f7917c00SJeff Kirsher 			__be32 defaultq_to_udpen;
3513f7917c00SJeff Kirsher 			__be64 r9;
3514f7917c00SJeff Kirsher 			__be64 r10;
3515f7917c00SJeff Kirsher 		} basicvirtual;
3516f7917c00SJeff Kirsher 	} u;
3517f7917c00SJeff Kirsher };
3518f7917c00SJeff Kirsher 
3519b2e1a3f0SHariprasad Shenai #define FW_RSS_VI_CONFIG_CMD_VIID_S	0
3520b2e1a3f0SHariprasad Shenai #define FW_RSS_VI_CONFIG_CMD_VIID_V(x)	((x) << FW_RSS_VI_CONFIG_CMD_VIID_S)
3521b2e1a3f0SHariprasad Shenai 
3522b2e1a3f0SHariprasad Shenai #define FW_RSS_VI_CONFIG_CMD_DEFAULTQ_S		16
3523b2e1a3f0SHariprasad Shenai #define FW_RSS_VI_CONFIG_CMD_DEFAULTQ_M		0x3ff
3524b2e1a3f0SHariprasad Shenai #define FW_RSS_VI_CONFIG_CMD_DEFAULTQ_V(x)	\
3525b2e1a3f0SHariprasad Shenai 	((x) << FW_RSS_VI_CONFIG_CMD_DEFAULTQ_S)
3526b2e1a3f0SHariprasad Shenai #define FW_RSS_VI_CONFIG_CMD_DEFAULTQ_G(x)	\
3527b2e1a3f0SHariprasad Shenai 	(((x) >> FW_RSS_VI_CONFIG_CMD_DEFAULTQ_S) & \
3528b2e1a3f0SHariprasad Shenai 	 FW_RSS_VI_CONFIG_CMD_DEFAULTQ_M)
3529b2e1a3f0SHariprasad Shenai 
3530b2e1a3f0SHariprasad Shenai #define FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN_S	4
3531b2e1a3f0SHariprasad Shenai #define FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN_V(x)	\
3532b2e1a3f0SHariprasad Shenai 	((x) << FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN_S)
3533b2e1a3f0SHariprasad Shenai #define FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN_F	\
3534b2e1a3f0SHariprasad Shenai 	FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN_V(1U)
3535b2e1a3f0SHariprasad Shenai 
3536b2e1a3f0SHariprasad Shenai #define FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN_S	3
3537b2e1a3f0SHariprasad Shenai #define FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN_V(x)	\
3538b2e1a3f0SHariprasad Shenai 	((x) << FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN_S)
3539b2e1a3f0SHariprasad Shenai #define FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN_F	\
3540b2e1a3f0SHariprasad Shenai 	FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN_V(1U)
3541b2e1a3f0SHariprasad Shenai 
3542b2e1a3f0SHariprasad Shenai #define FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN_S	2
3543b2e1a3f0SHariprasad Shenai #define FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN_V(x)	\
3544b2e1a3f0SHariprasad Shenai 	((x) << FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN_S)
3545b2e1a3f0SHariprasad Shenai #define FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN_F	\
3546b2e1a3f0SHariprasad Shenai 	FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN_V(1U)
3547b2e1a3f0SHariprasad Shenai 
3548b2e1a3f0SHariprasad Shenai #define FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN_S	1
3549b2e1a3f0SHariprasad Shenai #define FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN_V(x)	\
3550b2e1a3f0SHariprasad Shenai 	((x) << FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN_S)
3551b2e1a3f0SHariprasad Shenai #define FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN_F	\
3552b2e1a3f0SHariprasad Shenai 	FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN_V(1U)
3553b2e1a3f0SHariprasad Shenai 
3554b2e1a3f0SHariprasad Shenai #define FW_RSS_VI_CONFIG_CMD_UDPEN_S	0
3555b2e1a3f0SHariprasad Shenai #define FW_RSS_VI_CONFIG_CMD_UDPEN_V(x)	((x) << FW_RSS_VI_CONFIG_CMD_UDPEN_S)
3556b2e1a3f0SHariprasad Shenai #define FW_RSS_VI_CONFIG_CMD_UDPEN_F	FW_RSS_VI_CONFIG_CMD_UDPEN_V(1U)
3557b2e1a3f0SHariprasad Shenai 
3558b72a32daSRahul Lakkireddy enum fw_sched_sc {
3559b72a32daSRahul Lakkireddy 	FW_SCHED_SC_PARAMS		= 1,
3560b72a32daSRahul Lakkireddy };
3561b72a32daSRahul Lakkireddy 
3562b72a32daSRahul Lakkireddy struct fw_sched_cmd {
3563b72a32daSRahul Lakkireddy 	__be32 op_to_write;
3564b72a32daSRahul Lakkireddy 	__be32 retval_len16;
3565b72a32daSRahul Lakkireddy 	union fw_sched {
3566b72a32daSRahul Lakkireddy 		struct fw_sched_config {
3567b72a32daSRahul Lakkireddy 			__u8   sc;
3568b72a32daSRahul Lakkireddy 			__u8   type;
3569b72a32daSRahul Lakkireddy 			__u8   minmaxen;
3570b72a32daSRahul Lakkireddy 			__u8   r3[5];
3571b72a32daSRahul Lakkireddy 			__u8   nclasses[4];
3572b72a32daSRahul Lakkireddy 			__be32 r4;
3573b72a32daSRahul Lakkireddy 		} config;
3574b72a32daSRahul Lakkireddy 		struct fw_sched_params {
3575b72a32daSRahul Lakkireddy 			__u8   sc;
3576b72a32daSRahul Lakkireddy 			__u8   type;
3577b72a32daSRahul Lakkireddy 			__u8   level;
3578b72a32daSRahul Lakkireddy 			__u8   mode;
3579b72a32daSRahul Lakkireddy 			__u8   unit;
3580b72a32daSRahul Lakkireddy 			__u8   rate;
3581b72a32daSRahul Lakkireddy 			__u8   ch;
3582b72a32daSRahul Lakkireddy 			__u8   cl;
3583b72a32daSRahul Lakkireddy 			__be32 min;
3584b72a32daSRahul Lakkireddy 			__be32 max;
3585b72a32daSRahul Lakkireddy 			__be16 weight;
3586b72a32daSRahul Lakkireddy 			__be16 pktsize;
3587b72a32daSRahul Lakkireddy 			__be16 burstsize;
3588b72a32daSRahul Lakkireddy 			__be16 r4;
3589b72a32daSRahul Lakkireddy 		} params;
3590b72a32daSRahul Lakkireddy 	} u;
3591b72a32daSRahul Lakkireddy };
3592b72a32daSRahul Lakkireddy 
359301bcca68SVipul Pandya struct fw_clip_cmd {
359401bcca68SVipul Pandya 	__be32 op_to_write;
359501bcca68SVipul Pandya 	__be32 alloc_to_len16;
359601bcca68SVipul Pandya 	__be64 ip_hi;
359701bcca68SVipul Pandya 	__be64 ip_lo;
359801bcca68SVipul Pandya 	__be32 r4[2];
359901bcca68SVipul Pandya };
360001bcca68SVipul Pandya 
3601b2e1a3f0SHariprasad Shenai #define FW_CLIP_CMD_ALLOC_S     31
3602b2e1a3f0SHariprasad Shenai #define FW_CLIP_CMD_ALLOC_V(x)  ((x) << FW_CLIP_CMD_ALLOC_S)
3603b2e1a3f0SHariprasad Shenai #define FW_CLIP_CMD_ALLOC_F     FW_CLIP_CMD_ALLOC_V(1U)
360401bcca68SVipul Pandya 
3605b2e1a3f0SHariprasad Shenai #define FW_CLIP_CMD_FREE_S      30
3606b2e1a3f0SHariprasad Shenai #define FW_CLIP_CMD_FREE_V(x)   ((x) << FW_CLIP_CMD_FREE_S)
3607b2e1a3f0SHariprasad Shenai #define FW_CLIP_CMD_FREE_F      FW_CLIP_CMD_FREE_V(1U)
360801bcca68SVipul Pandya 
3609f7917c00SJeff Kirsher enum fw_error_type {
3610f7917c00SJeff Kirsher 	FW_ERROR_TYPE_EXCEPTION		= 0x0,
3611f7917c00SJeff Kirsher 	FW_ERROR_TYPE_HWMODULE		= 0x1,
3612f7917c00SJeff Kirsher 	FW_ERROR_TYPE_WR		= 0x2,
3613f7917c00SJeff Kirsher 	FW_ERROR_TYPE_ACL		= 0x3,
3614f7917c00SJeff Kirsher };
3615f7917c00SJeff Kirsher 
3616f7917c00SJeff Kirsher struct fw_error_cmd {
3617f7917c00SJeff Kirsher 	__be32 op_to_type;
3618f7917c00SJeff Kirsher 	__be32 len16_pkd;
3619f7917c00SJeff Kirsher 	union fw_error {
3620f7917c00SJeff Kirsher 		struct fw_error_exception {
3621f7917c00SJeff Kirsher 			__be32 info[6];
3622f7917c00SJeff Kirsher 		} exception;
3623f7917c00SJeff Kirsher 		struct fw_error_hwmodule {
3624f7917c00SJeff Kirsher 			__be32 regaddr;
3625f7917c00SJeff Kirsher 			__be32 regval;
3626f7917c00SJeff Kirsher 		} hwmodule;
3627f7917c00SJeff Kirsher 		struct fw_error_wr {
3628f7917c00SJeff Kirsher 			__be16 cidx;
3629f7917c00SJeff Kirsher 			__be16 pfn_vfn;
3630f7917c00SJeff Kirsher 			__be32 eqid;
3631f7917c00SJeff Kirsher 			u8 wrhdr[16];
3632f7917c00SJeff Kirsher 		} wr;
3633f7917c00SJeff Kirsher 		struct fw_error_acl {
3634f7917c00SJeff Kirsher 			__be16 cidx;
3635f7917c00SJeff Kirsher 			__be16 pfn_vfn;
3636f7917c00SJeff Kirsher 			__be32 eqid;
3637f7917c00SJeff Kirsher 			__be16 mv_pkd;
3638f7917c00SJeff Kirsher 			u8 val[6];
3639f7917c00SJeff Kirsher 			__be64 r4;
3640f7917c00SJeff Kirsher 		} acl;
3641f7917c00SJeff Kirsher 	} u;
3642f7917c00SJeff Kirsher };
3643f7917c00SJeff Kirsher 
3644f7917c00SJeff Kirsher struct fw_debug_cmd {
3645f7917c00SJeff Kirsher 	__be32 op_type;
3646f7917c00SJeff Kirsher 	__be32 len16_pkd;
3647f7917c00SJeff Kirsher 	union fw_debug {
3648f7917c00SJeff Kirsher 		struct fw_debug_assert {
3649f7917c00SJeff Kirsher 			__be32 fcid;
3650f7917c00SJeff Kirsher 			__be32 line;
3651f7917c00SJeff Kirsher 			__be32 x;
3652f7917c00SJeff Kirsher 			__be32 y;
3653f7917c00SJeff Kirsher 			u8 filename_0_7[8];
3654f7917c00SJeff Kirsher 			u8 filename_8_15[8];
3655f7917c00SJeff Kirsher 			__be64 r3;
3656f7917c00SJeff Kirsher 		} assert;
3657f7917c00SJeff Kirsher 		struct fw_debug_prt {
3658f7917c00SJeff Kirsher 			__be16 dprtstridx;
3659f7917c00SJeff Kirsher 			__be16 r3[3];
3660f7917c00SJeff Kirsher 			__be32 dprtstrparam0;
3661f7917c00SJeff Kirsher 			__be32 dprtstrparam1;
3662f7917c00SJeff Kirsher 			__be32 dprtstrparam2;
3663f7917c00SJeff Kirsher 			__be32 dprtstrparam3;
3664f7917c00SJeff Kirsher 		} prt;
3665f7917c00SJeff Kirsher 	} u;
3666f7917c00SJeff Kirsher };
3667f7917c00SJeff Kirsher 
3668b2e1a3f0SHariprasad Shenai #define FW_DEBUG_CMD_TYPE_S	0
3669b2e1a3f0SHariprasad Shenai #define FW_DEBUG_CMD_TYPE_M	0xff
3670b2e1a3f0SHariprasad Shenai #define FW_DEBUG_CMD_TYPE_G(x)	\
3671b2e1a3f0SHariprasad Shenai 	(((x) >> FW_DEBUG_CMD_TYPE_S) & FW_DEBUG_CMD_TYPE_M)
3672b2e1a3f0SHariprasad Shenai 
36738b4e6b3cSArjun Vynipadath struct fw_hma_cmd {
36748b4e6b3cSArjun Vynipadath 	__be32 op_pkd;
36758b4e6b3cSArjun Vynipadath 	__be32 retval_len16;
36768b4e6b3cSArjun Vynipadath 	__be32 mode_to_pcie_params;
36778b4e6b3cSArjun Vynipadath 	__be32 naddr_size;
36788b4e6b3cSArjun Vynipadath 	__be32 addr_size_pkd;
36798b4e6b3cSArjun Vynipadath 	__be32 r6;
36808b4e6b3cSArjun Vynipadath 	__be64 phy_address[5];
36818b4e6b3cSArjun Vynipadath };
36828b4e6b3cSArjun Vynipadath 
36838b4e6b3cSArjun Vynipadath #define FW_HMA_CMD_MODE_S	31
36848b4e6b3cSArjun Vynipadath #define FW_HMA_CMD_MODE_M	0x1
36858b4e6b3cSArjun Vynipadath #define FW_HMA_CMD_MODE_V(x)	((x) << FW_HMA_CMD_MODE_S)
36868b4e6b3cSArjun Vynipadath #define FW_HMA_CMD_MODE_G(x)	\
36878b4e6b3cSArjun Vynipadath 	(((x) >> FW_HMA_CMD_MODE_S) & FW_HMA_CMD_MODE_M)
36888b4e6b3cSArjun Vynipadath #define FW_HMA_CMD_MODE_F	FW_HMA_CMD_MODE_V(1U)
36898b4e6b3cSArjun Vynipadath 
36908b4e6b3cSArjun Vynipadath #define FW_HMA_CMD_SOC_S	30
36918b4e6b3cSArjun Vynipadath #define FW_HMA_CMD_SOC_M	0x1
36928b4e6b3cSArjun Vynipadath #define FW_HMA_CMD_SOC_V(x)	((x) << FW_HMA_CMD_SOC_S)
36938b4e6b3cSArjun Vynipadath #define FW_HMA_CMD_SOC_G(x)	(((x) >> FW_HMA_CMD_SOC_S) & FW_HMA_CMD_SOC_M)
36948b4e6b3cSArjun Vynipadath #define FW_HMA_CMD_SOC_F	FW_HMA_CMD_SOC_V(1U)
36958b4e6b3cSArjun Vynipadath 
36968b4e6b3cSArjun Vynipadath #define FW_HMA_CMD_EOC_S	29
36978b4e6b3cSArjun Vynipadath #define FW_HMA_CMD_EOC_M	0x1
36988b4e6b3cSArjun Vynipadath #define FW_HMA_CMD_EOC_V(x)	((x) << FW_HMA_CMD_EOC_S)
36998b4e6b3cSArjun Vynipadath #define FW_HMA_CMD_EOC_G(x)	(((x) >> FW_HMA_CMD_EOC_S) & FW_HMA_CMD_EOC_M)
37008b4e6b3cSArjun Vynipadath #define FW_HMA_CMD_EOC_F	FW_HMA_CMD_EOC_V(1U)
37018b4e6b3cSArjun Vynipadath 
37028b4e6b3cSArjun Vynipadath #define FW_HMA_CMD_PCIE_PARAMS_S	0
37038b4e6b3cSArjun Vynipadath #define FW_HMA_CMD_PCIE_PARAMS_M	0x7ffffff
37048b4e6b3cSArjun Vynipadath #define FW_HMA_CMD_PCIE_PARAMS_V(x)	((x) << FW_HMA_CMD_PCIE_PARAMS_S)
37058b4e6b3cSArjun Vynipadath #define FW_HMA_CMD_PCIE_PARAMS_G(x)	\
37068b4e6b3cSArjun Vynipadath 	(((x) >> FW_HMA_CMD_PCIE_PARAMS_S) & FW_HMA_CMD_PCIE_PARAMS_M)
37078b4e6b3cSArjun Vynipadath 
37088b4e6b3cSArjun Vynipadath #define FW_HMA_CMD_NADDR_S	12
37098b4e6b3cSArjun Vynipadath #define FW_HMA_CMD_NADDR_M	0x3f
37108b4e6b3cSArjun Vynipadath #define FW_HMA_CMD_NADDR_V(x)	((x) << FW_HMA_CMD_NADDR_S)
37118b4e6b3cSArjun Vynipadath #define FW_HMA_CMD_NADDR_G(x)	\
37128b4e6b3cSArjun Vynipadath 	(((x) >> FW_HMA_CMD_NADDR_S) & FW_HMA_CMD_NADDR_M)
37138b4e6b3cSArjun Vynipadath 
37148b4e6b3cSArjun Vynipadath #define FW_HMA_CMD_SIZE_S	0
37158b4e6b3cSArjun Vynipadath #define FW_HMA_CMD_SIZE_M	0xfff
37168b4e6b3cSArjun Vynipadath #define FW_HMA_CMD_SIZE_V(x)	((x) << FW_HMA_CMD_SIZE_S)
37178b4e6b3cSArjun Vynipadath #define FW_HMA_CMD_SIZE_G(x)	\
37188b4e6b3cSArjun Vynipadath 	(((x) >> FW_HMA_CMD_SIZE_S) & FW_HMA_CMD_SIZE_M)
37198b4e6b3cSArjun Vynipadath 
37208b4e6b3cSArjun Vynipadath #define FW_HMA_CMD_ADDR_SIZE_S		11
37218b4e6b3cSArjun Vynipadath #define FW_HMA_CMD_ADDR_SIZE_M		0x1fffff
37228b4e6b3cSArjun Vynipadath #define FW_HMA_CMD_ADDR_SIZE_V(x)	((x) << FW_HMA_CMD_ADDR_SIZE_S)
37238b4e6b3cSArjun Vynipadath #define FW_HMA_CMD_ADDR_SIZE_G(x)	\
37248b4e6b3cSArjun Vynipadath 	(((x) >> FW_HMA_CMD_ADDR_SIZE_S) & FW_HMA_CMD_ADDR_SIZE_M)
37258b4e6b3cSArjun Vynipadath 
3726d86cc04eSRahul Lakkireddy enum pcie_fw_eval {
3727d86cc04eSRahul Lakkireddy 	PCIE_FW_EVAL_CRASH = 0,
3728d86cc04eSRahul Lakkireddy };
3729d86cc04eSRahul Lakkireddy 
3730b2e1a3f0SHariprasad Shenai #define PCIE_FW_ERR_S		31
3731b2e1a3f0SHariprasad Shenai #define PCIE_FW_ERR_V(x)	((x) << PCIE_FW_ERR_S)
3732b2e1a3f0SHariprasad Shenai #define PCIE_FW_ERR_F		PCIE_FW_ERR_V(1U)
3733b2e1a3f0SHariprasad Shenai 
3734b2e1a3f0SHariprasad Shenai #define PCIE_FW_INIT_S		30
3735b2e1a3f0SHariprasad Shenai #define PCIE_FW_INIT_V(x)	((x) << PCIE_FW_INIT_S)
3736b2e1a3f0SHariprasad Shenai #define PCIE_FW_INIT_F		PCIE_FW_INIT_V(1U)
3737b2e1a3f0SHariprasad Shenai 
3738b2e1a3f0SHariprasad Shenai #define PCIE_FW_HALT_S          29
3739b2e1a3f0SHariprasad Shenai #define PCIE_FW_HALT_V(x)       ((x) << PCIE_FW_HALT_S)
3740b2e1a3f0SHariprasad Shenai #define PCIE_FW_HALT_F          PCIE_FW_HALT_V(1U)
3741b2e1a3f0SHariprasad Shenai 
3742b2e1a3f0SHariprasad Shenai #define PCIE_FW_EVAL_S		24
3743b2e1a3f0SHariprasad Shenai #define PCIE_FW_EVAL_M		0x7
3744b2e1a3f0SHariprasad Shenai #define PCIE_FW_EVAL_G(x)	(((x) >> PCIE_FW_EVAL_S) & PCIE_FW_EVAL_M)
3745b2e1a3f0SHariprasad Shenai 
3746b2e1a3f0SHariprasad Shenai #define PCIE_FW_MASTER_VLD_S	15
3747b2e1a3f0SHariprasad Shenai #define PCIE_FW_MASTER_VLD_V(x)	((x) << PCIE_FW_MASTER_VLD_S)
3748b2e1a3f0SHariprasad Shenai #define PCIE_FW_MASTER_VLD_F	PCIE_FW_MASTER_VLD_V(1U)
3749b2e1a3f0SHariprasad Shenai 
3750b2e1a3f0SHariprasad Shenai #define PCIE_FW_MASTER_S	12
3751b2e1a3f0SHariprasad Shenai #define PCIE_FW_MASTER_M	0x7
3752b2e1a3f0SHariprasad Shenai #define PCIE_FW_MASTER_V(x)	((x) << PCIE_FW_MASTER_S)
3753b2e1a3f0SHariprasad Shenai #define PCIE_FW_MASTER_G(x)	(((x) >> PCIE_FW_MASTER_S) & PCIE_FW_MASTER_M)
375452367a76SVipul Pandya 
3755f7917c00SJeff Kirsher struct fw_hdr {
3756f7917c00SJeff Kirsher 	u8 ver;
375716e47624SHariprasad Shenai 	u8 chip;			/* terminator chip type */
3758f7917c00SJeff Kirsher 	__be16	len512;			/* bin length in units of 512-bytes */
3759f7917c00SJeff Kirsher 	__be32	fw_ver;			/* firmware version */
3760f7917c00SJeff Kirsher 	__be32	tp_microcode_ver;
3761f7917c00SJeff Kirsher 	u8 intfver_nic;
3762f7917c00SJeff Kirsher 	u8 intfver_vnic;
3763f7917c00SJeff Kirsher 	u8 intfver_ofld;
3764f7917c00SJeff Kirsher 	u8 intfver_ri;
3765f7917c00SJeff Kirsher 	u8 intfver_iscsipdu;
3766f7917c00SJeff Kirsher 	u8 intfver_iscsi;
3767b407a4a9SVipul Pandya 	u8 intfver_fcoepdu;
3768f7917c00SJeff Kirsher 	u8 intfver_fcoe;
3769b407a4a9SVipul Pandya 	__u32   reserved2;
377026f7cbc0SVipul Pandya 	__u32   reserved3;
377126f7cbc0SVipul Pandya 	__u32   reserved4;
377226f7cbc0SVipul Pandya 	__be32  flags;
377326f7cbc0SVipul Pandya 	__be32  reserved6[23];
3774f7917c00SJeff Kirsher };
3775f7917c00SJeff Kirsher 
377616e47624SHariprasad Shenai enum fw_hdr_chip {
377716e47624SHariprasad Shenai 	FW_HDR_CHIP_T4,
37783ccc6cf7SHariprasad Shenai 	FW_HDR_CHIP_T5,
37793ccc6cf7SHariprasad Shenai 	FW_HDR_CHIP_T6
378016e47624SHariprasad Shenai };
378116e47624SHariprasad Shenai 
3782b2e1a3f0SHariprasad Shenai #define FW_HDR_FW_VER_MAJOR_S	24
3783b2e1a3f0SHariprasad Shenai #define FW_HDR_FW_VER_MAJOR_M	0xff
3784ba3f8cd5SHariprasad Shenai #define FW_HDR_FW_VER_MAJOR_V(x) \
3785ba3f8cd5SHariprasad Shenai 	((x) << FW_HDR_FW_VER_MAJOR_S)
3786b2e1a3f0SHariprasad Shenai #define FW_HDR_FW_VER_MAJOR_G(x) \
3787b2e1a3f0SHariprasad Shenai 	(((x) >> FW_HDR_FW_VER_MAJOR_S) & FW_HDR_FW_VER_MAJOR_M)
3788b2e1a3f0SHariprasad Shenai 
3789b2e1a3f0SHariprasad Shenai #define FW_HDR_FW_VER_MINOR_S	16
3790b2e1a3f0SHariprasad Shenai #define FW_HDR_FW_VER_MINOR_M	0xff
3791ba3f8cd5SHariprasad Shenai #define FW_HDR_FW_VER_MINOR_V(x) \
3792ba3f8cd5SHariprasad Shenai 	((x) << FW_HDR_FW_VER_MINOR_S)
3793b2e1a3f0SHariprasad Shenai #define FW_HDR_FW_VER_MINOR_G(x) \
3794b2e1a3f0SHariprasad Shenai 	(((x) >> FW_HDR_FW_VER_MINOR_S) & FW_HDR_FW_VER_MINOR_M)
3795b2e1a3f0SHariprasad Shenai 
3796b2e1a3f0SHariprasad Shenai #define FW_HDR_FW_VER_MICRO_S	8
3797b2e1a3f0SHariprasad Shenai #define FW_HDR_FW_VER_MICRO_M	0xff
3798ba3f8cd5SHariprasad Shenai #define FW_HDR_FW_VER_MICRO_V(x) \
3799ba3f8cd5SHariprasad Shenai 	((x) << FW_HDR_FW_VER_MICRO_S)
3800b2e1a3f0SHariprasad Shenai #define FW_HDR_FW_VER_MICRO_G(x) \
3801b2e1a3f0SHariprasad Shenai 	(((x) >> FW_HDR_FW_VER_MICRO_S) & FW_HDR_FW_VER_MICRO_M)
3802b2e1a3f0SHariprasad Shenai 
3803b2e1a3f0SHariprasad Shenai #define FW_HDR_FW_VER_BUILD_S	0
3804b2e1a3f0SHariprasad Shenai #define FW_HDR_FW_VER_BUILD_M	0xff
3805ba3f8cd5SHariprasad Shenai #define FW_HDR_FW_VER_BUILD_V(x) \
3806ba3f8cd5SHariprasad Shenai 	((x) << FW_HDR_FW_VER_BUILD_S)
3807b2e1a3f0SHariprasad Shenai #define FW_HDR_FW_VER_BUILD_G(x) \
3808b2e1a3f0SHariprasad Shenai 	(((x) >> FW_HDR_FW_VER_BUILD_S) & FW_HDR_FW_VER_BUILD_M)
38093069ee9bSVipul Pandya 
3810b407a4a9SVipul Pandya enum fw_hdr_intfver {
3811b407a4a9SVipul Pandya 	FW_HDR_INTFVER_NIC      = 0x00,
3812b407a4a9SVipul Pandya 	FW_HDR_INTFVER_VNIC     = 0x00,
3813b407a4a9SVipul Pandya 	FW_HDR_INTFVER_OFLD     = 0x00,
3814b407a4a9SVipul Pandya 	FW_HDR_INTFVER_RI       = 0x00,
3815b407a4a9SVipul Pandya 	FW_HDR_INTFVER_ISCSIPDU = 0x00,
3816b407a4a9SVipul Pandya 	FW_HDR_INTFVER_ISCSI    = 0x00,
3817b407a4a9SVipul Pandya 	FW_HDR_INTFVER_FCOEPDU  = 0x00,
3818b407a4a9SVipul Pandya 	FW_HDR_INTFVER_FCOE     = 0x00,
3819b407a4a9SVipul Pandya };
3820b407a4a9SVipul Pandya 
382126f7cbc0SVipul Pandya enum fw_hdr_flags {
382226f7cbc0SVipul Pandya 	FW_HDR_FLAGS_RESET_HALT = 0x00000001,
382326f7cbc0SVipul Pandya };
382426f7cbc0SVipul Pandya 
382549aa284fSHariprasad Shenai /* length of the formatting string  */
382649aa284fSHariprasad Shenai #define FW_DEVLOG_FMT_LEN	192
382749aa284fSHariprasad Shenai 
382849aa284fSHariprasad Shenai /* maximum number of the formatting string parameters */
382949aa284fSHariprasad Shenai #define FW_DEVLOG_FMT_PARAMS_NUM 8
383049aa284fSHariprasad Shenai 
383149aa284fSHariprasad Shenai /* priority levels */
383249aa284fSHariprasad Shenai enum fw_devlog_level {
383349aa284fSHariprasad Shenai 	FW_DEVLOG_LEVEL_EMERG	= 0x0,
383449aa284fSHariprasad Shenai 	FW_DEVLOG_LEVEL_CRIT	= 0x1,
383549aa284fSHariprasad Shenai 	FW_DEVLOG_LEVEL_ERR	= 0x2,
383649aa284fSHariprasad Shenai 	FW_DEVLOG_LEVEL_NOTICE	= 0x3,
383749aa284fSHariprasad Shenai 	FW_DEVLOG_LEVEL_INFO	= 0x4,
383849aa284fSHariprasad Shenai 	FW_DEVLOG_LEVEL_DEBUG	= 0x5,
383949aa284fSHariprasad Shenai 	FW_DEVLOG_LEVEL_MAX	= 0x5,
384049aa284fSHariprasad Shenai };
384149aa284fSHariprasad Shenai 
384249aa284fSHariprasad Shenai /* facilities that may send a log message */
384349aa284fSHariprasad Shenai enum fw_devlog_facility {
384449aa284fSHariprasad Shenai 	FW_DEVLOG_FACILITY_CORE		= 0x00,
384549aa284fSHariprasad Shenai 	FW_DEVLOG_FACILITY_CF		= 0x01,
384649aa284fSHariprasad Shenai 	FW_DEVLOG_FACILITY_SCHED	= 0x02,
384749aa284fSHariprasad Shenai 	FW_DEVLOG_FACILITY_TIMER	= 0x04,
384849aa284fSHariprasad Shenai 	FW_DEVLOG_FACILITY_RES		= 0x06,
384949aa284fSHariprasad Shenai 	FW_DEVLOG_FACILITY_HW		= 0x08,
385049aa284fSHariprasad Shenai 	FW_DEVLOG_FACILITY_FLR		= 0x10,
385149aa284fSHariprasad Shenai 	FW_DEVLOG_FACILITY_DMAQ		= 0x12,
385249aa284fSHariprasad Shenai 	FW_DEVLOG_FACILITY_PHY		= 0x14,
385349aa284fSHariprasad Shenai 	FW_DEVLOG_FACILITY_MAC		= 0x16,
385449aa284fSHariprasad Shenai 	FW_DEVLOG_FACILITY_PORT		= 0x18,
385549aa284fSHariprasad Shenai 	FW_DEVLOG_FACILITY_VI		= 0x1A,
385649aa284fSHariprasad Shenai 	FW_DEVLOG_FACILITY_FILTER	= 0x1C,
385749aa284fSHariprasad Shenai 	FW_DEVLOG_FACILITY_ACL		= 0x1E,
385849aa284fSHariprasad Shenai 	FW_DEVLOG_FACILITY_TM		= 0x20,
385949aa284fSHariprasad Shenai 	FW_DEVLOG_FACILITY_QFC		= 0x22,
386049aa284fSHariprasad Shenai 	FW_DEVLOG_FACILITY_DCB		= 0x24,
386149aa284fSHariprasad Shenai 	FW_DEVLOG_FACILITY_ETH		= 0x26,
386249aa284fSHariprasad Shenai 	FW_DEVLOG_FACILITY_OFLD		= 0x28,
386349aa284fSHariprasad Shenai 	FW_DEVLOG_FACILITY_RI		= 0x2A,
386449aa284fSHariprasad Shenai 	FW_DEVLOG_FACILITY_ISCSI	= 0x2C,
386549aa284fSHariprasad Shenai 	FW_DEVLOG_FACILITY_FCOE		= 0x2E,
386649aa284fSHariprasad Shenai 	FW_DEVLOG_FACILITY_FOISCSI	= 0x30,
386749aa284fSHariprasad Shenai 	FW_DEVLOG_FACILITY_FOFCOE	= 0x32,
38687ef65a42SHariprasad Shenai 	FW_DEVLOG_FACILITY_CHNET        = 0x34,
38697ef65a42SHariprasad Shenai 	FW_DEVLOG_FACILITY_MAX          = 0x34,
387049aa284fSHariprasad Shenai };
387149aa284fSHariprasad Shenai 
387249aa284fSHariprasad Shenai /* log message format */
387349aa284fSHariprasad Shenai struct fw_devlog_e {
387449aa284fSHariprasad Shenai 	__be64	timestamp;
387549aa284fSHariprasad Shenai 	__be32	seqno;
387649aa284fSHariprasad Shenai 	__be16	reserved1;
387749aa284fSHariprasad Shenai 	__u8	level;
387849aa284fSHariprasad Shenai 	__u8	facility;
387949aa284fSHariprasad Shenai 	__u8	fmt[FW_DEVLOG_FMT_LEN];
388049aa284fSHariprasad Shenai 	__be32	params[FW_DEVLOG_FMT_PARAMS_NUM];
388149aa284fSHariprasad Shenai 	__be32	reserved3[4];
388249aa284fSHariprasad Shenai };
388349aa284fSHariprasad Shenai 
388449aa284fSHariprasad Shenai struct fw_devlog_cmd {
388549aa284fSHariprasad Shenai 	__be32 op_to_write;
388649aa284fSHariprasad Shenai 	__be32 retval_len16;
388749aa284fSHariprasad Shenai 	__u8   level;
388849aa284fSHariprasad Shenai 	__u8   r2[7];
388949aa284fSHariprasad Shenai 	__be32 memtype_devlog_memaddr16_devlog;
389049aa284fSHariprasad Shenai 	__be32 memsize_devlog;
389149aa284fSHariprasad Shenai 	__be32 r3[2];
389249aa284fSHariprasad Shenai };
389349aa284fSHariprasad Shenai 
389449aa284fSHariprasad Shenai #define FW_DEVLOG_CMD_MEMTYPE_DEVLOG_S		28
389549aa284fSHariprasad Shenai #define FW_DEVLOG_CMD_MEMTYPE_DEVLOG_M		0xf
389649aa284fSHariprasad Shenai #define FW_DEVLOG_CMD_MEMTYPE_DEVLOG_G(x)	\
389749aa284fSHariprasad Shenai 	(((x) >> FW_DEVLOG_CMD_MEMTYPE_DEVLOG_S) & \
389849aa284fSHariprasad Shenai 	 FW_DEVLOG_CMD_MEMTYPE_DEVLOG_M)
389949aa284fSHariprasad Shenai 
390049aa284fSHariprasad Shenai #define FW_DEVLOG_CMD_MEMADDR16_DEVLOG_S	0
390149aa284fSHariprasad Shenai #define FW_DEVLOG_CMD_MEMADDR16_DEVLOG_M	0xfffffff
390249aa284fSHariprasad Shenai #define FW_DEVLOG_CMD_MEMADDR16_DEVLOG_G(x)	\
390349aa284fSHariprasad Shenai 	(((x) >> FW_DEVLOG_CMD_MEMADDR16_DEVLOG_S) & \
390449aa284fSHariprasad Shenai 	 FW_DEVLOG_CMD_MEMADDR16_DEVLOG_M)
390549aa284fSHariprasad Shenai 
39067ef65a42SHariprasad Shenai /* P C I E   F W   P F 7   R E G I S T E R */
39077ef65a42SHariprasad Shenai 
39087ef65a42SHariprasad Shenai /* PF7 stores the Firmware Device Log parameters which allows Host Drivers to
39097ef65a42SHariprasad Shenai  * access the "devlog" which needing to contact firmware.  The encoding is
39107ef65a42SHariprasad Shenai  * mostly the same as that returned by the DEVLOG command except for the size
39117ef65a42SHariprasad Shenai  * which is encoded as the number of entries in multiples-1 of 128 here rather
39127ef65a42SHariprasad Shenai  * than the memory size as is done in the DEVLOG command.  Thus, 0 means 128
39137ef65a42SHariprasad Shenai  * and 15 means 2048.  This of course in turn constrains the allowed values
39147ef65a42SHariprasad Shenai  * for the devlog size ...
39157ef65a42SHariprasad Shenai  */
39167ef65a42SHariprasad Shenai #define PCIE_FW_PF_DEVLOG		7
39177ef65a42SHariprasad Shenai 
39187ef65a42SHariprasad Shenai #define PCIE_FW_PF_DEVLOG_NENTRIES128_S	28
39197ef65a42SHariprasad Shenai #define PCIE_FW_PF_DEVLOG_NENTRIES128_M	0xf
39207ef65a42SHariprasad Shenai #define PCIE_FW_PF_DEVLOG_NENTRIES128_V(x) \
39217ef65a42SHariprasad Shenai 	((x) << PCIE_FW_PF_DEVLOG_NENTRIES128_S)
39227ef65a42SHariprasad Shenai #define PCIE_FW_PF_DEVLOG_NENTRIES128_G(x) \
39237ef65a42SHariprasad Shenai 	(((x) >> PCIE_FW_PF_DEVLOG_NENTRIES128_S) & \
39247ef65a42SHariprasad Shenai 	 PCIE_FW_PF_DEVLOG_NENTRIES128_M)
39257ef65a42SHariprasad Shenai 
39267ef65a42SHariprasad Shenai #define PCIE_FW_PF_DEVLOG_ADDR16_S	4
39277ef65a42SHariprasad Shenai #define PCIE_FW_PF_DEVLOG_ADDR16_M	0xffffff
39287ef65a42SHariprasad Shenai #define PCIE_FW_PF_DEVLOG_ADDR16_V(x)	((x) << PCIE_FW_PF_DEVLOG_ADDR16_S)
39297ef65a42SHariprasad Shenai #define PCIE_FW_PF_DEVLOG_ADDR16_G(x) \
39307ef65a42SHariprasad Shenai 	(((x) >> PCIE_FW_PF_DEVLOG_ADDR16_S) & PCIE_FW_PF_DEVLOG_ADDR16_M)
39317ef65a42SHariprasad Shenai 
39327ef65a42SHariprasad Shenai #define PCIE_FW_PF_DEVLOG_MEMTYPE_S	0
39337ef65a42SHariprasad Shenai #define PCIE_FW_PF_DEVLOG_MEMTYPE_M	0xf
39347ef65a42SHariprasad Shenai #define PCIE_FW_PF_DEVLOG_MEMTYPE_V(x)	((x) << PCIE_FW_PF_DEVLOG_MEMTYPE_S)
39357ef65a42SHariprasad Shenai #define PCIE_FW_PF_DEVLOG_MEMTYPE_G(x) \
39367ef65a42SHariprasad Shenai 	(((x) >> PCIE_FW_PF_DEVLOG_MEMTYPE_S) & PCIE_FW_PF_DEVLOG_MEMTYPE_M)
39377ef65a42SHariprasad Shenai 
3938d6657781SHariprasad Shenai #define MAX_IMM_OFLD_TX_DATA_WR_LEN (0xff + sizeof(struct fw_ofld_tx_data_wr))
3939d6657781SHariprasad Shenai 
3940d6657781SHariprasad Shenai struct fw_crypto_lookaside_wr {
3941d6657781SHariprasad Shenai 	__be32 op_to_cctx_size;
3942d6657781SHariprasad Shenai 	__be32 len16_pkd;
3943d6657781SHariprasad Shenai 	__be32 session_id;
3944d6657781SHariprasad Shenai 	__be32 rx_chid_to_rx_q_id;
3945d6657781SHariprasad Shenai 	__be32 key_addr;
3946d6657781SHariprasad Shenai 	__be32 pld_size_hash_size;
3947d6657781SHariprasad Shenai 	__be64 cookie;
3948d6657781SHariprasad Shenai };
3949d6657781SHariprasad Shenai 
3950d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_OPCODE_S 24
3951d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_OPCODE_M 0xff
3952d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_OPCODE_V(x) \
3953d6657781SHariprasad Shenai 	((x) << FW_CRYPTO_LOOKASIDE_WR_OPCODE_S)
3954d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_OPCODE_G(x) \
3955d6657781SHariprasad Shenai 	(((x) >> FW_CRYPTO_LOOKASIDE_WR_OPCODE_S) & \
3956d6657781SHariprasad Shenai 	 FW_CRYPTO_LOOKASIDE_WR_OPCODE_M)
3957d6657781SHariprasad Shenai 
3958d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_COMPL_S 23
3959d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_COMPL_M 0x1
3960d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_COMPL_V(x) \
3961d6657781SHariprasad Shenai 	((x) << FW_CRYPTO_LOOKASIDE_WR_COMPL_S)
3962d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_COMPL_G(x) \
3963d6657781SHariprasad Shenai 	(((x) >> FW_CRYPTO_LOOKASIDE_WR_COMPL_S) & \
3964d6657781SHariprasad Shenai 	 FW_CRYPTO_LOOKASIDE_WR_COMPL_M)
3965d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_COMPL_F FW_CRYPTO_LOOKASIDE_WR_COMPL_V(1U)
3966d6657781SHariprasad Shenai 
3967d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_IMM_LEN_S 15
3968d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_IMM_LEN_M 0xff
3969d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_IMM_LEN_V(x) \
3970d6657781SHariprasad Shenai 	((x) << FW_CRYPTO_LOOKASIDE_WR_IMM_LEN_S)
3971d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_IMM_LEN_G(x) \
3972d6657781SHariprasad Shenai 	(((x) >> FW_CRYPTO_LOOKASIDE_WR_IMM_LEN_S) & \
3973d6657781SHariprasad Shenai 	 FW_CRYPTO_LOOKASIDE_WR_IMM_LEN_M)
3974d6657781SHariprasad Shenai 
3975d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_CCTX_LOC_S 5
3976d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_CCTX_LOC_M 0x3
3977d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_CCTX_LOC_V(x) \
3978d6657781SHariprasad Shenai 	((x) << FW_CRYPTO_LOOKASIDE_WR_CCTX_LOC_S)
3979d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_CCTX_LOC_G(x) \
3980d6657781SHariprasad Shenai 	(((x) >> FW_CRYPTO_LOOKASIDE_WR_CCTX_LOC_S) & \
3981d6657781SHariprasad Shenai 	 FW_CRYPTO_LOOKASIDE_WR_CCTX_LOC_M)
3982d6657781SHariprasad Shenai 
3983d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_CCTX_SIZE_S 0
3984d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_CCTX_SIZE_M 0x1f
3985d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_CCTX_SIZE_V(x) \
3986d6657781SHariprasad Shenai 	((x) << FW_CRYPTO_LOOKASIDE_WR_CCTX_SIZE_S)
3987d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_CCTX_SIZE_G(x) \
3988d6657781SHariprasad Shenai 	(((x) >> FW_CRYPTO_LOOKASIDE_WR_CCTX_SIZE_S) & \
3989d6657781SHariprasad Shenai 	 FW_CRYPTO_LOOKASIDE_WR_CCTX_SIZE_M)
3990d6657781SHariprasad Shenai 
3991d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_LEN16_S 0
3992d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_LEN16_M 0xff
3993d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_LEN16_V(x) \
3994d6657781SHariprasad Shenai 	((x) << FW_CRYPTO_LOOKASIDE_WR_LEN16_S)
3995d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_LEN16_G(x) \
3996d6657781SHariprasad Shenai 	(((x) >> FW_CRYPTO_LOOKASIDE_WR_LEN16_S) & \
3997d6657781SHariprasad Shenai 	 FW_CRYPTO_LOOKASIDE_WR_LEN16_M)
3998d6657781SHariprasad Shenai 
3999d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_RX_CHID_S 29
4000d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_RX_CHID_M 0x3
4001d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_RX_CHID_V(x) \
4002d6657781SHariprasad Shenai 	((x) << FW_CRYPTO_LOOKASIDE_WR_RX_CHID_S)
4003d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_RX_CHID_G(x) \
4004d6657781SHariprasad Shenai 	(((x) >> FW_CRYPTO_LOOKASIDE_WR_RX_CHID_S) & \
4005d6657781SHariprasad Shenai 	 FW_CRYPTO_LOOKASIDE_WR_RX_CHID_M)
4006d6657781SHariprasad Shenai 
4007d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_LCB_S  27
4008d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_LCB_M  0x3
4009d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_LCB_V(x) \
4010d6657781SHariprasad Shenai 	((x) << FW_CRYPTO_LOOKASIDE_WR_LCB_S)
4011d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_LCB_G(x) \
4012d6657781SHariprasad Shenai 	(((x) >> FW_CRYPTO_LOOKASIDE_WR_LCB_S) & FW_CRYPTO_LOOKASIDE_WR_LCB_M)
4013d6657781SHariprasad Shenai 
4014d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_PHASH_S 25
4015d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_PHASH_M 0x3
4016d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_PHASH_V(x) \
4017d6657781SHariprasad Shenai 	((x) << FW_CRYPTO_LOOKASIDE_WR_PHASH_S)
4018d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_PHASH_G(x) \
4019d6657781SHariprasad Shenai 	(((x) >> FW_CRYPTO_LOOKASIDE_WR_PHASH_S) & \
4020d6657781SHariprasad Shenai 	 FW_CRYPTO_LOOKASIDE_WR_PHASH_M)
4021d6657781SHariprasad Shenai 
4022d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_IV_S   23
4023d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_IV_M   0x3
4024d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_IV_V(x) \
4025d6657781SHariprasad Shenai 	((x) << FW_CRYPTO_LOOKASIDE_WR_IV_S)
4026d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_IV_G(x) \
4027d6657781SHariprasad Shenai 	(((x) >> FW_CRYPTO_LOOKASIDE_WR_IV_S) & FW_CRYPTO_LOOKASIDE_WR_IV_M)
4028d6657781SHariprasad Shenai 
40298a13449fSHarsh Jain #define FW_CRYPTO_LOOKASIDE_WR_FQIDX_S   15
40308a13449fSHarsh Jain #define FW_CRYPTO_LOOKASIDE_WR_FQIDX_M   0xff
40318a13449fSHarsh Jain #define FW_CRYPTO_LOOKASIDE_WR_FQIDX_V(x) \
40328a13449fSHarsh Jain 	((x) << FW_CRYPTO_LOOKASIDE_WR_FQIDX_S)
40338a13449fSHarsh Jain #define FW_CRYPTO_LOOKASIDE_WR_FQIDX_G(x) \
40348a13449fSHarsh Jain 	(((x) >> FW_CRYPTO_LOOKASIDE_WR_FQIDX_S) & \
40358a13449fSHarsh Jain 	 FW_CRYPTO_LOOKASIDE_WR_FQIDX_M)
40368a13449fSHarsh Jain 
4037d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_TX_CH_S 10
4038d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_TX_CH_M 0x3
4039d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_TX_CH_V(x) \
4040d6657781SHariprasad Shenai 	((x) << FW_CRYPTO_LOOKASIDE_WR_TX_CH_S)
4041d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_TX_CH_G(x) \
4042d6657781SHariprasad Shenai 	(((x) >> FW_CRYPTO_LOOKASIDE_WR_TX_CH_S) & \
4043d6657781SHariprasad Shenai 	 FW_CRYPTO_LOOKASIDE_WR_TX_CH_M)
4044d6657781SHariprasad Shenai 
4045d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_RX_Q_ID_S 0
4046d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_RX_Q_ID_M 0x3ff
4047d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_RX_Q_ID_V(x) \
4048d6657781SHariprasad Shenai 	((x) << FW_CRYPTO_LOOKASIDE_WR_RX_Q_ID_S)
4049d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_RX_Q_ID_G(x) \
4050d6657781SHariprasad Shenai 	(((x) >> FW_CRYPTO_LOOKASIDE_WR_RX_Q_ID_S) & \
4051d6657781SHariprasad Shenai 	 FW_CRYPTO_LOOKASIDE_WR_RX_Q_ID_M)
4052d6657781SHariprasad Shenai 
4053d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_PLD_SIZE_S 24
4054d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_PLD_SIZE_M 0xff
4055d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_PLD_SIZE_V(x) \
4056d6657781SHariprasad Shenai 	((x) << FW_CRYPTO_LOOKASIDE_WR_PLD_SIZE_S)
4057d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_PLD_SIZE_G(x) \
4058d6657781SHariprasad Shenai 	(((x) >> FW_CRYPTO_LOOKASIDE_WR_PLD_SIZE_S) & \
4059d6657781SHariprasad Shenai 	 FW_CRYPTO_LOOKASIDE_WR_PLD_SIZE_M)
4060d6657781SHariprasad Shenai 
4061d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_HASH_SIZE_S 17
4062d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_HASH_SIZE_M 0x7f
4063d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_HASH_SIZE_V(x) \
4064d6657781SHariprasad Shenai 	((x) << FW_CRYPTO_LOOKASIDE_WR_HASH_SIZE_S)
4065d6657781SHariprasad Shenai #define FW_CRYPTO_LOOKASIDE_WR_HASH_SIZE_G(x) \
4066d6657781SHariprasad Shenai 	(((x) >> FW_CRYPTO_LOOKASIDE_WR_HASH_SIZE_S) & \
4067d6657781SHariprasad Shenai 	 FW_CRYPTO_LOOKASIDE_WR_HASH_SIZE_M)
4068d6657781SHariprasad Shenai 
4069e1087089SAtul Gupta struct fw_tlstx_data_wr {
4070e1087089SAtul Gupta 	__be32 op_to_immdlen;
4071e1087089SAtul Gupta 	__be32 flowid_len16;
4072e1087089SAtul Gupta 	__be32 plen;
4073e1087089SAtul Gupta 	__be32 lsodisable_to_flags;
4074e1087089SAtul Gupta 	__be32 r5;
4075e1087089SAtul Gupta 	__be32 ctxloc_to_exp;
4076e1087089SAtul Gupta 	__be16 mfs;
4077e1087089SAtul Gupta 	__be16 adjustedplen_pkd;
4078e1087089SAtul Gupta 	__be16 expinplenmax_pkd;
4079e1087089SAtul Gupta 	u8   pdusinplenmax_pkd;
4080e1087089SAtul Gupta 	u8   r10;
4081e1087089SAtul Gupta };
4082e1087089SAtul Gupta 
4083e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_OPCODE_S       24
4084e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_OPCODE_M       0xff
4085e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_OPCODE_V(x)    ((x) << FW_TLSTX_DATA_WR_OPCODE_S)
4086e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_OPCODE_G(x)    \
4087e1087089SAtul Gupta 	(((x) >> FW_TLSTX_DATA_WR_OPCODE_S) & FW_TLSTX_DATA_WR_OPCODE_M)
4088e1087089SAtul Gupta 
4089e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_COMPL_S        21
4090e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_COMPL_M        0x1
4091e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_COMPL_V(x)     ((x) << FW_TLSTX_DATA_WR_COMPL_S)
4092e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_COMPL_G(x)     \
4093e1087089SAtul Gupta 	(((x) >> FW_TLSTX_DATA_WR_COMPL_S) & FW_TLSTX_DATA_WR_COMPL_M)
4094e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_COMPL_F        FW_TLSTX_DATA_WR_COMPL_V(1U)
4095e1087089SAtul Gupta 
4096e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_IMMDLEN_S      0
4097e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_IMMDLEN_M      0xff
4098e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_IMMDLEN_V(x)   ((x) << FW_TLSTX_DATA_WR_IMMDLEN_S)
4099e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_IMMDLEN_G(x)   \
4100e1087089SAtul Gupta 	(((x) >> FW_TLSTX_DATA_WR_IMMDLEN_S) & FW_TLSTX_DATA_WR_IMMDLEN_M)
4101e1087089SAtul Gupta 
4102e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_FLOWID_S       8
4103e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_FLOWID_M       0xfffff
4104e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_FLOWID_V(x)    ((x) << FW_TLSTX_DATA_WR_FLOWID_S)
4105e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_FLOWID_G(x)    \
4106e1087089SAtul Gupta 	(((x) >> FW_TLSTX_DATA_WR_FLOWID_S) & FW_TLSTX_DATA_WR_FLOWID_M)
4107e1087089SAtul Gupta 
4108e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_LEN16_S        0
4109e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_LEN16_M        0xff
4110e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_LEN16_V(x)     ((x) << FW_TLSTX_DATA_WR_LEN16_S)
4111e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_LEN16_G(x)     \
4112e1087089SAtul Gupta 	(((x) >> FW_TLSTX_DATA_WR_LEN16_S) & FW_TLSTX_DATA_WR_LEN16_M)
4113e1087089SAtul Gupta 
4114e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_LSODISABLE_S   31
4115e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_LSODISABLE_M   0x1
4116e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_LSODISABLE_V(x) \
4117e1087089SAtul Gupta 	((x) << FW_TLSTX_DATA_WR_LSODISABLE_S)
4118e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_LSODISABLE_G(x) \
4119e1087089SAtul Gupta 	(((x) >> FW_TLSTX_DATA_WR_LSODISABLE_S) & FW_TLSTX_DATA_WR_LSODISABLE_M)
4120e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_LSODISABLE_F   FW_TLSTX_DATA_WR_LSODISABLE_V(1U)
4121e1087089SAtul Gupta 
4122e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_ALIGNPLD_S     30
4123e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_ALIGNPLD_M     0x1
4124e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_ALIGNPLD_V(x)  ((x) << FW_TLSTX_DATA_WR_ALIGNPLD_S)
4125e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_ALIGNPLD_G(x)  \
4126e1087089SAtul Gupta 	(((x) >> FW_TLSTX_DATA_WR_ALIGNPLD_S) & FW_TLSTX_DATA_WR_ALIGNPLD_M)
4127e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_ALIGNPLD_F     FW_TLSTX_DATA_WR_ALIGNPLD_V(1U)
4128e1087089SAtul Gupta 
4129e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_ALIGNPLDSHOVE_S 29
4130e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_ALIGNPLDSHOVE_M 0x1
4131e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_ALIGNPLDSHOVE_V(x) \
4132e1087089SAtul Gupta 	((x) << FW_TLSTX_DATA_WR_ALIGNPLDSHOVE_S)
4133e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_ALIGNPLDSHOVE_G(x) \
4134e1087089SAtul Gupta 	(((x) >> FW_TLSTX_DATA_WR_ALIGNPLDSHOVE_S) & \
4135e1087089SAtul Gupta 	FW_TLSTX_DATA_WR_ALIGNPLDSHOVE_M)
4136e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_ALIGNPLDSHOVE_F FW_TLSTX_DATA_WR_ALIGNPLDSHOVE_V(1U)
4137e1087089SAtul Gupta 
4138e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_FLAGS_S        0
4139e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_FLAGS_M        0xfffffff
4140e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_FLAGS_V(x)     ((x) << FW_TLSTX_DATA_WR_FLAGS_S)
4141e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_FLAGS_G(x)     \
4142e1087089SAtul Gupta 	(((x) >> FW_TLSTX_DATA_WR_FLAGS_S) & FW_TLSTX_DATA_WR_FLAGS_M)
4143e1087089SAtul Gupta 
4144e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_CTXLOC_S       30
4145e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_CTXLOC_M       0x3
4146e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_CTXLOC_V(x)    ((x) << FW_TLSTX_DATA_WR_CTXLOC_S)
4147e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_CTXLOC_G(x)    \
4148e1087089SAtul Gupta 	(((x) >> FW_TLSTX_DATA_WR_CTXLOC_S) & FW_TLSTX_DATA_WR_CTXLOC_M)
4149e1087089SAtul Gupta 
4150e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_IVDSGL_S       29
4151e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_IVDSGL_M       0x1
4152e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_IVDSGL_V(x)    ((x) << FW_TLSTX_DATA_WR_IVDSGL_S)
4153e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_IVDSGL_G(x)    \
4154e1087089SAtul Gupta 	(((x) >> FW_TLSTX_DATA_WR_IVDSGL_S) & FW_TLSTX_DATA_WR_IVDSGL_M)
4155e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_IVDSGL_F       FW_TLSTX_DATA_WR_IVDSGL_V(1U)
4156e1087089SAtul Gupta 
4157e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_KEYSIZE_S      24
4158e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_KEYSIZE_M      0x1f
4159e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_KEYSIZE_V(x)   ((x) << FW_TLSTX_DATA_WR_KEYSIZE_S)
4160e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_KEYSIZE_G(x)   \
4161e1087089SAtul Gupta 	(((x) >> FW_TLSTX_DATA_WR_KEYSIZE_S) & FW_TLSTX_DATA_WR_KEYSIZE_M)
4162e1087089SAtul Gupta 
4163e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_NUMIVS_S       14
4164e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_NUMIVS_M       0xff
4165e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_NUMIVS_V(x)    ((x) << FW_TLSTX_DATA_WR_NUMIVS_S)
4166e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_NUMIVS_G(x)    \
4167e1087089SAtul Gupta 	(((x) >> FW_TLSTX_DATA_WR_NUMIVS_S) & FW_TLSTX_DATA_WR_NUMIVS_M)
4168e1087089SAtul Gupta 
4169e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_EXP_S          0
4170e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_EXP_M          0x3fff
4171e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_EXP_V(x)       ((x) << FW_TLSTX_DATA_WR_EXP_S)
4172e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_EXP_G(x)       \
4173e1087089SAtul Gupta 	(((x) >> FW_TLSTX_DATA_WR_EXP_S) & FW_TLSTX_DATA_WR_EXP_M)
4174e1087089SAtul Gupta 
4175e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_ADJUSTEDPLEN_S 1
4176e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_ADJUSTEDPLEN_V(x) \
4177e1087089SAtul Gupta 	((x) << FW_TLSTX_DATA_WR_ADJUSTEDPLEN_S)
4178e1087089SAtul Gupta 
4179e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_EXPINPLENMAX_S 4
4180e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_EXPINPLENMAX_V(x) \
4181e1087089SAtul Gupta 	((x) << FW_TLSTX_DATA_WR_EXPINPLENMAX_S)
4182e1087089SAtul Gupta 
4183e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_PDUSINPLENMAX_S 2
4184e1087089SAtul Gupta #define FW_TLSTX_DATA_WR_PDUSINPLENMAX_V(x) \
4185e1087089SAtul Gupta 	((x) << FW_TLSTX_DATA_WR_PDUSINPLENMAX_S)
4186e1087089SAtul Gupta 
4187f7917c00SJeff Kirsher #endif /* _T4FW_INTERFACE_H_ */
4188