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