1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * This file is part of the Chelsio T4 Ethernet driver for Linux. 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Copyright (c) 2009-2016 Chelsio Communications, Inc. All rights reserved. 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * This software is available to you under a choice of one of two 7*4882a593Smuzhiyun * licenses. You may choose to be licensed under the terms of the GNU 8*4882a593Smuzhiyun * General Public License (GPL) Version 2, available from the file 9*4882a593Smuzhiyun * COPYING in the main directory of this source tree, or the 10*4882a593Smuzhiyun * OpenIB.org BSD license below: 11*4882a593Smuzhiyun * 12*4882a593Smuzhiyun * Redistribution and use in source and binary forms, with or 13*4882a593Smuzhiyun * without modification, are permitted provided that the following 14*4882a593Smuzhiyun * conditions are met: 15*4882a593Smuzhiyun * 16*4882a593Smuzhiyun * - Redistributions of source code must retain the above 17*4882a593Smuzhiyun * copyright notice, this list of conditions and the following 18*4882a593Smuzhiyun * disclaimer. 19*4882a593Smuzhiyun * 20*4882a593Smuzhiyun * - Redistributions in binary form must reproduce the above 21*4882a593Smuzhiyun * copyright notice, this list of conditions and the following 22*4882a593Smuzhiyun * disclaimer in the documentation and/or other materials 23*4882a593Smuzhiyun * provided with the distribution. 24*4882a593Smuzhiyun * 25*4882a593Smuzhiyun * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 26*4882a593Smuzhiyun * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 27*4882a593Smuzhiyun * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 28*4882a593Smuzhiyun * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 29*4882a593Smuzhiyun * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 30*4882a593Smuzhiyun * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 31*4882a593Smuzhiyun * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 32*4882a593Smuzhiyun * SOFTWARE. 33*4882a593Smuzhiyun */ 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun #ifndef _T4FW_INTERFACE_H_ 36*4882a593Smuzhiyun #define _T4FW_INTERFACE_H_ 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun enum fw_retval { 39*4882a593Smuzhiyun FW_SUCCESS = 0, /* completed successfully */ 40*4882a593Smuzhiyun FW_EPERM = 1, /* operation not permitted */ 41*4882a593Smuzhiyun FW_ENOENT = 2, /* no such file or directory */ 42*4882a593Smuzhiyun FW_EIO = 5, /* input/output error; hw bad */ 43*4882a593Smuzhiyun FW_ENOEXEC = 8, /* exec format error; inv microcode */ 44*4882a593Smuzhiyun FW_EAGAIN = 11, /* try again */ 45*4882a593Smuzhiyun FW_ENOMEM = 12, /* out of memory */ 46*4882a593Smuzhiyun FW_EFAULT = 14, /* bad address; fw bad */ 47*4882a593Smuzhiyun FW_EBUSY = 16, /* resource busy */ 48*4882a593Smuzhiyun FW_EEXIST = 17, /* file exists */ 49*4882a593Smuzhiyun FW_ENODEV = 19, /* no such device */ 50*4882a593Smuzhiyun FW_EINVAL = 22, /* invalid argument */ 51*4882a593Smuzhiyun FW_ENOSPC = 28, /* no space left on device */ 52*4882a593Smuzhiyun FW_ENOSYS = 38, /* functionality not implemented */ 53*4882a593Smuzhiyun FW_ENODATA = 61, /* no data available */ 54*4882a593Smuzhiyun FW_EPROTO = 71, /* protocol error */ 55*4882a593Smuzhiyun FW_EADDRINUSE = 98, /* address already in use */ 56*4882a593Smuzhiyun FW_EADDRNOTAVAIL = 99, /* cannot assigned requested address */ 57*4882a593Smuzhiyun FW_ENETDOWN = 100, /* network is down */ 58*4882a593Smuzhiyun FW_ENETUNREACH = 101, /* network is unreachable */ 59*4882a593Smuzhiyun FW_ENOBUFS = 105, /* no buffer space available */ 60*4882a593Smuzhiyun FW_ETIMEDOUT = 110, /* timeout */ 61*4882a593Smuzhiyun FW_EINPROGRESS = 115, /* fw internal */ 62*4882a593Smuzhiyun FW_SCSI_ABORT_REQUESTED = 128, /* */ 63*4882a593Smuzhiyun FW_SCSI_ABORT_TIMEDOUT = 129, /* */ 64*4882a593Smuzhiyun FW_SCSI_ABORTED = 130, /* */ 65*4882a593Smuzhiyun FW_SCSI_CLOSE_REQUESTED = 131, /* */ 66*4882a593Smuzhiyun FW_ERR_LINK_DOWN = 132, /* */ 67*4882a593Smuzhiyun FW_RDEV_NOT_READY = 133, /* */ 68*4882a593Smuzhiyun FW_ERR_RDEV_LOST = 134, /* */ 69*4882a593Smuzhiyun FW_ERR_RDEV_LOGO = 135, /* */ 70*4882a593Smuzhiyun FW_FCOE_NO_XCHG = 136, /* */ 71*4882a593Smuzhiyun FW_SCSI_RSP_ERR = 137, /* */ 72*4882a593Smuzhiyun FW_ERR_RDEV_IMPL_LOGO = 138, /* */ 73*4882a593Smuzhiyun FW_SCSI_UNDER_FLOW_ERR = 139, /* */ 74*4882a593Smuzhiyun FW_SCSI_OVER_FLOW_ERR = 140, /* */ 75*4882a593Smuzhiyun FW_SCSI_DDP_ERR = 141, /* DDP error*/ 76*4882a593Smuzhiyun FW_SCSI_TASK_ERR = 142, /* No SCSI tasks available */ 77*4882a593Smuzhiyun }; 78*4882a593Smuzhiyun 79*4882a593Smuzhiyun #define FW_T4VF_SGE_BASE_ADDR 0x0000 80*4882a593Smuzhiyun #define FW_T4VF_MPS_BASE_ADDR 0x0100 81*4882a593Smuzhiyun #define FW_T4VF_PL_BASE_ADDR 0x0200 82*4882a593Smuzhiyun #define FW_T4VF_MBDATA_BASE_ADDR 0x0240 83*4882a593Smuzhiyun #define FW_T4VF_CIM_BASE_ADDR 0x0300 84*4882a593Smuzhiyun 85*4882a593Smuzhiyun enum fw_wr_opcodes { 86*4882a593Smuzhiyun FW_FILTER_WR = 0x02, 87*4882a593Smuzhiyun FW_ULPTX_WR = 0x04, 88*4882a593Smuzhiyun FW_TP_WR = 0x05, 89*4882a593Smuzhiyun FW_ETH_TX_PKT_WR = 0x08, 90*4882a593Smuzhiyun FW_ETH_TX_EO_WR = 0x1c, 91*4882a593Smuzhiyun FW_OFLD_CONNECTION_WR = 0x2f, 92*4882a593Smuzhiyun FW_FLOWC_WR = 0x0a, 93*4882a593Smuzhiyun FW_OFLD_TX_DATA_WR = 0x0b, 94*4882a593Smuzhiyun FW_CMD_WR = 0x10, 95*4882a593Smuzhiyun FW_ETH_TX_PKT_VM_WR = 0x11, 96*4882a593Smuzhiyun FW_RI_RES_WR = 0x0c, 97*4882a593Smuzhiyun FW_RI_INIT_WR = 0x0d, 98*4882a593Smuzhiyun FW_RI_RDMA_WRITE_WR = 0x14, 99*4882a593Smuzhiyun FW_RI_SEND_WR = 0x15, 100*4882a593Smuzhiyun FW_RI_RDMA_READ_WR = 0x16, 101*4882a593Smuzhiyun FW_RI_RECV_WR = 0x17, 102*4882a593Smuzhiyun FW_RI_BIND_MW_WR = 0x18, 103*4882a593Smuzhiyun FW_RI_FR_NSMR_WR = 0x19, 104*4882a593Smuzhiyun FW_RI_FR_NSMR_TPTE_WR = 0x20, 105*4882a593Smuzhiyun FW_RI_RDMA_WRITE_CMPL_WR = 0x21, 106*4882a593Smuzhiyun FW_RI_INV_LSTAG_WR = 0x1a, 107*4882a593Smuzhiyun FW_ISCSI_TX_DATA_WR = 0x45, 108*4882a593Smuzhiyun FW_PTP_TX_PKT_WR = 0x46, 109*4882a593Smuzhiyun FW_TLSTX_DATA_WR = 0x68, 110*4882a593Smuzhiyun FW_CRYPTO_LOOKASIDE_WR = 0X6d, 111*4882a593Smuzhiyun FW_LASTC2E_WR = 0x70, 112*4882a593Smuzhiyun FW_FILTER2_WR = 0x77 113*4882a593Smuzhiyun }; 114*4882a593Smuzhiyun 115*4882a593Smuzhiyun struct fw_wr_hdr { 116*4882a593Smuzhiyun __be32 hi; 117*4882a593Smuzhiyun __be32 lo; 118*4882a593Smuzhiyun }; 119*4882a593Smuzhiyun 120*4882a593Smuzhiyun /* work request opcode (hi) */ 121*4882a593Smuzhiyun #define FW_WR_OP_S 24 122*4882a593Smuzhiyun #define FW_WR_OP_M 0xff 123*4882a593Smuzhiyun #define FW_WR_OP_V(x) ((x) << FW_WR_OP_S) 124*4882a593Smuzhiyun #define FW_WR_OP_G(x) (((x) >> FW_WR_OP_S) & FW_WR_OP_M) 125*4882a593Smuzhiyun 126*4882a593Smuzhiyun /* atomic flag (hi) - firmware encapsulates CPLs in CPL_BARRIER */ 127*4882a593Smuzhiyun #define FW_WR_ATOMIC_S 23 128*4882a593Smuzhiyun #define FW_WR_ATOMIC_V(x) ((x) << FW_WR_ATOMIC_S) 129*4882a593Smuzhiyun 130*4882a593Smuzhiyun /* flush flag (hi) - firmware flushes flushable work request buffered 131*4882a593Smuzhiyun * in the flow context. 132*4882a593Smuzhiyun */ 133*4882a593Smuzhiyun #define FW_WR_FLUSH_S 22 134*4882a593Smuzhiyun #define FW_WR_FLUSH_V(x) ((x) << FW_WR_FLUSH_S) 135*4882a593Smuzhiyun 136*4882a593Smuzhiyun /* completion flag (hi) - firmware generates a cpl_fw6_ack */ 137*4882a593Smuzhiyun #define FW_WR_COMPL_S 21 138*4882a593Smuzhiyun #define FW_WR_COMPL_V(x) ((x) << FW_WR_COMPL_S) 139*4882a593Smuzhiyun #define FW_WR_COMPL_F FW_WR_COMPL_V(1U) 140*4882a593Smuzhiyun 141*4882a593Smuzhiyun /* work request immediate data length (hi) */ 142*4882a593Smuzhiyun #define FW_WR_IMMDLEN_S 0 143*4882a593Smuzhiyun #define FW_WR_IMMDLEN_M 0xff 144*4882a593Smuzhiyun #define FW_WR_IMMDLEN_V(x) ((x) << FW_WR_IMMDLEN_S) 145*4882a593Smuzhiyun 146*4882a593Smuzhiyun /* egress queue status update to associated ingress queue entry (lo) */ 147*4882a593Smuzhiyun #define FW_WR_EQUIQ_S 31 148*4882a593Smuzhiyun #define FW_WR_EQUIQ_V(x) ((x) << FW_WR_EQUIQ_S) 149*4882a593Smuzhiyun #define FW_WR_EQUIQ_F FW_WR_EQUIQ_V(1U) 150*4882a593Smuzhiyun 151*4882a593Smuzhiyun /* egress queue status update to egress queue status entry (lo) */ 152*4882a593Smuzhiyun #define FW_WR_EQUEQ_S 30 153*4882a593Smuzhiyun #define FW_WR_EQUEQ_V(x) ((x) << FW_WR_EQUEQ_S) 154*4882a593Smuzhiyun #define FW_WR_EQUEQ_F FW_WR_EQUEQ_V(1U) 155*4882a593Smuzhiyun 156*4882a593Smuzhiyun /* flow context identifier (lo) */ 157*4882a593Smuzhiyun #define FW_WR_FLOWID_S 8 158*4882a593Smuzhiyun #define FW_WR_FLOWID_V(x) ((x) << FW_WR_FLOWID_S) 159*4882a593Smuzhiyun 160*4882a593Smuzhiyun /* length in units of 16-bytes (lo) */ 161*4882a593Smuzhiyun #define FW_WR_LEN16_S 0 162*4882a593Smuzhiyun #define FW_WR_LEN16_V(x) ((x) << FW_WR_LEN16_S) 163*4882a593Smuzhiyun 164*4882a593Smuzhiyun #define HW_TPL_FR_MT_PR_IV_P_FC 0X32B 165*4882a593Smuzhiyun #define HW_TPL_FR_MT_PR_OV_P_FC 0X327 166*4882a593Smuzhiyun 167*4882a593Smuzhiyun /* filter wr reply code in cookie in CPL_SET_TCB_RPL */ 168*4882a593Smuzhiyun enum fw_filter_wr_cookie { 169*4882a593Smuzhiyun FW_FILTER_WR_SUCCESS, 170*4882a593Smuzhiyun FW_FILTER_WR_FLT_ADDED, 171*4882a593Smuzhiyun FW_FILTER_WR_FLT_DELETED, 172*4882a593Smuzhiyun FW_FILTER_WR_SMT_TBL_FULL, 173*4882a593Smuzhiyun FW_FILTER_WR_EINVAL, 174*4882a593Smuzhiyun }; 175*4882a593Smuzhiyun 176*4882a593Smuzhiyun struct fw_filter_wr { 177*4882a593Smuzhiyun __be32 op_pkd; 178*4882a593Smuzhiyun __be32 len16_pkd; 179*4882a593Smuzhiyun __be64 r3; 180*4882a593Smuzhiyun __be32 tid_to_iq; 181*4882a593Smuzhiyun __be32 del_filter_to_l2tix; 182*4882a593Smuzhiyun __be16 ethtype; 183*4882a593Smuzhiyun __be16 ethtypem; 184*4882a593Smuzhiyun __u8 frag_to_ovlan_vldm; 185*4882a593Smuzhiyun __u8 smac_sel; 186*4882a593Smuzhiyun __be16 rx_chan_rx_rpl_iq; 187*4882a593Smuzhiyun __be32 maci_to_matchtypem; 188*4882a593Smuzhiyun __u8 ptcl; 189*4882a593Smuzhiyun __u8 ptclm; 190*4882a593Smuzhiyun __u8 ttyp; 191*4882a593Smuzhiyun __u8 ttypm; 192*4882a593Smuzhiyun __be16 ivlan; 193*4882a593Smuzhiyun __be16 ivlanm; 194*4882a593Smuzhiyun __be16 ovlan; 195*4882a593Smuzhiyun __be16 ovlanm; 196*4882a593Smuzhiyun __u8 lip[16]; 197*4882a593Smuzhiyun __u8 lipm[16]; 198*4882a593Smuzhiyun __u8 fip[16]; 199*4882a593Smuzhiyun __u8 fipm[16]; 200*4882a593Smuzhiyun __be16 lp; 201*4882a593Smuzhiyun __be16 lpm; 202*4882a593Smuzhiyun __be16 fp; 203*4882a593Smuzhiyun __be16 fpm; 204*4882a593Smuzhiyun __be16 r7; 205*4882a593Smuzhiyun __u8 sma[6]; 206*4882a593Smuzhiyun }; 207*4882a593Smuzhiyun 208*4882a593Smuzhiyun struct fw_filter2_wr { 209*4882a593Smuzhiyun __be32 op_pkd; 210*4882a593Smuzhiyun __be32 len16_pkd; 211*4882a593Smuzhiyun __be64 r3; 212*4882a593Smuzhiyun __be32 tid_to_iq; 213*4882a593Smuzhiyun __be32 del_filter_to_l2tix; 214*4882a593Smuzhiyun __be16 ethtype; 215*4882a593Smuzhiyun __be16 ethtypem; 216*4882a593Smuzhiyun __u8 frag_to_ovlan_vldm; 217*4882a593Smuzhiyun __u8 smac_sel; 218*4882a593Smuzhiyun __be16 rx_chan_rx_rpl_iq; 219*4882a593Smuzhiyun __be32 maci_to_matchtypem; 220*4882a593Smuzhiyun __u8 ptcl; 221*4882a593Smuzhiyun __u8 ptclm; 222*4882a593Smuzhiyun __u8 ttyp; 223*4882a593Smuzhiyun __u8 ttypm; 224*4882a593Smuzhiyun __be16 ivlan; 225*4882a593Smuzhiyun __be16 ivlanm; 226*4882a593Smuzhiyun __be16 ovlan; 227*4882a593Smuzhiyun __be16 ovlanm; 228*4882a593Smuzhiyun __u8 lip[16]; 229*4882a593Smuzhiyun __u8 lipm[16]; 230*4882a593Smuzhiyun __u8 fip[16]; 231*4882a593Smuzhiyun __u8 fipm[16]; 232*4882a593Smuzhiyun __be16 lp; 233*4882a593Smuzhiyun __be16 lpm; 234*4882a593Smuzhiyun __be16 fp; 235*4882a593Smuzhiyun __be16 fpm; 236*4882a593Smuzhiyun __be16 r7; 237*4882a593Smuzhiyun __u8 sma[6]; 238*4882a593Smuzhiyun __be16 r8; 239*4882a593Smuzhiyun __u8 filter_type_swapmac; 240*4882a593Smuzhiyun __u8 natmode_to_ulp_type; 241*4882a593Smuzhiyun __be16 newlport; 242*4882a593Smuzhiyun __be16 newfport; 243*4882a593Smuzhiyun __u8 newlip[16]; 244*4882a593Smuzhiyun __u8 newfip[16]; 245*4882a593Smuzhiyun __be32 natseqcheck; 246*4882a593Smuzhiyun __be32 r9; 247*4882a593Smuzhiyun __be64 r10; 248*4882a593Smuzhiyun __be64 r11; 249*4882a593Smuzhiyun __be64 r12; 250*4882a593Smuzhiyun __be64 r13; 251*4882a593Smuzhiyun }; 252*4882a593Smuzhiyun 253*4882a593Smuzhiyun #define FW_FILTER_WR_TID_S 12 254*4882a593Smuzhiyun #define FW_FILTER_WR_TID_M 0xfffff 255*4882a593Smuzhiyun #define FW_FILTER_WR_TID_V(x) ((x) << FW_FILTER_WR_TID_S) 256*4882a593Smuzhiyun #define FW_FILTER_WR_TID_G(x) \ 257*4882a593Smuzhiyun (((x) >> FW_FILTER_WR_TID_S) & FW_FILTER_WR_TID_M) 258*4882a593Smuzhiyun 259*4882a593Smuzhiyun #define FW_FILTER_WR_RQTYPE_S 11 260*4882a593Smuzhiyun #define FW_FILTER_WR_RQTYPE_M 0x1 261*4882a593Smuzhiyun #define FW_FILTER_WR_RQTYPE_V(x) ((x) << FW_FILTER_WR_RQTYPE_S) 262*4882a593Smuzhiyun #define FW_FILTER_WR_RQTYPE_G(x) \ 263*4882a593Smuzhiyun (((x) >> FW_FILTER_WR_RQTYPE_S) & FW_FILTER_WR_RQTYPE_M) 264*4882a593Smuzhiyun #define FW_FILTER_WR_RQTYPE_F FW_FILTER_WR_RQTYPE_V(1U) 265*4882a593Smuzhiyun 266*4882a593Smuzhiyun #define FW_FILTER_WR_NOREPLY_S 10 267*4882a593Smuzhiyun #define FW_FILTER_WR_NOREPLY_M 0x1 268*4882a593Smuzhiyun #define FW_FILTER_WR_NOREPLY_V(x) ((x) << FW_FILTER_WR_NOREPLY_S) 269*4882a593Smuzhiyun #define FW_FILTER_WR_NOREPLY_G(x) \ 270*4882a593Smuzhiyun (((x) >> FW_FILTER_WR_NOREPLY_S) & FW_FILTER_WR_NOREPLY_M) 271*4882a593Smuzhiyun #define FW_FILTER_WR_NOREPLY_F FW_FILTER_WR_NOREPLY_V(1U) 272*4882a593Smuzhiyun 273*4882a593Smuzhiyun #define FW_FILTER_WR_IQ_S 0 274*4882a593Smuzhiyun #define FW_FILTER_WR_IQ_M 0x3ff 275*4882a593Smuzhiyun #define FW_FILTER_WR_IQ_V(x) ((x) << FW_FILTER_WR_IQ_S) 276*4882a593Smuzhiyun #define FW_FILTER_WR_IQ_G(x) \ 277*4882a593Smuzhiyun (((x) >> FW_FILTER_WR_IQ_S) & FW_FILTER_WR_IQ_M) 278*4882a593Smuzhiyun 279*4882a593Smuzhiyun #define FW_FILTER_WR_DEL_FILTER_S 31 280*4882a593Smuzhiyun #define FW_FILTER_WR_DEL_FILTER_M 0x1 281*4882a593Smuzhiyun #define FW_FILTER_WR_DEL_FILTER_V(x) ((x) << FW_FILTER_WR_DEL_FILTER_S) 282*4882a593Smuzhiyun #define FW_FILTER_WR_DEL_FILTER_G(x) \ 283*4882a593Smuzhiyun (((x) >> FW_FILTER_WR_DEL_FILTER_S) & FW_FILTER_WR_DEL_FILTER_M) 284*4882a593Smuzhiyun #define FW_FILTER_WR_DEL_FILTER_F FW_FILTER_WR_DEL_FILTER_V(1U) 285*4882a593Smuzhiyun 286*4882a593Smuzhiyun #define FW_FILTER_WR_RPTTID_S 25 287*4882a593Smuzhiyun #define FW_FILTER_WR_RPTTID_M 0x1 288*4882a593Smuzhiyun #define FW_FILTER_WR_RPTTID_V(x) ((x) << FW_FILTER_WR_RPTTID_S) 289*4882a593Smuzhiyun #define FW_FILTER_WR_RPTTID_G(x) \ 290*4882a593Smuzhiyun (((x) >> FW_FILTER_WR_RPTTID_S) & FW_FILTER_WR_RPTTID_M) 291*4882a593Smuzhiyun #define FW_FILTER_WR_RPTTID_F FW_FILTER_WR_RPTTID_V(1U) 292*4882a593Smuzhiyun 293*4882a593Smuzhiyun #define FW_FILTER_WR_DROP_S 24 294*4882a593Smuzhiyun #define FW_FILTER_WR_DROP_M 0x1 295*4882a593Smuzhiyun #define FW_FILTER_WR_DROP_V(x) ((x) << FW_FILTER_WR_DROP_S) 296*4882a593Smuzhiyun #define FW_FILTER_WR_DROP_G(x) \ 297*4882a593Smuzhiyun (((x) >> FW_FILTER_WR_DROP_S) & FW_FILTER_WR_DROP_M) 298*4882a593Smuzhiyun #define FW_FILTER_WR_DROP_F FW_FILTER_WR_DROP_V(1U) 299*4882a593Smuzhiyun 300*4882a593Smuzhiyun #define FW_FILTER_WR_DIRSTEER_S 23 301*4882a593Smuzhiyun #define FW_FILTER_WR_DIRSTEER_M 0x1 302*4882a593Smuzhiyun #define FW_FILTER_WR_DIRSTEER_V(x) ((x) << FW_FILTER_WR_DIRSTEER_S) 303*4882a593Smuzhiyun #define FW_FILTER_WR_DIRSTEER_G(x) \ 304*4882a593Smuzhiyun (((x) >> FW_FILTER_WR_DIRSTEER_S) & FW_FILTER_WR_DIRSTEER_M) 305*4882a593Smuzhiyun #define FW_FILTER_WR_DIRSTEER_F FW_FILTER_WR_DIRSTEER_V(1U) 306*4882a593Smuzhiyun 307*4882a593Smuzhiyun #define FW_FILTER_WR_MASKHASH_S 22 308*4882a593Smuzhiyun #define FW_FILTER_WR_MASKHASH_M 0x1 309*4882a593Smuzhiyun #define FW_FILTER_WR_MASKHASH_V(x) ((x) << FW_FILTER_WR_MASKHASH_S) 310*4882a593Smuzhiyun #define FW_FILTER_WR_MASKHASH_G(x) \ 311*4882a593Smuzhiyun (((x) >> FW_FILTER_WR_MASKHASH_S) & FW_FILTER_WR_MASKHASH_M) 312*4882a593Smuzhiyun #define FW_FILTER_WR_MASKHASH_F FW_FILTER_WR_MASKHASH_V(1U) 313*4882a593Smuzhiyun 314*4882a593Smuzhiyun #define FW_FILTER_WR_DIRSTEERHASH_S 21 315*4882a593Smuzhiyun #define FW_FILTER_WR_DIRSTEERHASH_M 0x1 316*4882a593Smuzhiyun #define FW_FILTER_WR_DIRSTEERHASH_V(x) ((x) << FW_FILTER_WR_DIRSTEERHASH_S) 317*4882a593Smuzhiyun #define FW_FILTER_WR_DIRSTEERHASH_G(x) \ 318*4882a593Smuzhiyun (((x) >> FW_FILTER_WR_DIRSTEERHASH_S) & FW_FILTER_WR_DIRSTEERHASH_M) 319*4882a593Smuzhiyun #define FW_FILTER_WR_DIRSTEERHASH_F FW_FILTER_WR_DIRSTEERHASH_V(1U) 320*4882a593Smuzhiyun 321*4882a593Smuzhiyun #define FW_FILTER_WR_LPBK_S 20 322*4882a593Smuzhiyun #define FW_FILTER_WR_LPBK_M 0x1 323*4882a593Smuzhiyun #define FW_FILTER_WR_LPBK_V(x) ((x) << FW_FILTER_WR_LPBK_S) 324*4882a593Smuzhiyun #define FW_FILTER_WR_LPBK_G(x) \ 325*4882a593Smuzhiyun (((x) >> FW_FILTER_WR_LPBK_S) & FW_FILTER_WR_LPBK_M) 326*4882a593Smuzhiyun #define FW_FILTER_WR_LPBK_F FW_FILTER_WR_LPBK_V(1U) 327*4882a593Smuzhiyun 328*4882a593Smuzhiyun #define FW_FILTER_WR_DMAC_S 19 329*4882a593Smuzhiyun #define FW_FILTER_WR_DMAC_M 0x1 330*4882a593Smuzhiyun #define FW_FILTER_WR_DMAC_V(x) ((x) << FW_FILTER_WR_DMAC_S) 331*4882a593Smuzhiyun #define FW_FILTER_WR_DMAC_G(x) \ 332*4882a593Smuzhiyun (((x) >> FW_FILTER_WR_DMAC_S) & FW_FILTER_WR_DMAC_M) 333*4882a593Smuzhiyun #define FW_FILTER_WR_DMAC_F FW_FILTER_WR_DMAC_V(1U) 334*4882a593Smuzhiyun 335*4882a593Smuzhiyun #define FW_FILTER_WR_SMAC_S 18 336*4882a593Smuzhiyun #define FW_FILTER_WR_SMAC_M 0x1 337*4882a593Smuzhiyun #define FW_FILTER_WR_SMAC_V(x) ((x) << FW_FILTER_WR_SMAC_S) 338*4882a593Smuzhiyun #define FW_FILTER_WR_SMAC_G(x) \ 339*4882a593Smuzhiyun (((x) >> FW_FILTER_WR_SMAC_S) & FW_FILTER_WR_SMAC_M) 340*4882a593Smuzhiyun #define FW_FILTER_WR_SMAC_F FW_FILTER_WR_SMAC_V(1U) 341*4882a593Smuzhiyun 342*4882a593Smuzhiyun #define FW_FILTER_WR_INSVLAN_S 17 343*4882a593Smuzhiyun #define FW_FILTER_WR_INSVLAN_M 0x1 344*4882a593Smuzhiyun #define FW_FILTER_WR_INSVLAN_V(x) ((x) << FW_FILTER_WR_INSVLAN_S) 345*4882a593Smuzhiyun #define FW_FILTER_WR_INSVLAN_G(x) \ 346*4882a593Smuzhiyun (((x) >> FW_FILTER_WR_INSVLAN_S) & FW_FILTER_WR_INSVLAN_M) 347*4882a593Smuzhiyun #define FW_FILTER_WR_INSVLAN_F FW_FILTER_WR_INSVLAN_V(1U) 348*4882a593Smuzhiyun 349*4882a593Smuzhiyun #define FW_FILTER_WR_RMVLAN_S 16 350*4882a593Smuzhiyun #define FW_FILTER_WR_RMVLAN_M 0x1 351*4882a593Smuzhiyun #define FW_FILTER_WR_RMVLAN_V(x) ((x) << FW_FILTER_WR_RMVLAN_S) 352*4882a593Smuzhiyun #define FW_FILTER_WR_RMVLAN_G(x) \ 353*4882a593Smuzhiyun (((x) >> FW_FILTER_WR_RMVLAN_S) & FW_FILTER_WR_RMVLAN_M) 354*4882a593Smuzhiyun #define FW_FILTER_WR_RMVLAN_F FW_FILTER_WR_RMVLAN_V(1U) 355*4882a593Smuzhiyun 356*4882a593Smuzhiyun #define FW_FILTER_WR_HITCNTS_S 15 357*4882a593Smuzhiyun #define FW_FILTER_WR_HITCNTS_M 0x1 358*4882a593Smuzhiyun #define FW_FILTER_WR_HITCNTS_V(x) ((x) << FW_FILTER_WR_HITCNTS_S) 359*4882a593Smuzhiyun #define FW_FILTER_WR_HITCNTS_G(x) \ 360*4882a593Smuzhiyun (((x) >> FW_FILTER_WR_HITCNTS_S) & FW_FILTER_WR_HITCNTS_M) 361*4882a593Smuzhiyun #define FW_FILTER_WR_HITCNTS_F FW_FILTER_WR_HITCNTS_V(1U) 362*4882a593Smuzhiyun 363*4882a593Smuzhiyun #define FW_FILTER_WR_TXCHAN_S 13 364*4882a593Smuzhiyun #define FW_FILTER_WR_TXCHAN_M 0x3 365*4882a593Smuzhiyun #define FW_FILTER_WR_TXCHAN_V(x) ((x) << FW_FILTER_WR_TXCHAN_S) 366*4882a593Smuzhiyun #define FW_FILTER_WR_TXCHAN_G(x) \ 367*4882a593Smuzhiyun (((x) >> FW_FILTER_WR_TXCHAN_S) & FW_FILTER_WR_TXCHAN_M) 368*4882a593Smuzhiyun 369*4882a593Smuzhiyun #define FW_FILTER_WR_PRIO_S 12 370*4882a593Smuzhiyun #define FW_FILTER_WR_PRIO_M 0x1 371*4882a593Smuzhiyun #define FW_FILTER_WR_PRIO_V(x) ((x) << FW_FILTER_WR_PRIO_S) 372*4882a593Smuzhiyun #define FW_FILTER_WR_PRIO_G(x) \ 373*4882a593Smuzhiyun (((x) >> FW_FILTER_WR_PRIO_S) & FW_FILTER_WR_PRIO_M) 374*4882a593Smuzhiyun #define FW_FILTER_WR_PRIO_F FW_FILTER_WR_PRIO_V(1U) 375*4882a593Smuzhiyun 376*4882a593Smuzhiyun #define FW_FILTER_WR_L2TIX_S 0 377*4882a593Smuzhiyun #define FW_FILTER_WR_L2TIX_M 0xfff 378*4882a593Smuzhiyun #define FW_FILTER_WR_L2TIX_V(x) ((x) << FW_FILTER_WR_L2TIX_S) 379*4882a593Smuzhiyun #define FW_FILTER_WR_L2TIX_G(x) \ 380*4882a593Smuzhiyun (((x) >> FW_FILTER_WR_L2TIX_S) & FW_FILTER_WR_L2TIX_M) 381*4882a593Smuzhiyun 382*4882a593Smuzhiyun #define FW_FILTER_WR_FRAG_S 7 383*4882a593Smuzhiyun #define FW_FILTER_WR_FRAG_M 0x1 384*4882a593Smuzhiyun #define FW_FILTER_WR_FRAG_V(x) ((x) << FW_FILTER_WR_FRAG_S) 385*4882a593Smuzhiyun #define FW_FILTER_WR_FRAG_G(x) \ 386*4882a593Smuzhiyun (((x) >> FW_FILTER_WR_FRAG_S) & FW_FILTER_WR_FRAG_M) 387*4882a593Smuzhiyun #define FW_FILTER_WR_FRAG_F FW_FILTER_WR_FRAG_V(1U) 388*4882a593Smuzhiyun 389*4882a593Smuzhiyun #define FW_FILTER_WR_FRAGM_S 6 390*4882a593Smuzhiyun #define FW_FILTER_WR_FRAGM_M 0x1 391*4882a593Smuzhiyun #define FW_FILTER_WR_FRAGM_V(x) ((x) << FW_FILTER_WR_FRAGM_S) 392*4882a593Smuzhiyun #define FW_FILTER_WR_FRAGM_G(x) \ 393*4882a593Smuzhiyun (((x) >> FW_FILTER_WR_FRAGM_S) & FW_FILTER_WR_FRAGM_M) 394*4882a593Smuzhiyun #define FW_FILTER_WR_FRAGM_F FW_FILTER_WR_FRAGM_V(1U) 395*4882a593Smuzhiyun 396*4882a593Smuzhiyun #define FW_FILTER_WR_IVLAN_VLD_S 5 397*4882a593Smuzhiyun #define FW_FILTER_WR_IVLAN_VLD_M 0x1 398*4882a593Smuzhiyun #define FW_FILTER_WR_IVLAN_VLD_V(x) ((x) << FW_FILTER_WR_IVLAN_VLD_S) 399*4882a593Smuzhiyun #define FW_FILTER_WR_IVLAN_VLD_G(x) \ 400*4882a593Smuzhiyun (((x) >> FW_FILTER_WR_IVLAN_VLD_S) & FW_FILTER_WR_IVLAN_VLD_M) 401*4882a593Smuzhiyun #define FW_FILTER_WR_IVLAN_VLD_F FW_FILTER_WR_IVLAN_VLD_V(1U) 402*4882a593Smuzhiyun 403*4882a593Smuzhiyun #define FW_FILTER_WR_OVLAN_VLD_S 4 404*4882a593Smuzhiyun #define FW_FILTER_WR_OVLAN_VLD_M 0x1 405*4882a593Smuzhiyun #define FW_FILTER_WR_OVLAN_VLD_V(x) ((x) << FW_FILTER_WR_OVLAN_VLD_S) 406*4882a593Smuzhiyun #define FW_FILTER_WR_OVLAN_VLD_G(x) \ 407*4882a593Smuzhiyun (((x) >> FW_FILTER_WR_OVLAN_VLD_S) & FW_FILTER_WR_OVLAN_VLD_M) 408*4882a593Smuzhiyun #define FW_FILTER_WR_OVLAN_VLD_F FW_FILTER_WR_OVLAN_VLD_V(1U) 409*4882a593Smuzhiyun 410*4882a593Smuzhiyun #define FW_FILTER_WR_IVLAN_VLDM_S 3 411*4882a593Smuzhiyun #define FW_FILTER_WR_IVLAN_VLDM_M 0x1 412*4882a593Smuzhiyun #define FW_FILTER_WR_IVLAN_VLDM_V(x) ((x) << FW_FILTER_WR_IVLAN_VLDM_S) 413*4882a593Smuzhiyun #define FW_FILTER_WR_IVLAN_VLDM_G(x) \ 414*4882a593Smuzhiyun (((x) >> FW_FILTER_WR_IVLAN_VLDM_S) & FW_FILTER_WR_IVLAN_VLDM_M) 415*4882a593Smuzhiyun #define FW_FILTER_WR_IVLAN_VLDM_F FW_FILTER_WR_IVLAN_VLDM_V(1U) 416*4882a593Smuzhiyun 417*4882a593Smuzhiyun #define FW_FILTER_WR_OVLAN_VLDM_S 2 418*4882a593Smuzhiyun #define FW_FILTER_WR_OVLAN_VLDM_M 0x1 419*4882a593Smuzhiyun #define FW_FILTER_WR_OVLAN_VLDM_V(x) ((x) << FW_FILTER_WR_OVLAN_VLDM_S) 420*4882a593Smuzhiyun #define FW_FILTER_WR_OVLAN_VLDM_G(x) \ 421*4882a593Smuzhiyun (((x) >> FW_FILTER_WR_OVLAN_VLDM_S) & FW_FILTER_WR_OVLAN_VLDM_M) 422*4882a593Smuzhiyun #define FW_FILTER_WR_OVLAN_VLDM_F FW_FILTER_WR_OVLAN_VLDM_V(1U) 423*4882a593Smuzhiyun 424*4882a593Smuzhiyun #define FW_FILTER_WR_RX_CHAN_S 15 425*4882a593Smuzhiyun #define FW_FILTER_WR_RX_CHAN_M 0x1 426*4882a593Smuzhiyun #define FW_FILTER_WR_RX_CHAN_V(x) ((x) << FW_FILTER_WR_RX_CHAN_S) 427*4882a593Smuzhiyun #define FW_FILTER_WR_RX_CHAN_G(x) \ 428*4882a593Smuzhiyun (((x) >> FW_FILTER_WR_RX_CHAN_S) & FW_FILTER_WR_RX_CHAN_M) 429*4882a593Smuzhiyun #define FW_FILTER_WR_RX_CHAN_F FW_FILTER_WR_RX_CHAN_V(1U) 430*4882a593Smuzhiyun 431*4882a593Smuzhiyun #define FW_FILTER_WR_RX_RPL_IQ_S 0 432*4882a593Smuzhiyun #define FW_FILTER_WR_RX_RPL_IQ_M 0x3ff 433*4882a593Smuzhiyun #define FW_FILTER_WR_RX_RPL_IQ_V(x) ((x) << FW_FILTER_WR_RX_RPL_IQ_S) 434*4882a593Smuzhiyun #define FW_FILTER_WR_RX_RPL_IQ_G(x) \ 435*4882a593Smuzhiyun (((x) >> FW_FILTER_WR_RX_RPL_IQ_S) & FW_FILTER_WR_RX_RPL_IQ_M) 436*4882a593Smuzhiyun 437*4882a593Smuzhiyun #define FW_FILTER2_WR_FILTER_TYPE_S 1 438*4882a593Smuzhiyun #define FW_FILTER2_WR_FILTER_TYPE_M 0x1 439*4882a593Smuzhiyun #define FW_FILTER2_WR_FILTER_TYPE_V(x) ((x) << FW_FILTER2_WR_FILTER_TYPE_S) 440*4882a593Smuzhiyun #define FW_FILTER2_WR_FILTER_TYPE_G(x) \ 441*4882a593Smuzhiyun (((x) >> FW_FILTER2_WR_FILTER_TYPE_S) & FW_FILTER2_WR_FILTER_TYPE_M) 442*4882a593Smuzhiyun #define FW_FILTER2_WR_FILTER_TYPE_F FW_FILTER2_WR_FILTER_TYPE_V(1U) 443*4882a593Smuzhiyun 444*4882a593Smuzhiyun #define FW_FILTER2_WR_NATMODE_S 5 445*4882a593Smuzhiyun #define FW_FILTER2_WR_NATMODE_M 0x7 446*4882a593Smuzhiyun #define FW_FILTER2_WR_NATMODE_V(x) ((x) << FW_FILTER2_WR_NATMODE_S) 447*4882a593Smuzhiyun #define FW_FILTER2_WR_NATMODE_G(x) \ 448*4882a593Smuzhiyun (((x) >> FW_FILTER2_WR_NATMODE_S) & FW_FILTER2_WR_NATMODE_M) 449*4882a593Smuzhiyun 450*4882a593Smuzhiyun #define FW_FILTER2_WR_NATFLAGCHECK_S 4 451*4882a593Smuzhiyun #define FW_FILTER2_WR_NATFLAGCHECK_M 0x1 452*4882a593Smuzhiyun #define FW_FILTER2_WR_NATFLAGCHECK_V(x) ((x) << FW_FILTER2_WR_NATFLAGCHECK_S) 453*4882a593Smuzhiyun #define FW_FILTER2_WR_NATFLAGCHECK_G(x) \ 454*4882a593Smuzhiyun (((x) >> FW_FILTER2_WR_NATFLAGCHECK_S) & FW_FILTER2_WR_NATFLAGCHECK_M) 455*4882a593Smuzhiyun #define FW_FILTER2_WR_NATFLAGCHECK_F FW_FILTER2_WR_NATFLAGCHECK_V(1U) 456*4882a593Smuzhiyun 457*4882a593Smuzhiyun #define FW_FILTER2_WR_ULP_TYPE_S 0 458*4882a593Smuzhiyun #define FW_FILTER2_WR_ULP_TYPE_M 0xf 459*4882a593Smuzhiyun #define FW_FILTER2_WR_ULP_TYPE_V(x) ((x) << FW_FILTER2_WR_ULP_TYPE_S) 460*4882a593Smuzhiyun #define FW_FILTER2_WR_ULP_TYPE_G(x) \ 461*4882a593Smuzhiyun (((x) >> FW_FILTER2_WR_ULP_TYPE_S) & FW_FILTER2_WR_ULP_TYPE_M) 462*4882a593Smuzhiyun 463*4882a593Smuzhiyun #define FW_FILTER_WR_MACI_S 23 464*4882a593Smuzhiyun #define FW_FILTER_WR_MACI_M 0x1ff 465*4882a593Smuzhiyun #define FW_FILTER_WR_MACI_V(x) ((x) << FW_FILTER_WR_MACI_S) 466*4882a593Smuzhiyun #define FW_FILTER_WR_MACI_G(x) \ 467*4882a593Smuzhiyun (((x) >> FW_FILTER_WR_MACI_S) & FW_FILTER_WR_MACI_M) 468*4882a593Smuzhiyun 469*4882a593Smuzhiyun #define FW_FILTER_WR_MACIM_S 14 470*4882a593Smuzhiyun #define FW_FILTER_WR_MACIM_M 0x1ff 471*4882a593Smuzhiyun #define FW_FILTER_WR_MACIM_V(x) ((x) << FW_FILTER_WR_MACIM_S) 472*4882a593Smuzhiyun #define FW_FILTER_WR_MACIM_G(x) \ 473*4882a593Smuzhiyun (((x) >> FW_FILTER_WR_MACIM_S) & FW_FILTER_WR_MACIM_M) 474*4882a593Smuzhiyun 475*4882a593Smuzhiyun #define FW_FILTER_WR_FCOE_S 13 476*4882a593Smuzhiyun #define FW_FILTER_WR_FCOE_M 0x1 477*4882a593Smuzhiyun #define FW_FILTER_WR_FCOE_V(x) ((x) << FW_FILTER_WR_FCOE_S) 478*4882a593Smuzhiyun #define FW_FILTER_WR_FCOE_G(x) \ 479*4882a593Smuzhiyun (((x) >> FW_FILTER_WR_FCOE_S) & FW_FILTER_WR_FCOE_M) 480*4882a593Smuzhiyun #define FW_FILTER_WR_FCOE_F FW_FILTER_WR_FCOE_V(1U) 481*4882a593Smuzhiyun 482*4882a593Smuzhiyun #define FW_FILTER_WR_FCOEM_S 12 483*4882a593Smuzhiyun #define FW_FILTER_WR_FCOEM_M 0x1 484*4882a593Smuzhiyun #define FW_FILTER_WR_FCOEM_V(x) ((x) << FW_FILTER_WR_FCOEM_S) 485*4882a593Smuzhiyun #define FW_FILTER_WR_FCOEM_G(x) \ 486*4882a593Smuzhiyun (((x) >> FW_FILTER_WR_FCOEM_S) & FW_FILTER_WR_FCOEM_M) 487*4882a593Smuzhiyun #define FW_FILTER_WR_FCOEM_F FW_FILTER_WR_FCOEM_V(1U) 488*4882a593Smuzhiyun 489*4882a593Smuzhiyun #define FW_FILTER_WR_PORT_S 9 490*4882a593Smuzhiyun #define FW_FILTER_WR_PORT_M 0x7 491*4882a593Smuzhiyun #define FW_FILTER_WR_PORT_V(x) ((x) << FW_FILTER_WR_PORT_S) 492*4882a593Smuzhiyun #define FW_FILTER_WR_PORT_G(x) \ 493*4882a593Smuzhiyun (((x) >> FW_FILTER_WR_PORT_S) & FW_FILTER_WR_PORT_M) 494*4882a593Smuzhiyun 495*4882a593Smuzhiyun #define FW_FILTER_WR_PORTM_S 6 496*4882a593Smuzhiyun #define FW_FILTER_WR_PORTM_M 0x7 497*4882a593Smuzhiyun #define FW_FILTER_WR_PORTM_V(x) ((x) << FW_FILTER_WR_PORTM_S) 498*4882a593Smuzhiyun #define FW_FILTER_WR_PORTM_G(x) \ 499*4882a593Smuzhiyun (((x) >> FW_FILTER_WR_PORTM_S) & FW_FILTER_WR_PORTM_M) 500*4882a593Smuzhiyun 501*4882a593Smuzhiyun #define FW_FILTER_WR_MATCHTYPE_S 3 502*4882a593Smuzhiyun #define FW_FILTER_WR_MATCHTYPE_M 0x7 503*4882a593Smuzhiyun #define FW_FILTER_WR_MATCHTYPE_V(x) ((x) << FW_FILTER_WR_MATCHTYPE_S) 504*4882a593Smuzhiyun #define FW_FILTER_WR_MATCHTYPE_G(x) \ 505*4882a593Smuzhiyun (((x) >> FW_FILTER_WR_MATCHTYPE_S) & FW_FILTER_WR_MATCHTYPE_M) 506*4882a593Smuzhiyun 507*4882a593Smuzhiyun #define FW_FILTER_WR_MATCHTYPEM_S 0 508*4882a593Smuzhiyun #define FW_FILTER_WR_MATCHTYPEM_M 0x7 509*4882a593Smuzhiyun #define FW_FILTER_WR_MATCHTYPEM_V(x) ((x) << FW_FILTER_WR_MATCHTYPEM_S) 510*4882a593Smuzhiyun #define FW_FILTER_WR_MATCHTYPEM_G(x) \ 511*4882a593Smuzhiyun (((x) >> FW_FILTER_WR_MATCHTYPEM_S) & FW_FILTER_WR_MATCHTYPEM_M) 512*4882a593Smuzhiyun 513*4882a593Smuzhiyun struct fw_ulptx_wr { 514*4882a593Smuzhiyun __be32 op_to_compl; 515*4882a593Smuzhiyun __be32 flowid_len16; 516*4882a593Smuzhiyun u64 cookie; 517*4882a593Smuzhiyun }; 518*4882a593Smuzhiyun 519*4882a593Smuzhiyun #define FW_ULPTX_WR_DATA_S 28 520*4882a593Smuzhiyun #define FW_ULPTX_WR_DATA_M 0x1 521*4882a593Smuzhiyun #define FW_ULPTX_WR_DATA_V(x) ((x) << FW_ULPTX_WR_DATA_S) 522*4882a593Smuzhiyun #define FW_ULPTX_WR_DATA_G(x) \ 523*4882a593Smuzhiyun (((x) >> FW_ULPTX_WR_DATA_S) & FW_ULPTX_WR_DATA_M) 524*4882a593Smuzhiyun #define FW_ULPTX_WR_DATA_F FW_ULPTX_WR_DATA_V(1U) 525*4882a593Smuzhiyun 526*4882a593Smuzhiyun struct fw_tp_wr { 527*4882a593Smuzhiyun __be32 op_to_immdlen; 528*4882a593Smuzhiyun __be32 flowid_len16; 529*4882a593Smuzhiyun u64 cookie; 530*4882a593Smuzhiyun }; 531*4882a593Smuzhiyun 532*4882a593Smuzhiyun struct fw_eth_tx_pkt_wr { 533*4882a593Smuzhiyun __be32 op_immdlen; 534*4882a593Smuzhiyun __be32 equiq_to_len16; 535*4882a593Smuzhiyun __be64 r3; 536*4882a593Smuzhiyun }; 537*4882a593Smuzhiyun 538*4882a593Smuzhiyun enum fw_eth_tx_eo_type { 539*4882a593Smuzhiyun FW_ETH_TX_EO_TYPE_UDPSEG = 0, 540*4882a593Smuzhiyun FW_ETH_TX_EO_TYPE_TCPSEG, 541*4882a593Smuzhiyun }; 542*4882a593Smuzhiyun 543*4882a593Smuzhiyun struct fw_eth_tx_eo_wr { 544*4882a593Smuzhiyun __be32 op_immdlen; 545*4882a593Smuzhiyun __be32 equiq_to_len16; 546*4882a593Smuzhiyun __be64 r3; 547*4882a593Smuzhiyun union fw_eth_tx_eo { 548*4882a593Smuzhiyun struct fw_eth_tx_eo_udpseg { 549*4882a593Smuzhiyun __u8 type; 550*4882a593Smuzhiyun __u8 ethlen; 551*4882a593Smuzhiyun __be16 iplen; 552*4882a593Smuzhiyun __u8 udplen; 553*4882a593Smuzhiyun __u8 rtplen; 554*4882a593Smuzhiyun __be16 r4; 555*4882a593Smuzhiyun __be16 mss; 556*4882a593Smuzhiyun __be16 schedpktsize; 557*4882a593Smuzhiyun __be32 plen; 558*4882a593Smuzhiyun } udpseg; 559*4882a593Smuzhiyun struct fw_eth_tx_eo_tcpseg { 560*4882a593Smuzhiyun __u8 type; 561*4882a593Smuzhiyun __u8 ethlen; 562*4882a593Smuzhiyun __be16 iplen; 563*4882a593Smuzhiyun __u8 tcplen; 564*4882a593Smuzhiyun __u8 tsclk_tsoff; 565*4882a593Smuzhiyun __be16 r4; 566*4882a593Smuzhiyun __be16 mss; 567*4882a593Smuzhiyun __be16 r5; 568*4882a593Smuzhiyun __be32 plen; 569*4882a593Smuzhiyun } tcpseg; 570*4882a593Smuzhiyun } u; 571*4882a593Smuzhiyun }; 572*4882a593Smuzhiyun 573*4882a593Smuzhiyun #define FW_ETH_TX_EO_WR_IMMDLEN_S 0 574*4882a593Smuzhiyun #define FW_ETH_TX_EO_WR_IMMDLEN_M 0x1ff 575*4882a593Smuzhiyun #define FW_ETH_TX_EO_WR_IMMDLEN_V(x) ((x) << FW_ETH_TX_EO_WR_IMMDLEN_S) 576*4882a593Smuzhiyun #define FW_ETH_TX_EO_WR_IMMDLEN_G(x) \ 577*4882a593Smuzhiyun (((x) >> FW_ETH_TX_EO_WR_IMMDLEN_S) & FW_ETH_TX_EO_WR_IMMDLEN_M) 578*4882a593Smuzhiyun 579*4882a593Smuzhiyun struct fw_ofld_connection_wr { 580*4882a593Smuzhiyun __be32 op_compl; 581*4882a593Smuzhiyun __be32 len16_pkd; 582*4882a593Smuzhiyun __u64 cookie; 583*4882a593Smuzhiyun __be64 r2; 584*4882a593Smuzhiyun __be64 r3; 585*4882a593Smuzhiyun struct fw_ofld_connection_le { 586*4882a593Smuzhiyun __be32 version_cpl; 587*4882a593Smuzhiyun __be32 filter; 588*4882a593Smuzhiyun __be32 r1; 589*4882a593Smuzhiyun __be16 lport; 590*4882a593Smuzhiyun __be16 pport; 591*4882a593Smuzhiyun union fw_ofld_connection_leip { 592*4882a593Smuzhiyun struct fw_ofld_connection_le_ipv4 { 593*4882a593Smuzhiyun __be32 pip; 594*4882a593Smuzhiyun __be32 lip; 595*4882a593Smuzhiyun __be64 r0; 596*4882a593Smuzhiyun __be64 r1; 597*4882a593Smuzhiyun __be64 r2; 598*4882a593Smuzhiyun } ipv4; 599*4882a593Smuzhiyun struct fw_ofld_connection_le_ipv6 { 600*4882a593Smuzhiyun __be64 pip_hi; 601*4882a593Smuzhiyun __be64 pip_lo; 602*4882a593Smuzhiyun __be64 lip_hi; 603*4882a593Smuzhiyun __be64 lip_lo; 604*4882a593Smuzhiyun } ipv6; 605*4882a593Smuzhiyun } u; 606*4882a593Smuzhiyun } le; 607*4882a593Smuzhiyun struct fw_ofld_connection_tcb { 608*4882a593Smuzhiyun __be32 t_state_to_astid; 609*4882a593Smuzhiyun __be16 cplrxdataack_cplpassacceptrpl; 610*4882a593Smuzhiyun __be16 rcv_adv; 611*4882a593Smuzhiyun __be32 rcv_nxt; 612*4882a593Smuzhiyun __be32 tx_max; 613*4882a593Smuzhiyun __be64 opt0; 614*4882a593Smuzhiyun __be32 opt2; 615*4882a593Smuzhiyun __be32 r1; 616*4882a593Smuzhiyun __be64 r2; 617*4882a593Smuzhiyun __be64 r3; 618*4882a593Smuzhiyun } tcb; 619*4882a593Smuzhiyun }; 620*4882a593Smuzhiyun 621*4882a593Smuzhiyun #define FW_OFLD_CONNECTION_WR_VERSION_S 31 622*4882a593Smuzhiyun #define FW_OFLD_CONNECTION_WR_VERSION_M 0x1 623*4882a593Smuzhiyun #define FW_OFLD_CONNECTION_WR_VERSION_V(x) \ 624*4882a593Smuzhiyun ((x) << FW_OFLD_CONNECTION_WR_VERSION_S) 625*4882a593Smuzhiyun #define FW_OFLD_CONNECTION_WR_VERSION_G(x) \ 626*4882a593Smuzhiyun (((x) >> FW_OFLD_CONNECTION_WR_VERSION_S) & \ 627*4882a593Smuzhiyun FW_OFLD_CONNECTION_WR_VERSION_M) 628*4882a593Smuzhiyun #define FW_OFLD_CONNECTION_WR_VERSION_F \ 629*4882a593Smuzhiyun FW_OFLD_CONNECTION_WR_VERSION_V(1U) 630*4882a593Smuzhiyun 631*4882a593Smuzhiyun #define FW_OFLD_CONNECTION_WR_CPL_S 30 632*4882a593Smuzhiyun #define FW_OFLD_CONNECTION_WR_CPL_M 0x1 633*4882a593Smuzhiyun #define FW_OFLD_CONNECTION_WR_CPL_V(x) ((x) << FW_OFLD_CONNECTION_WR_CPL_S) 634*4882a593Smuzhiyun #define FW_OFLD_CONNECTION_WR_CPL_G(x) \ 635*4882a593Smuzhiyun (((x) >> FW_OFLD_CONNECTION_WR_CPL_S) & FW_OFLD_CONNECTION_WR_CPL_M) 636*4882a593Smuzhiyun #define FW_OFLD_CONNECTION_WR_CPL_F FW_OFLD_CONNECTION_WR_CPL_V(1U) 637*4882a593Smuzhiyun 638*4882a593Smuzhiyun #define FW_OFLD_CONNECTION_WR_T_STATE_S 28 639*4882a593Smuzhiyun #define FW_OFLD_CONNECTION_WR_T_STATE_M 0xf 640*4882a593Smuzhiyun #define FW_OFLD_CONNECTION_WR_T_STATE_V(x) \ 641*4882a593Smuzhiyun ((x) << FW_OFLD_CONNECTION_WR_T_STATE_S) 642*4882a593Smuzhiyun #define FW_OFLD_CONNECTION_WR_T_STATE_G(x) \ 643*4882a593Smuzhiyun (((x) >> FW_OFLD_CONNECTION_WR_T_STATE_S) & \ 644*4882a593Smuzhiyun FW_OFLD_CONNECTION_WR_T_STATE_M) 645*4882a593Smuzhiyun 646*4882a593Smuzhiyun #define FW_OFLD_CONNECTION_WR_RCV_SCALE_S 24 647*4882a593Smuzhiyun #define FW_OFLD_CONNECTION_WR_RCV_SCALE_M 0xf 648*4882a593Smuzhiyun #define FW_OFLD_CONNECTION_WR_RCV_SCALE_V(x) \ 649*4882a593Smuzhiyun ((x) << FW_OFLD_CONNECTION_WR_RCV_SCALE_S) 650*4882a593Smuzhiyun #define FW_OFLD_CONNECTION_WR_RCV_SCALE_G(x) \ 651*4882a593Smuzhiyun (((x) >> FW_OFLD_CONNECTION_WR_RCV_SCALE_S) & \ 652*4882a593Smuzhiyun FW_OFLD_CONNECTION_WR_RCV_SCALE_M) 653*4882a593Smuzhiyun 654*4882a593Smuzhiyun #define FW_OFLD_CONNECTION_WR_ASTID_S 0 655*4882a593Smuzhiyun #define FW_OFLD_CONNECTION_WR_ASTID_M 0xffffff 656*4882a593Smuzhiyun #define FW_OFLD_CONNECTION_WR_ASTID_V(x) \ 657*4882a593Smuzhiyun ((x) << FW_OFLD_CONNECTION_WR_ASTID_S) 658*4882a593Smuzhiyun #define FW_OFLD_CONNECTION_WR_ASTID_G(x) \ 659*4882a593Smuzhiyun (((x) >> FW_OFLD_CONNECTION_WR_ASTID_S) & FW_OFLD_CONNECTION_WR_ASTID_M) 660*4882a593Smuzhiyun 661*4882a593Smuzhiyun #define FW_OFLD_CONNECTION_WR_CPLRXDATAACK_S 15 662*4882a593Smuzhiyun #define FW_OFLD_CONNECTION_WR_CPLRXDATAACK_M 0x1 663*4882a593Smuzhiyun #define FW_OFLD_CONNECTION_WR_CPLRXDATAACK_V(x) \ 664*4882a593Smuzhiyun ((x) << FW_OFLD_CONNECTION_WR_CPLRXDATAACK_S) 665*4882a593Smuzhiyun #define FW_OFLD_CONNECTION_WR_CPLRXDATAACK_G(x) \ 666*4882a593Smuzhiyun (((x) >> FW_OFLD_CONNECTION_WR_CPLRXDATAACK_S) & \ 667*4882a593Smuzhiyun FW_OFLD_CONNECTION_WR_CPLRXDATAACK_M) 668*4882a593Smuzhiyun #define FW_OFLD_CONNECTION_WR_CPLRXDATAACK_F \ 669*4882a593Smuzhiyun FW_OFLD_CONNECTION_WR_CPLRXDATAACK_V(1U) 670*4882a593Smuzhiyun 671*4882a593Smuzhiyun #define FW_OFLD_CONNECTION_WR_CPLPASSACCEPTRPL_S 14 672*4882a593Smuzhiyun #define FW_OFLD_CONNECTION_WR_CPLPASSACCEPTRPL_M 0x1 673*4882a593Smuzhiyun #define FW_OFLD_CONNECTION_WR_CPLPASSACCEPTRPL_V(x) \ 674*4882a593Smuzhiyun ((x) << FW_OFLD_CONNECTION_WR_CPLPASSACCEPTRPL_S) 675*4882a593Smuzhiyun #define FW_OFLD_CONNECTION_WR_CPLPASSACCEPTRPL_G(x) \ 676*4882a593Smuzhiyun (((x) >> FW_OFLD_CONNECTION_WR_CPLPASSACCEPTRPL_S) & \ 677*4882a593Smuzhiyun FW_OFLD_CONNECTION_WR_CPLPASSACCEPTRPL_M) 678*4882a593Smuzhiyun #define FW_OFLD_CONNECTION_WR_CPLPASSACCEPTRPL_F \ 679*4882a593Smuzhiyun FW_OFLD_CONNECTION_WR_CPLPASSACCEPTRPL_V(1U) 680*4882a593Smuzhiyun 681*4882a593Smuzhiyun enum fw_flowc_mnem_tcpstate { 682*4882a593Smuzhiyun FW_FLOWC_MNEM_TCPSTATE_CLOSED = 0, /* illegal */ 683*4882a593Smuzhiyun FW_FLOWC_MNEM_TCPSTATE_LISTEN = 1, /* illegal */ 684*4882a593Smuzhiyun FW_FLOWC_MNEM_TCPSTATE_SYNSENT = 2, /* illegal */ 685*4882a593Smuzhiyun FW_FLOWC_MNEM_TCPSTATE_SYNRECEIVED = 3, /* illegal */ 686*4882a593Smuzhiyun FW_FLOWC_MNEM_TCPSTATE_ESTABLISHED = 4, /* default */ 687*4882a593Smuzhiyun FW_FLOWC_MNEM_TCPSTATE_CLOSEWAIT = 5, /* got peer close already */ 688*4882a593Smuzhiyun FW_FLOWC_MNEM_TCPSTATE_FINWAIT1 = 6, /* haven't gotten ACK for FIN and 689*4882a593Smuzhiyun * will resend FIN - equiv ESTAB 690*4882a593Smuzhiyun */ 691*4882a593Smuzhiyun FW_FLOWC_MNEM_TCPSTATE_CLOSING = 7, /* haven't gotten ACK for FIN and 692*4882a593Smuzhiyun * will resend FIN but have 693*4882a593Smuzhiyun * received FIN 694*4882a593Smuzhiyun */ 695*4882a593Smuzhiyun FW_FLOWC_MNEM_TCPSTATE_LASTACK = 8, /* haven't gotten ACK for FIN and 696*4882a593Smuzhiyun * will resend FIN but have 697*4882a593Smuzhiyun * received FIN 698*4882a593Smuzhiyun */ 699*4882a593Smuzhiyun FW_FLOWC_MNEM_TCPSTATE_FINWAIT2 = 9, /* sent FIN and got FIN + ACK, 700*4882a593Smuzhiyun * waiting for FIN 701*4882a593Smuzhiyun */ 702*4882a593Smuzhiyun FW_FLOWC_MNEM_TCPSTATE_TIMEWAIT = 10, /* not expected */ 703*4882a593Smuzhiyun }; 704*4882a593Smuzhiyun 705*4882a593Smuzhiyun enum fw_flowc_mnem_eostate { 706*4882a593Smuzhiyun FW_FLOWC_MNEM_EOSTATE_ESTABLISHED = 1, /* default */ 707*4882a593Smuzhiyun /* graceful close, after sending outstanding payload */ 708*4882a593Smuzhiyun FW_FLOWC_MNEM_EOSTATE_CLOSING = 2, 709*4882a593Smuzhiyun }; 710*4882a593Smuzhiyun 711*4882a593Smuzhiyun enum fw_flowc_mnem { 712*4882a593Smuzhiyun FW_FLOWC_MNEM_PFNVFN, /* PFN [15:8] VFN [7:0] */ 713*4882a593Smuzhiyun FW_FLOWC_MNEM_CH, 714*4882a593Smuzhiyun FW_FLOWC_MNEM_PORT, 715*4882a593Smuzhiyun FW_FLOWC_MNEM_IQID, 716*4882a593Smuzhiyun FW_FLOWC_MNEM_SNDNXT, 717*4882a593Smuzhiyun FW_FLOWC_MNEM_RCVNXT, 718*4882a593Smuzhiyun FW_FLOWC_MNEM_SNDBUF, 719*4882a593Smuzhiyun FW_FLOWC_MNEM_MSS, 720*4882a593Smuzhiyun FW_FLOWC_MNEM_TXDATAPLEN_MAX, 721*4882a593Smuzhiyun FW_FLOWC_MNEM_TCPSTATE, 722*4882a593Smuzhiyun FW_FLOWC_MNEM_EOSTATE, 723*4882a593Smuzhiyun FW_FLOWC_MNEM_SCHEDCLASS, 724*4882a593Smuzhiyun FW_FLOWC_MNEM_DCBPRIO, 725*4882a593Smuzhiyun FW_FLOWC_MNEM_SND_SCALE, 726*4882a593Smuzhiyun FW_FLOWC_MNEM_RCV_SCALE, 727*4882a593Smuzhiyun FW_FLOWC_MNEM_ULD_MODE, 728*4882a593Smuzhiyun FW_FLOWC_MNEM_MAX, 729*4882a593Smuzhiyun }; 730*4882a593Smuzhiyun 731*4882a593Smuzhiyun struct fw_flowc_mnemval { 732*4882a593Smuzhiyun u8 mnemonic; 733*4882a593Smuzhiyun u8 r4[3]; 734*4882a593Smuzhiyun __be32 val; 735*4882a593Smuzhiyun }; 736*4882a593Smuzhiyun 737*4882a593Smuzhiyun struct fw_flowc_wr { 738*4882a593Smuzhiyun __be32 op_to_nparams; 739*4882a593Smuzhiyun __be32 flowid_len16; 740*4882a593Smuzhiyun struct fw_flowc_mnemval mnemval[]; 741*4882a593Smuzhiyun }; 742*4882a593Smuzhiyun 743*4882a593Smuzhiyun #define FW_FLOWC_WR_NPARAMS_S 0 744*4882a593Smuzhiyun #define FW_FLOWC_WR_NPARAMS_V(x) ((x) << FW_FLOWC_WR_NPARAMS_S) 745*4882a593Smuzhiyun 746*4882a593Smuzhiyun struct fw_ofld_tx_data_wr { 747*4882a593Smuzhiyun __be32 op_to_immdlen; 748*4882a593Smuzhiyun __be32 flowid_len16; 749*4882a593Smuzhiyun __be32 plen; 750*4882a593Smuzhiyun __be32 tunnel_to_proxy; 751*4882a593Smuzhiyun }; 752*4882a593Smuzhiyun 753*4882a593Smuzhiyun #define FW_OFLD_TX_DATA_WR_ALIGNPLD_S 30 754*4882a593Smuzhiyun #define FW_OFLD_TX_DATA_WR_ALIGNPLD_V(x) ((x) << FW_OFLD_TX_DATA_WR_ALIGNPLD_S) 755*4882a593Smuzhiyun #define FW_OFLD_TX_DATA_WR_ALIGNPLD_F FW_OFLD_TX_DATA_WR_ALIGNPLD_V(1U) 756*4882a593Smuzhiyun 757*4882a593Smuzhiyun #define FW_OFLD_TX_DATA_WR_SHOVE_S 29 758*4882a593Smuzhiyun #define FW_OFLD_TX_DATA_WR_SHOVE_V(x) ((x) << FW_OFLD_TX_DATA_WR_SHOVE_S) 759*4882a593Smuzhiyun #define FW_OFLD_TX_DATA_WR_SHOVE_F FW_OFLD_TX_DATA_WR_SHOVE_V(1U) 760*4882a593Smuzhiyun 761*4882a593Smuzhiyun #define FW_OFLD_TX_DATA_WR_TUNNEL_S 19 762*4882a593Smuzhiyun #define FW_OFLD_TX_DATA_WR_TUNNEL_V(x) ((x) << FW_OFLD_TX_DATA_WR_TUNNEL_S) 763*4882a593Smuzhiyun 764*4882a593Smuzhiyun #define FW_OFLD_TX_DATA_WR_SAVE_S 18 765*4882a593Smuzhiyun #define FW_OFLD_TX_DATA_WR_SAVE_V(x) ((x) << FW_OFLD_TX_DATA_WR_SAVE_S) 766*4882a593Smuzhiyun 767*4882a593Smuzhiyun #define FW_OFLD_TX_DATA_WR_FLUSH_S 17 768*4882a593Smuzhiyun #define FW_OFLD_TX_DATA_WR_FLUSH_V(x) ((x) << FW_OFLD_TX_DATA_WR_FLUSH_S) 769*4882a593Smuzhiyun #define FW_OFLD_TX_DATA_WR_FLUSH_F FW_OFLD_TX_DATA_WR_FLUSH_V(1U) 770*4882a593Smuzhiyun 771*4882a593Smuzhiyun #define FW_OFLD_TX_DATA_WR_URGENT_S 16 772*4882a593Smuzhiyun #define FW_OFLD_TX_DATA_WR_URGENT_V(x) ((x) << FW_OFLD_TX_DATA_WR_URGENT_S) 773*4882a593Smuzhiyun 774*4882a593Smuzhiyun #define FW_OFLD_TX_DATA_WR_MORE_S 15 775*4882a593Smuzhiyun #define FW_OFLD_TX_DATA_WR_MORE_V(x) ((x) << FW_OFLD_TX_DATA_WR_MORE_S) 776*4882a593Smuzhiyun 777*4882a593Smuzhiyun #define FW_OFLD_TX_DATA_WR_ULPMODE_S 10 778*4882a593Smuzhiyun #define FW_OFLD_TX_DATA_WR_ULPMODE_V(x) ((x) << FW_OFLD_TX_DATA_WR_ULPMODE_S) 779*4882a593Smuzhiyun 780*4882a593Smuzhiyun #define FW_OFLD_TX_DATA_WR_ULPSUBMODE_S 6 781*4882a593Smuzhiyun #define FW_OFLD_TX_DATA_WR_ULPSUBMODE_V(x) \ 782*4882a593Smuzhiyun ((x) << FW_OFLD_TX_DATA_WR_ULPSUBMODE_S) 783*4882a593Smuzhiyun 784*4882a593Smuzhiyun struct fw_cmd_wr { 785*4882a593Smuzhiyun __be32 op_dma; 786*4882a593Smuzhiyun __be32 len16_pkd; 787*4882a593Smuzhiyun __be64 cookie_daddr; 788*4882a593Smuzhiyun }; 789*4882a593Smuzhiyun 790*4882a593Smuzhiyun #define FW_CMD_WR_DMA_S 17 791*4882a593Smuzhiyun #define FW_CMD_WR_DMA_V(x) ((x) << FW_CMD_WR_DMA_S) 792*4882a593Smuzhiyun 793*4882a593Smuzhiyun struct fw_eth_tx_pkt_vm_wr { 794*4882a593Smuzhiyun __be32 op_immdlen; 795*4882a593Smuzhiyun __be32 equiq_to_len16; 796*4882a593Smuzhiyun __be32 r3[2]; 797*4882a593Smuzhiyun u8 ethmacdst[6]; 798*4882a593Smuzhiyun u8 ethmacsrc[6]; 799*4882a593Smuzhiyun __be16 ethtype; 800*4882a593Smuzhiyun __be16 vlantci; 801*4882a593Smuzhiyun }; 802*4882a593Smuzhiyun 803*4882a593Smuzhiyun #define FW_CMD_MAX_TIMEOUT 10000 804*4882a593Smuzhiyun 805*4882a593Smuzhiyun /* 806*4882a593Smuzhiyun * If a host driver does a HELLO and discovers that there's already a MASTER 807*4882a593Smuzhiyun * selected, we may have to wait for that MASTER to finish issuing RESET, 808*4882a593Smuzhiyun * configuration and INITIALIZE commands. Also, there's a possibility that 809*4882a593Smuzhiyun * our own HELLO may get lost if it happens right as the MASTER is issuign a 810*4882a593Smuzhiyun * RESET command, so we need to be willing to make a few retries of our HELLO. 811*4882a593Smuzhiyun */ 812*4882a593Smuzhiyun #define FW_CMD_HELLO_TIMEOUT (3 * FW_CMD_MAX_TIMEOUT) 813*4882a593Smuzhiyun #define FW_CMD_HELLO_RETRIES 3 814*4882a593Smuzhiyun 815*4882a593Smuzhiyun 816*4882a593Smuzhiyun enum fw_cmd_opcodes { 817*4882a593Smuzhiyun FW_LDST_CMD = 0x01, 818*4882a593Smuzhiyun FW_RESET_CMD = 0x03, 819*4882a593Smuzhiyun FW_HELLO_CMD = 0x04, 820*4882a593Smuzhiyun FW_BYE_CMD = 0x05, 821*4882a593Smuzhiyun FW_INITIALIZE_CMD = 0x06, 822*4882a593Smuzhiyun FW_CAPS_CONFIG_CMD = 0x07, 823*4882a593Smuzhiyun FW_PARAMS_CMD = 0x08, 824*4882a593Smuzhiyun FW_PFVF_CMD = 0x09, 825*4882a593Smuzhiyun FW_IQ_CMD = 0x10, 826*4882a593Smuzhiyun FW_EQ_MNGT_CMD = 0x11, 827*4882a593Smuzhiyun FW_EQ_ETH_CMD = 0x12, 828*4882a593Smuzhiyun FW_EQ_CTRL_CMD = 0x13, 829*4882a593Smuzhiyun FW_EQ_OFLD_CMD = 0x21, 830*4882a593Smuzhiyun FW_VI_CMD = 0x14, 831*4882a593Smuzhiyun FW_VI_MAC_CMD = 0x15, 832*4882a593Smuzhiyun FW_VI_RXMODE_CMD = 0x16, 833*4882a593Smuzhiyun FW_VI_ENABLE_CMD = 0x17, 834*4882a593Smuzhiyun FW_ACL_MAC_CMD = 0x18, 835*4882a593Smuzhiyun FW_ACL_VLAN_CMD = 0x19, 836*4882a593Smuzhiyun FW_VI_STATS_CMD = 0x1a, 837*4882a593Smuzhiyun FW_PORT_CMD = 0x1b, 838*4882a593Smuzhiyun FW_PORT_STATS_CMD = 0x1c, 839*4882a593Smuzhiyun FW_PORT_LB_STATS_CMD = 0x1d, 840*4882a593Smuzhiyun FW_PORT_TRACE_CMD = 0x1e, 841*4882a593Smuzhiyun FW_PORT_TRACE_MMAP_CMD = 0x1f, 842*4882a593Smuzhiyun FW_RSS_IND_TBL_CMD = 0x20, 843*4882a593Smuzhiyun FW_RSS_GLB_CONFIG_CMD = 0x22, 844*4882a593Smuzhiyun FW_RSS_VI_CONFIG_CMD = 0x23, 845*4882a593Smuzhiyun FW_SCHED_CMD = 0x24, 846*4882a593Smuzhiyun FW_DEVLOG_CMD = 0x25, 847*4882a593Smuzhiyun FW_CLIP_CMD = 0x28, 848*4882a593Smuzhiyun FW_PTP_CMD = 0x3e, 849*4882a593Smuzhiyun FW_HMA_CMD = 0x3f, 850*4882a593Smuzhiyun FW_LASTC2E_CMD = 0x40, 851*4882a593Smuzhiyun FW_ERROR_CMD = 0x80, 852*4882a593Smuzhiyun FW_DEBUG_CMD = 0x81, 853*4882a593Smuzhiyun }; 854*4882a593Smuzhiyun 855*4882a593Smuzhiyun enum fw_cmd_cap { 856*4882a593Smuzhiyun FW_CMD_CAP_PF = 0x01, 857*4882a593Smuzhiyun FW_CMD_CAP_DMAQ = 0x02, 858*4882a593Smuzhiyun FW_CMD_CAP_PORT = 0x04, 859*4882a593Smuzhiyun FW_CMD_CAP_PORTPROMISC = 0x08, 860*4882a593Smuzhiyun FW_CMD_CAP_PORTSTATS = 0x10, 861*4882a593Smuzhiyun FW_CMD_CAP_VF = 0x80, 862*4882a593Smuzhiyun }; 863*4882a593Smuzhiyun 864*4882a593Smuzhiyun /* 865*4882a593Smuzhiyun * Generic command header flit0 866*4882a593Smuzhiyun */ 867*4882a593Smuzhiyun struct fw_cmd_hdr { 868*4882a593Smuzhiyun __be32 hi; 869*4882a593Smuzhiyun __be32 lo; 870*4882a593Smuzhiyun }; 871*4882a593Smuzhiyun 872*4882a593Smuzhiyun #define FW_CMD_OP_S 24 873*4882a593Smuzhiyun #define FW_CMD_OP_M 0xff 874*4882a593Smuzhiyun #define FW_CMD_OP_V(x) ((x) << FW_CMD_OP_S) 875*4882a593Smuzhiyun #define FW_CMD_OP_G(x) (((x) >> FW_CMD_OP_S) & FW_CMD_OP_M) 876*4882a593Smuzhiyun 877*4882a593Smuzhiyun #define FW_CMD_REQUEST_S 23 878*4882a593Smuzhiyun #define FW_CMD_REQUEST_V(x) ((x) << FW_CMD_REQUEST_S) 879*4882a593Smuzhiyun #define FW_CMD_REQUEST_F FW_CMD_REQUEST_V(1U) 880*4882a593Smuzhiyun 881*4882a593Smuzhiyun #define FW_CMD_READ_S 22 882*4882a593Smuzhiyun #define FW_CMD_READ_V(x) ((x) << FW_CMD_READ_S) 883*4882a593Smuzhiyun #define FW_CMD_READ_F FW_CMD_READ_V(1U) 884*4882a593Smuzhiyun 885*4882a593Smuzhiyun #define FW_CMD_WRITE_S 21 886*4882a593Smuzhiyun #define FW_CMD_WRITE_V(x) ((x) << FW_CMD_WRITE_S) 887*4882a593Smuzhiyun #define FW_CMD_WRITE_F FW_CMD_WRITE_V(1U) 888*4882a593Smuzhiyun 889*4882a593Smuzhiyun #define FW_CMD_EXEC_S 20 890*4882a593Smuzhiyun #define FW_CMD_EXEC_V(x) ((x) << FW_CMD_EXEC_S) 891*4882a593Smuzhiyun #define FW_CMD_EXEC_F FW_CMD_EXEC_V(1U) 892*4882a593Smuzhiyun 893*4882a593Smuzhiyun #define FW_CMD_RAMASK_S 20 894*4882a593Smuzhiyun #define FW_CMD_RAMASK_V(x) ((x) << FW_CMD_RAMASK_S) 895*4882a593Smuzhiyun 896*4882a593Smuzhiyun #define FW_CMD_RETVAL_S 8 897*4882a593Smuzhiyun #define FW_CMD_RETVAL_M 0xff 898*4882a593Smuzhiyun #define FW_CMD_RETVAL_V(x) ((x) << FW_CMD_RETVAL_S) 899*4882a593Smuzhiyun #define FW_CMD_RETVAL_G(x) (((x) >> FW_CMD_RETVAL_S) & FW_CMD_RETVAL_M) 900*4882a593Smuzhiyun 901*4882a593Smuzhiyun #define FW_CMD_LEN16_S 0 902*4882a593Smuzhiyun #define FW_CMD_LEN16_V(x) ((x) << FW_CMD_LEN16_S) 903*4882a593Smuzhiyun 904*4882a593Smuzhiyun #define FW_LEN16(fw_struct) FW_CMD_LEN16_V(sizeof(fw_struct) / 16) 905*4882a593Smuzhiyun 906*4882a593Smuzhiyun enum fw_ldst_addrspc { 907*4882a593Smuzhiyun FW_LDST_ADDRSPC_FIRMWARE = 0x0001, 908*4882a593Smuzhiyun FW_LDST_ADDRSPC_SGE_EGRC = 0x0008, 909*4882a593Smuzhiyun FW_LDST_ADDRSPC_SGE_INGC = 0x0009, 910*4882a593Smuzhiyun FW_LDST_ADDRSPC_SGE_FLMC = 0x000a, 911*4882a593Smuzhiyun FW_LDST_ADDRSPC_SGE_CONMC = 0x000b, 912*4882a593Smuzhiyun FW_LDST_ADDRSPC_TP_PIO = 0x0010, 913*4882a593Smuzhiyun FW_LDST_ADDRSPC_TP_TM_PIO = 0x0011, 914*4882a593Smuzhiyun FW_LDST_ADDRSPC_TP_MIB = 0x0012, 915*4882a593Smuzhiyun FW_LDST_ADDRSPC_MDIO = 0x0018, 916*4882a593Smuzhiyun FW_LDST_ADDRSPC_MPS = 0x0020, 917*4882a593Smuzhiyun FW_LDST_ADDRSPC_FUNC = 0x0028, 918*4882a593Smuzhiyun FW_LDST_ADDRSPC_FUNC_PCIE = 0x0029, 919*4882a593Smuzhiyun FW_LDST_ADDRSPC_I2C = 0x0038, 920*4882a593Smuzhiyun }; 921*4882a593Smuzhiyun 922*4882a593Smuzhiyun enum fw_ldst_mps_fid { 923*4882a593Smuzhiyun FW_LDST_MPS_ATRB, 924*4882a593Smuzhiyun FW_LDST_MPS_RPLC 925*4882a593Smuzhiyun }; 926*4882a593Smuzhiyun 927*4882a593Smuzhiyun enum fw_ldst_func_access_ctl { 928*4882a593Smuzhiyun FW_LDST_FUNC_ACC_CTL_VIID, 929*4882a593Smuzhiyun FW_LDST_FUNC_ACC_CTL_FID 930*4882a593Smuzhiyun }; 931*4882a593Smuzhiyun 932*4882a593Smuzhiyun enum fw_ldst_func_mod_index { 933*4882a593Smuzhiyun FW_LDST_FUNC_MPS 934*4882a593Smuzhiyun }; 935*4882a593Smuzhiyun 936*4882a593Smuzhiyun struct fw_ldst_cmd { 937*4882a593Smuzhiyun __be32 op_to_addrspace; 938*4882a593Smuzhiyun __be32 cycles_to_len16; 939*4882a593Smuzhiyun union fw_ldst { 940*4882a593Smuzhiyun struct fw_ldst_addrval { 941*4882a593Smuzhiyun __be32 addr; 942*4882a593Smuzhiyun __be32 val; 943*4882a593Smuzhiyun } addrval; 944*4882a593Smuzhiyun struct fw_ldst_idctxt { 945*4882a593Smuzhiyun __be32 physid; 946*4882a593Smuzhiyun __be32 msg_ctxtflush; 947*4882a593Smuzhiyun __be32 ctxt_data7; 948*4882a593Smuzhiyun __be32 ctxt_data6; 949*4882a593Smuzhiyun __be32 ctxt_data5; 950*4882a593Smuzhiyun __be32 ctxt_data4; 951*4882a593Smuzhiyun __be32 ctxt_data3; 952*4882a593Smuzhiyun __be32 ctxt_data2; 953*4882a593Smuzhiyun __be32 ctxt_data1; 954*4882a593Smuzhiyun __be32 ctxt_data0; 955*4882a593Smuzhiyun } idctxt; 956*4882a593Smuzhiyun struct fw_ldst_mdio { 957*4882a593Smuzhiyun __be16 paddr_mmd; 958*4882a593Smuzhiyun __be16 raddr; 959*4882a593Smuzhiyun __be16 vctl; 960*4882a593Smuzhiyun __be16 rval; 961*4882a593Smuzhiyun } mdio; 962*4882a593Smuzhiyun struct fw_ldst_cim_rq { 963*4882a593Smuzhiyun u8 req_first64[8]; 964*4882a593Smuzhiyun u8 req_second64[8]; 965*4882a593Smuzhiyun u8 resp_first64[8]; 966*4882a593Smuzhiyun u8 resp_second64[8]; 967*4882a593Smuzhiyun __be32 r3[2]; 968*4882a593Smuzhiyun } cim_rq; 969*4882a593Smuzhiyun union fw_ldst_mps { 970*4882a593Smuzhiyun struct fw_ldst_mps_rplc { 971*4882a593Smuzhiyun __be16 fid_idx; 972*4882a593Smuzhiyun __be16 rplcpf_pkd; 973*4882a593Smuzhiyun __be32 rplc255_224; 974*4882a593Smuzhiyun __be32 rplc223_192; 975*4882a593Smuzhiyun __be32 rplc191_160; 976*4882a593Smuzhiyun __be32 rplc159_128; 977*4882a593Smuzhiyun __be32 rplc127_96; 978*4882a593Smuzhiyun __be32 rplc95_64; 979*4882a593Smuzhiyun __be32 rplc63_32; 980*4882a593Smuzhiyun __be32 rplc31_0; 981*4882a593Smuzhiyun } rplc; 982*4882a593Smuzhiyun struct fw_ldst_mps_atrb { 983*4882a593Smuzhiyun __be16 fid_mpsid; 984*4882a593Smuzhiyun __be16 r2[3]; 985*4882a593Smuzhiyun __be32 r3[2]; 986*4882a593Smuzhiyun __be32 r4; 987*4882a593Smuzhiyun __be32 atrb; 988*4882a593Smuzhiyun __be16 vlan[16]; 989*4882a593Smuzhiyun } atrb; 990*4882a593Smuzhiyun } mps; 991*4882a593Smuzhiyun struct fw_ldst_func { 992*4882a593Smuzhiyun u8 access_ctl; 993*4882a593Smuzhiyun u8 mod_index; 994*4882a593Smuzhiyun __be16 ctl_id; 995*4882a593Smuzhiyun __be32 offset; 996*4882a593Smuzhiyun __be64 data0; 997*4882a593Smuzhiyun __be64 data1; 998*4882a593Smuzhiyun } func; 999*4882a593Smuzhiyun struct fw_ldst_pcie { 1000*4882a593Smuzhiyun u8 ctrl_to_fn; 1001*4882a593Smuzhiyun u8 bnum; 1002*4882a593Smuzhiyun u8 r; 1003*4882a593Smuzhiyun u8 ext_r; 1004*4882a593Smuzhiyun u8 select_naccess; 1005*4882a593Smuzhiyun u8 pcie_fn; 1006*4882a593Smuzhiyun __be16 nset_pkd; 1007*4882a593Smuzhiyun __be32 data[12]; 1008*4882a593Smuzhiyun } pcie; 1009*4882a593Smuzhiyun struct fw_ldst_i2c_deprecated { 1010*4882a593Smuzhiyun u8 pid_pkd; 1011*4882a593Smuzhiyun u8 base; 1012*4882a593Smuzhiyun u8 boffset; 1013*4882a593Smuzhiyun u8 data; 1014*4882a593Smuzhiyun __be32 r9; 1015*4882a593Smuzhiyun } i2c_deprecated; 1016*4882a593Smuzhiyun struct fw_ldst_i2c { 1017*4882a593Smuzhiyun u8 pid; 1018*4882a593Smuzhiyun u8 did; 1019*4882a593Smuzhiyun u8 boffset; 1020*4882a593Smuzhiyun u8 blen; 1021*4882a593Smuzhiyun __be32 r9; 1022*4882a593Smuzhiyun __u8 data[48]; 1023*4882a593Smuzhiyun } i2c; 1024*4882a593Smuzhiyun struct fw_ldst_le { 1025*4882a593Smuzhiyun __be32 index; 1026*4882a593Smuzhiyun __be32 r9; 1027*4882a593Smuzhiyun u8 val[33]; 1028*4882a593Smuzhiyun u8 r11[7]; 1029*4882a593Smuzhiyun } le; 1030*4882a593Smuzhiyun } u; 1031*4882a593Smuzhiyun }; 1032*4882a593Smuzhiyun 1033*4882a593Smuzhiyun #define FW_LDST_CMD_ADDRSPACE_S 0 1034*4882a593Smuzhiyun #define FW_LDST_CMD_ADDRSPACE_V(x) ((x) << FW_LDST_CMD_ADDRSPACE_S) 1035*4882a593Smuzhiyun 1036*4882a593Smuzhiyun #define FW_LDST_CMD_MSG_S 31 1037*4882a593Smuzhiyun #define FW_LDST_CMD_MSG_V(x) ((x) << FW_LDST_CMD_MSG_S) 1038*4882a593Smuzhiyun 1039*4882a593Smuzhiyun #define FW_LDST_CMD_CTXTFLUSH_S 30 1040*4882a593Smuzhiyun #define FW_LDST_CMD_CTXTFLUSH_V(x) ((x) << FW_LDST_CMD_CTXTFLUSH_S) 1041*4882a593Smuzhiyun #define FW_LDST_CMD_CTXTFLUSH_F FW_LDST_CMD_CTXTFLUSH_V(1U) 1042*4882a593Smuzhiyun 1043*4882a593Smuzhiyun #define FW_LDST_CMD_PADDR_S 8 1044*4882a593Smuzhiyun #define FW_LDST_CMD_PADDR_V(x) ((x) << FW_LDST_CMD_PADDR_S) 1045*4882a593Smuzhiyun 1046*4882a593Smuzhiyun #define FW_LDST_CMD_MMD_S 0 1047*4882a593Smuzhiyun #define FW_LDST_CMD_MMD_V(x) ((x) << FW_LDST_CMD_MMD_S) 1048*4882a593Smuzhiyun 1049*4882a593Smuzhiyun #define FW_LDST_CMD_FID_S 15 1050*4882a593Smuzhiyun #define FW_LDST_CMD_FID_V(x) ((x) << FW_LDST_CMD_FID_S) 1051*4882a593Smuzhiyun 1052*4882a593Smuzhiyun #define FW_LDST_CMD_IDX_S 0 1053*4882a593Smuzhiyun #define FW_LDST_CMD_IDX_V(x) ((x) << FW_LDST_CMD_IDX_S) 1054*4882a593Smuzhiyun 1055*4882a593Smuzhiyun #define FW_LDST_CMD_RPLCPF_S 0 1056*4882a593Smuzhiyun #define FW_LDST_CMD_RPLCPF_V(x) ((x) << FW_LDST_CMD_RPLCPF_S) 1057*4882a593Smuzhiyun 1058*4882a593Smuzhiyun #define FW_LDST_CMD_LC_S 4 1059*4882a593Smuzhiyun #define FW_LDST_CMD_LC_V(x) ((x) << FW_LDST_CMD_LC_S) 1060*4882a593Smuzhiyun #define FW_LDST_CMD_LC_F FW_LDST_CMD_LC_V(1U) 1061*4882a593Smuzhiyun 1062*4882a593Smuzhiyun #define FW_LDST_CMD_FN_S 0 1063*4882a593Smuzhiyun #define FW_LDST_CMD_FN_V(x) ((x) << FW_LDST_CMD_FN_S) 1064*4882a593Smuzhiyun 1065*4882a593Smuzhiyun #define FW_LDST_CMD_NACCESS_S 0 1066*4882a593Smuzhiyun #define FW_LDST_CMD_NACCESS_V(x) ((x) << FW_LDST_CMD_NACCESS_S) 1067*4882a593Smuzhiyun 1068*4882a593Smuzhiyun struct fw_reset_cmd { 1069*4882a593Smuzhiyun __be32 op_to_write; 1070*4882a593Smuzhiyun __be32 retval_len16; 1071*4882a593Smuzhiyun __be32 val; 1072*4882a593Smuzhiyun __be32 halt_pkd; 1073*4882a593Smuzhiyun }; 1074*4882a593Smuzhiyun 1075*4882a593Smuzhiyun #define FW_RESET_CMD_HALT_S 31 1076*4882a593Smuzhiyun #define FW_RESET_CMD_HALT_M 0x1 1077*4882a593Smuzhiyun #define FW_RESET_CMD_HALT_V(x) ((x) << FW_RESET_CMD_HALT_S) 1078*4882a593Smuzhiyun #define FW_RESET_CMD_HALT_G(x) \ 1079*4882a593Smuzhiyun (((x) >> FW_RESET_CMD_HALT_S) & FW_RESET_CMD_HALT_M) 1080*4882a593Smuzhiyun #define FW_RESET_CMD_HALT_F FW_RESET_CMD_HALT_V(1U) 1081*4882a593Smuzhiyun 1082*4882a593Smuzhiyun enum fw_hellow_cmd { 1083*4882a593Smuzhiyun fw_hello_cmd_stage_os = 0x0 1084*4882a593Smuzhiyun }; 1085*4882a593Smuzhiyun 1086*4882a593Smuzhiyun struct fw_hello_cmd { 1087*4882a593Smuzhiyun __be32 op_to_write; 1088*4882a593Smuzhiyun __be32 retval_len16; 1089*4882a593Smuzhiyun __be32 err_to_clearinit; 1090*4882a593Smuzhiyun __be32 fwrev; 1091*4882a593Smuzhiyun }; 1092*4882a593Smuzhiyun 1093*4882a593Smuzhiyun #define FW_HELLO_CMD_ERR_S 31 1094*4882a593Smuzhiyun #define FW_HELLO_CMD_ERR_V(x) ((x) << FW_HELLO_CMD_ERR_S) 1095*4882a593Smuzhiyun #define FW_HELLO_CMD_ERR_F FW_HELLO_CMD_ERR_V(1U) 1096*4882a593Smuzhiyun 1097*4882a593Smuzhiyun #define FW_HELLO_CMD_INIT_S 30 1098*4882a593Smuzhiyun #define FW_HELLO_CMD_INIT_V(x) ((x) << FW_HELLO_CMD_INIT_S) 1099*4882a593Smuzhiyun #define FW_HELLO_CMD_INIT_F FW_HELLO_CMD_INIT_V(1U) 1100*4882a593Smuzhiyun 1101*4882a593Smuzhiyun #define FW_HELLO_CMD_MASTERDIS_S 29 1102*4882a593Smuzhiyun #define FW_HELLO_CMD_MASTERDIS_V(x) ((x) << FW_HELLO_CMD_MASTERDIS_S) 1103*4882a593Smuzhiyun 1104*4882a593Smuzhiyun #define FW_HELLO_CMD_MASTERFORCE_S 28 1105*4882a593Smuzhiyun #define FW_HELLO_CMD_MASTERFORCE_V(x) ((x) << FW_HELLO_CMD_MASTERFORCE_S) 1106*4882a593Smuzhiyun 1107*4882a593Smuzhiyun #define FW_HELLO_CMD_MBMASTER_S 24 1108*4882a593Smuzhiyun #define FW_HELLO_CMD_MBMASTER_M 0xfU 1109*4882a593Smuzhiyun #define FW_HELLO_CMD_MBMASTER_V(x) ((x) << FW_HELLO_CMD_MBMASTER_S) 1110*4882a593Smuzhiyun #define FW_HELLO_CMD_MBMASTER_G(x) \ 1111*4882a593Smuzhiyun (((x) >> FW_HELLO_CMD_MBMASTER_S) & FW_HELLO_CMD_MBMASTER_M) 1112*4882a593Smuzhiyun 1113*4882a593Smuzhiyun #define FW_HELLO_CMD_MBASYNCNOTINT_S 23 1114*4882a593Smuzhiyun #define FW_HELLO_CMD_MBASYNCNOTINT_V(x) ((x) << FW_HELLO_CMD_MBASYNCNOTINT_S) 1115*4882a593Smuzhiyun 1116*4882a593Smuzhiyun #define FW_HELLO_CMD_MBASYNCNOT_S 20 1117*4882a593Smuzhiyun #define FW_HELLO_CMD_MBASYNCNOT_V(x) ((x) << FW_HELLO_CMD_MBASYNCNOT_S) 1118*4882a593Smuzhiyun 1119*4882a593Smuzhiyun #define FW_HELLO_CMD_STAGE_S 17 1120*4882a593Smuzhiyun #define FW_HELLO_CMD_STAGE_V(x) ((x) << FW_HELLO_CMD_STAGE_S) 1121*4882a593Smuzhiyun 1122*4882a593Smuzhiyun #define FW_HELLO_CMD_CLEARINIT_S 16 1123*4882a593Smuzhiyun #define FW_HELLO_CMD_CLEARINIT_V(x) ((x) << FW_HELLO_CMD_CLEARINIT_S) 1124*4882a593Smuzhiyun #define FW_HELLO_CMD_CLEARINIT_F FW_HELLO_CMD_CLEARINIT_V(1U) 1125*4882a593Smuzhiyun 1126*4882a593Smuzhiyun struct fw_bye_cmd { 1127*4882a593Smuzhiyun __be32 op_to_write; 1128*4882a593Smuzhiyun __be32 retval_len16; 1129*4882a593Smuzhiyun __be64 r3; 1130*4882a593Smuzhiyun }; 1131*4882a593Smuzhiyun 1132*4882a593Smuzhiyun struct fw_initialize_cmd { 1133*4882a593Smuzhiyun __be32 op_to_write; 1134*4882a593Smuzhiyun __be32 retval_len16; 1135*4882a593Smuzhiyun __be64 r3; 1136*4882a593Smuzhiyun }; 1137*4882a593Smuzhiyun 1138*4882a593Smuzhiyun enum fw_caps_config_hm { 1139*4882a593Smuzhiyun FW_CAPS_CONFIG_HM_PCIE = 0x00000001, 1140*4882a593Smuzhiyun FW_CAPS_CONFIG_HM_PL = 0x00000002, 1141*4882a593Smuzhiyun FW_CAPS_CONFIG_HM_SGE = 0x00000004, 1142*4882a593Smuzhiyun FW_CAPS_CONFIG_HM_CIM = 0x00000008, 1143*4882a593Smuzhiyun FW_CAPS_CONFIG_HM_ULPTX = 0x00000010, 1144*4882a593Smuzhiyun FW_CAPS_CONFIG_HM_TP = 0x00000020, 1145*4882a593Smuzhiyun FW_CAPS_CONFIG_HM_ULPRX = 0x00000040, 1146*4882a593Smuzhiyun FW_CAPS_CONFIG_HM_PMRX = 0x00000080, 1147*4882a593Smuzhiyun FW_CAPS_CONFIG_HM_PMTX = 0x00000100, 1148*4882a593Smuzhiyun FW_CAPS_CONFIG_HM_MC = 0x00000200, 1149*4882a593Smuzhiyun FW_CAPS_CONFIG_HM_LE = 0x00000400, 1150*4882a593Smuzhiyun FW_CAPS_CONFIG_HM_MPS = 0x00000800, 1151*4882a593Smuzhiyun FW_CAPS_CONFIG_HM_XGMAC = 0x00001000, 1152*4882a593Smuzhiyun FW_CAPS_CONFIG_HM_CPLSWITCH = 0x00002000, 1153*4882a593Smuzhiyun FW_CAPS_CONFIG_HM_T4DBG = 0x00004000, 1154*4882a593Smuzhiyun FW_CAPS_CONFIG_HM_MI = 0x00008000, 1155*4882a593Smuzhiyun FW_CAPS_CONFIG_HM_I2CM = 0x00010000, 1156*4882a593Smuzhiyun FW_CAPS_CONFIG_HM_NCSI = 0x00020000, 1157*4882a593Smuzhiyun FW_CAPS_CONFIG_HM_SMB = 0x00040000, 1158*4882a593Smuzhiyun FW_CAPS_CONFIG_HM_MA = 0x00080000, 1159*4882a593Smuzhiyun FW_CAPS_CONFIG_HM_EDRAM = 0x00100000, 1160*4882a593Smuzhiyun FW_CAPS_CONFIG_HM_PMU = 0x00200000, 1161*4882a593Smuzhiyun FW_CAPS_CONFIG_HM_UART = 0x00400000, 1162*4882a593Smuzhiyun FW_CAPS_CONFIG_HM_SF = 0x00800000, 1163*4882a593Smuzhiyun }; 1164*4882a593Smuzhiyun 1165*4882a593Smuzhiyun enum fw_caps_config_nbm { 1166*4882a593Smuzhiyun FW_CAPS_CONFIG_NBM_IPMI = 0x00000001, 1167*4882a593Smuzhiyun FW_CAPS_CONFIG_NBM_NCSI = 0x00000002, 1168*4882a593Smuzhiyun }; 1169*4882a593Smuzhiyun 1170*4882a593Smuzhiyun enum fw_caps_config_link { 1171*4882a593Smuzhiyun FW_CAPS_CONFIG_LINK_PPP = 0x00000001, 1172*4882a593Smuzhiyun FW_CAPS_CONFIG_LINK_QFC = 0x00000002, 1173*4882a593Smuzhiyun FW_CAPS_CONFIG_LINK_DCBX = 0x00000004, 1174*4882a593Smuzhiyun }; 1175*4882a593Smuzhiyun 1176*4882a593Smuzhiyun enum fw_caps_config_switch { 1177*4882a593Smuzhiyun FW_CAPS_CONFIG_SWITCH_INGRESS = 0x00000001, 1178*4882a593Smuzhiyun FW_CAPS_CONFIG_SWITCH_EGRESS = 0x00000002, 1179*4882a593Smuzhiyun }; 1180*4882a593Smuzhiyun 1181*4882a593Smuzhiyun enum fw_caps_config_nic { 1182*4882a593Smuzhiyun FW_CAPS_CONFIG_NIC = 0x00000001, 1183*4882a593Smuzhiyun FW_CAPS_CONFIG_NIC_VM = 0x00000002, 1184*4882a593Smuzhiyun FW_CAPS_CONFIG_NIC_HASHFILTER = 0x00000020, 1185*4882a593Smuzhiyun FW_CAPS_CONFIG_NIC_ETHOFLD = 0x00000040, 1186*4882a593Smuzhiyun }; 1187*4882a593Smuzhiyun 1188*4882a593Smuzhiyun enum fw_caps_config_ofld { 1189*4882a593Smuzhiyun FW_CAPS_CONFIG_OFLD = 0x00000001, 1190*4882a593Smuzhiyun }; 1191*4882a593Smuzhiyun 1192*4882a593Smuzhiyun enum fw_caps_config_rdma { 1193*4882a593Smuzhiyun FW_CAPS_CONFIG_RDMA_RDDP = 0x00000001, 1194*4882a593Smuzhiyun FW_CAPS_CONFIG_RDMA_RDMAC = 0x00000002, 1195*4882a593Smuzhiyun }; 1196*4882a593Smuzhiyun 1197*4882a593Smuzhiyun enum fw_caps_config_iscsi { 1198*4882a593Smuzhiyun FW_CAPS_CONFIG_ISCSI_INITIATOR_PDU = 0x00000001, 1199*4882a593Smuzhiyun FW_CAPS_CONFIG_ISCSI_TARGET_PDU = 0x00000002, 1200*4882a593Smuzhiyun FW_CAPS_CONFIG_ISCSI_INITIATOR_CNXOFLD = 0x00000004, 1201*4882a593Smuzhiyun FW_CAPS_CONFIG_ISCSI_TARGET_CNXOFLD = 0x00000008, 1202*4882a593Smuzhiyun }; 1203*4882a593Smuzhiyun 1204*4882a593Smuzhiyun enum fw_caps_config_crypto { 1205*4882a593Smuzhiyun FW_CAPS_CONFIG_CRYPTO_LOOKASIDE = 0x00000001, 1206*4882a593Smuzhiyun FW_CAPS_CONFIG_TLS_INLINE = 0x00000002, 1207*4882a593Smuzhiyun FW_CAPS_CONFIG_IPSEC_INLINE = 0x00000004, 1208*4882a593Smuzhiyun FW_CAPS_CONFIG_TLS_HW = 0x00000008, 1209*4882a593Smuzhiyun }; 1210*4882a593Smuzhiyun 1211*4882a593Smuzhiyun enum fw_caps_config_fcoe { 1212*4882a593Smuzhiyun FW_CAPS_CONFIG_FCOE_INITIATOR = 0x00000001, 1213*4882a593Smuzhiyun FW_CAPS_CONFIG_FCOE_TARGET = 0x00000002, 1214*4882a593Smuzhiyun FW_CAPS_CONFIG_FCOE_CTRL_OFLD = 0x00000004, 1215*4882a593Smuzhiyun }; 1216*4882a593Smuzhiyun 1217*4882a593Smuzhiyun enum fw_memtype_cf { 1218*4882a593Smuzhiyun FW_MEMTYPE_CF_EDC0 = 0x0, 1219*4882a593Smuzhiyun FW_MEMTYPE_CF_EDC1 = 0x1, 1220*4882a593Smuzhiyun FW_MEMTYPE_CF_EXTMEM = 0x2, 1221*4882a593Smuzhiyun FW_MEMTYPE_CF_FLASH = 0x4, 1222*4882a593Smuzhiyun FW_MEMTYPE_CF_INTERNAL = 0x5, 1223*4882a593Smuzhiyun FW_MEMTYPE_CF_EXTMEM1 = 0x6, 1224*4882a593Smuzhiyun FW_MEMTYPE_CF_HMA = 0x7, 1225*4882a593Smuzhiyun }; 1226*4882a593Smuzhiyun 1227*4882a593Smuzhiyun struct fw_caps_config_cmd { 1228*4882a593Smuzhiyun __be32 op_to_write; 1229*4882a593Smuzhiyun __be32 cfvalid_to_len16; 1230*4882a593Smuzhiyun __be32 r2; 1231*4882a593Smuzhiyun __be32 hwmbitmap; 1232*4882a593Smuzhiyun __be16 nbmcaps; 1233*4882a593Smuzhiyun __be16 linkcaps; 1234*4882a593Smuzhiyun __be16 switchcaps; 1235*4882a593Smuzhiyun __be16 r3; 1236*4882a593Smuzhiyun __be16 niccaps; 1237*4882a593Smuzhiyun __be16 ofldcaps; 1238*4882a593Smuzhiyun __be16 rdmacaps; 1239*4882a593Smuzhiyun __be16 cryptocaps; 1240*4882a593Smuzhiyun __be16 iscsicaps; 1241*4882a593Smuzhiyun __be16 fcoecaps; 1242*4882a593Smuzhiyun __be32 cfcsum; 1243*4882a593Smuzhiyun __be32 finiver; 1244*4882a593Smuzhiyun __be32 finicsum; 1245*4882a593Smuzhiyun }; 1246*4882a593Smuzhiyun 1247*4882a593Smuzhiyun #define FW_CAPS_CONFIG_CMD_CFVALID_S 27 1248*4882a593Smuzhiyun #define FW_CAPS_CONFIG_CMD_CFVALID_V(x) ((x) << FW_CAPS_CONFIG_CMD_CFVALID_S) 1249*4882a593Smuzhiyun #define FW_CAPS_CONFIG_CMD_CFVALID_F FW_CAPS_CONFIG_CMD_CFVALID_V(1U) 1250*4882a593Smuzhiyun 1251*4882a593Smuzhiyun #define FW_CAPS_CONFIG_CMD_MEMTYPE_CF_S 24 1252*4882a593Smuzhiyun #define FW_CAPS_CONFIG_CMD_MEMTYPE_CF_V(x) \ 1253*4882a593Smuzhiyun ((x) << FW_CAPS_CONFIG_CMD_MEMTYPE_CF_S) 1254*4882a593Smuzhiyun 1255*4882a593Smuzhiyun #define FW_CAPS_CONFIG_CMD_MEMADDR64K_CF_S 16 1256*4882a593Smuzhiyun #define FW_CAPS_CONFIG_CMD_MEMADDR64K_CF_V(x) \ 1257*4882a593Smuzhiyun ((x) << FW_CAPS_CONFIG_CMD_MEMADDR64K_CF_S) 1258*4882a593Smuzhiyun 1259*4882a593Smuzhiyun /* 1260*4882a593Smuzhiyun * params command mnemonics 1261*4882a593Smuzhiyun */ 1262*4882a593Smuzhiyun enum fw_params_mnem { 1263*4882a593Smuzhiyun FW_PARAMS_MNEM_DEV = 1, /* device params */ 1264*4882a593Smuzhiyun FW_PARAMS_MNEM_PFVF = 2, /* function params */ 1265*4882a593Smuzhiyun FW_PARAMS_MNEM_REG = 3, /* limited register access */ 1266*4882a593Smuzhiyun FW_PARAMS_MNEM_DMAQ = 4, /* dma queue params */ 1267*4882a593Smuzhiyun FW_PARAMS_MNEM_CHNET = 5, /* chnet params */ 1268*4882a593Smuzhiyun FW_PARAMS_MNEM_LAST 1269*4882a593Smuzhiyun }; 1270*4882a593Smuzhiyun 1271*4882a593Smuzhiyun /* 1272*4882a593Smuzhiyun * device parameters 1273*4882a593Smuzhiyun */ 1274*4882a593Smuzhiyun 1275*4882a593Smuzhiyun #define FW_PARAMS_PARAM_FILTER_MODE_S 16 1276*4882a593Smuzhiyun #define FW_PARAMS_PARAM_FILTER_MODE_M 0xffff 1277*4882a593Smuzhiyun #define FW_PARAMS_PARAM_FILTER_MODE_V(x) \ 1278*4882a593Smuzhiyun ((x) << FW_PARAMS_PARAM_FILTER_MODE_S) 1279*4882a593Smuzhiyun #define FW_PARAMS_PARAM_FILTER_MODE_G(x) \ 1280*4882a593Smuzhiyun (((x) >> FW_PARAMS_PARAM_FILTER_MODE_S) & \ 1281*4882a593Smuzhiyun FW_PARAMS_PARAM_FILTER_MODE_M) 1282*4882a593Smuzhiyun 1283*4882a593Smuzhiyun #define FW_PARAMS_PARAM_FILTER_MASK_S 0 1284*4882a593Smuzhiyun #define FW_PARAMS_PARAM_FILTER_MASK_M 0xffff 1285*4882a593Smuzhiyun #define FW_PARAMS_PARAM_FILTER_MASK_V(x) \ 1286*4882a593Smuzhiyun ((x) << FW_PARAMS_PARAM_FILTER_MASK_S) 1287*4882a593Smuzhiyun #define FW_PARAMS_PARAM_FILTER_MASK_G(x) \ 1288*4882a593Smuzhiyun (((x) >> FW_PARAMS_PARAM_FILTER_MASK_S) & \ 1289*4882a593Smuzhiyun FW_PARAMS_PARAM_FILTER_MASK_M) 1290*4882a593Smuzhiyun 1291*4882a593Smuzhiyun enum fw_params_param_dev { 1292*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_CCLK = 0x00, /* chip core clock in khz */ 1293*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_PORTVEC = 0x01, /* the port vector */ 1294*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_NTID = 0x02, /* reads the number of TIDs 1295*4882a593Smuzhiyun * allocated by the device's 1296*4882a593Smuzhiyun * Lookup Engine 1297*4882a593Smuzhiyun */ 1298*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_FLOWC_BUFFIFO_SZ = 0x03, 1299*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_INTVER_NIC = 0x04, 1300*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_INTVER_VNIC = 0x05, 1301*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_INTVER_OFLD = 0x06, 1302*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_INTVER_RI = 0x07, 1303*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_INTVER_ISCSIPDU = 0x08, 1304*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_INTVER_ISCSI = 0x09, 1305*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_INTVER_FCOE = 0x0A, 1306*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_FWREV = 0x0B, 1307*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_TPREV = 0x0C, 1308*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_CF = 0x0D, 1309*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_PHYFW = 0x0F, 1310*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_DIAG = 0x11, 1311*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_MAXORDIRD_QP = 0x13, /* max supported QP IRD/ORD */ 1312*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_MAXIRD_ADAPTER = 0x14, /* max supported adap IRD */ 1313*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_ULPTX_MEMWRITE_DSGL = 0x17, 1314*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_FWCACHE = 0x18, 1315*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_SCFGREV = 0x1A, 1316*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_VPDREV = 0x1B, 1317*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_RI_FR_NSMR_TPTE_WR = 0x1C, 1318*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_FILTER2_WR = 0x1D, 1319*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_MPSBGMAP = 0x1E, 1320*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_TPCHMAP = 0x1F, 1321*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_HMA_SIZE = 0x20, 1322*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_RDMA_WRITE_WITH_IMM = 0x21, 1323*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_PPOD_EDRAM = 0x23, 1324*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_RI_WRITE_CMPL_WR = 0x24, 1325*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_HPFILTER_REGION_SUPPORT = 0x26, 1326*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_OPAQUE_VIID_SMT_EXTN = 0x27, 1327*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_HASHFILTER_WITH_OFLD = 0x28, 1328*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_DBQ_TIMER = 0x29, 1329*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_DBQ_TIMERTICK = 0x2A, 1330*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_NUM_TM_CLASS = 0x2B, 1331*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_FILTER = 0x2E, 1332*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_KTLS_HW = 0x31, 1333*4882a593Smuzhiyun }; 1334*4882a593Smuzhiyun 1335*4882a593Smuzhiyun /* 1336*4882a593Smuzhiyun * physical and virtual function parameters 1337*4882a593Smuzhiyun */ 1338*4882a593Smuzhiyun enum fw_params_param_pfvf { 1339*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_RWXCAPS = 0x00, 1340*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_ROUTE_START = 0x01, 1341*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_ROUTE_END = 0x02, 1342*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_CLIP_START = 0x03, 1343*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_CLIP_END = 0x04, 1344*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_FILTER_START = 0x05, 1345*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_FILTER_END = 0x06, 1346*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_SERVER_START = 0x07, 1347*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_SERVER_END = 0x08, 1348*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_TDDP_START = 0x09, 1349*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_TDDP_END = 0x0A, 1350*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_ISCSI_START = 0x0B, 1351*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_ISCSI_END = 0x0C, 1352*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_STAG_START = 0x0D, 1353*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_STAG_END = 0x0E, 1354*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_RQ_START = 0x1F, 1355*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_RQ_END = 0x10, 1356*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_PBL_START = 0x11, 1357*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_PBL_END = 0x12, 1358*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_L2T_START = 0x13, 1359*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_L2T_END = 0x14, 1360*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_SQRQ_START = 0x15, 1361*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_SQRQ_END = 0x16, 1362*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_CQ_START = 0x17, 1363*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_CQ_END = 0x18, 1364*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_SRQ_START = 0x19, 1365*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_SRQ_END = 0x1A, 1366*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_SCHEDCLASS_ETH = 0x20, 1367*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_VIID = 0x24, 1368*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_CPMASK = 0x25, 1369*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_OCQ_START = 0x26, 1370*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_OCQ_END = 0x27, 1371*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_CONM_MAP = 0x28, 1372*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_IQFLINT_START = 0x29, 1373*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_IQFLINT_END = 0x2A, 1374*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_EQ_START = 0x2B, 1375*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_EQ_END = 0x2C, 1376*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_ACTIVE_FILTER_START = 0x2D, 1377*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_ACTIVE_FILTER_END = 0x2E, 1378*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_ETHOFLD_START = 0x2F, 1379*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_ETHOFLD_END = 0x30, 1380*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_CPLFW4MSG_ENCAP = 0x31, 1381*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_HPFILTER_START = 0x32, 1382*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_HPFILTER_END = 0x33, 1383*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_TLS_START = 0x34, 1384*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_TLS_END = 0x35, 1385*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_RAWF_START = 0x36, 1386*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_RAWF_END = 0x37, 1387*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_NCRYPTO_LOOKASIDE = 0x39, 1388*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_PORT_CAPS32 = 0x3A, 1389*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_PPOD_EDRAM_START = 0x3B, 1390*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_PPOD_EDRAM_END = 0x3C, 1391*4882a593Smuzhiyun FW_PARAMS_PARAM_PFVF_LINK_STATE = 0x40, 1392*4882a593Smuzhiyun }; 1393*4882a593Smuzhiyun 1394*4882a593Smuzhiyun /* Virtual link state as seen by the specified VF */ 1395*4882a593Smuzhiyun enum vf_link_states { 1396*4882a593Smuzhiyun FW_VF_LINK_STATE_AUTO = 0x00, 1397*4882a593Smuzhiyun FW_VF_LINK_STATE_ENABLE = 0x01, 1398*4882a593Smuzhiyun FW_VF_LINK_STATE_DISABLE = 0x02, 1399*4882a593Smuzhiyun }; 1400*4882a593Smuzhiyun 1401*4882a593Smuzhiyun /* 1402*4882a593Smuzhiyun * dma queue parameters 1403*4882a593Smuzhiyun */ 1404*4882a593Smuzhiyun enum fw_params_param_dmaq { 1405*4882a593Smuzhiyun FW_PARAMS_PARAM_DMAQ_IQ_DCAEN_DCACPU = 0x00, 1406*4882a593Smuzhiyun FW_PARAMS_PARAM_DMAQ_IQ_INTCNTTHRESH = 0x01, 1407*4882a593Smuzhiyun FW_PARAMS_PARAM_DMAQ_EQ_CMPLIQID_MNGT = 0x10, 1408*4882a593Smuzhiyun FW_PARAMS_PARAM_DMAQ_EQ_CMPLIQID_CTRL = 0x11, 1409*4882a593Smuzhiyun FW_PARAMS_PARAM_DMAQ_EQ_SCHEDCLASS_ETH = 0x12, 1410*4882a593Smuzhiyun FW_PARAMS_PARAM_DMAQ_EQ_DCBPRIO_ETH = 0x13, 1411*4882a593Smuzhiyun FW_PARAMS_PARAM_DMAQ_EQ_TIMERIX = 0x15, 1412*4882a593Smuzhiyun FW_PARAMS_PARAM_DMAQ_CONM_CTXT = 0x20, 1413*4882a593Smuzhiyun }; 1414*4882a593Smuzhiyun 1415*4882a593Smuzhiyun enum fw_params_param_dev_ktls_hw { 1416*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_KTLS_HW_DISABLE = 0x00, 1417*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_KTLS_HW_ENABLE = 0x01, 1418*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_KTLS_HW_USER_ENABLE = 0x01, 1419*4882a593Smuzhiyun }; 1420*4882a593Smuzhiyun 1421*4882a593Smuzhiyun enum fw_params_param_dev_phyfw { 1422*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_PHYFW_DOWNLOAD = 0x00, 1423*4882a593Smuzhiyun FW_PARAMS_PARAM_DEV_PHYFW_VERSION = 0x01, 1424*4882a593Smuzhiyun }; 1425*4882a593Smuzhiyun 1426*4882a593Smuzhiyun enum fw_params_param_dev_diag { 1427*4882a593Smuzhiyun FW_PARAM_DEV_DIAG_TMP = 0x00, 1428*4882a593Smuzhiyun FW_PARAM_DEV_DIAG_VDD = 0x01, 1429*4882a593Smuzhiyun FW_PARAM_DEV_DIAG_MAXTMPTHRESH = 0x02, 1430*4882a593Smuzhiyun }; 1431*4882a593Smuzhiyun 1432*4882a593Smuzhiyun enum fw_params_param_dev_filter { 1433*4882a593Smuzhiyun FW_PARAM_DEV_FILTER_VNIC_MODE = 0x00, 1434*4882a593Smuzhiyun FW_PARAM_DEV_FILTER_MODE_MASK = 0x01, 1435*4882a593Smuzhiyun }; 1436*4882a593Smuzhiyun 1437*4882a593Smuzhiyun enum fw_params_param_dev_fwcache { 1438*4882a593Smuzhiyun FW_PARAM_DEV_FWCACHE_FLUSH = 0x00, 1439*4882a593Smuzhiyun FW_PARAM_DEV_FWCACHE_FLUSHINV = 0x01, 1440*4882a593Smuzhiyun }; 1441*4882a593Smuzhiyun 1442*4882a593Smuzhiyun #define FW_PARAMS_MNEM_S 24 1443*4882a593Smuzhiyun #define FW_PARAMS_MNEM_V(x) ((x) << FW_PARAMS_MNEM_S) 1444*4882a593Smuzhiyun 1445*4882a593Smuzhiyun #define FW_PARAMS_PARAM_X_S 16 1446*4882a593Smuzhiyun #define FW_PARAMS_PARAM_X_V(x) ((x) << FW_PARAMS_PARAM_X_S) 1447*4882a593Smuzhiyun 1448*4882a593Smuzhiyun #define FW_PARAMS_PARAM_Y_S 8 1449*4882a593Smuzhiyun #define FW_PARAMS_PARAM_Y_M 0xffU 1450*4882a593Smuzhiyun #define FW_PARAMS_PARAM_Y_V(x) ((x) << FW_PARAMS_PARAM_Y_S) 1451*4882a593Smuzhiyun #define FW_PARAMS_PARAM_Y_G(x) (((x) >> FW_PARAMS_PARAM_Y_S) &\ 1452*4882a593Smuzhiyun FW_PARAMS_PARAM_Y_M) 1453*4882a593Smuzhiyun 1454*4882a593Smuzhiyun #define FW_PARAMS_PARAM_Z_S 0 1455*4882a593Smuzhiyun #define FW_PARAMS_PARAM_Z_M 0xffu 1456*4882a593Smuzhiyun #define FW_PARAMS_PARAM_Z_V(x) ((x) << FW_PARAMS_PARAM_Z_S) 1457*4882a593Smuzhiyun #define FW_PARAMS_PARAM_Z_G(x) (((x) >> FW_PARAMS_PARAM_Z_S) &\ 1458*4882a593Smuzhiyun FW_PARAMS_PARAM_Z_M) 1459*4882a593Smuzhiyun 1460*4882a593Smuzhiyun #define FW_PARAMS_PARAM_XYZ_S 0 1461*4882a593Smuzhiyun #define FW_PARAMS_PARAM_XYZ_V(x) ((x) << FW_PARAMS_PARAM_XYZ_S) 1462*4882a593Smuzhiyun 1463*4882a593Smuzhiyun #define FW_PARAMS_PARAM_YZ_S 0 1464*4882a593Smuzhiyun #define FW_PARAMS_PARAM_YZ_V(x) ((x) << FW_PARAMS_PARAM_YZ_S) 1465*4882a593Smuzhiyun 1466*4882a593Smuzhiyun struct fw_params_cmd { 1467*4882a593Smuzhiyun __be32 op_to_vfn; 1468*4882a593Smuzhiyun __be32 retval_len16; 1469*4882a593Smuzhiyun struct fw_params_param { 1470*4882a593Smuzhiyun __be32 mnem; 1471*4882a593Smuzhiyun __be32 val; 1472*4882a593Smuzhiyun } param[7]; 1473*4882a593Smuzhiyun }; 1474*4882a593Smuzhiyun 1475*4882a593Smuzhiyun #define FW_PARAMS_CMD_PFN_S 8 1476*4882a593Smuzhiyun #define FW_PARAMS_CMD_PFN_V(x) ((x) << FW_PARAMS_CMD_PFN_S) 1477*4882a593Smuzhiyun 1478*4882a593Smuzhiyun #define FW_PARAMS_CMD_VFN_S 0 1479*4882a593Smuzhiyun #define FW_PARAMS_CMD_VFN_V(x) ((x) << FW_PARAMS_CMD_VFN_S) 1480*4882a593Smuzhiyun 1481*4882a593Smuzhiyun struct fw_pfvf_cmd { 1482*4882a593Smuzhiyun __be32 op_to_vfn; 1483*4882a593Smuzhiyun __be32 retval_len16; 1484*4882a593Smuzhiyun __be32 niqflint_niq; 1485*4882a593Smuzhiyun __be32 type_to_neq; 1486*4882a593Smuzhiyun __be32 tc_to_nexactf; 1487*4882a593Smuzhiyun __be32 r_caps_to_nethctrl; 1488*4882a593Smuzhiyun __be16 nricq; 1489*4882a593Smuzhiyun __be16 nriqp; 1490*4882a593Smuzhiyun __be32 r4; 1491*4882a593Smuzhiyun }; 1492*4882a593Smuzhiyun 1493*4882a593Smuzhiyun #define FW_PFVF_CMD_PFN_S 8 1494*4882a593Smuzhiyun #define FW_PFVF_CMD_PFN_V(x) ((x) << FW_PFVF_CMD_PFN_S) 1495*4882a593Smuzhiyun 1496*4882a593Smuzhiyun #define FW_PFVF_CMD_VFN_S 0 1497*4882a593Smuzhiyun #define FW_PFVF_CMD_VFN_V(x) ((x) << FW_PFVF_CMD_VFN_S) 1498*4882a593Smuzhiyun 1499*4882a593Smuzhiyun #define FW_PFVF_CMD_NIQFLINT_S 20 1500*4882a593Smuzhiyun #define FW_PFVF_CMD_NIQFLINT_M 0xfff 1501*4882a593Smuzhiyun #define FW_PFVF_CMD_NIQFLINT_V(x) ((x) << FW_PFVF_CMD_NIQFLINT_S) 1502*4882a593Smuzhiyun #define FW_PFVF_CMD_NIQFLINT_G(x) \ 1503*4882a593Smuzhiyun (((x) >> FW_PFVF_CMD_NIQFLINT_S) & FW_PFVF_CMD_NIQFLINT_M) 1504*4882a593Smuzhiyun 1505*4882a593Smuzhiyun #define FW_PFVF_CMD_NIQ_S 0 1506*4882a593Smuzhiyun #define FW_PFVF_CMD_NIQ_M 0xfffff 1507*4882a593Smuzhiyun #define FW_PFVF_CMD_NIQ_V(x) ((x) << FW_PFVF_CMD_NIQ_S) 1508*4882a593Smuzhiyun #define FW_PFVF_CMD_NIQ_G(x) \ 1509*4882a593Smuzhiyun (((x) >> FW_PFVF_CMD_NIQ_S) & FW_PFVF_CMD_NIQ_M) 1510*4882a593Smuzhiyun 1511*4882a593Smuzhiyun #define FW_PFVF_CMD_TYPE_S 31 1512*4882a593Smuzhiyun #define FW_PFVF_CMD_TYPE_M 0x1 1513*4882a593Smuzhiyun #define FW_PFVF_CMD_TYPE_V(x) ((x) << FW_PFVF_CMD_TYPE_S) 1514*4882a593Smuzhiyun #define FW_PFVF_CMD_TYPE_G(x) \ 1515*4882a593Smuzhiyun (((x) >> FW_PFVF_CMD_TYPE_S) & FW_PFVF_CMD_TYPE_M) 1516*4882a593Smuzhiyun #define FW_PFVF_CMD_TYPE_F FW_PFVF_CMD_TYPE_V(1U) 1517*4882a593Smuzhiyun 1518*4882a593Smuzhiyun #define FW_PFVF_CMD_CMASK_S 24 1519*4882a593Smuzhiyun #define FW_PFVF_CMD_CMASK_M 0xf 1520*4882a593Smuzhiyun #define FW_PFVF_CMD_CMASK_V(x) ((x) << FW_PFVF_CMD_CMASK_S) 1521*4882a593Smuzhiyun #define FW_PFVF_CMD_CMASK_G(x) \ 1522*4882a593Smuzhiyun (((x) >> FW_PFVF_CMD_CMASK_S) & FW_PFVF_CMD_CMASK_M) 1523*4882a593Smuzhiyun 1524*4882a593Smuzhiyun #define FW_PFVF_CMD_PMASK_S 20 1525*4882a593Smuzhiyun #define FW_PFVF_CMD_PMASK_M 0xf 1526*4882a593Smuzhiyun #define FW_PFVF_CMD_PMASK_V(x) ((x) << FW_PFVF_CMD_PMASK_S) 1527*4882a593Smuzhiyun #define FW_PFVF_CMD_PMASK_G(x) \ 1528*4882a593Smuzhiyun (((x) >> FW_PFVF_CMD_PMASK_S) & FW_PFVF_CMD_PMASK_M) 1529*4882a593Smuzhiyun 1530*4882a593Smuzhiyun #define FW_PFVF_CMD_NEQ_S 0 1531*4882a593Smuzhiyun #define FW_PFVF_CMD_NEQ_M 0xfffff 1532*4882a593Smuzhiyun #define FW_PFVF_CMD_NEQ_V(x) ((x) << FW_PFVF_CMD_NEQ_S) 1533*4882a593Smuzhiyun #define FW_PFVF_CMD_NEQ_G(x) \ 1534*4882a593Smuzhiyun (((x) >> FW_PFVF_CMD_NEQ_S) & FW_PFVF_CMD_NEQ_M) 1535*4882a593Smuzhiyun 1536*4882a593Smuzhiyun #define FW_PFVF_CMD_TC_S 24 1537*4882a593Smuzhiyun #define FW_PFVF_CMD_TC_M 0xff 1538*4882a593Smuzhiyun #define FW_PFVF_CMD_TC_V(x) ((x) << FW_PFVF_CMD_TC_S) 1539*4882a593Smuzhiyun #define FW_PFVF_CMD_TC_G(x) (((x) >> FW_PFVF_CMD_TC_S) & FW_PFVF_CMD_TC_M) 1540*4882a593Smuzhiyun 1541*4882a593Smuzhiyun #define FW_PFVF_CMD_NVI_S 16 1542*4882a593Smuzhiyun #define FW_PFVF_CMD_NVI_M 0xff 1543*4882a593Smuzhiyun #define FW_PFVF_CMD_NVI_V(x) ((x) << FW_PFVF_CMD_NVI_S) 1544*4882a593Smuzhiyun #define FW_PFVF_CMD_NVI_G(x) (((x) >> FW_PFVF_CMD_NVI_S) & FW_PFVF_CMD_NVI_M) 1545*4882a593Smuzhiyun 1546*4882a593Smuzhiyun #define FW_PFVF_CMD_NEXACTF_S 0 1547*4882a593Smuzhiyun #define FW_PFVF_CMD_NEXACTF_M 0xffff 1548*4882a593Smuzhiyun #define FW_PFVF_CMD_NEXACTF_V(x) ((x) << FW_PFVF_CMD_NEXACTF_S) 1549*4882a593Smuzhiyun #define FW_PFVF_CMD_NEXACTF_G(x) \ 1550*4882a593Smuzhiyun (((x) >> FW_PFVF_CMD_NEXACTF_S) & FW_PFVF_CMD_NEXACTF_M) 1551*4882a593Smuzhiyun 1552*4882a593Smuzhiyun #define FW_PFVF_CMD_R_CAPS_S 24 1553*4882a593Smuzhiyun #define FW_PFVF_CMD_R_CAPS_M 0xff 1554*4882a593Smuzhiyun #define FW_PFVF_CMD_R_CAPS_V(x) ((x) << FW_PFVF_CMD_R_CAPS_S) 1555*4882a593Smuzhiyun #define FW_PFVF_CMD_R_CAPS_G(x) \ 1556*4882a593Smuzhiyun (((x) >> FW_PFVF_CMD_R_CAPS_S) & FW_PFVF_CMD_R_CAPS_M) 1557*4882a593Smuzhiyun 1558*4882a593Smuzhiyun #define FW_PFVF_CMD_WX_CAPS_S 16 1559*4882a593Smuzhiyun #define FW_PFVF_CMD_WX_CAPS_M 0xff 1560*4882a593Smuzhiyun #define FW_PFVF_CMD_WX_CAPS_V(x) ((x) << FW_PFVF_CMD_WX_CAPS_S) 1561*4882a593Smuzhiyun #define FW_PFVF_CMD_WX_CAPS_G(x) \ 1562*4882a593Smuzhiyun (((x) >> FW_PFVF_CMD_WX_CAPS_S) & FW_PFVF_CMD_WX_CAPS_M) 1563*4882a593Smuzhiyun 1564*4882a593Smuzhiyun #define FW_PFVF_CMD_NETHCTRL_S 0 1565*4882a593Smuzhiyun #define FW_PFVF_CMD_NETHCTRL_M 0xffff 1566*4882a593Smuzhiyun #define FW_PFVF_CMD_NETHCTRL_V(x) ((x) << FW_PFVF_CMD_NETHCTRL_S) 1567*4882a593Smuzhiyun #define FW_PFVF_CMD_NETHCTRL_G(x) \ 1568*4882a593Smuzhiyun (((x) >> FW_PFVF_CMD_NETHCTRL_S) & FW_PFVF_CMD_NETHCTRL_M) 1569*4882a593Smuzhiyun 1570*4882a593Smuzhiyun enum fw_iq_type { 1571*4882a593Smuzhiyun FW_IQ_TYPE_FL_INT_CAP, 1572*4882a593Smuzhiyun FW_IQ_TYPE_NO_FL_INT_CAP 1573*4882a593Smuzhiyun }; 1574*4882a593Smuzhiyun 1575*4882a593Smuzhiyun enum fw_iq_iqtype { 1576*4882a593Smuzhiyun FW_IQ_IQTYPE_OTHER, 1577*4882a593Smuzhiyun FW_IQ_IQTYPE_NIC, 1578*4882a593Smuzhiyun FW_IQ_IQTYPE_OFLD, 1579*4882a593Smuzhiyun }; 1580*4882a593Smuzhiyun 1581*4882a593Smuzhiyun struct fw_iq_cmd { 1582*4882a593Smuzhiyun __be32 op_to_vfn; 1583*4882a593Smuzhiyun __be32 alloc_to_len16; 1584*4882a593Smuzhiyun __be16 physiqid; 1585*4882a593Smuzhiyun __be16 iqid; 1586*4882a593Smuzhiyun __be16 fl0id; 1587*4882a593Smuzhiyun __be16 fl1id; 1588*4882a593Smuzhiyun __be32 type_to_iqandstindex; 1589*4882a593Smuzhiyun __be16 iqdroprss_to_iqesize; 1590*4882a593Smuzhiyun __be16 iqsize; 1591*4882a593Smuzhiyun __be64 iqaddr; 1592*4882a593Smuzhiyun __be32 iqns_to_fl0congen; 1593*4882a593Smuzhiyun __be16 fl0dcaen_to_fl0cidxfthresh; 1594*4882a593Smuzhiyun __be16 fl0size; 1595*4882a593Smuzhiyun __be64 fl0addr; 1596*4882a593Smuzhiyun __be32 fl1cngchmap_to_fl1congen; 1597*4882a593Smuzhiyun __be16 fl1dcaen_to_fl1cidxfthresh; 1598*4882a593Smuzhiyun __be16 fl1size; 1599*4882a593Smuzhiyun __be64 fl1addr; 1600*4882a593Smuzhiyun }; 1601*4882a593Smuzhiyun 1602*4882a593Smuzhiyun #define FW_IQ_CMD_PFN_S 8 1603*4882a593Smuzhiyun #define FW_IQ_CMD_PFN_V(x) ((x) << FW_IQ_CMD_PFN_S) 1604*4882a593Smuzhiyun 1605*4882a593Smuzhiyun #define FW_IQ_CMD_VFN_S 0 1606*4882a593Smuzhiyun #define FW_IQ_CMD_VFN_V(x) ((x) << FW_IQ_CMD_VFN_S) 1607*4882a593Smuzhiyun 1608*4882a593Smuzhiyun #define FW_IQ_CMD_ALLOC_S 31 1609*4882a593Smuzhiyun #define FW_IQ_CMD_ALLOC_V(x) ((x) << FW_IQ_CMD_ALLOC_S) 1610*4882a593Smuzhiyun #define FW_IQ_CMD_ALLOC_F FW_IQ_CMD_ALLOC_V(1U) 1611*4882a593Smuzhiyun 1612*4882a593Smuzhiyun #define FW_IQ_CMD_FREE_S 30 1613*4882a593Smuzhiyun #define FW_IQ_CMD_FREE_V(x) ((x) << FW_IQ_CMD_FREE_S) 1614*4882a593Smuzhiyun #define FW_IQ_CMD_FREE_F FW_IQ_CMD_FREE_V(1U) 1615*4882a593Smuzhiyun 1616*4882a593Smuzhiyun #define FW_IQ_CMD_MODIFY_S 29 1617*4882a593Smuzhiyun #define FW_IQ_CMD_MODIFY_V(x) ((x) << FW_IQ_CMD_MODIFY_S) 1618*4882a593Smuzhiyun #define FW_IQ_CMD_MODIFY_F FW_IQ_CMD_MODIFY_V(1U) 1619*4882a593Smuzhiyun 1620*4882a593Smuzhiyun #define FW_IQ_CMD_IQSTART_S 28 1621*4882a593Smuzhiyun #define FW_IQ_CMD_IQSTART_V(x) ((x) << FW_IQ_CMD_IQSTART_S) 1622*4882a593Smuzhiyun #define FW_IQ_CMD_IQSTART_F FW_IQ_CMD_IQSTART_V(1U) 1623*4882a593Smuzhiyun 1624*4882a593Smuzhiyun #define FW_IQ_CMD_IQSTOP_S 27 1625*4882a593Smuzhiyun #define FW_IQ_CMD_IQSTOP_V(x) ((x) << FW_IQ_CMD_IQSTOP_S) 1626*4882a593Smuzhiyun #define FW_IQ_CMD_IQSTOP_F FW_IQ_CMD_IQSTOP_V(1U) 1627*4882a593Smuzhiyun 1628*4882a593Smuzhiyun #define FW_IQ_CMD_TYPE_S 29 1629*4882a593Smuzhiyun #define FW_IQ_CMD_TYPE_V(x) ((x) << FW_IQ_CMD_TYPE_S) 1630*4882a593Smuzhiyun 1631*4882a593Smuzhiyun #define FW_IQ_CMD_IQASYNCH_S 28 1632*4882a593Smuzhiyun #define FW_IQ_CMD_IQASYNCH_V(x) ((x) << FW_IQ_CMD_IQASYNCH_S) 1633*4882a593Smuzhiyun 1634*4882a593Smuzhiyun #define FW_IQ_CMD_VIID_S 16 1635*4882a593Smuzhiyun #define FW_IQ_CMD_VIID_V(x) ((x) << FW_IQ_CMD_VIID_S) 1636*4882a593Smuzhiyun 1637*4882a593Smuzhiyun #define FW_IQ_CMD_IQANDST_S 15 1638*4882a593Smuzhiyun #define FW_IQ_CMD_IQANDST_V(x) ((x) << FW_IQ_CMD_IQANDST_S) 1639*4882a593Smuzhiyun 1640*4882a593Smuzhiyun #define FW_IQ_CMD_IQANUS_S 14 1641*4882a593Smuzhiyun #define FW_IQ_CMD_IQANUS_V(x) ((x) << FW_IQ_CMD_IQANUS_S) 1642*4882a593Smuzhiyun 1643*4882a593Smuzhiyun #define FW_IQ_CMD_IQANUD_S 12 1644*4882a593Smuzhiyun #define FW_IQ_CMD_IQANUD_V(x) ((x) << FW_IQ_CMD_IQANUD_S) 1645*4882a593Smuzhiyun 1646*4882a593Smuzhiyun #define FW_IQ_CMD_IQANDSTINDEX_S 0 1647*4882a593Smuzhiyun #define FW_IQ_CMD_IQANDSTINDEX_V(x) ((x) << FW_IQ_CMD_IQANDSTINDEX_S) 1648*4882a593Smuzhiyun 1649*4882a593Smuzhiyun #define FW_IQ_CMD_IQDROPRSS_S 15 1650*4882a593Smuzhiyun #define FW_IQ_CMD_IQDROPRSS_V(x) ((x) << FW_IQ_CMD_IQDROPRSS_S) 1651*4882a593Smuzhiyun #define FW_IQ_CMD_IQDROPRSS_F FW_IQ_CMD_IQDROPRSS_V(1U) 1652*4882a593Smuzhiyun 1653*4882a593Smuzhiyun #define FW_IQ_CMD_IQGTSMODE_S 14 1654*4882a593Smuzhiyun #define FW_IQ_CMD_IQGTSMODE_V(x) ((x) << FW_IQ_CMD_IQGTSMODE_S) 1655*4882a593Smuzhiyun #define FW_IQ_CMD_IQGTSMODE_F FW_IQ_CMD_IQGTSMODE_V(1U) 1656*4882a593Smuzhiyun 1657*4882a593Smuzhiyun #define FW_IQ_CMD_IQPCIECH_S 12 1658*4882a593Smuzhiyun #define FW_IQ_CMD_IQPCIECH_V(x) ((x) << FW_IQ_CMD_IQPCIECH_S) 1659*4882a593Smuzhiyun 1660*4882a593Smuzhiyun #define FW_IQ_CMD_IQDCAEN_S 11 1661*4882a593Smuzhiyun #define FW_IQ_CMD_IQDCAEN_V(x) ((x) << FW_IQ_CMD_IQDCAEN_S) 1662*4882a593Smuzhiyun 1663*4882a593Smuzhiyun #define FW_IQ_CMD_IQDCACPU_S 6 1664*4882a593Smuzhiyun #define FW_IQ_CMD_IQDCACPU_V(x) ((x) << FW_IQ_CMD_IQDCACPU_S) 1665*4882a593Smuzhiyun 1666*4882a593Smuzhiyun #define FW_IQ_CMD_IQINTCNTTHRESH_S 4 1667*4882a593Smuzhiyun #define FW_IQ_CMD_IQINTCNTTHRESH_V(x) ((x) << FW_IQ_CMD_IQINTCNTTHRESH_S) 1668*4882a593Smuzhiyun 1669*4882a593Smuzhiyun #define FW_IQ_CMD_IQO_S 3 1670*4882a593Smuzhiyun #define FW_IQ_CMD_IQO_V(x) ((x) << FW_IQ_CMD_IQO_S) 1671*4882a593Smuzhiyun #define FW_IQ_CMD_IQO_F FW_IQ_CMD_IQO_V(1U) 1672*4882a593Smuzhiyun 1673*4882a593Smuzhiyun #define FW_IQ_CMD_IQCPRIO_S 2 1674*4882a593Smuzhiyun #define FW_IQ_CMD_IQCPRIO_V(x) ((x) << FW_IQ_CMD_IQCPRIO_S) 1675*4882a593Smuzhiyun 1676*4882a593Smuzhiyun #define FW_IQ_CMD_IQESIZE_S 0 1677*4882a593Smuzhiyun #define FW_IQ_CMD_IQESIZE_V(x) ((x) << FW_IQ_CMD_IQESIZE_S) 1678*4882a593Smuzhiyun 1679*4882a593Smuzhiyun #define FW_IQ_CMD_IQNS_S 31 1680*4882a593Smuzhiyun #define FW_IQ_CMD_IQNS_V(x) ((x) << FW_IQ_CMD_IQNS_S) 1681*4882a593Smuzhiyun 1682*4882a593Smuzhiyun #define FW_IQ_CMD_IQRO_S 30 1683*4882a593Smuzhiyun #define FW_IQ_CMD_IQRO_V(x) ((x) << FW_IQ_CMD_IQRO_S) 1684*4882a593Smuzhiyun 1685*4882a593Smuzhiyun #define FW_IQ_CMD_IQFLINTIQHSEN_S 28 1686*4882a593Smuzhiyun #define FW_IQ_CMD_IQFLINTIQHSEN_V(x) ((x) << FW_IQ_CMD_IQFLINTIQHSEN_S) 1687*4882a593Smuzhiyun 1688*4882a593Smuzhiyun #define FW_IQ_CMD_IQFLINTCONGEN_S 27 1689*4882a593Smuzhiyun #define FW_IQ_CMD_IQFLINTCONGEN_V(x) ((x) << FW_IQ_CMD_IQFLINTCONGEN_S) 1690*4882a593Smuzhiyun #define FW_IQ_CMD_IQFLINTCONGEN_F FW_IQ_CMD_IQFLINTCONGEN_V(1U) 1691*4882a593Smuzhiyun 1692*4882a593Smuzhiyun #define FW_IQ_CMD_IQFLINTISCSIC_S 26 1693*4882a593Smuzhiyun #define FW_IQ_CMD_IQFLINTISCSIC_V(x) ((x) << FW_IQ_CMD_IQFLINTISCSIC_S) 1694*4882a593Smuzhiyun 1695*4882a593Smuzhiyun #define FW_IQ_CMD_IQTYPE_S 24 1696*4882a593Smuzhiyun #define FW_IQ_CMD_IQTYPE_M 0x3 1697*4882a593Smuzhiyun #define FW_IQ_CMD_IQTYPE_V(x) ((x) << FW_IQ_CMD_IQTYPE_S) 1698*4882a593Smuzhiyun #define FW_IQ_CMD_IQTYPE_G(x) \ 1699*4882a593Smuzhiyun (((x) >> FW_IQ_CMD_IQTYPE_S) & FW_IQ_CMD_IQTYPE_M) 1700*4882a593Smuzhiyun 1701*4882a593Smuzhiyun #define FW_IQ_CMD_FL0CNGCHMAP_S 20 1702*4882a593Smuzhiyun #define FW_IQ_CMD_FL0CNGCHMAP_V(x) ((x) << FW_IQ_CMD_FL0CNGCHMAP_S) 1703*4882a593Smuzhiyun 1704*4882a593Smuzhiyun #define FW_IQ_CMD_FL0CACHELOCK_S 15 1705*4882a593Smuzhiyun #define FW_IQ_CMD_FL0CACHELOCK_V(x) ((x) << FW_IQ_CMD_FL0CACHELOCK_S) 1706*4882a593Smuzhiyun 1707*4882a593Smuzhiyun #define FW_IQ_CMD_FL0DBP_S 14 1708*4882a593Smuzhiyun #define FW_IQ_CMD_FL0DBP_V(x) ((x) << FW_IQ_CMD_FL0DBP_S) 1709*4882a593Smuzhiyun 1710*4882a593Smuzhiyun #define FW_IQ_CMD_FL0DATANS_S 13 1711*4882a593Smuzhiyun #define FW_IQ_CMD_FL0DATANS_V(x) ((x) << FW_IQ_CMD_FL0DATANS_S) 1712*4882a593Smuzhiyun 1713*4882a593Smuzhiyun #define FW_IQ_CMD_FL0DATARO_S 12 1714*4882a593Smuzhiyun #define FW_IQ_CMD_FL0DATARO_V(x) ((x) << FW_IQ_CMD_FL0DATARO_S) 1715*4882a593Smuzhiyun #define FW_IQ_CMD_FL0DATARO_F FW_IQ_CMD_FL0DATARO_V(1U) 1716*4882a593Smuzhiyun 1717*4882a593Smuzhiyun #define FW_IQ_CMD_FL0CONGCIF_S 11 1718*4882a593Smuzhiyun #define FW_IQ_CMD_FL0CONGCIF_V(x) ((x) << FW_IQ_CMD_FL0CONGCIF_S) 1719*4882a593Smuzhiyun #define FW_IQ_CMD_FL0CONGCIF_F FW_IQ_CMD_FL0CONGCIF_V(1U) 1720*4882a593Smuzhiyun 1721*4882a593Smuzhiyun #define FW_IQ_CMD_FL0ONCHIP_S 10 1722*4882a593Smuzhiyun #define FW_IQ_CMD_FL0ONCHIP_V(x) ((x) << FW_IQ_CMD_FL0ONCHIP_S) 1723*4882a593Smuzhiyun 1724*4882a593Smuzhiyun #define FW_IQ_CMD_FL0STATUSPGNS_S 9 1725*4882a593Smuzhiyun #define FW_IQ_CMD_FL0STATUSPGNS_V(x) ((x) << FW_IQ_CMD_FL0STATUSPGNS_S) 1726*4882a593Smuzhiyun 1727*4882a593Smuzhiyun #define FW_IQ_CMD_FL0STATUSPGRO_S 8 1728*4882a593Smuzhiyun #define FW_IQ_CMD_FL0STATUSPGRO_V(x) ((x) << FW_IQ_CMD_FL0STATUSPGRO_S) 1729*4882a593Smuzhiyun 1730*4882a593Smuzhiyun #define FW_IQ_CMD_FL0FETCHNS_S 7 1731*4882a593Smuzhiyun #define FW_IQ_CMD_FL0FETCHNS_V(x) ((x) << FW_IQ_CMD_FL0FETCHNS_S) 1732*4882a593Smuzhiyun 1733*4882a593Smuzhiyun #define FW_IQ_CMD_FL0FETCHRO_S 6 1734*4882a593Smuzhiyun #define FW_IQ_CMD_FL0FETCHRO_V(x) ((x) << FW_IQ_CMD_FL0FETCHRO_S) 1735*4882a593Smuzhiyun #define FW_IQ_CMD_FL0FETCHRO_F FW_IQ_CMD_FL0FETCHRO_V(1U) 1736*4882a593Smuzhiyun 1737*4882a593Smuzhiyun #define FW_IQ_CMD_FL0HOSTFCMODE_S 4 1738*4882a593Smuzhiyun #define FW_IQ_CMD_FL0HOSTFCMODE_V(x) ((x) << FW_IQ_CMD_FL0HOSTFCMODE_S) 1739*4882a593Smuzhiyun 1740*4882a593Smuzhiyun #define FW_IQ_CMD_FL0CPRIO_S 3 1741*4882a593Smuzhiyun #define FW_IQ_CMD_FL0CPRIO_V(x) ((x) << FW_IQ_CMD_FL0CPRIO_S) 1742*4882a593Smuzhiyun 1743*4882a593Smuzhiyun #define FW_IQ_CMD_FL0PADEN_S 2 1744*4882a593Smuzhiyun #define FW_IQ_CMD_FL0PADEN_V(x) ((x) << FW_IQ_CMD_FL0PADEN_S) 1745*4882a593Smuzhiyun #define FW_IQ_CMD_FL0PADEN_F FW_IQ_CMD_FL0PADEN_V(1U) 1746*4882a593Smuzhiyun 1747*4882a593Smuzhiyun #define FW_IQ_CMD_FL0PACKEN_S 1 1748*4882a593Smuzhiyun #define FW_IQ_CMD_FL0PACKEN_V(x) ((x) << FW_IQ_CMD_FL0PACKEN_S) 1749*4882a593Smuzhiyun #define FW_IQ_CMD_FL0PACKEN_F FW_IQ_CMD_FL0PACKEN_V(1U) 1750*4882a593Smuzhiyun 1751*4882a593Smuzhiyun #define FW_IQ_CMD_FL0CONGEN_S 0 1752*4882a593Smuzhiyun #define FW_IQ_CMD_FL0CONGEN_V(x) ((x) << FW_IQ_CMD_FL0CONGEN_S) 1753*4882a593Smuzhiyun #define FW_IQ_CMD_FL0CONGEN_F FW_IQ_CMD_FL0CONGEN_V(1U) 1754*4882a593Smuzhiyun 1755*4882a593Smuzhiyun #define FW_IQ_CMD_FL0DCAEN_S 15 1756*4882a593Smuzhiyun #define FW_IQ_CMD_FL0DCAEN_V(x) ((x) << FW_IQ_CMD_FL0DCAEN_S) 1757*4882a593Smuzhiyun 1758*4882a593Smuzhiyun #define FW_IQ_CMD_FL0DCACPU_S 10 1759*4882a593Smuzhiyun #define FW_IQ_CMD_FL0DCACPU_V(x) ((x) << FW_IQ_CMD_FL0DCACPU_S) 1760*4882a593Smuzhiyun 1761*4882a593Smuzhiyun #define FW_IQ_CMD_FL0FBMIN_S 7 1762*4882a593Smuzhiyun #define FW_IQ_CMD_FL0FBMIN_V(x) ((x) << FW_IQ_CMD_FL0FBMIN_S) 1763*4882a593Smuzhiyun 1764*4882a593Smuzhiyun #define FW_IQ_CMD_FL0FBMAX_S 4 1765*4882a593Smuzhiyun #define FW_IQ_CMD_FL0FBMAX_V(x) ((x) << FW_IQ_CMD_FL0FBMAX_S) 1766*4882a593Smuzhiyun 1767*4882a593Smuzhiyun #define FW_IQ_CMD_FL0CIDXFTHRESHO_S 3 1768*4882a593Smuzhiyun #define FW_IQ_CMD_FL0CIDXFTHRESHO_V(x) ((x) << FW_IQ_CMD_FL0CIDXFTHRESHO_S) 1769*4882a593Smuzhiyun #define FW_IQ_CMD_FL0CIDXFTHRESHO_F FW_IQ_CMD_FL0CIDXFTHRESHO_V(1U) 1770*4882a593Smuzhiyun 1771*4882a593Smuzhiyun #define FW_IQ_CMD_FL0CIDXFTHRESH_S 0 1772*4882a593Smuzhiyun #define FW_IQ_CMD_FL0CIDXFTHRESH_V(x) ((x) << FW_IQ_CMD_FL0CIDXFTHRESH_S) 1773*4882a593Smuzhiyun 1774*4882a593Smuzhiyun #define FW_IQ_CMD_FL1CNGCHMAP_S 20 1775*4882a593Smuzhiyun #define FW_IQ_CMD_FL1CNGCHMAP_V(x) ((x) << FW_IQ_CMD_FL1CNGCHMAP_S) 1776*4882a593Smuzhiyun 1777*4882a593Smuzhiyun #define FW_IQ_CMD_FL1CACHELOCK_S 15 1778*4882a593Smuzhiyun #define FW_IQ_CMD_FL1CACHELOCK_V(x) ((x) << FW_IQ_CMD_FL1CACHELOCK_S) 1779*4882a593Smuzhiyun 1780*4882a593Smuzhiyun #define FW_IQ_CMD_FL1DBP_S 14 1781*4882a593Smuzhiyun #define FW_IQ_CMD_FL1DBP_V(x) ((x) << FW_IQ_CMD_FL1DBP_S) 1782*4882a593Smuzhiyun 1783*4882a593Smuzhiyun #define FW_IQ_CMD_FL1DATANS_S 13 1784*4882a593Smuzhiyun #define FW_IQ_CMD_FL1DATANS_V(x) ((x) << FW_IQ_CMD_FL1DATANS_S) 1785*4882a593Smuzhiyun 1786*4882a593Smuzhiyun #define FW_IQ_CMD_FL1DATARO_S 12 1787*4882a593Smuzhiyun #define FW_IQ_CMD_FL1DATARO_V(x) ((x) << FW_IQ_CMD_FL1DATARO_S) 1788*4882a593Smuzhiyun 1789*4882a593Smuzhiyun #define FW_IQ_CMD_FL1CONGCIF_S 11 1790*4882a593Smuzhiyun #define FW_IQ_CMD_FL1CONGCIF_V(x) ((x) << FW_IQ_CMD_FL1CONGCIF_S) 1791*4882a593Smuzhiyun 1792*4882a593Smuzhiyun #define FW_IQ_CMD_FL1ONCHIP_S 10 1793*4882a593Smuzhiyun #define FW_IQ_CMD_FL1ONCHIP_V(x) ((x) << FW_IQ_CMD_FL1ONCHIP_S) 1794*4882a593Smuzhiyun 1795*4882a593Smuzhiyun #define FW_IQ_CMD_FL1STATUSPGNS_S 9 1796*4882a593Smuzhiyun #define FW_IQ_CMD_FL1STATUSPGNS_V(x) ((x) << FW_IQ_CMD_FL1STATUSPGNS_S) 1797*4882a593Smuzhiyun 1798*4882a593Smuzhiyun #define FW_IQ_CMD_FL1STATUSPGRO_S 8 1799*4882a593Smuzhiyun #define FW_IQ_CMD_FL1STATUSPGRO_V(x) ((x) << FW_IQ_CMD_FL1STATUSPGRO_S) 1800*4882a593Smuzhiyun 1801*4882a593Smuzhiyun #define FW_IQ_CMD_FL1FETCHNS_S 7 1802*4882a593Smuzhiyun #define FW_IQ_CMD_FL1FETCHNS_V(x) ((x) << FW_IQ_CMD_FL1FETCHNS_S) 1803*4882a593Smuzhiyun 1804*4882a593Smuzhiyun #define FW_IQ_CMD_FL1FETCHRO_S 6 1805*4882a593Smuzhiyun #define FW_IQ_CMD_FL1FETCHRO_V(x) ((x) << FW_IQ_CMD_FL1FETCHRO_S) 1806*4882a593Smuzhiyun 1807*4882a593Smuzhiyun #define FW_IQ_CMD_FL1HOSTFCMODE_S 4 1808*4882a593Smuzhiyun #define FW_IQ_CMD_FL1HOSTFCMODE_V(x) ((x) << FW_IQ_CMD_FL1HOSTFCMODE_S) 1809*4882a593Smuzhiyun 1810*4882a593Smuzhiyun #define FW_IQ_CMD_FL1CPRIO_S 3 1811*4882a593Smuzhiyun #define FW_IQ_CMD_FL1CPRIO_V(x) ((x) << FW_IQ_CMD_FL1CPRIO_S) 1812*4882a593Smuzhiyun 1813*4882a593Smuzhiyun #define FW_IQ_CMD_FL1PADEN_S 2 1814*4882a593Smuzhiyun #define FW_IQ_CMD_FL1PADEN_V(x) ((x) << FW_IQ_CMD_FL1PADEN_S) 1815*4882a593Smuzhiyun #define FW_IQ_CMD_FL1PADEN_F FW_IQ_CMD_FL1PADEN_V(1U) 1816*4882a593Smuzhiyun 1817*4882a593Smuzhiyun #define FW_IQ_CMD_FL1PACKEN_S 1 1818*4882a593Smuzhiyun #define FW_IQ_CMD_FL1PACKEN_V(x) ((x) << FW_IQ_CMD_FL1PACKEN_S) 1819*4882a593Smuzhiyun #define FW_IQ_CMD_FL1PACKEN_F FW_IQ_CMD_FL1PACKEN_V(1U) 1820*4882a593Smuzhiyun 1821*4882a593Smuzhiyun #define FW_IQ_CMD_FL1CONGEN_S 0 1822*4882a593Smuzhiyun #define FW_IQ_CMD_FL1CONGEN_V(x) ((x) << FW_IQ_CMD_FL1CONGEN_S) 1823*4882a593Smuzhiyun #define FW_IQ_CMD_FL1CONGEN_F FW_IQ_CMD_FL1CONGEN_V(1U) 1824*4882a593Smuzhiyun 1825*4882a593Smuzhiyun #define FW_IQ_CMD_FL1DCAEN_S 15 1826*4882a593Smuzhiyun #define FW_IQ_CMD_FL1DCAEN_V(x) ((x) << FW_IQ_CMD_FL1DCAEN_S) 1827*4882a593Smuzhiyun 1828*4882a593Smuzhiyun #define FW_IQ_CMD_FL1DCACPU_S 10 1829*4882a593Smuzhiyun #define FW_IQ_CMD_FL1DCACPU_V(x) ((x) << FW_IQ_CMD_FL1DCACPU_S) 1830*4882a593Smuzhiyun 1831*4882a593Smuzhiyun #define FW_IQ_CMD_FL1FBMIN_S 7 1832*4882a593Smuzhiyun #define FW_IQ_CMD_FL1FBMIN_V(x) ((x) << FW_IQ_CMD_FL1FBMIN_S) 1833*4882a593Smuzhiyun 1834*4882a593Smuzhiyun #define FW_IQ_CMD_FL1FBMAX_S 4 1835*4882a593Smuzhiyun #define FW_IQ_CMD_FL1FBMAX_V(x) ((x) << FW_IQ_CMD_FL1FBMAX_S) 1836*4882a593Smuzhiyun 1837*4882a593Smuzhiyun #define FW_IQ_CMD_FL1CIDXFTHRESHO_S 3 1838*4882a593Smuzhiyun #define FW_IQ_CMD_FL1CIDXFTHRESHO_V(x) ((x) << FW_IQ_CMD_FL1CIDXFTHRESHO_S) 1839*4882a593Smuzhiyun #define FW_IQ_CMD_FL1CIDXFTHRESHO_F FW_IQ_CMD_FL1CIDXFTHRESHO_V(1U) 1840*4882a593Smuzhiyun 1841*4882a593Smuzhiyun #define FW_IQ_CMD_FL1CIDXFTHRESH_S 0 1842*4882a593Smuzhiyun #define FW_IQ_CMD_FL1CIDXFTHRESH_V(x) ((x) << FW_IQ_CMD_FL1CIDXFTHRESH_S) 1843*4882a593Smuzhiyun 1844*4882a593Smuzhiyun struct fw_eq_eth_cmd { 1845*4882a593Smuzhiyun __be32 op_to_vfn; 1846*4882a593Smuzhiyun __be32 alloc_to_len16; 1847*4882a593Smuzhiyun __be32 eqid_pkd; 1848*4882a593Smuzhiyun __be32 physeqid_pkd; 1849*4882a593Smuzhiyun __be32 fetchszm_to_iqid; 1850*4882a593Smuzhiyun __be32 dcaen_to_eqsize; 1851*4882a593Smuzhiyun __be64 eqaddr; 1852*4882a593Smuzhiyun __be32 autoequiqe_to_viid; 1853*4882a593Smuzhiyun __be32 timeren_timerix; 1854*4882a593Smuzhiyun __be64 r9; 1855*4882a593Smuzhiyun }; 1856*4882a593Smuzhiyun 1857*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_PFN_S 8 1858*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_PFN_V(x) ((x) << FW_EQ_ETH_CMD_PFN_S) 1859*4882a593Smuzhiyun 1860*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_VFN_S 0 1861*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_VFN_V(x) ((x) << FW_EQ_ETH_CMD_VFN_S) 1862*4882a593Smuzhiyun 1863*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_ALLOC_S 31 1864*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_ALLOC_V(x) ((x) << FW_EQ_ETH_CMD_ALLOC_S) 1865*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_ALLOC_F FW_EQ_ETH_CMD_ALLOC_V(1U) 1866*4882a593Smuzhiyun 1867*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_FREE_S 30 1868*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_FREE_V(x) ((x) << FW_EQ_ETH_CMD_FREE_S) 1869*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_FREE_F FW_EQ_ETH_CMD_FREE_V(1U) 1870*4882a593Smuzhiyun 1871*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_MODIFY_S 29 1872*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_MODIFY_V(x) ((x) << FW_EQ_ETH_CMD_MODIFY_S) 1873*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_MODIFY_F FW_EQ_ETH_CMD_MODIFY_V(1U) 1874*4882a593Smuzhiyun 1875*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_EQSTART_S 28 1876*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_EQSTART_V(x) ((x) << FW_EQ_ETH_CMD_EQSTART_S) 1877*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_EQSTART_F FW_EQ_ETH_CMD_EQSTART_V(1U) 1878*4882a593Smuzhiyun 1879*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_EQSTOP_S 27 1880*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_EQSTOP_V(x) ((x) << FW_EQ_ETH_CMD_EQSTOP_S) 1881*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_EQSTOP_F FW_EQ_ETH_CMD_EQSTOP_V(1U) 1882*4882a593Smuzhiyun 1883*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_EQID_S 0 1884*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_EQID_M 0xfffff 1885*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_EQID_V(x) ((x) << FW_EQ_ETH_CMD_EQID_S) 1886*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_EQID_G(x) \ 1887*4882a593Smuzhiyun (((x) >> FW_EQ_ETH_CMD_EQID_S) & FW_EQ_ETH_CMD_EQID_M) 1888*4882a593Smuzhiyun 1889*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_PHYSEQID_S 0 1890*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_PHYSEQID_M 0xfffff 1891*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_PHYSEQID_V(x) ((x) << FW_EQ_ETH_CMD_PHYSEQID_S) 1892*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_PHYSEQID_G(x) \ 1893*4882a593Smuzhiyun (((x) >> FW_EQ_ETH_CMD_PHYSEQID_S) & FW_EQ_ETH_CMD_PHYSEQID_M) 1894*4882a593Smuzhiyun 1895*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_FETCHSZM_S 26 1896*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_FETCHSZM_V(x) ((x) << FW_EQ_ETH_CMD_FETCHSZM_S) 1897*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_FETCHSZM_F FW_EQ_ETH_CMD_FETCHSZM_V(1U) 1898*4882a593Smuzhiyun 1899*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_STATUSPGNS_S 25 1900*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_STATUSPGNS_V(x) ((x) << FW_EQ_ETH_CMD_STATUSPGNS_S) 1901*4882a593Smuzhiyun 1902*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_STATUSPGRO_S 24 1903*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_STATUSPGRO_V(x) ((x) << FW_EQ_ETH_CMD_STATUSPGRO_S) 1904*4882a593Smuzhiyun 1905*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_FETCHNS_S 23 1906*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_FETCHNS_V(x) ((x) << FW_EQ_ETH_CMD_FETCHNS_S) 1907*4882a593Smuzhiyun 1908*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_FETCHRO_S 22 1909*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_FETCHRO_V(x) ((x) << FW_EQ_ETH_CMD_FETCHRO_S) 1910*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_FETCHRO_F FW_EQ_ETH_CMD_FETCHRO_V(1U) 1911*4882a593Smuzhiyun 1912*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_HOSTFCMODE_S 20 1913*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_HOSTFCMODE_V(x) ((x) << FW_EQ_ETH_CMD_HOSTFCMODE_S) 1914*4882a593Smuzhiyun 1915*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_CPRIO_S 19 1916*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_CPRIO_V(x) ((x) << FW_EQ_ETH_CMD_CPRIO_S) 1917*4882a593Smuzhiyun 1918*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_ONCHIP_S 18 1919*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_ONCHIP_V(x) ((x) << FW_EQ_ETH_CMD_ONCHIP_S) 1920*4882a593Smuzhiyun 1921*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_PCIECHN_S 16 1922*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_PCIECHN_V(x) ((x) << FW_EQ_ETH_CMD_PCIECHN_S) 1923*4882a593Smuzhiyun 1924*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_IQID_S 0 1925*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_IQID_V(x) ((x) << FW_EQ_ETH_CMD_IQID_S) 1926*4882a593Smuzhiyun 1927*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_DCAEN_S 31 1928*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_DCAEN_V(x) ((x) << FW_EQ_ETH_CMD_DCAEN_S) 1929*4882a593Smuzhiyun 1930*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_DCACPU_S 26 1931*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_DCACPU_V(x) ((x) << FW_EQ_ETH_CMD_DCACPU_S) 1932*4882a593Smuzhiyun 1933*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_FBMIN_S 23 1934*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_FBMIN_V(x) ((x) << FW_EQ_ETH_CMD_FBMIN_S) 1935*4882a593Smuzhiyun 1936*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_FBMAX_S 20 1937*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_FBMAX_V(x) ((x) << FW_EQ_ETH_CMD_FBMAX_S) 1938*4882a593Smuzhiyun 1939*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_CIDXFTHRESHO_S 19 1940*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_CIDXFTHRESHO_V(x) ((x) << FW_EQ_ETH_CMD_CIDXFTHRESHO_S) 1941*4882a593Smuzhiyun 1942*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_CIDXFTHRESH_S 16 1943*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_CIDXFTHRESH_V(x) ((x) << FW_EQ_ETH_CMD_CIDXFTHRESH_S) 1944*4882a593Smuzhiyun 1945*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_EQSIZE_S 0 1946*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_EQSIZE_V(x) ((x) << FW_EQ_ETH_CMD_EQSIZE_S) 1947*4882a593Smuzhiyun 1948*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_AUTOEQUIQE_S 31 1949*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_AUTOEQUIQE_V(x) ((x) << FW_EQ_ETH_CMD_AUTOEQUIQE_S) 1950*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_AUTOEQUIQE_F FW_EQ_ETH_CMD_AUTOEQUIQE_V(1U) 1951*4882a593Smuzhiyun 1952*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_AUTOEQUEQE_S 30 1953*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_AUTOEQUEQE_V(x) ((x) << FW_EQ_ETH_CMD_AUTOEQUEQE_S) 1954*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_AUTOEQUEQE_F FW_EQ_ETH_CMD_AUTOEQUEQE_V(1U) 1955*4882a593Smuzhiyun 1956*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_VIID_S 16 1957*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_VIID_V(x) ((x) << FW_EQ_ETH_CMD_VIID_S) 1958*4882a593Smuzhiyun 1959*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_TIMEREN_S 3 1960*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_TIMEREN_M 0x1 1961*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_TIMEREN_V(x) ((x) << FW_EQ_ETH_CMD_TIMEREN_S) 1962*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_TIMEREN_G(x) \ 1963*4882a593Smuzhiyun (((x) >> FW_EQ_ETH_CMD_TIMEREN_S) & FW_EQ_ETH_CMD_TIMEREN_M) 1964*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_TIMEREN_F FW_EQ_ETH_CMD_TIMEREN_V(1U) 1965*4882a593Smuzhiyun 1966*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_TIMERIX_S 0 1967*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_TIMERIX_M 0x7 1968*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_TIMERIX_V(x) ((x) << FW_EQ_ETH_CMD_TIMERIX_S) 1969*4882a593Smuzhiyun #define FW_EQ_ETH_CMD_TIMERIX_G(x) \ 1970*4882a593Smuzhiyun (((x) >> FW_EQ_ETH_CMD_TIMERIX_S) & FW_EQ_ETH_CMD_TIMERIX_M) 1971*4882a593Smuzhiyun 1972*4882a593Smuzhiyun struct fw_eq_ctrl_cmd { 1973*4882a593Smuzhiyun __be32 op_to_vfn; 1974*4882a593Smuzhiyun __be32 alloc_to_len16; 1975*4882a593Smuzhiyun __be32 cmpliqid_eqid; 1976*4882a593Smuzhiyun __be32 physeqid_pkd; 1977*4882a593Smuzhiyun __be32 fetchszm_to_iqid; 1978*4882a593Smuzhiyun __be32 dcaen_to_eqsize; 1979*4882a593Smuzhiyun __be64 eqaddr; 1980*4882a593Smuzhiyun }; 1981*4882a593Smuzhiyun 1982*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_PFN_S 8 1983*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_PFN_V(x) ((x) << FW_EQ_CTRL_CMD_PFN_S) 1984*4882a593Smuzhiyun 1985*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_VFN_S 0 1986*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_VFN_V(x) ((x) << FW_EQ_CTRL_CMD_VFN_S) 1987*4882a593Smuzhiyun 1988*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_ALLOC_S 31 1989*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_ALLOC_V(x) ((x) << FW_EQ_CTRL_CMD_ALLOC_S) 1990*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_ALLOC_F FW_EQ_CTRL_CMD_ALLOC_V(1U) 1991*4882a593Smuzhiyun 1992*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_FREE_S 30 1993*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_FREE_V(x) ((x) << FW_EQ_CTRL_CMD_FREE_S) 1994*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_FREE_F FW_EQ_CTRL_CMD_FREE_V(1U) 1995*4882a593Smuzhiyun 1996*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_MODIFY_S 29 1997*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_MODIFY_V(x) ((x) << FW_EQ_CTRL_CMD_MODIFY_S) 1998*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_MODIFY_F FW_EQ_CTRL_CMD_MODIFY_V(1U) 1999*4882a593Smuzhiyun 2000*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_EQSTART_S 28 2001*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_EQSTART_V(x) ((x) << FW_EQ_CTRL_CMD_EQSTART_S) 2002*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_EQSTART_F FW_EQ_CTRL_CMD_EQSTART_V(1U) 2003*4882a593Smuzhiyun 2004*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_EQSTOP_S 27 2005*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_EQSTOP_V(x) ((x) << FW_EQ_CTRL_CMD_EQSTOP_S) 2006*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_EQSTOP_F FW_EQ_CTRL_CMD_EQSTOP_V(1U) 2007*4882a593Smuzhiyun 2008*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_CMPLIQID_S 20 2009*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_CMPLIQID_V(x) ((x) << FW_EQ_CTRL_CMD_CMPLIQID_S) 2010*4882a593Smuzhiyun 2011*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_EQID_S 0 2012*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_EQID_M 0xfffff 2013*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_EQID_V(x) ((x) << FW_EQ_CTRL_CMD_EQID_S) 2014*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_EQID_G(x) \ 2015*4882a593Smuzhiyun (((x) >> FW_EQ_CTRL_CMD_EQID_S) & FW_EQ_CTRL_CMD_EQID_M) 2016*4882a593Smuzhiyun 2017*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_PHYSEQID_S 0 2018*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_PHYSEQID_M 0xfffff 2019*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_PHYSEQID_G(x) \ 2020*4882a593Smuzhiyun (((x) >> FW_EQ_CTRL_CMD_PHYSEQID_S) & FW_EQ_CTRL_CMD_PHYSEQID_M) 2021*4882a593Smuzhiyun 2022*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_FETCHSZM_S 26 2023*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_FETCHSZM_V(x) ((x) << FW_EQ_CTRL_CMD_FETCHSZM_S) 2024*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_FETCHSZM_F FW_EQ_CTRL_CMD_FETCHSZM_V(1U) 2025*4882a593Smuzhiyun 2026*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_STATUSPGNS_S 25 2027*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_STATUSPGNS_V(x) ((x) << FW_EQ_CTRL_CMD_STATUSPGNS_S) 2028*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_STATUSPGNS_F FW_EQ_CTRL_CMD_STATUSPGNS_V(1U) 2029*4882a593Smuzhiyun 2030*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_STATUSPGRO_S 24 2031*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_STATUSPGRO_V(x) ((x) << FW_EQ_CTRL_CMD_STATUSPGRO_S) 2032*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_STATUSPGRO_F FW_EQ_CTRL_CMD_STATUSPGRO_V(1U) 2033*4882a593Smuzhiyun 2034*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_FETCHNS_S 23 2035*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_FETCHNS_V(x) ((x) << FW_EQ_CTRL_CMD_FETCHNS_S) 2036*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_FETCHNS_F FW_EQ_CTRL_CMD_FETCHNS_V(1U) 2037*4882a593Smuzhiyun 2038*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_FETCHRO_S 22 2039*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_FETCHRO_V(x) ((x) << FW_EQ_CTRL_CMD_FETCHRO_S) 2040*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_FETCHRO_F FW_EQ_CTRL_CMD_FETCHRO_V(1U) 2041*4882a593Smuzhiyun 2042*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_HOSTFCMODE_S 20 2043*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_HOSTFCMODE_V(x) ((x) << FW_EQ_CTRL_CMD_HOSTFCMODE_S) 2044*4882a593Smuzhiyun 2045*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_CPRIO_S 19 2046*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_CPRIO_V(x) ((x) << FW_EQ_CTRL_CMD_CPRIO_S) 2047*4882a593Smuzhiyun 2048*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_ONCHIP_S 18 2049*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_ONCHIP_V(x) ((x) << FW_EQ_CTRL_CMD_ONCHIP_S) 2050*4882a593Smuzhiyun 2051*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_PCIECHN_S 16 2052*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_PCIECHN_V(x) ((x) << FW_EQ_CTRL_CMD_PCIECHN_S) 2053*4882a593Smuzhiyun 2054*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_IQID_S 0 2055*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_IQID_V(x) ((x) << FW_EQ_CTRL_CMD_IQID_S) 2056*4882a593Smuzhiyun 2057*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_DCAEN_S 31 2058*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_DCAEN_V(x) ((x) << FW_EQ_CTRL_CMD_DCAEN_S) 2059*4882a593Smuzhiyun 2060*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_DCACPU_S 26 2061*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_DCACPU_V(x) ((x) << FW_EQ_CTRL_CMD_DCACPU_S) 2062*4882a593Smuzhiyun 2063*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_FBMIN_S 23 2064*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_FBMIN_V(x) ((x) << FW_EQ_CTRL_CMD_FBMIN_S) 2065*4882a593Smuzhiyun 2066*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_FBMAX_S 20 2067*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_FBMAX_V(x) ((x) << FW_EQ_CTRL_CMD_FBMAX_S) 2068*4882a593Smuzhiyun 2069*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_CIDXFTHRESHO_S 19 2070*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_CIDXFTHRESHO_V(x) \ 2071*4882a593Smuzhiyun ((x) << FW_EQ_CTRL_CMD_CIDXFTHRESHO_S) 2072*4882a593Smuzhiyun 2073*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_CIDXFTHRESH_S 16 2074*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_CIDXFTHRESH_V(x) ((x) << FW_EQ_CTRL_CMD_CIDXFTHRESH_S) 2075*4882a593Smuzhiyun 2076*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_EQSIZE_S 0 2077*4882a593Smuzhiyun #define FW_EQ_CTRL_CMD_EQSIZE_V(x) ((x) << FW_EQ_CTRL_CMD_EQSIZE_S) 2078*4882a593Smuzhiyun 2079*4882a593Smuzhiyun struct fw_eq_ofld_cmd { 2080*4882a593Smuzhiyun __be32 op_to_vfn; 2081*4882a593Smuzhiyun __be32 alloc_to_len16; 2082*4882a593Smuzhiyun __be32 eqid_pkd; 2083*4882a593Smuzhiyun __be32 physeqid_pkd; 2084*4882a593Smuzhiyun __be32 fetchszm_to_iqid; 2085*4882a593Smuzhiyun __be32 dcaen_to_eqsize; 2086*4882a593Smuzhiyun __be64 eqaddr; 2087*4882a593Smuzhiyun }; 2088*4882a593Smuzhiyun 2089*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_PFN_S 8 2090*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_PFN_V(x) ((x) << FW_EQ_OFLD_CMD_PFN_S) 2091*4882a593Smuzhiyun 2092*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_VFN_S 0 2093*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_VFN_V(x) ((x) << FW_EQ_OFLD_CMD_VFN_S) 2094*4882a593Smuzhiyun 2095*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_ALLOC_S 31 2096*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_ALLOC_V(x) ((x) << FW_EQ_OFLD_CMD_ALLOC_S) 2097*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_ALLOC_F FW_EQ_OFLD_CMD_ALLOC_V(1U) 2098*4882a593Smuzhiyun 2099*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_FREE_S 30 2100*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_FREE_V(x) ((x) << FW_EQ_OFLD_CMD_FREE_S) 2101*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_FREE_F FW_EQ_OFLD_CMD_FREE_V(1U) 2102*4882a593Smuzhiyun 2103*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_MODIFY_S 29 2104*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_MODIFY_V(x) ((x) << FW_EQ_OFLD_CMD_MODIFY_S) 2105*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_MODIFY_F FW_EQ_OFLD_CMD_MODIFY_V(1U) 2106*4882a593Smuzhiyun 2107*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_EQSTART_S 28 2108*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_EQSTART_V(x) ((x) << FW_EQ_OFLD_CMD_EQSTART_S) 2109*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_EQSTART_F FW_EQ_OFLD_CMD_EQSTART_V(1U) 2110*4882a593Smuzhiyun 2111*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_EQSTOP_S 27 2112*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_EQSTOP_V(x) ((x) << FW_EQ_OFLD_CMD_EQSTOP_S) 2113*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_EQSTOP_F FW_EQ_OFLD_CMD_EQSTOP_V(1U) 2114*4882a593Smuzhiyun 2115*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_EQID_S 0 2116*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_EQID_M 0xfffff 2117*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_EQID_V(x) ((x) << FW_EQ_OFLD_CMD_EQID_S) 2118*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_EQID_G(x) \ 2119*4882a593Smuzhiyun (((x) >> FW_EQ_OFLD_CMD_EQID_S) & FW_EQ_OFLD_CMD_EQID_M) 2120*4882a593Smuzhiyun 2121*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_PHYSEQID_S 0 2122*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_PHYSEQID_M 0xfffff 2123*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_PHYSEQID_G(x) \ 2124*4882a593Smuzhiyun (((x) >> FW_EQ_OFLD_CMD_PHYSEQID_S) & FW_EQ_OFLD_CMD_PHYSEQID_M) 2125*4882a593Smuzhiyun 2126*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_FETCHSZM_S 26 2127*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_FETCHSZM_V(x) ((x) << FW_EQ_OFLD_CMD_FETCHSZM_S) 2128*4882a593Smuzhiyun 2129*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_STATUSPGNS_S 25 2130*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_STATUSPGNS_V(x) ((x) << FW_EQ_OFLD_CMD_STATUSPGNS_S) 2131*4882a593Smuzhiyun 2132*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_STATUSPGRO_S 24 2133*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_STATUSPGRO_V(x) ((x) << FW_EQ_OFLD_CMD_STATUSPGRO_S) 2134*4882a593Smuzhiyun 2135*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_FETCHNS_S 23 2136*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_FETCHNS_V(x) ((x) << FW_EQ_OFLD_CMD_FETCHNS_S) 2137*4882a593Smuzhiyun 2138*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_FETCHRO_S 22 2139*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_FETCHRO_V(x) ((x) << FW_EQ_OFLD_CMD_FETCHRO_S) 2140*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_FETCHRO_F FW_EQ_OFLD_CMD_FETCHRO_V(1U) 2141*4882a593Smuzhiyun 2142*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_HOSTFCMODE_S 20 2143*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_HOSTFCMODE_V(x) ((x) << FW_EQ_OFLD_CMD_HOSTFCMODE_S) 2144*4882a593Smuzhiyun 2145*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_CPRIO_S 19 2146*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_CPRIO_V(x) ((x) << FW_EQ_OFLD_CMD_CPRIO_S) 2147*4882a593Smuzhiyun 2148*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_ONCHIP_S 18 2149*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_ONCHIP_V(x) ((x) << FW_EQ_OFLD_CMD_ONCHIP_S) 2150*4882a593Smuzhiyun 2151*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_PCIECHN_S 16 2152*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_PCIECHN_V(x) ((x) << FW_EQ_OFLD_CMD_PCIECHN_S) 2153*4882a593Smuzhiyun 2154*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_IQID_S 0 2155*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_IQID_V(x) ((x) << FW_EQ_OFLD_CMD_IQID_S) 2156*4882a593Smuzhiyun 2157*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_DCAEN_S 31 2158*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_DCAEN_V(x) ((x) << FW_EQ_OFLD_CMD_DCAEN_S) 2159*4882a593Smuzhiyun 2160*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_DCACPU_S 26 2161*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_DCACPU_V(x) ((x) << FW_EQ_OFLD_CMD_DCACPU_S) 2162*4882a593Smuzhiyun 2163*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_FBMIN_S 23 2164*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_FBMIN_V(x) ((x) << FW_EQ_OFLD_CMD_FBMIN_S) 2165*4882a593Smuzhiyun 2166*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_FBMAX_S 20 2167*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_FBMAX_V(x) ((x) << FW_EQ_OFLD_CMD_FBMAX_S) 2168*4882a593Smuzhiyun 2169*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_CIDXFTHRESHO_S 19 2170*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_CIDXFTHRESHO_V(x) \ 2171*4882a593Smuzhiyun ((x) << FW_EQ_OFLD_CMD_CIDXFTHRESHO_S) 2172*4882a593Smuzhiyun 2173*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_CIDXFTHRESH_S 16 2174*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_CIDXFTHRESH_V(x) ((x) << FW_EQ_OFLD_CMD_CIDXFTHRESH_S) 2175*4882a593Smuzhiyun 2176*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_EQSIZE_S 0 2177*4882a593Smuzhiyun #define FW_EQ_OFLD_CMD_EQSIZE_V(x) ((x) << FW_EQ_OFLD_CMD_EQSIZE_S) 2178*4882a593Smuzhiyun 2179*4882a593Smuzhiyun /* 2180*4882a593Smuzhiyun * Macros for VIID parsing: 2181*4882a593Smuzhiyun * VIID - [10:8] PFN, [7] VI Valid, [6:0] VI number 2182*4882a593Smuzhiyun */ 2183*4882a593Smuzhiyun 2184*4882a593Smuzhiyun #define FW_VIID_PFN_S 8 2185*4882a593Smuzhiyun #define FW_VIID_PFN_M 0x7 2186*4882a593Smuzhiyun #define FW_VIID_PFN_G(x) (((x) >> FW_VIID_PFN_S) & FW_VIID_PFN_M) 2187*4882a593Smuzhiyun 2188*4882a593Smuzhiyun #define FW_VIID_VIVLD_S 7 2189*4882a593Smuzhiyun #define FW_VIID_VIVLD_M 0x1 2190*4882a593Smuzhiyun #define FW_VIID_VIVLD_G(x) (((x) >> FW_VIID_VIVLD_S) & FW_VIID_VIVLD_M) 2191*4882a593Smuzhiyun 2192*4882a593Smuzhiyun #define FW_VIID_VIN_S 0 2193*4882a593Smuzhiyun #define FW_VIID_VIN_M 0x7F 2194*4882a593Smuzhiyun #define FW_VIID_VIN_G(x) (((x) >> FW_VIID_VIN_S) & FW_VIID_VIN_M) 2195*4882a593Smuzhiyun 2196*4882a593Smuzhiyun struct fw_vi_cmd { 2197*4882a593Smuzhiyun __be32 op_to_vfn; 2198*4882a593Smuzhiyun __be32 alloc_to_len16; 2199*4882a593Smuzhiyun __be16 type_viid; 2200*4882a593Smuzhiyun u8 mac[6]; 2201*4882a593Smuzhiyun u8 portid_pkd; 2202*4882a593Smuzhiyun u8 nmac; 2203*4882a593Smuzhiyun u8 nmac0[6]; 2204*4882a593Smuzhiyun __be16 rsssize_pkd; 2205*4882a593Smuzhiyun u8 nmac1[6]; 2206*4882a593Smuzhiyun __be16 idsiiq_pkd; 2207*4882a593Smuzhiyun u8 nmac2[6]; 2208*4882a593Smuzhiyun __be16 idseiq_pkd; 2209*4882a593Smuzhiyun u8 nmac3[6]; 2210*4882a593Smuzhiyun __be64 r9; 2211*4882a593Smuzhiyun __be64 r10; 2212*4882a593Smuzhiyun }; 2213*4882a593Smuzhiyun 2214*4882a593Smuzhiyun #define FW_VI_CMD_PFN_S 8 2215*4882a593Smuzhiyun #define FW_VI_CMD_PFN_V(x) ((x) << FW_VI_CMD_PFN_S) 2216*4882a593Smuzhiyun 2217*4882a593Smuzhiyun #define FW_VI_CMD_VFN_S 0 2218*4882a593Smuzhiyun #define FW_VI_CMD_VFN_V(x) ((x) << FW_VI_CMD_VFN_S) 2219*4882a593Smuzhiyun 2220*4882a593Smuzhiyun #define FW_VI_CMD_ALLOC_S 31 2221*4882a593Smuzhiyun #define FW_VI_CMD_ALLOC_V(x) ((x) << FW_VI_CMD_ALLOC_S) 2222*4882a593Smuzhiyun #define FW_VI_CMD_ALLOC_F FW_VI_CMD_ALLOC_V(1U) 2223*4882a593Smuzhiyun 2224*4882a593Smuzhiyun #define FW_VI_CMD_FREE_S 30 2225*4882a593Smuzhiyun #define FW_VI_CMD_FREE_V(x) ((x) << FW_VI_CMD_FREE_S) 2226*4882a593Smuzhiyun #define FW_VI_CMD_FREE_F FW_VI_CMD_FREE_V(1U) 2227*4882a593Smuzhiyun 2228*4882a593Smuzhiyun #define FW_VI_CMD_VFVLD_S 24 2229*4882a593Smuzhiyun #define FW_VI_CMD_VFVLD_M 0x1 2230*4882a593Smuzhiyun #define FW_VI_CMD_VFVLD_V(x) ((x) << FW_VI_CMD_VFVLD_S) 2231*4882a593Smuzhiyun #define FW_VI_CMD_VFVLD_G(x) \ 2232*4882a593Smuzhiyun (((x) >> FW_VI_CMD_VFVLD_S) & FW_VI_CMD_VFVLD_M) 2233*4882a593Smuzhiyun #define FW_VI_CMD_VFVLD_F FW_VI_CMD_VFVLD_V(1U) 2234*4882a593Smuzhiyun 2235*4882a593Smuzhiyun #define FW_VI_CMD_VIN_S 16 2236*4882a593Smuzhiyun #define FW_VI_CMD_VIN_M 0xff 2237*4882a593Smuzhiyun #define FW_VI_CMD_VIN_V(x) ((x) << FW_VI_CMD_VIN_S) 2238*4882a593Smuzhiyun #define FW_VI_CMD_VIN_G(x) \ 2239*4882a593Smuzhiyun (((x) >> FW_VI_CMD_VIN_S) & FW_VI_CMD_VIN_M) 2240*4882a593Smuzhiyun 2241*4882a593Smuzhiyun #define FW_VI_CMD_VIID_S 0 2242*4882a593Smuzhiyun #define FW_VI_CMD_VIID_M 0xfff 2243*4882a593Smuzhiyun #define FW_VI_CMD_VIID_V(x) ((x) << FW_VI_CMD_VIID_S) 2244*4882a593Smuzhiyun #define FW_VI_CMD_VIID_G(x) (((x) >> FW_VI_CMD_VIID_S) & FW_VI_CMD_VIID_M) 2245*4882a593Smuzhiyun 2246*4882a593Smuzhiyun #define FW_VI_CMD_PORTID_S 4 2247*4882a593Smuzhiyun #define FW_VI_CMD_PORTID_M 0xf 2248*4882a593Smuzhiyun #define FW_VI_CMD_PORTID_V(x) ((x) << FW_VI_CMD_PORTID_S) 2249*4882a593Smuzhiyun #define FW_VI_CMD_PORTID_G(x) \ 2250*4882a593Smuzhiyun (((x) >> FW_VI_CMD_PORTID_S) & FW_VI_CMD_PORTID_M) 2251*4882a593Smuzhiyun 2252*4882a593Smuzhiyun #define FW_VI_CMD_RSSSIZE_S 0 2253*4882a593Smuzhiyun #define FW_VI_CMD_RSSSIZE_M 0x7ff 2254*4882a593Smuzhiyun #define FW_VI_CMD_RSSSIZE_G(x) \ 2255*4882a593Smuzhiyun (((x) >> FW_VI_CMD_RSSSIZE_S) & FW_VI_CMD_RSSSIZE_M) 2256*4882a593Smuzhiyun 2257*4882a593Smuzhiyun /* Special VI_MAC command index ids */ 2258*4882a593Smuzhiyun #define FW_VI_MAC_ADD_MAC 0x3FF 2259*4882a593Smuzhiyun #define FW_VI_MAC_ADD_PERSIST_MAC 0x3FE 2260*4882a593Smuzhiyun #define FW_VI_MAC_MAC_BASED_FREE 0x3FD 2261*4882a593Smuzhiyun #define FW_VI_MAC_ID_BASED_FREE 0x3FC 2262*4882a593Smuzhiyun #define FW_CLS_TCAM_NUM_ENTRIES 336 2263*4882a593Smuzhiyun 2264*4882a593Smuzhiyun enum fw_vi_mac_smac { 2265*4882a593Smuzhiyun FW_VI_MAC_MPS_TCAM_ENTRY, 2266*4882a593Smuzhiyun FW_VI_MAC_MPS_TCAM_ONLY, 2267*4882a593Smuzhiyun FW_VI_MAC_SMT_ONLY, 2268*4882a593Smuzhiyun FW_VI_MAC_SMT_AND_MPSTCAM 2269*4882a593Smuzhiyun }; 2270*4882a593Smuzhiyun 2271*4882a593Smuzhiyun enum fw_vi_mac_result { 2272*4882a593Smuzhiyun FW_VI_MAC_R_SUCCESS, 2273*4882a593Smuzhiyun FW_VI_MAC_R_F_NONEXISTENT_NOMEM, 2274*4882a593Smuzhiyun FW_VI_MAC_R_SMAC_FAIL, 2275*4882a593Smuzhiyun FW_VI_MAC_R_F_ACL_CHECK 2276*4882a593Smuzhiyun }; 2277*4882a593Smuzhiyun 2278*4882a593Smuzhiyun enum fw_vi_mac_entry_types { 2279*4882a593Smuzhiyun FW_VI_MAC_TYPE_EXACTMAC, 2280*4882a593Smuzhiyun FW_VI_MAC_TYPE_HASHVEC, 2281*4882a593Smuzhiyun FW_VI_MAC_TYPE_RAW, 2282*4882a593Smuzhiyun FW_VI_MAC_TYPE_EXACTMAC_VNI, 2283*4882a593Smuzhiyun }; 2284*4882a593Smuzhiyun 2285*4882a593Smuzhiyun struct fw_vi_mac_cmd { 2286*4882a593Smuzhiyun __be32 op_to_viid; 2287*4882a593Smuzhiyun __be32 freemacs_to_len16; 2288*4882a593Smuzhiyun union fw_vi_mac { 2289*4882a593Smuzhiyun struct fw_vi_mac_exact { 2290*4882a593Smuzhiyun __be16 valid_to_idx; 2291*4882a593Smuzhiyun u8 macaddr[6]; 2292*4882a593Smuzhiyun } exact[7]; 2293*4882a593Smuzhiyun struct fw_vi_mac_hash { 2294*4882a593Smuzhiyun __be64 hashvec; 2295*4882a593Smuzhiyun } hash; 2296*4882a593Smuzhiyun struct fw_vi_mac_raw { 2297*4882a593Smuzhiyun __be32 raw_idx_pkd; 2298*4882a593Smuzhiyun __be32 data0_pkd; 2299*4882a593Smuzhiyun __be32 data1[2]; 2300*4882a593Smuzhiyun __be64 data0m_pkd; 2301*4882a593Smuzhiyun __be32 data1m[2]; 2302*4882a593Smuzhiyun } raw; 2303*4882a593Smuzhiyun struct fw_vi_mac_vni { 2304*4882a593Smuzhiyun __be16 valid_to_idx; 2305*4882a593Smuzhiyun __u8 macaddr[6]; 2306*4882a593Smuzhiyun __be16 r7; 2307*4882a593Smuzhiyun __u8 macaddr_mask[6]; 2308*4882a593Smuzhiyun __be32 lookup_type_to_vni; 2309*4882a593Smuzhiyun __be32 vni_mask_pkd; 2310*4882a593Smuzhiyun } exact_vni[2]; 2311*4882a593Smuzhiyun } u; 2312*4882a593Smuzhiyun }; 2313*4882a593Smuzhiyun 2314*4882a593Smuzhiyun #define FW_VI_MAC_CMD_SMTID_S 12 2315*4882a593Smuzhiyun #define FW_VI_MAC_CMD_SMTID_M 0xff 2316*4882a593Smuzhiyun #define FW_VI_MAC_CMD_SMTID_V(x) ((x) << FW_VI_MAC_CMD_SMTID_S) 2317*4882a593Smuzhiyun #define FW_VI_MAC_CMD_SMTID_G(x) \ 2318*4882a593Smuzhiyun (((x) >> FW_VI_MAC_CMD_SMTID_S) & FW_VI_MAC_CMD_SMTID_M) 2319*4882a593Smuzhiyun 2320*4882a593Smuzhiyun #define FW_VI_MAC_CMD_VIID_S 0 2321*4882a593Smuzhiyun #define FW_VI_MAC_CMD_VIID_V(x) ((x) << FW_VI_MAC_CMD_VIID_S) 2322*4882a593Smuzhiyun 2323*4882a593Smuzhiyun #define FW_VI_MAC_CMD_FREEMACS_S 31 2324*4882a593Smuzhiyun #define FW_VI_MAC_CMD_FREEMACS_V(x) ((x) << FW_VI_MAC_CMD_FREEMACS_S) 2325*4882a593Smuzhiyun 2326*4882a593Smuzhiyun #define FW_VI_MAC_CMD_ENTRY_TYPE_S 23 2327*4882a593Smuzhiyun #define FW_VI_MAC_CMD_ENTRY_TYPE_M 0x7 2328*4882a593Smuzhiyun #define FW_VI_MAC_CMD_ENTRY_TYPE_V(x) ((x) << FW_VI_MAC_CMD_ENTRY_TYPE_S) 2329*4882a593Smuzhiyun #define FW_VI_MAC_CMD_ENTRY_TYPE_G(x) \ 2330*4882a593Smuzhiyun (((x) >> FW_VI_MAC_CMD_ENTRY_TYPE_S) & FW_VI_MAC_CMD_ENTRY_TYPE_M) 2331*4882a593Smuzhiyun 2332*4882a593Smuzhiyun #define FW_VI_MAC_CMD_HASHVECEN_S 23 2333*4882a593Smuzhiyun #define FW_VI_MAC_CMD_HASHVECEN_V(x) ((x) << FW_VI_MAC_CMD_HASHVECEN_S) 2334*4882a593Smuzhiyun #define FW_VI_MAC_CMD_HASHVECEN_F FW_VI_MAC_CMD_HASHVECEN_V(1U) 2335*4882a593Smuzhiyun 2336*4882a593Smuzhiyun #define FW_VI_MAC_CMD_HASHUNIEN_S 22 2337*4882a593Smuzhiyun #define FW_VI_MAC_CMD_HASHUNIEN_V(x) ((x) << FW_VI_MAC_CMD_HASHUNIEN_S) 2338*4882a593Smuzhiyun 2339*4882a593Smuzhiyun #define FW_VI_MAC_CMD_VALID_S 15 2340*4882a593Smuzhiyun #define FW_VI_MAC_CMD_VALID_V(x) ((x) << FW_VI_MAC_CMD_VALID_S) 2341*4882a593Smuzhiyun #define FW_VI_MAC_CMD_VALID_F FW_VI_MAC_CMD_VALID_V(1U) 2342*4882a593Smuzhiyun 2343*4882a593Smuzhiyun #define FW_VI_MAC_CMD_PRIO_S 12 2344*4882a593Smuzhiyun #define FW_VI_MAC_CMD_PRIO_V(x) ((x) << FW_VI_MAC_CMD_PRIO_S) 2345*4882a593Smuzhiyun 2346*4882a593Smuzhiyun #define FW_VI_MAC_CMD_SMAC_RESULT_S 10 2347*4882a593Smuzhiyun #define FW_VI_MAC_CMD_SMAC_RESULT_M 0x3 2348*4882a593Smuzhiyun #define FW_VI_MAC_CMD_SMAC_RESULT_V(x) ((x) << FW_VI_MAC_CMD_SMAC_RESULT_S) 2349*4882a593Smuzhiyun #define FW_VI_MAC_CMD_SMAC_RESULT_G(x) \ 2350*4882a593Smuzhiyun (((x) >> FW_VI_MAC_CMD_SMAC_RESULT_S) & FW_VI_MAC_CMD_SMAC_RESULT_M) 2351*4882a593Smuzhiyun 2352*4882a593Smuzhiyun #define FW_VI_MAC_CMD_IDX_S 0 2353*4882a593Smuzhiyun #define FW_VI_MAC_CMD_IDX_M 0x3ff 2354*4882a593Smuzhiyun #define FW_VI_MAC_CMD_IDX_V(x) ((x) << FW_VI_MAC_CMD_IDX_S) 2355*4882a593Smuzhiyun #define FW_VI_MAC_CMD_IDX_G(x) \ 2356*4882a593Smuzhiyun (((x) >> FW_VI_MAC_CMD_IDX_S) & FW_VI_MAC_CMD_IDX_M) 2357*4882a593Smuzhiyun 2358*4882a593Smuzhiyun #define FW_VI_MAC_CMD_RAW_IDX_S 16 2359*4882a593Smuzhiyun #define FW_VI_MAC_CMD_RAW_IDX_M 0xffff 2360*4882a593Smuzhiyun #define FW_VI_MAC_CMD_RAW_IDX_V(x) ((x) << FW_VI_MAC_CMD_RAW_IDX_S) 2361*4882a593Smuzhiyun #define FW_VI_MAC_CMD_RAW_IDX_G(x) \ 2362*4882a593Smuzhiyun (((x) >> FW_VI_MAC_CMD_RAW_IDX_S) & FW_VI_MAC_CMD_RAW_IDX_M) 2363*4882a593Smuzhiyun 2364*4882a593Smuzhiyun #define FW_VI_MAC_CMD_LOOKUP_TYPE_S 31 2365*4882a593Smuzhiyun #define FW_VI_MAC_CMD_LOOKUP_TYPE_M 0x1 2366*4882a593Smuzhiyun #define FW_VI_MAC_CMD_LOOKUP_TYPE_V(x) ((x) << FW_VI_MAC_CMD_LOOKUP_TYPE_S) 2367*4882a593Smuzhiyun #define FW_VI_MAC_CMD_LOOKUP_TYPE_G(x) \ 2368*4882a593Smuzhiyun (((x) >> FW_VI_MAC_CMD_LOOKUP_TYPE_S) & FW_VI_MAC_CMD_LOOKUP_TYPE_M) 2369*4882a593Smuzhiyun #define FW_VI_MAC_CMD_LOOKUP_TYPE_F FW_VI_MAC_CMD_LOOKUP_TYPE_V(1U) 2370*4882a593Smuzhiyun 2371*4882a593Smuzhiyun #define FW_VI_MAC_CMD_DIP_HIT_S 30 2372*4882a593Smuzhiyun #define FW_VI_MAC_CMD_DIP_HIT_M 0x1 2373*4882a593Smuzhiyun #define FW_VI_MAC_CMD_DIP_HIT_V(x) ((x) << FW_VI_MAC_CMD_DIP_HIT_S) 2374*4882a593Smuzhiyun #define FW_VI_MAC_CMD_DIP_HIT_G(x) \ 2375*4882a593Smuzhiyun (((x) >> FW_VI_MAC_CMD_DIP_HIT_S) & FW_VI_MAC_CMD_DIP_HIT_M) 2376*4882a593Smuzhiyun #define FW_VI_MAC_CMD_DIP_HIT_F FW_VI_MAC_CMD_DIP_HIT_V(1U) 2377*4882a593Smuzhiyun 2378*4882a593Smuzhiyun #define FW_VI_MAC_CMD_VNI_S 0 2379*4882a593Smuzhiyun #define FW_VI_MAC_CMD_VNI_M 0xffffff 2380*4882a593Smuzhiyun #define FW_VI_MAC_CMD_VNI_V(x) ((x) << FW_VI_MAC_CMD_VNI_S) 2381*4882a593Smuzhiyun #define FW_VI_MAC_CMD_VNI_G(x) \ 2382*4882a593Smuzhiyun (((x) >> FW_VI_MAC_CMD_VNI_S) & FW_VI_MAC_CMD_VNI_M) 2383*4882a593Smuzhiyun 2384*4882a593Smuzhiyun #define FW_VI_MAC_CMD_VNI_MASK_S 0 2385*4882a593Smuzhiyun #define FW_VI_MAC_CMD_VNI_MASK_M 0xffffff 2386*4882a593Smuzhiyun #define FW_VI_MAC_CMD_VNI_MASK_V(x) ((x) << FW_VI_MAC_CMD_VNI_MASK_S) 2387*4882a593Smuzhiyun #define FW_VI_MAC_CMD_VNI_MASK_G(x) \ 2388*4882a593Smuzhiyun (((x) >> FW_VI_MAC_CMD_VNI_MASK_S) & FW_VI_MAC_CMD_VNI_MASK_M) 2389*4882a593Smuzhiyun 2390*4882a593Smuzhiyun #define FW_RXMODE_MTU_NO_CHG 65535 2391*4882a593Smuzhiyun 2392*4882a593Smuzhiyun struct fw_vi_rxmode_cmd { 2393*4882a593Smuzhiyun __be32 op_to_viid; 2394*4882a593Smuzhiyun __be32 retval_len16; 2395*4882a593Smuzhiyun __be32 mtu_to_vlanexen; 2396*4882a593Smuzhiyun __be32 r4_lo; 2397*4882a593Smuzhiyun }; 2398*4882a593Smuzhiyun 2399*4882a593Smuzhiyun #define FW_VI_RXMODE_CMD_VIID_S 0 2400*4882a593Smuzhiyun #define FW_VI_RXMODE_CMD_VIID_V(x) ((x) << FW_VI_RXMODE_CMD_VIID_S) 2401*4882a593Smuzhiyun 2402*4882a593Smuzhiyun #define FW_VI_RXMODE_CMD_MTU_S 16 2403*4882a593Smuzhiyun #define FW_VI_RXMODE_CMD_MTU_M 0xffff 2404*4882a593Smuzhiyun #define FW_VI_RXMODE_CMD_MTU_V(x) ((x) << FW_VI_RXMODE_CMD_MTU_S) 2405*4882a593Smuzhiyun 2406*4882a593Smuzhiyun #define FW_VI_RXMODE_CMD_PROMISCEN_S 14 2407*4882a593Smuzhiyun #define FW_VI_RXMODE_CMD_PROMISCEN_M 0x3 2408*4882a593Smuzhiyun #define FW_VI_RXMODE_CMD_PROMISCEN_V(x) ((x) << FW_VI_RXMODE_CMD_PROMISCEN_S) 2409*4882a593Smuzhiyun 2410*4882a593Smuzhiyun #define FW_VI_RXMODE_CMD_ALLMULTIEN_S 12 2411*4882a593Smuzhiyun #define FW_VI_RXMODE_CMD_ALLMULTIEN_M 0x3 2412*4882a593Smuzhiyun #define FW_VI_RXMODE_CMD_ALLMULTIEN_V(x) \ 2413*4882a593Smuzhiyun ((x) << FW_VI_RXMODE_CMD_ALLMULTIEN_S) 2414*4882a593Smuzhiyun 2415*4882a593Smuzhiyun #define FW_VI_RXMODE_CMD_BROADCASTEN_S 10 2416*4882a593Smuzhiyun #define FW_VI_RXMODE_CMD_BROADCASTEN_M 0x3 2417*4882a593Smuzhiyun #define FW_VI_RXMODE_CMD_BROADCASTEN_V(x) \ 2418*4882a593Smuzhiyun ((x) << FW_VI_RXMODE_CMD_BROADCASTEN_S) 2419*4882a593Smuzhiyun 2420*4882a593Smuzhiyun #define FW_VI_RXMODE_CMD_VLANEXEN_S 8 2421*4882a593Smuzhiyun #define FW_VI_RXMODE_CMD_VLANEXEN_M 0x3 2422*4882a593Smuzhiyun #define FW_VI_RXMODE_CMD_VLANEXEN_V(x) ((x) << FW_VI_RXMODE_CMD_VLANEXEN_S) 2423*4882a593Smuzhiyun 2424*4882a593Smuzhiyun struct fw_vi_enable_cmd { 2425*4882a593Smuzhiyun __be32 op_to_viid; 2426*4882a593Smuzhiyun __be32 ien_to_len16; 2427*4882a593Smuzhiyun __be16 blinkdur; 2428*4882a593Smuzhiyun __be16 r3; 2429*4882a593Smuzhiyun __be32 r4; 2430*4882a593Smuzhiyun }; 2431*4882a593Smuzhiyun 2432*4882a593Smuzhiyun #define FW_VI_ENABLE_CMD_VIID_S 0 2433*4882a593Smuzhiyun #define FW_VI_ENABLE_CMD_VIID_V(x) ((x) << FW_VI_ENABLE_CMD_VIID_S) 2434*4882a593Smuzhiyun 2435*4882a593Smuzhiyun #define FW_VI_ENABLE_CMD_IEN_S 31 2436*4882a593Smuzhiyun #define FW_VI_ENABLE_CMD_IEN_V(x) ((x) << FW_VI_ENABLE_CMD_IEN_S) 2437*4882a593Smuzhiyun 2438*4882a593Smuzhiyun #define FW_VI_ENABLE_CMD_EEN_S 30 2439*4882a593Smuzhiyun #define FW_VI_ENABLE_CMD_EEN_V(x) ((x) << FW_VI_ENABLE_CMD_EEN_S) 2440*4882a593Smuzhiyun 2441*4882a593Smuzhiyun #define FW_VI_ENABLE_CMD_LED_S 29 2442*4882a593Smuzhiyun #define FW_VI_ENABLE_CMD_LED_V(x) ((x) << FW_VI_ENABLE_CMD_LED_S) 2443*4882a593Smuzhiyun #define FW_VI_ENABLE_CMD_LED_F FW_VI_ENABLE_CMD_LED_V(1U) 2444*4882a593Smuzhiyun 2445*4882a593Smuzhiyun #define FW_VI_ENABLE_CMD_DCB_INFO_S 28 2446*4882a593Smuzhiyun #define FW_VI_ENABLE_CMD_DCB_INFO_V(x) ((x) << FW_VI_ENABLE_CMD_DCB_INFO_S) 2447*4882a593Smuzhiyun 2448*4882a593Smuzhiyun /* VI VF stats offset definitions */ 2449*4882a593Smuzhiyun #define VI_VF_NUM_STATS 16 2450*4882a593Smuzhiyun enum fw_vi_stats_vf_index { 2451*4882a593Smuzhiyun FW_VI_VF_STAT_TX_BCAST_BYTES_IX, 2452*4882a593Smuzhiyun FW_VI_VF_STAT_TX_BCAST_FRAMES_IX, 2453*4882a593Smuzhiyun FW_VI_VF_STAT_TX_MCAST_BYTES_IX, 2454*4882a593Smuzhiyun FW_VI_VF_STAT_TX_MCAST_FRAMES_IX, 2455*4882a593Smuzhiyun FW_VI_VF_STAT_TX_UCAST_BYTES_IX, 2456*4882a593Smuzhiyun FW_VI_VF_STAT_TX_UCAST_FRAMES_IX, 2457*4882a593Smuzhiyun FW_VI_VF_STAT_TX_DROP_FRAMES_IX, 2458*4882a593Smuzhiyun FW_VI_VF_STAT_TX_OFLD_BYTES_IX, 2459*4882a593Smuzhiyun FW_VI_VF_STAT_TX_OFLD_FRAMES_IX, 2460*4882a593Smuzhiyun FW_VI_VF_STAT_RX_BCAST_BYTES_IX, 2461*4882a593Smuzhiyun FW_VI_VF_STAT_RX_BCAST_FRAMES_IX, 2462*4882a593Smuzhiyun FW_VI_VF_STAT_RX_MCAST_BYTES_IX, 2463*4882a593Smuzhiyun FW_VI_VF_STAT_RX_MCAST_FRAMES_IX, 2464*4882a593Smuzhiyun FW_VI_VF_STAT_RX_UCAST_BYTES_IX, 2465*4882a593Smuzhiyun FW_VI_VF_STAT_RX_UCAST_FRAMES_IX, 2466*4882a593Smuzhiyun FW_VI_VF_STAT_RX_ERR_FRAMES_IX 2467*4882a593Smuzhiyun }; 2468*4882a593Smuzhiyun 2469*4882a593Smuzhiyun /* VI PF stats offset definitions */ 2470*4882a593Smuzhiyun #define VI_PF_NUM_STATS 17 2471*4882a593Smuzhiyun enum fw_vi_stats_pf_index { 2472*4882a593Smuzhiyun FW_VI_PF_STAT_TX_BCAST_BYTES_IX, 2473*4882a593Smuzhiyun FW_VI_PF_STAT_TX_BCAST_FRAMES_IX, 2474*4882a593Smuzhiyun FW_VI_PF_STAT_TX_MCAST_BYTES_IX, 2475*4882a593Smuzhiyun FW_VI_PF_STAT_TX_MCAST_FRAMES_IX, 2476*4882a593Smuzhiyun FW_VI_PF_STAT_TX_UCAST_BYTES_IX, 2477*4882a593Smuzhiyun FW_VI_PF_STAT_TX_UCAST_FRAMES_IX, 2478*4882a593Smuzhiyun FW_VI_PF_STAT_TX_OFLD_BYTES_IX, 2479*4882a593Smuzhiyun FW_VI_PF_STAT_TX_OFLD_FRAMES_IX, 2480*4882a593Smuzhiyun FW_VI_PF_STAT_RX_BYTES_IX, 2481*4882a593Smuzhiyun FW_VI_PF_STAT_RX_FRAMES_IX, 2482*4882a593Smuzhiyun FW_VI_PF_STAT_RX_BCAST_BYTES_IX, 2483*4882a593Smuzhiyun FW_VI_PF_STAT_RX_BCAST_FRAMES_IX, 2484*4882a593Smuzhiyun FW_VI_PF_STAT_RX_MCAST_BYTES_IX, 2485*4882a593Smuzhiyun FW_VI_PF_STAT_RX_MCAST_FRAMES_IX, 2486*4882a593Smuzhiyun FW_VI_PF_STAT_RX_UCAST_BYTES_IX, 2487*4882a593Smuzhiyun FW_VI_PF_STAT_RX_UCAST_FRAMES_IX, 2488*4882a593Smuzhiyun FW_VI_PF_STAT_RX_ERR_FRAMES_IX 2489*4882a593Smuzhiyun }; 2490*4882a593Smuzhiyun 2491*4882a593Smuzhiyun struct fw_vi_stats_cmd { 2492*4882a593Smuzhiyun __be32 op_to_viid; 2493*4882a593Smuzhiyun __be32 retval_len16; 2494*4882a593Smuzhiyun union fw_vi_stats { 2495*4882a593Smuzhiyun struct fw_vi_stats_ctl { 2496*4882a593Smuzhiyun __be16 nstats_ix; 2497*4882a593Smuzhiyun __be16 r6; 2498*4882a593Smuzhiyun __be32 r7; 2499*4882a593Smuzhiyun __be64 stat0; 2500*4882a593Smuzhiyun __be64 stat1; 2501*4882a593Smuzhiyun __be64 stat2; 2502*4882a593Smuzhiyun __be64 stat3; 2503*4882a593Smuzhiyun __be64 stat4; 2504*4882a593Smuzhiyun __be64 stat5; 2505*4882a593Smuzhiyun } ctl; 2506*4882a593Smuzhiyun struct fw_vi_stats_pf { 2507*4882a593Smuzhiyun __be64 tx_bcast_bytes; 2508*4882a593Smuzhiyun __be64 tx_bcast_frames; 2509*4882a593Smuzhiyun __be64 tx_mcast_bytes; 2510*4882a593Smuzhiyun __be64 tx_mcast_frames; 2511*4882a593Smuzhiyun __be64 tx_ucast_bytes; 2512*4882a593Smuzhiyun __be64 tx_ucast_frames; 2513*4882a593Smuzhiyun __be64 tx_offload_bytes; 2514*4882a593Smuzhiyun __be64 tx_offload_frames; 2515*4882a593Smuzhiyun __be64 rx_pf_bytes; 2516*4882a593Smuzhiyun __be64 rx_pf_frames; 2517*4882a593Smuzhiyun __be64 rx_bcast_bytes; 2518*4882a593Smuzhiyun __be64 rx_bcast_frames; 2519*4882a593Smuzhiyun __be64 rx_mcast_bytes; 2520*4882a593Smuzhiyun __be64 rx_mcast_frames; 2521*4882a593Smuzhiyun __be64 rx_ucast_bytes; 2522*4882a593Smuzhiyun __be64 rx_ucast_frames; 2523*4882a593Smuzhiyun __be64 rx_err_frames; 2524*4882a593Smuzhiyun } pf; 2525*4882a593Smuzhiyun struct fw_vi_stats_vf { 2526*4882a593Smuzhiyun __be64 tx_bcast_bytes; 2527*4882a593Smuzhiyun __be64 tx_bcast_frames; 2528*4882a593Smuzhiyun __be64 tx_mcast_bytes; 2529*4882a593Smuzhiyun __be64 tx_mcast_frames; 2530*4882a593Smuzhiyun __be64 tx_ucast_bytes; 2531*4882a593Smuzhiyun __be64 tx_ucast_frames; 2532*4882a593Smuzhiyun __be64 tx_drop_frames; 2533*4882a593Smuzhiyun __be64 tx_offload_bytes; 2534*4882a593Smuzhiyun __be64 tx_offload_frames; 2535*4882a593Smuzhiyun __be64 rx_bcast_bytes; 2536*4882a593Smuzhiyun __be64 rx_bcast_frames; 2537*4882a593Smuzhiyun __be64 rx_mcast_bytes; 2538*4882a593Smuzhiyun __be64 rx_mcast_frames; 2539*4882a593Smuzhiyun __be64 rx_ucast_bytes; 2540*4882a593Smuzhiyun __be64 rx_ucast_frames; 2541*4882a593Smuzhiyun __be64 rx_err_frames; 2542*4882a593Smuzhiyun } vf; 2543*4882a593Smuzhiyun } u; 2544*4882a593Smuzhiyun }; 2545*4882a593Smuzhiyun 2546*4882a593Smuzhiyun #define FW_VI_STATS_CMD_VIID_S 0 2547*4882a593Smuzhiyun #define FW_VI_STATS_CMD_VIID_V(x) ((x) << FW_VI_STATS_CMD_VIID_S) 2548*4882a593Smuzhiyun 2549*4882a593Smuzhiyun #define FW_VI_STATS_CMD_NSTATS_S 12 2550*4882a593Smuzhiyun #define FW_VI_STATS_CMD_NSTATS_V(x) ((x) << FW_VI_STATS_CMD_NSTATS_S) 2551*4882a593Smuzhiyun 2552*4882a593Smuzhiyun #define FW_VI_STATS_CMD_IX_S 0 2553*4882a593Smuzhiyun #define FW_VI_STATS_CMD_IX_V(x) ((x) << FW_VI_STATS_CMD_IX_S) 2554*4882a593Smuzhiyun 2555*4882a593Smuzhiyun struct fw_acl_mac_cmd { 2556*4882a593Smuzhiyun __be32 op_to_vfn; 2557*4882a593Smuzhiyun __be32 en_to_len16; 2558*4882a593Smuzhiyun u8 nmac; 2559*4882a593Smuzhiyun u8 r3[7]; 2560*4882a593Smuzhiyun __be16 r4; 2561*4882a593Smuzhiyun u8 macaddr0[6]; 2562*4882a593Smuzhiyun __be16 r5; 2563*4882a593Smuzhiyun u8 macaddr1[6]; 2564*4882a593Smuzhiyun __be16 r6; 2565*4882a593Smuzhiyun u8 macaddr2[6]; 2566*4882a593Smuzhiyun __be16 r7; 2567*4882a593Smuzhiyun u8 macaddr3[6]; 2568*4882a593Smuzhiyun }; 2569*4882a593Smuzhiyun 2570*4882a593Smuzhiyun #define FW_ACL_MAC_CMD_PFN_S 8 2571*4882a593Smuzhiyun #define FW_ACL_MAC_CMD_PFN_V(x) ((x) << FW_ACL_MAC_CMD_PFN_S) 2572*4882a593Smuzhiyun 2573*4882a593Smuzhiyun #define FW_ACL_MAC_CMD_VFN_S 0 2574*4882a593Smuzhiyun #define FW_ACL_MAC_CMD_VFN_V(x) ((x) << FW_ACL_MAC_CMD_VFN_S) 2575*4882a593Smuzhiyun 2576*4882a593Smuzhiyun #define FW_ACL_MAC_CMD_EN_S 31 2577*4882a593Smuzhiyun #define FW_ACL_MAC_CMD_EN_V(x) ((x) << FW_ACL_MAC_CMD_EN_S) 2578*4882a593Smuzhiyun 2579*4882a593Smuzhiyun struct fw_acl_vlan_cmd { 2580*4882a593Smuzhiyun __be32 op_to_vfn; 2581*4882a593Smuzhiyun __be32 en_to_len16; 2582*4882a593Smuzhiyun u8 nvlan; 2583*4882a593Smuzhiyun u8 dropnovlan_fm; 2584*4882a593Smuzhiyun u8 r3_lo[6]; 2585*4882a593Smuzhiyun __be16 vlanid[16]; 2586*4882a593Smuzhiyun }; 2587*4882a593Smuzhiyun 2588*4882a593Smuzhiyun #define FW_ACL_VLAN_CMD_PFN_S 8 2589*4882a593Smuzhiyun #define FW_ACL_VLAN_CMD_PFN_V(x) ((x) << FW_ACL_VLAN_CMD_PFN_S) 2590*4882a593Smuzhiyun 2591*4882a593Smuzhiyun #define FW_ACL_VLAN_CMD_VFN_S 0 2592*4882a593Smuzhiyun #define FW_ACL_VLAN_CMD_VFN_V(x) ((x) << FW_ACL_VLAN_CMD_VFN_S) 2593*4882a593Smuzhiyun 2594*4882a593Smuzhiyun #define FW_ACL_VLAN_CMD_EN_S 31 2595*4882a593Smuzhiyun #define FW_ACL_VLAN_CMD_EN_M 0x1 2596*4882a593Smuzhiyun #define FW_ACL_VLAN_CMD_EN_V(x) ((x) << FW_ACL_VLAN_CMD_EN_S) 2597*4882a593Smuzhiyun #define FW_ACL_VLAN_CMD_EN_G(x) \ 2598*4882a593Smuzhiyun (((x) >> S_FW_ACL_VLAN_CMD_EN_S) & FW_ACL_VLAN_CMD_EN_M) 2599*4882a593Smuzhiyun #define FW_ACL_VLAN_CMD_EN_F FW_ACL_VLAN_CMD_EN_V(1U) 2600*4882a593Smuzhiyun 2601*4882a593Smuzhiyun #define FW_ACL_VLAN_CMD_DROPNOVLAN_S 7 2602*4882a593Smuzhiyun #define FW_ACL_VLAN_CMD_DROPNOVLAN_V(x) ((x) << FW_ACL_VLAN_CMD_DROPNOVLAN_S) 2603*4882a593Smuzhiyun #define FW_ACL_VLAN_CMD_DROPNOVLAN_F FW_ACL_VLAN_CMD_DROPNOVLAN_V(1U) 2604*4882a593Smuzhiyun 2605*4882a593Smuzhiyun #define FW_ACL_VLAN_CMD_FM_S 6 2606*4882a593Smuzhiyun #define FW_ACL_VLAN_CMD_FM_M 0x1 2607*4882a593Smuzhiyun #define FW_ACL_VLAN_CMD_FM_V(x) ((x) << FW_ACL_VLAN_CMD_FM_S) 2608*4882a593Smuzhiyun #define FW_ACL_VLAN_CMD_FM_G(x) \ 2609*4882a593Smuzhiyun (((x) >> FW_ACL_VLAN_CMD_FM_S) & FW_ACL_VLAN_CMD_FM_M) 2610*4882a593Smuzhiyun #define FW_ACL_VLAN_CMD_FM_F FW_ACL_VLAN_CMD_FM_V(1U) 2611*4882a593Smuzhiyun 2612*4882a593Smuzhiyun /* old 16-bit port capabilities bitmap (fw_port_cap16_t) */ 2613*4882a593Smuzhiyun enum fw_port_cap { 2614*4882a593Smuzhiyun FW_PORT_CAP_SPEED_100M = 0x0001, 2615*4882a593Smuzhiyun FW_PORT_CAP_SPEED_1G = 0x0002, 2616*4882a593Smuzhiyun FW_PORT_CAP_SPEED_25G = 0x0004, 2617*4882a593Smuzhiyun FW_PORT_CAP_SPEED_10G = 0x0008, 2618*4882a593Smuzhiyun FW_PORT_CAP_SPEED_40G = 0x0010, 2619*4882a593Smuzhiyun FW_PORT_CAP_SPEED_100G = 0x0020, 2620*4882a593Smuzhiyun FW_PORT_CAP_FC_RX = 0x0040, 2621*4882a593Smuzhiyun FW_PORT_CAP_FC_TX = 0x0080, 2622*4882a593Smuzhiyun FW_PORT_CAP_ANEG = 0x0100, 2623*4882a593Smuzhiyun FW_PORT_CAP_MDIAUTO = 0x0200, 2624*4882a593Smuzhiyun FW_PORT_CAP_MDISTRAIGHT = 0x0400, 2625*4882a593Smuzhiyun FW_PORT_CAP_FEC_RS = 0x0800, 2626*4882a593Smuzhiyun FW_PORT_CAP_FEC_BASER_RS = 0x1000, 2627*4882a593Smuzhiyun FW_PORT_CAP_FORCE_PAUSE = 0x2000, 2628*4882a593Smuzhiyun FW_PORT_CAP_802_3_PAUSE = 0x4000, 2629*4882a593Smuzhiyun FW_PORT_CAP_802_3_ASM_DIR = 0x8000, 2630*4882a593Smuzhiyun }; 2631*4882a593Smuzhiyun 2632*4882a593Smuzhiyun #define FW_PORT_CAP_SPEED_S 0 2633*4882a593Smuzhiyun #define FW_PORT_CAP_SPEED_M 0x3f 2634*4882a593Smuzhiyun #define FW_PORT_CAP_SPEED_V(x) ((x) << FW_PORT_CAP_SPEED_S) 2635*4882a593Smuzhiyun #define FW_PORT_CAP_SPEED_G(x) \ 2636*4882a593Smuzhiyun (((x) >> FW_PORT_CAP_SPEED_S) & FW_PORT_CAP_SPEED_M) 2637*4882a593Smuzhiyun 2638*4882a593Smuzhiyun enum fw_port_mdi { 2639*4882a593Smuzhiyun FW_PORT_CAP_MDI_UNCHANGED, 2640*4882a593Smuzhiyun FW_PORT_CAP_MDI_AUTO, 2641*4882a593Smuzhiyun FW_PORT_CAP_MDI_F_STRAIGHT, 2642*4882a593Smuzhiyun FW_PORT_CAP_MDI_F_CROSSOVER 2643*4882a593Smuzhiyun }; 2644*4882a593Smuzhiyun 2645*4882a593Smuzhiyun #define FW_PORT_CAP_MDI_S 9 2646*4882a593Smuzhiyun #define FW_PORT_CAP_MDI_V(x) ((x) << FW_PORT_CAP_MDI_S) 2647*4882a593Smuzhiyun 2648*4882a593Smuzhiyun /* new 32-bit port capabilities bitmap (fw_port_cap32_t) */ 2649*4882a593Smuzhiyun #define FW_PORT_CAP32_SPEED_100M 0x00000001UL 2650*4882a593Smuzhiyun #define FW_PORT_CAP32_SPEED_1G 0x00000002UL 2651*4882a593Smuzhiyun #define FW_PORT_CAP32_SPEED_10G 0x00000004UL 2652*4882a593Smuzhiyun #define FW_PORT_CAP32_SPEED_25G 0x00000008UL 2653*4882a593Smuzhiyun #define FW_PORT_CAP32_SPEED_40G 0x00000010UL 2654*4882a593Smuzhiyun #define FW_PORT_CAP32_SPEED_50G 0x00000020UL 2655*4882a593Smuzhiyun #define FW_PORT_CAP32_SPEED_100G 0x00000040UL 2656*4882a593Smuzhiyun #define FW_PORT_CAP32_SPEED_200G 0x00000080UL 2657*4882a593Smuzhiyun #define FW_PORT_CAP32_SPEED_400G 0x00000100UL 2658*4882a593Smuzhiyun #define FW_PORT_CAP32_SPEED_RESERVED1 0x00000200UL 2659*4882a593Smuzhiyun #define FW_PORT_CAP32_SPEED_RESERVED2 0x00000400UL 2660*4882a593Smuzhiyun #define FW_PORT_CAP32_SPEED_RESERVED3 0x00000800UL 2661*4882a593Smuzhiyun #define FW_PORT_CAP32_RESERVED1 0x0000f000UL 2662*4882a593Smuzhiyun #define FW_PORT_CAP32_FC_RX 0x00010000UL 2663*4882a593Smuzhiyun #define FW_PORT_CAP32_FC_TX 0x00020000UL 2664*4882a593Smuzhiyun #define FW_PORT_CAP32_802_3_PAUSE 0x00040000UL 2665*4882a593Smuzhiyun #define FW_PORT_CAP32_802_3_ASM_DIR 0x00080000UL 2666*4882a593Smuzhiyun #define FW_PORT_CAP32_ANEG 0x00100000UL 2667*4882a593Smuzhiyun #define FW_PORT_CAP32_MDIAUTO 0x00200000UL 2668*4882a593Smuzhiyun #define FW_PORT_CAP32_MDISTRAIGHT 0x00400000UL 2669*4882a593Smuzhiyun #define FW_PORT_CAP32_FEC_RS 0x00800000UL 2670*4882a593Smuzhiyun #define FW_PORT_CAP32_FEC_BASER_RS 0x01000000UL 2671*4882a593Smuzhiyun #define FW_PORT_CAP32_FEC_RESERVED1 0x02000000UL 2672*4882a593Smuzhiyun #define FW_PORT_CAP32_FEC_RESERVED2 0x04000000UL 2673*4882a593Smuzhiyun #define FW_PORT_CAP32_FEC_RESERVED3 0x08000000UL 2674*4882a593Smuzhiyun #define FW_PORT_CAP32_FORCE_PAUSE 0x10000000UL 2675*4882a593Smuzhiyun #define FW_PORT_CAP32_RESERVED2 0xe0000000UL 2676*4882a593Smuzhiyun 2677*4882a593Smuzhiyun #define FW_PORT_CAP32_SPEED_S 0 2678*4882a593Smuzhiyun #define FW_PORT_CAP32_SPEED_M 0xfff 2679*4882a593Smuzhiyun #define FW_PORT_CAP32_SPEED_V(x) ((x) << FW_PORT_CAP32_SPEED_S) 2680*4882a593Smuzhiyun #define FW_PORT_CAP32_SPEED_G(x) \ 2681*4882a593Smuzhiyun (((x) >> FW_PORT_CAP32_SPEED_S) & FW_PORT_CAP32_SPEED_M) 2682*4882a593Smuzhiyun 2683*4882a593Smuzhiyun #define FW_PORT_CAP32_FC_S 16 2684*4882a593Smuzhiyun #define FW_PORT_CAP32_FC_M 0x3 2685*4882a593Smuzhiyun #define FW_PORT_CAP32_FC_V(x) ((x) << FW_PORT_CAP32_FC_S) 2686*4882a593Smuzhiyun #define FW_PORT_CAP32_FC_G(x) \ 2687*4882a593Smuzhiyun (((x) >> FW_PORT_CAP32_FC_S) & FW_PORT_CAP32_FC_M) 2688*4882a593Smuzhiyun 2689*4882a593Smuzhiyun #define FW_PORT_CAP32_802_3_S 18 2690*4882a593Smuzhiyun #define FW_PORT_CAP32_802_3_M 0x3 2691*4882a593Smuzhiyun #define FW_PORT_CAP32_802_3_V(x) ((x) << FW_PORT_CAP32_802_3_S) 2692*4882a593Smuzhiyun #define FW_PORT_CAP32_802_3_G(x) \ 2693*4882a593Smuzhiyun (((x) >> FW_PORT_CAP32_802_3_S) & FW_PORT_CAP32_802_3_M) 2694*4882a593Smuzhiyun 2695*4882a593Smuzhiyun #define FW_PORT_CAP32_ANEG_S 20 2696*4882a593Smuzhiyun #define FW_PORT_CAP32_ANEG_M 0x1 2697*4882a593Smuzhiyun #define FW_PORT_CAP32_ANEG_V(x) ((x) << FW_PORT_CAP32_ANEG_S) 2698*4882a593Smuzhiyun #define FW_PORT_CAP32_ANEG_G(x) \ 2699*4882a593Smuzhiyun (((x) >> FW_PORT_CAP32_ANEG_S) & FW_PORT_CAP32_ANEG_M) 2700*4882a593Smuzhiyun 2701*4882a593Smuzhiyun enum fw_port_mdi32 { 2702*4882a593Smuzhiyun FW_PORT_CAP32_MDI_UNCHANGED, 2703*4882a593Smuzhiyun FW_PORT_CAP32_MDI_AUTO, 2704*4882a593Smuzhiyun FW_PORT_CAP32_MDI_F_STRAIGHT, 2705*4882a593Smuzhiyun FW_PORT_CAP32_MDI_F_CROSSOVER 2706*4882a593Smuzhiyun }; 2707*4882a593Smuzhiyun 2708*4882a593Smuzhiyun #define FW_PORT_CAP32_MDI_S 21 2709*4882a593Smuzhiyun #define FW_PORT_CAP32_MDI_M 3 2710*4882a593Smuzhiyun #define FW_PORT_CAP32_MDI_V(x) ((x) << FW_PORT_CAP32_MDI_S) 2711*4882a593Smuzhiyun #define FW_PORT_CAP32_MDI_G(x) \ 2712*4882a593Smuzhiyun (((x) >> FW_PORT_CAP32_MDI_S) & FW_PORT_CAP32_MDI_M) 2713*4882a593Smuzhiyun 2714*4882a593Smuzhiyun #define FW_PORT_CAP32_FEC_S 23 2715*4882a593Smuzhiyun #define FW_PORT_CAP32_FEC_M 0x1f 2716*4882a593Smuzhiyun #define FW_PORT_CAP32_FEC_V(x) ((x) << FW_PORT_CAP32_FEC_S) 2717*4882a593Smuzhiyun #define FW_PORT_CAP32_FEC_G(x) \ 2718*4882a593Smuzhiyun (((x) >> FW_PORT_CAP32_FEC_S) & FW_PORT_CAP32_FEC_M) 2719*4882a593Smuzhiyun 2720*4882a593Smuzhiyun /* macros to isolate various 32-bit Port Capabilities sub-fields */ 2721*4882a593Smuzhiyun #define CAP32_SPEED(__cap32) \ 2722*4882a593Smuzhiyun (FW_PORT_CAP32_SPEED_V(FW_PORT_CAP32_SPEED_M) & __cap32) 2723*4882a593Smuzhiyun 2724*4882a593Smuzhiyun #define CAP32_FEC(__cap32) \ 2725*4882a593Smuzhiyun (FW_PORT_CAP32_FEC_V(FW_PORT_CAP32_FEC_M) & __cap32) 2726*4882a593Smuzhiyun 2727*4882a593Smuzhiyun enum fw_port_action { 2728*4882a593Smuzhiyun FW_PORT_ACTION_L1_CFG = 0x0001, 2729*4882a593Smuzhiyun FW_PORT_ACTION_L2_CFG = 0x0002, 2730*4882a593Smuzhiyun FW_PORT_ACTION_GET_PORT_INFO = 0x0003, 2731*4882a593Smuzhiyun FW_PORT_ACTION_L2_PPP_CFG = 0x0004, 2732*4882a593Smuzhiyun FW_PORT_ACTION_L2_DCB_CFG = 0x0005, 2733*4882a593Smuzhiyun FW_PORT_ACTION_DCB_READ_TRANS = 0x0006, 2734*4882a593Smuzhiyun FW_PORT_ACTION_DCB_READ_RECV = 0x0007, 2735*4882a593Smuzhiyun FW_PORT_ACTION_DCB_READ_DET = 0x0008, 2736*4882a593Smuzhiyun FW_PORT_ACTION_L1_CFG32 = 0x0009, 2737*4882a593Smuzhiyun FW_PORT_ACTION_GET_PORT_INFO32 = 0x000a, 2738*4882a593Smuzhiyun FW_PORT_ACTION_LOW_PWR_TO_NORMAL = 0x0010, 2739*4882a593Smuzhiyun FW_PORT_ACTION_L1_LOW_PWR_EN = 0x0011, 2740*4882a593Smuzhiyun FW_PORT_ACTION_L2_WOL_MODE_EN = 0x0012, 2741*4882a593Smuzhiyun FW_PORT_ACTION_LPBK_TO_NORMAL = 0x0020, 2742*4882a593Smuzhiyun FW_PORT_ACTION_L1_LPBK = 0x0021, 2743*4882a593Smuzhiyun FW_PORT_ACTION_L1_PMA_LPBK = 0x0022, 2744*4882a593Smuzhiyun FW_PORT_ACTION_L1_PCS_LPBK = 0x0023, 2745*4882a593Smuzhiyun FW_PORT_ACTION_L1_PHYXS_CSIDE_LPBK = 0x0024, 2746*4882a593Smuzhiyun FW_PORT_ACTION_L1_PHYXS_ESIDE_LPBK = 0x0025, 2747*4882a593Smuzhiyun FW_PORT_ACTION_PHY_RESET = 0x0040, 2748*4882a593Smuzhiyun FW_PORT_ACTION_PMA_RESET = 0x0041, 2749*4882a593Smuzhiyun FW_PORT_ACTION_PCS_RESET = 0x0042, 2750*4882a593Smuzhiyun FW_PORT_ACTION_PHYXS_RESET = 0x0043, 2751*4882a593Smuzhiyun FW_PORT_ACTION_DTEXS_REEST = 0x0044, 2752*4882a593Smuzhiyun FW_PORT_ACTION_AN_RESET = 0x0045 2753*4882a593Smuzhiyun }; 2754*4882a593Smuzhiyun 2755*4882a593Smuzhiyun enum fw_port_l2cfg_ctlbf { 2756*4882a593Smuzhiyun FW_PORT_L2_CTLBF_OVLAN0 = 0x01, 2757*4882a593Smuzhiyun FW_PORT_L2_CTLBF_OVLAN1 = 0x02, 2758*4882a593Smuzhiyun FW_PORT_L2_CTLBF_OVLAN2 = 0x04, 2759*4882a593Smuzhiyun FW_PORT_L2_CTLBF_OVLAN3 = 0x08, 2760*4882a593Smuzhiyun FW_PORT_L2_CTLBF_IVLAN = 0x10, 2761*4882a593Smuzhiyun FW_PORT_L2_CTLBF_TXIPG = 0x20 2762*4882a593Smuzhiyun }; 2763*4882a593Smuzhiyun 2764*4882a593Smuzhiyun enum fw_port_dcb_versions { 2765*4882a593Smuzhiyun FW_PORT_DCB_VER_UNKNOWN, 2766*4882a593Smuzhiyun FW_PORT_DCB_VER_CEE1D0, 2767*4882a593Smuzhiyun FW_PORT_DCB_VER_CEE1D01, 2768*4882a593Smuzhiyun FW_PORT_DCB_VER_IEEE, 2769*4882a593Smuzhiyun FW_PORT_DCB_VER_AUTO = 7 2770*4882a593Smuzhiyun }; 2771*4882a593Smuzhiyun 2772*4882a593Smuzhiyun enum fw_port_dcb_cfg { 2773*4882a593Smuzhiyun FW_PORT_DCB_CFG_PG = 0x01, 2774*4882a593Smuzhiyun FW_PORT_DCB_CFG_PFC = 0x02, 2775*4882a593Smuzhiyun FW_PORT_DCB_CFG_APPL = 0x04 2776*4882a593Smuzhiyun }; 2777*4882a593Smuzhiyun 2778*4882a593Smuzhiyun enum fw_port_dcb_cfg_rc { 2779*4882a593Smuzhiyun FW_PORT_DCB_CFG_SUCCESS = 0x0, 2780*4882a593Smuzhiyun FW_PORT_DCB_CFG_ERROR = 0x1 2781*4882a593Smuzhiyun }; 2782*4882a593Smuzhiyun 2783*4882a593Smuzhiyun enum fw_port_dcb_type { 2784*4882a593Smuzhiyun FW_PORT_DCB_TYPE_PGID = 0x00, 2785*4882a593Smuzhiyun FW_PORT_DCB_TYPE_PGRATE = 0x01, 2786*4882a593Smuzhiyun FW_PORT_DCB_TYPE_PRIORATE = 0x02, 2787*4882a593Smuzhiyun FW_PORT_DCB_TYPE_PFC = 0x03, 2788*4882a593Smuzhiyun FW_PORT_DCB_TYPE_APP_ID = 0x04, 2789*4882a593Smuzhiyun FW_PORT_DCB_TYPE_CONTROL = 0x05, 2790*4882a593Smuzhiyun }; 2791*4882a593Smuzhiyun 2792*4882a593Smuzhiyun enum fw_port_dcb_feature_state { 2793*4882a593Smuzhiyun FW_PORT_DCB_FEATURE_STATE_PENDING = 0x0, 2794*4882a593Smuzhiyun FW_PORT_DCB_FEATURE_STATE_SUCCESS = 0x1, 2795*4882a593Smuzhiyun FW_PORT_DCB_FEATURE_STATE_ERROR = 0x2, 2796*4882a593Smuzhiyun FW_PORT_DCB_FEATURE_STATE_TIMEOUT = 0x3, 2797*4882a593Smuzhiyun }; 2798*4882a593Smuzhiyun 2799*4882a593Smuzhiyun struct fw_port_cmd { 2800*4882a593Smuzhiyun __be32 op_to_portid; 2801*4882a593Smuzhiyun __be32 action_to_len16; 2802*4882a593Smuzhiyun union fw_port { 2803*4882a593Smuzhiyun struct fw_port_l1cfg { 2804*4882a593Smuzhiyun __be32 rcap; 2805*4882a593Smuzhiyun __be32 r; 2806*4882a593Smuzhiyun } l1cfg; 2807*4882a593Smuzhiyun struct fw_port_l2cfg { 2808*4882a593Smuzhiyun __u8 ctlbf; 2809*4882a593Smuzhiyun __u8 ovlan3_to_ivlan0; 2810*4882a593Smuzhiyun __be16 ivlantype; 2811*4882a593Smuzhiyun __be16 txipg_force_pinfo; 2812*4882a593Smuzhiyun __be16 mtu; 2813*4882a593Smuzhiyun __be16 ovlan0mask; 2814*4882a593Smuzhiyun __be16 ovlan0type; 2815*4882a593Smuzhiyun __be16 ovlan1mask; 2816*4882a593Smuzhiyun __be16 ovlan1type; 2817*4882a593Smuzhiyun __be16 ovlan2mask; 2818*4882a593Smuzhiyun __be16 ovlan2type; 2819*4882a593Smuzhiyun __be16 ovlan3mask; 2820*4882a593Smuzhiyun __be16 ovlan3type; 2821*4882a593Smuzhiyun } l2cfg; 2822*4882a593Smuzhiyun struct fw_port_info { 2823*4882a593Smuzhiyun __be32 lstatus_to_modtype; 2824*4882a593Smuzhiyun __be16 pcap; 2825*4882a593Smuzhiyun __be16 acap; 2826*4882a593Smuzhiyun __be16 mtu; 2827*4882a593Smuzhiyun __u8 cbllen; 2828*4882a593Smuzhiyun __u8 auxlinfo; 2829*4882a593Smuzhiyun __u8 dcbxdis_pkd; 2830*4882a593Smuzhiyun __u8 r8_lo; 2831*4882a593Smuzhiyun __be16 lpacap; 2832*4882a593Smuzhiyun __be64 r9; 2833*4882a593Smuzhiyun } info; 2834*4882a593Smuzhiyun struct fw_port_diags { 2835*4882a593Smuzhiyun __u8 diagop; 2836*4882a593Smuzhiyun __u8 r[3]; 2837*4882a593Smuzhiyun __be32 diagval; 2838*4882a593Smuzhiyun } diags; 2839*4882a593Smuzhiyun union fw_port_dcb { 2840*4882a593Smuzhiyun struct fw_port_dcb_pgid { 2841*4882a593Smuzhiyun __u8 type; 2842*4882a593Smuzhiyun __u8 apply_pkd; 2843*4882a593Smuzhiyun __u8 r10_lo[2]; 2844*4882a593Smuzhiyun __be32 pgid; 2845*4882a593Smuzhiyun __be64 r11; 2846*4882a593Smuzhiyun } pgid; 2847*4882a593Smuzhiyun struct fw_port_dcb_pgrate { 2848*4882a593Smuzhiyun __u8 type; 2849*4882a593Smuzhiyun __u8 apply_pkd; 2850*4882a593Smuzhiyun __u8 r10_lo[5]; 2851*4882a593Smuzhiyun __u8 num_tcs_supported; 2852*4882a593Smuzhiyun __u8 pgrate[8]; 2853*4882a593Smuzhiyun __u8 tsa[8]; 2854*4882a593Smuzhiyun } pgrate; 2855*4882a593Smuzhiyun struct fw_port_dcb_priorate { 2856*4882a593Smuzhiyun __u8 type; 2857*4882a593Smuzhiyun __u8 apply_pkd; 2858*4882a593Smuzhiyun __u8 r10_lo[6]; 2859*4882a593Smuzhiyun __u8 strict_priorate[8]; 2860*4882a593Smuzhiyun } priorate; 2861*4882a593Smuzhiyun struct fw_port_dcb_pfc { 2862*4882a593Smuzhiyun __u8 type; 2863*4882a593Smuzhiyun __u8 pfcen; 2864*4882a593Smuzhiyun __u8 r10[5]; 2865*4882a593Smuzhiyun __u8 max_pfc_tcs; 2866*4882a593Smuzhiyun __be64 r11; 2867*4882a593Smuzhiyun } pfc; 2868*4882a593Smuzhiyun struct fw_port_app_priority { 2869*4882a593Smuzhiyun __u8 type; 2870*4882a593Smuzhiyun __u8 r10[2]; 2871*4882a593Smuzhiyun __u8 idx; 2872*4882a593Smuzhiyun __u8 user_prio_map; 2873*4882a593Smuzhiyun __u8 sel_field; 2874*4882a593Smuzhiyun __be16 protocolid; 2875*4882a593Smuzhiyun __be64 r12; 2876*4882a593Smuzhiyun } app_priority; 2877*4882a593Smuzhiyun struct fw_port_dcb_control { 2878*4882a593Smuzhiyun __u8 type; 2879*4882a593Smuzhiyun __u8 all_syncd_pkd; 2880*4882a593Smuzhiyun __be16 dcb_version_to_app_state; 2881*4882a593Smuzhiyun __be32 r11; 2882*4882a593Smuzhiyun __be64 r12; 2883*4882a593Smuzhiyun } control; 2884*4882a593Smuzhiyun } dcb; 2885*4882a593Smuzhiyun struct fw_port_l1cfg32 { 2886*4882a593Smuzhiyun __be32 rcap32; 2887*4882a593Smuzhiyun __be32 r; 2888*4882a593Smuzhiyun } l1cfg32; 2889*4882a593Smuzhiyun struct fw_port_info32 { 2890*4882a593Smuzhiyun __be32 lstatus32_to_cbllen32; 2891*4882a593Smuzhiyun __be32 auxlinfo32_mtu32; 2892*4882a593Smuzhiyun __be32 linkattr32; 2893*4882a593Smuzhiyun __be32 pcaps32; 2894*4882a593Smuzhiyun __be32 acaps32; 2895*4882a593Smuzhiyun __be32 lpacaps32; 2896*4882a593Smuzhiyun } info32; 2897*4882a593Smuzhiyun } u; 2898*4882a593Smuzhiyun }; 2899*4882a593Smuzhiyun 2900*4882a593Smuzhiyun #define FW_PORT_CMD_READ_S 22 2901*4882a593Smuzhiyun #define FW_PORT_CMD_READ_V(x) ((x) << FW_PORT_CMD_READ_S) 2902*4882a593Smuzhiyun #define FW_PORT_CMD_READ_F FW_PORT_CMD_READ_V(1U) 2903*4882a593Smuzhiyun 2904*4882a593Smuzhiyun #define FW_PORT_CMD_PORTID_S 0 2905*4882a593Smuzhiyun #define FW_PORT_CMD_PORTID_M 0xf 2906*4882a593Smuzhiyun #define FW_PORT_CMD_PORTID_V(x) ((x) << FW_PORT_CMD_PORTID_S) 2907*4882a593Smuzhiyun #define FW_PORT_CMD_PORTID_G(x) \ 2908*4882a593Smuzhiyun (((x) >> FW_PORT_CMD_PORTID_S) & FW_PORT_CMD_PORTID_M) 2909*4882a593Smuzhiyun 2910*4882a593Smuzhiyun #define FW_PORT_CMD_ACTION_S 16 2911*4882a593Smuzhiyun #define FW_PORT_CMD_ACTION_M 0xffff 2912*4882a593Smuzhiyun #define FW_PORT_CMD_ACTION_V(x) ((x) << FW_PORT_CMD_ACTION_S) 2913*4882a593Smuzhiyun #define FW_PORT_CMD_ACTION_G(x) \ 2914*4882a593Smuzhiyun (((x) >> FW_PORT_CMD_ACTION_S) & FW_PORT_CMD_ACTION_M) 2915*4882a593Smuzhiyun 2916*4882a593Smuzhiyun #define FW_PORT_CMD_OVLAN3_S 7 2917*4882a593Smuzhiyun #define FW_PORT_CMD_OVLAN3_V(x) ((x) << FW_PORT_CMD_OVLAN3_S) 2918*4882a593Smuzhiyun 2919*4882a593Smuzhiyun #define FW_PORT_CMD_OVLAN2_S 6 2920*4882a593Smuzhiyun #define FW_PORT_CMD_OVLAN2_V(x) ((x) << FW_PORT_CMD_OVLAN2_S) 2921*4882a593Smuzhiyun 2922*4882a593Smuzhiyun #define FW_PORT_CMD_OVLAN1_S 5 2923*4882a593Smuzhiyun #define FW_PORT_CMD_OVLAN1_V(x) ((x) << FW_PORT_CMD_OVLAN1_S) 2924*4882a593Smuzhiyun 2925*4882a593Smuzhiyun #define FW_PORT_CMD_OVLAN0_S 4 2926*4882a593Smuzhiyun #define FW_PORT_CMD_OVLAN0_V(x) ((x) << FW_PORT_CMD_OVLAN0_S) 2927*4882a593Smuzhiyun 2928*4882a593Smuzhiyun #define FW_PORT_CMD_IVLAN0_S 3 2929*4882a593Smuzhiyun #define FW_PORT_CMD_IVLAN0_V(x) ((x) << FW_PORT_CMD_IVLAN0_S) 2930*4882a593Smuzhiyun 2931*4882a593Smuzhiyun #define FW_PORT_CMD_TXIPG_S 3 2932*4882a593Smuzhiyun #define FW_PORT_CMD_TXIPG_V(x) ((x) << FW_PORT_CMD_TXIPG_S) 2933*4882a593Smuzhiyun 2934*4882a593Smuzhiyun #define FW_PORT_CMD_LSTATUS_S 31 2935*4882a593Smuzhiyun #define FW_PORT_CMD_LSTATUS_M 0x1 2936*4882a593Smuzhiyun #define FW_PORT_CMD_LSTATUS_V(x) ((x) << FW_PORT_CMD_LSTATUS_S) 2937*4882a593Smuzhiyun #define FW_PORT_CMD_LSTATUS_G(x) \ 2938*4882a593Smuzhiyun (((x) >> FW_PORT_CMD_LSTATUS_S) & FW_PORT_CMD_LSTATUS_M) 2939*4882a593Smuzhiyun #define FW_PORT_CMD_LSTATUS_F FW_PORT_CMD_LSTATUS_V(1U) 2940*4882a593Smuzhiyun 2941*4882a593Smuzhiyun #define FW_PORT_CMD_LSPEED_S 24 2942*4882a593Smuzhiyun #define FW_PORT_CMD_LSPEED_M 0x3f 2943*4882a593Smuzhiyun #define FW_PORT_CMD_LSPEED_V(x) ((x) << FW_PORT_CMD_LSPEED_S) 2944*4882a593Smuzhiyun #define FW_PORT_CMD_LSPEED_G(x) \ 2945*4882a593Smuzhiyun (((x) >> FW_PORT_CMD_LSPEED_S) & FW_PORT_CMD_LSPEED_M) 2946*4882a593Smuzhiyun 2947*4882a593Smuzhiyun #define FW_PORT_CMD_TXPAUSE_S 23 2948*4882a593Smuzhiyun #define FW_PORT_CMD_TXPAUSE_V(x) ((x) << FW_PORT_CMD_TXPAUSE_S) 2949*4882a593Smuzhiyun #define FW_PORT_CMD_TXPAUSE_F FW_PORT_CMD_TXPAUSE_V(1U) 2950*4882a593Smuzhiyun 2951*4882a593Smuzhiyun #define FW_PORT_CMD_RXPAUSE_S 22 2952*4882a593Smuzhiyun #define FW_PORT_CMD_RXPAUSE_V(x) ((x) << FW_PORT_CMD_RXPAUSE_S) 2953*4882a593Smuzhiyun #define FW_PORT_CMD_RXPAUSE_F FW_PORT_CMD_RXPAUSE_V(1U) 2954*4882a593Smuzhiyun 2955*4882a593Smuzhiyun #define FW_PORT_CMD_MDIOCAP_S 21 2956*4882a593Smuzhiyun #define FW_PORT_CMD_MDIOCAP_V(x) ((x) << FW_PORT_CMD_MDIOCAP_S) 2957*4882a593Smuzhiyun #define FW_PORT_CMD_MDIOCAP_F FW_PORT_CMD_MDIOCAP_V(1U) 2958*4882a593Smuzhiyun 2959*4882a593Smuzhiyun #define FW_PORT_CMD_MDIOADDR_S 16 2960*4882a593Smuzhiyun #define FW_PORT_CMD_MDIOADDR_M 0x1f 2961*4882a593Smuzhiyun #define FW_PORT_CMD_MDIOADDR_G(x) \ 2962*4882a593Smuzhiyun (((x) >> FW_PORT_CMD_MDIOADDR_S) & FW_PORT_CMD_MDIOADDR_M) 2963*4882a593Smuzhiyun 2964*4882a593Smuzhiyun #define FW_PORT_CMD_LPTXPAUSE_S 15 2965*4882a593Smuzhiyun #define FW_PORT_CMD_LPTXPAUSE_V(x) ((x) << FW_PORT_CMD_LPTXPAUSE_S) 2966*4882a593Smuzhiyun #define FW_PORT_CMD_LPTXPAUSE_F FW_PORT_CMD_LPTXPAUSE_V(1U) 2967*4882a593Smuzhiyun 2968*4882a593Smuzhiyun #define FW_PORT_CMD_LPRXPAUSE_S 14 2969*4882a593Smuzhiyun #define FW_PORT_CMD_LPRXPAUSE_V(x) ((x) << FW_PORT_CMD_LPRXPAUSE_S) 2970*4882a593Smuzhiyun #define FW_PORT_CMD_LPRXPAUSE_F FW_PORT_CMD_LPRXPAUSE_V(1U) 2971*4882a593Smuzhiyun 2972*4882a593Smuzhiyun #define FW_PORT_CMD_PTYPE_S 8 2973*4882a593Smuzhiyun #define FW_PORT_CMD_PTYPE_M 0x1f 2974*4882a593Smuzhiyun #define FW_PORT_CMD_PTYPE_G(x) \ 2975*4882a593Smuzhiyun (((x) >> FW_PORT_CMD_PTYPE_S) & FW_PORT_CMD_PTYPE_M) 2976*4882a593Smuzhiyun 2977*4882a593Smuzhiyun #define FW_PORT_CMD_LINKDNRC_S 5 2978*4882a593Smuzhiyun #define FW_PORT_CMD_LINKDNRC_M 0x7 2979*4882a593Smuzhiyun #define FW_PORT_CMD_LINKDNRC_G(x) \ 2980*4882a593Smuzhiyun (((x) >> FW_PORT_CMD_LINKDNRC_S) & FW_PORT_CMD_LINKDNRC_M) 2981*4882a593Smuzhiyun 2982*4882a593Smuzhiyun #define FW_PORT_CMD_MODTYPE_S 0 2983*4882a593Smuzhiyun #define FW_PORT_CMD_MODTYPE_M 0x1f 2984*4882a593Smuzhiyun #define FW_PORT_CMD_MODTYPE_V(x) ((x) << FW_PORT_CMD_MODTYPE_S) 2985*4882a593Smuzhiyun #define FW_PORT_CMD_MODTYPE_G(x) \ 2986*4882a593Smuzhiyun (((x) >> FW_PORT_CMD_MODTYPE_S) & FW_PORT_CMD_MODTYPE_M) 2987*4882a593Smuzhiyun 2988*4882a593Smuzhiyun #define FW_PORT_CMD_DCBXDIS_S 7 2989*4882a593Smuzhiyun #define FW_PORT_CMD_DCBXDIS_V(x) ((x) << FW_PORT_CMD_DCBXDIS_S) 2990*4882a593Smuzhiyun #define FW_PORT_CMD_DCBXDIS_F FW_PORT_CMD_DCBXDIS_V(1U) 2991*4882a593Smuzhiyun 2992*4882a593Smuzhiyun #define FW_PORT_CMD_APPLY_S 7 2993*4882a593Smuzhiyun #define FW_PORT_CMD_APPLY_V(x) ((x) << FW_PORT_CMD_APPLY_S) 2994*4882a593Smuzhiyun #define FW_PORT_CMD_APPLY_F FW_PORT_CMD_APPLY_V(1U) 2995*4882a593Smuzhiyun 2996*4882a593Smuzhiyun #define FW_PORT_CMD_ALL_SYNCD_S 7 2997*4882a593Smuzhiyun #define FW_PORT_CMD_ALL_SYNCD_V(x) ((x) << FW_PORT_CMD_ALL_SYNCD_S) 2998*4882a593Smuzhiyun #define FW_PORT_CMD_ALL_SYNCD_F FW_PORT_CMD_ALL_SYNCD_V(1U) 2999*4882a593Smuzhiyun 3000*4882a593Smuzhiyun #define FW_PORT_CMD_DCB_VERSION_S 12 3001*4882a593Smuzhiyun #define FW_PORT_CMD_DCB_VERSION_M 0x7 3002*4882a593Smuzhiyun #define FW_PORT_CMD_DCB_VERSION_G(x) \ 3003*4882a593Smuzhiyun (((x) >> FW_PORT_CMD_DCB_VERSION_S) & FW_PORT_CMD_DCB_VERSION_M) 3004*4882a593Smuzhiyun 3005*4882a593Smuzhiyun #define FW_PORT_CMD_LSTATUS32_S 31 3006*4882a593Smuzhiyun #define FW_PORT_CMD_LSTATUS32_M 0x1 3007*4882a593Smuzhiyun #define FW_PORT_CMD_LSTATUS32_V(x) ((x) << FW_PORT_CMD_LSTATUS32_S) 3008*4882a593Smuzhiyun #define FW_PORT_CMD_LSTATUS32_G(x) \ 3009*4882a593Smuzhiyun (((x) >> FW_PORT_CMD_LSTATUS32_S) & FW_PORT_CMD_LSTATUS32_M) 3010*4882a593Smuzhiyun #define FW_PORT_CMD_LSTATUS32_F FW_PORT_CMD_LSTATUS32_V(1U) 3011*4882a593Smuzhiyun 3012*4882a593Smuzhiyun #define FW_PORT_CMD_LINKDNRC32_S 28 3013*4882a593Smuzhiyun #define FW_PORT_CMD_LINKDNRC32_M 0x7 3014*4882a593Smuzhiyun #define FW_PORT_CMD_LINKDNRC32_V(x) ((x) << FW_PORT_CMD_LINKDNRC32_S) 3015*4882a593Smuzhiyun #define FW_PORT_CMD_LINKDNRC32_G(x) \ 3016*4882a593Smuzhiyun (((x) >> FW_PORT_CMD_LINKDNRC32_S) & FW_PORT_CMD_LINKDNRC32_M) 3017*4882a593Smuzhiyun 3018*4882a593Smuzhiyun #define FW_PORT_CMD_DCBXDIS32_S 27 3019*4882a593Smuzhiyun #define FW_PORT_CMD_DCBXDIS32_M 0x1 3020*4882a593Smuzhiyun #define FW_PORT_CMD_DCBXDIS32_V(x) ((x) << FW_PORT_CMD_DCBXDIS32_S) 3021*4882a593Smuzhiyun #define FW_PORT_CMD_DCBXDIS32_G(x) \ 3022*4882a593Smuzhiyun (((x) >> FW_PORT_CMD_DCBXDIS32_S) & FW_PORT_CMD_DCBXDIS32_M) 3023*4882a593Smuzhiyun #define FW_PORT_CMD_DCBXDIS32_F FW_PORT_CMD_DCBXDIS32_V(1U) 3024*4882a593Smuzhiyun 3025*4882a593Smuzhiyun #define FW_PORT_CMD_MDIOCAP32_S 26 3026*4882a593Smuzhiyun #define FW_PORT_CMD_MDIOCAP32_M 0x1 3027*4882a593Smuzhiyun #define FW_PORT_CMD_MDIOCAP32_V(x) ((x) << FW_PORT_CMD_MDIOCAP32_S) 3028*4882a593Smuzhiyun #define FW_PORT_CMD_MDIOCAP32_G(x) \ 3029*4882a593Smuzhiyun (((x) >> FW_PORT_CMD_MDIOCAP32_S) & FW_PORT_CMD_MDIOCAP32_M) 3030*4882a593Smuzhiyun #define FW_PORT_CMD_MDIOCAP32_F FW_PORT_CMD_MDIOCAP32_V(1U) 3031*4882a593Smuzhiyun 3032*4882a593Smuzhiyun #define FW_PORT_CMD_MDIOADDR32_S 21 3033*4882a593Smuzhiyun #define FW_PORT_CMD_MDIOADDR32_M 0x1f 3034*4882a593Smuzhiyun #define FW_PORT_CMD_MDIOADDR32_V(x) ((x) << FW_PORT_CMD_MDIOADDR32_S) 3035*4882a593Smuzhiyun #define FW_PORT_CMD_MDIOADDR32_G(x) \ 3036*4882a593Smuzhiyun (((x) >> FW_PORT_CMD_MDIOADDR32_S) & FW_PORT_CMD_MDIOADDR32_M) 3037*4882a593Smuzhiyun 3038*4882a593Smuzhiyun #define FW_PORT_CMD_PORTTYPE32_S 13 3039*4882a593Smuzhiyun #define FW_PORT_CMD_PORTTYPE32_M 0xff 3040*4882a593Smuzhiyun #define FW_PORT_CMD_PORTTYPE32_V(x) ((x) << FW_PORT_CMD_PORTTYPE32_S) 3041*4882a593Smuzhiyun #define FW_PORT_CMD_PORTTYPE32_G(x) \ 3042*4882a593Smuzhiyun (((x) >> FW_PORT_CMD_PORTTYPE32_S) & FW_PORT_CMD_PORTTYPE32_M) 3043*4882a593Smuzhiyun 3044*4882a593Smuzhiyun #define FW_PORT_CMD_MODTYPE32_S 8 3045*4882a593Smuzhiyun #define FW_PORT_CMD_MODTYPE32_M 0x1f 3046*4882a593Smuzhiyun #define FW_PORT_CMD_MODTYPE32_V(x) ((x) << FW_PORT_CMD_MODTYPE32_S) 3047*4882a593Smuzhiyun #define FW_PORT_CMD_MODTYPE32_G(x) \ 3048*4882a593Smuzhiyun (((x) >> FW_PORT_CMD_MODTYPE32_S) & FW_PORT_CMD_MODTYPE32_M) 3049*4882a593Smuzhiyun 3050*4882a593Smuzhiyun #define FW_PORT_CMD_CBLLEN32_S 0 3051*4882a593Smuzhiyun #define FW_PORT_CMD_CBLLEN32_M 0xff 3052*4882a593Smuzhiyun #define FW_PORT_CMD_CBLLEN32_V(x) ((x) << FW_PORT_CMD_CBLLEN32_S) 3053*4882a593Smuzhiyun #define FW_PORT_CMD_CBLLEN32_G(x) \ 3054*4882a593Smuzhiyun (((x) >> FW_PORT_CMD_CBLLEN32_S) & FW_PORT_CMD_CBLLEN32_M) 3055*4882a593Smuzhiyun 3056*4882a593Smuzhiyun #define FW_PORT_CMD_AUXLINFO32_S 24 3057*4882a593Smuzhiyun #define FW_PORT_CMD_AUXLINFO32_M 0xff 3058*4882a593Smuzhiyun #define FW_PORT_CMD_AUXLINFO32_V(x) ((x) << FW_PORT_CMD_AUXLINFO32_S) 3059*4882a593Smuzhiyun #define FW_PORT_CMD_AUXLINFO32_G(x) \ 3060*4882a593Smuzhiyun (((x) >> FW_PORT_CMD_AUXLINFO32_S) & FW_PORT_CMD_AUXLINFO32_M) 3061*4882a593Smuzhiyun 3062*4882a593Smuzhiyun #define FW_PORT_AUXLINFO32_KX4_S 2 3063*4882a593Smuzhiyun #define FW_PORT_AUXLINFO32_KX4_M 0x1 3064*4882a593Smuzhiyun #define FW_PORT_AUXLINFO32_KX4_V(x) \ 3065*4882a593Smuzhiyun ((x) << FW_PORT_AUXLINFO32_KX4_S) 3066*4882a593Smuzhiyun #define FW_PORT_AUXLINFO32_KX4_G(x) \ 3067*4882a593Smuzhiyun (((x) >> FW_PORT_AUXLINFO32_KX4_S) & FW_PORT_AUXLINFO32_KX4_M) 3068*4882a593Smuzhiyun #define FW_PORT_AUXLINFO32_KX4_F FW_PORT_AUXLINFO32_KX4_V(1U) 3069*4882a593Smuzhiyun 3070*4882a593Smuzhiyun #define FW_PORT_AUXLINFO32_KR_S 1 3071*4882a593Smuzhiyun #define FW_PORT_AUXLINFO32_KR_M 0x1 3072*4882a593Smuzhiyun #define FW_PORT_AUXLINFO32_KR_V(x) \ 3073*4882a593Smuzhiyun ((x) << FW_PORT_AUXLINFO32_KR_S) 3074*4882a593Smuzhiyun #define FW_PORT_AUXLINFO32_KR_G(x) \ 3075*4882a593Smuzhiyun (((x) >> FW_PORT_AUXLINFO32_KR_S) & FW_PORT_AUXLINFO32_KR_M) 3076*4882a593Smuzhiyun #define FW_PORT_AUXLINFO32_KR_F FW_PORT_AUXLINFO32_KR_V(1U) 3077*4882a593Smuzhiyun 3078*4882a593Smuzhiyun #define FW_PORT_CMD_MTU32_S 0 3079*4882a593Smuzhiyun #define FW_PORT_CMD_MTU32_M 0xffff 3080*4882a593Smuzhiyun #define FW_PORT_CMD_MTU32_V(x) ((x) << FW_PORT_CMD_MTU32_S) 3081*4882a593Smuzhiyun #define FW_PORT_CMD_MTU32_G(x) \ 3082*4882a593Smuzhiyun (((x) >> FW_PORT_CMD_MTU32_S) & FW_PORT_CMD_MTU32_M) 3083*4882a593Smuzhiyun 3084*4882a593Smuzhiyun enum fw_port_type { 3085*4882a593Smuzhiyun FW_PORT_TYPE_FIBER_XFI, 3086*4882a593Smuzhiyun FW_PORT_TYPE_FIBER_XAUI, 3087*4882a593Smuzhiyun FW_PORT_TYPE_BT_SGMII, 3088*4882a593Smuzhiyun FW_PORT_TYPE_BT_XFI, 3089*4882a593Smuzhiyun FW_PORT_TYPE_BT_XAUI, 3090*4882a593Smuzhiyun FW_PORT_TYPE_KX4, 3091*4882a593Smuzhiyun FW_PORT_TYPE_CX4, 3092*4882a593Smuzhiyun FW_PORT_TYPE_KX, 3093*4882a593Smuzhiyun FW_PORT_TYPE_KR, 3094*4882a593Smuzhiyun FW_PORT_TYPE_SFP, 3095*4882a593Smuzhiyun FW_PORT_TYPE_BP_AP, 3096*4882a593Smuzhiyun FW_PORT_TYPE_BP4_AP, 3097*4882a593Smuzhiyun FW_PORT_TYPE_QSFP_10G, 3098*4882a593Smuzhiyun FW_PORT_TYPE_QSA, 3099*4882a593Smuzhiyun FW_PORT_TYPE_QSFP, 3100*4882a593Smuzhiyun FW_PORT_TYPE_BP40_BA, 3101*4882a593Smuzhiyun FW_PORT_TYPE_KR4_100G, 3102*4882a593Smuzhiyun FW_PORT_TYPE_CR4_QSFP, 3103*4882a593Smuzhiyun FW_PORT_TYPE_CR_QSFP, 3104*4882a593Smuzhiyun FW_PORT_TYPE_CR2_QSFP, 3105*4882a593Smuzhiyun FW_PORT_TYPE_SFP28, 3106*4882a593Smuzhiyun FW_PORT_TYPE_KR_SFP28, 3107*4882a593Smuzhiyun FW_PORT_TYPE_KR_XLAUI, 3108*4882a593Smuzhiyun 3109*4882a593Smuzhiyun FW_PORT_TYPE_NONE = FW_PORT_CMD_PTYPE_M 3110*4882a593Smuzhiyun }; 3111*4882a593Smuzhiyun 3112*4882a593Smuzhiyun enum fw_port_module_type { 3113*4882a593Smuzhiyun FW_PORT_MOD_TYPE_NA, 3114*4882a593Smuzhiyun FW_PORT_MOD_TYPE_LR, 3115*4882a593Smuzhiyun FW_PORT_MOD_TYPE_SR, 3116*4882a593Smuzhiyun FW_PORT_MOD_TYPE_ER, 3117*4882a593Smuzhiyun FW_PORT_MOD_TYPE_TWINAX_PASSIVE, 3118*4882a593Smuzhiyun FW_PORT_MOD_TYPE_TWINAX_ACTIVE, 3119*4882a593Smuzhiyun FW_PORT_MOD_TYPE_LRM, 3120*4882a593Smuzhiyun FW_PORT_MOD_TYPE_ERROR = FW_PORT_CMD_MODTYPE_M - 3, 3121*4882a593Smuzhiyun FW_PORT_MOD_TYPE_UNKNOWN = FW_PORT_CMD_MODTYPE_M - 2, 3122*4882a593Smuzhiyun FW_PORT_MOD_TYPE_NOTSUPPORTED = FW_PORT_CMD_MODTYPE_M - 1, 3123*4882a593Smuzhiyun 3124*4882a593Smuzhiyun FW_PORT_MOD_TYPE_NONE = FW_PORT_CMD_MODTYPE_M 3125*4882a593Smuzhiyun }; 3126*4882a593Smuzhiyun 3127*4882a593Smuzhiyun enum fw_port_mod_sub_type { 3128*4882a593Smuzhiyun FW_PORT_MOD_SUB_TYPE_NA, 3129*4882a593Smuzhiyun FW_PORT_MOD_SUB_TYPE_MV88E114X = 0x1, 3130*4882a593Smuzhiyun FW_PORT_MOD_SUB_TYPE_TN8022 = 0x2, 3131*4882a593Smuzhiyun FW_PORT_MOD_SUB_TYPE_AQ1202 = 0x3, 3132*4882a593Smuzhiyun FW_PORT_MOD_SUB_TYPE_88x3120 = 0x4, 3133*4882a593Smuzhiyun FW_PORT_MOD_SUB_TYPE_BCM84834 = 0x5, 3134*4882a593Smuzhiyun FW_PORT_MOD_SUB_TYPE_BT_VSC8634 = 0x8, 3135*4882a593Smuzhiyun 3136*4882a593Smuzhiyun /* The following will never been in the VPD. They are TWINAX cable 3137*4882a593Smuzhiyun * lengths decoded from SFP+ module i2c PROMs. These should 3138*4882a593Smuzhiyun * almost certainly go somewhere else ... 3139*4882a593Smuzhiyun */ 3140*4882a593Smuzhiyun FW_PORT_MOD_SUB_TYPE_TWINAX_1 = 0x9, 3141*4882a593Smuzhiyun FW_PORT_MOD_SUB_TYPE_TWINAX_3 = 0xA, 3142*4882a593Smuzhiyun FW_PORT_MOD_SUB_TYPE_TWINAX_5 = 0xB, 3143*4882a593Smuzhiyun FW_PORT_MOD_SUB_TYPE_TWINAX_7 = 0xC, 3144*4882a593Smuzhiyun }; 3145*4882a593Smuzhiyun 3146*4882a593Smuzhiyun enum fw_port_stats_tx_index { 3147*4882a593Smuzhiyun FW_STAT_TX_PORT_BYTES_IX = 0, 3148*4882a593Smuzhiyun FW_STAT_TX_PORT_FRAMES_IX, 3149*4882a593Smuzhiyun FW_STAT_TX_PORT_BCAST_IX, 3150*4882a593Smuzhiyun FW_STAT_TX_PORT_MCAST_IX, 3151*4882a593Smuzhiyun FW_STAT_TX_PORT_UCAST_IX, 3152*4882a593Smuzhiyun FW_STAT_TX_PORT_ERROR_IX, 3153*4882a593Smuzhiyun FW_STAT_TX_PORT_64B_IX, 3154*4882a593Smuzhiyun FW_STAT_TX_PORT_65B_127B_IX, 3155*4882a593Smuzhiyun FW_STAT_TX_PORT_128B_255B_IX, 3156*4882a593Smuzhiyun FW_STAT_TX_PORT_256B_511B_IX, 3157*4882a593Smuzhiyun FW_STAT_TX_PORT_512B_1023B_IX, 3158*4882a593Smuzhiyun FW_STAT_TX_PORT_1024B_1518B_IX, 3159*4882a593Smuzhiyun FW_STAT_TX_PORT_1519B_MAX_IX, 3160*4882a593Smuzhiyun FW_STAT_TX_PORT_DROP_IX, 3161*4882a593Smuzhiyun FW_STAT_TX_PORT_PAUSE_IX, 3162*4882a593Smuzhiyun FW_STAT_TX_PORT_PPP0_IX, 3163*4882a593Smuzhiyun FW_STAT_TX_PORT_PPP1_IX, 3164*4882a593Smuzhiyun FW_STAT_TX_PORT_PPP2_IX, 3165*4882a593Smuzhiyun FW_STAT_TX_PORT_PPP3_IX, 3166*4882a593Smuzhiyun FW_STAT_TX_PORT_PPP4_IX, 3167*4882a593Smuzhiyun FW_STAT_TX_PORT_PPP5_IX, 3168*4882a593Smuzhiyun FW_STAT_TX_PORT_PPP6_IX, 3169*4882a593Smuzhiyun FW_STAT_TX_PORT_PPP7_IX, 3170*4882a593Smuzhiyun FW_NUM_PORT_TX_STATS 3171*4882a593Smuzhiyun }; 3172*4882a593Smuzhiyun 3173*4882a593Smuzhiyun enum fw_port_stat_rx_index { 3174*4882a593Smuzhiyun FW_STAT_RX_PORT_BYTES_IX = 0, 3175*4882a593Smuzhiyun FW_STAT_RX_PORT_FRAMES_IX, 3176*4882a593Smuzhiyun FW_STAT_RX_PORT_BCAST_IX, 3177*4882a593Smuzhiyun FW_STAT_RX_PORT_MCAST_IX, 3178*4882a593Smuzhiyun FW_STAT_RX_PORT_UCAST_IX, 3179*4882a593Smuzhiyun FW_STAT_RX_PORT_MTU_ERROR_IX, 3180*4882a593Smuzhiyun FW_STAT_RX_PORT_MTU_CRC_ERROR_IX, 3181*4882a593Smuzhiyun FW_STAT_RX_PORT_CRC_ERROR_IX, 3182*4882a593Smuzhiyun FW_STAT_RX_PORT_LEN_ERROR_IX, 3183*4882a593Smuzhiyun FW_STAT_RX_PORT_SYM_ERROR_IX, 3184*4882a593Smuzhiyun FW_STAT_RX_PORT_64B_IX, 3185*4882a593Smuzhiyun FW_STAT_RX_PORT_65B_127B_IX, 3186*4882a593Smuzhiyun FW_STAT_RX_PORT_128B_255B_IX, 3187*4882a593Smuzhiyun FW_STAT_RX_PORT_256B_511B_IX, 3188*4882a593Smuzhiyun FW_STAT_RX_PORT_512B_1023B_IX, 3189*4882a593Smuzhiyun FW_STAT_RX_PORT_1024B_1518B_IX, 3190*4882a593Smuzhiyun FW_STAT_RX_PORT_1519B_MAX_IX, 3191*4882a593Smuzhiyun FW_STAT_RX_PORT_PAUSE_IX, 3192*4882a593Smuzhiyun FW_STAT_RX_PORT_PPP0_IX, 3193*4882a593Smuzhiyun FW_STAT_RX_PORT_PPP1_IX, 3194*4882a593Smuzhiyun FW_STAT_RX_PORT_PPP2_IX, 3195*4882a593Smuzhiyun FW_STAT_RX_PORT_PPP3_IX, 3196*4882a593Smuzhiyun FW_STAT_RX_PORT_PPP4_IX, 3197*4882a593Smuzhiyun FW_STAT_RX_PORT_PPP5_IX, 3198*4882a593Smuzhiyun FW_STAT_RX_PORT_PPP6_IX, 3199*4882a593Smuzhiyun FW_STAT_RX_PORT_PPP7_IX, 3200*4882a593Smuzhiyun FW_STAT_RX_PORT_LESS_64B_IX, 3201*4882a593Smuzhiyun FW_STAT_RX_PORT_MAC_ERROR_IX, 3202*4882a593Smuzhiyun FW_NUM_PORT_RX_STATS 3203*4882a593Smuzhiyun }; 3204*4882a593Smuzhiyun 3205*4882a593Smuzhiyun /* port stats */ 3206*4882a593Smuzhiyun #define FW_NUM_PORT_STATS (FW_NUM_PORT_TX_STATS + FW_NUM_PORT_RX_STATS) 3207*4882a593Smuzhiyun 3208*4882a593Smuzhiyun struct fw_port_stats_cmd { 3209*4882a593Smuzhiyun __be32 op_to_portid; 3210*4882a593Smuzhiyun __be32 retval_len16; 3211*4882a593Smuzhiyun union fw_port_stats { 3212*4882a593Smuzhiyun struct fw_port_stats_ctl { 3213*4882a593Smuzhiyun u8 nstats_bg_bm; 3214*4882a593Smuzhiyun u8 tx_ix; 3215*4882a593Smuzhiyun __be16 r6; 3216*4882a593Smuzhiyun __be32 r7; 3217*4882a593Smuzhiyun __be64 stat0; 3218*4882a593Smuzhiyun __be64 stat1; 3219*4882a593Smuzhiyun __be64 stat2; 3220*4882a593Smuzhiyun __be64 stat3; 3221*4882a593Smuzhiyun __be64 stat4; 3222*4882a593Smuzhiyun __be64 stat5; 3223*4882a593Smuzhiyun } ctl; 3224*4882a593Smuzhiyun struct fw_port_stats_all { 3225*4882a593Smuzhiyun __be64 tx_bytes; 3226*4882a593Smuzhiyun __be64 tx_frames; 3227*4882a593Smuzhiyun __be64 tx_bcast; 3228*4882a593Smuzhiyun __be64 tx_mcast; 3229*4882a593Smuzhiyun __be64 tx_ucast; 3230*4882a593Smuzhiyun __be64 tx_error; 3231*4882a593Smuzhiyun __be64 tx_64b; 3232*4882a593Smuzhiyun __be64 tx_65b_127b; 3233*4882a593Smuzhiyun __be64 tx_128b_255b; 3234*4882a593Smuzhiyun __be64 tx_256b_511b; 3235*4882a593Smuzhiyun __be64 tx_512b_1023b; 3236*4882a593Smuzhiyun __be64 tx_1024b_1518b; 3237*4882a593Smuzhiyun __be64 tx_1519b_max; 3238*4882a593Smuzhiyun __be64 tx_drop; 3239*4882a593Smuzhiyun __be64 tx_pause; 3240*4882a593Smuzhiyun __be64 tx_ppp0; 3241*4882a593Smuzhiyun __be64 tx_ppp1; 3242*4882a593Smuzhiyun __be64 tx_ppp2; 3243*4882a593Smuzhiyun __be64 tx_ppp3; 3244*4882a593Smuzhiyun __be64 tx_ppp4; 3245*4882a593Smuzhiyun __be64 tx_ppp5; 3246*4882a593Smuzhiyun __be64 tx_ppp6; 3247*4882a593Smuzhiyun __be64 tx_ppp7; 3248*4882a593Smuzhiyun __be64 rx_bytes; 3249*4882a593Smuzhiyun __be64 rx_frames; 3250*4882a593Smuzhiyun __be64 rx_bcast; 3251*4882a593Smuzhiyun __be64 rx_mcast; 3252*4882a593Smuzhiyun __be64 rx_ucast; 3253*4882a593Smuzhiyun __be64 rx_mtu_error; 3254*4882a593Smuzhiyun __be64 rx_mtu_crc_error; 3255*4882a593Smuzhiyun __be64 rx_crc_error; 3256*4882a593Smuzhiyun __be64 rx_len_error; 3257*4882a593Smuzhiyun __be64 rx_sym_error; 3258*4882a593Smuzhiyun __be64 rx_64b; 3259*4882a593Smuzhiyun __be64 rx_65b_127b; 3260*4882a593Smuzhiyun __be64 rx_128b_255b; 3261*4882a593Smuzhiyun __be64 rx_256b_511b; 3262*4882a593Smuzhiyun __be64 rx_512b_1023b; 3263*4882a593Smuzhiyun __be64 rx_1024b_1518b; 3264*4882a593Smuzhiyun __be64 rx_1519b_max; 3265*4882a593Smuzhiyun __be64 rx_pause; 3266*4882a593Smuzhiyun __be64 rx_ppp0; 3267*4882a593Smuzhiyun __be64 rx_ppp1; 3268*4882a593Smuzhiyun __be64 rx_ppp2; 3269*4882a593Smuzhiyun __be64 rx_ppp3; 3270*4882a593Smuzhiyun __be64 rx_ppp4; 3271*4882a593Smuzhiyun __be64 rx_ppp5; 3272*4882a593Smuzhiyun __be64 rx_ppp6; 3273*4882a593Smuzhiyun __be64 rx_ppp7; 3274*4882a593Smuzhiyun __be64 rx_less_64b; 3275*4882a593Smuzhiyun __be64 rx_bg_drop; 3276*4882a593Smuzhiyun __be64 rx_bg_trunc; 3277*4882a593Smuzhiyun } all; 3278*4882a593Smuzhiyun } u; 3279*4882a593Smuzhiyun }; 3280*4882a593Smuzhiyun 3281*4882a593Smuzhiyun /* port loopback stats */ 3282*4882a593Smuzhiyun #define FW_NUM_LB_STATS 16 3283*4882a593Smuzhiyun enum fw_port_lb_stats_index { 3284*4882a593Smuzhiyun FW_STAT_LB_PORT_BYTES_IX, 3285*4882a593Smuzhiyun FW_STAT_LB_PORT_FRAMES_IX, 3286*4882a593Smuzhiyun FW_STAT_LB_PORT_BCAST_IX, 3287*4882a593Smuzhiyun FW_STAT_LB_PORT_MCAST_IX, 3288*4882a593Smuzhiyun FW_STAT_LB_PORT_UCAST_IX, 3289*4882a593Smuzhiyun FW_STAT_LB_PORT_ERROR_IX, 3290*4882a593Smuzhiyun FW_STAT_LB_PORT_64B_IX, 3291*4882a593Smuzhiyun FW_STAT_LB_PORT_65B_127B_IX, 3292*4882a593Smuzhiyun FW_STAT_LB_PORT_128B_255B_IX, 3293*4882a593Smuzhiyun FW_STAT_LB_PORT_256B_511B_IX, 3294*4882a593Smuzhiyun FW_STAT_LB_PORT_512B_1023B_IX, 3295*4882a593Smuzhiyun FW_STAT_LB_PORT_1024B_1518B_IX, 3296*4882a593Smuzhiyun FW_STAT_LB_PORT_1519B_MAX_IX, 3297*4882a593Smuzhiyun FW_STAT_LB_PORT_DROP_FRAMES_IX 3298*4882a593Smuzhiyun }; 3299*4882a593Smuzhiyun 3300*4882a593Smuzhiyun struct fw_port_lb_stats_cmd { 3301*4882a593Smuzhiyun __be32 op_to_lbport; 3302*4882a593Smuzhiyun __be32 retval_len16; 3303*4882a593Smuzhiyun union fw_port_lb_stats { 3304*4882a593Smuzhiyun struct fw_port_lb_stats_ctl { 3305*4882a593Smuzhiyun u8 nstats_bg_bm; 3306*4882a593Smuzhiyun u8 ix_pkd; 3307*4882a593Smuzhiyun __be16 r6; 3308*4882a593Smuzhiyun __be32 r7; 3309*4882a593Smuzhiyun __be64 stat0; 3310*4882a593Smuzhiyun __be64 stat1; 3311*4882a593Smuzhiyun __be64 stat2; 3312*4882a593Smuzhiyun __be64 stat3; 3313*4882a593Smuzhiyun __be64 stat4; 3314*4882a593Smuzhiyun __be64 stat5; 3315*4882a593Smuzhiyun } ctl; 3316*4882a593Smuzhiyun struct fw_port_lb_stats_all { 3317*4882a593Smuzhiyun __be64 tx_bytes; 3318*4882a593Smuzhiyun __be64 tx_frames; 3319*4882a593Smuzhiyun __be64 tx_bcast; 3320*4882a593Smuzhiyun __be64 tx_mcast; 3321*4882a593Smuzhiyun __be64 tx_ucast; 3322*4882a593Smuzhiyun __be64 tx_error; 3323*4882a593Smuzhiyun __be64 tx_64b; 3324*4882a593Smuzhiyun __be64 tx_65b_127b; 3325*4882a593Smuzhiyun __be64 tx_128b_255b; 3326*4882a593Smuzhiyun __be64 tx_256b_511b; 3327*4882a593Smuzhiyun __be64 tx_512b_1023b; 3328*4882a593Smuzhiyun __be64 tx_1024b_1518b; 3329*4882a593Smuzhiyun __be64 tx_1519b_max; 3330*4882a593Smuzhiyun __be64 rx_lb_drop; 3331*4882a593Smuzhiyun __be64 rx_lb_trunc; 3332*4882a593Smuzhiyun } all; 3333*4882a593Smuzhiyun } u; 3334*4882a593Smuzhiyun }; 3335*4882a593Smuzhiyun 3336*4882a593Smuzhiyun enum fw_ptp_subop { 3337*4882a593Smuzhiyun /* none */ 3338*4882a593Smuzhiyun FW_PTP_SC_INIT_TIMER = 0x00, 3339*4882a593Smuzhiyun FW_PTP_SC_TX_TYPE = 0x01, 3340*4882a593Smuzhiyun /* init */ 3341*4882a593Smuzhiyun FW_PTP_SC_RXTIME_STAMP = 0x08, 3342*4882a593Smuzhiyun FW_PTP_SC_RDRX_TYPE = 0x09, 3343*4882a593Smuzhiyun /* ts */ 3344*4882a593Smuzhiyun FW_PTP_SC_ADJ_FREQ = 0x10, 3345*4882a593Smuzhiyun FW_PTP_SC_ADJ_TIME = 0x11, 3346*4882a593Smuzhiyun FW_PTP_SC_ADJ_FTIME = 0x12, 3347*4882a593Smuzhiyun FW_PTP_SC_WALL_CLOCK = 0x13, 3348*4882a593Smuzhiyun FW_PTP_SC_GET_TIME = 0x14, 3349*4882a593Smuzhiyun FW_PTP_SC_SET_TIME = 0x15, 3350*4882a593Smuzhiyun }; 3351*4882a593Smuzhiyun 3352*4882a593Smuzhiyun struct fw_ptp_cmd { 3353*4882a593Smuzhiyun __be32 op_to_portid; 3354*4882a593Smuzhiyun __be32 retval_len16; 3355*4882a593Smuzhiyun union fw_ptp { 3356*4882a593Smuzhiyun struct fw_ptp_sc { 3357*4882a593Smuzhiyun __u8 sc; 3358*4882a593Smuzhiyun __u8 r3[7]; 3359*4882a593Smuzhiyun } scmd; 3360*4882a593Smuzhiyun struct fw_ptp_init { 3361*4882a593Smuzhiyun __u8 sc; 3362*4882a593Smuzhiyun __u8 txchan; 3363*4882a593Smuzhiyun __be16 absid; 3364*4882a593Smuzhiyun __be16 mode; 3365*4882a593Smuzhiyun __be16 r3; 3366*4882a593Smuzhiyun } init; 3367*4882a593Smuzhiyun struct fw_ptp_ts { 3368*4882a593Smuzhiyun __u8 sc; 3369*4882a593Smuzhiyun __u8 sign; 3370*4882a593Smuzhiyun __be16 r3; 3371*4882a593Smuzhiyun __be32 ppb; 3372*4882a593Smuzhiyun __be64 tm; 3373*4882a593Smuzhiyun } ts; 3374*4882a593Smuzhiyun } u; 3375*4882a593Smuzhiyun __be64 r3; 3376*4882a593Smuzhiyun }; 3377*4882a593Smuzhiyun 3378*4882a593Smuzhiyun #define FW_PTP_CMD_PORTID_S 0 3379*4882a593Smuzhiyun #define FW_PTP_CMD_PORTID_M 0xf 3380*4882a593Smuzhiyun #define FW_PTP_CMD_PORTID_V(x) ((x) << FW_PTP_CMD_PORTID_S) 3381*4882a593Smuzhiyun #define FW_PTP_CMD_PORTID_G(x) \ 3382*4882a593Smuzhiyun (((x) >> FW_PTP_CMD_PORTID_S) & FW_PTP_CMD_PORTID_M) 3383*4882a593Smuzhiyun 3384*4882a593Smuzhiyun struct fw_rss_ind_tbl_cmd { 3385*4882a593Smuzhiyun __be32 op_to_viid; 3386*4882a593Smuzhiyun __be32 retval_len16; 3387*4882a593Smuzhiyun __be16 niqid; 3388*4882a593Smuzhiyun __be16 startidx; 3389*4882a593Smuzhiyun __be32 r3; 3390*4882a593Smuzhiyun __be32 iq0_to_iq2; 3391*4882a593Smuzhiyun __be32 iq3_to_iq5; 3392*4882a593Smuzhiyun __be32 iq6_to_iq8; 3393*4882a593Smuzhiyun __be32 iq9_to_iq11; 3394*4882a593Smuzhiyun __be32 iq12_to_iq14; 3395*4882a593Smuzhiyun __be32 iq15_to_iq17; 3396*4882a593Smuzhiyun __be32 iq18_to_iq20; 3397*4882a593Smuzhiyun __be32 iq21_to_iq23; 3398*4882a593Smuzhiyun __be32 iq24_to_iq26; 3399*4882a593Smuzhiyun __be32 iq27_to_iq29; 3400*4882a593Smuzhiyun __be32 iq30_iq31; 3401*4882a593Smuzhiyun __be32 r15_lo; 3402*4882a593Smuzhiyun }; 3403*4882a593Smuzhiyun 3404*4882a593Smuzhiyun #define FW_RSS_IND_TBL_CMD_VIID_S 0 3405*4882a593Smuzhiyun #define FW_RSS_IND_TBL_CMD_VIID_V(x) ((x) << FW_RSS_IND_TBL_CMD_VIID_S) 3406*4882a593Smuzhiyun 3407*4882a593Smuzhiyun #define FW_RSS_IND_TBL_CMD_IQ0_S 20 3408*4882a593Smuzhiyun #define FW_RSS_IND_TBL_CMD_IQ0_V(x) ((x) << FW_RSS_IND_TBL_CMD_IQ0_S) 3409*4882a593Smuzhiyun 3410*4882a593Smuzhiyun #define FW_RSS_IND_TBL_CMD_IQ1_S 10 3411*4882a593Smuzhiyun #define FW_RSS_IND_TBL_CMD_IQ1_V(x) ((x) << FW_RSS_IND_TBL_CMD_IQ1_S) 3412*4882a593Smuzhiyun 3413*4882a593Smuzhiyun #define FW_RSS_IND_TBL_CMD_IQ2_S 0 3414*4882a593Smuzhiyun #define FW_RSS_IND_TBL_CMD_IQ2_V(x) ((x) << FW_RSS_IND_TBL_CMD_IQ2_S) 3415*4882a593Smuzhiyun 3416*4882a593Smuzhiyun struct fw_rss_glb_config_cmd { 3417*4882a593Smuzhiyun __be32 op_to_write; 3418*4882a593Smuzhiyun __be32 retval_len16; 3419*4882a593Smuzhiyun union fw_rss_glb_config { 3420*4882a593Smuzhiyun struct fw_rss_glb_config_manual { 3421*4882a593Smuzhiyun __be32 mode_pkd; 3422*4882a593Smuzhiyun __be32 r3; 3423*4882a593Smuzhiyun __be64 r4; 3424*4882a593Smuzhiyun __be64 r5; 3425*4882a593Smuzhiyun } manual; 3426*4882a593Smuzhiyun struct fw_rss_glb_config_basicvirtual { 3427*4882a593Smuzhiyun __be32 mode_pkd; 3428*4882a593Smuzhiyun __be32 synmapen_to_hashtoeplitz; 3429*4882a593Smuzhiyun __be64 r8; 3430*4882a593Smuzhiyun __be64 r9; 3431*4882a593Smuzhiyun } basicvirtual; 3432*4882a593Smuzhiyun } u; 3433*4882a593Smuzhiyun }; 3434*4882a593Smuzhiyun 3435*4882a593Smuzhiyun #define FW_RSS_GLB_CONFIG_CMD_MODE_S 28 3436*4882a593Smuzhiyun #define FW_RSS_GLB_CONFIG_CMD_MODE_M 0xf 3437*4882a593Smuzhiyun #define FW_RSS_GLB_CONFIG_CMD_MODE_V(x) ((x) << FW_RSS_GLB_CONFIG_CMD_MODE_S) 3438*4882a593Smuzhiyun #define FW_RSS_GLB_CONFIG_CMD_MODE_G(x) \ 3439*4882a593Smuzhiyun (((x) >> FW_RSS_GLB_CONFIG_CMD_MODE_S) & FW_RSS_GLB_CONFIG_CMD_MODE_M) 3440*4882a593Smuzhiyun 3441*4882a593Smuzhiyun #define FW_RSS_GLB_CONFIG_CMD_MODE_MANUAL 0 3442*4882a593Smuzhiyun #define FW_RSS_GLB_CONFIG_CMD_MODE_BASICVIRTUAL 1 3443*4882a593Smuzhiyun 3444*4882a593Smuzhiyun #define FW_RSS_GLB_CONFIG_CMD_SYNMAPEN_S 8 3445*4882a593Smuzhiyun #define FW_RSS_GLB_CONFIG_CMD_SYNMAPEN_V(x) \ 3446*4882a593Smuzhiyun ((x) << FW_RSS_GLB_CONFIG_CMD_SYNMAPEN_S) 3447*4882a593Smuzhiyun #define FW_RSS_GLB_CONFIG_CMD_SYNMAPEN_F \ 3448*4882a593Smuzhiyun FW_RSS_GLB_CONFIG_CMD_SYNMAPEN_V(1U) 3449*4882a593Smuzhiyun 3450*4882a593Smuzhiyun #define FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV6_S 7 3451*4882a593Smuzhiyun #define FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV6_V(x) \ 3452*4882a593Smuzhiyun ((x) << FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV6_S) 3453*4882a593Smuzhiyun #define FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV6_F \ 3454*4882a593Smuzhiyun FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV6_V(1U) 3455*4882a593Smuzhiyun 3456*4882a593Smuzhiyun #define FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV6_S 6 3457*4882a593Smuzhiyun #define FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV6_V(x) \ 3458*4882a593Smuzhiyun ((x) << FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV6_S) 3459*4882a593Smuzhiyun #define FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV6_F \ 3460*4882a593Smuzhiyun FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV6_V(1U) 3461*4882a593Smuzhiyun 3462*4882a593Smuzhiyun #define FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV4_S 5 3463*4882a593Smuzhiyun #define FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV4_V(x) \ 3464*4882a593Smuzhiyun ((x) << FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV4_S) 3465*4882a593Smuzhiyun #define FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV4_F \ 3466*4882a593Smuzhiyun FW_RSS_GLB_CONFIG_CMD_SYN4TUPENIPV4_V(1U) 3467*4882a593Smuzhiyun 3468*4882a593Smuzhiyun #define FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV4_S 4 3469*4882a593Smuzhiyun #define FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV4_V(x) \ 3470*4882a593Smuzhiyun ((x) << FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV4_S) 3471*4882a593Smuzhiyun #define FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV4_F \ 3472*4882a593Smuzhiyun FW_RSS_GLB_CONFIG_CMD_SYN2TUPENIPV4_V(1U) 3473*4882a593Smuzhiyun 3474*4882a593Smuzhiyun #define FW_RSS_GLB_CONFIG_CMD_OFDMAPEN_S 3 3475*4882a593Smuzhiyun #define FW_RSS_GLB_CONFIG_CMD_OFDMAPEN_V(x) \ 3476*4882a593Smuzhiyun ((x) << FW_RSS_GLB_CONFIG_CMD_OFDMAPEN_S) 3477*4882a593Smuzhiyun #define FW_RSS_GLB_CONFIG_CMD_OFDMAPEN_F \ 3478*4882a593Smuzhiyun FW_RSS_GLB_CONFIG_CMD_OFDMAPEN_V(1U) 3479*4882a593Smuzhiyun 3480*4882a593Smuzhiyun #define FW_RSS_GLB_CONFIG_CMD_TNLMAPEN_S 2 3481*4882a593Smuzhiyun #define FW_RSS_GLB_CONFIG_CMD_TNLMAPEN_V(x) \ 3482*4882a593Smuzhiyun ((x) << FW_RSS_GLB_CONFIG_CMD_TNLMAPEN_S) 3483*4882a593Smuzhiyun #define FW_RSS_GLB_CONFIG_CMD_TNLMAPEN_F \ 3484*4882a593Smuzhiyun FW_RSS_GLB_CONFIG_CMD_TNLMAPEN_V(1U) 3485*4882a593Smuzhiyun 3486*4882a593Smuzhiyun #define FW_RSS_GLB_CONFIG_CMD_TNLALLLKP_S 1 3487*4882a593Smuzhiyun #define FW_RSS_GLB_CONFIG_CMD_TNLALLLKP_V(x) \ 3488*4882a593Smuzhiyun ((x) << FW_RSS_GLB_CONFIG_CMD_TNLALLLKP_S) 3489*4882a593Smuzhiyun #define FW_RSS_GLB_CONFIG_CMD_TNLALLLKP_F \ 3490*4882a593Smuzhiyun FW_RSS_GLB_CONFIG_CMD_TNLALLLKP_V(1U) 3491*4882a593Smuzhiyun 3492*4882a593Smuzhiyun #define FW_RSS_GLB_CONFIG_CMD_HASHTOEPLITZ_S 0 3493*4882a593Smuzhiyun #define FW_RSS_GLB_CONFIG_CMD_HASHTOEPLITZ_V(x) \ 3494*4882a593Smuzhiyun ((x) << FW_RSS_GLB_CONFIG_CMD_HASHTOEPLITZ_S) 3495*4882a593Smuzhiyun #define FW_RSS_GLB_CONFIG_CMD_HASHTOEPLITZ_F \ 3496*4882a593Smuzhiyun FW_RSS_GLB_CONFIG_CMD_HASHTOEPLITZ_V(1U) 3497*4882a593Smuzhiyun 3498*4882a593Smuzhiyun struct fw_rss_vi_config_cmd { 3499*4882a593Smuzhiyun __be32 op_to_viid; 3500*4882a593Smuzhiyun #define FW_RSS_VI_CONFIG_CMD_VIID(x) ((x) << 0) 3501*4882a593Smuzhiyun __be32 retval_len16; 3502*4882a593Smuzhiyun union fw_rss_vi_config { 3503*4882a593Smuzhiyun struct fw_rss_vi_config_manual { 3504*4882a593Smuzhiyun __be64 r3; 3505*4882a593Smuzhiyun __be64 r4; 3506*4882a593Smuzhiyun __be64 r5; 3507*4882a593Smuzhiyun } manual; 3508*4882a593Smuzhiyun struct fw_rss_vi_config_basicvirtual { 3509*4882a593Smuzhiyun __be32 r6; 3510*4882a593Smuzhiyun __be32 defaultq_to_udpen; 3511*4882a593Smuzhiyun __be64 r9; 3512*4882a593Smuzhiyun __be64 r10; 3513*4882a593Smuzhiyun } basicvirtual; 3514*4882a593Smuzhiyun } u; 3515*4882a593Smuzhiyun }; 3516*4882a593Smuzhiyun 3517*4882a593Smuzhiyun #define FW_RSS_VI_CONFIG_CMD_VIID_S 0 3518*4882a593Smuzhiyun #define FW_RSS_VI_CONFIG_CMD_VIID_V(x) ((x) << FW_RSS_VI_CONFIG_CMD_VIID_S) 3519*4882a593Smuzhiyun 3520*4882a593Smuzhiyun #define FW_RSS_VI_CONFIG_CMD_DEFAULTQ_S 16 3521*4882a593Smuzhiyun #define FW_RSS_VI_CONFIG_CMD_DEFAULTQ_M 0x3ff 3522*4882a593Smuzhiyun #define FW_RSS_VI_CONFIG_CMD_DEFAULTQ_V(x) \ 3523*4882a593Smuzhiyun ((x) << FW_RSS_VI_CONFIG_CMD_DEFAULTQ_S) 3524*4882a593Smuzhiyun #define FW_RSS_VI_CONFIG_CMD_DEFAULTQ_G(x) \ 3525*4882a593Smuzhiyun (((x) >> FW_RSS_VI_CONFIG_CMD_DEFAULTQ_S) & \ 3526*4882a593Smuzhiyun FW_RSS_VI_CONFIG_CMD_DEFAULTQ_M) 3527*4882a593Smuzhiyun 3528*4882a593Smuzhiyun #define FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN_S 4 3529*4882a593Smuzhiyun #define FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN_V(x) \ 3530*4882a593Smuzhiyun ((x) << FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN_S) 3531*4882a593Smuzhiyun #define FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN_F \ 3532*4882a593Smuzhiyun FW_RSS_VI_CONFIG_CMD_IP6FOURTUPEN_V(1U) 3533*4882a593Smuzhiyun 3534*4882a593Smuzhiyun #define FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN_S 3 3535*4882a593Smuzhiyun #define FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN_V(x) \ 3536*4882a593Smuzhiyun ((x) << FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN_S) 3537*4882a593Smuzhiyun #define FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN_F \ 3538*4882a593Smuzhiyun FW_RSS_VI_CONFIG_CMD_IP6TWOTUPEN_V(1U) 3539*4882a593Smuzhiyun 3540*4882a593Smuzhiyun #define FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN_S 2 3541*4882a593Smuzhiyun #define FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN_V(x) \ 3542*4882a593Smuzhiyun ((x) << FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN_S) 3543*4882a593Smuzhiyun #define FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN_F \ 3544*4882a593Smuzhiyun FW_RSS_VI_CONFIG_CMD_IP4FOURTUPEN_V(1U) 3545*4882a593Smuzhiyun 3546*4882a593Smuzhiyun #define FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN_S 1 3547*4882a593Smuzhiyun #define FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN_V(x) \ 3548*4882a593Smuzhiyun ((x) << FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN_S) 3549*4882a593Smuzhiyun #define FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN_F \ 3550*4882a593Smuzhiyun FW_RSS_VI_CONFIG_CMD_IP4TWOTUPEN_V(1U) 3551*4882a593Smuzhiyun 3552*4882a593Smuzhiyun #define FW_RSS_VI_CONFIG_CMD_UDPEN_S 0 3553*4882a593Smuzhiyun #define FW_RSS_VI_CONFIG_CMD_UDPEN_V(x) ((x) << FW_RSS_VI_CONFIG_CMD_UDPEN_S) 3554*4882a593Smuzhiyun #define FW_RSS_VI_CONFIG_CMD_UDPEN_F FW_RSS_VI_CONFIG_CMD_UDPEN_V(1U) 3555*4882a593Smuzhiyun 3556*4882a593Smuzhiyun enum fw_sched_sc { 3557*4882a593Smuzhiyun FW_SCHED_SC_PARAMS = 1, 3558*4882a593Smuzhiyun }; 3559*4882a593Smuzhiyun 3560*4882a593Smuzhiyun struct fw_sched_cmd { 3561*4882a593Smuzhiyun __be32 op_to_write; 3562*4882a593Smuzhiyun __be32 retval_len16; 3563*4882a593Smuzhiyun union fw_sched { 3564*4882a593Smuzhiyun struct fw_sched_config { 3565*4882a593Smuzhiyun __u8 sc; 3566*4882a593Smuzhiyun __u8 type; 3567*4882a593Smuzhiyun __u8 minmaxen; 3568*4882a593Smuzhiyun __u8 r3[5]; 3569*4882a593Smuzhiyun __u8 nclasses[4]; 3570*4882a593Smuzhiyun __be32 r4; 3571*4882a593Smuzhiyun } config; 3572*4882a593Smuzhiyun struct fw_sched_params { 3573*4882a593Smuzhiyun __u8 sc; 3574*4882a593Smuzhiyun __u8 type; 3575*4882a593Smuzhiyun __u8 level; 3576*4882a593Smuzhiyun __u8 mode; 3577*4882a593Smuzhiyun __u8 unit; 3578*4882a593Smuzhiyun __u8 rate; 3579*4882a593Smuzhiyun __u8 ch; 3580*4882a593Smuzhiyun __u8 cl; 3581*4882a593Smuzhiyun __be32 min; 3582*4882a593Smuzhiyun __be32 max; 3583*4882a593Smuzhiyun __be16 weight; 3584*4882a593Smuzhiyun __be16 pktsize; 3585*4882a593Smuzhiyun __be16 burstsize; 3586*4882a593Smuzhiyun __be16 r4; 3587*4882a593Smuzhiyun } params; 3588*4882a593Smuzhiyun } u; 3589*4882a593Smuzhiyun }; 3590*4882a593Smuzhiyun 3591*4882a593Smuzhiyun struct fw_clip_cmd { 3592*4882a593Smuzhiyun __be32 op_to_write; 3593*4882a593Smuzhiyun __be32 alloc_to_len16; 3594*4882a593Smuzhiyun __be64 ip_hi; 3595*4882a593Smuzhiyun __be64 ip_lo; 3596*4882a593Smuzhiyun __be32 r4[2]; 3597*4882a593Smuzhiyun }; 3598*4882a593Smuzhiyun 3599*4882a593Smuzhiyun #define FW_CLIP_CMD_ALLOC_S 31 3600*4882a593Smuzhiyun #define FW_CLIP_CMD_ALLOC_V(x) ((x) << FW_CLIP_CMD_ALLOC_S) 3601*4882a593Smuzhiyun #define FW_CLIP_CMD_ALLOC_F FW_CLIP_CMD_ALLOC_V(1U) 3602*4882a593Smuzhiyun 3603*4882a593Smuzhiyun #define FW_CLIP_CMD_FREE_S 30 3604*4882a593Smuzhiyun #define FW_CLIP_CMD_FREE_V(x) ((x) << FW_CLIP_CMD_FREE_S) 3605*4882a593Smuzhiyun #define FW_CLIP_CMD_FREE_F FW_CLIP_CMD_FREE_V(1U) 3606*4882a593Smuzhiyun 3607*4882a593Smuzhiyun enum fw_error_type { 3608*4882a593Smuzhiyun FW_ERROR_TYPE_EXCEPTION = 0x0, 3609*4882a593Smuzhiyun FW_ERROR_TYPE_HWMODULE = 0x1, 3610*4882a593Smuzhiyun FW_ERROR_TYPE_WR = 0x2, 3611*4882a593Smuzhiyun FW_ERROR_TYPE_ACL = 0x3, 3612*4882a593Smuzhiyun }; 3613*4882a593Smuzhiyun 3614*4882a593Smuzhiyun struct fw_error_cmd { 3615*4882a593Smuzhiyun __be32 op_to_type; 3616*4882a593Smuzhiyun __be32 len16_pkd; 3617*4882a593Smuzhiyun union fw_error { 3618*4882a593Smuzhiyun struct fw_error_exception { 3619*4882a593Smuzhiyun __be32 info[6]; 3620*4882a593Smuzhiyun } exception; 3621*4882a593Smuzhiyun struct fw_error_hwmodule { 3622*4882a593Smuzhiyun __be32 regaddr; 3623*4882a593Smuzhiyun __be32 regval; 3624*4882a593Smuzhiyun } hwmodule; 3625*4882a593Smuzhiyun struct fw_error_wr { 3626*4882a593Smuzhiyun __be16 cidx; 3627*4882a593Smuzhiyun __be16 pfn_vfn; 3628*4882a593Smuzhiyun __be32 eqid; 3629*4882a593Smuzhiyun u8 wrhdr[16]; 3630*4882a593Smuzhiyun } wr; 3631*4882a593Smuzhiyun struct fw_error_acl { 3632*4882a593Smuzhiyun __be16 cidx; 3633*4882a593Smuzhiyun __be16 pfn_vfn; 3634*4882a593Smuzhiyun __be32 eqid; 3635*4882a593Smuzhiyun __be16 mv_pkd; 3636*4882a593Smuzhiyun u8 val[6]; 3637*4882a593Smuzhiyun __be64 r4; 3638*4882a593Smuzhiyun } acl; 3639*4882a593Smuzhiyun } u; 3640*4882a593Smuzhiyun }; 3641*4882a593Smuzhiyun 3642*4882a593Smuzhiyun struct fw_debug_cmd { 3643*4882a593Smuzhiyun __be32 op_type; 3644*4882a593Smuzhiyun __be32 len16_pkd; 3645*4882a593Smuzhiyun union fw_debug { 3646*4882a593Smuzhiyun struct fw_debug_assert { 3647*4882a593Smuzhiyun __be32 fcid; 3648*4882a593Smuzhiyun __be32 line; 3649*4882a593Smuzhiyun __be32 x; 3650*4882a593Smuzhiyun __be32 y; 3651*4882a593Smuzhiyun u8 filename_0_7[8]; 3652*4882a593Smuzhiyun u8 filename_8_15[8]; 3653*4882a593Smuzhiyun __be64 r3; 3654*4882a593Smuzhiyun } assert; 3655*4882a593Smuzhiyun struct fw_debug_prt { 3656*4882a593Smuzhiyun __be16 dprtstridx; 3657*4882a593Smuzhiyun __be16 r3[3]; 3658*4882a593Smuzhiyun __be32 dprtstrparam0; 3659*4882a593Smuzhiyun __be32 dprtstrparam1; 3660*4882a593Smuzhiyun __be32 dprtstrparam2; 3661*4882a593Smuzhiyun __be32 dprtstrparam3; 3662*4882a593Smuzhiyun } prt; 3663*4882a593Smuzhiyun } u; 3664*4882a593Smuzhiyun }; 3665*4882a593Smuzhiyun 3666*4882a593Smuzhiyun #define FW_DEBUG_CMD_TYPE_S 0 3667*4882a593Smuzhiyun #define FW_DEBUG_CMD_TYPE_M 0xff 3668*4882a593Smuzhiyun #define FW_DEBUG_CMD_TYPE_G(x) \ 3669*4882a593Smuzhiyun (((x) >> FW_DEBUG_CMD_TYPE_S) & FW_DEBUG_CMD_TYPE_M) 3670*4882a593Smuzhiyun 3671*4882a593Smuzhiyun struct fw_hma_cmd { 3672*4882a593Smuzhiyun __be32 op_pkd; 3673*4882a593Smuzhiyun __be32 retval_len16; 3674*4882a593Smuzhiyun __be32 mode_to_pcie_params; 3675*4882a593Smuzhiyun __be32 naddr_size; 3676*4882a593Smuzhiyun __be32 addr_size_pkd; 3677*4882a593Smuzhiyun __be32 r6; 3678*4882a593Smuzhiyun __be64 phy_address[5]; 3679*4882a593Smuzhiyun }; 3680*4882a593Smuzhiyun 3681*4882a593Smuzhiyun #define FW_HMA_CMD_MODE_S 31 3682*4882a593Smuzhiyun #define FW_HMA_CMD_MODE_M 0x1 3683*4882a593Smuzhiyun #define FW_HMA_CMD_MODE_V(x) ((x) << FW_HMA_CMD_MODE_S) 3684*4882a593Smuzhiyun #define FW_HMA_CMD_MODE_G(x) \ 3685*4882a593Smuzhiyun (((x) >> FW_HMA_CMD_MODE_S) & FW_HMA_CMD_MODE_M) 3686*4882a593Smuzhiyun #define FW_HMA_CMD_MODE_F FW_HMA_CMD_MODE_V(1U) 3687*4882a593Smuzhiyun 3688*4882a593Smuzhiyun #define FW_HMA_CMD_SOC_S 30 3689*4882a593Smuzhiyun #define FW_HMA_CMD_SOC_M 0x1 3690*4882a593Smuzhiyun #define FW_HMA_CMD_SOC_V(x) ((x) << FW_HMA_CMD_SOC_S) 3691*4882a593Smuzhiyun #define FW_HMA_CMD_SOC_G(x) (((x) >> FW_HMA_CMD_SOC_S) & FW_HMA_CMD_SOC_M) 3692*4882a593Smuzhiyun #define FW_HMA_CMD_SOC_F FW_HMA_CMD_SOC_V(1U) 3693*4882a593Smuzhiyun 3694*4882a593Smuzhiyun #define FW_HMA_CMD_EOC_S 29 3695*4882a593Smuzhiyun #define FW_HMA_CMD_EOC_M 0x1 3696*4882a593Smuzhiyun #define FW_HMA_CMD_EOC_V(x) ((x) << FW_HMA_CMD_EOC_S) 3697*4882a593Smuzhiyun #define FW_HMA_CMD_EOC_G(x) (((x) >> FW_HMA_CMD_EOC_S) & FW_HMA_CMD_EOC_M) 3698*4882a593Smuzhiyun #define FW_HMA_CMD_EOC_F FW_HMA_CMD_EOC_V(1U) 3699*4882a593Smuzhiyun 3700*4882a593Smuzhiyun #define FW_HMA_CMD_PCIE_PARAMS_S 0 3701*4882a593Smuzhiyun #define FW_HMA_CMD_PCIE_PARAMS_M 0x7ffffff 3702*4882a593Smuzhiyun #define FW_HMA_CMD_PCIE_PARAMS_V(x) ((x) << FW_HMA_CMD_PCIE_PARAMS_S) 3703*4882a593Smuzhiyun #define FW_HMA_CMD_PCIE_PARAMS_G(x) \ 3704*4882a593Smuzhiyun (((x) >> FW_HMA_CMD_PCIE_PARAMS_S) & FW_HMA_CMD_PCIE_PARAMS_M) 3705*4882a593Smuzhiyun 3706*4882a593Smuzhiyun #define FW_HMA_CMD_NADDR_S 12 3707*4882a593Smuzhiyun #define FW_HMA_CMD_NADDR_M 0x3f 3708*4882a593Smuzhiyun #define FW_HMA_CMD_NADDR_V(x) ((x) << FW_HMA_CMD_NADDR_S) 3709*4882a593Smuzhiyun #define FW_HMA_CMD_NADDR_G(x) \ 3710*4882a593Smuzhiyun (((x) >> FW_HMA_CMD_NADDR_S) & FW_HMA_CMD_NADDR_M) 3711*4882a593Smuzhiyun 3712*4882a593Smuzhiyun #define FW_HMA_CMD_SIZE_S 0 3713*4882a593Smuzhiyun #define FW_HMA_CMD_SIZE_M 0xfff 3714*4882a593Smuzhiyun #define FW_HMA_CMD_SIZE_V(x) ((x) << FW_HMA_CMD_SIZE_S) 3715*4882a593Smuzhiyun #define FW_HMA_CMD_SIZE_G(x) \ 3716*4882a593Smuzhiyun (((x) >> FW_HMA_CMD_SIZE_S) & FW_HMA_CMD_SIZE_M) 3717*4882a593Smuzhiyun 3718*4882a593Smuzhiyun #define FW_HMA_CMD_ADDR_SIZE_S 11 3719*4882a593Smuzhiyun #define FW_HMA_CMD_ADDR_SIZE_M 0x1fffff 3720*4882a593Smuzhiyun #define FW_HMA_CMD_ADDR_SIZE_V(x) ((x) << FW_HMA_CMD_ADDR_SIZE_S) 3721*4882a593Smuzhiyun #define FW_HMA_CMD_ADDR_SIZE_G(x) \ 3722*4882a593Smuzhiyun (((x) >> FW_HMA_CMD_ADDR_SIZE_S) & FW_HMA_CMD_ADDR_SIZE_M) 3723*4882a593Smuzhiyun 3724*4882a593Smuzhiyun enum pcie_fw_eval { 3725*4882a593Smuzhiyun PCIE_FW_EVAL_CRASH = 0, 3726*4882a593Smuzhiyun }; 3727*4882a593Smuzhiyun 3728*4882a593Smuzhiyun #define PCIE_FW_ERR_S 31 3729*4882a593Smuzhiyun #define PCIE_FW_ERR_V(x) ((x) << PCIE_FW_ERR_S) 3730*4882a593Smuzhiyun #define PCIE_FW_ERR_F PCIE_FW_ERR_V(1U) 3731*4882a593Smuzhiyun 3732*4882a593Smuzhiyun #define PCIE_FW_INIT_S 30 3733*4882a593Smuzhiyun #define PCIE_FW_INIT_V(x) ((x) << PCIE_FW_INIT_S) 3734*4882a593Smuzhiyun #define PCIE_FW_INIT_F PCIE_FW_INIT_V(1U) 3735*4882a593Smuzhiyun 3736*4882a593Smuzhiyun #define PCIE_FW_HALT_S 29 3737*4882a593Smuzhiyun #define PCIE_FW_HALT_V(x) ((x) << PCIE_FW_HALT_S) 3738*4882a593Smuzhiyun #define PCIE_FW_HALT_F PCIE_FW_HALT_V(1U) 3739*4882a593Smuzhiyun 3740*4882a593Smuzhiyun #define PCIE_FW_EVAL_S 24 3741*4882a593Smuzhiyun #define PCIE_FW_EVAL_M 0x7 3742*4882a593Smuzhiyun #define PCIE_FW_EVAL_G(x) (((x) >> PCIE_FW_EVAL_S) & PCIE_FW_EVAL_M) 3743*4882a593Smuzhiyun 3744*4882a593Smuzhiyun #define PCIE_FW_MASTER_VLD_S 15 3745*4882a593Smuzhiyun #define PCIE_FW_MASTER_VLD_V(x) ((x) << PCIE_FW_MASTER_VLD_S) 3746*4882a593Smuzhiyun #define PCIE_FW_MASTER_VLD_F PCIE_FW_MASTER_VLD_V(1U) 3747*4882a593Smuzhiyun 3748*4882a593Smuzhiyun #define PCIE_FW_MASTER_S 12 3749*4882a593Smuzhiyun #define PCIE_FW_MASTER_M 0x7 3750*4882a593Smuzhiyun #define PCIE_FW_MASTER_V(x) ((x) << PCIE_FW_MASTER_S) 3751*4882a593Smuzhiyun #define PCIE_FW_MASTER_G(x) (((x) >> PCIE_FW_MASTER_S) & PCIE_FW_MASTER_M) 3752*4882a593Smuzhiyun 3753*4882a593Smuzhiyun struct fw_hdr { 3754*4882a593Smuzhiyun u8 ver; 3755*4882a593Smuzhiyun u8 chip; /* terminator chip type */ 3756*4882a593Smuzhiyun __be16 len512; /* bin length in units of 512-bytes */ 3757*4882a593Smuzhiyun __be32 fw_ver; /* firmware version */ 3758*4882a593Smuzhiyun __be32 tp_microcode_ver; 3759*4882a593Smuzhiyun u8 intfver_nic; 3760*4882a593Smuzhiyun u8 intfver_vnic; 3761*4882a593Smuzhiyun u8 intfver_ofld; 3762*4882a593Smuzhiyun u8 intfver_ri; 3763*4882a593Smuzhiyun u8 intfver_iscsipdu; 3764*4882a593Smuzhiyun u8 intfver_iscsi; 3765*4882a593Smuzhiyun u8 intfver_fcoepdu; 3766*4882a593Smuzhiyun u8 intfver_fcoe; 3767*4882a593Smuzhiyun __u32 reserved2; 3768*4882a593Smuzhiyun __u32 reserved3; 3769*4882a593Smuzhiyun __u32 reserved4; 3770*4882a593Smuzhiyun __be32 flags; 3771*4882a593Smuzhiyun __be32 reserved6[23]; 3772*4882a593Smuzhiyun }; 3773*4882a593Smuzhiyun 3774*4882a593Smuzhiyun enum fw_hdr_chip { 3775*4882a593Smuzhiyun FW_HDR_CHIP_T4, 3776*4882a593Smuzhiyun FW_HDR_CHIP_T5, 3777*4882a593Smuzhiyun FW_HDR_CHIP_T6 3778*4882a593Smuzhiyun }; 3779*4882a593Smuzhiyun 3780*4882a593Smuzhiyun #define FW_HDR_FW_VER_MAJOR_S 24 3781*4882a593Smuzhiyun #define FW_HDR_FW_VER_MAJOR_M 0xff 3782*4882a593Smuzhiyun #define FW_HDR_FW_VER_MAJOR_V(x) \ 3783*4882a593Smuzhiyun ((x) << FW_HDR_FW_VER_MAJOR_S) 3784*4882a593Smuzhiyun #define FW_HDR_FW_VER_MAJOR_G(x) \ 3785*4882a593Smuzhiyun (((x) >> FW_HDR_FW_VER_MAJOR_S) & FW_HDR_FW_VER_MAJOR_M) 3786*4882a593Smuzhiyun 3787*4882a593Smuzhiyun #define FW_HDR_FW_VER_MINOR_S 16 3788*4882a593Smuzhiyun #define FW_HDR_FW_VER_MINOR_M 0xff 3789*4882a593Smuzhiyun #define FW_HDR_FW_VER_MINOR_V(x) \ 3790*4882a593Smuzhiyun ((x) << FW_HDR_FW_VER_MINOR_S) 3791*4882a593Smuzhiyun #define FW_HDR_FW_VER_MINOR_G(x) \ 3792*4882a593Smuzhiyun (((x) >> FW_HDR_FW_VER_MINOR_S) & FW_HDR_FW_VER_MINOR_M) 3793*4882a593Smuzhiyun 3794*4882a593Smuzhiyun #define FW_HDR_FW_VER_MICRO_S 8 3795*4882a593Smuzhiyun #define FW_HDR_FW_VER_MICRO_M 0xff 3796*4882a593Smuzhiyun #define FW_HDR_FW_VER_MICRO_V(x) \ 3797*4882a593Smuzhiyun ((x) << FW_HDR_FW_VER_MICRO_S) 3798*4882a593Smuzhiyun #define FW_HDR_FW_VER_MICRO_G(x) \ 3799*4882a593Smuzhiyun (((x) >> FW_HDR_FW_VER_MICRO_S) & FW_HDR_FW_VER_MICRO_M) 3800*4882a593Smuzhiyun 3801*4882a593Smuzhiyun #define FW_HDR_FW_VER_BUILD_S 0 3802*4882a593Smuzhiyun #define FW_HDR_FW_VER_BUILD_M 0xff 3803*4882a593Smuzhiyun #define FW_HDR_FW_VER_BUILD_V(x) \ 3804*4882a593Smuzhiyun ((x) << FW_HDR_FW_VER_BUILD_S) 3805*4882a593Smuzhiyun #define FW_HDR_FW_VER_BUILD_G(x) \ 3806*4882a593Smuzhiyun (((x) >> FW_HDR_FW_VER_BUILD_S) & FW_HDR_FW_VER_BUILD_M) 3807*4882a593Smuzhiyun 3808*4882a593Smuzhiyun enum fw_hdr_intfver { 3809*4882a593Smuzhiyun FW_HDR_INTFVER_NIC = 0x00, 3810*4882a593Smuzhiyun FW_HDR_INTFVER_VNIC = 0x00, 3811*4882a593Smuzhiyun FW_HDR_INTFVER_OFLD = 0x00, 3812*4882a593Smuzhiyun FW_HDR_INTFVER_RI = 0x00, 3813*4882a593Smuzhiyun FW_HDR_INTFVER_ISCSIPDU = 0x00, 3814*4882a593Smuzhiyun FW_HDR_INTFVER_ISCSI = 0x00, 3815*4882a593Smuzhiyun FW_HDR_INTFVER_FCOEPDU = 0x00, 3816*4882a593Smuzhiyun FW_HDR_INTFVER_FCOE = 0x00, 3817*4882a593Smuzhiyun }; 3818*4882a593Smuzhiyun 3819*4882a593Smuzhiyun enum fw_hdr_flags { 3820*4882a593Smuzhiyun FW_HDR_FLAGS_RESET_HALT = 0x00000001, 3821*4882a593Smuzhiyun }; 3822*4882a593Smuzhiyun 3823*4882a593Smuzhiyun /* length of the formatting string */ 3824*4882a593Smuzhiyun #define FW_DEVLOG_FMT_LEN 192 3825*4882a593Smuzhiyun 3826*4882a593Smuzhiyun /* maximum number of the formatting string parameters */ 3827*4882a593Smuzhiyun #define FW_DEVLOG_FMT_PARAMS_NUM 8 3828*4882a593Smuzhiyun 3829*4882a593Smuzhiyun /* priority levels */ 3830*4882a593Smuzhiyun enum fw_devlog_level { 3831*4882a593Smuzhiyun FW_DEVLOG_LEVEL_EMERG = 0x0, 3832*4882a593Smuzhiyun FW_DEVLOG_LEVEL_CRIT = 0x1, 3833*4882a593Smuzhiyun FW_DEVLOG_LEVEL_ERR = 0x2, 3834*4882a593Smuzhiyun FW_DEVLOG_LEVEL_NOTICE = 0x3, 3835*4882a593Smuzhiyun FW_DEVLOG_LEVEL_INFO = 0x4, 3836*4882a593Smuzhiyun FW_DEVLOG_LEVEL_DEBUG = 0x5, 3837*4882a593Smuzhiyun FW_DEVLOG_LEVEL_MAX = 0x5, 3838*4882a593Smuzhiyun }; 3839*4882a593Smuzhiyun 3840*4882a593Smuzhiyun /* facilities that may send a log message */ 3841*4882a593Smuzhiyun enum fw_devlog_facility { 3842*4882a593Smuzhiyun FW_DEVLOG_FACILITY_CORE = 0x00, 3843*4882a593Smuzhiyun FW_DEVLOG_FACILITY_CF = 0x01, 3844*4882a593Smuzhiyun FW_DEVLOG_FACILITY_SCHED = 0x02, 3845*4882a593Smuzhiyun FW_DEVLOG_FACILITY_TIMER = 0x04, 3846*4882a593Smuzhiyun FW_DEVLOG_FACILITY_RES = 0x06, 3847*4882a593Smuzhiyun FW_DEVLOG_FACILITY_HW = 0x08, 3848*4882a593Smuzhiyun FW_DEVLOG_FACILITY_FLR = 0x10, 3849*4882a593Smuzhiyun FW_DEVLOG_FACILITY_DMAQ = 0x12, 3850*4882a593Smuzhiyun FW_DEVLOG_FACILITY_PHY = 0x14, 3851*4882a593Smuzhiyun FW_DEVLOG_FACILITY_MAC = 0x16, 3852*4882a593Smuzhiyun FW_DEVLOG_FACILITY_PORT = 0x18, 3853*4882a593Smuzhiyun FW_DEVLOG_FACILITY_VI = 0x1A, 3854*4882a593Smuzhiyun FW_DEVLOG_FACILITY_FILTER = 0x1C, 3855*4882a593Smuzhiyun FW_DEVLOG_FACILITY_ACL = 0x1E, 3856*4882a593Smuzhiyun FW_DEVLOG_FACILITY_TM = 0x20, 3857*4882a593Smuzhiyun FW_DEVLOG_FACILITY_QFC = 0x22, 3858*4882a593Smuzhiyun FW_DEVLOG_FACILITY_DCB = 0x24, 3859*4882a593Smuzhiyun FW_DEVLOG_FACILITY_ETH = 0x26, 3860*4882a593Smuzhiyun FW_DEVLOG_FACILITY_OFLD = 0x28, 3861*4882a593Smuzhiyun FW_DEVLOG_FACILITY_RI = 0x2A, 3862*4882a593Smuzhiyun FW_DEVLOG_FACILITY_ISCSI = 0x2C, 3863*4882a593Smuzhiyun FW_DEVLOG_FACILITY_FCOE = 0x2E, 3864*4882a593Smuzhiyun FW_DEVLOG_FACILITY_FOISCSI = 0x30, 3865*4882a593Smuzhiyun FW_DEVLOG_FACILITY_FOFCOE = 0x32, 3866*4882a593Smuzhiyun FW_DEVLOG_FACILITY_CHNET = 0x34, 3867*4882a593Smuzhiyun FW_DEVLOG_FACILITY_MAX = 0x34, 3868*4882a593Smuzhiyun }; 3869*4882a593Smuzhiyun 3870*4882a593Smuzhiyun /* log message format */ 3871*4882a593Smuzhiyun struct fw_devlog_e { 3872*4882a593Smuzhiyun __be64 timestamp; 3873*4882a593Smuzhiyun __be32 seqno; 3874*4882a593Smuzhiyun __be16 reserved1; 3875*4882a593Smuzhiyun __u8 level; 3876*4882a593Smuzhiyun __u8 facility; 3877*4882a593Smuzhiyun __u8 fmt[FW_DEVLOG_FMT_LEN]; 3878*4882a593Smuzhiyun __be32 params[FW_DEVLOG_FMT_PARAMS_NUM]; 3879*4882a593Smuzhiyun __be32 reserved3[4]; 3880*4882a593Smuzhiyun }; 3881*4882a593Smuzhiyun 3882*4882a593Smuzhiyun struct fw_devlog_cmd { 3883*4882a593Smuzhiyun __be32 op_to_write; 3884*4882a593Smuzhiyun __be32 retval_len16; 3885*4882a593Smuzhiyun __u8 level; 3886*4882a593Smuzhiyun __u8 r2[7]; 3887*4882a593Smuzhiyun __be32 memtype_devlog_memaddr16_devlog; 3888*4882a593Smuzhiyun __be32 memsize_devlog; 3889*4882a593Smuzhiyun __be32 r3[2]; 3890*4882a593Smuzhiyun }; 3891*4882a593Smuzhiyun 3892*4882a593Smuzhiyun #define FW_DEVLOG_CMD_MEMTYPE_DEVLOG_S 28 3893*4882a593Smuzhiyun #define FW_DEVLOG_CMD_MEMTYPE_DEVLOG_M 0xf 3894*4882a593Smuzhiyun #define FW_DEVLOG_CMD_MEMTYPE_DEVLOG_G(x) \ 3895*4882a593Smuzhiyun (((x) >> FW_DEVLOG_CMD_MEMTYPE_DEVLOG_S) & \ 3896*4882a593Smuzhiyun FW_DEVLOG_CMD_MEMTYPE_DEVLOG_M) 3897*4882a593Smuzhiyun 3898*4882a593Smuzhiyun #define FW_DEVLOG_CMD_MEMADDR16_DEVLOG_S 0 3899*4882a593Smuzhiyun #define FW_DEVLOG_CMD_MEMADDR16_DEVLOG_M 0xfffffff 3900*4882a593Smuzhiyun #define FW_DEVLOG_CMD_MEMADDR16_DEVLOG_G(x) \ 3901*4882a593Smuzhiyun (((x) >> FW_DEVLOG_CMD_MEMADDR16_DEVLOG_S) & \ 3902*4882a593Smuzhiyun FW_DEVLOG_CMD_MEMADDR16_DEVLOG_M) 3903*4882a593Smuzhiyun 3904*4882a593Smuzhiyun /* P C I E F W P F 7 R E G I S T E R */ 3905*4882a593Smuzhiyun 3906*4882a593Smuzhiyun /* PF7 stores the Firmware Device Log parameters which allows Host Drivers to 3907*4882a593Smuzhiyun * access the "devlog" which needing to contact firmware. The encoding is 3908*4882a593Smuzhiyun * mostly the same as that returned by the DEVLOG command except for the size 3909*4882a593Smuzhiyun * which is encoded as the number of entries in multiples-1 of 128 here rather 3910*4882a593Smuzhiyun * than the memory size as is done in the DEVLOG command. Thus, 0 means 128 3911*4882a593Smuzhiyun * and 15 means 2048. This of course in turn constrains the allowed values 3912*4882a593Smuzhiyun * for the devlog size ... 3913*4882a593Smuzhiyun */ 3914*4882a593Smuzhiyun #define PCIE_FW_PF_DEVLOG 7 3915*4882a593Smuzhiyun 3916*4882a593Smuzhiyun #define PCIE_FW_PF_DEVLOG_NENTRIES128_S 28 3917*4882a593Smuzhiyun #define PCIE_FW_PF_DEVLOG_NENTRIES128_M 0xf 3918*4882a593Smuzhiyun #define PCIE_FW_PF_DEVLOG_NENTRIES128_V(x) \ 3919*4882a593Smuzhiyun ((x) << PCIE_FW_PF_DEVLOG_NENTRIES128_S) 3920*4882a593Smuzhiyun #define PCIE_FW_PF_DEVLOG_NENTRIES128_G(x) \ 3921*4882a593Smuzhiyun (((x) >> PCIE_FW_PF_DEVLOG_NENTRIES128_S) & \ 3922*4882a593Smuzhiyun PCIE_FW_PF_DEVLOG_NENTRIES128_M) 3923*4882a593Smuzhiyun 3924*4882a593Smuzhiyun #define PCIE_FW_PF_DEVLOG_ADDR16_S 4 3925*4882a593Smuzhiyun #define PCIE_FW_PF_DEVLOG_ADDR16_M 0xffffff 3926*4882a593Smuzhiyun #define PCIE_FW_PF_DEVLOG_ADDR16_V(x) ((x) << PCIE_FW_PF_DEVLOG_ADDR16_S) 3927*4882a593Smuzhiyun #define PCIE_FW_PF_DEVLOG_ADDR16_G(x) \ 3928*4882a593Smuzhiyun (((x) >> PCIE_FW_PF_DEVLOG_ADDR16_S) & PCIE_FW_PF_DEVLOG_ADDR16_M) 3929*4882a593Smuzhiyun 3930*4882a593Smuzhiyun #define PCIE_FW_PF_DEVLOG_MEMTYPE_S 0 3931*4882a593Smuzhiyun #define PCIE_FW_PF_DEVLOG_MEMTYPE_M 0xf 3932*4882a593Smuzhiyun #define PCIE_FW_PF_DEVLOG_MEMTYPE_V(x) ((x) << PCIE_FW_PF_DEVLOG_MEMTYPE_S) 3933*4882a593Smuzhiyun #define PCIE_FW_PF_DEVLOG_MEMTYPE_G(x) \ 3934*4882a593Smuzhiyun (((x) >> PCIE_FW_PF_DEVLOG_MEMTYPE_S) & PCIE_FW_PF_DEVLOG_MEMTYPE_M) 3935*4882a593Smuzhiyun 3936*4882a593Smuzhiyun #define MAX_IMM_OFLD_TX_DATA_WR_LEN (0xff + sizeof(struct fw_ofld_tx_data_wr)) 3937*4882a593Smuzhiyun 3938*4882a593Smuzhiyun struct fw_crypto_lookaside_wr { 3939*4882a593Smuzhiyun __be32 op_to_cctx_size; 3940*4882a593Smuzhiyun __be32 len16_pkd; 3941*4882a593Smuzhiyun __be32 session_id; 3942*4882a593Smuzhiyun __be32 rx_chid_to_rx_q_id; 3943*4882a593Smuzhiyun __be32 key_addr; 3944*4882a593Smuzhiyun __be32 pld_size_hash_size; 3945*4882a593Smuzhiyun __be64 cookie; 3946*4882a593Smuzhiyun }; 3947*4882a593Smuzhiyun 3948*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_OPCODE_S 24 3949*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_OPCODE_M 0xff 3950*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_OPCODE_V(x) \ 3951*4882a593Smuzhiyun ((x) << FW_CRYPTO_LOOKASIDE_WR_OPCODE_S) 3952*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_OPCODE_G(x) \ 3953*4882a593Smuzhiyun (((x) >> FW_CRYPTO_LOOKASIDE_WR_OPCODE_S) & \ 3954*4882a593Smuzhiyun FW_CRYPTO_LOOKASIDE_WR_OPCODE_M) 3955*4882a593Smuzhiyun 3956*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_COMPL_S 23 3957*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_COMPL_M 0x1 3958*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_COMPL_V(x) \ 3959*4882a593Smuzhiyun ((x) << FW_CRYPTO_LOOKASIDE_WR_COMPL_S) 3960*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_COMPL_G(x) \ 3961*4882a593Smuzhiyun (((x) >> FW_CRYPTO_LOOKASIDE_WR_COMPL_S) & \ 3962*4882a593Smuzhiyun FW_CRYPTO_LOOKASIDE_WR_COMPL_M) 3963*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_COMPL_F FW_CRYPTO_LOOKASIDE_WR_COMPL_V(1U) 3964*4882a593Smuzhiyun 3965*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_IMM_LEN_S 15 3966*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_IMM_LEN_M 0xff 3967*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_IMM_LEN_V(x) \ 3968*4882a593Smuzhiyun ((x) << FW_CRYPTO_LOOKASIDE_WR_IMM_LEN_S) 3969*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_IMM_LEN_G(x) \ 3970*4882a593Smuzhiyun (((x) >> FW_CRYPTO_LOOKASIDE_WR_IMM_LEN_S) & \ 3971*4882a593Smuzhiyun FW_CRYPTO_LOOKASIDE_WR_IMM_LEN_M) 3972*4882a593Smuzhiyun 3973*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_CCTX_LOC_S 5 3974*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_CCTX_LOC_M 0x3 3975*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_CCTX_LOC_V(x) \ 3976*4882a593Smuzhiyun ((x) << FW_CRYPTO_LOOKASIDE_WR_CCTX_LOC_S) 3977*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_CCTX_LOC_G(x) \ 3978*4882a593Smuzhiyun (((x) >> FW_CRYPTO_LOOKASIDE_WR_CCTX_LOC_S) & \ 3979*4882a593Smuzhiyun FW_CRYPTO_LOOKASIDE_WR_CCTX_LOC_M) 3980*4882a593Smuzhiyun 3981*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_CCTX_SIZE_S 0 3982*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_CCTX_SIZE_M 0x1f 3983*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_CCTX_SIZE_V(x) \ 3984*4882a593Smuzhiyun ((x) << FW_CRYPTO_LOOKASIDE_WR_CCTX_SIZE_S) 3985*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_CCTX_SIZE_G(x) \ 3986*4882a593Smuzhiyun (((x) >> FW_CRYPTO_LOOKASIDE_WR_CCTX_SIZE_S) & \ 3987*4882a593Smuzhiyun FW_CRYPTO_LOOKASIDE_WR_CCTX_SIZE_M) 3988*4882a593Smuzhiyun 3989*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_LEN16_S 0 3990*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_LEN16_M 0xff 3991*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_LEN16_V(x) \ 3992*4882a593Smuzhiyun ((x) << FW_CRYPTO_LOOKASIDE_WR_LEN16_S) 3993*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_LEN16_G(x) \ 3994*4882a593Smuzhiyun (((x) >> FW_CRYPTO_LOOKASIDE_WR_LEN16_S) & \ 3995*4882a593Smuzhiyun FW_CRYPTO_LOOKASIDE_WR_LEN16_M) 3996*4882a593Smuzhiyun 3997*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_RX_CHID_S 29 3998*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_RX_CHID_M 0x3 3999*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_RX_CHID_V(x) \ 4000*4882a593Smuzhiyun ((x) << FW_CRYPTO_LOOKASIDE_WR_RX_CHID_S) 4001*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_RX_CHID_G(x) \ 4002*4882a593Smuzhiyun (((x) >> FW_CRYPTO_LOOKASIDE_WR_RX_CHID_S) & \ 4003*4882a593Smuzhiyun FW_CRYPTO_LOOKASIDE_WR_RX_CHID_M) 4004*4882a593Smuzhiyun 4005*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_LCB_S 27 4006*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_LCB_M 0x3 4007*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_LCB_V(x) \ 4008*4882a593Smuzhiyun ((x) << FW_CRYPTO_LOOKASIDE_WR_LCB_S) 4009*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_LCB_G(x) \ 4010*4882a593Smuzhiyun (((x) >> FW_CRYPTO_LOOKASIDE_WR_LCB_S) & FW_CRYPTO_LOOKASIDE_WR_LCB_M) 4011*4882a593Smuzhiyun 4012*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_PHASH_S 25 4013*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_PHASH_M 0x3 4014*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_PHASH_V(x) \ 4015*4882a593Smuzhiyun ((x) << FW_CRYPTO_LOOKASIDE_WR_PHASH_S) 4016*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_PHASH_G(x) \ 4017*4882a593Smuzhiyun (((x) >> FW_CRYPTO_LOOKASIDE_WR_PHASH_S) & \ 4018*4882a593Smuzhiyun FW_CRYPTO_LOOKASIDE_WR_PHASH_M) 4019*4882a593Smuzhiyun 4020*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_IV_S 23 4021*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_IV_M 0x3 4022*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_IV_V(x) \ 4023*4882a593Smuzhiyun ((x) << FW_CRYPTO_LOOKASIDE_WR_IV_S) 4024*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_IV_G(x) \ 4025*4882a593Smuzhiyun (((x) >> FW_CRYPTO_LOOKASIDE_WR_IV_S) & FW_CRYPTO_LOOKASIDE_WR_IV_M) 4026*4882a593Smuzhiyun 4027*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_FQIDX_S 15 4028*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_FQIDX_M 0xff 4029*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_FQIDX_V(x) \ 4030*4882a593Smuzhiyun ((x) << FW_CRYPTO_LOOKASIDE_WR_FQIDX_S) 4031*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_FQIDX_G(x) \ 4032*4882a593Smuzhiyun (((x) >> FW_CRYPTO_LOOKASIDE_WR_FQIDX_S) & \ 4033*4882a593Smuzhiyun FW_CRYPTO_LOOKASIDE_WR_FQIDX_M) 4034*4882a593Smuzhiyun 4035*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_TX_CH_S 10 4036*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_TX_CH_M 0x3 4037*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_TX_CH_V(x) \ 4038*4882a593Smuzhiyun ((x) << FW_CRYPTO_LOOKASIDE_WR_TX_CH_S) 4039*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_TX_CH_G(x) \ 4040*4882a593Smuzhiyun (((x) >> FW_CRYPTO_LOOKASIDE_WR_TX_CH_S) & \ 4041*4882a593Smuzhiyun FW_CRYPTO_LOOKASIDE_WR_TX_CH_M) 4042*4882a593Smuzhiyun 4043*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_RX_Q_ID_S 0 4044*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_RX_Q_ID_M 0x3ff 4045*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_RX_Q_ID_V(x) \ 4046*4882a593Smuzhiyun ((x) << FW_CRYPTO_LOOKASIDE_WR_RX_Q_ID_S) 4047*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_RX_Q_ID_G(x) \ 4048*4882a593Smuzhiyun (((x) >> FW_CRYPTO_LOOKASIDE_WR_RX_Q_ID_S) & \ 4049*4882a593Smuzhiyun FW_CRYPTO_LOOKASIDE_WR_RX_Q_ID_M) 4050*4882a593Smuzhiyun 4051*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_PLD_SIZE_S 24 4052*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_PLD_SIZE_M 0xff 4053*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_PLD_SIZE_V(x) \ 4054*4882a593Smuzhiyun ((x) << FW_CRYPTO_LOOKASIDE_WR_PLD_SIZE_S) 4055*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_PLD_SIZE_G(x) \ 4056*4882a593Smuzhiyun (((x) >> FW_CRYPTO_LOOKASIDE_WR_PLD_SIZE_S) & \ 4057*4882a593Smuzhiyun FW_CRYPTO_LOOKASIDE_WR_PLD_SIZE_M) 4058*4882a593Smuzhiyun 4059*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_HASH_SIZE_S 17 4060*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_HASH_SIZE_M 0x7f 4061*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_HASH_SIZE_V(x) \ 4062*4882a593Smuzhiyun ((x) << FW_CRYPTO_LOOKASIDE_WR_HASH_SIZE_S) 4063*4882a593Smuzhiyun #define FW_CRYPTO_LOOKASIDE_WR_HASH_SIZE_G(x) \ 4064*4882a593Smuzhiyun (((x) >> FW_CRYPTO_LOOKASIDE_WR_HASH_SIZE_S) & \ 4065*4882a593Smuzhiyun FW_CRYPTO_LOOKASIDE_WR_HASH_SIZE_M) 4066*4882a593Smuzhiyun 4067*4882a593Smuzhiyun struct fw_tlstx_data_wr { 4068*4882a593Smuzhiyun __be32 op_to_immdlen; 4069*4882a593Smuzhiyun __be32 flowid_len16; 4070*4882a593Smuzhiyun __be32 plen; 4071*4882a593Smuzhiyun __be32 lsodisable_to_flags; 4072*4882a593Smuzhiyun __be32 r5; 4073*4882a593Smuzhiyun __be32 ctxloc_to_exp; 4074*4882a593Smuzhiyun __be16 mfs; 4075*4882a593Smuzhiyun __be16 adjustedplen_pkd; 4076*4882a593Smuzhiyun __be16 expinplenmax_pkd; 4077*4882a593Smuzhiyun u8 pdusinplenmax_pkd; 4078*4882a593Smuzhiyun u8 r10; 4079*4882a593Smuzhiyun }; 4080*4882a593Smuzhiyun 4081*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_OPCODE_S 24 4082*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_OPCODE_M 0xff 4083*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_OPCODE_V(x) ((x) << FW_TLSTX_DATA_WR_OPCODE_S) 4084*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_OPCODE_G(x) \ 4085*4882a593Smuzhiyun (((x) >> FW_TLSTX_DATA_WR_OPCODE_S) & FW_TLSTX_DATA_WR_OPCODE_M) 4086*4882a593Smuzhiyun 4087*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_COMPL_S 21 4088*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_COMPL_M 0x1 4089*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_COMPL_V(x) ((x) << FW_TLSTX_DATA_WR_COMPL_S) 4090*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_COMPL_G(x) \ 4091*4882a593Smuzhiyun (((x) >> FW_TLSTX_DATA_WR_COMPL_S) & FW_TLSTX_DATA_WR_COMPL_M) 4092*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_COMPL_F FW_TLSTX_DATA_WR_COMPL_V(1U) 4093*4882a593Smuzhiyun 4094*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_IMMDLEN_S 0 4095*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_IMMDLEN_M 0xff 4096*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_IMMDLEN_V(x) ((x) << FW_TLSTX_DATA_WR_IMMDLEN_S) 4097*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_IMMDLEN_G(x) \ 4098*4882a593Smuzhiyun (((x) >> FW_TLSTX_DATA_WR_IMMDLEN_S) & FW_TLSTX_DATA_WR_IMMDLEN_M) 4099*4882a593Smuzhiyun 4100*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_FLOWID_S 8 4101*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_FLOWID_M 0xfffff 4102*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_FLOWID_V(x) ((x) << FW_TLSTX_DATA_WR_FLOWID_S) 4103*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_FLOWID_G(x) \ 4104*4882a593Smuzhiyun (((x) >> FW_TLSTX_DATA_WR_FLOWID_S) & FW_TLSTX_DATA_WR_FLOWID_M) 4105*4882a593Smuzhiyun 4106*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_LEN16_S 0 4107*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_LEN16_M 0xff 4108*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_LEN16_V(x) ((x) << FW_TLSTX_DATA_WR_LEN16_S) 4109*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_LEN16_G(x) \ 4110*4882a593Smuzhiyun (((x) >> FW_TLSTX_DATA_WR_LEN16_S) & FW_TLSTX_DATA_WR_LEN16_M) 4111*4882a593Smuzhiyun 4112*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_LSODISABLE_S 31 4113*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_LSODISABLE_M 0x1 4114*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_LSODISABLE_V(x) \ 4115*4882a593Smuzhiyun ((x) << FW_TLSTX_DATA_WR_LSODISABLE_S) 4116*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_LSODISABLE_G(x) \ 4117*4882a593Smuzhiyun (((x) >> FW_TLSTX_DATA_WR_LSODISABLE_S) & FW_TLSTX_DATA_WR_LSODISABLE_M) 4118*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_LSODISABLE_F FW_TLSTX_DATA_WR_LSODISABLE_V(1U) 4119*4882a593Smuzhiyun 4120*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_ALIGNPLD_S 30 4121*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_ALIGNPLD_M 0x1 4122*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_ALIGNPLD_V(x) ((x) << FW_TLSTX_DATA_WR_ALIGNPLD_S) 4123*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_ALIGNPLD_G(x) \ 4124*4882a593Smuzhiyun (((x) >> FW_TLSTX_DATA_WR_ALIGNPLD_S) & FW_TLSTX_DATA_WR_ALIGNPLD_M) 4125*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_ALIGNPLD_F FW_TLSTX_DATA_WR_ALIGNPLD_V(1U) 4126*4882a593Smuzhiyun 4127*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_ALIGNPLDSHOVE_S 29 4128*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_ALIGNPLDSHOVE_M 0x1 4129*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_ALIGNPLDSHOVE_V(x) \ 4130*4882a593Smuzhiyun ((x) << FW_TLSTX_DATA_WR_ALIGNPLDSHOVE_S) 4131*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_ALIGNPLDSHOVE_G(x) \ 4132*4882a593Smuzhiyun (((x) >> FW_TLSTX_DATA_WR_ALIGNPLDSHOVE_S) & \ 4133*4882a593Smuzhiyun FW_TLSTX_DATA_WR_ALIGNPLDSHOVE_M) 4134*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_ALIGNPLDSHOVE_F FW_TLSTX_DATA_WR_ALIGNPLDSHOVE_V(1U) 4135*4882a593Smuzhiyun 4136*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_FLAGS_S 0 4137*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_FLAGS_M 0xfffffff 4138*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_FLAGS_V(x) ((x) << FW_TLSTX_DATA_WR_FLAGS_S) 4139*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_FLAGS_G(x) \ 4140*4882a593Smuzhiyun (((x) >> FW_TLSTX_DATA_WR_FLAGS_S) & FW_TLSTX_DATA_WR_FLAGS_M) 4141*4882a593Smuzhiyun 4142*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_CTXLOC_S 30 4143*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_CTXLOC_M 0x3 4144*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_CTXLOC_V(x) ((x) << FW_TLSTX_DATA_WR_CTXLOC_S) 4145*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_CTXLOC_G(x) \ 4146*4882a593Smuzhiyun (((x) >> FW_TLSTX_DATA_WR_CTXLOC_S) & FW_TLSTX_DATA_WR_CTXLOC_M) 4147*4882a593Smuzhiyun 4148*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_IVDSGL_S 29 4149*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_IVDSGL_M 0x1 4150*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_IVDSGL_V(x) ((x) << FW_TLSTX_DATA_WR_IVDSGL_S) 4151*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_IVDSGL_G(x) \ 4152*4882a593Smuzhiyun (((x) >> FW_TLSTX_DATA_WR_IVDSGL_S) & FW_TLSTX_DATA_WR_IVDSGL_M) 4153*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_IVDSGL_F FW_TLSTX_DATA_WR_IVDSGL_V(1U) 4154*4882a593Smuzhiyun 4155*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_KEYSIZE_S 24 4156*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_KEYSIZE_M 0x1f 4157*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_KEYSIZE_V(x) ((x) << FW_TLSTX_DATA_WR_KEYSIZE_S) 4158*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_KEYSIZE_G(x) \ 4159*4882a593Smuzhiyun (((x) >> FW_TLSTX_DATA_WR_KEYSIZE_S) & FW_TLSTX_DATA_WR_KEYSIZE_M) 4160*4882a593Smuzhiyun 4161*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_NUMIVS_S 14 4162*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_NUMIVS_M 0xff 4163*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_NUMIVS_V(x) ((x) << FW_TLSTX_DATA_WR_NUMIVS_S) 4164*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_NUMIVS_G(x) \ 4165*4882a593Smuzhiyun (((x) >> FW_TLSTX_DATA_WR_NUMIVS_S) & FW_TLSTX_DATA_WR_NUMIVS_M) 4166*4882a593Smuzhiyun 4167*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_EXP_S 0 4168*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_EXP_M 0x3fff 4169*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_EXP_V(x) ((x) << FW_TLSTX_DATA_WR_EXP_S) 4170*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_EXP_G(x) \ 4171*4882a593Smuzhiyun (((x) >> FW_TLSTX_DATA_WR_EXP_S) & FW_TLSTX_DATA_WR_EXP_M) 4172*4882a593Smuzhiyun 4173*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_ADJUSTEDPLEN_S 1 4174*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_ADJUSTEDPLEN_V(x) \ 4175*4882a593Smuzhiyun ((x) << FW_TLSTX_DATA_WR_ADJUSTEDPLEN_S) 4176*4882a593Smuzhiyun 4177*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_EXPINPLENMAX_S 4 4178*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_EXPINPLENMAX_V(x) \ 4179*4882a593Smuzhiyun ((x) << FW_TLSTX_DATA_WR_EXPINPLENMAX_S) 4180*4882a593Smuzhiyun 4181*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_PDUSINPLENMAX_S 2 4182*4882a593Smuzhiyun #define FW_TLSTX_DATA_WR_PDUSINPLENMAX_V(x) \ 4183*4882a593Smuzhiyun ((x) << FW_TLSTX_DATA_WR_PDUSINPLENMAX_S) 4184*4882a593Smuzhiyun 4185*4882a593Smuzhiyun #endif /* _T4FW_INTERFACE_H_ */ 4186