xref: /dpdk/drivers/net/cxgbe/base/t4fw_interface.h (revision 6d7d651bbc157bc5a66158dca4a120df96e2b3c8)
12aa5c722SRahul Lakkireddy /* SPDX-License-Identifier: BSD-3-Clause
22aa5c722SRahul Lakkireddy  * Copyright(c) 2014-2018 Chelsio Communications.
33bd122eeSRahul Lakkireddy  * All rights reserved.
43bd122eeSRahul Lakkireddy  */
53bd122eeSRahul Lakkireddy 
63bd122eeSRahul Lakkireddy #ifndef _T4FW_INTERFACE_H_
73bd122eeSRahul Lakkireddy #define _T4FW_INTERFACE_H_
83bd122eeSRahul Lakkireddy 
93bd122eeSRahul Lakkireddy /******************************************************************************
103bd122eeSRahul Lakkireddy  *   R E T U R N   V A L U E S
113bd122eeSRahul Lakkireddy  ********************************/
123bd122eeSRahul Lakkireddy 
133bd122eeSRahul Lakkireddy enum fw_retval {
143bd122eeSRahul Lakkireddy 	FW_SUCCESS		= 0,	/* completed successfully */
153bd122eeSRahul Lakkireddy 	FW_EPERM		= 1,	/* operation not permitted */
163bd122eeSRahul Lakkireddy 	FW_ENOENT		= 2,	/* no such file or directory */
173bd122eeSRahul Lakkireddy 	FW_EIO			= 5,	/* input/output error; hw bad */
183bd122eeSRahul Lakkireddy 	FW_ENOEXEC		= 8,	/* exec format error; inv microcode */
193bd122eeSRahul Lakkireddy 	FW_EAGAIN		= 11,	/* try again */
203bd122eeSRahul Lakkireddy 	FW_ENOMEM		= 12,	/* out of memory */
213bd122eeSRahul Lakkireddy 	FW_EFAULT		= 14,	/* bad address; fw bad */
223bd122eeSRahul Lakkireddy 	FW_EBUSY		= 16,	/* resource busy */
233bd122eeSRahul Lakkireddy 	FW_EEXIST		= 17,	/* file exists */
243bd122eeSRahul Lakkireddy 	FW_ENODEV		= 19,	/* no such device */
253bd122eeSRahul Lakkireddy 	FW_EINVAL		= 22,	/* invalid argument */
263bd122eeSRahul Lakkireddy 	FW_ENOSPC		= 28,	/* no space left on device */
273bd122eeSRahul Lakkireddy 	FW_ENOSYS		= 38,	/* functionality not implemented */
283bd122eeSRahul Lakkireddy 	FW_ENODATA		= 61,	/* no data available */
293bd122eeSRahul Lakkireddy 	FW_EPROTO		= 71,	/* protocol error */
303bd122eeSRahul Lakkireddy 	FW_EADDRINUSE		= 98,	/* address already in use */
313bd122eeSRahul Lakkireddy 	FW_EADDRNOTAVAIL	= 99,	/* cannot assigned requested address */
323bd122eeSRahul Lakkireddy 	FW_ENETDOWN		= 100,	/* network is down */
333bd122eeSRahul Lakkireddy 	FW_ENETUNREACH		= 101,	/* network is unreachable */
343bd122eeSRahul Lakkireddy 	FW_ENOBUFS		= 105,	/* no buffer space available */
353bd122eeSRahul Lakkireddy 	FW_ETIMEDOUT		= 110,	/* timeout */
363bd122eeSRahul Lakkireddy 	FW_EINPROGRESS		= 115,	/* fw internal */
373bd122eeSRahul Lakkireddy };
383bd122eeSRahul Lakkireddy 
393bd122eeSRahul Lakkireddy /******************************************************************************
403bd122eeSRahul Lakkireddy  *   M E M O R Y   T Y P E s
413bd122eeSRahul Lakkireddy  ******************************/
423bd122eeSRahul Lakkireddy 
433bd122eeSRahul Lakkireddy enum fw_memtype {
443bd122eeSRahul Lakkireddy 	FW_MEMTYPE_EDC0		= 0x0,
453bd122eeSRahul Lakkireddy 	FW_MEMTYPE_EDC1		= 0x1,
463bd122eeSRahul Lakkireddy 	FW_MEMTYPE_EXTMEM	= 0x2,
473bd122eeSRahul Lakkireddy 	FW_MEMTYPE_FLASH	= 0x4,
483bd122eeSRahul Lakkireddy 	FW_MEMTYPE_INTERNAL	= 0x5,
493bd122eeSRahul Lakkireddy 	FW_MEMTYPE_EXTMEM1	= 0x6,
503bd122eeSRahul Lakkireddy };
513bd122eeSRahul Lakkireddy 
523bd122eeSRahul Lakkireddy /******************************************************************************
533bd122eeSRahul Lakkireddy  *   W O R K   R E Q U E S T s
543bd122eeSRahul Lakkireddy  ********************************/
553bd122eeSRahul Lakkireddy 
563bd122eeSRahul Lakkireddy enum fw_wr_opcodes {
579eb2c9a4SShagun Agrawal 	FW_FILTER_WR		= 0x02,
5841dc98b0SShagun Agrawal 	FW_ULPTX_WR		= 0x04,
59af44a577SShagun Agrawal 	FW_TP_WR		= 0x05,
603bd122eeSRahul Lakkireddy 	FW_ETH_TX_PKT_WR	= 0x08,
613bd122eeSRahul Lakkireddy 	FW_ETH_TX_PKTS_WR	= 0x09,
62880ead4eSKumar Sanghvi 	FW_ETH_TX_PKT_VM_WR	= 0x11,
63880ead4eSKumar Sanghvi 	FW_ETH_TX_PKTS_VM_WR	= 0x12,
6448f523f6SRahul Lakkireddy 	FW_FILTER2_WR		= 0x77,
656c280962SRahul Lakkireddy 	FW_ETH_TX_PKTS2_WR      = 0x78,
663bd122eeSRahul Lakkireddy };
673bd122eeSRahul Lakkireddy 
683bd122eeSRahul Lakkireddy /*
693bd122eeSRahul Lakkireddy  * Generic work request header flit0
703bd122eeSRahul Lakkireddy  */
713bd122eeSRahul Lakkireddy struct fw_wr_hdr {
723bd122eeSRahul Lakkireddy 	__be32 hi;
733bd122eeSRahul Lakkireddy 	__be32 lo;
743bd122eeSRahul Lakkireddy };
753bd122eeSRahul Lakkireddy 
763bd122eeSRahul Lakkireddy /* work request opcode (hi)
773bd122eeSRahul Lakkireddy  */
783bd122eeSRahul Lakkireddy #define S_FW_WR_OP		24
793bd122eeSRahul Lakkireddy #define M_FW_WR_OP		0xff
803bd122eeSRahul Lakkireddy #define V_FW_WR_OP(x)		((x) << S_FW_WR_OP)
813bd122eeSRahul Lakkireddy #define G_FW_WR_OP(x)		(((x) >> S_FW_WR_OP) & M_FW_WR_OP)
823bd122eeSRahul Lakkireddy 
8341dc98b0SShagun Agrawal /* atomic flag (hi) - firmware encapsulates CPLs in CPL_BARRIER
8441dc98b0SShagun Agrawal  */
8541dc98b0SShagun Agrawal #define S_FW_WR_ATOMIC		23
8641dc98b0SShagun Agrawal #define V_FW_WR_ATOMIC(x)	((x) << S_FW_WR_ATOMIC)
8741dc98b0SShagun Agrawal 
883bd122eeSRahul Lakkireddy /* work request immediate data length (hi)
893bd122eeSRahul Lakkireddy  */
903bd122eeSRahul Lakkireddy #define S_FW_WR_IMMDLEN	0
913bd122eeSRahul Lakkireddy #define M_FW_WR_IMMDLEN	0xff
923bd122eeSRahul Lakkireddy #define V_FW_WR_IMMDLEN(x)	((x) << S_FW_WR_IMMDLEN)
933bd122eeSRahul Lakkireddy #define G_FW_WR_IMMDLEN(x)	\
943bd122eeSRahul Lakkireddy 	(((x) >> S_FW_WR_IMMDLEN) & M_FW_WR_IMMDLEN)
953bd122eeSRahul Lakkireddy 
963bd122eeSRahul Lakkireddy /* egress queue status update to egress queue status entry (lo)
973bd122eeSRahul Lakkireddy  */
983bd122eeSRahul Lakkireddy #define S_FW_WR_EQUEQ		30
993bd122eeSRahul Lakkireddy #define M_FW_WR_EQUEQ		0x1
1003bd122eeSRahul Lakkireddy #define V_FW_WR_EQUEQ(x)	((x) << S_FW_WR_EQUEQ)
1013bd122eeSRahul Lakkireddy #define G_FW_WR_EQUEQ(x)	(((x) >> S_FW_WR_EQUEQ) & M_FW_WR_EQUEQ)
1023bd122eeSRahul Lakkireddy #define F_FW_WR_EQUEQ		V_FW_WR_EQUEQ(1U)
1033bd122eeSRahul Lakkireddy 
104af44a577SShagun Agrawal /* flow context identifier (lo)
105af44a577SShagun Agrawal  */
106af44a577SShagun Agrawal #define S_FW_WR_FLOWID		8
107af44a577SShagun Agrawal #define V_FW_WR_FLOWID(x)	((x) << S_FW_WR_FLOWID)
108af44a577SShagun Agrawal 
1093bd122eeSRahul Lakkireddy /* length in units of 16-bytes (lo)
1103bd122eeSRahul Lakkireddy  */
1113bd122eeSRahul Lakkireddy #define S_FW_WR_LEN16		0
1123bd122eeSRahul Lakkireddy #define M_FW_WR_LEN16		0xff
1133bd122eeSRahul Lakkireddy #define V_FW_WR_LEN16(x)	((x) << S_FW_WR_LEN16)
1143bd122eeSRahul Lakkireddy #define G_FW_WR_LEN16(x)	(((x) >> S_FW_WR_LEN16) & M_FW_WR_LEN16)
1153bd122eeSRahul Lakkireddy 
1163bd122eeSRahul Lakkireddy struct fw_eth_tx_pkt_wr {
1173bd122eeSRahul Lakkireddy 	__be32 op_immdlen;
1183bd122eeSRahul Lakkireddy 	__be32 equiq_to_len16;
1193bd122eeSRahul Lakkireddy 	__be64 r3;
1203bd122eeSRahul Lakkireddy };
1213bd122eeSRahul Lakkireddy 
1223bd122eeSRahul Lakkireddy #define S_FW_ETH_TX_PKT_WR_IMMDLEN	0
1233bd122eeSRahul Lakkireddy #define M_FW_ETH_TX_PKT_WR_IMMDLEN	0x1ff
1243bd122eeSRahul Lakkireddy #define V_FW_ETH_TX_PKT_WR_IMMDLEN(x)	((x) << S_FW_ETH_TX_PKT_WR_IMMDLEN)
1253bd122eeSRahul Lakkireddy #define G_FW_ETH_TX_PKT_WR_IMMDLEN(x)	\
1263bd122eeSRahul Lakkireddy 	(((x) >> S_FW_ETH_TX_PKT_WR_IMMDLEN) & M_FW_ETH_TX_PKT_WR_IMMDLEN)
1273bd122eeSRahul Lakkireddy 
1283bd122eeSRahul Lakkireddy struct fw_eth_tx_pkts_wr {
1293bd122eeSRahul Lakkireddy 	__be32 op_pkd;
1303bd122eeSRahul Lakkireddy 	__be32 equiq_to_len16;
1313bd122eeSRahul Lakkireddy 	__be32 r3;
1323bd122eeSRahul Lakkireddy 	__be16 plen;
1333bd122eeSRahul Lakkireddy 	__u8   npkt;
1343bd122eeSRahul Lakkireddy 	__u8   type;
1353bd122eeSRahul Lakkireddy };
1363bd122eeSRahul Lakkireddy 
137880ead4eSKumar Sanghvi struct fw_eth_tx_pkt_vm_wr {
138880ead4eSKumar Sanghvi 	__be32 op_immdlen;
139880ead4eSKumar Sanghvi 	__be32 equiq_to_len16;
140880ead4eSKumar Sanghvi 	__be32 r3[2];
141880ead4eSKumar Sanghvi 	__u8   ethmacdst[6];
142880ead4eSKumar Sanghvi 	__u8   ethmacsrc[6];
143880ead4eSKumar Sanghvi 	__be16 ethtype;
144880ead4eSKumar Sanghvi 	__be16 vlantci;
145880ead4eSKumar Sanghvi };
146880ead4eSKumar Sanghvi 
147880ead4eSKumar Sanghvi struct fw_eth_tx_pkts_vm_wr {
148880ead4eSKumar Sanghvi 	__be32 op_pkd;
149880ead4eSKumar Sanghvi 	__be32 equiq_to_len16;
150880ead4eSKumar Sanghvi 	__be32 r3;
151880ead4eSKumar Sanghvi 	__be16 plen;
152880ead4eSKumar Sanghvi 	__u8   npkt;
153880ead4eSKumar Sanghvi 	__u8   r4;
154880ead4eSKumar Sanghvi 	__u8   ethmacdst[6];
155880ead4eSKumar Sanghvi 	__u8   ethmacsrc[6];
156880ead4eSKumar Sanghvi 	__be16 ethtype;
157880ead4eSKumar Sanghvi 	__be16 vlantci;
158880ead4eSKumar Sanghvi };
159880ead4eSKumar Sanghvi 
1609eb2c9a4SShagun Agrawal /* filter wr reply code in cookie in CPL_SET_TCB_RPL */
1619eb2c9a4SShagun Agrawal enum fw_filter_wr_cookie {
1629eb2c9a4SShagun Agrawal 	FW_FILTER_WR_SUCCESS,
1639eb2c9a4SShagun Agrawal 	FW_FILTER_WR_FLT_ADDED,
1649eb2c9a4SShagun Agrawal 	FW_FILTER_WR_FLT_DELETED,
1659eb2c9a4SShagun Agrawal 	FW_FILTER_WR_SMT_TBL_FULL,
1669eb2c9a4SShagun Agrawal 	FW_FILTER_WR_EINVAL,
1679eb2c9a4SShagun Agrawal };
1689eb2c9a4SShagun Agrawal 
16948f523f6SRahul Lakkireddy struct fw_filter2_wr {
1709eb2c9a4SShagun Agrawal 	__be32 op_pkd;
1719eb2c9a4SShagun Agrawal 	__be32 len16_pkd;
1729eb2c9a4SShagun Agrawal 	__be64 r3;
1739eb2c9a4SShagun Agrawal 	__be32 tid_to_iq;
1749eb2c9a4SShagun Agrawal 	__be32 del_filter_to_l2tix;
1759eb2c9a4SShagun Agrawal 	__be16 ethtype;
1769eb2c9a4SShagun Agrawal 	__be16 ethtypem;
1779eb2c9a4SShagun Agrawal 	__u8   frag_to_ovlan_vldm;
1789eb2c9a4SShagun Agrawal 	__u8   smac_sel;
1799eb2c9a4SShagun Agrawal 	__be16 rx_chan_rx_rpl_iq;
1809eb2c9a4SShagun Agrawal 	__be32 maci_to_matchtypem;
1819eb2c9a4SShagun Agrawal 	__u8   ptcl;
1829eb2c9a4SShagun Agrawal 	__u8   ptclm;
1839eb2c9a4SShagun Agrawal 	__u8   ttyp;
1849eb2c9a4SShagun Agrawal 	__u8   ttypm;
1859eb2c9a4SShagun Agrawal 	__be16 ivlan;
1869eb2c9a4SShagun Agrawal 	__be16 ivlanm;
1879eb2c9a4SShagun Agrawal 	__be16 ovlan;
1889eb2c9a4SShagun Agrawal 	__be16 ovlanm;
1899eb2c9a4SShagun Agrawal 	__u8   lip[16];
1909eb2c9a4SShagun Agrawal 	__u8   lipm[16];
1919eb2c9a4SShagun Agrawal 	__u8   fip[16];
1929eb2c9a4SShagun Agrawal 	__u8   fipm[16];
1939eb2c9a4SShagun Agrawal 	__be16 lp;
1949eb2c9a4SShagun Agrawal 	__be16 lpm;
1959eb2c9a4SShagun Agrawal 	__be16 fp;
1969eb2c9a4SShagun Agrawal 	__be16 fpm;
1979eb2c9a4SShagun Agrawal 	__be16 r7;
1989eb2c9a4SShagun Agrawal 	__u8   sma[6];
19948f523f6SRahul Lakkireddy 	__be16 r8;
20048f523f6SRahul Lakkireddy 	__u8   filter_type_swapmac;
20148f523f6SRahul Lakkireddy 	__u8   natmode_to_ulp_type;
20248f523f6SRahul Lakkireddy 	__be16 newlport;
20348f523f6SRahul Lakkireddy 	__be16 newfport;
20448f523f6SRahul Lakkireddy 	__u8   newlip[16];
20548f523f6SRahul Lakkireddy 	__u8   newfip[16];
20648f523f6SRahul Lakkireddy 	__be32 natseqcheck;
20748f523f6SRahul Lakkireddy 	__be32 r9;
20848f523f6SRahul Lakkireddy 	__be64 r10;
20948f523f6SRahul Lakkireddy 	__be64 r11;
21048f523f6SRahul Lakkireddy 	__be64 r12;
21148f523f6SRahul Lakkireddy 	__be64 r13;
2129eb2c9a4SShagun Agrawal };
2139eb2c9a4SShagun Agrawal 
2149eb2c9a4SShagun Agrawal #define S_FW_FILTER_WR_TID	12
2159eb2c9a4SShagun Agrawal #define V_FW_FILTER_WR_TID(x)	((x) << S_FW_FILTER_WR_TID)
2169eb2c9a4SShagun Agrawal 
2179eb2c9a4SShagun Agrawal #define S_FW_FILTER_WR_RQTYPE		11
2189eb2c9a4SShagun Agrawal #define V_FW_FILTER_WR_RQTYPE(x)	((x) << S_FW_FILTER_WR_RQTYPE)
2199eb2c9a4SShagun Agrawal 
2209eb2c9a4SShagun Agrawal #define S_FW_FILTER_WR_NOREPLY		10
2219eb2c9a4SShagun Agrawal #define V_FW_FILTER_WR_NOREPLY(x)	((x) << S_FW_FILTER_WR_NOREPLY)
2229eb2c9a4SShagun Agrawal 
2239eb2c9a4SShagun Agrawal #define S_FW_FILTER_WR_IQ	0
2249eb2c9a4SShagun Agrawal #define V_FW_FILTER_WR_IQ(x)	((x) << S_FW_FILTER_WR_IQ)
2259eb2c9a4SShagun Agrawal 
2269eb2c9a4SShagun Agrawal #define S_FW_FILTER_WR_DEL_FILTER	31
2279eb2c9a4SShagun Agrawal #define V_FW_FILTER_WR_DEL_FILTER(x)	((x) << S_FW_FILTER_WR_DEL_FILTER)
2289eb2c9a4SShagun Agrawal #define F_FW_FILTER_WR_DEL_FILTER	V_FW_FILTER_WR_DEL_FILTER(1U)
2299eb2c9a4SShagun Agrawal 
2309eb2c9a4SShagun Agrawal #define S_FW_FILTER_WR_RPTTID		25
2319eb2c9a4SShagun Agrawal #define V_FW_FILTER_WR_RPTTID(x)	((x) << S_FW_FILTER_WR_RPTTID)
2329eb2c9a4SShagun Agrawal 
2339eb2c9a4SShagun Agrawal #define S_FW_FILTER_WR_DROP	24
2349eb2c9a4SShagun Agrawal #define V_FW_FILTER_WR_DROP(x)	((x) << S_FW_FILTER_WR_DROP)
2359eb2c9a4SShagun Agrawal 
2369eb2c9a4SShagun Agrawal #define S_FW_FILTER_WR_DIRSTEER		23
2379eb2c9a4SShagun Agrawal #define V_FW_FILTER_WR_DIRSTEER(x)	((x) << S_FW_FILTER_WR_DIRSTEER)
2389eb2c9a4SShagun Agrawal 
2399eb2c9a4SShagun Agrawal #define S_FW_FILTER_WR_MASKHASH		22
2409eb2c9a4SShagun Agrawal #define V_FW_FILTER_WR_MASKHASH(x)	((x) << S_FW_FILTER_WR_MASKHASH)
2419eb2c9a4SShagun Agrawal 
2429eb2c9a4SShagun Agrawal #define S_FW_FILTER_WR_DIRSTEERHASH	21
2439eb2c9a4SShagun Agrawal #define V_FW_FILTER_WR_DIRSTEERHASH(x)	((x) << S_FW_FILTER_WR_DIRSTEERHASH)
2449eb2c9a4SShagun Agrawal 
2459eb2c9a4SShagun Agrawal #define S_FW_FILTER_WR_LPBK	20
2469eb2c9a4SShagun Agrawal #define V_FW_FILTER_WR_LPBK(x)	((x) << S_FW_FILTER_WR_LPBK)
2479eb2c9a4SShagun Agrawal 
2489eb2c9a4SShagun Agrawal #define S_FW_FILTER_WR_DMAC	19
2499eb2c9a4SShagun Agrawal #define V_FW_FILTER_WR_DMAC(x)	((x) << S_FW_FILTER_WR_DMAC)
2509eb2c9a4SShagun Agrawal 
251993541b2SKarra Satwik #define S_FW_FILTER_WR_SMAC     18
252993541b2SKarra Satwik #define V_FW_FILTER_WR_SMAC(x)  ((x) << S_FW_FILTER_WR_SMAC)
253993541b2SKarra Satwik 
2549eb2c9a4SShagun Agrawal #define S_FW_FILTER_WR_INSVLAN		17
2559eb2c9a4SShagun Agrawal #define V_FW_FILTER_WR_INSVLAN(x)	((x) << S_FW_FILTER_WR_INSVLAN)
2569eb2c9a4SShagun Agrawal 
2579eb2c9a4SShagun Agrawal #define S_FW_FILTER_WR_RMVLAN		16
2589eb2c9a4SShagun Agrawal #define V_FW_FILTER_WR_RMVLAN(x)	((x) << S_FW_FILTER_WR_RMVLAN)
2599eb2c9a4SShagun Agrawal 
2609eb2c9a4SShagun Agrawal #define S_FW_FILTER_WR_HITCNTS		15
2619eb2c9a4SShagun Agrawal #define V_FW_FILTER_WR_HITCNTS(x)	((x) << S_FW_FILTER_WR_HITCNTS)
2629eb2c9a4SShagun Agrawal 
2639eb2c9a4SShagun Agrawal #define S_FW_FILTER_WR_TXCHAN		13
2649eb2c9a4SShagun Agrawal #define V_FW_FILTER_WR_TXCHAN(x)	((x) << S_FW_FILTER_WR_TXCHAN)
2659eb2c9a4SShagun Agrawal 
2669eb2c9a4SShagun Agrawal #define S_FW_FILTER_WR_PRIO	12
2679eb2c9a4SShagun Agrawal #define V_FW_FILTER_WR_PRIO(x)	((x) << S_FW_FILTER_WR_PRIO)
2689eb2c9a4SShagun Agrawal 
2699eb2c9a4SShagun Agrawal #define S_FW_FILTER_WR_L2TIX	0
2709eb2c9a4SShagun Agrawal #define V_FW_FILTER_WR_L2TIX(x)	((x) << S_FW_FILTER_WR_L2TIX)
2719eb2c9a4SShagun Agrawal 
2729eb2c9a4SShagun Agrawal #define S_FW_FILTER_WR_FRAG	7
2739eb2c9a4SShagun Agrawal #define V_FW_FILTER_WR_FRAG(x)	((x) << S_FW_FILTER_WR_FRAG)
2749eb2c9a4SShagun Agrawal 
2759eb2c9a4SShagun Agrawal #define S_FW_FILTER_WR_FRAGM	6
2769eb2c9a4SShagun Agrawal #define V_FW_FILTER_WR_FRAGM(x)	((x) << S_FW_FILTER_WR_FRAGM)
2779eb2c9a4SShagun Agrawal 
2789eb2c9a4SShagun Agrawal #define S_FW_FILTER_WR_IVLAN_VLD	5
2799eb2c9a4SShagun Agrawal #define V_FW_FILTER_WR_IVLAN_VLD(x)	((x) << S_FW_FILTER_WR_IVLAN_VLD)
2809eb2c9a4SShagun Agrawal 
2819eb2c9a4SShagun Agrawal #define S_FW_FILTER_WR_OVLAN_VLD	4
2829eb2c9a4SShagun Agrawal #define V_FW_FILTER_WR_OVLAN_VLD(x)	((x) << S_FW_FILTER_WR_OVLAN_VLD)
2839eb2c9a4SShagun Agrawal 
2849eb2c9a4SShagun Agrawal #define S_FW_FILTER_WR_IVLAN_VLDM	3
2859eb2c9a4SShagun Agrawal #define V_FW_FILTER_WR_IVLAN_VLDM(x)	((x) << S_FW_FILTER_WR_IVLAN_VLDM)
2869eb2c9a4SShagun Agrawal 
2879eb2c9a4SShagun Agrawal #define S_FW_FILTER_WR_OVLAN_VLDM	2
2889eb2c9a4SShagun Agrawal #define V_FW_FILTER_WR_OVLAN_VLDM(x)	((x) << S_FW_FILTER_WR_OVLAN_VLDM)
2899eb2c9a4SShagun Agrawal 
2909eb2c9a4SShagun Agrawal #define S_FW_FILTER_WR_RX_CHAN		15
2919eb2c9a4SShagun Agrawal #define V_FW_FILTER_WR_RX_CHAN(x)	((x) << S_FW_FILTER_WR_RX_CHAN)
2929eb2c9a4SShagun Agrawal 
2939eb2c9a4SShagun Agrawal #define S_FW_FILTER_WR_RX_RPL_IQ	0
2949eb2c9a4SShagun Agrawal #define V_FW_FILTER_WR_RX_RPL_IQ(x)	((x) << S_FW_FILTER_WR_RX_RPL_IQ)
2959eb2c9a4SShagun Agrawal 
2969eb2c9a4SShagun Agrawal #define S_FW_FILTER_WR_MACI	23
2979eb2c9a4SShagun Agrawal #define V_FW_FILTER_WR_MACI(x)	((x) << S_FW_FILTER_WR_MACI)
2989eb2c9a4SShagun Agrawal 
2999eb2c9a4SShagun Agrawal #define S_FW_FILTER_WR_MACIM	14
3009eb2c9a4SShagun Agrawal #define V_FW_FILTER_WR_MACIM(x)	((x) << S_FW_FILTER_WR_MACIM)
3019eb2c9a4SShagun Agrawal 
3029eb2c9a4SShagun Agrawal #define S_FW_FILTER_WR_FCOE	13
3039eb2c9a4SShagun Agrawal #define V_FW_FILTER_WR_FCOE(x)	((x) << S_FW_FILTER_WR_FCOE)
3049eb2c9a4SShagun Agrawal 
3059eb2c9a4SShagun Agrawal #define S_FW_FILTER_WR_FCOEM	12
3069eb2c9a4SShagun Agrawal #define V_FW_FILTER_WR_FCOEM(x)	((x) << S_FW_FILTER_WR_FCOEM)
3079eb2c9a4SShagun Agrawal 
3089eb2c9a4SShagun Agrawal #define S_FW_FILTER_WR_PORT	9
3099eb2c9a4SShagun Agrawal #define V_FW_FILTER_WR_PORT(x)	((x) << S_FW_FILTER_WR_PORT)
3109eb2c9a4SShagun Agrawal 
3119eb2c9a4SShagun Agrawal #define S_FW_FILTER_WR_PORTM	6
3129eb2c9a4SShagun Agrawal #define V_FW_FILTER_WR_PORTM(x)	((x) << S_FW_FILTER_WR_PORTM)
3139eb2c9a4SShagun Agrawal 
3149eb2c9a4SShagun Agrawal #define S_FW_FILTER_WR_MATCHTYPE	3
3159eb2c9a4SShagun Agrawal #define V_FW_FILTER_WR_MATCHTYPE(x)	((x) << S_FW_FILTER_WR_MATCHTYPE)
3169eb2c9a4SShagun Agrawal 
3179eb2c9a4SShagun Agrawal #define S_FW_FILTER_WR_MATCHTYPEM	0
3189eb2c9a4SShagun Agrawal #define V_FW_FILTER_WR_MATCHTYPEM(x)	((x) << S_FW_FILTER_WR_MATCHTYPEM)
3199eb2c9a4SShagun Agrawal 
320f683a520SRahul Lakkireddy #define S_FW_FILTER2_WR_SWAPMAC		0
321f683a520SRahul Lakkireddy #define V_FW_FILTER2_WR_SWAPMAC(x)	((x) << S_FW_FILTER2_WR_SWAPMAC)
322f683a520SRahul Lakkireddy 
32348f523f6SRahul Lakkireddy #define S_FW_FILTER2_WR_NATMODE		5
32448f523f6SRahul Lakkireddy #define V_FW_FILTER2_WR_NATMODE(x)	((x) << S_FW_FILTER2_WR_NATMODE)
32548f523f6SRahul Lakkireddy 
32648f523f6SRahul Lakkireddy #define S_FW_FILTER2_WR_ULP_TYPE	0
32748f523f6SRahul Lakkireddy #define V_FW_FILTER2_WR_ULP_TYPE(x)	((x) << S_FW_FILTER2_WR_ULP_TYPE)
32848f523f6SRahul Lakkireddy 
3293bd122eeSRahul Lakkireddy /******************************************************************************
3303bd122eeSRahul Lakkireddy  *  C O M M A N D s
3313bd122eeSRahul Lakkireddy  *********************/
3323bd122eeSRahul Lakkireddy 
3333bd122eeSRahul Lakkireddy /*
3343bd122eeSRahul Lakkireddy  * The maximum length of time, in miliseconds, that we expect any firmware
3353bd122eeSRahul Lakkireddy  * command to take to execute and return a reply to the host.  The RESET
3363bd122eeSRahul Lakkireddy  * and INITIALIZE commands can take a fair amount of time to execute but
3373bd122eeSRahul Lakkireddy  * most execute in far less time than this maximum.  This constant is used
3383bd122eeSRahul Lakkireddy  * by host software to determine how long to wait for a firmware command
3393bd122eeSRahul Lakkireddy  * reply before declaring the firmware as dead/unreachable ...
3403bd122eeSRahul Lakkireddy  */
3413bd122eeSRahul Lakkireddy #define FW_CMD_MAX_TIMEOUT	10000
3423bd122eeSRahul Lakkireddy 
3433bd122eeSRahul Lakkireddy /*
3443bd122eeSRahul Lakkireddy  * If a host driver does a HELLO and discovers that there's already a MASTER
3453bd122eeSRahul Lakkireddy  * selected, we may have to wait for that MASTER to finish issuing RESET,
3463bd122eeSRahul Lakkireddy  * configuration and INITIALIZE commands.  Also, there's a possibility that
3473bd122eeSRahul Lakkireddy  * our own HELLO may get lost if it happens right as the MASTER is issuign a
3483bd122eeSRahul Lakkireddy  * RESET command, so we need to be willing to make a few retries of our HELLO.
3493bd122eeSRahul Lakkireddy  */
3503bd122eeSRahul Lakkireddy #define FW_CMD_HELLO_TIMEOUT	(3 * FW_CMD_MAX_TIMEOUT)
3513bd122eeSRahul Lakkireddy #define FW_CMD_HELLO_RETRIES	3
3523bd122eeSRahul Lakkireddy 
3533bd122eeSRahul Lakkireddy enum fw_cmd_opcodes {
35408e21af9SKumar Sanghvi 	FW_LDST_CMD		       = 0x01,
3553bd122eeSRahul Lakkireddy 	FW_RESET_CMD                   = 0x03,
3563bd122eeSRahul Lakkireddy 	FW_HELLO_CMD                   = 0x04,
3573bd122eeSRahul Lakkireddy 	FW_BYE_CMD                     = 0x05,
3583bd122eeSRahul Lakkireddy 	FW_INITIALIZE_CMD              = 0x06,
3593bd122eeSRahul Lakkireddy 	FW_CAPS_CONFIG_CMD             = 0x07,
3603bd122eeSRahul Lakkireddy 	FW_PARAMS_CMD                  = 0x08,
361d2adea17SKumar Sanghvi 	FW_PFVF_CMD		       = 0x09,
3623bd122eeSRahul Lakkireddy 	FW_IQ_CMD                      = 0x10,
3633bd122eeSRahul Lakkireddy 	FW_EQ_ETH_CMD                  = 0x12,
3643a3aaabcSShagun Agrawal 	FW_EQ_CTRL_CMD                 = 0x13,
3653bd122eeSRahul Lakkireddy 	FW_VI_CMD                      = 0x14,
3663bd122eeSRahul Lakkireddy 	FW_VI_MAC_CMD                  = 0x15,
3673bd122eeSRahul Lakkireddy 	FW_VI_RXMODE_CMD               = 0x16,
3683bd122eeSRahul Lakkireddy 	FW_VI_ENABLE_CMD               = 0x17,
369a0a344a8SKumar Sanghvi 	FW_VI_STATS_CMD		       = 0x1a,
3703bd122eeSRahul Lakkireddy 	FW_PORT_CMD                    = 0x1b,
3713bd122eeSRahul Lakkireddy 	FW_RSS_IND_TBL_CMD             = 0x20,
372bfcb257dSKumar Sanghvi 	FW_RSS_GLB_CONFIG_CMD	       = 0x22,
3733bd122eeSRahul Lakkireddy 	FW_RSS_VI_CONFIG_CMD           = 0x23,
3743f2c1e20SShagun Agrawal 	FW_CLIP_CMD                    = 0x28,
3753bd122eeSRahul Lakkireddy 	FW_DEBUG_CMD                   = 0x81,
3763bd122eeSRahul Lakkireddy };
3773bd122eeSRahul Lakkireddy 
378d2adea17SKumar Sanghvi enum fw_cmd_cap {
379d2adea17SKumar Sanghvi 	FW_CMD_CAP_PORT		= 0x04,
380d2adea17SKumar Sanghvi };
381d2adea17SKumar Sanghvi 
3823bd122eeSRahul Lakkireddy /*
3833bd122eeSRahul Lakkireddy  * Generic command header flit0
3843bd122eeSRahul Lakkireddy  */
3853bd122eeSRahul Lakkireddy struct fw_cmd_hdr {
3863bd122eeSRahul Lakkireddy 	__be32 hi;
3873bd122eeSRahul Lakkireddy 	__be32 lo;
3883bd122eeSRahul Lakkireddy };
3893bd122eeSRahul Lakkireddy 
3903bd122eeSRahul Lakkireddy #define S_FW_CMD_OP		24
3913bd122eeSRahul Lakkireddy #define M_FW_CMD_OP		0xff
3923bd122eeSRahul Lakkireddy #define V_FW_CMD_OP(x)		((x) << S_FW_CMD_OP)
3933bd122eeSRahul Lakkireddy #define G_FW_CMD_OP(x)		(((x) >> S_FW_CMD_OP) & M_FW_CMD_OP)
3943bd122eeSRahul Lakkireddy 
3953bd122eeSRahul Lakkireddy #define S_FW_CMD_REQUEST	23
3963bd122eeSRahul Lakkireddy #define M_FW_CMD_REQUEST	0x1
3973bd122eeSRahul Lakkireddy #define V_FW_CMD_REQUEST(x)	((x) << S_FW_CMD_REQUEST)
3983bd122eeSRahul Lakkireddy #define G_FW_CMD_REQUEST(x)	(((x) >> S_FW_CMD_REQUEST) & M_FW_CMD_REQUEST)
3993bd122eeSRahul Lakkireddy #define F_FW_CMD_REQUEST	V_FW_CMD_REQUEST(1U)
4003bd122eeSRahul Lakkireddy 
4013bd122eeSRahul Lakkireddy #define S_FW_CMD_READ		22
4023bd122eeSRahul Lakkireddy #define M_FW_CMD_READ		0x1
4033bd122eeSRahul Lakkireddy #define V_FW_CMD_READ(x)	((x) << S_FW_CMD_READ)
4043bd122eeSRahul Lakkireddy #define G_FW_CMD_READ(x)	(((x) >> S_FW_CMD_READ) & M_FW_CMD_READ)
4053bd122eeSRahul Lakkireddy #define F_FW_CMD_READ		V_FW_CMD_READ(1U)
4063bd122eeSRahul Lakkireddy 
4073bd122eeSRahul Lakkireddy #define S_FW_CMD_WRITE		21
4083bd122eeSRahul Lakkireddy #define M_FW_CMD_WRITE		0x1
4093bd122eeSRahul Lakkireddy #define V_FW_CMD_WRITE(x)	((x) << S_FW_CMD_WRITE)
4103bd122eeSRahul Lakkireddy #define G_FW_CMD_WRITE(x)	(((x) >> S_FW_CMD_WRITE) & M_FW_CMD_WRITE)
4113bd122eeSRahul Lakkireddy #define F_FW_CMD_WRITE		V_FW_CMD_WRITE(1U)
4123bd122eeSRahul Lakkireddy 
4133bd122eeSRahul Lakkireddy #define S_FW_CMD_EXEC		20
4143bd122eeSRahul Lakkireddy #define M_FW_CMD_EXEC		0x1
4153bd122eeSRahul Lakkireddy #define V_FW_CMD_EXEC(x)	((x) << S_FW_CMD_EXEC)
4163bd122eeSRahul Lakkireddy #define G_FW_CMD_EXEC(x)	(((x) >> S_FW_CMD_EXEC) & M_FW_CMD_EXEC)
4173bd122eeSRahul Lakkireddy #define F_FW_CMD_EXEC		V_FW_CMD_EXEC(1U)
4183bd122eeSRahul Lakkireddy 
4193bd122eeSRahul Lakkireddy #define S_FW_CMD_RETVAL		8
4203bd122eeSRahul Lakkireddy #define M_FW_CMD_RETVAL		0xff
4213bd122eeSRahul Lakkireddy #define V_FW_CMD_RETVAL(x)	((x) << S_FW_CMD_RETVAL)
4223bd122eeSRahul Lakkireddy #define G_FW_CMD_RETVAL(x)	(((x) >> S_FW_CMD_RETVAL) & M_FW_CMD_RETVAL)
4233bd122eeSRahul Lakkireddy 
4243bd122eeSRahul Lakkireddy #define S_FW_CMD_LEN16		0
4253bd122eeSRahul Lakkireddy #define M_FW_CMD_LEN16		0xff
4263bd122eeSRahul Lakkireddy #define V_FW_CMD_LEN16(x)	((x) << S_FW_CMD_LEN16)
4273bd122eeSRahul Lakkireddy #define G_FW_CMD_LEN16(x)	(((x) >> S_FW_CMD_LEN16) & M_FW_CMD_LEN16)
4283bd122eeSRahul Lakkireddy 
4293bd122eeSRahul Lakkireddy #define FW_LEN16(fw_struct) V_FW_CMD_LEN16(sizeof(fw_struct) / 16)
4303bd122eeSRahul Lakkireddy 
43108e21af9SKumar Sanghvi /* address spaces
43208e21af9SKumar Sanghvi  */
43308e21af9SKumar Sanghvi enum fw_ldst_addrspc {
43408e21af9SKumar Sanghvi 	FW_LDST_ADDRSPC_TP_PIO    = 0x0010,
43508e21af9SKumar Sanghvi };
43608e21af9SKumar Sanghvi 
43708e21af9SKumar Sanghvi struct fw_ldst_cmd {
43808e21af9SKumar Sanghvi 	__be32 op_to_addrspace;
43908e21af9SKumar Sanghvi 	__be32 cycles_to_len16;
44008e21af9SKumar Sanghvi 	union fw_ldst {
44108e21af9SKumar Sanghvi 		struct fw_ldst_addrval {
44208e21af9SKumar Sanghvi 			__be32 addr;
44308e21af9SKumar Sanghvi 			__be32 val;
44408e21af9SKumar Sanghvi 		} addrval;
44508e21af9SKumar Sanghvi 		struct fw_ldst_idctxt {
44608e21af9SKumar Sanghvi 			__be32 physid;
44708e21af9SKumar Sanghvi 			__be32 msg_ctxtflush;
44808e21af9SKumar Sanghvi 			__be32 ctxt_data7;
44908e21af9SKumar Sanghvi 			__be32 ctxt_data6;
45008e21af9SKumar Sanghvi 			__be32 ctxt_data5;
45108e21af9SKumar Sanghvi 			__be32 ctxt_data4;
45208e21af9SKumar Sanghvi 			__be32 ctxt_data3;
45308e21af9SKumar Sanghvi 			__be32 ctxt_data2;
45408e21af9SKumar Sanghvi 			__be32 ctxt_data1;
45508e21af9SKumar Sanghvi 			__be32 ctxt_data0;
45608e21af9SKumar Sanghvi 		} idctxt;
45708e21af9SKumar Sanghvi 		struct fw_ldst_mdio {
45808e21af9SKumar Sanghvi 			__be16 paddr_mmd;
45908e21af9SKumar Sanghvi 			__be16 raddr;
46008e21af9SKumar Sanghvi 			__be16 vctl;
46108e21af9SKumar Sanghvi 			__be16 rval;
46208e21af9SKumar Sanghvi 		} mdio;
46308e21af9SKumar Sanghvi 		struct fw_ldst_mps {
46408e21af9SKumar Sanghvi 			__be16 fid_ctl;
46508e21af9SKumar Sanghvi 			__be16 rplcpf_pkd;
46608e21af9SKumar Sanghvi 			__be32 rplc127_96;
46708e21af9SKumar Sanghvi 			__be32 rplc95_64;
46808e21af9SKumar Sanghvi 			__be32 rplc63_32;
46908e21af9SKumar Sanghvi 			__be32 rplc31_0;
47008e21af9SKumar Sanghvi 			__be32 atrb;
47108e21af9SKumar Sanghvi 			__be16 vlan[16];
47208e21af9SKumar Sanghvi 		} mps;
47308e21af9SKumar Sanghvi 		struct fw_ldst_func {
47408e21af9SKumar Sanghvi 			__u8   access_ctl;
47508e21af9SKumar Sanghvi 			__u8   mod_index;
47608e21af9SKumar Sanghvi 			__be16 ctl_id;
47708e21af9SKumar Sanghvi 			__be32 offset;
47808e21af9SKumar Sanghvi 			__be64 data0;
47908e21af9SKumar Sanghvi 			__be64 data1;
48008e21af9SKumar Sanghvi 		} func;
48108e21af9SKumar Sanghvi 		struct fw_ldst_pcie {
48208e21af9SKumar Sanghvi 			__u8   ctrl_to_fn;
48308e21af9SKumar Sanghvi 			__u8   bnum;
48408e21af9SKumar Sanghvi 			__u8   r;
48508e21af9SKumar Sanghvi 			__u8   ext_r;
48608e21af9SKumar Sanghvi 			__u8   select_naccess;
48708e21af9SKumar Sanghvi 			__u8   pcie_fn;
48808e21af9SKumar Sanghvi 			__be16 nset_pkd;
48908e21af9SKumar Sanghvi 			__be32 data[12];
49008e21af9SKumar Sanghvi 		} pcie;
49108e21af9SKumar Sanghvi 		struct fw_ldst_i2c_deprecated {
49208e21af9SKumar Sanghvi 			__u8   pid_pkd;
49308e21af9SKumar Sanghvi 			__u8   base;
49408e21af9SKumar Sanghvi 			__u8   boffset;
49508e21af9SKumar Sanghvi 			__u8   data;
49608e21af9SKumar Sanghvi 			__be32 r9;
49708e21af9SKumar Sanghvi 		} i2c_deprecated;
49808e21af9SKumar Sanghvi 		struct fw_ldst_i2c {
49908e21af9SKumar Sanghvi 			__u8   pid;
50008e21af9SKumar Sanghvi 			__u8   did;
50108e21af9SKumar Sanghvi 			__u8   boffset;
50208e21af9SKumar Sanghvi 			__u8   blen;
50308e21af9SKumar Sanghvi 			__be32 r9;
50408e21af9SKumar Sanghvi 			__u8   data[48];
50508e21af9SKumar Sanghvi 		} i2c;
50608e21af9SKumar Sanghvi 		struct fw_ldst_le {
50708e21af9SKumar Sanghvi 			__be32 index;
50808e21af9SKumar Sanghvi 			__be32 r9;
50908e21af9SKumar Sanghvi 			__u8   val[33];
51008e21af9SKumar Sanghvi 			__u8   r11[7];
51108e21af9SKumar Sanghvi 		} le;
51208e21af9SKumar Sanghvi 	} u;
51308e21af9SKumar Sanghvi };
51408e21af9SKumar Sanghvi 
51508e21af9SKumar Sanghvi #define S_FW_LDST_CMD_ADDRSPACE         0
51608e21af9SKumar Sanghvi #define M_FW_LDST_CMD_ADDRSPACE         0xff
51708e21af9SKumar Sanghvi #define V_FW_LDST_CMD_ADDRSPACE(x)      ((x) << S_FW_LDST_CMD_ADDRSPACE)
51808e21af9SKumar Sanghvi 
5193bd122eeSRahul Lakkireddy struct fw_reset_cmd {
5203bd122eeSRahul Lakkireddy 	__be32 op_to_write;
5213bd122eeSRahul Lakkireddy 	__be32 retval_len16;
5223bd122eeSRahul Lakkireddy 	__be32 val;
5233bd122eeSRahul Lakkireddy 	__be32 halt_pkd;
5243bd122eeSRahul Lakkireddy };
5253bd122eeSRahul Lakkireddy 
5263bd122eeSRahul Lakkireddy #define S_FW_RESET_CMD_HALT	31
5273bd122eeSRahul Lakkireddy #define M_FW_RESET_CMD_HALT	0x1
5283bd122eeSRahul Lakkireddy #define V_FW_RESET_CMD_HALT(x)	((x) << S_FW_RESET_CMD_HALT)
5293bd122eeSRahul Lakkireddy #define G_FW_RESET_CMD_HALT(x)	\
5303bd122eeSRahul Lakkireddy 	(((x) >> S_FW_RESET_CMD_HALT) & M_FW_RESET_CMD_HALT)
5313bd122eeSRahul Lakkireddy #define F_FW_RESET_CMD_HALT	V_FW_RESET_CMD_HALT(1U)
5323bd122eeSRahul Lakkireddy 
5333bd122eeSRahul Lakkireddy enum {
5343bd122eeSRahul Lakkireddy 	FW_HELLO_CMD_STAGE_OS		= 0,
5353bd122eeSRahul Lakkireddy };
5363bd122eeSRahul Lakkireddy 
5373bd122eeSRahul Lakkireddy struct fw_hello_cmd {
5383bd122eeSRahul Lakkireddy 	__be32 op_to_write;
5393bd122eeSRahul Lakkireddy 	__be32 retval_len16;
5403bd122eeSRahul Lakkireddy 	__be32 err_to_clearinit;
5413bd122eeSRahul Lakkireddy 	__be32 fwrev;
5423bd122eeSRahul Lakkireddy };
5433bd122eeSRahul Lakkireddy 
5443bd122eeSRahul Lakkireddy #define S_FW_HELLO_CMD_ERR	31
5453bd122eeSRahul Lakkireddy #define M_FW_HELLO_CMD_ERR	0x1
5463bd122eeSRahul Lakkireddy #define V_FW_HELLO_CMD_ERR(x)	((x) << S_FW_HELLO_CMD_ERR)
5473bd122eeSRahul Lakkireddy #define G_FW_HELLO_CMD_ERR(x)	\
5483bd122eeSRahul Lakkireddy 	(((x) >> S_FW_HELLO_CMD_ERR) & M_FW_HELLO_CMD_ERR)
5493bd122eeSRahul Lakkireddy #define F_FW_HELLO_CMD_ERR	V_FW_HELLO_CMD_ERR(1U)
5503bd122eeSRahul Lakkireddy 
5513bd122eeSRahul Lakkireddy #define S_FW_HELLO_CMD_INIT	30
5523bd122eeSRahul Lakkireddy #define M_FW_HELLO_CMD_INIT	0x1
5533bd122eeSRahul Lakkireddy #define V_FW_HELLO_CMD_INIT(x)	((x) << S_FW_HELLO_CMD_INIT)
5543bd122eeSRahul Lakkireddy #define G_FW_HELLO_CMD_INIT(x)	\
5553bd122eeSRahul Lakkireddy 	(((x) >> S_FW_HELLO_CMD_INIT) & M_FW_HELLO_CMD_INIT)
5563bd122eeSRahul Lakkireddy #define F_FW_HELLO_CMD_INIT	V_FW_HELLO_CMD_INIT(1U)
5573bd122eeSRahul Lakkireddy 
5583bd122eeSRahul Lakkireddy #define S_FW_HELLO_CMD_MASTERDIS	29
5593bd122eeSRahul Lakkireddy #define M_FW_HELLO_CMD_MASTERDIS	0x1
5603bd122eeSRahul Lakkireddy #define V_FW_HELLO_CMD_MASTERDIS(x)	((x) << S_FW_HELLO_CMD_MASTERDIS)
5613bd122eeSRahul Lakkireddy #define G_FW_HELLO_CMD_MASTERDIS(x)	\
5623bd122eeSRahul Lakkireddy 	(((x) >> S_FW_HELLO_CMD_MASTERDIS) & M_FW_HELLO_CMD_MASTERDIS)
5633bd122eeSRahul Lakkireddy #define F_FW_HELLO_CMD_MASTERDIS	V_FW_HELLO_CMD_MASTERDIS(1U)
5643bd122eeSRahul Lakkireddy 
5653bd122eeSRahul Lakkireddy #define S_FW_HELLO_CMD_MASTERFORCE	28
5663bd122eeSRahul Lakkireddy #define M_FW_HELLO_CMD_MASTERFORCE	0x1
5673bd122eeSRahul Lakkireddy #define V_FW_HELLO_CMD_MASTERFORCE(x)	((x) << S_FW_HELLO_CMD_MASTERFORCE)
5683bd122eeSRahul Lakkireddy #define G_FW_HELLO_CMD_MASTERFORCE(x)	\
5693bd122eeSRahul Lakkireddy 	(((x) >> S_FW_HELLO_CMD_MASTERFORCE) & M_FW_HELLO_CMD_MASTERFORCE)
5703bd122eeSRahul Lakkireddy #define F_FW_HELLO_CMD_MASTERFORCE	V_FW_HELLO_CMD_MASTERFORCE(1U)
5713bd122eeSRahul Lakkireddy 
5723bd122eeSRahul Lakkireddy #define S_FW_HELLO_CMD_MBMASTER		24
5733bd122eeSRahul Lakkireddy #define M_FW_HELLO_CMD_MBMASTER		0xf
5743bd122eeSRahul Lakkireddy #define V_FW_HELLO_CMD_MBMASTER(x)	((x) << S_FW_HELLO_CMD_MBMASTER)
5753bd122eeSRahul Lakkireddy #define G_FW_HELLO_CMD_MBMASTER(x)	\
5763bd122eeSRahul Lakkireddy 	(((x) >> S_FW_HELLO_CMD_MBMASTER) & M_FW_HELLO_CMD_MBMASTER)
5773bd122eeSRahul Lakkireddy 
5783bd122eeSRahul Lakkireddy #define S_FW_HELLO_CMD_MBASYNCNOT	20
5793bd122eeSRahul Lakkireddy #define M_FW_HELLO_CMD_MBASYNCNOT	0x7
5803bd122eeSRahul Lakkireddy #define V_FW_HELLO_CMD_MBASYNCNOT(x)	((x) << S_FW_HELLO_CMD_MBASYNCNOT)
5813bd122eeSRahul Lakkireddy #define G_FW_HELLO_CMD_MBASYNCNOT(x)	\
5823bd122eeSRahul Lakkireddy 	(((x) >> S_FW_HELLO_CMD_MBASYNCNOT) & M_FW_HELLO_CMD_MBASYNCNOT)
5833bd122eeSRahul Lakkireddy 
5843bd122eeSRahul Lakkireddy #define S_FW_HELLO_CMD_STAGE	17
5853bd122eeSRahul Lakkireddy #define M_FW_HELLO_CMD_STAGE	0x7
5863bd122eeSRahul Lakkireddy #define V_FW_HELLO_CMD_STAGE(x)	((x) << S_FW_HELLO_CMD_STAGE)
5873bd122eeSRahul Lakkireddy #define G_FW_HELLO_CMD_STAGE(x)	\
5883bd122eeSRahul Lakkireddy 	(((x) >> S_FW_HELLO_CMD_STAGE) & M_FW_HELLO_CMD_STAGE)
5893bd122eeSRahul Lakkireddy 
5903bd122eeSRahul Lakkireddy #define S_FW_HELLO_CMD_CLEARINIT	16
5913bd122eeSRahul Lakkireddy #define M_FW_HELLO_CMD_CLEARINIT	0x1
5923bd122eeSRahul Lakkireddy #define V_FW_HELLO_CMD_CLEARINIT(x)	((x) << S_FW_HELLO_CMD_CLEARINIT)
5933bd122eeSRahul Lakkireddy #define G_FW_HELLO_CMD_CLEARINIT(x)	\
5943bd122eeSRahul Lakkireddy 	(((x) >> S_FW_HELLO_CMD_CLEARINIT) & M_FW_HELLO_CMD_CLEARINIT)
5953bd122eeSRahul Lakkireddy #define F_FW_HELLO_CMD_CLEARINIT	V_FW_HELLO_CMD_CLEARINIT(1U)
5963bd122eeSRahul Lakkireddy 
5973bd122eeSRahul Lakkireddy struct fw_bye_cmd {
5983bd122eeSRahul Lakkireddy 	__be32 op_to_write;
5993bd122eeSRahul Lakkireddy 	__be32 retval_len16;
6003bd122eeSRahul Lakkireddy 	__be64 r3;
6013bd122eeSRahul Lakkireddy };
6023bd122eeSRahul Lakkireddy 
6033bd122eeSRahul Lakkireddy struct fw_initialize_cmd {
6043bd122eeSRahul Lakkireddy 	__be32 op_to_write;
6053bd122eeSRahul Lakkireddy 	__be32 retval_len16;
6063bd122eeSRahul Lakkireddy 	__be64 r3;
6073bd122eeSRahul Lakkireddy };
6083bd122eeSRahul Lakkireddy 
6093bd122eeSRahul Lakkireddy enum fw_caps_config_nic {
6103bd122eeSRahul Lakkireddy 	FW_CAPS_CONFIG_NIC_HASHFILTER	= 0x00000020,
6113bd122eeSRahul Lakkireddy 	FW_CAPS_CONFIG_NIC_ETHOFLD	= 0x00000040,
6123bd122eeSRahul Lakkireddy };
6133bd122eeSRahul Lakkireddy 
6143bd122eeSRahul Lakkireddy enum fw_memtype_cf {
6153bd122eeSRahul Lakkireddy 	FW_MEMTYPE_CF_FLASH		= FW_MEMTYPE_FLASH,
6163bd122eeSRahul Lakkireddy };
6173bd122eeSRahul Lakkireddy 
6183bd122eeSRahul Lakkireddy struct fw_caps_config_cmd {
6193bd122eeSRahul Lakkireddy 	__be32 op_to_write;
6203bd122eeSRahul Lakkireddy 	__be32 cfvalid_to_len16;
6213bd122eeSRahul Lakkireddy 	__be32 r2;
6223bd122eeSRahul Lakkireddy 	__be32 hwmbitmap;
6233bd122eeSRahul Lakkireddy 	__be16 nbmcaps;
6243bd122eeSRahul Lakkireddy 	__be16 linkcaps;
6253bd122eeSRahul Lakkireddy 	__be16 switchcaps;
6263bd122eeSRahul Lakkireddy 	__be16 r3;
6273bd122eeSRahul Lakkireddy 	__be16 niccaps;
6283bd122eeSRahul Lakkireddy 	__be16 toecaps;
6293bd122eeSRahul Lakkireddy 	__be16 rdmacaps;
6302e40fdc2SKarra Satwik 	__be16 cryptocaps;
6313bd122eeSRahul Lakkireddy 	__be16 iscsicaps;
6323bd122eeSRahul Lakkireddy 	__be16 fcoecaps;
6333bd122eeSRahul Lakkireddy 	__be32 cfcsum;
6343bd122eeSRahul Lakkireddy 	__be32 finiver;
6353bd122eeSRahul Lakkireddy 	__be32 finicsum;
6363bd122eeSRahul Lakkireddy };
6373bd122eeSRahul Lakkireddy 
6383bd122eeSRahul Lakkireddy #define S_FW_CAPS_CONFIG_CMD_CFVALID	27
6393bd122eeSRahul Lakkireddy #define M_FW_CAPS_CONFIG_CMD_CFVALID	0x1
6403bd122eeSRahul Lakkireddy #define V_FW_CAPS_CONFIG_CMD_CFVALID(x)	((x) << S_FW_CAPS_CONFIG_CMD_CFVALID)
6413bd122eeSRahul Lakkireddy #define G_FW_CAPS_CONFIG_CMD_CFVALID(x)	\
6423bd122eeSRahul Lakkireddy 	(((x) >> S_FW_CAPS_CONFIG_CMD_CFVALID) & M_FW_CAPS_CONFIG_CMD_CFVALID)
6433bd122eeSRahul Lakkireddy #define F_FW_CAPS_CONFIG_CMD_CFVALID	V_FW_CAPS_CONFIG_CMD_CFVALID(1U)
6443bd122eeSRahul Lakkireddy 
6453bd122eeSRahul Lakkireddy #define S_FW_CAPS_CONFIG_CMD_MEMTYPE_CF		24
6463bd122eeSRahul Lakkireddy #define M_FW_CAPS_CONFIG_CMD_MEMTYPE_CF		0x7
6473bd122eeSRahul Lakkireddy #define V_FW_CAPS_CONFIG_CMD_MEMTYPE_CF(x)	\
6483bd122eeSRahul Lakkireddy 	((x) << S_FW_CAPS_CONFIG_CMD_MEMTYPE_CF)
6493bd122eeSRahul Lakkireddy #define G_FW_CAPS_CONFIG_CMD_MEMTYPE_CF(x)	\
6503bd122eeSRahul Lakkireddy 	(((x) >> S_FW_CAPS_CONFIG_CMD_MEMTYPE_CF) & \
6513bd122eeSRahul Lakkireddy 	 M_FW_CAPS_CONFIG_CMD_MEMTYPE_CF)
6523bd122eeSRahul Lakkireddy 
6533bd122eeSRahul Lakkireddy #define S_FW_CAPS_CONFIG_CMD_MEMADDR64K_CF	16
6543bd122eeSRahul Lakkireddy #define M_FW_CAPS_CONFIG_CMD_MEMADDR64K_CF	0xff
6553bd122eeSRahul Lakkireddy #define V_FW_CAPS_CONFIG_CMD_MEMADDR64K_CF(x)	\
6563bd122eeSRahul Lakkireddy 	((x) << S_FW_CAPS_CONFIG_CMD_MEMADDR64K_CF)
6573bd122eeSRahul Lakkireddy #define G_FW_CAPS_CONFIG_CMD_MEMADDR64K_CF(x)	\
6583bd122eeSRahul Lakkireddy 	(((x) >> S_FW_CAPS_CONFIG_CMD_MEMADDR64K_CF) & \
6593bd122eeSRahul Lakkireddy 	 M_FW_CAPS_CONFIG_CMD_MEMADDR64K_CF)
6603bd122eeSRahul Lakkireddy 
6613bd122eeSRahul Lakkireddy /*
6623bd122eeSRahul Lakkireddy  * params command mnemonics
6633bd122eeSRahul Lakkireddy  */
6643bd122eeSRahul Lakkireddy enum fw_params_mnem {
6653bd122eeSRahul Lakkireddy 	FW_PARAMS_MNEM_DEV		= 1,	/* device params */
6663bd122eeSRahul Lakkireddy 	FW_PARAMS_MNEM_PFVF		= 2,	/* function params */
6675e59e39aSKumar Sanghvi 	FW_PARAMS_MNEM_REG		= 3,	/* limited register access */
6683bd122eeSRahul Lakkireddy 	FW_PARAMS_MNEM_DMAQ		= 4,	/* dma queue params */
6693bd122eeSRahul Lakkireddy };
6703bd122eeSRahul Lakkireddy 
6713bd122eeSRahul Lakkireddy /*
6723bd122eeSRahul Lakkireddy  * device parameters
6733bd122eeSRahul Lakkireddy  */
674629315fbSKarra Satwik 
675629315fbSKarra Satwik #define S_FW_PARAMS_PARAM_FILTER_MODE 16
676629315fbSKarra Satwik #define M_FW_PARAMS_PARAM_FILTER_MODE 0xffff
677536db938SKarra Satwik #define V_FW_PARAMS_PARAM_FILTER_MODE(x)          \
678536db938SKarra Satwik 	((x) << S_FW_PARAMS_PARAM_FILTER_MODE)
679629315fbSKarra Satwik #define G_FW_PARAMS_PARAM_FILTER_MODE(x)          \
680629315fbSKarra Satwik 	(((x) >> S_FW_PARAMS_PARAM_FILTER_MODE) & \
681629315fbSKarra Satwik 	M_FW_PARAMS_PARAM_FILTER_MODE)
682629315fbSKarra Satwik 
683629315fbSKarra Satwik #define S_FW_PARAMS_PARAM_FILTER_MASK 0
684629315fbSKarra Satwik #define M_FW_PARAMS_PARAM_FILTER_MASK 0xffff
685536db938SKarra Satwik #define V_FW_PARAMS_PARAM_FILTER_MASK(x)          \
686536db938SKarra Satwik 	((x) << S_FW_PARAMS_PARAM_FILTER_MASK)
687629315fbSKarra Satwik #define G_FW_PARAMS_PARAM_FILTER_MASK(x)          \
688629315fbSKarra Satwik 	(((x) >> S_FW_PARAMS_PARAM_FILTER_MASK) & \
689629315fbSKarra Satwik 	M_FW_PARAMS_PARAM_FILTER_MASK)
690629315fbSKarra Satwik 
6913bd122eeSRahul Lakkireddy enum fw_params_param_dev {
6923bd122eeSRahul Lakkireddy 	FW_PARAMS_PARAM_DEV_CCLK	= 0x00, /* chip core clock in khz */
6933bd122eeSRahul Lakkireddy 	FW_PARAMS_PARAM_DEV_PORTVEC	= 0x01, /* the port vector */
6946f2a064bSShagun Agrawal 	FW_PARAMS_PARAM_DEV_NTID        = 0x02, /* reads the number of TIDs
6956f2a064bSShagun Agrawal 						 * allocated by the device's
6966f2a064bSShagun Agrawal 						 * Lookup Engine
6976f2a064bSShagun Agrawal 						 */
698d2adea17SKumar Sanghvi 	FW_PARAMS_PARAM_DEV_FWREV	= 0x0B, /* fw version */
699d2adea17SKumar Sanghvi 	FW_PARAMS_PARAM_DEV_TPREV	= 0x0C, /* tp version */
700*6d7d651bSRahul Lakkireddy 	FW_PARAMS_PARAM_DEV_CF		= 0x0D,
7013bd122eeSRahul Lakkireddy 	FW_PARAMS_PARAM_DEV_ULPTX_MEMWRITE_DSGL = 0x17,
70248f523f6SRahul Lakkireddy 	FW_PARAMS_PARAM_DEV_FILTER2_WR	= 0x1D,
70324c1d49aSKarra Satwik 	FW_PARAMS_PARAM_DEV_OPAQUE_VIID_SMT_EXTN = 0x27,
7042e40fdc2SKarra Satwik 	FW_PARAMS_PARAM_DEV_HASHFILTER_WITH_OFLD = 0x28,
705629315fbSKarra Satwik 	FW_PARAMS_PARAM_DEV_FILTER      = 0x2E,
70623d5fee3SRahul Lakkireddy 	FW_PARAMS_PARAM_DEV_VI_ENABLE_INGRESS_AFTER_LINKUP = 0x32,
707422d7823SRahul Lakkireddy 	FW_PARAMS_PARAM_PFVF_RAWF_START = 0x36,
708422d7823SRahul Lakkireddy 	FW_PARAMS_PARAM_PFVF_RAWF_END   = 0x37,
7093bd122eeSRahul Lakkireddy };
7103bd122eeSRahul Lakkireddy 
7113bd122eeSRahul Lakkireddy /*
7123bd122eeSRahul Lakkireddy  * physical and virtual function parameters
7133bd122eeSRahul Lakkireddy  */
7143bd122eeSRahul Lakkireddy enum fw_params_param_pfvf {
7153f2c1e20SShagun Agrawal 	FW_PARAMS_PARAM_PFVF_CLIP_START = 0x03,
7163f2c1e20SShagun Agrawal 	FW_PARAMS_PARAM_PFVF_CLIP_END = 0x04,
7176f2a064bSShagun Agrawal 	FW_PARAMS_PARAM_PFVF_FILTER_START = 0x05,
7186f2a064bSShagun Agrawal 	FW_PARAMS_PARAM_PFVF_FILTER_END = 0x06,
71923af667fSShagun Agrawal 	FW_PARAMS_PARAM_PFVF_L2T_START = 0x13,
72023af667fSShagun Agrawal 	FW_PARAMS_PARAM_PFVF_L2T_END = 0x14,
7212606bdd2SRahul Lakkireddy 	FW_PARAMS_PARAM_PFVF_CPLFW4MSG_ENCAP = 0x31,
72251abd7b2SRahul Lakkireddy 	FW_PARAMS_PARAM_PFVF_PORT_CAPS32 = 0x3A,
72351abd7b2SRahul Lakkireddy 	FW_PARAMS_PARAM_PFVF_MAX_PKTS_PER_ETH_TX_PKTS_WR = 0x3D,
724a99564c6SKarra Satwik 	FW_PARAMS_PARAM_PFVF_GET_SMT_START = 0x3E,
725a99564c6SKarra Satwik 	FW_PARAMS_PARAM_PFVF_GET_SMT_SIZE = 0x3F,
7263bd122eeSRahul Lakkireddy };
7273bd122eeSRahul Lakkireddy 
7283bd122eeSRahul Lakkireddy /*
7293bd122eeSRahul Lakkireddy  * dma queue parameters
7303bd122eeSRahul Lakkireddy  */
7313bd122eeSRahul Lakkireddy enum fw_params_param_dmaq {
7323bd122eeSRahul Lakkireddy 	FW_PARAMS_PARAM_DMAQ_IQ_INTCNTTHRESH = 0x01,
7333bd122eeSRahul Lakkireddy 	FW_PARAMS_PARAM_DMAQ_CONM_CTXT = 0x20,
7343bd122eeSRahul Lakkireddy };
7353bd122eeSRahul Lakkireddy 
736629315fbSKarra Satwik enum fw_params_param_dev_filter {
737536db938SKarra Satwik 	FW_PARAM_DEV_FILTER_VNIC_MODE   = 0x00,
738629315fbSKarra Satwik 	FW_PARAM_DEV_FILTER_MODE_MASK   = 0x01,
739629315fbSKarra Satwik };
740629315fbSKarra Satwik 
7413bd122eeSRahul Lakkireddy #define S_FW_PARAMS_MNEM	24
7423bd122eeSRahul Lakkireddy #define M_FW_PARAMS_MNEM	0xff
7433bd122eeSRahul Lakkireddy #define V_FW_PARAMS_MNEM(x)	((x) << S_FW_PARAMS_MNEM)
7443bd122eeSRahul Lakkireddy #define G_FW_PARAMS_MNEM(x)	\
7453bd122eeSRahul Lakkireddy 	(((x) >> S_FW_PARAMS_MNEM) & M_FW_PARAMS_MNEM)
7463bd122eeSRahul Lakkireddy 
7473bd122eeSRahul Lakkireddy #define S_FW_PARAMS_PARAM_X	16
7483bd122eeSRahul Lakkireddy #define M_FW_PARAMS_PARAM_X	0xff
7493bd122eeSRahul Lakkireddy #define V_FW_PARAMS_PARAM_X(x) ((x) << S_FW_PARAMS_PARAM_X)
7503bd122eeSRahul Lakkireddy #define G_FW_PARAMS_PARAM_X(x) \
7513bd122eeSRahul Lakkireddy 	(((x) >> S_FW_PARAMS_PARAM_X) & M_FW_PARAMS_PARAM_X)
7523bd122eeSRahul Lakkireddy 
7533bd122eeSRahul Lakkireddy #define S_FW_PARAMS_PARAM_Y	8
7543bd122eeSRahul Lakkireddy #define M_FW_PARAMS_PARAM_Y	0xff
7553bd122eeSRahul Lakkireddy #define V_FW_PARAMS_PARAM_Y(x) ((x) << S_FW_PARAMS_PARAM_Y)
7563bd122eeSRahul Lakkireddy #define G_FW_PARAMS_PARAM_Y(x) \
7573bd122eeSRahul Lakkireddy 	(((x) >> S_FW_PARAMS_PARAM_Y) & M_FW_PARAMS_PARAM_Y)
7583bd122eeSRahul Lakkireddy 
7593bd122eeSRahul Lakkireddy #define S_FW_PARAMS_PARAM_Z	0
7603bd122eeSRahul Lakkireddy #define M_FW_PARAMS_PARAM_Z	0xff
7613bd122eeSRahul Lakkireddy #define V_FW_PARAMS_PARAM_Z(x) ((x) << S_FW_PARAMS_PARAM_Z)
7623bd122eeSRahul Lakkireddy #define G_FW_PARAMS_PARAM_Z(x) \
7633bd122eeSRahul Lakkireddy 	(((x) >> S_FW_PARAMS_PARAM_Z) & M_FW_PARAMS_PARAM_Z)
7643bd122eeSRahul Lakkireddy 
7653bd122eeSRahul Lakkireddy #define S_FW_PARAMS_PARAM_YZ	0
7663bd122eeSRahul Lakkireddy #define M_FW_PARAMS_PARAM_YZ	0xffff
7673bd122eeSRahul Lakkireddy #define V_FW_PARAMS_PARAM_YZ(x) ((x) << S_FW_PARAMS_PARAM_YZ)
7683bd122eeSRahul Lakkireddy #define G_FW_PARAMS_PARAM_YZ(x) \
7693bd122eeSRahul Lakkireddy 	(((x) >> S_FW_PARAMS_PARAM_YZ) & M_FW_PARAMS_PARAM_YZ)
7703bd122eeSRahul Lakkireddy 
771d2adea17SKumar Sanghvi #define S_FW_PARAMS_PARAM_XYZ		0
772d2adea17SKumar Sanghvi #define M_FW_PARAMS_PARAM_XYZ		0xffffff
773d2adea17SKumar Sanghvi #define V_FW_PARAMS_PARAM_XYZ(x)	((x) << S_FW_PARAMS_PARAM_XYZ)
774d2adea17SKumar Sanghvi 
7753bd122eeSRahul Lakkireddy struct fw_params_cmd {
7763bd122eeSRahul Lakkireddy 	__be32 op_to_vfn;
7773bd122eeSRahul Lakkireddy 	__be32 retval_len16;
7783bd122eeSRahul Lakkireddy 	struct fw_params_param {
7793bd122eeSRahul Lakkireddy 		__be32 mnem;
7803bd122eeSRahul Lakkireddy 		__be32 val;
7813bd122eeSRahul Lakkireddy 	} param[7];
7823bd122eeSRahul Lakkireddy };
7833bd122eeSRahul Lakkireddy 
7843bd122eeSRahul Lakkireddy #define S_FW_PARAMS_CMD_PFN	8
7853bd122eeSRahul Lakkireddy #define M_FW_PARAMS_CMD_PFN	0x7
7863bd122eeSRahul Lakkireddy #define V_FW_PARAMS_CMD_PFN(x)	((x) << S_FW_PARAMS_CMD_PFN)
7873bd122eeSRahul Lakkireddy #define G_FW_PARAMS_CMD_PFN(x)	\
7883bd122eeSRahul Lakkireddy 	(((x) >> S_FW_PARAMS_CMD_PFN) & M_FW_PARAMS_CMD_PFN)
7893bd122eeSRahul Lakkireddy 
7903bd122eeSRahul Lakkireddy #define S_FW_PARAMS_CMD_VFN	0
7913bd122eeSRahul Lakkireddy #define M_FW_PARAMS_CMD_VFN	0xff
7923bd122eeSRahul Lakkireddy #define V_FW_PARAMS_CMD_VFN(x)	((x) << S_FW_PARAMS_CMD_VFN)
7933bd122eeSRahul Lakkireddy #define G_FW_PARAMS_CMD_VFN(x)	\
7943bd122eeSRahul Lakkireddy 	(((x) >> S_FW_PARAMS_CMD_VFN) & M_FW_PARAMS_CMD_VFN)
7953bd122eeSRahul Lakkireddy 
796d2adea17SKumar Sanghvi struct fw_pfvf_cmd {
797d2adea17SKumar Sanghvi 	__be32 op_to_vfn;
798d2adea17SKumar Sanghvi 	__be32 retval_len16;
799d2adea17SKumar Sanghvi 	__be32 niqflint_niq;
800d2adea17SKumar Sanghvi 	__be32 type_to_neq;
801d2adea17SKumar Sanghvi 	__be32 tc_to_nexactf;
802d2adea17SKumar Sanghvi 	__be32 r_caps_to_nethctrl;
803d2adea17SKumar Sanghvi 	__be16 nricq;
804d2adea17SKumar Sanghvi 	__be16 nriqp;
805d2adea17SKumar Sanghvi 	__be32 r4;
806d2adea17SKumar Sanghvi };
807d2adea17SKumar Sanghvi 
80887a3ae3eSRahul Lakkireddy #define S_FW_PFVF_CMD_PFN		8
80987a3ae3eSRahul Lakkireddy #define V_FW_PFVF_CMD_PFN(x)		((x) << S_FW_PFVF_CMD_PFN)
81087a3ae3eSRahul Lakkireddy 
81187a3ae3eSRahul Lakkireddy #define S_FW_PFVF_CMD_VFN		0
81287a3ae3eSRahul Lakkireddy #define V_FW_PFVF_CMD_VFN(x)		((x) << S_FW_PFVF_CMD_VFN)
81387a3ae3eSRahul Lakkireddy 
814d2adea17SKumar Sanghvi #define S_FW_PFVF_CMD_NIQFLINT          20
815d2adea17SKumar Sanghvi #define M_FW_PFVF_CMD_NIQFLINT          0xfff
816d2adea17SKumar Sanghvi #define G_FW_PFVF_CMD_NIQFLINT(x)       \
817d2adea17SKumar Sanghvi 	(((x) >> S_FW_PFVF_CMD_NIQFLINT) & M_FW_PFVF_CMD_NIQFLINT)
818d2adea17SKumar Sanghvi 
819d2adea17SKumar Sanghvi #define S_FW_PFVF_CMD_NIQ               0
820d2adea17SKumar Sanghvi #define M_FW_PFVF_CMD_NIQ               0xfffff
821d2adea17SKumar Sanghvi #define G_FW_PFVF_CMD_NIQ(x)            \
822d2adea17SKumar Sanghvi 	(((x) >> S_FW_PFVF_CMD_NIQ) & M_FW_PFVF_CMD_NIQ)
823d2adea17SKumar Sanghvi 
824d2adea17SKumar Sanghvi #define S_FW_PFVF_CMD_PMASK             20
825d2adea17SKumar Sanghvi #define M_FW_PFVF_CMD_PMASK             0xf
826d2adea17SKumar Sanghvi #define G_FW_PFVF_CMD_PMASK(x)          \
827d2adea17SKumar Sanghvi 	(((x) >> S_FW_PFVF_CMD_PMASK) & M_FW_PFVF_CMD_PMASK)
828d2adea17SKumar Sanghvi 
829d2adea17SKumar Sanghvi #define S_FW_PFVF_CMD_NEQ               0
830d2adea17SKumar Sanghvi #define M_FW_PFVF_CMD_NEQ               0xfffff
831d2adea17SKumar Sanghvi #define G_FW_PFVF_CMD_NEQ(x)            \
832d2adea17SKumar Sanghvi 	(((x) >> S_FW_PFVF_CMD_NEQ) & M_FW_PFVF_CMD_NEQ)
833d2adea17SKumar Sanghvi 
834d2adea17SKumar Sanghvi #define S_FW_PFVF_CMD_TC                24
835d2adea17SKumar Sanghvi #define M_FW_PFVF_CMD_TC                0xff
836d2adea17SKumar Sanghvi #define G_FW_PFVF_CMD_TC(x)             \
837d2adea17SKumar Sanghvi 	(((x) >> S_FW_PFVF_CMD_TC) & M_FW_PFVF_CMD_TC)
838d2adea17SKumar Sanghvi 
839d2adea17SKumar Sanghvi #define S_FW_PFVF_CMD_NVI               16
840d2adea17SKumar Sanghvi #define M_FW_PFVF_CMD_NVI               0xff
841d2adea17SKumar Sanghvi #define G_FW_PFVF_CMD_NVI(x)            \
842d2adea17SKumar Sanghvi 	(((x) >> S_FW_PFVF_CMD_NVI) & M_FW_PFVF_CMD_NVI)
843d2adea17SKumar Sanghvi 
844d2adea17SKumar Sanghvi #define S_FW_PFVF_CMD_NEXACTF           0
845d2adea17SKumar Sanghvi #define M_FW_PFVF_CMD_NEXACTF           0xffff
846d2adea17SKumar Sanghvi #define G_FW_PFVF_CMD_NEXACTF(x)        \
847d2adea17SKumar Sanghvi 	(((x) >> S_FW_PFVF_CMD_NEXACTF) & M_FW_PFVF_CMD_NEXACTF)
848d2adea17SKumar Sanghvi 
849d2adea17SKumar Sanghvi #define S_FW_PFVF_CMD_R_CAPS            24
850d2adea17SKumar Sanghvi #define M_FW_PFVF_CMD_R_CAPS            0xff
851d2adea17SKumar Sanghvi #define G_FW_PFVF_CMD_R_CAPS(x)         \
852d2adea17SKumar Sanghvi 	(((x) >> S_FW_PFVF_CMD_R_CAPS) & M_FW_PFVF_CMD_R_CAPS)
853d2adea17SKumar Sanghvi 
854d2adea17SKumar Sanghvi #define S_FW_PFVF_CMD_WX_CAPS           16
855d2adea17SKumar Sanghvi #define M_FW_PFVF_CMD_WX_CAPS           0xff
856d2adea17SKumar Sanghvi #define G_FW_PFVF_CMD_WX_CAPS(x)        \
857d2adea17SKumar Sanghvi 	(((x) >> S_FW_PFVF_CMD_WX_CAPS) & M_FW_PFVF_CMD_WX_CAPS)
858d2adea17SKumar Sanghvi 
859d2adea17SKumar Sanghvi #define S_FW_PFVF_CMD_NETHCTRL          0
860d2adea17SKumar Sanghvi #define M_FW_PFVF_CMD_NETHCTRL          0xffff
861d2adea17SKumar Sanghvi #define G_FW_PFVF_CMD_NETHCTRL(x)       \
862d2adea17SKumar Sanghvi 	(((x) >> S_FW_PFVF_CMD_NETHCTRL) & M_FW_PFVF_CMD_NETHCTRL)
863d2adea17SKumar Sanghvi 
8643bd122eeSRahul Lakkireddy /*
8653bd122eeSRahul Lakkireddy  * ingress queue type; the first 1K ingress queues can have associated 0,
8663bd122eeSRahul Lakkireddy  * 1 or 2 free lists and an interrupt, all other ingress queues lack these
8673bd122eeSRahul Lakkireddy  * capabilities
8683bd122eeSRahul Lakkireddy  */
8693bd122eeSRahul Lakkireddy enum fw_iq_type {
8703bd122eeSRahul Lakkireddy 	FW_IQ_TYPE_FL_INT_CAP,
8713bd122eeSRahul Lakkireddy };
8723bd122eeSRahul Lakkireddy 
8733abe1719SRahul Lakkireddy enum fw_iq_iqtype {
8743abe1719SRahul Lakkireddy 	FW_IQ_IQTYPE_NIC = 1,
8753abe1719SRahul Lakkireddy 	FW_IQ_IQTYPE_OFLD,
8763abe1719SRahul Lakkireddy };
8773abe1719SRahul Lakkireddy 
8783bd122eeSRahul Lakkireddy struct fw_iq_cmd {
8793bd122eeSRahul Lakkireddy 	__be32 op_to_vfn;
8803bd122eeSRahul Lakkireddy 	__be32 alloc_to_len16;
8813bd122eeSRahul Lakkireddy 	__be16 physiqid;
8823bd122eeSRahul Lakkireddy 	__be16 iqid;
8833bd122eeSRahul Lakkireddy 	__be16 fl0id;
8843bd122eeSRahul Lakkireddy 	__be16 fl1id;
8853bd122eeSRahul Lakkireddy 	__be32 type_to_iqandstindex;
8863bd122eeSRahul Lakkireddy 	__be16 iqdroprss_to_iqesize;
8873bd122eeSRahul Lakkireddy 	__be16 iqsize;
8883bd122eeSRahul Lakkireddy 	__be64 iqaddr;
8893bd122eeSRahul Lakkireddy 	__be32 iqns_to_fl0congen;
8903bd122eeSRahul Lakkireddy 	__be16 fl0dcaen_to_fl0cidxfthresh;
8913bd122eeSRahul Lakkireddy 	__be16 fl0size;
8923bd122eeSRahul Lakkireddy 	__be64 fl0addr;
8933bd122eeSRahul Lakkireddy 	__be32 fl1cngchmap_to_fl1congen;
8943bd122eeSRahul Lakkireddy 	__be16 fl1dcaen_to_fl1cidxfthresh;
8953bd122eeSRahul Lakkireddy 	__be16 fl1size;
8963bd122eeSRahul Lakkireddy 	__be64 fl1addr;
8973bd122eeSRahul Lakkireddy };
8983bd122eeSRahul Lakkireddy 
8993bd122eeSRahul Lakkireddy #define S_FW_IQ_CMD_PFN		8
9003bd122eeSRahul Lakkireddy #define M_FW_IQ_CMD_PFN		0x7
9013bd122eeSRahul Lakkireddy #define V_FW_IQ_CMD_PFN(x)	((x) << S_FW_IQ_CMD_PFN)
9023bd122eeSRahul Lakkireddy #define G_FW_IQ_CMD_PFN(x)	(((x) >> S_FW_IQ_CMD_PFN) & M_FW_IQ_CMD_PFN)
9033bd122eeSRahul Lakkireddy 
9043bd122eeSRahul Lakkireddy #define S_FW_IQ_CMD_VFN		0
9053bd122eeSRahul Lakkireddy #define M_FW_IQ_CMD_VFN		0xff
9063bd122eeSRahul Lakkireddy #define V_FW_IQ_CMD_VFN(x)	((x) << S_FW_IQ_CMD_VFN)
9073bd122eeSRahul Lakkireddy #define G_FW_IQ_CMD_VFN(x)	(((x) >> S_FW_IQ_CMD_VFN) & M_FW_IQ_CMD_VFN)
9083bd122eeSRahul Lakkireddy 
9093bd122eeSRahul Lakkireddy #define S_FW_IQ_CMD_ALLOC	31
9103bd122eeSRahul Lakkireddy #define M_FW_IQ_CMD_ALLOC	0x1
9113bd122eeSRahul Lakkireddy #define V_FW_IQ_CMD_ALLOC(x)	((x) << S_FW_IQ_CMD_ALLOC)
9123bd122eeSRahul Lakkireddy #define G_FW_IQ_CMD_ALLOC(x)	\
9133bd122eeSRahul Lakkireddy 	(((x) >> S_FW_IQ_CMD_ALLOC) & M_FW_IQ_CMD_ALLOC)
9143bd122eeSRahul Lakkireddy #define F_FW_IQ_CMD_ALLOC	V_FW_IQ_CMD_ALLOC(1U)
9153bd122eeSRahul Lakkireddy 
9163bd122eeSRahul Lakkireddy #define S_FW_IQ_CMD_FREE	30
9173bd122eeSRahul Lakkireddy #define M_FW_IQ_CMD_FREE	0x1
9183bd122eeSRahul Lakkireddy #define V_FW_IQ_CMD_FREE(x)	((x) << S_FW_IQ_CMD_FREE)
9193bd122eeSRahul Lakkireddy #define G_FW_IQ_CMD_FREE(x)	(((x) >> S_FW_IQ_CMD_FREE) & M_FW_IQ_CMD_FREE)
9203bd122eeSRahul Lakkireddy #define F_FW_IQ_CMD_FREE	V_FW_IQ_CMD_FREE(1U)
9213bd122eeSRahul Lakkireddy 
9223bd122eeSRahul Lakkireddy #define S_FW_IQ_CMD_IQSTART	28
9233bd122eeSRahul Lakkireddy #define M_FW_IQ_CMD_IQSTART	0x1
9243bd122eeSRahul Lakkireddy #define V_FW_IQ_CMD_IQSTART(x)	((x) << S_FW_IQ_CMD_IQSTART)
9253bd122eeSRahul Lakkireddy #define G_FW_IQ_CMD_IQSTART(x)	\
9263bd122eeSRahul Lakkireddy 	(((x) >> S_FW_IQ_CMD_IQSTART) & M_FW_IQ_CMD_IQSTART)
9273bd122eeSRahul Lakkireddy #define F_FW_IQ_CMD_IQSTART	V_FW_IQ_CMD_IQSTART(1U)
9283bd122eeSRahul Lakkireddy 
9293bd122eeSRahul Lakkireddy #define S_FW_IQ_CMD_IQSTOP	27
9303bd122eeSRahul Lakkireddy #define M_FW_IQ_CMD_IQSTOP	0x1
9313bd122eeSRahul Lakkireddy #define V_FW_IQ_CMD_IQSTOP(x)	((x) << S_FW_IQ_CMD_IQSTOP)
9323bd122eeSRahul Lakkireddy #define G_FW_IQ_CMD_IQSTOP(x)	\
9333bd122eeSRahul Lakkireddy 	(((x) >> S_FW_IQ_CMD_IQSTOP) & M_FW_IQ_CMD_IQSTOP)
9343bd122eeSRahul Lakkireddy #define F_FW_IQ_CMD_IQSTOP	V_FW_IQ_CMD_IQSTOP(1U)
9353bd122eeSRahul Lakkireddy 
9363bd122eeSRahul Lakkireddy #define S_FW_IQ_CMD_TYPE	29
9373bd122eeSRahul Lakkireddy #define M_FW_IQ_CMD_TYPE	0x7
9383bd122eeSRahul Lakkireddy #define V_FW_IQ_CMD_TYPE(x)	((x) << S_FW_IQ_CMD_TYPE)
9393bd122eeSRahul Lakkireddy #define G_FW_IQ_CMD_TYPE(x)	(((x) >> S_FW_IQ_CMD_TYPE) & M_FW_IQ_CMD_TYPE)
9403bd122eeSRahul Lakkireddy 
9413bd122eeSRahul Lakkireddy #define S_FW_IQ_CMD_IQASYNCH	28
9423bd122eeSRahul Lakkireddy #define M_FW_IQ_CMD_IQASYNCH	0x1
9433bd122eeSRahul Lakkireddy #define V_FW_IQ_CMD_IQASYNCH(x)	((x) << S_FW_IQ_CMD_IQASYNCH)
9443bd122eeSRahul Lakkireddy #define G_FW_IQ_CMD_IQASYNCH(x)	\
9453bd122eeSRahul Lakkireddy 	(((x) >> S_FW_IQ_CMD_IQASYNCH) & M_FW_IQ_CMD_IQASYNCH)
9463bd122eeSRahul Lakkireddy #define F_FW_IQ_CMD_IQASYNCH	V_FW_IQ_CMD_IQASYNCH(1U)
9473bd122eeSRahul Lakkireddy 
9483bd122eeSRahul Lakkireddy #define S_FW_IQ_CMD_VIID	16
9493bd122eeSRahul Lakkireddy #define M_FW_IQ_CMD_VIID	0xfff
9503bd122eeSRahul Lakkireddy #define V_FW_IQ_CMD_VIID(x)	((x) << S_FW_IQ_CMD_VIID)
9513bd122eeSRahul Lakkireddy #define G_FW_IQ_CMD_VIID(x)	(((x) >> S_FW_IQ_CMD_VIID) & M_FW_IQ_CMD_VIID)
9523bd122eeSRahul Lakkireddy 
9533bd122eeSRahul Lakkireddy #define S_FW_IQ_CMD_IQANDST	15
9543bd122eeSRahul Lakkireddy #define M_FW_IQ_CMD_IQANDST	0x1
9553bd122eeSRahul Lakkireddy #define V_FW_IQ_CMD_IQANDST(x)	((x) << S_FW_IQ_CMD_IQANDST)
9563bd122eeSRahul Lakkireddy #define G_FW_IQ_CMD_IQANDST(x)	\
9573bd122eeSRahul Lakkireddy 	(((x) >> S_FW_IQ_CMD_IQANDST) & M_FW_IQ_CMD_IQANDST)
9583bd122eeSRahul Lakkireddy #define F_FW_IQ_CMD_IQANDST	V_FW_IQ_CMD_IQANDST(1U)
9593bd122eeSRahul Lakkireddy 
9603bd122eeSRahul Lakkireddy #define S_FW_IQ_CMD_IQANUD	12
9613bd122eeSRahul Lakkireddy #define M_FW_IQ_CMD_IQANUD	0x3
9623bd122eeSRahul Lakkireddy #define V_FW_IQ_CMD_IQANUD(x)	((x) << S_FW_IQ_CMD_IQANUD)
9633bd122eeSRahul Lakkireddy #define G_FW_IQ_CMD_IQANUD(x)	\
9643bd122eeSRahul Lakkireddy 	(((x) >> S_FW_IQ_CMD_IQANUD) & M_FW_IQ_CMD_IQANUD)
9653bd122eeSRahul Lakkireddy 
9663bd122eeSRahul Lakkireddy #define S_FW_IQ_CMD_IQANDSTINDEX	0
9673bd122eeSRahul Lakkireddy #define M_FW_IQ_CMD_IQANDSTINDEX	0xfff
9683bd122eeSRahul Lakkireddy #define V_FW_IQ_CMD_IQANDSTINDEX(x)	((x) << S_FW_IQ_CMD_IQANDSTINDEX)
9693bd122eeSRahul Lakkireddy #define G_FW_IQ_CMD_IQANDSTINDEX(x)	\
9703bd122eeSRahul Lakkireddy 	(((x) >> S_FW_IQ_CMD_IQANDSTINDEX) & M_FW_IQ_CMD_IQANDSTINDEX)
9713bd122eeSRahul Lakkireddy 
9723bd122eeSRahul Lakkireddy #define S_FW_IQ_CMD_IQGTSMODE		14
9733bd122eeSRahul Lakkireddy #define M_FW_IQ_CMD_IQGTSMODE		0x1
9743bd122eeSRahul Lakkireddy #define V_FW_IQ_CMD_IQGTSMODE(x)	((x) << S_FW_IQ_CMD_IQGTSMODE)
9753bd122eeSRahul Lakkireddy #define G_FW_IQ_CMD_IQGTSMODE(x)	\
9763bd122eeSRahul Lakkireddy 	(((x) >> S_FW_IQ_CMD_IQGTSMODE) & M_FW_IQ_CMD_IQGTSMODE)
9773bd122eeSRahul Lakkireddy #define F_FW_IQ_CMD_IQGTSMODE	V_FW_IQ_CMD_IQGTSMODE(1U)
9783bd122eeSRahul Lakkireddy 
9793bd122eeSRahul Lakkireddy #define S_FW_IQ_CMD_IQPCIECH	12
9803bd122eeSRahul Lakkireddy #define M_FW_IQ_CMD_IQPCIECH	0x3
9813bd122eeSRahul Lakkireddy #define V_FW_IQ_CMD_IQPCIECH(x)	((x) << S_FW_IQ_CMD_IQPCIECH)
9823bd122eeSRahul Lakkireddy #define G_FW_IQ_CMD_IQPCIECH(x)	\
9833bd122eeSRahul Lakkireddy 	(((x) >> S_FW_IQ_CMD_IQPCIECH) & M_FW_IQ_CMD_IQPCIECH)
9843bd122eeSRahul Lakkireddy 
9853bd122eeSRahul Lakkireddy #define S_FW_IQ_CMD_IQINTCNTTHRESH	4
9863bd122eeSRahul Lakkireddy #define M_FW_IQ_CMD_IQINTCNTTHRESH	0x3
9873bd122eeSRahul Lakkireddy #define V_FW_IQ_CMD_IQINTCNTTHRESH(x)	((x) << S_FW_IQ_CMD_IQINTCNTTHRESH)
9883bd122eeSRahul Lakkireddy #define G_FW_IQ_CMD_IQINTCNTTHRESH(x)	\
9893bd122eeSRahul Lakkireddy 	(((x) >> S_FW_IQ_CMD_IQINTCNTTHRESH) & M_FW_IQ_CMD_IQINTCNTTHRESH)
9903bd122eeSRahul Lakkireddy 
9913bd122eeSRahul Lakkireddy #define S_FW_IQ_CMD_IQESIZE	0
9923bd122eeSRahul Lakkireddy #define M_FW_IQ_CMD_IQESIZE	0x3
9933bd122eeSRahul Lakkireddy #define V_FW_IQ_CMD_IQESIZE(x)	((x) << S_FW_IQ_CMD_IQESIZE)
9943bd122eeSRahul Lakkireddy #define G_FW_IQ_CMD_IQESIZE(x)	\
9953bd122eeSRahul Lakkireddy 	(((x) >> S_FW_IQ_CMD_IQESIZE) & M_FW_IQ_CMD_IQESIZE)
9963bd122eeSRahul Lakkireddy 
9976c280962SRahul Lakkireddy #define S_FW_IQ_CMD_IQRO                30
9986c280962SRahul Lakkireddy #define M_FW_IQ_CMD_IQRO                0x1
9996c280962SRahul Lakkireddy #define V_FW_IQ_CMD_IQRO(x)             ((x) << S_FW_IQ_CMD_IQRO)
10006c280962SRahul Lakkireddy #define G_FW_IQ_CMD_IQRO(x)             \
10016c280962SRahul Lakkireddy 	(((x) >> S_FW_IQ_CMD_IQRO) & M_FW_IQ_CMD_IQRO)
10026c280962SRahul Lakkireddy #define F_FW_IQ_CMD_IQRO                V_FW_IQ_CMD_IQRO(1U)
10036c280962SRahul Lakkireddy 
10043bd122eeSRahul Lakkireddy #define S_FW_IQ_CMD_IQFLINTCONGEN	27
10053bd122eeSRahul Lakkireddy #define M_FW_IQ_CMD_IQFLINTCONGEN	0x1
10063bd122eeSRahul Lakkireddy #define V_FW_IQ_CMD_IQFLINTCONGEN(x)	((x) << S_FW_IQ_CMD_IQFLINTCONGEN)
10073bd122eeSRahul Lakkireddy #define G_FW_IQ_CMD_IQFLINTCONGEN(x)	\
10083bd122eeSRahul Lakkireddy 	(((x) >> S_FW_IQ_CMD_IQFLINTCONGEN) & M_FW_IQ_CMD_IQFLINTCONGEN)
10093bd122eeSRahul Lakkireddy #define F_FW_IQ_CMD_IQFLINTCONGEN	V_FW_IQ_CMD_IQFLINTCONGEN(1U)
10103bd122eeSRahul Lakkireddy 
10113abe1719SRahul Lakkireddy #define S_FW_IQ_CMD_IQTYPE	24
10123abe1719SRahul Lakkireddy #define V_FW_IQ_CMD_IQTYPE(x)	((x) << S_FW_IQ_CMD_IQTYPE)
10133abe1719SRahul Lakkireddy 
10143bd122eeSRahul Lakkireddy #define S_FW_IQ_CMD_FL0CNGCHMAP		20
10153bd122eeSRahul Lakkireddy #define M_FW_IQ_CMD_FL0CNGCHMAP		0xf
10163bd122eeSRahul Lakkireddy #define V_FW_IQ_CMD_FL0CNGCHMAP(x)	((x) << S_FW_IQ_CMD_FL0CNGCHMAP)
10173bd122eeSRahul Lakkireddy #define G_FW_IQ_CMD_FL0CNGCHMAP(x)	\
10183bd122eeSRahul Lakkireddy 	(((x) >> S_FW_IQ_CMD_FL0CNGCHMAP) & M_FW_IQ_CMD_FL0CNGCHMAP)
10193bd122eeSRahul Lakkireddy 
10203bd122eeSRahul Lakkireddy #define S_FW_IQ_CMD_FL0DATARO		12
10213bd122eeSRahul Lakkireddy #define M_FW_IQ_CMD_FL0DATARO		0x1
10223bd122eeSRahul Lakkireddy #define V_FW_IQ_CMD_FL0DATARO(x)	((x) << S_FW_IQ_CMD_FL0DATARO)
10233bd122eeSRahul Lakkireddy #define G_FW_IQ_CMD_FL0DATARO(x)	\
10243bd122eeSRahul Lakkireddy 	(((x) >> S_FW_IQ_CMD_FL0DATARO) & M_FW_IQ_CMD_FL0DATARO)
10253bd122eeSRahul Lakkireddy #define F_FW_IQ_CMD_FL0DATARO	V_FW_IQ_CMD_FL0DATARO(1U)
10263bd122eeSRahul Lakkireddy 
10273bd122eeSRahul Lakkireddy #define S_FW_IQ_CMD_FL0CONGCIF		11
10283bd122eeSRahul Lakkireddy #define M_FW_IQ_CMD_FL0CONGCIF		0x1
10293bd122eeSRahul Lakkireddy #define V_FW_IQ_CMD_FL0CONGCIF(x)	((x) << S_FW_IQ_CMD_FL0CONGCIF)
10303bd122eeSRahul Lakkireddy #define G_FW_IQ_CMD_FL0CONGCIF(x)	\
10313bd122eeSRahul Lakkireddy 	(((x) >> S_FW_IQ_CMD_FL0CONGCIF) & M_FW_IQ_CMD_FL0CONGCIF)
10323bd122eeSRahul Lakkireddy #define F_FW_IQ_CMD_FL0CONGCIF	V_FW_IQ_CMD_FL0CONGCIF(1U)
10333bd122eeSRahul Lakkireddy 
10343bd122eeSRahul Lakkireddy #define S_FW_IQ_CMD_FL0FETCHRO		6
10353bd122eeSRahul Lakkireddy #define M_FW_IQ_CMD_FL0FETCHRO		0x1
10363bd122eeSRahul Lakkireddy #define V_FW_IQ_CMD_FL0FETCHRO(x)	((x) << S_FW_IQ_CMD_FL0FETCHRO)
10373bd122eeSRahul Lakkireddy #define G_FW_IQ_CMD_FL0FETCHRO(x)	\
10383bd122eeSRahul Lakkireddy 	(((x) >> S_FW_IQ_CMD_FL0FETCHRO) & M_FW_IQ_CMD_FL0FETCHRO)
10393bd122eeSRahul Lakkireddy #define F_FW_IQ_CMD_FL0FETCHRO	V_FW_IQ_CMD_FL0FETCHRO(1U)
10403bd122eeSRahul Lakkireddy 
10413bd122eeSRahul Lakkireddy #define S_FW_IQ_CMD_FL0HOSTFCMODE	4
10423bd122eeSRahul Lakkireddy #define M_FW_IQ_CMD_FL0HOSTFCMODE	0x3
10433bd122eeSRahul Lakkireddy #define V_FW_IQ_CMD_FL0HOSTFCMODE(x)	((x) << S_FW_IQ_CMD_FL0HOSTFCMODE)
10443bd122eeSRahul Lakkireddy #define G_FW_IQ_CMD_FL0HOSTFCMODE(x)	\
10453bd122eeSRahul Lakkireddy 	(((x) >> S_FW_IQ_CMD_FL0HOSTFCMODE) & M_FW_IQ_CMD_FL0HOSTFCMODE)
10463bd122eeSRahul Lakkireddy 
10473bd122eeSRahul Lakkireddy #define S_FW_IQ_CMD_FL0PADEN	2
10483bd122eeSRahul Lakkireddy #define M_FW_IQ_CMD_FL0PADEN	0x1
10493bd122eeSRahul Lakkireddy #define V_FW_IQ_CMD_FL0PADEN(x)	((x) << S_FW_IQ_CMD_FL0PADEN)
10503bd122eeSRahul Lakkireddy #define G_FW_IQ_CMD_FL0PADEN(x)	\
10513bd122eeSRahul Lakkireddy 	(((x) >> S_FW_IQ_CMD_FL0PADEN) & M_FW_IQ_CMD_FL0PADEN)
10523bd122eeSRahul Lakkireddy #define F_FW_IQ_CMD_FL0PADEN	V_FW_IQ_CMD_FL0PADEN(1U)
10533bd122eeSRahul Lakkireddy 
10543bd122eeSRahul Lakkireddy #define S_FW_IQ_CMD_FL0PACKEN		1
10553bd122eeSRahul Lakkireddy #define M_FW_IQ_CMD_FL0PACKEN		0x1
10563bd122eeSRahul Lakkireddy #define V_FW_IQ_CMD_FL0PACKEN(x)	((x) << S_FW_IQ_CMD_FL0PACKEN)
10573bd122eeSRahul Lakkireddy #define G_FW_IQ_CMD_FL0PACKEN(x)	\
10583bd122eeSRahul Lakkireddy 	(((x) >> S_FW_IQ_CMD_FL0PACKEN) & M_FW_IQ_CMD_FL0PACKEN)
10593bd122eeSRahul Lakkireddy #define F_FW_IQ_CMD_FL0PACKEN	V_FW_IQ_CMD_FL0PACKEN(1U)
10603bd122eeSRahul Lakkireddy 
10613bd122eeSRahul Lakkireddy #define S_FW_IQ_CMD_FL0CONGEN		0
10623bd122eeSRahul Lakkireddy #define M_FW_IQ_CMD_FL0CONGEN		0x1
10633bd122eeSRahul Lakkireddy #define V_FW_IQ_CMD_FL0CONGEN(x)	((x) << S_FW_IQ_CMD_FL0CONGEN)
10643bd122eeSRahul Lakkireddy #define G_FW_IQ_CMD_FL0CONGEN(x)	\
10653bd122eeSRahul Lakkireddy 	(((x) >> S_FW_IQ_CMD_FL0CONGEN) & M_FW_IQ_CMD_FL0CONGEN)
10663bd122eeSRahul Lakkireddy #define F_FW_IQ_CMD_FL0CONGEN	V_FW_IQ_CMD_FL0CONGEN(1U)
10673bd122eeSRahul Lakkireddy 
10683bd122eeSRahul Lakkireddy #define S_FW_IQ_CMD_FL0FBMIN	7
10693bd122eeSRahul Lakkireddy #define M_FW_IQ_CMD_FL0FBMIN	0x7
10703bd122eeSRahul Lakkireddy #define V_FW_IQ_CMD_FL0FBMIN(x)	((x) << S_FW_IQ_CMD_FL0FBMIN)
10713bd122eeSRahul Lakkireddy #define G_FW_IQ_CMD_FL0FBMIN(x)	\
10723bd122eeSRahul Lakkireddy 	(((x) >> S_FW_IQ_CMD_FL0FBMIN) & M_FW_IQ_CMD_FL0FBMIN)
10733bd122eeSRahul Lakkireddy 
10743bd122eeSRahul Lakkireddy #define S_FW_IQ_CMD_FL0FBMAX	4
10753bd122eeSRahul Lakkireddy #define M_FW_IQ_CMD_FL0FBMAX	0x7
10763bd122eeSRahul Lakkireddy #define V_FW_IQ_CMD_FL0FBMAX(x)	((x) << S_FW_IQ_CMD_FL0FBMAX)
10773bd122eeSRahul Lakkireddy #define G_FW_IQ_CMD_FL0FBMAX(x)	\
10783bd122eeSRahul Lakkireddy 	(((x) >> S_FW_IQ_CMD_FL0FBMAX) & M_FW_IQ_CMD_FL0FBMAX)
10793bd122eeSRahul Lakkireddy 
10803bd122eeSRahul Lakkireddy struct fw_eq_eth_cmd {
10813bd122eeSRahul Lakkireddy 	__be32 op_to_vfn;
10823bd122eeSRahul Lakkireddy 	__be32 alloc_to_len16;
10833bd122eeSRahul Lakkireddy 	__be32 eqid_pkd;
10843bd122eeSRahul Lakkireddy 	__be32 physeqid_pkd;
10853bd122eeSRahul Lakkireddy 	__be32 fetchszm_to_iqid;
10863bd122eeSRahul Lakkireddy 	__be32 dcaen_to_eqsize;
10873bd122eeSRahul Lakkireddy 	__be64 eqaddr;
10883bd122eeSRahul Lakkireddy 	__be32 autoequiqe_to_viid;
10893bd122eeSRahul Lakkireddy 	__be32 r8_lo;
10903bd122eeSRahul Lakkireddy 	__be64 r9;
10913bd122eeSRahul Lakkireddy };
10923bd122eeSRahul Lakkireddy 
10933bd122eeSRahul Lakkireddy #define S_FW_EQ_ETH_CMD_PFN	8
10943bd122eeSRahul Lakkireddy #define M_FW_EQ_ETH_CMD_PFN	0x7
10953bd122eeSRahul Lakkireddy #define V_FW_EQ_ETH_CMD_PFN(x)	((x) << S_FW_EQ_ETH_CMD_PFN)
10963bd122eeSRahul Lakkireddy #define G_FW_EQ_ETH_CMD_PFN(x)	\
10973bd122eeSRahul Lakkireddy 	(((x) >> S_FW_EQ_ETH_CMD_PFN) & M_FW_EQ_ETH_CMD_PFN)
10983bd122eeSRahul Lakkireddy 
10993bd122eeSRahul Lakkireddy #define S_FW_EQ_ETH_CMD_VFN	0
11003bd122eeSRahul Lakkireddy #define M_FW_EQ_ETH_CMD_VFN	0xff
11013bd122eeSRahul Lakkireddy #define V_FW_EQ_ETH_CMD_VFN(x)	((x) << S_FW_EQ_ETH_CMD_VFN)
11023bd122eeSRahul Lakkireddy #define G_FW_EQ_ETH_CMD_VFN(x)	\
11033bd122eeSRahul Lakkireddy 	(((x) >> S_FW_EQ_ETH_CMD_VFN) & M_FW_EQ_ETH_CMD_VFN)
11043bd122eeSRahul Lakkireddy 
11053bd122eeSRahul Lakkireddy #define S_FW_EQ_ETH_CMD_ALLOC		31
11063bd122eeSRahul Lakkireddy #define M_FW_EQ_ETH_CMD_ALLOC		0x1
11073bd122eeSRahul Lakkireddy #define V_FW_EQ_ETH_CMD_ALLOC(x)	((x) << S_FW_EQ_ETH_CMD_ALLOC)
11083bd122eeSRahul Lakkireddy #define G_FW_EQ_ETH_CMD_ALLOC(x)	\
11093bd122eeSRahul Lakkireddy 	(((x) >> S_FW_EQ_ETH_CMD_ALLOC) & M_FW_EQ_ETH_CMD_ALLOC)
11103bd122eeSRahul Lakkireddy #define F_FW_EQ_ETH_CMD_ALLOC	V_FW_EQ_ETH_CMD_ALLOC(1U)
11113bd122eeSRahul Lakkireddy 
11123bd122eeSRahul Lakkireddy #define S_FW_EQ_ETH_CMD_FREE	30
11133bd122eeSRahul Lakkireddy #define M_FW_EQ_ETH_CMD_FREE	0x1
11143bd122eeSRahul Lakkireddy #define V_FW_EQ_ETH_CMD_FREE(x)	((x) << S_FW_EQ_ETH_CMD_FREE)
11153bd122eeSRahul Lakkireddy #define G_FW_EQ_ETH_CMD_FREE(x)	\
11163bd122eeSRahul Lakkireddy 	(((x) >> S_FW_EQ_ETH_CMD_FREE) & M_FW_EQ_ETH_CMD_FREE)
11173bd122eeSRahul Lakkireddy #define F_FW_EQ_ETH_CMD_FREE	V_FW_EQ_ETH_CMD_FREE(1U)
11183bd122eeSRahul Lakkireddy 
11193bd122eeSRahul Lakkireddy #define S_FW_EQ_ETH_CMD_EQSTART		28
11203bd122eeSRahul Lakkireddy #define M_FW_EQ_ETH_CMD_EQSTART		0x1
11213bd122eeSRahul Lakkireddy #define V_FW_EQ_ETH_CMD_EQSTART(x)	((x) << S_FW_EQ_ETH_CMD_EQSTART)
11223bd122eeSRahul Lakkireddy #define G_FW_EQ_ETH_CMD_EQSTART(x)	\
11233bd122eeSRahul Lakkireddy 	(((x) >> S_FW_EQ_ETH_CMD_EQSTART) & M_FW_EQ_ETH_CMD_EQSTART)
11243bd122eeSRahul Lakkireddy #define F_FW_EQ_ETH_CMD_EQSTART	V_FW_EQ_ETH_CMD_EQSTART(1U)
11253bd122eeSRahul Lakkireddy 
11263bd122eeSRahul Lakkireddy #define S_FW_EQ_ETH_CMD_EQID	0
11273bd122eeSRahul Lakkireddy #define M_FW_EQ_ETH_CMD_EQID	0xfffff
11283bd122eeSRahul Lakkireddy #define V_FW_EQ_ETH_CMD_EQID(x)	((x) << S_FW_EQ_ETH_CMD_EQID)
11293bd122eeSRahul Lakkireddy #define G_FW_EQ_ETH_CMD_EQID(x)	\
11303bd122eeSRahul Lakkireddy 	(((x) >> S_FW_EQ_ETH_CMD_EQID) & M_FW_EQ_ETH_CMD_EQID)
11313bd122eeSRahul Lakkireddy 
11325e59e39aSKumar Sanghvi #define S_FW_EQ_ETH_CMD_PHYSEQID        0
11335e59e39aSKumar Sanghvi #define M_FW_EQ_ETH_CMD_PHYSEQID        0xfffff
11345e59e39aSKumar Sanghvi #define G_FW_EQ_ETH_CMD_PHYSEQID(x)     \
11355e59e39aSKumar Sanghvi 	(((x) >> S_FW_EQ_ETH_CMD_PHYSEQID) & M_FW_EQ_ETH_CMD_PHYSEQID)
11365e59e39aSKumar Sanghvi 
11373bd122eeSRahul Lakkireddy #define S_FW_EQ_ETH_CMD_FETCHRO		22
11383bd122eeSRahul Lakkireddy #define M_FW_EQ_ETH_CMD_FETCHRO		0x1
11393bd122eeSRahul Lakkireddy #define V_FW_EQ_ETH_CMD_FETCHRO(x)	((x) << S_FW_EQ_ETH_CMD_FETCHRO)
11403bd122eeSRahul Lakkireddy #define G_FW_EQ_ETH_CMD_FETCHRO(x)	\
11413bd122eeSRahul Lakkireddy 	(((x) >> S_FW_EQ_ETH_CMD_FETCHRO) & M_FW_EQ_ETH_CMD_FETCHRO)
11423bd122eeSRahul Lakkireddy #define F_FW_EQ_ETH_CMD_FETCHRO	V_FW_EQ_ETH_CMD_FETCHRO(1U)
11433bd122eeSRahul Lakkireddy 
11443bd122eeSRahul Lakkireddy #define S_FW_EQ_ETH_CMD_HOSTFCMODE	20
11453bd122eeSRahul Lakkireddy #define M_FW_EQ_ETH_CMD_HOSTFCMODE	0x3
11463bd122eeSRahul Lakkireddy #define V_FW_EQ_ETH_CMD_HOSTFCMODE(x)	((x) << S_FW_EQ_ETH_CMD_HOSTFCMODE)
11473bd122eeSRahul Lakkireddy #define G_FW_EQ_ETH_CMD_HOSTFCMODE(x)	\
11483bd122eeSRahul Lakkireddy 	(((x) >> S_FW_EQ_ETH_CMD_HOSTFCMODE) & M_FW_EQ_ETH_CMD_HOSTFCMODE)
11493bd122eeSRahul Lakkireddy 
11503bd122eeSRahul Lakkireddy #define S_FW_EQ_ETH_CMD_PCIECHN		16
11513bd122eeSRahul Lakkireddy #define M_FW_EQ_ETH_CMD_PCIECHN		0x3
11523bd122eeSRahul Lakkireddy #define V_FW_EQ_ETH_CMD_PCIECHN(x)	((x) << S_FW_EQ_ETH_CMD_PCIECHN)
11533bd122eeSRahul Lakkireddy #define G_FW_EQ_ETH_CMD_PCIECHN(x)	\
11543bd122eeSRahul Lakkireddy 	(((x) >> S_FW_EQ_ETH_CMD_PCIECHN) & M_FW_EQ_ETH_CMD_PCIECHN)
11553bd122eeSRahul Lakkireddy 
11563bd122eeSRahul Lakkireddy #define S_FW_EQ_ETH_CMD_IQID	0
11573bd122eeSRahul Lakkireddy #define M_FW_EQ_ETH_CMD_IQID	0xffff
11583bd122eeSRahul Lakkireddy #define V_FW_EQ_ETH_CMD_IQID(x)	((x) << S_FW_EQ_ETH_CMD_IQID)
11593bd122eeSRahul Lakkireddy #define G_FW_EQ_ETH_CMD_IQID(x)	\
11603bd122eeSRahul Lakkireddy 	(((x) >> S_FW_EQ_ETH_CMD_IQID) & M_FW_EQ_ETH_CMD_IQID)
11613bd122eeSRahul Lakkireddy 
11623bd122eeSRahul Lakkireddy #define S_FW_EQ_ETH_CMD_FBMIN		23
11633bd122eeSRahul Lakkireddy #define M_FW_EQ_ETH_CMD_FBMIN		0x7
11643bd122eeSRahul Lakkireddy #define V_FW_EQ_ETH_CMD_FBMIN(x)	((x) << S_FW_EQ_ETH_CMD_FBMIN)
11653bd122eeSRahul Lakkireddy #define G_FW_EQ_ETH_CMD_FBMIN(x)	\
11663bd122eeSRahul Lakkireddy 	(((x) >> S_FW_EQ_ETH_CMD_FBMIN) & M_FW_EQ_ETH_CMD_FBMIN)
11673bd122eeSRahul Lakkireddy 
11683bd122eeSRahul Lakkireddy #define S_FW_EQ_ETH_CMD_FBMAX		20
11693bd122eeSRahul Lakkireddy #define M_FW_EQ_ETH_CMD_FBMAX		0x7
11703bd122eeSRahul Lakkireddy #define V_FW_EQ_ETH_CMD_FBMAX(x)	((x) << S_FW_EQ_ETH_CMD_FBMAX)
11713bd122eeSRahul Lakkireddy #define G_FW_EQ_ETH_CMD_FBMAX(x)	\
11723bd122eeSRahul Lakkireddy 	(((x) >> S_FW_EQ_ETH_CMD_FBMAX) & M_FW_EQ_ETH_CMD_FBMAX)
11733bd122eeSRahul Lakkireddy 
11743bd122eeSRahul Lakkireddy #define S_FW_EQ_ETH_CMD_CIDXFTHRESH	16
11753bd122eeSRahul Lakkireddy #define M_FW_EQ_ETH_CMD_CIDXFTHRESH	0x7
11763bd122eeSRahul Lakkireddy #define V_FW_EQ_ETH_CMD_CIDXFTHRESH(x)	((x) << S_FW_EQ_ETH_CMD_CIDXFTHRESH)
11773bd122eeSRahul Lakkireddy #define G_FW_EQ_ETH_CMD_CIDXFTHRESH(x)	\
11783bd122eeSRahul Lakkireddy 	(((x) >> S_FW_EQ_ETH_CMD_CIDXFTHRESH) & M_FW_EQ_ETH_CMD_CIDXFTHRESH)
11793bd122eeSRahul Lakkireddy 
11803bd122eeSRahul Lakkireddy #define S_FW_EQ_ETH_CMD_EQSIZE		0
11813bd122eeSRahul Lakkireddy #define M_FW_EQ_ETH_CMD_EQSIZE		0xffff
11823bd122eeSRahul Lakkireddy #define V_FW_EQ_ETH_CMD_EQSIZE(x)	((x) << S_FW_EQ_ETH_CMD_EQSIZE)
11833bd122eeSRahul Lakkireddy #define G_FW_EQ_ETH_CMD_EQSIZE(x)	\
11843bd122eeSRahul Lakkireddy 	(((x) >> S_FW_EQ_ETH_CMD_EQSIZE) & M_FW_EQ_ETH_CMD_EQSIZE)
11853bd122eeSRahul Lakkireddy 
11863bd122eeSRahul Lakkireddy #define S_FW_EQ_ETH_CMD_AUTOEQUEQE	30
11873bd122eeSRahul Lakkireddy #define M_FW_EQ_ETH_CMD_AUTOEQUEQE	0x1
11883bd122eeSRahul Lakkireddy #define V_FW_EQ_ETH_CMD_AUTOEQUEQE(x)	((x) << S_FW_EQ_ETH_CMD_AUTOEQUEQE)
11893bd122eeSRahul Lakkireddy #define G_FW_EQ_ETH_CMD_AUTOEQUEQE(x)	\
11903bd122eeSRahul Lakkireddy 	(((x) >> S_FW_EQ_ETH_CMD_AUTOEQUEQE) & M_FW_EQ_ETH_CMD_AUTOEQUEQE)
11913bd122eeSRahul Lakkireddy #define F_FW_EQ_ETH_CMD_AUTOEQUEQE	V_FW_EQ_ETH_CMD_AUTOEQUEQE(1U)
11923bd122eeSRahul Lakkireddy 
11933bd122eeSRahul Lakkireddy #define S_FW_EQ_ETH_CMD_VIID	16
11943bd122eeSRahul Lakkireddy #define M_FW_EQ_ETH_CMD_VIID	0xfff
11953bd122eeSRahul Lakkireddy #define V_FW_EQ_ETH_CMD_VIID(x)	((x) << S_FW_EQ_ETH_CMD_VIID)
11963bd122eeSRahul Lakkireddy #define G_FW_EQ_ETH_CMD_VIID(x)	\
11973bd122eeSRahul Lakkireddy 	(((x) >> S_FW_EQ_ETH_CMD_VIID) & M_FW_EQ_ETH_CMD_VIID)
11983bd122eeSRahul Lakkireddy 
11993a3aaabcSShagun Agrawal struct fw_eq_ctrl_cmd {
12003a3aaabcSShagun Agrawal 	__be32 op_to_vfn;
12013a3aaabcSShagun Agrawal 	__be32 alloc_to_len16;
12023a3aaabcSShagun Agrawal 	__be32 cmpliqid_eqid;
12033a3aaabcSShagun Agrawal 	__be32 physeqid_pkd;
12043a3aaabcSShagun Agrawal 	__be32 fetchszm_to_iqid;
12053a3aaabcSShagun Agrawal 	__be32 dcaen_to_eqsize;
12063a3aaabcSShagun Agrawal 	__be64 eqaddr;
12073a3aaabcSShagun Agrawal };
12083a3aaabcSShagun Agrawal 
12093a3aaabcSShagun Agrawal #define S_FW_EQ_CTRL_CMD_PFN		8
12103a3aaabcSShagun Agrawal #define V_FW_EQ_CTRL_CMD_PFN(x)		((x) << S_FW_EQ_CTRL_CMD_PFN)
12113a3aaabcSShagun Agrawal 
12123a3aaabcSShagun Agrawal #define S_FW_EQ_CTRL_CMD_VFN		0
12133a3aaabcSShagun Agrawal #define V_FW_EQ_CTRL_CMD_VFN(x)		((x) << S_FW_EQ_CTRL_CMD_VFN)
12143a3aaabcSShagun Agrawal 
12153a3aaabcSShagun Agrawal #define S_FW_EQ_CTRL_CMD_ALLOC		31
12163a3aaabcSShagun Agrawal #define V_FW_EQ_CTRL_CMD_ALLOC(x)	((x) << S_FW_EQ_CTRL_CMD_ALLOC)
12173a3aaabcSShagun Agrawal #define F_FW_EQ_CTRL_CMD_ALLOC		V_FW_EQ_CTRL_CMD_ALLOC(1U)
12183a3aaabcSShagun Agrawal 
12193a3aaabcSShagun Agrawal #define S_FW_EQ_CTRL_CMD_FREE		30
12203a3aaabcSShagun Agrawal #define V_FW_EQ_CTRL_CMD_FREE(x)	((x) << S_FW_EQ_CTRL_CMD_FREE)
12213a3aaabcSShagun Agrawal #define F_FW_EQ_CTRL_CMD_FREE		V_FW_EQ_CTRL_CMD_FREE(1U)
12223a3aaabcSShagun Agrawal 
12233a3aaabcSShagun Agrawal #define S_FW_EQ_CTRL_CMD_EQSTART	28
12243a3aaabcSShagun Agrawal #define V_FW_EQ_CTRL_CMD_EQSTART(x)	((x) << S_FW_EQ_CTRL_CMD_EQSTART)
12253a3aaabcSShagun Agrawal #define F_FW_EQ_CTRL_CMD_EQSTART	V_FW_EQ_CTRL_CMD_EQSTART(1U)
12263a3aaabcSShagun Agrawal 
12273a3aaabcSShagun Agrawal #define S_FW_EQ_CTRL_CMD_CMPLIQID	20
12283a3aaabcSShagun Agrawal #define V_FW_EQ_CTRL_CMD_CMPLIQID(x)	((x) << S_FW_EQ_CTRL_CMD_CMPLIQID)
12293a3aaabcSShagun Agrawal 
12303a3aaabcSShagun Agrawal #define S_FW_EQ_CTRL_CMD_EQID		0
12313a3aaabcSShagun Agrawal #define M_FW_EQ_CTRL_CMD_EQID		0xfffff
12323a3aaabcSShagun Agrawal #define V_FW_EQ_CTRL_CMD_EQID(x)	((x) << S_FW_EQ_CTRL_CMD_EQID)
12333a3aaabcSShagun Agrawal #define G_FW_EQ_CTRL_CMD_EQID(x)	\
12343a3aaabcSShagun Agrawal 	(((x) >> S_FW_EQ_CTRL_CMD_EQID) & M_FW_EQ_CTRL_CMD_EQID)
12353a3aaabcSShagun Agrawal 
12363a3aaabcSShagun Agrawal #define S_FW_EQ_CTRL_CMD_PHYSEQID       0
12373a3aaabcSShagun Agrawal #define M_FW_EQ_CTRL_CMD_PHYSEQID       0xfffff
12383a3aaabcSShagun Agrawal #define V_FW_EQ_CTRL_CMD_PHYSEQID(x)    ((x) << S_FW_EQ_CTRL_CMD_PHYSEQID)
12393a3aaabcSShagun Agrawal #define G_FW_EQ_CTRL_CMD_PHYSEQID(x)    \
12403a3aaabcSShagun Agrawal 	(((x) >> S_FW_EQ_CTRL_CMD_PHYSEQID) & M_FW_EQ_CTRL_CMD_PHYSEQID)
12413a3aaabcSShagun Agrawal 
12423a3aaabcSShagun Agrawal #define S_FW_EQ_CTRL_CMD_FETCHRO	22
12433a3aaabcSShagun Agrawal #define V_FW_EQ_CTRL_CMD_FETCHRO(x)	((x) << S_FW_EQ_CTRL_CMD_FETCHRO)
12443a3aaabcSShagun Agrawal #define F_FW_EQ_CTRL_CMD_FETCHRO	V_FW_EQ_CTRL_CMD_FETCHRO(1U)
12453a3aaabcSShagun Agrawal 
12463a3aaabcSShagun Agrawal #define S_FW_EQ_CTRL_CMD_HOSTFCMODE	20
12473a3aaabcSShagun Agrawal #define M_FW_EQ_CTRL_CMD_HOSTFCMODE	0x3
12483a3aaabcSShagun Agrawal #define V_FW_EQ_CTRL_CMD_HOSTFCMODE(x)	((x) << S_FW_EQ_CTRL_CMD_HOSTFCMODE)
12493a3aaabcSShagun Agrawal 
12503a3aaabcSShagun Agrawal #define S_FW_EQ_CTRL_CMD_PCIECHN	16
12513a3aaabcSShagun Agrawal #define V_FW_EQ_CTRL_CMD_PCIECHN(x)	((x) << S_FW_EQ_CTRL_CMD_PCIECHN)
12523a3aaabcSShagun Agrawal 
12533a3aaabcSShagun Agrawal #define S_FW_EQ_CTRL_CMD_IQID		0
12543a3aaabcSShagun Agrawal #define V_FW_EQ_CTRL_CMD_IQID(x)	((x) << S_FW_EQ_CTRL_CMD_IQID)
12553a3aaabcSShagun Agrawal 
12563a3aaabcSShagun Agrawal #define S_FW_EQ_CTRL_CMD_FBMIN		23
12573a3aaabcSShagun Agrawal #define V_FW_EQ_CTRL_CMD_FBMIN(x)	((x) << S_FW_EQ_CTRL_CMD_FBMIN)
12583a3aaabcSShagun Agrawal 
12593a3aaabcSShagun Agrawal #define S_FW_EQ_CTRL_CMD_FBMAX		20
12603a3aaabcSShagun Agrawal #define V_FW_EQ_CTRL_CMD_FBMAX(x)	((x) << S_FW_EQ_CTRL_CMD_FBMAX)
12613a3aaabcSShagun Agrawal 
12623a3aaabcSShagun Agrawal #define S_FW_EQ_CTRL_CMD_CIDXFTHRESH	16
12633a3aaabcSShagun Agrawal #define V_FW_EQ_CTRL_CMD_CIDXFTHRESH(x)	((x) << S_FW_EQ_CTRL_CMD_CIDXFTHRESH)
12643a3aaabcSShagun Agrawal 
12653a3aaabcSShagun Agrawal #define S_FW_EQ_CTRL_CMD_EQSIZE		0
12663a3aaabcSShagun Agrawal #define V_FW_EQ_CTRL_CMD_EQSIZE(x)	((x) << S_FW_EQ_CTRL_CMD_EQSIZE)
12673a3aaabcSShagun Agrawal 
12683bd122eeSRahul Lakkireddy enum fw_vi_func {
12693bd122eeSRahul Lakkireddy 	FW_VI_FUNC_ETH,
12703bd122eeSRahul Lakkireddy };
12713bd122eeSRahul Lakkireddy 
127224c1d49aSKarra Satwik /* Macros for VIID parsing:
127324c1d49aSKarra Satwik  * VIID - [10:8] PFN, [7] VI Valid, [6:0] VI number
127424c1d49aSKarra Satwik  */
127524c1d49aSKarra Satwik 
127624c1d49aSKarra Satwik #define S_FW_VIID_VIVLD         7
127724c1d49aSKarra Satwik #define M_FW_VIID_VIVLD         0x1
127824c1d49aSKarra Satwik #define G_FW_VIID_VIVLD(x)      (((x) >> S_FW_VIID_VIVLD) & M_FW_VIID_VIVLD)
127924c1d49aSKarra Satwik 
128024c1d49aSKarra Satwik #define S_FW_VIID_VIN           0
128124c1d49aSKarra Satwik #define M_FW_VIID_VIN           0x7F
128224c1d49aSKarra Satwik #define G_FW_VIID_VIN(x)        (((x) >> S_FW_VIID_VIN) & M_FW_VIID_VIN)
128324c1d49aSKarra Satwik 
12843bd122eeSRahul Lakkireddy struct fw_vi_cmd {
12853bd122eeSRahul Lakkireddy 	__be32 op_to_vfn;
12863bd122eeSRahul Lakkireddy 	__be32 alloc_to_len16;
12873bd122eeSRahul Lakkireddy 	__be16 type_to_viid;
12883bd122eeSRahul Lakkireddy 	__u8   mac[6];
12893bd122eeSRahul Lakkireddy 	__u8   portid_pkd;
12903bd122eeSRahul Lakkireddy 	__u8   nmac;
12913bd122eeSRahul Lakkireddy 	__u8   nmac0[6];
12923bd122eeSRahul Lakkireddy 	__be16 norss_rsssize;
12933bd122eeSRahul Lakkireddy 	__u8   nmac1[6];
12943bd122eeSRahul Lakkireddy 	__be16 idsiiq_pkd;
12953bd122eeSRahul Lakkireddy 	__u8   nmac2[6];
12963bd122eeSRahul Lakkireddy 	__be16 idseiq_pkd;
12973bd122eeSRahul Lakkireddy 	__u8   nmac3[6];
12983bd122eeSRahul Lakkireddy 	__be64 r9;
12993bd122eeSRahul Lakkireddy 	__be64 r10;
13003bd122eeSRahul Lakkireddy };
13013bd122eeSRahul Lakkireddy 
13023bd122eeSRahul Lakkireddy #define S_FW_VI_CMD_PFN		8
13033bd122eeSRahul Lakkireddy #define M_FW_VI_CMD_PFN		0x7
13043bd122eeSRahul Lakkireddy #define V_FW_VI_CMD_PFN(x)	((x) << S_FW_VI_CMD_PFN)
13053bd122eeSRahul Lakkireddy #define G_FW_VI_CMD_PFN(x)	(((x) >> S_FW_VI_CMD_PFN) & M_FW_VI_CMD_PFN)
13063bd122eeSRahul Lakkireddy 
13073bd122eeSRahul Lakkireddy #define S_FW_VI_CMD_VFN		0
13083bd122eeSRahul Lakkireddy #define M_FW_VI_CMD_VFN		0xff
13093bd122eeSRahul Lakkireddy #define V_FW_VI_CMD_VFN(x)	((x) << S_FW_VI_CMD_VFN)
13103bd122eeSRahul Lakkireddy #define G_FW_VI_CMD_VFN(x)	(((x) >> S_FW_VI_CMD_VFN) & M_FW_VI_CMD_VFN)
13113bd122eeSRahul Lakkireddy 
13123bd122eeSRahul Lakkireddy #define S_FW_VI_CMD_ALLOC	31
13133bd122eeSRahul Lakkireddy #define M_FW_VI_CMD_ALLOC	0x1
13143bd122eeSRahul Lakkireddy #define V_FW_VI_CMD_ALLOC(x)	((x) << S_FW_VI_CMD_ALLOC)
13153bd122eeSRahul Lakkireddy #define G_FW_VI_CMD_ALLOC(x)	\
13163bd122eeSRahul Lakkireddy 	(((x) >> S_FW_VI_CMD_ALLOC) & M_FW_VI_CMD_ALLOC)
13173bd122eeSRahul Lakkireddy #define F_FW_VI_CMD_ALLOC	V_FW_VI_CMD_ALLOC(1U)
13183bd122eeSRahul Lakkireddy 
13193bd122eeSRahul Lakkireddy #define S_FW_VI_CMD_FREE	30
13203bd122eeSRahul Lakkireddy #define M_FW_VI_CMD_FREE	0x1
13213bd122eeSRahul Lakkireddy #define V_FW_VI_CMD_FREE(x)	((x) << S_FW_VI_CMD_FREE)
13223bd122eeSRahul Lakkireddy #define G_FW_VI_CMD_FREE(x)	(((x) >> S_FW_VI_CMD_FREE) & M_FW_VI_CMD_FREE)
13233bd122eeSRahul Lakkireddy #define F_FW_VI_CMD_FREE	V_FW_VI_CMD_FREE(1U)
13243bd122eeSRahul Lakkireddy 
132524c1d49aSKarra Satwik #define S_FW_VI_CMD_VFVLD       24
132624c1d49aSKarra Satwik #define M_FW_VI_CMD_VFVLD       0x1
132724c1d49aSKarra Satwik #define G_FW_VI_CMD_VFVLD(x)    \
132824c1d49aSKarra Satwik 	(((x) >> S_FW_VI_CMD_VFVLD) & M_FW_VI_CMD_VFVLD)
132924c1d49aSKarra Satwik 
133024c1d49aSKarra Satwik #define S_FW_VI_CMD_VIN         16
133124c1d49aSKarra Satwik #define M_FW_VI_CMD_VIN         0xff
133224c1d49aSKarra Satwik #define G_FW_VI_CMD_VIN(x)      \
133324c1d49aSKarra Satwik 	(((x) >> S_FW_VI_CMD_VIN) & M_FW_VI_CMD_VIN)
133424c1d49aSKarra Satwik 
13353bd122eeSRahul Lakkireddy #define S_FW_VI_CMD_TYPE	15
13363bd122eeSRahul Lakkireddy #define M_FW_VI_CMD_TYPE	0x1
13373bd122eeSRahul Lakkireddy #define V_FW_VI_CMD_TYPE(x)	((x) << S_FW_VI_CMD_TYPE)
13383bd122eeSRahul Lakkireddy #define G_FW_VI_CMD_TYPE(x)	(((x) >> S_FW_VI_CMD_TYPE) & M_FW_VI_CMD_TYPE)
13393bd122eeSRahul Lakkireddy #define F_FW_VI_CMD_TYPE	V_FW_VI_CMD_TYPE(1U)
13403bd122eeSRahul Lakkireddy 
13413bd122eeSRahul Lakkireddy #define S_FW_VI_CMD_FUNC	12
13423bd122eeSRahul Lakkireddy #define M_FW_VI_CMD_FUNC	0x7
13433bd122eeSRahul Lakkireddy #define V_FW_VI_CMD_FUNC(x)	((x) << S_FW_VI_CMD_FUNC)
13443bd122eeSRahul Lakkireddy #define G_FW_VI_CMD_FUNC(x)	(((x) >> S_FW_VI_CMD_FUNC) & M_FW_VI_CMD_FUNC)
13453bd122eeSRahul Lakkireddy 
13463bd122eeSRahul Lakkireddy #define S_FW_VI_CMD_VIID	0
13473bd122eeSRahul Lakkireddy #define M_FW_VI_CMD_VIID	0xfff
13483bd122eeSRahul Lakkireddy #define V_FW_VI_CMD_VIID(x)	((x) << S_FW_VI_CMD_VIID)
13493bd122eeSRahul Lakkireddy #define G_FW_VI_CMD_VIID(x)	(((x) >> S_FW_VI_CMD_VIID) & M_FW_VI_CMD_VIID)
13503bd122eeSRahul Lakkireddy 
13513bd122eeSRahul Lakkireddy #define S_FW_VI_CMD_PORTID	4
13523bd122eeSRahul Lakkireddy #define M_FW_VI_CMD_PORTID	0xf
13533bd122eeSRahul Lakkireddy #define V_FW_VI_CMD_PORTID(x)	((x) << S_FW_VI_CMD_PORTID)
13543bd122eeSRahul Lakkireddy #define G_FW_VI_CMD_PORTID(x)	\
13553bd122eeSRahul Lakkireddy 	(((x) >> S_FW_VI_CMD_PORTID) & M_FW_VI_CMD_PORTID)
13563bd122eeSRahul Lakkireddy 
13573bd122eeSRahul Lakkireddy #define S_FW_VI_CMD_RSSSIZE	0
13583bd122eeSRahul Lakkireddy #define M_FW_VI_CMD_RSSSIZE	0x7ff
13593bd122eeSRahul Lakkireddy #define V_FW_VI_CMD_RSSSIZE(x)	((x) << S_FW_VI_CMD_RSSSIZE)
13603bd122eeSRahul Lakkireddy #define G_FW_VI_CMD_RSSSIZE(x)	\
13613bd122eeSRahul Lakkireddy 	(((x) >> S_FW_VI_CMD_RSSSIZE) & M_FW_VI_CMD_RSSSIZE)
13623bd122eeSRahul Lakkireddy 
13633bd122eeSRahul Lakkireddy /* Special VI_MAC command index ids */
13643bd122eeSRahul Lakkireddy #define FW_VI_MAC_ADD_MAC		0x3FF
13653bd122eeSRahul Lakkireddy #define FW_VI_MAC_ADD_PERSIST_MAC	0x3FE
13666fda3f0dSShagun Agrawal #define FW_VI_MAC_ID_BASED_FREE         0x3FC
13673bd122eeSRahul Lakkireddy 
13683bd122eeSRahul Lakkireddy enum fw_vi_mac_smac {
1369993541b2SKarra Satwik 	FW_VI_MAC_MPS_TCAM_ENTRY = 0x0,
1370993541b2SKarra Satwik 	FW_VI_MAC_SMT_AND_MPSTCAM = 0x3
13713bd122eeSRahul Lakkireddy };
13723bd122eeSRahul Lakkireddy 
13736fda3f0dSShagun Agrawal enum fw_vi_mac_entry_types {
13746fda3f0dSShagun Agrawal 	FW_VI_MAC_TYPE_RAW = 0x2,
13756fda3f0dSShagun Agrawal };
13766fda3f0dSShagun Agrawal 
13773bd122eeSRahul Lakkireddy struct fw_vi_mac_cmd {
13783bd122eeSRahul Lakkireddy 	__be32 op_to_viid;
13793bd122eeSRahul Lakkireddy 	__be32 freemacs_to_len16;
13803bd122eeSRahul Lakkireddy 	union fw_vi_mac {
13813bd122eeSRahul Lakkireddy 		struct fw_vi_mac_exact {
13823bd122eeSRahul Lakkireddy 			__be16 valid_to_idx;
13833bd122eeSRahul Lakkireddy 			__u8   macaddr[6];
13843bd122eeSRahul Lakkireddy 		} exact[7];
13853bd122eeSRahul Lakkireddy 		struct fw_vi_mac_hash {
13863bd122eeSRahul Lakkireddy 			__be64 hashvec;
13873bd122eeSRahul Lakkireddy 		} hash;
13886fda3f0dSShagun Agrawal 		struct fw_vi_mac_raw {
13896fda3f0dSShagun Agrawal 			__be32 raw_idx_pkd;
13906fda3f0dSShagun Agrawal 			__be32 data0_pkd;
13916fda3f0dSShagun Agrawal 			__be32 data1[2];
13926fda3f0dSShagun Agrawal 			__be64 data0m_pkd;
13936fda3f0dSShagun Agrawal 			__be32 data1m[2];
13946fda3f0dSShagun Agrawal 		} raw;
13953bd122eeSRahul Lakkireddy 	} u;
13963bd122eeSRahul Lakkireddy };
13973bd122eeSRahul Lakkireddy 
13983bd122eeSRahul Lakkireddy #define S_FW_VI_MAC_CMD_VIID	0
13993bd122eeSRahul Lakkireddy #define M_FW_VI_MAC_CMD_VIID	0xfff
14003bd122eeSRahul Lakkireddy #define V_FW_VI_MAC_CMD_VIID(x)	((x) << S_FW_VI_MAC_CMD_VIID)
14013bd122eeSRahul Lakkireddy #define G_FW_VI_MAC_CMD_VIID(x)	\
14023bd122eeSRahul Lakkireddy 	(((x) >> S_FW_VI_MAC_CMD_VIID) & M_FW_VI_MAC_CMD_VIID)
14033bd122eeSRahul Lakkireddy 
14046fda3f0dSShagun Agrawal #define S_FW_VI_MAC_CMD_FREEMACS	31
14056fda3f0dSShagun Agrawal #define V_FW_VI_MAC_CMD_FREEMACS(x)	((x) << S_FW_VI_MAC_CMD_FREEMACS)
14066fda3f0dSShagun Agrawal 
14076fda3f0dSShagun Agrawal #define S_FW_VI_MAC_CMD_ENTRY_TYPE      23
14086fda3f0dSShagun Agrawal #define V_FW_VI_MAC_CMD_ENTRY_TYPE(x)   ((x) << S_FW_VI_MAC_CMD_ENTRY_TYPE)
14096fda3f0dSShagun Agrawal 
14103bd122eeSRahul Lakkireddy #define S_FW_VI_MAC_CMD_VALID		15
14113bd122eeSRahul Lakkireddy #define M_FW_VI_MAC_CMD_VALID		0x1
14123bd122eeSRahul Lakkireddy #define V_FW_VI_MAC_CMD_VALID(x)	((x) << S_FW_VI_MAC_CMD_VALID)
14133bd122eeSRahul Lakkireddy #define G_FW_VI_MAC_CMD_VALID(x)	\
14143bd122eeSRahul Lakkireddy 	(((x) >> S_FW_VI_MAC_CMD_VALID) & M_FW_VI_MAC_CMD_VALID)
14153bd122eeSRahul Lakkireddy #define F_FW_VI_MAC_CMD_VALID	V_FW_VI_MAC_CMD_VALID(1U)
14163bd122eeSRahul Lakkireddy 
14173bd122eeSRahul Lakkireddy #define S_FW_VI_MAC_CMD_SMAC_RESULT	10
14183bd122eeSRahul Lakkireddy #define M_FW_VI_MAC_CMD_SMAC_RESULT	0x3
14193bd122eeSRahul Lakkireddy #define V_FW_VI_MAC_CMD_SMAC_RESULT(x)	((x) << S_FW_VI_MAC_CMD_SMAC_RESULT)
14203bd122eeSRahul Lakkireddy #define G_FW_VI_MAC_CMD_SMAC_RESULT(x)	\
14213bd122eeSRahul Lakkireddy 	(((x) >> S_FW_VI_MAC_CMD_SMAC_RESULT) & M_FW_VI_MAC_CMD_SMAC_RESULT)
14223bd122eeSRahul Lakkireddy 
14233bd122eeSRahul Lakkireddy #define S_FW_VI_MAC_CMD_IDX	0
14243bd122eeSRahul Lakkireddy #define M_FW_VI_MAC_CMD_IDX	0x3ff
14253bd122eeSRahul Lakkireddy #define V_FW_VI_MAC_CMD_IDX(x)	((x) << S_FW_VI_MAC_CMD_IDX)
14263bd122eeSRahul Lakkireddy #define G_FW_VI_MAC_CMD_IDX(x)	\
14273bd122eeSRahul Lakkireddy 	(((x) >> S_FW_VI_MAC_CMD_IDX) & M_FW_VI_MAC_CMD_IDX)
14283bd122eeSRahul Lakkireddy 
14296fda3f0dSShagun Agrawal #define S_FW_VI_MAC_CMD_RAW_IDX         16
14306fda3f0dSShagun Agrawal #define M_FW_VI_MAC_CMD_RAW_IDX         0xffff
14316fda3f0dSShagun Agrawal #define V_FW_VI_MAC_CMD_RAW_IDX(x)      ((x) << S_FW_VI_MAC_CMD_RAW_IDX)
14326fda3f0dSShagun Agrawal #define G_FW_VI_MAC_CMD_RAW_IDX(x)      \
14336fda3f0dSShagun Agrawal 	(((x) >> S_FW_VI_MAC_CMD_RAW_IDX) & M_FW_VI_MAC_CMD_RAW_IDX)
14346fda3f0dSShagun Agrawal 
14353bd122eeSRahul Lakkireddy struct fw_vi_rxmode_cmd {
14363bd122eeSRahul Lakkireddy 	__be32 op_to_viid;
14373bd122eeSRahul Lakkireddy 	__be32 retval_len16;
14383bd122eeSRahul Lakkireddy 	__be32 mtu_to_vlanexen;
14393bd122eeSRahul Lakkireddy 	__be32 r4_lo;
14403bd122eeSRahul Lakkireddy };
14413bd122eeSRahul Lakkireddy 
14423bd122eeSRahul Lakkireddy #define S_FW_VI_RXMODE_CMD_VIID		0
14433bd122eeSRahul Lakkireddy #define M_FW_VI_RXMODE_CMD_VIID		0xfff
14443bd122eeSRahul Lakkireddy #define V_FW_VI_RXMODE_CMD_VIID(x)	((x) << S_FW_VI_RXMODE_CMD_VIID)
14453bd122eeSRahul Lakkireddy #define G_FW_VI_RXMODE_CMD_VIID(x)	\
14463bd122eeSRahul Lakkireddy 	(((x) >> S_FW_VI_RXMODE_CMD_VIID) & M_FW_VI_RXMODE_CMD_VIID)
14473bd122eeSRahul Lakkireddy 
14483bd122eeSRahul Lakkireddy #define S_FW_VI_RXMODE_CMD_MTU		16
14493bd122eeSRahul Lakkireddy #define M_FW_VI_RXMODE_CMD_MTU		0xffff
14503bd122eeSRahul Lakkireddy #define V_FW_VI_RXMODE_CMD_MTU(x)	((x) << S_FW_VI_RXMODE_CMD_MTU)
14513bd122eeSRahul Lakkireddy #define G_FW_VI_RXMODE_CMD_MTU(x)	\
14523bd122eeSRahul Lakkireddy 	(((x) >> S_FW_VI_RXMODE_CMD_MTU) & M_FW_VI_RXMODE_CMD_MTU)
14533bd122eeSRahul Lakkireddy 
14543bd122eeSRahul Lakkireddy #define S_FW_VI_RXMODE_CMD_PROMISCEN	14
14553bd122eeSRahul Lakkireddy #define M_FW_VI_RXMODE_CMD_PROMISCEN	0x3
14563bd122eeSRahul Lakkireddy #define V_FW_VI_RXMODE_CMD_PROMISCEN(x)	((x) << S_FW_VI_RXMODE_CMD_PROMISCEN)
14573bd122eeSRahul Lakkireddy #define G_FW_VI_RXMODE_CMD_PROMISCEN(x)	\
14583bd122eeSRahul Lakkireddy 	(((x) >> S_FW_VI_RXMODE_CMD_PROMISCEN) & M_FW_VI_RXMODE_CMD_PROMISCEN)
14593bd122eeSRahul Lakkireddy 
14603bd122eeSRahul Lakkireddy #define S_FW_VI_RXMODE_CMD_ALLMULTIEN		12
14613bd122eeSRahul Lakkireddy #define M_FW_VI_RXMODE_CMD_ALLMULTIEN		0x3
14623bd122eeSRahul Lakkireddy #define V_FW_VI_RXMODE_CMD_ALLMULTIEN(x)	\
14633bd122eeSRahul Lakkireddy 	((x) << S_FW_VI_RXMODE_CMD_ALLMULTIEN)
14643bd122eeSRahul Lakkireddy #define G_FW_VI_RXMODE_CMD_ALLMULTIEN(x)	\
14653bd122eeSRahul Lakkireddy 	(((x) >> S_FW_VI_RXMODE_CMD_ALLMULTIEN) & M_FW_VI_RXMODE_CMD_ALLMULTIEN)
14663bd122eeSRahul Lakkireddy 
14673bd122eeSRahul Lakkireddy #define S_FW_VI_RXMODE_CMD_BROADCASTEN		10
14683bd122eeSRahul Lakkireddy #define M_FW_VI_RXMODE_CMD_BROADCASTEN		0x3
14693bd122eeSRahul Lakkireddy #define V_FW_VI_RXMODE_CMD_BROADCASTEN(x)	\
14703bd122eeSRahul Lakkireddy 	((x) << S_FW_VI_RXMODE_CMD_BROADCASTEN)
14713bd122eeSRahul Lakkireddy #define G_FW_VI_RXMODE_CMD_BROADCASTEN(x)	\
14723bd122eeSRahul Lakkireddy 	(((x) >> S_FW_VI_RXMODE_CMD_BROADCASTEN) & \
14733bd122eeSRahul Lakkireddy 	 M_FW_VI_RXMODE_CMD_BROADCASTEN)
14743bd122eeSRahul Lakkireddy 
14753bd122eeSRahul Lakkireddy #define S_FW_VI_RXMODE_CMD_VLANEXEN	8
14763bd122eeSRahul Lakkireddy #define M_FW_VI_RXMODE_CMD_VLANEXEN	0x3
14773bd122eeSRahul Lakkireddy #define V_FW_VI_RXMODE_CMD_VLANEXEN(x)	((x) << S_FW_VI_RXMODE_CMD_VLANEXEN)
14783bd122eeSRahul Lakkireddy #define G_FW_VI_RXMODE_CMD_VLANEXEN(x)	\
14793bd122eeSRahul Lakkireddy 	(((x) >> S_FW_VI_RXMODE_CMD_VLANEXEN) & M_FW_VI_RXMODE_CMD_VLANEXEN)
14803bd122eeSRahul Lakkireddy 
14813bd122eeSRahul Lakkireddy struct fw_vi_enable_cmd {
14823bd122eeSRahul Lakkireddy 	__be32 op_to_viid;
14833bd122eeSRahul Lakkireddy 	__be32 ien_to_len16;
14843bd122eeSRahul Lakkireddy 	__be16 blinkdur;
14853bd122eeSRahul Lakkireddy 	__be16 r3;
14863bd122eeSRahul Lakkireddy 	__be32 r4;
14873bd122eeSRahul Lakkireddy };
14883bd122eeSRahul Lakkireddy 
14893bd122eeSRahul Lakkireddy #define S_FW_VI_ENABLE_CMD_VIID		0
14903bd122eeSRahul Lakkireddy #define M_FW_VI_ENABLE_CMD_VIID		0xfff
14913bd122eeSRahul Lakkireddy #define V_FW_VI_ENABLE_CMD_VIID(x)	((x) << S_FW_VI_ENABLE_CMD_VIID)
14923bd122eeSRahul Lakkireddy #define G_FW_VI_ENABLE_CMD_VIID(x)	\
14933bd122eeSRahul Lakkireddy 	(((x) >> S_FW_VI_ENABLE_CMD_VIID) & M_FW_VI_ENABLE_CMD_VIID)
14943bd122eeSRahul Lakkireddy 
14953bd122eeSRahul Lakkireddy #define S_FW_VI_ENABLE_CMD_IEN		31
14963bd122eeSRahul Lakkireddy #define M_FW_VI_ENABLE_CMD_IEN		0x1
14973bd122eeSRahul Lakkireddy #define V_FW_VI_ENABLE_CMD_IEN(x)	((x) << S_FW_VI_ENABLE_CMD_IEN)
14983bd122eeSRahul Lakkireddy #define G_FW_VI_ENABLE_CMD_IEN(x)	\
14993bd122eeSRahul Lakkireddy 	(((x) >> S_FW_VI_ENABLE_CMD_IEN) & M_FW_VI_ENABLE_CMD_IEN)
15003bd122eeSRahul Lakkireddy #define F_FW_VI_ENABLE_CMD_IEN	V_FW_VI_ENABLE_CMD_IEN(1U)
15013bd122eeSRahul Lakkireddy 
15023bd122eeSRahul Lakkireddy #define S_FW_VI_ENABLE_CMD_EEN		30
15033bd122eeSRahul Lakkireddy #define M_FW_VI_ENABLE_CMD_EEN		0x1
15043bd122eeSRahul Lakkireddy #define V_FW_VI_ENABLE_CMD_EEN(x)	((x) << S_FW_VI_ENABLE_CMD_EEN)
15053bd122eeSRahul Lakkireddy #define G_FW_VI_ENABLE_CMD_EEN(x)	\
15063bd122eeSRahul Lakkireddy 	(((x) >> S_FW_VI_ENABLE_CMD_EEN) & M_FW_VI_ENABLE_CMD_EEN)
15073bd122eeSRahul Lakkireddy #define F_FW_VI_ENABLE_CMD_EEN	V_FW_VI_ENABLE_CMD_EEN(1U)
15083bd122eeSRahul Lakkireddy 
15093bd122eeSRahul Lakkireddy #define S_FW_VI_ENABLE_CMD_DCB_INFO	28
15103bd122eeSRahul Lakkireddy #define M_FW_VI_ENABLE_CMD_DCB_INFO	0x1
15113bd122eeSRahul Lakkireddy #define V_FW_VI_ENABLE_CMD_DCB_INFO(x)	((x) << S_FW_VI_ENABLE_CMD_DCB_INFO)
15123bd122eeSRahul Lakkireddy #define G_FW_VI_ENABLE_CMD_DCB_INFO(x)	\
15133bd122eeSRahul Lakkireddy 	(((x) >> S_FW_VI_ENABLE_CMD_DCB_INFO) & M_FW_VI_ENABLE_CMD_DCB_INFO)
15143bd122eeSRahul Lakkireddy #define F_FW_VI_ENABLE_CMD_DCB_INFO	V_FW_VI_ENABLE_CMD_DCB_INFO(1U)
15153bd122eeSRahul Lakkireddy 
1516a0a344a8SKumar Sanghvi /* VI VF stats offset definitions */
1517a0a344a8SKumar Sanghvi #define VI_VF_NUM_STATS 16
1518a0a344a8SKumar Sanghvi 
15193bd122eeSRahul Lakkireddy /* VI PF stats offset definitions */
15203bd122eeSRahul Lakkireddy #define VI_PF_NUM_STATS	17
15213bd122eeSRahul Lakkireddy enum fw_vi_stats_pf_index {
15223bd122eeSRahul Lakkireddy 	FW_VI_PF_STAT_TX_BCAST_BYTES_IX,
15233bd122eeSRahul Lakkireddy 	FW_VI_PF_STAT_TX_BCAST_FRAMES_IX,
15243bd122eeSRahul Lakkireddy 	FW_VI_PF_STAT_TX_MCAST_BYTES_IX,
15253bd122eeSRahul Lakkireddy 	FW_VI_PF_STAT_TX_MCAST_FRAMES_IX,
15263bd122eeSRahul Lakkireddy 	FW_VI_PF_STAT_TX_UCAST_BYTES_IX,
15273bd122eeSRahul Lakkireddy 	FW_VI_PF_STAT_TX_UCAST_FRAMES_IX,
15283bd122eeSRahul Lakkireddy 	FW_VI_PF_STAT_TX_OFLD_BYTES_IX,
15293bd122eeSRahul Lakkireddy 	FW_VI_PF_STAT_TX_OFLD_FRAMES_IX,
15303bd122eeSRahul Lakkireddy 	FW_VI_PF_STAT_RX_BYTES_IX,
15313bd122eeSRahul Lakkireddy 	FW_VI_PF_STAT_RX_FRAMES_IX,
15323bd122eeSRahul Lakkireddy 	FW_VI_PF_STAT_RX_BCAST_BYTES_IX,
15333bd122eeSRahul Lakkireddy 	FW_VI_PF_STAT_RX_BCAST_FRAMES_IX,
15343bd122eeSRahul Lakkireddy 	FW_VI_PF_STAT_RX_MCAST_BYTES_IX,
15353bd122eeSRahul Lakkireddy 	FW_VI_PF_STAT_RX_MCAST_FRAMES_IX,
15363bd122eeSRahul Lakkireddy 	FW_VI_PF_STAT_RX_UCAST_BYTES_IX,
15373bd122eeSRahul Lakkireddy 	FW_VI_PF_STAT_RX_UCAST_FRAMES_IX,
15383bd122eeSRahul Lakkireddy 	FW_VI_PF_STAT_RX_ERR_FRAMES_IX
15393bd122eeSRahul Lakkireddy };
15403bd122eeSRahul Lakkireddy 
15413bd122eeSRahul Lakkireddy struct fw_vi_stats_cmd {
15423bd122eeSRahul Lakkireddy 	__be32 op_to_viid;
15433bd122eeSRahul Lakkireddy 	__be32 retval_len16;
15443bd122eeSRahul Lakkireddy 	union fw_vi_stats {
15453bd122eeSRahul Lakkireddy 		struct fw_vi_stats_ctl {
15463bd122eeSRahul Lakkireddy 			__be16 nstats_ix;
15473bd122eeSRahul Lakkireddy 			__be16 r6;
15483bd122eeSRahul Lakkireddy 			__be32 r7;
15493bd122eeSRahul Lakkireddy 			__be64 stat0;
15503bd122eeSRahul Lakkireddy 			__be64 stat1;
15513bd122eeSRahul Lakkireddy 			__be64 stat2;
15523bd122eeSRahul Lakkireddy 			__be64 stat3;
15533bd122eeSRahul Lakkireddy 			__be64 stat4;
15543bd122eeSRahul Lakkireddy 			__be64 stat5;
15553bd122eeSRahul Lakkireddy 		} ctl;
15563bd122eeSRahul Lakkireddy 		struct fw_vi_stats_pf {
15573bd122eeSRahul Lakkireddy 			__be64 tx_bcast_bytes;
15583bd122eeSRahul Lakkireddy 			__be64 tx_bcast_frames;
15593bd122eeSRahul Lakkireddy 			__be64 tx_mcast_bytes;
15603bd122eeSRahul Lakkireddy 			__be64 tx_mcast_frames;
15613bd122eeSRahul Lakkireddy 			__be64 tx_ucast_bytes;
15623bd122eeSRahul Lakkireddy 			__be64 tx_ucast_frames;
15633bd122eeSRahul Lakkireddy 			__be64 tx_offload_bytes;
15643bd122eeSRahul Lakkireddy 			__be64 tx_offload_frames;
15653bd122eeSRahul Lakkireddy 			__be64 rx_pf_bytes;
15663bd122eeSRahul Lakkireddy 			__be64 rx_pf_frames;
15673bd122eeSRahul Lakkireddy 			__be64 rx_bcast_bytes;
15683bd122eeSRahul Lakkireddy 			__be64 rx_bcast_frames;
15693bd122eeSRahul Lakkireddy 			__be64 rx_mcast_bytes;
15703bd122eeSRahul Lakkireddy 			__be64 rx_mcast_frames;
15713bd122eeSRahul Lakkireddy 			__be64 rx_ucast_bytes;
15723bd122eeSRahul Lakkireddy 			__be64 rx_ucast_frames;
15733bd122eeSRahul Lakkireddy 			__be64 rx_err_frames;
15743bd122eeSRahul Lakkireddy 		} pf;
15753bd122eeSRahul Lakkireddy 		struct fw_vi_stats_vf {
15763bd122eeSRahul Lakkireddy 			__be64 tx_bcast_bytes;
15773bd122eeSRahul Lakkireddy 			__be64 tx_bcast_frames;
15783bd122eeSRahul Lakkireddy 			__be64 tx_mcast_bytes;
15793bd122eeSRahul Lakkireddy 			__be64 tx_mcast_frames;
15803bd122eeSRahul Lakkireddy 			__be64 tx_ucast_bytes;
15813bd122eeSRahul Lakkireddy 			__be64 tx_ucast_frames;
15823bd122eeSRahul Lakkireddy 			__be64 tx_drop_frames;
15833bd122eeSRahul Lakkireddy 			__be64 tx_offload_bytes;
15843bd122eeSRahul Lakkireddy 			__be64 tx_offload_frames;
15853bd122eeSRahul Lakkireddy 			__be64 rx_bcast_bytes;
15863bd122eeSRahul Lakkireddy 			__be64 rx_bcast_frames;
15873bd122eeSRahul Lakkireddy 			__be64 rx_mcast_bytes;
15883bd122eeSRahul Lakkireddy 			__be64 rx_mcast_frames;
15893bd122eeSRahul Lakkireddy 			__be64 rx_ucast_bytes;
15903bd122eeSRahul Lakkireddy 			__be64 rx_ucast_frames;
15913bd122eeSRahul Lakkireddy 			__be64 rx_err_frames;
15923bd122eeSRahul Lakkireddy 		} vf;
15933bd122eeSRahul Lakkireddy 	} u;
15943bd122eeSRahul Lakkireddy };
15953bd122eeSRahul Lakkireddy 
1596a0a344a8SKumar Sanghvi #define S_FW_VI_STATS_CMD_VIID		0
1597a0a344a8SKumar Sanghvi #define V_FW_VI_STATS_CMD_VIID(x)	((x) << S_FW_VI_STATS_CMD_VIID)
1598a0a344a8SKumar Sanghvi 
1599a0a344a8SKumar Sanghvi #define S_FW_VI_STATS_CMD_NSTATS	12
1600a0a344a8SKumar Sanghvi #define V_FW_VI_STATS_CMD_NSTATS(x)	((x) << S_FW_VI_STATS_CMD_NSTATS)
1601a0a344a8SKumar Sanghvi 
1602a0a344a8SKumar Sanghvi #define S_FW_VI_STATS_CMD_IX		0
1603a0a344a8SKumar Sanghvi #define V_FW_VI_STATS_CMD_IX(x)		((x) << S_FW_VI_STATS_CMD_IX)
1604a0a344a8SKumar Sanghvi 
160576488837SRahul Lakkireddy /* new 32-bit port capabilities bitmap (fw_port_cap32_t) */
160676488837SRahul Lakkireddy #define FW_PORT_CAP32_SPEED_100M        0x00000001UL
160776488837SRahul Lakkireddy #define FW_PORT_CAP32_SPEED_1G          0x00000002UL
160876488837SRahul Lakkireddy #define FW_PORT_CAP32_SPEED_10G         0x00000004UL
160976488837SRahul Lakkireddy #define FW_PORT_CAP32_SPEED_25G         0x00000008UL
161076488837SRahul Lakkireddy #define FW_PORT_CAP32_SPEED_40G         0x00000010UL
161176488837SRahul Lakkireddy #define FW_PORT_CAP32_SPEED_50G         0x00000020UL
161276488837SRahul Lakkireddy #define FW_PORT_CAP32_SPEED_100G        0x00000040UL
161376488837SRahul Lakkireddy #define FW_PORT_CAP32_FC_RX             0x00010000UL
161476488837SRahul Lakkireddy #define FW_PORT_CAP32_FC_TX             0x00020000UL
161576488837SRahul Lakkireddy #define FW_PORT_CAP32_802_3_PAUSE       0x00040000UL
161676488837SRahul Lakkireddy #define FW_PORT_CAP32_802_3_ASM_DIR     0x00080000UL
161776488837SRahul Lakkireddy #define FW_PORT_CAP32_ANEG              0x00100000UL
161876488837SRahul Lakkireddy #define FW_PORT_CAP32_MDIX              0x00200000UL
161976488837SRahul Lakkireddy #define FW_PORT_CAP32_MDIAUTO           0x00400000UL
162076488837SRahul Lakkireddy #define FW_PORT_CAP32_FEC_RS            0x00800000UL
162176488837SRahul Lakkireddy #define FW_PORT_CAP32_FEC_BASER_RS      0x01000000UL
162262aafe03SKarra Satwik #define FW_PORT_CAP32_FEC_NO_FEC        0x02000000UL
1623a83041b1SKarra Satwik #define FW_PORT_CAP32_FORCE_PAUSE       0x10000000UL
162462aafe03SKarra Satwik #define FW_PORT_CAP32_FORCE_FEC         0x20000000UL
162576488837SRahul Lakkireddy 
162676488837SRahul Lakkireddy #define S_FW_PORT_CAP32_SPEED           0
162776488837SRahul Lakkireddy #define M_FW_PORT_CAP32_SPEED           0xfff
162876488837SRahul Lakkireddy #define V_FW_PORT_CAP32_SPEED(x)        ((x) << S_FW_PORT_CAP32_SPEED)
162976488837SRahul Lakkireddy #define G_FW_PORT_CAP32_SPEED(x) \
163076488837SRahul Lakkireddy 	(((x) >> S_FW_PORT_CAP32_SPEED) & M_FW_PORT_CAP32_SPEED)
163176488837SRahul Lakkireddy 
1632a83041b1SKarra Satwik #define S_FW_PORT_CAP32_FC             16
1633a83041b1SKarra Satwik #define M_FW_PORT_CAP32_FC             0x3
1634a83041b1SKarra Satwik #define V_FW_PORT_CAP32_FC(x)          ((x) << S_FW_PORT_CAP32_FC)
1635a83041b1SKarra Satwik 
1636a83041b1SKarra Satwik #define S_FW_PORT_CAP32_802_3          18
1637a83041b1SKarra Satwik #define M_FW_PORT_CAP32_802_3          0x3
1638a83041b1SKarra Satwik #define V_FW_PORT_CAP32_802_3(x)       ((x) << S_FW_PORT_CAP32_802_3)
1639a83041b1SKarra Satwik 
164076488837SRahul Lakkireddy enum fw_port_mdi32 {
1641a83041b1SKarra Satwik 	FW_PORT_CAP32_MDI_AUTO = 1,
164276488837SRahul Lakkireddy };
164376488837SRahul Lakkireddy 
164476488837SRahul Lakkireddy #define S_FW_PORT_CAP32_MDI 21
164576488837SRahul Lakkireddy #define M_FW_PORT_CAP32_MDI 3
164676488837SRahul Lakkireddy #define V_FW_PORT_CAP32_MDI(x) ((x) << S_FW_PORT_CAP32_MDI)
164776488837SRahul Lakkireddy #define G_FW_PORT_CAP32_MDI(x) \
164876488837SRahul Lakkireddy 	(((x) >> S_FW_PORT_CAP32_MDI) & M_FW_PORT_CAP32_MDI)
164976488837SRahul Lakkireddy 
165062aafe03SKarra Satwik #define S_FW_PORT_CAP32_FEC     23
165162aafe03SKarra Satwik #define M_FW_PORT_CAP32_FEC     0x1f
165262aafe03SKarra Satwik #define V_FW_PORT_CAP32_FEC(x)  ((x) << S_FW_PORT_CAP32_FEC)
165362aafe03SKarra Satwik 
16543bd122eeSRahul Lakkireddy enum fw_port_action {
16552606bdd2SRahul Lakkireddy 	FW_PORT_ACTION_L1_CFG32         = 0x0009,
16562606bdd2SRahul Lakkireddy 	FW_PORT_ACTION_GET_PORT_INFO32  = 0x000a,
16573bd122eeSRahul Lakkireddy };
16583bd122eeSRahul Lakkireddy 
16593bd122eeSRahul Lakkireddy struct fw_port_cmd {
16603bd122eeSRahul Lakkireddy 	__be32 op_to_portid;
16613bd122eeSRahul Lakkireddy 	__be32 action_to_len16;
16623bd122eeSRahul Lakkireddy 	union fw_port {
16633bd122eeSRahul Lakkireddy 		struct fw_port_l1cfg {
16643bd122eeSRahul Lakkireddy 			__be32 rcap;
16653bd122eeSRahul Lakkireddy 			__be32 r;
16663bd122eeSRahul Lakkireddy 		} l1cfg;
16673bd122eeSRahul Lakkireddy 		struct fw_port_l2cfg {
16683bd122eeSRahul Lakkireddy 			__u8   ctlbf;
16693bd122eeSRahul Lakkireddy 			__u8   ovlan3_to_ivlan0;
16703bd122eeSRahul Lakkireddy 			__be16 ivlantype;
16713bd122eeSRahul Lakkireddy 			__be16 txipg_force_pinfo;
16723bd122eeSRahul Lakkireddy 			__be16 mtu;
16733bd122eeSRahul Lakkireddy 			__be16 ovlan0mask;
16743bd122eeSRahul Lakkireddy 			__be16 ovlan0type;
16753bd122eeSRahul Lakkireddy 			__be16 ovlan1mask;
16763bd122eeSRahul Lakkireddy 			__be16 ovlan1type;
16773bd122eeSRahul Lakkireddy 			__be16 ovlan2mask;
16783bd122eeSRahul Lakkireddy 			__be16 ovlan2type;
16793bd122eeSRahul Lakkireddy 			__be16 ovlan3mask;
16803bd122eeSRahul Lakkireddy 			__be16 ovlan3type;
16813bd122eeSRahul Lakkireddy 		} l2cfg;
16823bd122eeSRahul Lakkireddy 		struct fw_port_info {
16833bd122eeSRahul Lakkireddy 			__be32 lstatus_to_modtype;
16843bd122eeSRahul Lakkireddy 			__be16 pcap;
16853bd122eeSRahul Lakkireddy 			__be16 acap;
16863bd122eeSRahul Lakkireddy 			__be16 mtu;
16873bd122eeSRahul Lakkireddy 			__u8   cbllen;
16883bd122eeSRahul Lakkireddy 			__u8   auxlinfo;
16893bd122eeSRahul Lakkireddy 			__u8   dcbxdis_pkd;
16903bd122eeSRahul Lakkireddy 			__u8   r8_lo;
16913bd122eeSRahul Lakkireddy 			__be16 lpacap;
16923bd122eeSRahul Lakkireddy 			__be64 r9;
16933bd122eeSRahul Lakkireddy 		} info;
16943bd122eeSRahul Lakkireddy 		struct fw_port_diags {
16953bd122eeSRahul Lakkireddy 			__u8   diagop;
16963bd122eeSRahul Lakkireddy 			__u8   r[3];
16973bd122eeSRahul Lakkireddy 			__be32 diagval;
16983bd122eeSRahul Lakkireddy 		} diags;
16993bd122eeSRahul Lakkireddy 		union fw_port_dcb {
17003bd122eeSRahul Lakkireddy 			struct fw_port_dcb_pgid {
17013bd122eeSRahul Lakkireddy 				__u8   type;
17023bd122eeSRahul Lakkireddy 				__u8   apply_pkd;
17033bd122eeSRahul Lakkireddy 				__u8   r10_lo[2];
17043bd122eeSRahul Lakkireddy 				__be32 pgid;
17053bd122eeSRahul Lakkireddy 				__be64 r11;
17063bd122eeSRahul Lakkireddy 			} pgid;
17073bd122eeSRahul Lakkireddy 			struct fw_port_dcb_pgrate {
17083bd122eeSRahul Lakkireddy 				__u8   type;
17093bd122eeSRahul Lakkireddy 				__u8   apply_pkd;
17103bd122eeSRahul Lakkireddy 				__u8   r10_lo[5];
17113bd122eeSRahul Lakkireddy 				__u8   num_tcs_supported;
17123bd122eeSRahul Lakkireddy 				__u8   pgrate[8];
17133bd122eeSRahul Lakkireddy 				__u8   tsa[8];
17143bd122eeSRahul Lakkireddy 			} pgrate;
17153bd122eeSRahul Lakkireddy 			struct fw_port_dcb_priorate {
17163bd122eeSRahul Lakkireddy 				__u8   type;
17173bd122eeSRahul Lakkireddy 				__u8   apply_pkd;
17183bd122eeSRahul Lakkireddy 				__u8   r10_lo[6];
17193bd122eeSRahul Lakkireddy 				__u8   strict_priorate[8];
17203bd122eeSRahul Lakkireddy 			} priorate;
17213bd122eeSRahul Lakkireddy 			struct fw_port_dcb_pfc {
17223bd122eeSRahul Lakkireddy 				__u8   type;
17233bd122eeSRahul Lakkireddy 				__u8   pfcen;
17243bd122eeSRahul Lakkireddy 				__u8   r10[5];
17253bd122eeSRahul Lakkireddy 				__u8   max_pfc_tcs;
17263bd122eeSRahul Lakkireddy 				__be64 r11;
17273bd122eeSRahul Lakkireddy 			} pfc;
17283bd122eeSRahul Lakkireddy 			struct fw_port_app_priority {
17293bd122eeSRahul Lakkireddy 				__u8   type;
17303bd122eeSRahul Lakkireddy 				__u8   r10[2];
17313bd122eeSRahul Lakkireddy 				__u8   idx;
17323bd122eeSRahul Lakkireddy 				__u8   user_prio_map;
17333bd122eeSRahul Lakkireddy 				__u8   sel_field;
17343bd122eeSRahul Lakkireddy 				__be16 protocolid;
17353bd122eeSRahul Lakkireddy 				__be64 r12;
17363bd122eeSRahul Lakkireddy 			} app_priority;
17373bd122eeSRahul Lakkireddy 			struct fw_port_dcb_control {
17383bd122eeSRahul Lakkireddy 				__u8   type;
17393bd122eeSRahul Lakkireddy 				__u8   all_syncd_pkd;
17403bd122eeSRahul Lakkireddy 				__be16 dcb_version_to_app_state;
17413bd122eeSRahul Lakkireddy 				__be32 r11;
17423bd122eeSRahul Lakkireddy 				__be64 r12;
17433bd122eeSRahul Lakkireddy 			} control;
17443bd122eeSRahul Lakkireddy 		} dcb;
17452606bdd2SRahul Lakkireddy 		struct fw_port_l1cfg32 {
17462606bdd2SRahul Lakkireddy 			__be32 rcap32;
17472606bdd2SRahul Lakkireddy 			__be32 r;
17482606bdd2SRahul Lakkireddy 		} l1cfg32;
17492606bdd2SRahul Lakkireddy 		struct fw_port_info32 {
17502606bdd2SRahul Lakkireddy 			__be32 lstatus32_to_cbllen32;
17512606bdd2SRahul Lakkireddy 			__be32 auxlinfo32_mtu32;
17522606bdd2SRahul Lakkireddy 			__be32 linkattr32;
17532606bdd2SRahul Lakkireddy 			__be32 pcaps32;
17542606bdd2SRahul Lakkireddy 			__be32 acaps32;
17552606bdd2SRahul Lakkireddy 			__be32 lpacaps32;
17562606bdd2SRahul Lakkireddy 		} info32;
17573bd122eeSRahul Lakkireddy 	} u;
17583bd122eeSRahul Lakkireddy };
17593bd122eeSRahul Lakkireddy 
17603bd122eeSRahul Lakkireddy #define S_FW_PORT_CMD_PORTID	0
17613bd122eeSRahul Lakkireddy #define M_FW_PORT_CMD_PORTID	0xf
17623bd122eeSRahul Lakkireddy #define V_FW_PORT_CMD_PORTID(x)	((x) << S_FW_PORT_CMD_PORTID)
17633bd122eeSRahul Lakkireddy #define G_FW_PORT_CMD_PORTID(x)	\
17643bd122eeSRahul Lakkireddy 	(((x) >> S_FW_PORT_CMD_PORTID) & M_FW_PORT_CMD_PORTID)
17653bd122eeSRahul Lakkireddy 
17663bd122eeSRahul Lakkireddy #define S_FW_PORT_CMD_ACTION	16
17673bd122eeSRahul Lakkireddy #define M_FW_PORT_CMD_ACTION	0xffff
17683bd122eeSRahul Lakkireddy #define V_FW_PORT_CMD_ACTION(x)	((x) << S_FW_PORT_CMD_ACTION)
17693bd122eeSRahul Lakkireddy #define G_FW_PORT_CMD_ACTION(x)	\
17703bd122eeSRahul Lakkireddy 	(((x) >> S_FW_PORT_CMD_ACTION) & M_FW_PORT_CMD_ACTION)
17713bd122eeSRahul Lakkireddy 
17723bd122eeSRahul Lakkireddy #define S_FW_PORT_CMD_LSTATUS		31
17733bd122eeSRahul Lakkireddy #define M_FW_PORT_CMD_LSTATUS		0x1
17743bd122eeSRahul Lakkireddy #define V_FW_PORT_CMD_LSTATUS(x)	((x) << S_FW_PORT_CMD_LSTATUS)
17753bd122eeSRahul Lakkireddy #define G_FW_PORT_CMD_LSTATUS(x)	\
17763bd122eeSRahul Lakkireddy 	(((x) >> S_FW_PORT_CMD_LSTATUS) & M_FW_PORT_CMD_LSTATUS)
17773bd122eeSRahul Lakkireddy #define F_FW_PORT_CMD_LSTATUS	V_FW_PORT_CMD_LSTATUS(1U)
17783bd122eeSRahul Lakkireddy 
17793bd122eeSRahul Lakkireddy #define S_FW_PORT_CMD_LSPEED	24
17803bd122eeSRahul Lakkireddy #define M_FW_PORT_CMD_LSPEED	0x3f
17813bd122eeSRahul Lakkireddy #define V_FW_PORT_CMD_LSPEED(x)	((x) << S_FW_PORT_CMD_LSPEED)
17823bd122eeSRahul Lakkireddy #define G_FW_PORT_CMD_LSPEED(x)	\
17833bd122eeSRahul Lakkireddy 	(((x) >> S_FW_PORT_CMD_LSPEED) & M_FW_PORT_CMD_LSPEED)
17843bd122eeSRahul Lakkireddy 
17853bd122eeSRahul Lakkireddy #define S_FW_PORT_CMD_TXPAUSE		23
17863bd122eeSRahul Lakkireddy #define M_FW_PORT_CMD_TXPAUSE		0x1
17873bd122eeSRahul Lakkireddy #define V_FW_PORT_CMD_TXPAUSE(x)	((x) << S_FW_PORT_CMD_TXPAUSE)
17883bd122eeSRahul Lakkireddy #define G_FW_PORT_CMD_TXPAUSE(x)	\
17893bd122eeSRahul Lakkireddy 	(((x) >> S_FW_PORT_CMD_TXPAUSE) & M_FW_PORT_CMD_TXPAUSE)
17903bd122eeSRahul Lakkireddy #define F_FW_PORT_CMD_TXPAUSE	V_FW_PORT_CMD_TXPAUSE(1U)
17913bd122eeSRahul Lakkireddy 
17923bd122eeSRahul Lakkireddy #define S_FW_PORT_CMD_RXPAUSE		22
17933bd122eeSRahul Lakkireddy #define M_FW_PORT_CMD_RXPAUSE		0x1
17943bd122eeSRahul Lakkireddy #define V_FW_PORT_CMD_RXPAUSE(x)	((x) << S_FW_PORT_CMD_RXPAUSE)
17953bd122eeSRahul Lakkireddy #define G_FW_PORT_CMD_RXPAUSE(x)	\
17963bd122eeSRahul Lakkireddy 	(((x) >> S_FW_PORT_CMD_RXPAUSE) & M_FW_PORT_CMD_RXPAUSE)
17973bd122eeSRahul Lakkireddy #define F_FW_PORT_CMD_RXPAUSE	V_FW_PORT_CMD_RXPAUSE(1U)
17983bd122eeSRahul Lakkireddy 
17993bd122eeSRahul Lakkireddy #define S_FW_PORT_CMD_PTYPE	8
18003bd122eeSRahul Lakkireddy #define M_FW_PORT_CMD_PTYPE	0x1f
18013bd122eeSRahul Lakkireddy #define V_FW_PORT_CMD_PTYPE(x)	((x) << S_FW_PORT_CMD_PTYPE)
18023bd122eeSRahul Lakkireddy #define G_FW_PORT_CMD_PTYPE(x)	\
18033bd122eeSRahul Lakkireddy 	(((x) >> S_FW_PORT_CMD_PTYPE) & M_FW_PORT_CMD_PTYPE)
18043bd122eeSRahul Lakkireddy 
18052606bdd2SRahul Lakkireddy #define S_FW_PORT_CMD_LSTATUS32                31
18062606bdd2SRahul Lakkireddy #define M_FW_PORT_CMD_LSTATUS32                0x1
18072606bdd2SRahul Lakkireddy #define V_FW_PORT_CMD_LSTATUS32(x)     ((x) << S_FW_PORT_CMD_LSTATUS32)
18082606bdd2SRahul Lakkireddy #define F_FW_PORT_CMD_LSTATUS32        V_FW_PORT_CMD_LSTATUS32(1U)
18092606bdd2SRahul Lakkireddy 
18102606bdd2SRahul Lakkireddy #define S_FW_PORT_CMD_LINKDNRC32       28
18112606bdd2SRahul Lakkireddy #define M_FW_PORT_CMD_LINKDNRC32       0x7
18122606bdd2SRahul Lakkireddy #define G_FW_PORT_CMD_LINKDNRC32(x)    \
18132606bdd2SRahul Lakkireddy 	(((x) >> S_FW_PORT_CMD_LINKDNRC32) & M_FW_PORT_CMD_LINKDNRC32)
18142606bdd2SRahul Lakkireddy 
18152606bdd2SRahul Lakkireddy #define S_FW_PORT_CMD_MDIOCAP32                26
18162606bdd2SRahul Lakkireddy #define M_FW_PORT_CMD_MDIOCAP32                0x1
18172606bdd2SRahul Lakkireddy #define V_FW_PORT_CMD_MDIOCAP32(x)     ((x) << S_FW_PORT_CMD_MDIOCAP32)
18182606bdd2SRahul Lakkireddy #define F_FW_PORT_CMD_MDIOCAP32        V_FW_PORT_CMD_MDIOCAP32(1U)
18192606bdd2SRahul Lakkireddy 
18202606bdd2SRahul Lakkireddy #define S_FW_PORT_CMD_MDIOADDR32       21
18212606bdd2SRahul Lakkireddy #define M_FW_PORT_CMD_MDIOADDR32       0x1f
18222606bdd2SRahul Lakkireddy #define G_FW_PORT_CMD_MDIOADDR32(x)    \
18232606bdd2SRahul Lakkireddy 	(((x) >> S_FW_PORT_CMD_MDIOADDR32) & M_FW_PORT_CMD_MDIOADDR32)
18242606bdd2SRahul Lakkireddy 
18252606bdd2SRahul Lakkireddy #define S_FW_PORT_CMD_PORTTYPE32        13
18262606bdd2SRahul Lakkireddy #define M_FW_PORT_CMD_PORTTYPE32        0xff
18272606bdd2SRahul Lakkireddy #define G_FW_PORT_CMD_PORTTYPE32(x)     \
18282606bdd2SRahul Lakkireddy 	(((x) >> S_FW_PORT_CMD_PORTTYPE32) & M_FW_PORT_CMD_PORTTYPE32)
18292606bdd2SRahul Lakkireddy 
18302606bdd2SRahul Lakkireddy #define S_FW_PORT_CMD_MODTYPE32                8
18312606bdd2SRahul Lakkireddy #define M_FW_PORT_CMD_MODTYPE32                0x1f
18322606bdd2SRahul Lakkireddy #define G_FW_PORT_CMD_MODTYPE32(x)     \
18332606bdd2SRahul Lakkireddy 	(((x) >> S_FW_PORT_CMD_MODTYPE32) & M_FW_PORT_CMD_MODTYPE32)
18342606bdd2SRahul Lakkireddy 
18353bd122eeSRahul Lakkireddy /*
18363bd122eeSRahul Lakkireddy  * These are configured into the VPD and hence tools that generate
18373bd122eeSRahul Lakkireddy  * VPD may use this enumeration.
18383bd122eeSRahul Lakkireddy  * extPHY #lanes T4_I2C extI2C BP_Eq BP_ANEG Speed
18393bd122eeSRahul Lakkireddy  *
18403bd122eeSRahul Lakkireddy  * REMEMBER:
18413bd122eeSRahul Lakkireddy  * Update the Common Code t4_hw.c:t4_get_port_type_description()
18423bd122eeSRahul Lakkireddy  * with any new Firmware Port Technology Types!
18433bd122eeSRahul Lakkireddy  */
18443bd122eeSRahul Lakkireddy enum fw_port_type {
18453bd122eeSRahul Lakkireddy 	FW_PORT_TYPE_FIBER_XFI	=  0, /* Y, 1, N, Y, N, N, 10G */
18463bd122eeSRahul Lakkireddy 	FW_PORT_TYPE_FIBER_XAUI	=  1, /* Y, 4, N, Y, N, N, 10G */
18473bd122eeSRahul Lakkireddy 	FW_PORT_TYPE_BT_SGMII	=  2, /* Y, 1, No, No, No, No, 1G/100M */
18483bd122eeSRahul Lakkireddy 	FW_PORT_TYPE_BT_XFI	=  3, /* Y, 1, No, No, No, No, 10G */
18493bd122eeSRahul Lakkireddy 	FW_PORT_TYPE_BT_XAUI	=  4, /* Y, 4, No, No, No, No, 10G/1G/100M? */
18503bd122eeSRahul Lakkireddy 	FW_PORT_TYPE_KX4	=  5, /* No, 4, No, No, Yes, Yes, 10G */
18513bd122eeSRahul Lakkireddy 	FW_PORT_TYPE_CX4	=  6, /* No, 4, No, No, No, No, 10G */
18523bd122eeSRahul Lakkireddy 	FW_PORT_TYPE_KX		=  7, /* No, 1, No, No, Yes, No, 1G */
18533bd122eeSRahul Lakkireddy 	FW_PORT_TYPE_KR		=  8, /* No, 1, No, No, Yes, Yes, 10G */
18543bd122eeSRahul Lakkireddy 	FW_PORT_TYPE_SFP	=  9, /* No, 1, Yes, No, No, No, 10G */
18553bd122eeSRahul Lakkireddy 	FW_PORT_TYPE_BP_AP	= 10,
18563bd122eeSRahul Lakkireddy 	/* No, 1, No, No, Yes, Yes, 10G, BP ANGE */
18573bd122eeSRahul Lakkireddy 	FW_PORT_TYPE_BP4_AP	= 11,
18583bd122eeSRahul Lakkireddy 	/* No, 4, No, No, Yes, Yes, 10G, BP ANGE */
18593bd122eeSRahul Lakkireddy 	FW_PORT_TYPE_QSFP_10G	= 12, /* No, 1, Yes, No, No, No, 10G */
18603bd122eeSRahul Lakkireddy 	FW_PORT_TYPE_QSA	= 13, /* No, 1, Yes, No, No, No, 10G */
18613bd122eeSRahul Lakkireddy 	FW_PORT_TYPE_QSFP	= 14, /* No, 4, Yes, No, No, No, 40G */
18623bd122eeSRahul Lakkireddy 	FW_PORT_TYPE_BP40_BA	= 15,
18633bd122eeSRahul Lakkireddy 	/* No, 4, No, No, Yes, Yes, 40G/10G/1G, BP ANGE */
186449fe15deSRahul Lakkireddy 	FW_PORT_TYPE_KR4_100G	= 16, /* No, 4, 100G/40G/25G, Backplane */
186549fe15deSRahul Lakkireddy 	FW_PORT_TYPE_CR4_QSFP	= 17, /* No, 4, 100G/40G/25G */
186649fe15deSRahul Lakkireddy 	FW_PORT_TYPE_CR_QSFP	= 18, /* No, 1, 25G Spider cable */
186749fe15deSRahul Lakkireddy 	FW_PORT_TYPE_CR2_QSFP	= 19, /* No, 2, 50G */
186849fe15deSRahul Lakkireddy 	FW_PORT_TYPE_SFP28	= 20, /* No, 1, 25G/10G/1G */
186949fe15deSRahul Lakkireddy 	FW_PORT_TYPE_KR_SFP28	= 21, /* No, 1, 25G/10G/1G using Backplane */
18703bd122eeSRahul Lakkireddy 	FW_PORT_TYPE_NONE = M_FW_PORT_CMD_PTYPE
18713bd122eeSRahul Lakkireddy };
18723bd122eeSRahul Lakkireddy 
18733bd122eeSRahul Lakkireddy /* These are read from module's EEPROM and determined once the
18743bd122eeSRahul Lakkireddy  * module is inserted.
18753bd122eeSRahul Lakkireddy  */
18763bd122eeSRahul Lakkireddy enum fw_port_module_type {
18773bd122eeSRahul Lakkireddy 	FW_PORT_MOD_TYPE_NA		= 0x0,
18783bd122eeSRahul Lakkireddy 	FW_PORT_MOD_TYPE_LR		= 0x1,
18793bd122eeSRahul Lakkireddy 	FW_PORT_MOD_TYPE_SR		= 0x2,
18803bd122eeSRahul Lakkireddy 	FW_PORT_MOD_TYPE_ER		= 0x3,
18813bd122eeSRahul Lakkireddy 	FW_PORT_MOD_TYPE_TWINAX_PASSIVE	= 0x4,
18823bd122eeSRahul Lakkireddy 	FW_PORT_MOD_TYPE_TWINAX_ACTIVE	= 0x5,
18833bd122eeSRahul Lakkireddy 	FW_PORT_MOD_TYPE_LRM		= 0x6,
1884439009e4SKarra Satwik 	FW_PORT_MOD_TYPE_ERROR		= M_FW_PORT_CMD_MODTYPE32 - 3,
1885439009e4SKarra Satwik 	FW_PORT_MOD_TYPE_UNKNOWN	= M_FW_PORT_CMD_MODTYPE32 - 2,
1886439009e4SKarra Satwik 	FW_PORT_MOD_TYPE_NOTSUPPORTED	= M_FW_PORT_CMD_MODTYPE32 - 1,
1887439009e4SKarra Satwik 	FW_PORT_MOD_TYPE_NONE		= M_FW_PORT_CMD_MODTYPE32
18883bd122eeSRahul Lakkireddy };
18893bd122eeSRahul Lakkireddy 
18903bd122eeSRahul Lakkireddy /* used by FW and tools may use this to generate VPD */
18913bd122eeSRahul Lakkireddy enum fw_port_mod_sub_type {
18923bd122eeSRahul Lakkireddy 	FW_PORT_MOD_SUB_TYPE_NA,
18933bd122eeSRahul Lakkireddy 	FW_PORT_MOD_SUB_TYPE_MV88E114X	= 0x1,
18943bd122eeSRahul Lakkireddy 	FW_PORT_MOD_SUB_TYPE_TN8022	= 0x2,
18953bd122eeSRahul Lakkireddy 	FW_PORT_MOD_SUB_TYPE_AQ1202	= 0x3,
18963bd122eeSRahul Lakkireddy 	FW_PORT_MOD_SUB_TYPE_88x3120	= 0x4,
18973bd122eeSRahul Lakkireddy 	FW_PORT_MOD_SUB_TYPE_BCM84834	= 0x5,
18983bd122eeSRahul Lakkireddy 	FW_PORT_MOD_SUB_TYPE_BCM5482	= 0x6,
18993bd122eeSRahul Lakkireddy 	FW_PORT_MOD_SUB_TYPE_BCM84856	= 0x7,
19003bd122eeSRahul Lakkireddy 	FW_PORT_MOD_SUB_TYPE_BT_VSC8634	= 0x8,
19013bd122eeSRahul Lakkireddy 
19023bd122eeSRahul Lakkireddy 	/*
19033bd122eeSRahul Lakkireddy 	 * The following will never been in the VPD.  They are TWINAX cable
19043bd122eeSRahul Lakkireddy 	 * lengths decoded from SFP+ module i2c PROMs.  These should almost
19053bd122eeSRahul Lakkireddy 	 * certainly go somewhere else ...
19063bd122eeSRahul Lakkireddy 	 */
19073bd122eeSRahul Lakkireddy 	FW_PORT_MOD_SUB_TYPE_TWINAX_1	= 0x9,
19083bd122eeSRahul Lakkireddy 	FW_PORT_MOD_SUB_TYPE_TWINAX_3	= 0xA,
19093bd122eeSRahul Lakkireddy 	FW_PORT_MOD_SUB_TYPE_TWINAX_5	= 0xB,
19103bd122eeSRahul Lakkireddy 	FW_PORT_MOD_SUB_TYPE_TWINAX_7	= 0xC,
19113bd122eeSRahul Lakkireddy };
19123bd122eeSRahul Lakkireddy 
19133bd122eeSRahul Lakkireddy /* link down reason codes (3b) */
19143bd122eeSRahul Lakkireddy enum fw_port_link_dn_rc {
19153bd122eeSRahul Lakkireddy 	FW_PORT_LINK_DN_RC_NONE,
19163bd122eeSRahul Lakkireddy 	FW_PORT_LINK_DN_RC_REMFLT,	/* Remote fault detected */
19173bd122eeSRahul Lakkireddy 	FW_PORT_LINK_DN_ANEG_F,		/* Auto-negotiation fault */
19183bd122eeSRahul Lakkireddy 	FW_PORT_LINK_DN_RESERVED3,
19193bd122eeSRahul Lakkireddy 	FW_PORT_LINK_DN_OVERHEAT,	/* Port overheated */
19203bd122eeSRahul Lakkireddy 	FW_PORT_LINK_DN_UNKNOWN,	/* Unable to determine reason */
19213bd122eeSRahul Lakkireddy 	FW_PORT_LINK_DN_RX_LOS,		/* No RX signal detected */
19223bd122eeSRahul Lakkireddy 	FW_PORT_LINK_DN_RESERVED7
19233bd122eeSRahul Lakkireddy };
19243bd122eeSRahul Lakkireddy 
19253bd122eeSRahul Lakkireddy /* port stats */
19263bd122eeSRahul Lakkireddy #define FW_NUM_PORT_STATS 50
19273bd122eeSRahul Lakkireddy #define FW_NUM_PORT_TX_STATS 23
19283bd122eeSRahul Lakkireddy #define FW_NUM_PORT_RX_STATS 27
19293bd122eeSRahul Lakkireddy 
19303bd122eeSRahul Lakkireddy enum fw_port_stats_tx_index {
19313bd122eeSRahul Lakkireddy 	FW_STAT_TX_PORT_BYTES_IX,
19323bd122eeSRahul Lakkireddy 	FW_STAT_TX_PORT_FRAMES_IX,
19333bd122eeSRahul Lakkireddy 	FW_STAT_TX_PORT_BCAST_IX,
19343bd122eeSRahul Lakkireddy 	FW_STAT_TX_PORT_MCAST_IX,
19353bd122eeSRahul Lakkireddy 	FW_STAT_TX_PORT_UCAST_IX,
19363bd122eeSRahul Lakkireddy 	FW_STAT_TX_PORT_ERROR_IX,
19373bd122eeSRahul Lakkireddy 	FW_STAT_TX_PORT_64B_IX,
19383bd122eeSRahul Lakkireddy 	FW_STAT_TX_PORT_65B_127B_IX,
19393bd122eeSRahul Lakkireddy 	FW_STAT_TX_PORT_128B_255B_IX,
19403bd122eeSRahul Lakkireddy 	FW_STAT_TX_PORT_256B_511B_IX,
19413bd122eeSRahul Lakkireddy 	FW_STAT_TX_PORT_512B_1023B_IX,
19423bd122eeSRahul Lakkireddy 	FW_STAT_TX_PORT_1024B_1518B_IX,
19433bd122eeSRahul Lakkireddy 	FW_STAT_TX_PORT_1519B_MAX_IX,
19443bd122eeSRahul Lakkireddy 	FW_STAT_TX_PORT_DROP_IX,
19453bd122eeSRahul Lakkireddy 	FW_STAT_TX_PORT_PAUSE_IX,
19463bd122eeSRahul Lakkireddy 	FW_STAT_TX_PORT_PPP0_IX,
19473bd122eeSRahul Lakkireddy 	FW_STAT_TX_PORT_PPP1_IX,
19483bd122eeSRahul Lakkireddy 	FW_STAT_TX_PORT_PPP2_IX,
19493bd122eeSRahul Lakkireddy 	FW_STAT_TX_PORT_PPP3_IX,
19503bd122eeSRahul Lakkireddy 	FW_STAT_TX_PORT_PPP4_IX,
19513bd122eeSRahul Lakkireddy 	FW_STAT_TX_PORT_PPP5_IX,
19523bd122eeSRahul Lakkireddy 	FW_STAT_TX_PORT_PPP6_IX,
19533bd122eeSRahul Lakkireddy 	FW_STAT_TX_PORT_PPP7_IX
19543bd122eeSRahul Lakkireddy };
19553bd122eeSRahul Lakkireddy 
19563bd122eeSRahul Lakkireddy enum fw_port_stat_rx_index {
19573bd122eeSRahul Lakkireddy 	FW_STAT_RX_PORT_BYTES_IX,
19583bd122eeSRahul Lakkireddy 	FW_STAT_RX_PORT_FRAMES_IX,
19593bd122eeSRahul Lakkireddy 	FW_STAT_RX_PORT_BCAST_IX,
19603bd122eeSRahul Lakkireddy 	FW_STAT_RX_PORT_MCAST_IX,
19613bd122eeSRahul Lakkireddy 	FW_STAT_RX_PORT_UCAST_IX,
19623bd122eeSRahul Lakkireddy 	FW_STAT_RX_PORT_MTU_ERROR_IX,
19633bd122eeSRahul Lakkireddy 	FW_STAT_RX_PORT_MTU_CRC_ERROR_IX,
19643bd122eeSRahul Lakkireddy 	FW_STAT_RX_PORT_CRC_ERROR_IX,
19653bd122eeSRahul Lakkireddy 	FW_STAT_RX_PORT_LEN_ERROR_IX,
19663bd122eeSRahul Lakkireddy 	FW_STAT_RX_PORT_SYM_ERROR_IX,
19673bd122eeSRahul Lakkireddy 	FW_STAT_RX_PORT_64B_IX,
19683bd122eeSRahul Lakkireddy 	FW_STAT_RX_PORT_65B_127B_IX,
19693bd122eeSRahul Lakkireddy 	FW_STAT_RX_PORT_128B_255B_IX,
19703bd122eeSRahul Lakkireddy 	FW_STAT_RX_PORT_256B_511B_IX,
19713bd122eeSRahul Lakkireddy 	FW_STAT_RX_PORT_512B_1023B_IX,
19723bd122eeSRahul Lakkireddy 	FW_STAT_RX_PORT_1024B_1518B_IX,
19733bd122eeSRahul Lakkireddy 	FW_STAT_RX_PORT_1519B_MAX_IX,
19743bd122eeSRahul Lakkireddy 	FW_STAT_RX_PORT_PAUSE_IX,
19753bd122eeSRahul Lakkireddy 	FW_STAT_RX_PORT_PPP0_IX,
19763bd122eeSRahul Lakkireddy 	FW_STAT_RX_PORT_PPP1_IX,
19773bd122eeSRahul Lakkireddy 	FW_STAT_RX_PORT_PPP2_IX,
19783bd122eeSRahul Lakkireddy 	FW_STAT_RX_PORT_PPP3_IX,
19793bd122eeSRahul Lakkireddy 	FW_STAT_RX_PORT_PPP4_IX,
19803bd122eeSRahul Lakkireddy 	FW_STAT_RX_PORT_PPP5_IX,
19813bd122eeSRahul Lakkireddy 	FW_STAT_RX_PORT_PPP6_IX,
19823bd122eeSRahul Lakkireddy 	FW_STAT_RX_PORT_PPP7_IX,
19833bd122eeSRahul Lakkireddy 	FW_STAT_RX_PORT_LESS_64B_IX
19843bd122eeSRahul Lakkireddy };
19853bd122eeSRahul Lakkireddy 
19863bd122eeSRahul Lakkireddy struct fw_port_stats_cmd {
19873bd122eeSRahul Lakkireddy 	__be32 op_to_portid;
19883bd122eeSRahul Lakkireddy 	__be32 retval_len16;
19893bd122eeSRahul Lakkireddy 	union fw_port_stats {
19903bd122eeSRahul Lakkireddy 		struct fw_port_stats_ctl {
19913bd122eeSRahul Lakkireddy 			__u8   nstats_bg_bm;
19923bd122eeSRahul Lakkireddy 			__u8   tx_ix;
19933bd122eeSRahul Lakkireddy 			__be16 r6;
19943bd122eeSRahul Lakkireddy 			__be32 r7;
19953bd122eeSRahul Lakkireddy 			__be64 stat0;
19963bd122eeSRahul Lakkireddy 			__be64 stat1;
19973bd122eeSRahul Lakkireddy 			__be64 stat2;
19983bd122eeSRahul Lakkireddy 			__be64 stat3;
19993bd122eeSRahul Lakkireddy 			__be64 stat4;
20003bd122eeSRahul Lakkireddy 			__be64 stat5;
20013bd122eeSRahul Lakkireddy 		} ctl;
20023bd122eeSRahul Lakkireddy 		struct fw_port_stats_all {
20033bd122eeSRahul Lakkireddy 			__be64 tx_bytes;
20043bd122eeSRahul Lakkireddy 			__be64 tx_frames;
20053bd122eeSRahul Lakkireddy 			__be64 tx_bcast;
20063bd122eeSRahul Lakkireddy 			__be64 tx_mcast;
20073bd122eeSRahul Lakkireddy 			__be64 tx_ucast;
20083bd122eeSRahul Lakkireddy 			__be64 tx_error;
20093bd122eeSRahul Lakkireddy 			__be64 tx_64b;
20103bd122eeSRahul Lakkireddy 			__be64 tx_65b_127b;
20113bd122eeSRahul Lakkireddy 			__be64 tx_128b_255b;
20123bd122eeSRahul Lakkireddy 			__be64 tx_256b_511b;
20133bd122eeSRahul Lakkireddy 			__be64 tx_512b_1023b;
20143bd122eeSRahul Lakkireddy 			__be64 tx_1024b_1518b;
20153bd122eeSRahul Lakkireddy 			__be64 tx_1519b_max;
20163bd122eeSRahul Lakkireddy 			__be64 tx_drop;
20173bd122eeSRahul Lakkireddy 			__be64 tx_pause;
20183bd122eeSRahul Lakkireddy 			__be64 tx_ppp0;
20193bd122eeSRahul Lakkireddy 			__be64 tx_ppp1;
20203bd122eeSRahul Lakkireddy 			__be64 tx_ppp2;
20213bd122eeSRahul Lakkireddy 			__be64 tx_ppp3;
20223bd122eeSRahul Lakkireddy 			__be64 tx_ppp4;
20233bd122eeSRahul Lakkireddy 			__be64 tx_ppp5;
20243bd122eeSRahul Lakkireddy 			__be64 tx_ppp6;
20253bd122eeSRahul Lakkireddy 			__be64 tx_ppp7;
20263bd122eeSRahul Lakkireddy 			__be64 rx_bytes;
20273bd122eeSRahul Lakkireddy 			__be64 rx_frames;
20283bd122eeSRahul Lakkireddy 			__be64 rx_bcast;
20293bd122eeSRahul Lakkireddy 			__be64 rx_mcast;
20303bd122eeSRahul Lakkireddy 			__be64 rx_ucast;
20313bd122eeSRahul Lakkireddy 			__be64 rx_mtu_error;
20323bd122eeSRahul Lakkireddy 			__be64 rx_mtu_crc_error;
20333bd122eeSRahul Lakkireddy 			__be64 rx_crc_error;
20343bd122eeSRahul Lakkireddy 			__be64 rx_len_error;
20353bd122eeSRahul Lakkireddy 			__be64 rx_sym_error;
20363bd122eeSRahul Lakkireddy 			__be64 rx_64b;
20373bd122eeSRahul Lakkireddy 			__be64 rx_65b_127b;
20383bd122eeSRahul Lakkireddy 			__be64 rx_128b_255b;
20393bd122eeSRahul Lakkireddy 			__be64 rx_256b_511b;
20403bd122eeSRahul Lakkireddy 			__be64 rx_512b_1023b;
20413bd122eeSRahul Lakkireddy 			__be64 rx_1024b_1518b;
20423bd122eeSRahul Lakkireddy 			__be64 rx_1519b_max;
20433bd122eeSRahul Lakkireddy 			__be64 rx_pause;
20443bd122eeSRahul Lakkireddy 			__be64 rx_ppp0;
20453bd122eeSRahul Lakkireddy 			__be64 rx_ppp1;
20463bd122eeSRahul Lakkireddy 			__be64 rx_ppp2;
20473bd122eeSRahul Lakkireddy 			__be64 rx_ppp3;
20483bd122eeSRahul Lakkireddy 			__be64 rx_ppp4;
20493bd122eeSRahul Lakkireddy 			__be64 rx_ppp5;
20503bd122eeSRahul Lakkireddy 			__be64 rx_ppp6;
20513bd122eeSRahul Lakkireddy 			__be64 rx_ppp7;
20523bd122eeSRahul Lakkireddy 			__be64 rx_less_64b;
20533bd122eeSRahul Lakkireddy 			__be64 rx_bg_drop;
20543bd122eeSRahul Lakkireddy 			__be64 rx_bg_trunc;
20553bd122eeSRahul Lakkireddy 		} all;
20563bd122eeSRahul Lakkireddy 	} u;
20573bd122eeSRahul Lakkireddy };
20583bd122eeSRahul Lakkireddy 
20593bd122eeSRahul Lakkireddy struct fw_rss_ind_tbl_cmd {
20603bd122eeSRahul Lakkireddy 	__be32 op_to_viid;
20613bd122eeSRahul Lakkireddy 	__be32 retval_len16;
20623bd122eeSRahul Lakkireddy 	__be16 niqid;
20633bd122eeSRahul Lakkireddy 	__be16 startidx;
20643bd122eeSRahul Lakkireddy 	__be32 r3;
20653bd122eeSRahul Lakkireddy 	__be32 iq0_to_iq2;
20663bd122eeSRahul Lakkireddy 	__be32 iq3_to_iq5;
20673bd122eeSRahul Lakkireddy 	__be32 iq6_to_iq8;
20683bd122eeSRahul Lakkireddy 	__be32 iq9_to_iq11;
20693bd122eeSRahul Lakkireddy 	__be32 iq12_to_iq14;
20703bd122eeSRahul Lakkireddy 	__be32 iq15_to_iq17;
20713bd122eeSRahul Lakkireddy 	__be32 iq18_to_iq20;
20723bd122eeSRahul Lakkireddy 	__be32 iq21_to_iq23;
20733bd122eeSRahul Lakkireddy 	__be32 iq24_to_iq26;
20743bd122eeSRahul Lakkireddy 	__be32 iq27_to_iq29;
20753bd122eeSRahul Lakkireddy 	__be32 iq30_iq31;
20763bd122eeSRahul Lakkireddy 	__be32 r15_lo;
20773bd122eeSRahul Lakkireddy };
20783bd122eeSRahul Lakkireddy 
20793bd122eeSRahul Lakkireddy #define S_FW_RSS_IND_TBL_CMD_VIID	0
20803bd122eeSRahul Lakkireddy #define M_FW_RSS_IND_TBL_CMD_VIID	0xfff
20813bd122eeSRahul Lakkireddy #define V_FW_RSS_IND_TBL_CMD_VIID(x)	((x) << S_FW_RSS_IND_TBL_CMD_VIID)
20823bd122eeSRahul Lakkireddy #define G_FW_RSS_IND_TBL_CMD_VIID(x)	\
20833bd122eeSRahul Lakkireddy 	(((x) >> S_FW_RSS_IND_TBL_CMD_VIID) & M_FW_RSS_IND_TBL_CMD_VIID)
20843bd122eeSRahul Lakkireddy 
20853bd122eeSRahul Lakkireddy #define S_FW_RSS_IND_TBL_CMD_IQ0	20
20863bd122eeSRahul Lakkireddy #define M_FW_RSS_IND_TBL_CMD_IQ0	0x3ff
20873bd122eeSRahul Lakkireddy #define V_FW_RSS_IND_TBL_CMD_IQ0(x)	((x) << S_FW_RSS_IND_TBL_CMD_IQ0)
20883bd122eeSRahul Lakkireddy #define G_FW_RSS_IND_TBL_CMD_IQ0(x)	\
20893bd122eeSRahul Lakkireddy 	(((x) >> S_FW_RSS_IND_TBL_CMD_IQ0) & M_FW_RSS_IND_TBL_CMD_IQ0)
20903bd122eeSRahul Lakkireddy 
20913bd122eeSRahul Lakkireddy #define S_FW_RSS_IND_TBL_CMD_IQ1	10
20923bd122eeSRahul Lakkireddy #define M_FW_RSS_IND_TBL_CMD_IQ1	0x3ff
20933bd122eeSRahul Lakkireddy #define V_FW_RSS_IND_TBL_CMD_IQ1(x)	((x) << S_FW_RSS_IND_TBL_CMD_IQ1)
20943bd122eeSRahul Lakkireddy #define G_FW_RSS_IND_TBL_CMD_IQ1(x)	\
20953bd122eeSRahul Lakkireddy 	(((x) >> S_FW_RSS_IND_TBL_CMD_IQ1) & M_FW_RSS_IND_TBL_CMD_IQ1)
20963bd122eeSRahul Lakkireddy 
20973bd122eeSRahul Lakkireddy #define S_FW_RSS_IND_TBL_CMD_IQ2	0
20983bd122eeSRahul Lakkireddy #define M_FW_RSS_IND_TBL_CMD_IQ2	0x3ff
20993bd122eeSRahul Lakkireddy #define V_FW_RSS_IND_TBL_CMD_IQ2(x)	((x) << S_FW_RSS_IND_TBL_CMD_IQ2)
21003bd122eeSRahul Lakkireddy #define G_FW_RSS_IND_TBL_CMD_IQ2(x)	\
21013bd122eeSRahul Lakkireddy 	(((x) >> S_FW_RSS_IND_TBL_CMD_IQ2) & M_FW_RSS_IND_TBL_CMD_IQ2)
21023bd122eeSRahul Lakkireddy 
2103bfcb257dSKumar Sanghvi struct fw_rss_glb_config_cmd {
2104bfcb257dSKumar Sanghvi 	__be32 op_to_write;
2105bfcb257dSKumar Sanghvi 	__be32 retval_len16;
2106bfcb257dSKumar Sanghvi 	union fw_rss_glb_config {
2107bfcb257dSKumar Sanghvi 		struct fw_rss_glb_config_manual {
2108bfcb257dSKumar Sanghvi 			__be32 mode_pkd;
2109bfcb257dSKumar Sanghvi 			__be32 r3;
2110bfcb257dSKumar Sanghvi 			__be64 r4;
2111bfcb257dSKumar Sanghvi 			__be64 r5;
2112bfcb257dSKumar Sanghvi 		} manual;
2113bfcb257dSKumar Sanghvi 		struct fw_rss_glb_config_basicvirtual {
2114bfcb257dSKumar Sanghvi 			__be32 mode_keymode;
2115bfcb257dSKumar Sanghvi 			__be32 synmapen_to_hashtoeplitz;
2116bfcb257dSKumar Sanghvi 			__be64 r8;
2117bfcb257dSKumar Sanghvi 			__be64 r9;
2118bfcb257dSKumar Sanghvi 		} basicvirtual;
2119bfcb257dSKumar Sanghvi 	} u;
2120bfcb257dSKumar Sanghvi };
2121bfcb257dSKumar Sanghvi 
2122bfcb257dSKumar Sanghvi #define S_FW_RSS_GLB_CONFIG_CMD_MODE    28
2123bfcb257dSKumar Sanghvi #define M_FW_RSS_GLB_CONFIG_CMD_MODE    0xf
2124bfcb257dSKumar Sanghvi #define G_FW_RSS_GLB_CONFIG_CMD_MODE(x) \
2125bfcb257dSKumar Sanghvi 	(((x) >> S_FW_RSS_GLB_CONFIG_CMD_MODE) & M_FW_RSS_GLB_CONFIG_CMD_MODE)
2126bfcb257dSKumar Sanghvi 
2127bfcb257dSKumar Sanghvi #define FW_RSS_GLB_CONFIG_CMD_MODE_BASICVIRTUAL 1
2128bfcb257dSKumar Sanghvi 
2129bfcb257dSKumar Sanghvi #define S_FW_RSS_GLB_CONFIG_CMD_SYNMAPEN 8
2130bfcb257dSKumar Sanghvi #define V_FW_RSS_GLB_CONFIG_CMD_SYNMAPEN(x) \
2131bfcb257dSKumar Sanghvi 	((x) << S_FW_RSS_GLB_CONFIG_CMD_SYNMAPEN)
2132bfcb257dSKumar Sanghvi #define F_FW_RSS_GLB_CONFIG_CMD_SYNMAPEN V_FW_RSS_GLB_CONFIG_CMD_SYNMAPEN(1U)
2133bfcb257dSKumar Sanghvi 
2134bfcb257dSKumar Sanghvi #define S_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV6 7
2135bfcb257dSKumar Sanghvi #define V_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV6(x) \
2136bfcb257dSKumar Sanghvi 	((x) << S_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV6)
2137bfcb257dSKumar Sanghvi #define F_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV6 \
2138bfcb257dSKumar Sanghvi 	V_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV6(1U)
2139bfcb257dSKumar Sanghvi 
2140bfcb257dSKumar Sanghvi #define S_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV6 6
2141bfcb257dSKumar Sanghvi #define V_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV6(x) \
2142bfcb257dSKumar Sanghvi 	((x) << S_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV6)
2143bfcb257dSKumar Sanghvi #define F_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV6 \
2144bfcb257dSKumar Sanghvi 	V_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV6(1U)
2145bfcb257dSKumar Sanghvi 
2146bfcb257dSKumar Sanghvi #define S_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV4 5
2147bfcb257dSKumar Sanghvi #define V_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV4(x) \
2148bfcb257dSKumar Sanghvi 	((x) << S_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV4)
2149bfcb257dSKumar Sanghvi #define F_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV4 \
2150bfcb257dSKumar Sanghvi 	V_FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV4(1U)
2151bfcb257dSKumar Sanghvi 
2152bfcb257dSKumar Sanghvi #define S_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV4 4
2153bfcb257dSKumar Sanghvi #define V_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV4(x) \
2154bfcb257dSKumar Sanghvi 	((x) << S_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV4)
2155bfcb257dSKumar Sanghvi #define F_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV4 \
2156bfcb257dSKumar Sanghvi 	V_FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV4(1U)
2157bfcb257dSKumar Sanghvi 
2158bfcb257dSKumar Sanghvi #define S_FW_RSS_GLB_CONFIG_CMD_OFDMAPEN 3
2159bfcb257dSKumar Sanghvi #define V_FW_RSS_GLB_CONFIG_CMD_OFDMAPEN(x) \
2160bfcb257dSKumar Sanghvi 	((x) << S_FW_RSS_GLB_CONFIG_CMD_OFDMAPEN)
2161bfcb257dSKumar Sanghvi #define F_FW_RSS_GLB_CONFIG_CMD_OFDMAPEN V_FW_RSS_GLB_CONFIG_CMD_OFDMAPEN(1U)
2162bfcb257dSKumar Sanghvi 
2163bfcb257dSKumar Sanghvi #define S_FW_RSS_GLB_CONFIG_CMD_TNLMAPEN 2
2164bfcb257dSKumar Sanghvi #define V_FW_RSS_GLB_CONFIG_CMD_TNLMAPEN(x) \
2165bfcb257dSKumar Sanghvi 	((x) << S_FW_RSS_GLB_CONFIG_CMD_TNLMAPEN)
2166bfcb257dSKumar Sanghvi #define F_FW_RSS_GLB_CONFIG_CMD_TNLMAPEN V_FW_RSS_GLB_CONFIG_CMD_TNLMAPEN(1U)
2167bfcb257dSKumar Sanghvi 
2168bfcb257dSKumar Sanghvi #define S_FW_RSS_GLB_CONFIG_CMD_TNLALLLKP 1
2169bfcb257dSKumar Sanghvi #define V_FW_RSS_GLB_CONFIG_CMD_TNLALLLKP(x) \
2170bfcb257dSKumar Sanghvi 	((x) << S_FW_RSS_GLB_CONFIG_CMD_TNLALLLKP)
2171bfcb257dSKumar Sanghvi #define F_FW_RSS_GLB_CONFIG_CMD_TNLALLLKP \
2172bfcb257dSKumar Sanghvi 	V_FW_RSS_GLB_CONFIG_CMD_TNLALLLKP(1U)
2173bfcb257dSKumar Sanghvi 
2174bfcb257dSKumar Sanghvi #define S_FW_RSS_GLB_CONFIG_CMD_HASHTOEPLITZ 0
2175bfcb257dSKumar Sanghvi #define V_FW_RSS_GLB_CONFIG_CMD_HASHTOEPLITZ(x) \
2176bfcb257dSKumar Sanghvi 	((x) << S_FW_RSS_GLB_CONFIG_CMD_HASHTOEPLITZ)
2177bfcb257dSKumar Sanghvi #define F_FW_RSS_GLB_CONFIG_CMD_HASHTOEPLITZ \
2178bfcb257dSKumar Sanghvi 	V_FW_RSS_GLB_CONFIG_CMD_HASHTOEPLITZ(1U)
2179bfcb257dSKumar Sanghvi 
21803bd122eeSRahul Lakkireddy struct fw_rss_vi_config_cmd {
21813bd122eeSRahul Lakkireddy 	__be32 op_to_viid;
21823bd122eeSRahul Lakkireddy 	__be32 retval_len16;
21833bd122eeSRahul Lakkireddy 	union fw_rss_vi_config {
21843bd122eeSRahul Lakkireddy 		struct fw_rss_vi_config_manual {
21853bd122eeSRahul Lakkireddy 			__be64 r3;
21863bd122eeSRahul Lakkireddy 			__be64 r4;
21873bd122eeSRahul Lakkireddy 			__be64 r5;
21883bd122eeSRahul Lakkireddy 		} manual;
21893bd122eeSRahul Lakkireddy 		struct fw_rss_vi_config_basicvirtual {
21903bd122eeSRahul Lakkireddy 			__be32 r6;
21913bd122eeSRahul Lakkireddy 			__be32 defaultq_to_udpen;
21923bd122eeSRahul Lakkireddy 			__be64 r9;
21933bd122eeSRahul Lakkireddy 			__be64 r10;
21943bd122eeSRahul Lakkireddy 		} basicvirtual;
21953bd122eeSRahul Lakkireddy 	} u;
21963bd122eeSRahul Lakkireddy };
21973bd122eeSRahul Lakkireddy 
21983bd122eeSRahul Lakkireddy #define S_FW_RSS_VI_CONFIG_CMD_VIID	0
21993bd122eeSRahul Lakkireddy #define M_FW_RSS_VI_CONFIG_CMD_VIID	0xfff
22003bd122eeSRahul Lakkireddy #define V_FW_RSS_VI_CONFIG_CMD_VIID(x)	((x) << S_FW_RSS_VI_CONFIG_CMD_VIID)
22013bd122eeSRahul Lakkireddy #define G_FW_RSS_VI_CONFIG_CMD_VIID(x)	\
22023bd122eeSRahul Lakkireddy 	(((x) >> S_FW_RSS_VI_CONFIG_CMD_VIID) & M_FW_RSS_VI_CONFIG_CMD_VIID)
22033bd122eeSRahul Lakkireddy 
22043bd122eeSRahul Lakkireddy #define S_FW_RSS_VI_CONFIG_CMD_DEFAULTQ		16
22053bd122eeSRahul Lakkireddy #define M_FW_RSS_VI_CONFIG_CMD_DEFAULTQ		0x3ff
22063bd122eeSRahul Lakkireddy #define V_FW_RSS_VI_CONFIG_CMD_DEFAULTQ(x)	\
22073bd122eeSRahul Lakkireddy 	((x) << S_FW_RSS_VI_CONFIG_CMD_DEFAULTQ)
22083bd122eeSRahul Lakkireddy #define G_FW_RSS_VI_CONFIG_CMD_DEFAULTQ(x)	\
22093bd122eeSRahul Lakkireddy 	(((x) >> S_FW_RSS_VI_CONFIG_CMD_DEFAULTQ) & \
22103bd122eeSRahul Lakkireddy 	 M_FW_RSS_VI_CONFIG_CMD_DEFAULTQ)
22113bd122eeSRahul Lakkireddy 
22123bd122eeSRahul Lakkireddy #define S_FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN	4
22133bd122eeSRahul Lakkireddy #define M_FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN	0x1
22143bd122eeSRahul Lakkireddy #define V_FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN(x)	\
22153bd122eeSRahul Lakkireddy 	((x) << S_FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN)
22163bd122eeSRahul Lakkireddy #define G_FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN(x)	\
22173bd122eeSRahul Lakkireddy 	(((x) >> S_FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN) & \
22183bd122eeSRahul Lakkireddy 	 M_FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN)
22193bd122eeSRahul Lakkireddy #define F_FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN	\
22203bd122eeSRahul Lakkireddy 	V_FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN(1U)
22213bd122eeSRahul Lakkireddy 
22223bd122eeSRahul Lakkireddy #define S_FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN	3
22233bd122eeSRahul Lakkireddy #define M_FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN	0x1
22243bd122eeSRahul Lakkireddy #define V_FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN(x)	\
22253bd122eeSRahul Lakkireddy 	((x) << S_FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN)
22263bd122eeSRahul Lakkireddy #define G_FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN(x)	\
22273bd122eeSRahul Lakkireddy 	(((x) >> S_FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN) & \
22283bd122eeSRahul Lakkireddy 	 M_FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN)
22293bd122eeSRahul Lakkireddy #define F_FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN	\
22303bd122eeSRahul Lakkireddy 	V_FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN(1U)
22313bd122eeSRahul Lakkireddy 
22323bd122eeSRahul Lakkireddy #define S_FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN	2
22333bd122eeSRahul Lakkireddy #define M_FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN	0x1
22343bd122eeSRahul Lakkireddy #define V_FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN(x)	\
22353bd122eeSRahul Lakkireddy 	((x) << S_FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN)
22363bd122eeSRahul Lakkireddy #define G_FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN(x)	\
22373bd122eeSRahul Lakkireddy 	(((x) >> S_FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN) & \
22383bd122eeSRahul Lakkireddy 	 M_FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN)
22393bd122eeSRahul Lakkireddy #define F_FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN	\
22403bd122eeSRahul Lakkireddy 	V_FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN(1U)
22413bd122eeSRahul Lakkireddy 
22423bd122eeSRahul Lakkireddy #define S_FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN	1
22433bd122eeSRahul Lakkireddy #define M_FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN	0x1
22443bd122eeSRahul Lakkireddy #define V_FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN(x)	\
22453bd122eeSRahul Lakkireddy 	((x) << S_FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN)
22463bd122eeSRahul Lakkireddy #define G_FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN(x)	\
22473bd122eeSRahul Lakkireddy 	(((x) >> S_FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN) & \
22483bd122eeSRahul Lakkireddy 	 M_FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN)
22493bd122eeSRahul Lakkireddy #define F_FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN	\
22503bd122eeSRahul Lakkireddy 	V_FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN(1U)
22513bd122eeSRahul Lakkireddy 
22523bd122eeSRahul Lakkireddy #define S_FW_RSS_VI_CONFIG_CMD_UDPEN	0
22533bd122eeSRahul Lakkireddy #define M_FW_RSS_VI_CONFIG_CMD_UDPEN	0x1
22543bd122eeSRahul Lakkireddy #define V_FW_RSS_VI_CONFIG_CMD_UDPEN(x)	((x) << S_FW_RSS_VI_CONFIG_CMD_UDPEN)
22553bd122eeSRahul Lakkireddy #define G_FW_RSS_VI_CONFIG_CMD_UDPEN(x)	\
22563bd122eeSRahul Lakkireddy 	(((x) >> S_FW_RSS_VI_CONFIG_CMD_UDPEN) & M_FW_RSS_VI_CONFIG_CMD_UDPEN)
22573bd122eeSRahul Lakkireddy #define F_FW_RSS_VI_CONFIG_CMD_UDPEN	V_FW_RSS_VI_CONFIG_CMD_UDPEN(1U)
22583bd122eeSRahul Lakkireddy 
22593f2c1e20SShagun Agrawal struct fw_clip_cmd {
22603f2c1e20SShagun Agrawal 	__be32 op_to_write;
22613f2c1e20SShagun Agrawal 	__be32 alloc_to_len16;
22623f2c1e20SShagun Agrawal 	__be64 ip_hi;
22633f2c1e20SShagun Agrawal 	__be64 ip_lo;
22643f2c1e20SShagun Agrawal 	__be32 r4[2];
22653f2c1e20SShagun Agrawal };
22663f2c1e20SShagun Agrawal 
22673f2c1e20SShagun Agrawal #define S_FW_CLIP_CMD_ALLOC		31
22683f2c1e20SShagun Agrawal #define V_FW_CLIP_CMD_ALLOC(x)		((x) << S_FW_CLIP_CMD_ALLOC)
22693f2c1e20SShagun Agrawal #define F_FW_CLIP_CMD_ALLOC		V_FW_CLIP_CMD_ALLOC(1U)
22703f2c1e20SShagun Agrawal 
22713f2c1e20SShagun Agrawal #define S_FW_CLIP_CMD_FREE		30
22723f2c1e20SShagun Agrawal #define V_FW_CLIP_CMD_FREE(x)		((x) << S_FW_CLIP_CMD_FREE)
22733f2c1e20SShagun Agrawal #define F_FW_CLIP_CMD_FREE		V_FW_CLIP_CMD_FREE(1U)
22743f2c1e20SShagun Agrawal 
22753bd122eeSRahul Lakkireddy /******************************************************************************
22763bd122eeSRahul Lakkireddy  *   D E B U G   C O M M A N D s
22773bd122eeSRahul Lakkireddy  ******************************************************/
22783bd122eeSRahul Lakkireddy 
22793bd122eeSRahul Lakkireddy struct fw_debug_cmd {
22803bd122eeSRahul Lakkireddy 	__be32 op_type;
22813bd122eeSRahul Lakkireddy 	__be32 len16_pkd;
22823bd122eeSRahul Lakkireddy 	union fw_debug {
22833bd122eeSRahul Lakkireddy 		struct fw_debug_assert {
22843bd122eeSRahul Lakkireddy 			__be32 fcid;
22853bd122eeSRahul Lakkireddy 			__be32 line;
22863bd122eeSRahul Lakkireddy 			__be32 x;
22873bd122eeSRahul Lakkireddy 			__be32 y;
22883bd122eeSRahul Lakkireddy 			__u8   filename_0_7[8];
22893bd122eeSRahul Lakkireddy 			__u8   filename_8_15[8];
22903bd122eeSRahul Lakkireddy 			__be64 r3;
22913bd122eeSRahul Lakkireddy 		} assert;
22923bd122eeSRahul Lakkireddy 		struct fw_debug_prt {
22933bd122eeSRahul Lakkireddy 			__be16 dprtstridx;
22943bd122eeSRahul Lakkireddy 			__be16 r3[3];
22953bd122eeSRahul Lakkireddy 			__be32 dprtstrparam0;
22963bd122eeSRahul Lakkireddy 			__be32 dprtstrparam1;
22973bd122eeSRahul Lakkireddy 			__be32 dprtstrparam2;
22983bd122eeSRahul Lakkireddy 			__be32 dprtstrparam3;
22993bd122eeSRahul Lakkireddy 		} prt;
23003bd122eeSRahul Lakkireddy 	} u;
23013bd122eeSRahul Lakkireddy };
23023bd122eeSRahul Lakkireddy 
23033bd122eeSRahul Lakkireddy #define S_FW_DEBUG_CMD_TYPE	0
23043bd122eeSRahul Lakkireddy #define M_FW_DEBUG_CMD_TYPE	0xff
23053bd122eeSRahul Lakkireddy #define V_FW_DEBUG_CMD_TYPE(x)	((x) << S_FW_DEBUG_CMD_TYPE)
23063bd122eeSRahul Lakkireddy #define G_FW_DEBUG_CMD_TYPE(x)	\
23073bd122eeSRahul Lakkireddy 	(((x) >> S_FW_DEBUG_CMD_TYPE) & M_FW_DEBUG_CMD_TYPE)
23083bd122eeSRahul Lakkireddy 
23093bd122eeSRahul Lakkireddy /******************************************************************************
23103bd122eeSRahul Lakkireddy  *   P C I E   F W   R E G I S T E R
23113bd122eeSRahul Lakkireddy  **************************************/
23123bd122eeSRahul Lakkireddy 
23133bd122eeSRahul Lakkireddy /*
23143bd122eeSRahul Lakkireddy  * Register definitions for the PCIE_FW register which the firmware uses
23153bd122eeSRahul Lakkireddy  * to retain status across RESETs.  This register should be considered
23163bd122eeSRahul Lakkireddy  * as a READ-ONLY register for Host Software and only to be used to
23173bd122eeSRahul Lakkireddy  * track firmware initialization/error state, etc.
23183bd122eeSRahul Lakkireddy  */
23193bd122eeSRahul Lakkireddy #define S_PCIE_FW_ERR		31
23203bd122eeSRahul Lakkireddy #define M_PCIE_FW_ERR		0x1
23213bd122eeSRahul Lakkireddy #define V_PCIE_FW_ERR(x)	((x) << S_PCIE_FW_ERR)
23223bd122eeSRahul Lakkireddy #define G_PCIE_FW_ERR(x)	(((x) >> S_PCIE_FW_ERR) & M_PCIE_FW_ERR)
23233bd122eeSRahul Lakkireddy #define F_PCIE_FW_ERR		V_PCIE_FW_ERR(1U)
23243bd122eeSRahul Lakkireddy 
23253bd122eeSRahul Lakkireddy #define S_PCIE_FW_INIT		30
23263bd122eeSRahul Lakkireddy #define M_PCIE_FW_INIT		0x1
23273bd122eeSRahul Lakkireddy #define V_PCIE_FW_INIT(x)	((x) << S_PCIE_FW_INIT)
23283bd122eeSRahul Lakkireddy #define G_PCIE_FW_INIT(x)	(((x) >> S_PCIE_FW_INIT) & M_PCIE_FW_INIT)
23293bd122eeSRahul Lakkireddy #define F_PCIE_FW_INIT		V_PCIE_FW_INIT(1U)
23303bd122eeSRahul Lakkireddy 
23313bd122eeSRahul Lakkireddy #define S_PCIE_FW_HALT          29
23323bd122eeSRahul Lakkireddy #define M_PCIE_FW_HALT          0x1
23333bd122eeSRahul Lakkireddy #define V_PCIE_FW_HALT(x)       ((x) << S_PCIE_FW_HALT)
23343bd122eeSRahul Lakkireddy #define G_PCIE_FW_HALT(x)       (((x) >> S_PCIE_FW_HALT) & M_PCIE_FW_HALT)
23353bd122eeSRahul Lakkireddy #define F_PCIE_FW_HALT          V_PCIE_FW_HALT(1U)
23363bd122eeSRahul Lakkireddy 
23373bd122eeSRahul Lakkireddy #define S_PCIE_FW_EVAL		24
23383bd122eeSRahul Lakkireddy #define M_PCIE_FW_EVAL		0x7
23393bd122eeSRahul Lakkireddy #define V_PCIE_FW_EVAL(x)	((x) << S_PCIE_FW_EVAL)
23403bd122eeSRahul Lakkireddy #define G_PCIE_FW_EVAL(x)	(((x) >> S_PCIE_FW_EVAL) & M_PCIE_FW_EVAL)
23413bd122eeSRahul Lakkireddy 
23423bd122eeSRahul Lakkireddy #define S_PCIE_FW_MASTER_VLD	15
23433bd122eeSRahul Lakkireddy #define M_PCIE_FW_MASTER_VLD	0x1
23443bd122eeSRahul Lakkireddy #define V_PCIE_FW_MASTER_VLD(x)	((x) << S_PCIE_FW_MASTER_VLD)
23453bd122eeSRahul Lakkireddy #define G_PCIE_FW_MASTER_VLD(x)	\
23463bd122eeSRahul Lakkireddy 	(((x) >> S_PCIE_FW_MASTER_VLD) & M_PCIE_FW_MASTER_VLD)
23473bd122eeSRahul Lakkireddy #define F_PCIE_FW_MASTER_VLD	V_PCIE_FW_MASTER_VLD(1U)
23483bd122eeSRahul Lakkireddy 
23493bd122eeSRahul Lakkireddy #define S_PCIE_FW_MASTER	12
23503bd122eeSRahul Lakkireddy #define M_PCIE_FW_MASTER	0x7
23513bd122eeSRahul Lakkireddy #define V_PCIE_FW_MASTER(x)	((x) << S_PCIE_FW_MASTER)
23523bd122eeSRahul Lakkireddy #define G_PCIE_FW_MASTER(x)	(((x) >> S_PCIE_FW_MASTER) & M_PCIE_FW_MASTER)
23533bd122eeSRahul Lakkireddy 
23543bd122eeSRahul Lakkireddy /******************************************************************************
23553bd122eeSRahul Lakkireddy  *   B I N A R Y   H E A D E R   F O R M A T
23563bd122eeSRahul Lakkireddy  **********************************************/
23573bd122eeSRahul Lakkireddy 
23583bd122eeSRahul Lakkireddy /*
23593bd122eeSRahul Lakkireddy  * firmware binary header format
23603bd122eeSRahul Lakkireddy  */
23613bd122eeSRahul Lakkireddy struct fw_hdr {
23623bd122eeSRahul Lakkireddy 	__u8	ver;
23633bd122eeSRahul Lakkireddy 	__u8	chip;			/* terminator chip family */
23643bd122eeSRahul Lakkireddy 	__be16	len512;			/* bin length in units of 512-bytes */
23653bd122eeSRahul Lakkireddy 	__be32	fw_ver;			/* firmware version */
23663bd122eeSRahul Lakkireddy 	__be32	tp_microcode_ver;	/* tcp processor microcode version */
23673bd122eeSRahul Lakkireddy 	__u8	intfver_nic;
23683bd122eeSRahul Lakkireddy 	__u8	intfver_vnic;
23693bd122eeSRahul Lakkireddy 	__u8	intfver_ofld;
23703bd122eeSRahul Lakkireddy 	__u8	intfver_ri;
23713bd122eeSRahul Lakkireddy 	__u8	intfver_iscsipdu;
23723bd122eeSRahul Lakkireddy 	__u8	intfver_iscsi;
23733bd122eeSRahul Lakkireddy 	__u8	intfver_fcoepdu;
23743bd122eeSRahul Lakkireddy 	__u8	intfver_fcoe;
23753bd122eeSRahul Lakkireddy 	__u32	reserved2;
23763bd122eeSRahul Lakkireddy 	__u32	reserved3;
23773bd122eeSRahul Lakkireddy 	__u32	magic;			/* runtime or bootstrap fw */
23783bd122eeSRahul Lakkireddy 	__be32	flags;
23793bd122eeSRahul Lakkireddy 	__be32	reserved6[23];
23803bd122eeSRahul Lakkireddy };
23813bd122eeSRahul Lakkireddy 
23823bd122eeSRahul Lakkireddy #define S_FW_HDR_FW_VER_MAJOR	24
23833bd122eeSRahul Lakkireddy #define M_FW_HDR_FW_VER_MAJOR	0xff
23843bd122eeSRahul Lakkireddy #define V_FW_HDR_FW_VER_MAJOR(x) \
23853bd122eeSRahul Lakkireddy 	((x) << S_FW_HDR_FW_VER_MAJOR)
23863bd122eeSRahul Lakkireddy #define G_FW_HDR_FW_VER_MAJOR(x) \
23873bd122eeSRahul Lakkireddy 	(((x) >> S_FW_HDR_FW_VER_MAJOR) & M_FW_HDR_FW_VER_MAJOR)
23883bd122eeSRahul Lakkireddy 
23893bd122eeSRahul Lakkireddy #define S_FW_HDR_FW_VER_MINOR	16
23903bd122eeSRahul Lakkireddy #define M_FW_HDR_FW_VER_MINOR	0xff
23913bd122eeSRahul Lakkireddy #define V_FW_HDR_FW_VER_MINOR(x) \
23923bd122eeSRahul Lakkireddy 	((x) << S_FW_HDR_FW_VER_MINOR)
23933bd122eeSRahul Lakkireddy #define G_FW_HDR_FW_VER_MINOR(x) \
23943bd122eeSRahul Lakkireddy 	(((x) >> S_FW_HDR_FW_VER_MINOR) & M_FW_HDR_FW_VER_MINOR)
23953bd122eeSRahul Lakkireddy 
23963bd122eeSRahul Lakkireddy #define S_FW_HDR_FW_VER_MICRO	8
23973bd122eeSRahul Lakkireddy #define M_FW_HDR_FW_VER_MICRO	0xff
23983bd122eeSRahul Lakkireddy #define V_FW_HDR_FW_VER_MICRO(x) \
23993bd122eeSRahul Lakkireddy 	((x) << S_FW_HDR_FW_VER_MICRO)
24003bd122eeSRahul Lakkireddy #define G_FW_HDR_FW_VER_MICRO(x) \
24013bd122eeSRahul Lakkireddy 	(((x) >> S_FW_HDR_FW_VER_MICRO) & M_FW_HDR_FW_VER_MICRO)
24023bd122eeSRahul Lakkireddy 
24033bd122eeSRahul Lakkireddy #define S_FW_HDR_FW_VER_BUILD	0
24043bd122eeSRahul Lakkireddy #define M_FW_HDR_FW_VER_BUILD	0xff
24053bd122eeSRahul Lakkireddy #define V_FW_HDR_FW_VER_BUILD(x) \
24063bd122eeSRahul Lakkireddy 	((x) << S_FW_HDR_FW_VER_BUILD)
24073bd122eeSRahul Lakkireddy #define G_FW_HDR_FW_VER_BUILD(x) \
24083bd122eeSRahul Lakkireddy 	(((x) >> S_FW_HDR_FW_VER_BUILD) & M_FW_HDR_FW_VER_BUILD)
24093bd122eeSRahul Lakkireddy 
24103bd122eeSRahul Lakkireddy #endif /* _T4FW_INTERFACE_H_ */
2411