1*4882a593Smuzhiyun /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */ 2*4882a593Smuzhiyun /* QLogic qed NIC Driver 3*4882a593Smuzhiyun * Copyright (c) 2015-2016 QLogic Corporation 4*4882a593Smuzhiyun * Copyright (c) 2019-2020 Marvell International Ltd. 5*4882a593Smuzhiyun */ 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun #ifndef _COMMON_HSI_H 8*4882a593Smuzhiyun #define _COMMON_HSI_H 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun #include <linux/types.h> 11*4882a593Smuzhiyun #include <asm/byteorder.h> 12*4882a593Smuzhiyun #include <linux/bitops.h> 13*4882a593Smuzhiyun #include <linux/slab.h> 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun /* dma_addr_t manip */ 16*4882a593Smuzhiyun #define PTR_LO(x) ((u32)(((uintptr_t)(x)) & 0xffffffff)) 17*4882a593Smuzhiyun #define PTR_HI(x) ((u32)((((uintptr_t)(x)) >> 16) >> 16)) 18*4882a593Smuzhiyun #define DMA_LO_LE(x) cpu_to_le32(lower_32_bits(x)) 19*4882a593Smuzhiyun #define DMA_HI_LE(x) cpu_to_le32(upper_32_bits(x)) 20*4882a593Smuzhiyun #define DMA_REGPAIR_LE(x, val) do { \ 21*4882a593Smuzhiyun (x).hi = DMA_HI_LE((val)); \ 22*4882a593Smuzhiyun (x).lo = DMA_LO_LE((val)); \ 23*4882a593Smuzhiyun } while (0) 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun #define HILO_GEN(hi, lo, type) ((((type)(hi)) << 32) + (lo)) 26*4882a593Smuzhiyun #define HILO_64(hi, lo) \ 27*4882a593Smuzhiyun HILO_GEN(le32_to_cpu(hi), le32_to_cpu(lo), u64) 28*4882a593Smuzhiyun #define HILO_64_REGPAIR(regpair) ({ \ 29*4882a593Smuzhiyun typeof(regpair) __regpair = (regpair); \ 30*4882a593Smuzhiyun HILO_64(__regpair.hi, __regpair.lo); }) 31*4882a593Smuzhiyun #define HILO_DMA_REGPAIR(regpair) ((dma_addr_t)HILO_64_REGPAIR(regpair)) 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun #ifndef __COMMON_HSI__ 34*4882a593Smuzhiyun #define __COMMON_HSI__ 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun /********************************/ 37*4882a593Smuzhiyun /* PROTOCOL COMMON FW CONSTANTS */ 38*4882a593Smuzhiyun /********************************/ 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun #define X_FINAL_CLEANUP_AGG_INT 1 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun #define EVENT_RING_PAGE_SIZE_BYTES 4096 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun #define NUM_OF_GLOBAL_QUEUES 128 45*4882a593Smuzhiyun #define COMMON_QUEUE_ENTRY_MAX_BYTE_SIZE 64 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun #define ISCSI_CDU_TASK_SEG_TYPE 0 48*4882a593Smuzhiyun #define FCOE_CDU_TASK_SEG_TYPE 0 49*4882a593Smuzhiyun #define RDMA_CDU_TASK_SEG_TYPE 1 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun #define FW_ASSERT_GENERAL_ATTN_IDX 32 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun /* Queue Zone sizes in bytes */ 55*4882a593Smuzhiyun #define TSTORM_QZONE_SIZE 8 56*4882a593Smuzhiyun #define MSTORM_QZONE_SIZE 16 57*4882a593Smuzhiyun #define USTORM_QZONE_SIZE 8 58*4882a593Smuzhiyun #define XSTORM_QZONE_SIZE 8 59*4882a593Smuzhiyun #define YSTORM_QZONE_SIZE 0 60*4882a593Smuzhiyun #define PSTORM_QZONE_SIZE 0 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun #define MSTORM_VF_ZONE_DEFAULT_SIZE_LOG 7 63*4882a593Smuzhiyun #define ETH_MAX_NUM_RX_QUEUES_PER_VF_DEFAULT 16 64*4882a593Smuzhiyun #define ETH_MAX_NUM_RX_QUEUES_PER_VF_DOUBLE 48 65*4882a593Smuzhiyun #define ETH_MAX_NUM_RX_QUEUES_PER_VF_QUAD 112 66*4882a593Smuzhiyun 67*4882a593Smuzhiyun /********************************/ 68*4882a593Smuzhiyun /* CORE (LIGHT L2) FW CONSTANTS */ 69*4882a593Smuzhiyun /********************************/ 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun #define CORE_LL2_MAX_RAMROD_PER_CON 8 72*4882a593Smuzhiyun #define CORE_LL2_TX_BD_PAGE_SIZE_BYTES 4096 73*4882a593Smuzhiyun #define CORE_LL2_RX_BD_PAGE_SIZE_BYTES 4096 74*4882a593Smuzhiyun #define CORE_LL2_RX_CQE_PAGE_SIZE_BYTES 4096 75*4882a593Smuzhiyun #define CORE_LL2_RX_NUM_NEXT_PAGE_BDS 1 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun #define CORE_LL2_TX_MAX_BDS_PER_PACKET 12 78*4882a593Smuzhiyun 79*4882a593Smuzhiyun #define CORE_SPQE_PAGE_SIZE_BYTES 4096 80*4882a593Smuzhiyun 81*4882a593Smuzhiyun /* Number of LL2 RAM based queues */ 82*4882a593Smuzhiyun #define MAX_NUM_LL2_RX_RAM_QUEUES 32 83*4882a593Smuzhiyun 84*4882a593Smuzhiyun /* Number of LL2 context based queues */ 85*4882a593Smuzhiyun #define MAX_NUM_LL2_RX_CTX_QUEUES 208 86*4882a593Smuzhiyun #define MAX_NUM_LL2_RX_QUEUES \ 87*4882a593Smuzhiyun (MAX_NUM_LL2_RX_RAM_QUEUES + MAX_NUM_LL2_RX_CTX_QUEUES) 88*4882a593Smuzhiyun 89*4882a593Smuzhiyun #define MAX_NUM_LL2_TX_STATS_COUNTERS 48 90*4882a593Smuzhiyun 91*4882a593Smuzhiyun #define FW_MAJOR_VERSION 8 92*4882a593Smuzhiyun #define FW_MINOR_VERSION 42 93*4882a593Smuzhiyun #define FW_REVISION_VERSION 2 94*4882a593Smuzhiyun #define FW_ENGINEERING_VERSION 0 95*4882a593Smuzhiyun 96*4882a593Smuzhiyun /***********************/ 97*4882a593Smuzhiyun /* COMMON HW CONSTANTS */ 98*4882a593Smuzhiyun /***********************/ 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun /* PCI functions */ 101*4882a593Smuzhiyun #define MAX_NUM_PORTS_K2 (4) 102*4882a593Smuzhiyun #define MAX_NUM_PORTS_BB (2) 103*4882a593Smuzhiyun #define MAX_NUM_PORTS (MAX_NUM_PORTS_K2) 104*4882a593Smuzhiyun 105*4882a593Smuzhiyun #define MAX_NUM_PFS_K2 (16) 106*4882a593Smuzhiyun #define MAX_NUM_PFS_BB (8) 107*4882a593Smuzhiyun #define MAX_NUM_PFS (MAX_NUM_PFS_K2) 108*4882a593Smuzhiyun #define MAX_NUM_OF_PFS_IN_CHIP (16) /* On both engines */ 109*4882a593Smuzhiyun 110*4882a593Smuzhiyun #define MAX_NUM_VFS_K2 (192) 111*4882a593Smuzhiyun #define MAX_NUM_VFS_BB (120) 112*4882a593Smuzhiyun #define MAX_NUM_VFS (MAX_NUM_VFS_K2) 113*4882a593Smuzhiyun 114*4882a593Smuzhiyun #define MAX_NUM_FUNCTIONS_BB (MAX_NUM_PFS_BB + MAX_NUM_VFS_BB) 115*4882a593Smuzhiyun 116*4882a593Smuzhiyun #define MAX_FUNCTION_NUMBER_BB (MAX_NUM_PFS + MAX_NUM_VFS_BB) 117*4882a593Smuzhiyun #define MAX_FUNCTION_NUMBER_K2 (MAX_NUM_PFS + MAX_NUM_VFS_K2) 118*4882a593Smuzhiyun #define MAX_NUM_FUNCTIONS (MAX_FUNCTION_NUMBER_K2) 119*4882a593Smuzhiyun 120*4882a593Smuzhiyun #define MAX_NUM_VPORTS_K2 (208) 121*4882a593Smuzhiyun #define MAX_NUM_VPORTS_BB (160) 122*4882a593Smuzhiyun #define MAX_NUM_VPORTS (MAX_NUM_VPORTS_K2) 123*4882a593Smuzhiyun 124*4882a593Smuzhiyun #define MAX_NUM_L2_QUEUES_K2 (320) 125*4882a593Smuzhiyun #define MAX_NUM_L2_QUEUES_BB (256) 126*4882a593Smuzhiyun #define MAX_NUM_L2_QUEUES (MAX_NUM_L2_QUEUES_K2) 127*4882a593Smuzhiyun 128*4882a593Smuzhiyun /* Traffic classes in network-facing blocks (PBF, BTB, NIG, BRB, PRS and QM) */ 129*4882a593Smuzhiyun #define NUM_PHYS_TCS_4PORT_K2 (4) 130*4882a593Smuzhiyun #define NUM_OF_PHYS_TCS (8) 131*4882a593Smuzhiyun #define PURE_LB_TC NUM_OF_PHYS_TCS 132*4882a593Smuzhiyun #define NUM_TCS_4PORT_K2 (NUM_PHYS_TCS_4PORT_K2 + 1) 133*4882a593Smuzhiyun #define NUM_OF_TCS (NUM_OF_PHYS_TCS + 1) 134*4882a593Smuzhiyun 135*4882a593Smuzhiyun /* CIDs */ 136*4882a593Smuzhiyun #define NUM_OF_CONNECTION_TYPES_E4 (8) 137*4882a593Smuzhiyun #define NUM_OF_LCIDS (320) 138*4882a593Smuzhiyun #define NUM_OF_LTIDS (320) 139*4882a593Smuzhiyun 140*4882a593Smuzhiyun /* Global PXP windows (GTT) */ 141*4882a593Smuzhiyun #define NUM_OF_GTT 19 142*4882a593Smuzhiyun #define GTT_DWORD_SIZE_BITS 10 143*4882a593Smuzhiyun #define GTT_BYTE_SIZE_BITS (GTT_DWORD_SIZE_BITS + 2) 144*4882a593Smuzhiyun #define GTT_DWORD_SIZE BIT(GTT_DWORD_SIZE_BITS) 145*4882a593Smuzhiyun 146*4882a593Smuzhiyun /* Tools Version */ 147*4882a593Smuzhiyun #define TOOLS_VERSION 10 148*4882a593Smuzhiyun 149*4882a593Smuzhiyun /*****************/ 150*4882a593Smuzhiyun /* CDU CONSTANTS */ 151*4882a593Smuzhiyun /*****************/ 152*4882a593Smuzhiyun 153*4882a593Smuzhiyun #define CDU_SEG_TYPE_OFFSET_REG_TYPE_SHIFT (17) 154*4882a593Smuzhiyun #define CDU_SEG_TYPE_OFFSET_REG_OFFSET_MASK (0x1ffff) 155*4882a593Smuzhiyun 156*4882a593Smuzhiyun #define CDU_VF_FL_SEG_TYPE_OFFSET_REG_TYPE_SHIFT (12) 157*4882a593Smuzhiyun #define CDU_VF_FL_SEG_TYPE_OFFSET_REG_OFFSET_MASK (0xfff) 158*4882a593Smuzhiyun 159*4882a593Smuzhiyun #define CDU_CONTEXT_VALIDATION_CFG_ENABLE_SHIFT (0) 160*4882a593Smuzhiyun #define CDU_CONTEXT_VALIDATION_CFG_VALIDATION_TYPE_SHIFT (1) 161*4882a593Smuzhiyun #define CDU_CONTEXT_VALIDATION_CFG_USE_TYPE (2) 162*4882a593Smuzhiyun #define CDU_CONTEXT_VALIDATION_CFG_USE_REGION (3) 163*4882a593Smuzhiyun #define CDU_CONTEXT_VALIDATION_CFG_USE_CID (4) 164*4882a593Smuzhiyun #define CDU_CONTEXT_VALIDATION_CFG_USE_ACTIVE (5) 165*4882a593Smuzhiyun 166*4882a593Smuzhiyun /*****************/ 167*4882a593Smuzhiyun /* DQ CONSTANTS */ 168*4882a593Smuzhiyun /*****************/ 169*4882a593Smuzhiyun 170*4882a593Smuzhiyun /* DEMS */ 171*4882a593Smuzhiyun #define DQ_DEMS_LEGACY 0 172*4882a593Smuzhiyun #define DQ_DEMS_TOE_MORE_TO_SEND 3 173*4882a593Smuzhiyun #define DQ_DEMS_TOE_LOCAL_ADV_WND 4 174*4882a593Smuzhiyun #define DQ_DEMS_ROCE_CQ_CONS 7 175*4882a593Smuzhiyun 176*4882a593Smuzhiyun /* XCM agg val selection (HW) */ 177*4882a593Smuzhiyun #define DQ_XCM_AGG_VAL_SEL_WORD2 0 178*4882a593Smuzhiyun #define DQ_XCM_AGG_VAL_SEL_WORD3 1 179*4882a593Smuzhiyun #define DQ_XCM_AGG_VAL_SEL_WORD4 2 180*4882a593Smuzhiyun #define DQ_XCM_AGG_VAL_SEL_WORD5 3 181*4882a593Smuzhiyun #define DQ_XCM_AGG_VAL_SEL_REG3 4 182*4882a593Smuzhiyun #define DQ_XCM_AGG_VAL_SEL_REG4 5 183*4882a593Smuzhiyun #define DQ_XCM_AGG_VAL_SEL_REG5 6 184*4882a593Smuzhiyun #define DQ_XCM_AGG_VAL_SEL_REG6 7 185*4882a593Smuzhiyun 186*4882a593Smuzhiyun /* XCM agg val selection (FW) */ 187*4882a593Smuzhiyun #define DQ_XCM_CORE_TX_BD_CONS_CMD DQ_XCM_AGG_VAL_SEL_WORD3 188*4882a593Smuzhiyun #define DQ_XCM_CORE_TX_BD_PROD_CMD DQ_XCM_AGG_VAL_SEL_WORD4 189*4882a593Smuzhiyun #define DQ_XCM_CORE_SPQ_PROD_CMD DQ_XCM_AGG_VAL_SEL_WORD4 190*4882a593Smuzhiyun #define DQ_XCM_ETH_EDPM_NUM_BDS_CMD DQ_XCM_AGG_VAL_SEL_WORD2 191*4882a593Smuzhiyun #define DQ_XCM_ETH_TX_BD_CONS_CMD DQ_XCM_AGG_VAL_SEL_WORD3 192*4882a593Smuzhiyun #define DQ_XCM_ETH_TX_BD_PROD_CMD DQ_XCM_AGG_VAL_SEL_WORD4 193*4882a593Smuzhiyun #define DQ_XCM_ETH_GO_TO_BD_CONS_CMD DQ_XCM_AGG_VAL_SEL_WORD5 194*4882a593Smuzhiyun #define DQ_XCM_FCOE_SQ_CONS_CMD DQ_XCM_AGG_VAL_SEL_WORD3 195*4882a593Smuzhiyun #define DQ_XCM_FCOE_SQ_PROD_CMD DQ_XCM_AGG_VAL_SEL_WORD4 196*4882a593Smuzhiyun #define DQ_XCM_FCOE_X_FERQ_PROD_CMD DQ_XCM_AGG_VAL_SEL_WORD5 197*4882a593Smuzhiyun #define DQ_XCM_ISCSI_SQ_CONS_CMD DQ_XCM_AGG_VAL_SEL_WORD3 198*4882a593Smuzhiyun #define DQ_XCM_ISCSI_SQ_PROD_CMD DQ_XCM_AGG_VAL_SEL_WORD4 199*4882a593Smuzhiyun #define DQ_XCM_ISCSI_MORE_TO_SEND_SEQ_CMD DQ_XCM_AGG_VAL_SEL_REG3 200*4882a593Smuzhiyun #define DQ_XCM_ISCSI_EXP_STAT_SN_CMD DQ_XCM_AGG_VAL_SEL_REG6 201*4882a593Smuzhiyun #define DQ_XCM_ROCE_SQ_PROD_CMD DQ_XCM_AGG_VAL_SEL_WORD4 202*4882a593Smuzhiyun #define DQ_XCM_TOE_TX_BD_PROD_CMD DQ_XCM_AGG_VAL_SEL_WORD4 203*4882a593Smuzhiyun #define DQ_XCM_TOE_MORE_TO_SEND_SEQ_CMD DQ_XCM_AGG_VAL_SEL_REG3 204*4882a593Smuzhiyun #define DQ_XCM_TOE_LOCAL_ADV_WND_SEQ_CMD DQ_XCM_AGG_VAL_SEL_REG4 205*4882a593Smuzhiyun #define DQ_XCM_ROCE_ACK_EDPM_DORQ_SEQ_CMD DQ_XCM_AGG_VAL_SEL_WORD5 206*4882a593Smuzhiyun 207*4882a593Smuzhiyun /* UCM agg val selection (HW) */ 208*4882a593Smuzhiyun #define DQ_UCM_AGG_VAL_SEL_WORD0 0 209*4882a593Smuzhiyun #define DQ_UCM_AGG_VAL_SEL_WORD1 1 210*4882a593Smuzhiyun #define DQ_UCM_AGG_VAL_SEL_WORD2 2 211*4882a593Smuzhiyun #define DQ_UCM_AGG_VAL_SEL_WORD3 3 212*4882a593Smuzhiyun #define DQ_UCM_AGG_VAL_SEL_REG0 4 213*4882a593Smuzhiyun #define DQ_UCM_AGG_VAL_SEL_REG1 5 214*4882a593Smuzhiyun #define DQ_UCM_AGG_VAL_SEL_REG2 6 215*4882a593Smuzhiyun #define DQ_UCM_AGG_VAL_SEL_REG3 7 216*4882a593Smuzhiyun 217*4882a593Smuzhiyun /* UCM agg val selection (FW) */ 218*4882a593Smuzhiyun #define DQ_UCM_ETH_PMD_TX_CONS_CMD DQ_UCM_AGG_VAL_SEL_WORD2 219*4882a593Smuzhiyun #define DQ_UCM_ETH_PMD_RX_CONS_CMD DQ_UCM_AGG_VAL_SEL_WORD3 220*4882a593Smuzhiyun #define DQ_UCM_ROCE_CQ_CONS_CMD DQ_UCM_AGG_VAL_SEL_REG0 221*4882a593Smuzhiyun #define DQ_UCM_ROCE_CQ_PROD_CMD DQ_UCM_AGG_VAL_SEL_REG2 222*4882a593Smuzhiyun 223*4882a593Smuzhiyun /* TCM agg val selection (HW) */ 224*4882a593Smuzhiyun #define DQ_TCM_AGG_VAL_SEL_WORD0 0 225*4882a593Smuzhiyun #define DQ_TCM_AGG_VAL_SEL_WORD1 1 226*4882a593Smuzhiyun #define DQ_TCM_AGG_VAL_SEL_WORD2 2 227*4882a593Smuzhiyun #define DQ_TCM_AGG_VAL_SEL_WORD3 3 228*4882a593Smuzhiyun #define DQ_TCM_AGG_VAL_SEL_REG1 4 229*4882a593Smuzhiyun #define DQ_TCM_AGG_VAL_SEL_REG2 5 230*4882a593Smuzhiyun #define DQ_TCM_AGG_VAL_SEL_REG6 6 231*4882a593Smuzhiyun #define DQ_TCM_AGG_VAL_SEL_REG9 7 232*4882a593Smuzhiyun 233*4882a593Smuzhiyun /* TCM agg val selection (FW) */ 234*4882a593Smuzhiyun #define DQ_TCM_L2B_BD_PROD_CMD \ 235*4882a593Smuzhiyun DQ_TCM_AGG_VAL_SEL_WORD1 236*4882a593Smuzhiyun #define DQ_TCM_ROCE_RQ_PROD_CMD \ 237*4882a593Smuzhiyun DQ_TCM_AGG_VAL_SEL_WORD0 238*4882a593Smuzhiyun 239*4882a593Smuzhiyun /* XCM agg counter flag selection (HW) */ 240*4882a593Smuzhiyun #define DQ_XCM_AGG_FLG_SHIFT_BIT14 0 241*4882a593Smuzhiyun #define DQ_XCM_AGG_FLG_SHIFT_BIT15 1 242*4882a593Smuzhiyun #define DQ_XCM_AGG_FLG_SHIFT_CF12 2 243*4882a593Smuzhiyun #define DQ_XCM_AGG_FLG_SHIFT_CF13 3 244*4882a593Smuzhiyun #define DQ_XCM_AGG_FLG_SHIFT_CF18 4 245*4882a593Smuzhiyun #define DQ_XCM_AGG_FLG_SHIFT_CF19 5 246*4882a593Smuzhiyun #define DQ_XCM_AGG_FLG_SHIFT_CF22 6 247*4882a593Smuzhiyun #define DQ_XCM_AGG_FLG_SHIFT_CF23 7 248*4882a593Smuzhiyun 249*4882a593Smuzhiyun /* XCM agg counter flag selection (FW) */ 250*4882a593Smuzhiyun #define DQ_XCM_CORE_DQ_CF_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF18) 251*4882a593Smuzhiyun #define DQ_XCM_CORE_TERMINATE_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF19) 252*4882a593Smuzhiyun #define DQ_XCM_CORE_SLOW_PATH_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF22) 253*4882a593Smuzhiyun #define DQ_XCM_ETH_DQ_CF_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF18) 254*4882a593Smuzhiyun #define DQ_XCM_ETH_TERMINATE_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF19) 255*4882a593Smuzhiyun #define DQ_XCM_ETH_SLOW_PATH_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF22) 256*4882a593Smuzhiyun #define DQ_XCM_ETH_TPH_EN_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF23) 257*4882a593Smuzhiyun #define DQ_XCM_FCOE_SLOW_PATH_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF22) 258*4882a593Smuzhiyun #define DQ_XCM_ISCSI_DQ_FLUSH_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF19) 259*4882a593Smuzhiyun #define DQ_XCM_ISCSI_SLOW_PATH_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF22) 260*4882a593Smuzhiyun #define DQ_XCM_ISCSI_PROC_ONLY_CLEANUP_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF23) 261*4882a593Smuzhiyun #define DQ_XCM_TOE_DQ_FLUSH_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF19) 262*4882a593Smuzhiyun #define DQ_XCM_TOE_SLOW_PATH_CMD BIT(DQ_XCM_AGG_FLG_SHIFT_CF22) 263*4882a593Smuzhiyun 264*4882a593Smuzhiyun /* UCM agg counter flag selection (HW) */ 265*4882a593Smuzhiyun #define DQ_UCM_AGG_FLG_SHIFT_CF0 0 266*4882a593Smuzhiyun #define DQ_UCM_AGG_FLG_SHIFT_CF1 1 267*4882a593Smuzhiyun #define DQ_UCM_AGG_FLG_SHIFT_CF3 2 268*4882a593Smuzhiyun #define DQ_UCM_AGG_FLG_SHIFT_CF4 3 269*4882a593Smuzhiyun #define DQ_UCM_AGG_FLG_SHIFT_CF5 4 270*4882a593Smuzhiyun #define DQ_UCM_AGG_FLG_SHIFT_CF6 5 271*4882a593Smuzhiyun #define DQ_UCM_AGG_FLG_SHIFT_RULE0EN 6 272*4882a593Smuzhiyun #define DQ_UCM_AGG_FLG_SHIFT_RULE1EN 7 273*4882a593Smuzhiyun 274*4882a593Smuzhiyun /* UCM agg counter flag selection (FW) */ 275*4882a593Smuzhiyun #define DQ_UCM_ETH_PMD_TX_ARM_CMD BIT(DQ_UCM_AGG_FLG_SHIFT_CF4) 276*4882a593Smuzhiyun #define DQ_UCM_ETH_PMD_RX_ARM_CMD BIT(DQ_UCM_AGG_FLG_SHIFT_CF5) 277*4882a593Smuzhiyun #define DQ_UCM_ROCE_CQ_ARM_SE_CF_CMD BIT(DQ_UCM_AGG_FLG_SHIFT_CF4) 278*4882a593Smuzhiyun #define DQ_UCM_ROCE_CQ_ARM_CF_CMD BIT(DQ_UCM_AGG_FLG_SHIFT_CF5) 279*4882a593Smuzhiyun #define DQ_UCM_TOE_TIMER_STOP_ALL_CMD BIT(DQ_UCM_AGG_FLG_SHIFT_CF3) 280*4882a593Smuzhiyun #define DQ_UCM_TOE_SLOW_PATH_CF_CMD BIT(DQ_UCM_AGG_FLG_SHIFT_CF4) 281*4882a593Smuzhiyun #define DQ_UCM_TOE_DQ_CF_CMD BIT(DQ_UCM_AGG_FLG_SHIFT_CF5) 282*4882a593Smuzhiyun 283*4882a593Smuzhiyun /* TCM agg counter flag selection (HW) */ 284*4882a593Smuzhiyun #define DQ_TCM_AGG_FLG_SHIFT_CF0 0 285*4882a593Smuzhiyun #define DQ_TCM_AGG_FLG_SHIFT_CF1 1 286*4882a593Smuzhiyun #define DQ_TCM_AGG_FLG_SHIFT_CF2 2 287*4882a593Smuzhiyun #define DQ_TCM_AGG_FLG_SHIFT_CF3 3 288*4882a593Smuzhiyun #define DQ_TCM_AGG_FLG_SHIFT_CF4 4 289*4882a593Smuzhiyun #define DQ_TCM_AGG_FLG_SHIFT_CF5 5 290*4882a593Smuzhiyun #define DQ_TCM_AGG_FLG_SHIFT_CF6 6 291*4882a593Smuzhiyun #define DQ_TCM_AGG_FLG_SHIFT_CF7 7 292*4882a593Smuzhiyun /* TCM agg counter flag selection (FW) */ 293*4882a593Smuzhiyun #define DQ_TCM_FCOE_FLUSH_Q0_CMD BIT(DQ_TCM_AGG_FLG_SHIFT_CF1) 294*4882a593Smuzhiyun #define DQ_TCM_FCOE_DUMMY_TIMER_CMD BIT(DQ_TCM_AGG_FLG_SHIFT_CF2) 295*4882a593Smuzhiyun #define DQ_TCM_FCOE_TIMER_STOP_ALL_CMD BIT(DQ_TCM_AGG_FLG_SHIFT_CF3) 296*4882a593Smuzhiyun #define DQ_TCM_ISCSI_FLUSH_Q0_CMD BIT(DQ_TCM_AGG_FLG_SHIFT_CF1) 297*4882a593Smuzhiyun #define DQ_TCM_ISCSI_TIMER_STOP_ALL_CMD BIT(DQ_TCM_AGG_FLG_SHIFT_CF3) 298*4882a593Smuzhiyun #define DQ_TCM_TOE_FLUSH_Q0_CMD BIT(DQ_TCM_AGG_FLG_SHIFT_CF1) 299*4882a593Smuzhiyun #define DQ_TCM_TOE_TIMER_STOP_ALL_CMD BIT(DQ_TCM_AGG_FLG_SHIFT_CF3) 300*4882a593Smuzhiyun #define DQ_TCM_IWARP_POST_RQ_CF_CMD BIT(DQ_TCM_AGG_FLG_SHIFT_CF1) 301*4882a593Smuzhiyun 302*4882a593Smuzhiyun /* PWM address mapping */ 303*4882a593Smuzhiyun #define DQ_PWM_OFFSET_DPM_BASE 0x0 304*4882a593Smuzhiyun #define DQ_PWM_OFFSET_DPM_END 0x27 305*4882a593Smuzhiyun #define DQ_PWM_OFFSET_XCM16_BASE 0x40 306*4882a593Smuzhiyun #define DQ_PWM_OFFSET_XCM32_BASE 0x44 307*4882a593Smuzhiyun #define DQ_PWM_OFFSET_UCM16_BASE 0x48 308*4882a593Smuzhiyun #define DQ_PWM_OFFSET_UCM32_BASE 0x4C 309*4882a593Smuzhiyun #define DQ_PWM_OFFSET_UCM16_4 0x50 310*4882a593Smuzhiyun #define DQ_PWM_OFFSET_TCM16_BASE 0x58 311*4882a593Smuzhiyun #define DQ_PWM_OFFSET_TCM32_BASE 0x5C 312*4882a593Smuzhiyun #define DQ_PWM_OFFSET_XCM_FLAGS 0x68 313*4882a593Smuzhiyun #define DQ_PWM_OFFSET_UCM_FLAGS 0x69 314*4882a593Smuzhiyun #define DQ_PWM_OFFSET_TCM_FLAGS 0x6B 315*4882a593Smuzhiyun 316*4882a593Smuzhiyun #define DQ_PWM_OFFSET_XCM_RDMA_SQ_PROD (DQ_PWM_OFFSET_XCM16_BASE + 2) 317*4882a593Smuzhiyun #define DQ_PWM_OFFSET_UCM_RDMA_CQ_CONS_32BIT (DQ_PWM_OFFSET_UCM32_BASE) 318*4882a593Smuzhiyun #define DQ_PWM_OFFSET_UCM_RDMA_CQ_CONS_16BIT (DQ_PWM_OFFSET_UCM16_4) 319*4882a593Smuzhiyun #define DQ_PWM_OFFSET_UCM_RDMA_INT_TIMEOUT (DQ_PWM_OFFSET_UCM16_BASE + 2) 320*4882a593Smuzhiyun #define DQ_PWM_OFFSET_UCM_RDMA_ARM_FLAGS (DQ_PWM_OFFSET_UCM_FLAGS) 321*4882a593Smuzhiyun #define DQ_PWM_OFFSET_TCM_ROCE_RQ_PROD (DQ_PWM_OFFSET_TCM16_BASE + 1) 322*4882a593Smuzhiyun #define DQ_PWM_OFFSET_TCM_IWARP_RQ_PROD (DQ_PWM_OFFSET_TCM16_BASE + 3) 323*4882a593Smuzhiyun 324*4882a593Smuzhiyun /* DQ_DEMS_AGG_VAL_BASE */ 325*4882a593Smuzhiyun #define DQ_PWM_OFFSET_TCM_LL2_PROD_UPDATE \ 326*4882a593Smuzhiyun (DQ_PWM_OFFSET_TCM32_BASE + DQ_TCM_AGG_VAL_SEL_REG9 - 4) 327*4882a593Smuzhiyun 328*4882a593Smuzhiyun #define DQ_REGION_SHIFT (12) 329*4882a593Smuzhiyun 330*4882a593Smuzhiyun /* DPM */ 331*4882a593Smuzhiyun #define DQ_DPM_WQE_BUFF_SIZE (320) 332*4882a593Smuzhiyun 333*4882a593Smuzhiyun /* Conn type ranges */ 334*4882a593Smuzhiyun #define DQ_CONN_TYPE_RANGE_SHIFT (4) 335*4882a593Smuzhiyun 336*4882a593Smuzhiyun /*****************/ 337*4882a593Smuzhiyun /* QM CONSTANTS */ 338*4882a593Smuzhiyun /*****************/ 339*4882a593Smuzhiyun 340*4882a593Smuzhiyun /* Number of TX queues in the QM */ 341*4882a593Smuzhiyun #define MAX_QM_TX_QUEUES_K2 512 342*4882a593Smuzhiyun #define MAX_QM_TX_QUEUES_BB 448 343*4882a593Smuzhiyun #define MAX_QM_TX_QUEUES MAX_QM_TX_QUEUES_K2 344*4882a593Smuzhiyun 345*4882a593Smuzhiyun /* Number of Other queues in the QM */ 346*4882a593Smuzhiyun #define MAX_QM_OTHER_QUEUES_BB 64 347*4882a593Smuzhiyun #define MAX_QM_OTHER_QUEUES_K2 128 348*4882a593Smuzhiyun #define MAX_QM_OTHER_QUEUES MAX_QM_OTHER_QUEUES_K2 349*4882a593Smuzhiyun 350*4882a593Smuzhiyun /* Number of queues in a PF queue group */ 351*4882a593Smuzhiyun #define QM_PF_QUEUE_GROUP_SIZE 8 352*4882a593Smuzhiyun 353*4882a593Smuzhiyun /* The size of a single queue element in bytes */ 354*4882a593Smuzhiyun #define QM_PQ_ELEMENT_SIZE 4 355*4882a593Smuzhiyun 356*4882a593Smuzhiyun /* Base number of Tx PQs in the CM PQ representation. 357*4882a593Smuzhiyun * Should be used when storing PQ IDs in CM PQ registers and context. 358*4882a593Smuzhiyun */ 359*4882a593Smuzhiyun #define CM_TX_PQ_BASE 0x200 360*4882a593Smuzhiyun 361*4882a593Smuzhiyun /* Number of global Vport/QCN rate limiters */ 362*4882a593Smuzhiyun #define MAX_QM_GLOBAL_RLS 256 363*4882a593Smuzhiyun 364*4882a593Smuzhiyun /* QM registers data */ 365*4882a593Smuzhiyun #define QM_LINE_CRD_REG_WIDTH 16 366*4882a593Smuzhiyun #define QM_LINE_CRD_REG_SIGN_BIT BIT((QM_LINE_CRD_REG_WIDTH - 1)) 367*4882a593Smuzhiyun #define QM_BYTE_CRD_REG_WIDTH 24 368*4882a593Smuzhiyun #define QM_BYTE_CRD_REG_SIGN_BIT BIT((QM_BYTE_CRD_REG_WIDTH - 1)) 369*4882a593Smuzhiyun #define QM_WFQ_CRD_REG_WIDTH 32 370*4882a593Smuzhiyun #define QM_WFQ_CRD_REG_SIGN_BIT BIT((QM_WFQ_CRD_REG_WIDTH - 1)) 371*4882a593Smuzhiyun #define QM_RL_CRD_REG_WIDTH 32 372*4882a593Smuzhiyun #define QM_RL_CRD_REG_SIGN_BIT BIT((QM_RL_CRD_REG_WIDTH - 1)) 373*4882a593Smuzhiyun 374*4882a593Smuzhiyun /*****************/ 375*4882a593Smuzhiyun /* CAU CONSTANTS */ 376*4882a593Smuzhiyun /*****************/ 377*4882a593Smuzhiyun 378*4882a593Smuzhiyun #define CAU_FSM_ETH_RX 0 379*4882a593Smuzhiyun #define CAU_FSM_ETH_TX 1 380*4882a593Smuzhiyun 381*4882a593Smuzhiyun /* Number of Protocol Indices per Status Block */ 382*4882a593Smuzhiyun #define PIS_PER_SB_E4 12 383*4882a593Smuzhiyun #define MAX_PIS_PER_SB PIS_PER_SB 384*4882a593Smuzhiyun 385*4882a593Smuzhiyun #define CAU_HC_STOPPED_STATE 3 386*4882a593Smuzhiyun #define CAU_HC_DISABLE_STATE 4 387*4882a593Smuzhiyun #define CAU_HC_ENABLE_STATE 0 388*4882a593Smuzhiyun 389*4882a593Smuzhiyun /*****************/ 390*4882a593Smuzhiyun /* IGU CONSTANTS */ 391*4882a593Smuzhiyun /*****************/ 392*4882a593Smuzhiyun 393*4882a593Smuzhiyun #define MAX_SB_PER_PATH_K2 (368) 394*4882a593Smuzhiyun #define MAX_SB_PER_PATH_BB (288) 395*4882a593Smuzhiyun #define MAX_TOT_SB_PER_PATH \ 396*4882a593Smuzhiyun MAX_SB_PER_PATH_K2 397*4882a593Smuzhiyun 398*4882a593Smuzhiyun #define MAX_SB_PER_PF_MIMD 129 399*4882a593Smuzhiyun #define MAX_SB_PER_PF_SIMD 64 400*4882a593Smuzhiyun #define MAX_SB_PER_VF 64 401*4882a593Smuzhiyun 402*4882a593Smuzhiyun /* Memory addresses on the BAR for the IGU Sub Block */ 403*4882a593Smuzhiyun #define IGU_MEM_BASE 0x0000 404*4882a593Smuzhiyun 405*4882a593Smuzhiyun #define IGU_MEM_MSIX_BASE 0x0000 406*4882a593Smuzhiyun #define IGU_MEM_MSIX_UPPER 0x0101 407*4882a593Smuzhiyun #define IGU_MEM_MSIX_RESERVED_UPPER 0x01ff 408*4882a593Smuzhiyun 409*4882a593Smuzhiyun #define IGU_MEM_PBA_MSIX_BASE 0x0200 410*4882a593Smuzhiyun #define IGU_MEM_PBA_MSIX_UPPER 0x0202 411*4882a593Smuzhiyun #define IGU_MEM_PBA_MSIX_RESERVED_UPPER 0x03ff 412*4882a593Smuzhiyun 413*4882a593Smuzhiyun #define IGU_CMD_INT_ACK_BASE 0x0400 414*4882a593Smuzhiyun #define IGU_CMD_INT_ACK_RESERVED_UPPER 0x05ff 415*4882a593Smuzhiyun 416*4882a593Smuzhiyun #define IGU_CMD_ATTN_BIT_UPD_UPPER 0x05f0 417*4882a593Smuzhiyun #define IGU_CMD_ATTN_BIT_SET_UPPER 0x05f1 418*4882a593Smuzhiyun #define IGU_CMD_ATTN_BIT_CLR_UPPER 0x05f2 419*4882a593Smuzhiyun 420*4882a593Smuzhiyun #define IGU_REG_SISR_MDPC_WMASK_UPPER 0x05f3 421*4882a593Smuzhiyun #define IGU_REG_SISR_MDPC_WMASK_LSB_UPPER 0x05f4 422*4882a593Smuzhiyun #define IGU_REG_SISR_MDPC_WMASK_MSB_UPPER 0x05f5 423*4882a593Smuzhiyun #define IGU_REG_SISR_MDPC_WOMASK_UPPER 0x05f6 424*4882a593Smuzhiyun 425*4882a593Smuzhiyun #define IGU_CMD_PROD_UPD_BASE 0x0600 426*4882a593Smuzhiyun #define IGU_CMD_PROD_UPD_RESERVED_UPPER 0x07ff 427*4882a593Smuzhiyun 428*4882a593Smuzhiyun /*****************/ 429*4882a593Smuzhiyun /* PXP CONSTANTS */ 430*4882a593Smuzhiyun /*****************/ 431*4882a593Smuzhiyun 432*4882a593Smuzhiyun /* Bars for Blocks */ 433*4882a593Smuzhiyun #define PXP_BAR_GRC 0 434*4882a593Smuzhiyun #define PXP_BAR_TSDM 0 435*4882a593Smuzhiyun #define PXP_BAR_USDM 0 436*4882a593Smuzhiyun #define PXP_BAR_XSDM 0 437*4882a593Smuzhiyun #define PXP_BAR_MSDM 0 438*4882a593Smuzhiyun #define PXP_BAR_YSDM 0 439*4882a593Smuzhiyun #define PXP_BAR_PSDM 0 440*4882a593Smuzhiyun #define PXP_BAR_IGU 0 441*4882a593Smuzhiyun #define PXP_BAR_DQ 1 442*4882a593Smuzhiyun 443*4882a593Smuzhiyun /* PTT and GTT */ 444*4882a593Smuzhiyun #define PXP_PER_PF_ENTRY_SIZE 8 445*4882a593Smuzhiyun #define PXP_NUM_GLOBAL_WINDOWS 243 446*4882a593Smuzhiyun #define PXP_GLOBAL_ENTRY_SIZE 4 447*4882a593Smuzhiyun #define PXP_ADMIN_WINDOW_ALLOWED_LENGTH 4 448*4882a593Smuzhiyun #define PXP_PF_WINDOW_ADMIN_START 0 449*4882a593Smuzhiyun #define PXP_PF_WINDOW_ADMIN_LENGTH 0x1000 450*4882a593Smuzhiyun #define PXP_PF_WINDOW_ADMIN_END (PXP_PF_WINDOW_ADMIN_START + \ 451*4882a593Smuzhiyun PXP_PF_WINDOW_ADMIN_LENGTH - 1) 452*4882a593Smuzhiyun #define PXP_PF_WINDOW_ADMIN_PER_PF_START 0 453*4882a593Smuzhiyun #define PXP_PF_WINDOW_ADMIN_PER_PF_LENGTH (PXP_NUM_PF_WINDOWS * \ 454*4882a593Smuzhiyun PXP_PER_PF_ENTRY_SIZE) 455*4882a593Smuzhiyun #define PXP_PF_WINDOW_ADMIN_PER_PF_END (PXP_PF_WINDOW_ADMIN_PER_PF_START + \ 456*4882a593Smuzhiyun PXP_PF_WINDOW_ADMIN_PER_PF_LENGTH - 1) 457*4882a593Smuzhiyun #define PXP_PF_WINDOW_ADMIN_GLOBAL_START 0x200 458*4882a593Smuzhiyun #define PXP_PF_WINDOW_ADMIN_GLOBAL_LENGTH (PXP_NUM_GLOBAL_WINDOWS * \ 459*4882a593Smuzhiyun PXP_GLOBAL_ENTRY_SIZE) 460*4882a593Smuzhiyun #define PXP_PF_WINDOW_ADMIN_GLOBAL_END \ 461*4882a593Smuzhiyun (PXP_PF_WINDOW_ADMIN_GLOBAL_START + \ 462*4882a593Smuzhiyun PXP_PF_WINDOW_ADMIN_GLOBAL_LENGTH - 1) 463*4882a593Smuzhiyun #define PXP_PF_GLOBAL_PRETEND_ADDR 0x1f0 464*4882a593Smuzhiyun #define PXP_PF_ME_OPAQUE_MASK_ADDR 0xf4 465*4882a593Smuzhiyun #define PXP_PF_ME_OPAQUE_ADDR 0x1f8 466*4882a593Smuzhiyun #define PXP_PF_ME_CONCRETE_ADDR 0x1fc 467*4882a593Smuzhiyun 468*4882a593Smuzhiyun #define PXP_NUM_PF_WINDOWS 12 469*4882a593Smuzhiyun #define PXP_EXTERNAL_BAR_PF_WINDOW_START 0x1000 470*4882a593Smuzhiyun #define PXP_EXTERNAL_BAR_PF_WINDOW_NUM PXP_NUM_PF_WINDOWS 471*4882a593Smuzhiyun #define PXP_EXTERNAL_BAR_PF_WINDOW_SINGLE_SIZE 0x1000 472*4882a593Smuzhiyun #define PXP_EXTERNAL_BAR_PF_WINDOW_LENGTH \ 473*4882a593Smuzhiyun (PXP_EXTERNAL_BAR_PF_WINDOW_NUM * \ 474*4882a593Smuzhiyun PXP_EXTERNAL_BAR_PF_WINDOW_SINGLE_SIZE) 475*4882a593Smuzhiyun #define PXP_EXTERNAL_BAR_PF_WINDOW_END \ 476*4882a593Smuzhiyun (PXP_EXTERNAL_BAR_PF_WINDOW_START + \ 477*4882a593Smuzhiyun PXP_EXTERNAL_BAR_PF_WINDOW_LENGTH - 1) 478*4882a593Smuzhiyun 479*4882a593Smuzhiyun #define PXP_EXTERNAL_BAR_GLOBAL_WINDOW_START \ 480*4882a593Smuzhiyun (PXP_EXTERNAL_BAR_PF_WINDOW_END + 1) 481*4882a593Smuzhiyun #define PXP_EXTERNAL_BAR_GLOBAL_WINDOW_NUM PXP_NUM_GLOBAL_WINDOWS 482*4882a593Smuzhiyun #define PXP_EXTERNAL_BAR_GLOBAL_WINDOW_SINGLE_SIZE 0x1000 483*4882a593Smuzhiyun #define PXP_EXTERNAL_BAR_GLOBAL_WINDOW_LENGTH \ 484*4882a593Smuzhiyun (PXP_EXTERNAL_BAR_GLOBAL_WINDOW_NUM * \ 485*4882a593Smuzhiyun PXP_EXTERNAL_BAR_GLOBAL_WINDOW_SINGLE_SIZE) 486*4882a593Smuzhiyun #define PXP_EXTERNAL_BAR_GLOBAL_WINDOW_END \ 487*4882a593Smuzhiyun (PXP_EXTERNAL_BAR_GLOBAL_WINDOW_START + \ 488*4882a593Smuzhiyun PXP_EXTERNAL_BAR_GLOBAL_WINDOW_LENGTH - 1) 489*4882a593Smuzhiyun 490*4882a593Smuzhiyun /* PF BAR */ 491*4882a593Smuzhiyun #define PXP_BAR0_START_GRC 0x0000 492*4882a593Smuzhiyun #define PXP_BAR0_GRC_LENGTH 0x1C00000 493*4882a593Smuzhiyun #define PXP_BAR0_END_GRC (PXP_BAR0_START_GRC + \ 494*4882a593Smuzhiyun PXP_BAR0_GRC_LENGTH - 1) 495*4882a593Smuzhiyun 496*4882a593Smuzhiyun #define PXP_BAR0_START_IGU 0x1C00000 497*4882a593Smuzhiyun #define PXP_BAR0_IGU_LENGTH 0x10000 498*4882a593Smuzhiyun #define PXP_BAR0_END_IGU (PXP_BAR0_START_IGU + \ 499*4882a593Smuzhiyun PXP_BAR0_IGU_LENGTH - 1) 500*4882a593Smuzhiyun 501*4882a593Smuzhiyun #define PXP_BAR0_START_TSDM 0x1C80000 502*4882a593Smuzhiyun #define PXP_BAR0_SDM_LENGTH 0x40000 503*4882a593Smuzhiyun #define PXP_BAR0_SDM_RESERVED_LENGTH 0x40000 504*4882a593Smuzhiyun #define PXP_BAR0_END_TSDM (PXP_BAR0_START_TSDM + \ 505*4882a593Smuzhiyun PXP_BAR0_SDM_LENGTH - 1) 506*4882a593Smuzhiyun 507*4882a593Smuzhiyun #define PXP_BAR0_START_MSDM 0x1D00000 508*4882a593Smuzhiyun #define PXP_BAR0_END_MSDM (PXP_BAR0_START_MSDM + \ 509*4882a593Smuzhiyun PXP_BAR0_SDM_LENGTH - 1) 510*4882a593Smuzhiyun 511*4882a593Smuzhiyun #define PXP_BAR0_START_USDM 0x1D80000 512*4882a593Smuzhiyun #define PXP_BAR0_END_USDM (PXP_BAR0_START_USDM + \ 513*4882a593Smuzhiyun PXP_BAR0_SDM_LENGTH - 1) 514*4882a593Smuzhiyun 515*4882a593Smuzhiyun #define PXP_BAR0_START_XSDM 0x1E00000 516*4882a593Smuzhiyun #define PXP_BAR0_END_XSDM (PXP_BAR0_START_XSDM + \ 517*4882a593Smuzhiyun PXP_BAR0_SDM_LENGTH - 1) 518*4882a593Smuzhiyun 519*4882a593Smuzhiyun #define PXP_BAR0_START_YSDM 0x1E80000 520*4882a593Smuzhiyun #define PXP_BAR0_END_YSDM (PXP_BAR0_START_YSDM + \ 521*4882a593Smuzhiyun PXP_BAR0_SDM_LENGTH - 1) 522*4882a593Smuzhiyun 523*4882a593Smuzhiyun #define PXP_BAR0_START_PSDM 0x1F00000 524*4882a593Smuzhiyun #define PXP_BAR0_END_PSDM (PXP_BAR0_START_PSDM + \ 525*4882a593Smuzhiyun PXP_BAR0_SDM_LENGTH - 1) 526*4882a593Smuzhiyun 527*4882a593Smuzhiyun #define PXP_BAR0_FIRST_INVALID_ADDRESS (PXP_BAR0_END_PSDM + 1) 528*4882a593Smuzhiyun 529*4882a593Smuzhiyun /* VF BAR */ 530*4882a593Smuzhiyun #define PXP_VF_BAR0 0 531*4882a593Smuzhiyun 532*4882a593Smuzhiyun #define PXP_VF_BAR0_START_IGU 0 533*4882a593Smuzhiyun #define PXP_VF_BAR0_IGU_LENGTH 0x3000 534*4882a593Smuzhiyun #define PXP_VF_BAR0_END_IGU (PXP_VF_BAR0_START_IGU + \ 535*4882a593Smuzhiyun PXP_VF_BAR0_IGU_LENGTH - 1) 536*4882a593Smuzhiyun 537*4882a593Smuzhiyun #define PXP_VF_BAR0_START_DQ 0x3000 538*4882a593Smuzhiyun #define PXP_VF_BAR0_DQ_LENGTH 0x200 539*4882a593Smuzhiyun #define PXP_VF_BAR0_DQ_OPAQUE_OFFSET 0 540*4882a593Smuzhiyun #define PXP_VF_BAR0_ME_OPAQUE_ADDRESS (PXP_VF_BAR0_START_DQ + \ 541*4882a593Smuzhiyun PXP_VF_BAR0_DQ_OPAQUE_OFFSET) 542*4882a593Smuzhiyun #define PXP_VF_BAR0_ME_CONCRETE_ADDRESS (PXP_VF_BAR0_ME_OPAQUE_ADDRESS \ 543*4882a593Smuzhiyun + 4) 544*4882a593Smuzhiyun #define PXP_VF_BAR0_END_DQ (PXP_VF_BAR0_START_DQ + \ 545*4882a593Smuzhiyun PXP_VF_BAR0_DQ_LENGTH - 1) 546*4882a593Smuzhiyun 547*4882a593Smuzhiyun #define PXP_VF_BAR0_START_TSDM_ZONE_B 0x3200 548*4882a593Smuzhiyun #define PXP_VF_BAR0_SDM_LENGTH_ZONE_B 0x200 549*4882a593Smuzhiyun #define PXP_VF_BAR0_END_TSDM_ZONE_B (PXP_VF_BAR0_START_TSDM_ZONE_B + \ 550*4882a593Smuzhiyun PXP_VF_BAR0_SDM_LENGTH_ZONE_B - 1) 551*4882a593Smuzhiyun 552*4882a593Smuzhiyun #define PXP_VF_BAR0_START_MSDM_ZONE_B 0x3400 553*4882a593Smuzhiyun #define PXP_VF_BAR0_END_MSDM_ZONE_B (PXP_VF_BAR0_START_MSDM_ZONE_B + \ 554*4882a593Smuzhiyun PXP_VF_BAR0_SDM_LENGTH_ZONE_B - 1) 555*4882a593Smuzhiyun 556*4882a593Smuzhiyun #define PXP_VF_BAR0_START_USDM_ZONE_B 0x3600 557*4882a593Smuzhiyun #define PXP_VF_BAR0_END_USDM_ZONE_B (PXP_VF_BAR0_START_USDM_ZONE_B + \ 558*4882a593Smuzhiyun PXP_VF_BAR0_SDM_LENGTH_ZONE_B - 1) 559*4882a593Smuzhiyun 560*4882a593Smuzhiyun #define PXP_VF_BAR0_START_XSDM_ZONE_B 0x3800 561*4882a593Smuzhiyun #define PXP_VF_BAR0_END_XSDM_ZONE_B (PXP_VF_BAR0_START_XSDM_ZONE_B + \ 562*4882a593Smuzhiyun PXP_VF_BAR0_SDM_LENGTH_ZONE_B - 1) 563*4882a593Smuzhiyun 564*4882a593Smuzhiyun #define PXP_VF_BAR0_START_YSDM_ZONE_B 0x3a00 565*4882a593Smuzhiyun #define PXP_VF_BAR0_END_YSDM_ZONE_B (PXP_VF_BAR0_START_YSDM_ZONE_B + \ 566*4882a593Smuzhiyun PXP_VF_BAR0_SDM_LENGTH_ZONE_B - 1) 567*4882a593Smuzhiyun 568*4882a593Smuzhiyun #define PXP_VF_BAR0_START_PSDM_ZONE_B 0x3c00 569*4882a593Smuzhiyun #define PXP_VF_BAR0_END_PSDM_ZONE_B (PXP_VF_BAR0_START_PSDM_ZONE_B + \ 570*4882a593Smuzhiyun PXP_VF_BAR0_SDM_LENGTH_ZONE_B - 1) 571*4882a593Smuzhiyun 572*4882a593Smuzhiyun #define PXP_VF_BAR0_START_GRC 0x3E00 573*4882a593Smuzhiyun #define PXP_VF_BAR0_GRC_LENGTH 0x200 574*4882a593Smuzhiyun #define PXP_VF_BAR0_END_GRC (PXP_VF_BAR0_START_GRC + \ 575*4882a593Smuzhiyun PXP_VF_BAR0_GRC_LENGTH - 1) 576*4882a593Smuzhiyun 577*4882a593Smuzhiyun #define PXP_VF_BAR0_START_SDM_ZONE_A 0x4000 578*4882a593Smuzhiyun #define PXP_VF_BAR0_END_SDM_ZONE_A 0x10000 579*4882a593Smuzhiyun 580*4882a593Smuzhiyun #define PXP_VF_BAR0_START_IGU2 0x10000 581*4882a593Smuzhiyun #define PXP_VF_BAR0_IGU2_LENGTH 0xD000 582*4882a593Smuzhiyun #define PXP_VF_BAR0_END_IGU2 (PXP_VF_BAR0_START_IGU2 + \ 583*4882a593Smuzhiyun PXP_VF_BAR0_IGU2_LENGTH - 1) 584*4882a593Smuzhiyun 585*4882a593Smuzhiyun #define PXP_VF_BAR0_GRC_WINDOW_LENGTH 32 586*4882a593Smuzhiyun 587*4882a593Smuzhiyun #define PXP_ILT_PAGE_SIZE_NUM_BITS_MIN 12 588*4882a593Smuzhiyun #define PXP_ILT_BLOCK_FACTOR_MULTIPLIER 1024 589*4882a593Smuzhiyun 590*4882a593Smuzhiyun /* ILT Records */ 591*4882a593Smuzhiyun #define PXP_NUM_ILT_RECORDS_BB 7600 592*4882a593Smuzhiyun #define PXP_NUM_ILT_RECORDS_K2 11000 593*4882a593Smuzhiyun #define MAX_NUM_ILT_RECORDS MAX(PXP_NUM_ILT_RECORDS_BB, PXP_NUM_ILT_RECORDS_K2) 594*4882a593Smuzhiyun 595*4882a593Smuzhiyun /* Host Interface */ 596*4882a593Smuzhiyun #define PXP_QUEUES_ZONE_MAX_NUM 320 597*4882a593Smuzhiyun 598*4882a593Smuzhiyun /*****************/ 599*4882a593Smuzhiyun /* PRM CONSTANTS */ 600*4882a593Smuzhiyun /*****************/ 601*4882a593Smuzhiyun #define PRM_DMA_PAD_BYTES_NUM 2 602*4882a593Smuzhiyun 603*4882a593Smuzhiyun /*****************/ 604*4882a593Smuzhiyun /* SDMs CONSTANTS */ 605*4882a593Smuzhiyun /*****************/ 606*4882a593Smuzhiyun 607*4882a593Smuzhiyun #define SDM_OP_GEN_TRIG_NONE 0 608*4882a593Smuzhiyun #define SDM_OP_GEN_TRIG_WAKE_THREAD 1 609*4882a593Smuzhiyun #define SDM_OP_GEN_TRIG_AGG_INT 2 610*4882a593Smuzhiyun #define SDM_OP_GEN_TRIG_LOADER 4 611*4882a593Smuzhiyun #define SDM_OP_GEN_TRIG_INDICATE_ERROR 6 612*4882a593Smuzhiyun #define SDM_OP_GEN_TRIG_INC_ORDER_CNT 9 613*4882a593Smuzhiyun 614*4882a593Smuzhiyun /********************/ 615*4882a593Smuzhiyun /* Completion types */ 616*4882a593Smuzhiyun /********************/ 617*4882a593Smuzhiyun 618*4882a593Smuzhiyun #define SDM_COMP_TYPE_NONE 0 619*4882a593Smuzhiyun #define SDM_COMP_TYPE_WAKE_THREAD 1 620*4882a593Smuzhiyun #define SDM_COMP_TYPE_AGG_INT 2 621*4882a593Smuzhiyun #define SDM_COMP_TYPE_CM 3 622*4882a593Smuzhiyun #define SDM_COMP_TYPE_LOADER 4 623*4882a593Smuzhiyun #define SDM_COMP_TYPE_PXP 5 624*4882a593Smuzhiyun #define SDM_COMP_TYPE_INDICATE_ERROR 6 625*4882a593Smuzhiyun #define SDM_COMP_TYPE_RELEASE_THREAD 7 626*4882a593Smuzhiyun #define SDM_COMP_TYPE_RAM 8 627*4882a593Smuzhiyun #define SDM_COMP_TYPE_INC_ORDER_CNT 9 628*4882a593Smuzhiyun 629*4882a593Smuzhiyun /*****************/ 630*4882a593Smuzhiyun /* PBF CONSTANTS */ 631*4882a593Smuzhiyun /*****************/ 632*4882a593Smuzhiyun 633*4882a593Smuzhiyun /* Number of PBF command queue lines. Each line is 32B. */ 634*4882a593Smuzhiyun #define PBF_MAX_CMD_LINES 3328 635*4882a593Smuzhiyun 636*4882a593Smuzhiyun /* Number of BTB blocks. Each block is 256B. */ 637*4882a593Smuzhiyun #define BTB_MAX_BLOCKS_BB 1440 638*4882a593Smuzhiyun #define BTB_MAX_BLOCKS_K2 1840 639*4882a593Smuzhiyun /*****************/ 640*4882a593Smuzhiyun /* PRS CONSTANTS */ 641*4882a593Smuzhiyun /*****************/ 642*4882a593Smuzhiyun 643*4882a593Smuzhiyun #define PRS_GFT_CAM_LINES_NO_MATCH 31 644*4882a593Smuzhiyun 645*4882a593Smuzhiyun /* Interrupt coalescing TimeSet */ 646*4882a593Smuzhiyun struct coalescing_timeset { 647*4882a593Smuzhiyun u8 value; 648*4882a593Smuzhiyun #define COALESCING_TIMESET_TIMESET_MASK 0x7F 649*4882a593Smuzhiyun #define COALESCING_TIMESET_TIMESET_SHIFT 0 650*4882a593Smuzhiyun #define COALESCING_TIMESET_VALID_MASK 0x1 651*4882a593Smuzhiyun #define COALESCING_TIMESET_VALID_SHIFT 7 652*4882a593Smuzhiyun }; 653*4882a593Smuzhiyun 654*4882a593Smuzhiyun struct common_queue_zone { 655*4882a593Smuzhiyun __le16 ring_drv_data_consumer; 656*4882a593Smuzhiyun __le16 reserved; 657*4882a593Smuzhiyun }; 658*4882a593Smuzhiyun 659*4882a593Smuzhiyun /* ETH Rx producers data */ 660*4882a593Smuzhiyun struct eth_rx_prod_data { 661*4882a593Smuzhiyun __le16 bd_prod; 662*4882a593Smuzhiyun __le16 cqe_prod; 663*4882a593Smuzhiyun }; 664*4882a593Smuzhiyun 665*4882a593Smuzhiyun struct tcp_ulp_connect_done_params { 666*4882a593Smuzhiyun __le16 mss; 667*4882a593Smuzhiyun u8 snd_wnd_scale; 668*4882a593Smuzhiyun u8 flags; 669*4882a593Smuzhiyun #define TCP_ULP_CONNECT_DONE_PARAMS_TS_EN_MASK 0x1 670*4882a593Smuzhiyun #define TCP_ULP_CONNECT_DONE_PARAMS_TS_EN_SHIFT 0 671*4882a593Smuzhiyun #define TCP_ULP_CONNECT_DONE_PARAMS_RESERVED_MASK 0x7F 672*4882a593Smuzhiyun #define TCP_ULP_CONNECT_DONE_PARAMS_RESERVED_SHIFT 1 673*4882a593Smuzhiyun }; 674*4882a593Smuzhiyun 675*4882a593Smuzhiyun struct iscsi_connect_done_results { 676*4882a593Smuzhiyun __le16 icid; 677*4882a593Smuzhiyun __le16 conn_id; 678*4882a593Smuzhiyun struct tcp_ulp_connect_done_params params; 679*4882a593Smuzhiyun }; 680*4882a593Smuzhiyun 681*4882a593Smuzhiyun struct iscsi_eqe_data { 682*4882a593Smuzhiyun __le16 icid; 683*4882a593Smuzhiyun __le16 conn_id; 684*4882a593Smuzhiyun __le16 reserved; 685*4882a593Smuzhiyun u8 error_code; 686*4882a593Smuzhiyun u8 error_pdu_opcode_reserved; 687*4882a593Smuzhiyun #define ISCSI_EQE_DATA_ERROR_PDU_OPCODE_MASK 0x3F 688*4882a593Smuzhiyun #define ISCSI_EQE_DATA_ERROR_PDU_OPCODE_SHIFT 0 689*4882a593Smuzhiyun #define ISCSI_EQE_DATA_ERROR_PDU_OPCODE_VALID_MASK 0x1 690*4882a593Smuzhiyun #define ISCSI_EQE_DATA_ERROR_PDU_OPCODE_VALID_SHIFT 6 691*4882a593Smuzhiyun #define ISCSI_EQE_DATA_RESERVED0_MASK 0x1 692*4882a593Smuzhiyun #define ISCSI_EQE_DATA_RESERVED0_SHIFT 7 693*4882a593Smuzhiyun }; 694*4882a593Smuzhiyun 695*4882a593Smuzhiyun /* Multi function mode */ 696*4882a593Smuzhiyun enum mf_mode { 697*4882a593Smuzhiyun ERROR_MODE /* Unsupported mode */, 698*4882a593Smuzhiyun MF_OVLAN, 699*4882a593Smuzhiyun MF_NPAR, 700*4882a593Smuzhiyun MAX_MF_MODE 701*4882a593Smuzhiyun }; 702*4882a593Smuzhiyun 703*4882a593Smuzhiyun /* Per-protocol connection types */ 704*4882a593Smuzhiyun enum protocol_type { 705*4882a593Smuzhiyun PROTOCOLID_ISCSI, 706*4882a593Smuzhiyun PROTOCOLID_FCOE, 707*4882a593Smuzhiyun PROTOCOLID_ROCE, 708*4882a593Smuzhiyun PROTOCOLID_CORE, 709*4882a593Smuzhiyun PROTOCOLID_ETH, 710*4882a593Smuzhiyun PROTOCOLID_IWARP, 711*4882a593Smuzhiyun PROTOCOLID_RESERVED0, 712*4882a593Smuzhiyun PROTOCOLID_PREROCE, 713*4882a593Smuzhiyun PROTOCOLID_COMMON, 714*4882a593Smuzhiyun PROTOCOLID_RESERVED1, 715*4882a593Smuzhiyun PROTOCOLID_RDMA, 716*4882a593Smuzhiyun PROTOCOLID_SCSI, 717*4882a593Smuzhiyun MAX_PROTOCOL_TYPE 718*4882a593Smuzhiyun }; 719*4882a593Smuzhiyun 720*4882a593Smuzhiyun struct regpair { 721*4882a593Smuzhiyun __le32 lo; 722*4882a593Smuzhiyun __le32 hi; 723*4882a593Smuzhiyun }; 724*4882a593Smuzhiyun 725*4882a593Smuzhiyun /* RoCE Destroy Event Data */ 726*4882a593Smuzhiyun struct rdma_eqe_destroy_qp { 727*4882a593Smuzhiyun __le32 cid; 728*4882a593Smuzhiyun u8 reserved[4]; 729*4882a593Smuzhiyun }; 730*4882a593Smuzhiyun 731*4882a593Smuzhiyun /* RDMA Event Data Union */ 732*4882a593Smuzhiyun union rdma_eqe_data { 733*4882a593Smuzhiyun struct regpair async_handle; 734*4882a593Smuzhiyun struct rdma_eqe_destroy_qp rdma_destroy_qp_data; 735*4882a593Smuzhiyun }; 736*4882a593Smuzhiyun 737*4882a593Smuzhiyun struct tstorm_queue_zone { 738*4882a593Smuzhiyun __le32 reserved[2]; 739*4882a593Smuzhiyun }; 740*4882a593Smuzhiyun 741*4882a593Smuzhiyun /* Ustorm Queue Zone */ 742*4882a593Smuzhiyun struct ustorm_eth_queue_zone { 743*4882a593Smuzhiyun struct coalescing_timeset int_coalescing_timeset; 744*4882a593Smuzhiyun u8 reserved[3]; 745*4882a593Smuzhiyun }; 746*4882a593Smuzhiyun 747*4882a593Smuzhiyun struct ustorm_queue_zone { 748*4882a593Smuzhiyun struct ustorm_eth_queue_zone eth; 749*4882a593Smuzhiyun struct common_queue_zone common; 750*4882a593Smuzhiyun }; 751*4882a593Smuzhiyun 752*4882a593Smuzhiyun /* Status block structure */ 753*4882a593Smuzhiyun struct cau_pi_entry { 754*4882a593Smuzhiyun __le32 prod; 755*4882a593Smuzhiyun #define CAU_PI_ENTRY_PROD_VAL_MASK 0xFFFF 756*4882a593Smuzhiyun #define CAU_PI_ENTRY_PROD_VAL_SHIFT 0 757*4882a593Smuzhiyun #define CAU_PI_ENTRY_PI_TIMESET_MASK 0x7F 758*4882a593Smuzhiyun #define CAU_PI_ENTRY_PI_TIMESET_SHIFT 16 759*4882a593Smuzhiyun #define CAU_PI_ENTRY_FSM_SEL_MASK 0x1 760*4882a593Smuzhiyun #define CAU_PI_ENTRY_FSM_SEL_SHIFT 23 761*4882a593Smuzhiyun #define CAU_PI_ENTRY_RESERVED_MASK 0xFF 762*4882a593Smuzhiyun #define CAU_PI_ENTRY_RESERVED_SHIFT 24 763*4882a593Smuzhiyun }; 764*4882a593Smuzhiyun 765*4882a593Smuzhiyun /* Status block structure */ 766*4882a593Smuzhiyun struct cau_sb_entry { 767*4882a593Smuzhiyun __le32 data; 768*4882a593Smuzhiyun #define CAU_SB_ENTRY_SB_PROD_MASK 0xFFFFFF 769*4882a593Smuzhiyun #define CAU_SB_ENTRY_SB_PROD_SHIFT 0 770*4882a593Smuzhiyun #define CAU_SB_ENTRY_STATE0_MASK 0xF 771*4882a593Smuzhiyun #define CAU_SB_ENTRY_STATE0_SHIFT 24 772*4882a593Smuzhiyun #define CAU_SB_ENTRY_STATE1_MASK 0xF 773*4882a593Smuzhiyun #define CAU_SB_ENTRY_STATE1_SHIFT 28 774*4882a593Smuzhiyun __le32 params; 775*4882a593Smuzhiyun #define CAU_SB_ENTRY_SB_TIMESET0_MASK 0x7F 776*4882a593Smuzhiyun #define CAU_SB_ENTRY_SB_TIMESET0_SHIFT 0 777*4882a593Smuzhiyun #define CAU_SB_ENTRY_SB_TIMESET1_MASK 0x7F 778*4882a593Smuzhiyun #define CAU_SB_ENTRY_SB_TIMESET1_SHIFT 7 779*4882a593Smuzhiyun #define CAU_SB_ENTRY_TIMER_RES0_MASK 0x3 780*4882a593Smuzhiyun #define CAU_SB_ENTRY_TIMER_RES0_SHIFT 14 781*4882a593Smuzhiyun #define CAU_SB_ENTRY_TIMER_RES1_MASK 0x3 782*4882a593Smuzhiyun #define CAU_SB_ENTRY_TIMER_RES1_SHIFT 16 783*4882a593Smuzhiyun #define CAU_SB_ENTRY_VF_NUMBER_MASK 0xFF 784*4882a593Smuzhiyun #define CAU_SB_ENTRY_VF_NUMBER_SHIFT 18 785*4882a593Smuzhiyun #define CAU_SB_ENTRY_VF_VALID_MASK 0x1 786*4882a593Smuzhiyun #define CAU_SB_ENTRY_VF_VALID_SHIFT 26 787*4882a593Smuzhiyun #define CAU_SB_ENTRY_PF_NUMBER_MASK 0xF 788*4882a593Smuzhiyun #define CAU_SB_ENTRY_PF_NUMBER_SHIFT 27 789*4882a593Smuzhiyun #define CAU_SB_ENTRY_TPH_MASK 0x1 790*4882a593Smuzhiyun #define CAU_SB_ENTRY_TPH_SHIFT 31 791*4882a593Smuzhiyun }; 792*4882a593Smuzhiyun 793*4882a593Smuzhiyun /* Igu cleanup bit values to distinguish between clean or producer consumer 794*4882a593Smuzhiyun * update. 795*4882a593Smuzhiyun */ 796*4882a593Smuzhiyun enum command_type_bit { 797*4882a593Smuzhiyun IGU_COMMAND_TYPE_NOP = 0, 798*4882a593Smuzhiyun IGU_COMMAND_TYPE_SET = 1, 799*4882a593Smuzhiyun MAX_COMMAND_TYPE_BIT 800*4882a593Smuzhiyun }; 801*4882a593Smuzhiyun 802*4882a593Smuzhiyun /* Core doorbell data */ 803*4882a593Smuzhiyun struct core_db_data { 804*4882a593Smuzhiyun u8 params; 805*4882a593Smuzhiyun #define CORE_DB_DATA_DEST_MASK 0x3 806*4882a593Smuzhiyun #define CORE_DB_DATA_DEST_SHIFT 0 807*4882a593Smuzhiyun #define CORE_DB_DATA_AGG_CMD_MASK 0x3 808*4882a593Smuzhiyun #define CORE_DB_DATA_AGG_CMD_SHIFT 2 809*4882a593Smuzhiyun #define CORE_DB_DATA_BYPASS_EN_MASK 0x1 810*4882a593Smuzhiyun #define CORE_DB_DATA_BYPASS_EN_SHIFT 4 811*4882a593Smuzhiyun #define CORE_DB_DATA_RESERVED_MASK 0x1 812*4882a593Smuzhiyun #define CORE_DB_DATA_RESERVED_SHIFT 5 813*4882a593Smuzhiyun #define CORE_DB_DATA_AGG_VAL_SEL_MASK 0x3 814*4882a593Smuzhiyun #define CORE_DB_DATA_AGG_VAL_SEL_SHIFT 6 815*4882a593Smuzhiyun u8 agg_flags; 816*4882a593Smuzhiyun __le16 spq_prod; 817*4882a593Smuzhiyun }; 818*4882a593Smuzhiyun 819*4882a593Smuzhiyun /* Enum of doorbell aggregative command selection */ 820*4882a593Smuzhiyun enum db_agg_cmd_sel { 821*4882a593Smuzhiyun DB_AGG_CMD_NOP, 822*4882a593Smuzhiyun DB_AGG_CMD_SET, 823*4882a593Smuzhiyun DB_AGG_CMD_ADD, 824*4882a593Smuzhiyun DB_AGG_CMD_MAX, 825*4882a593Smuzhiyun MAX_DB_AGG_CMD_SEL 826*4882a593Smuzhiyun }; 827*4882a593Smuzhiyun 828*4882a593Smuzhiyun /* Enum of doorbell destination */ 829*4882a593Smuzhiyun enum db_dest { 830*4882a593Smuzhiyun DB_DEST_XCM, 831*4882a593Smuzhiyun DB_DEST_UCM, 832*4882a593Smuzhiyun DB_DEST_TCM, 833*4882a593Smuzhiyun DB_NUM_DESTINATIONS, 834*4882a593Smuzhiyun MAX_DB_DEST 835*4882a593Smuzhiyun }; 836*4882a593Smuzhiyun 837*4882a593Smuzhiyun /* Enum of doorbell DPM types */ 838*4882a593Smuzhiyun enum db_dpm_type { 839*4882a593Smuzhiyun DPM_LEGACY, 840*4882a593Smuzhiyun DPM_RDMA, 841*4882a593Smuzhiyun DPM_L2_INLINE, 842*4882a593Smuzhiyun DPM_L2_BD, 843*4882a593Smuzhiyun MAX_DB_DPM_TYPE 844*4882a593Smuzhiyun }; 845*4882a593Smuzhiyun 846*4882a593Smuzhiyun /* Structure for doorbell data, in L2 DPM mode, for 1st db in a DPM burst */ 847*4882a593Smuzhiyun struct db_l2_dpm_data { 848*4882a593Smuzhiyun __le16 icid; 849*4882a593Smuzhiyun __le16 bd_prod; 850*4882a593Smuzhiyun __le32 params; 851*4882a593Smuzhiyun #define DB_L2_DPM_DATA_SIZE_MASK 0x3F 852*4882a593Smuzhiyun #define DB_L2_DPM_DATA_SIZE_SHIFT 0 853*4882a593Smuzhiyun #define DB_L2_DPM_DATA_DPM_TYPE_MASK 0x3 854*4882a593Smuzhiyun #define DB_L2_DPM_DATA_DPM_TYPE_SHIFT 6 855*4882a593Smuzhiyun #define DB_L2_DPM_DATA_NUM_BDS_MASK 0xFF 856*4882a593Smuzhiyun #define DB_L2_DPM_DATA_NUM_BDS_SHIFT 8 857*4882a593Smuzhiyun #define DB_L2_DPM_DATA_PKT_SIZE_MASK 0x7FF 858*4882a593Smuzhiyun #define DB_L2_DPM_DATA_PKT_SIZE_SHIFT 16 859*4882a593Smuzhiyun #define DB_L2_DPM_DATA_RESERVED0_MASK 0x1 860*4882a593Smuzhiyun #define DB_L2_DPM_DATA_RESERVED0_SHIFT 27 861*4882a593Smuzhiyun #define DB_L2_DPM_DATA_SGE_NUM_MASK 0x7 862*4882a593Smuzhiyun #define DB_L2_DPM_DATA_SGE_NUM_SHIFT 28 863*4882a593Smuzhiyun #define DB_L2_DPM_DATA_TGFS_SRC_EN_MASK 0x1 864*4882a593Smuzhiyun #define DB_L2_DPM_DATA_TGFS_SRC_EN_SHIFT 31 865*4882a593Smuzhiyun }; 866*4882a593Smuzhiyun 867*4882a593Smuzhiyun /* Structure for SGE in a DPM doorbell of type DPM_L2_BD */ 868*4882a593Smuzhiyun struct db_l2_dpm_sge { 869*4882a593Smuzhiyun struct regpair addr; 870*4882a593Smuzhiyun __le16 nbytes; 871*4882a593Smuzhiyun __le16 bitfields; 872*4882a593Smuzhiyun #define DB_L2_DPM_SGE_TPH_ST_INDEX_MASK 0x1FF 873*4882a593Smuzhiyun #define DB_L2_DPM_SGE_TPH_ST_INDEX_SHIFT 0 874*4882a593Smuzhiyun #define DB_L2_DPM_SGE_RESERVED0_MASK 0x3 875*4882a593Smuzhiyun #define DB_L2_DPM_SGE_RESERVED0_SHIFT 9 876*4882a593Smuzhiyun #define DB_L2_DPM_SGE_ST_VALID_MASK 0x1 877*4882a593Smuzhiyun #define DB_L2_DPM_SGE_ST_VALID_SHIFT 11 878*4882a593Smuzhiyun #define DB_L2_DPM_SGE_RESERVED1_MASK 0xF 879*4882a593Smuzhiyun #define DB_L2_DPM_SGE_RESERVED1_SHIFT 12 880*4882a593Smuzhiyun __le32 reserved2; 881*4882a593Smuzhiyun }; 882*4882a593Smuzhiyun 883*4882a593Smuzhiyun /* Structure for doorbell address, in legacy mode */ 884*4882a593Smuzhiyun struct db_legacy_addr { 885*4882a593Smuzhiyun __le32 addr; 886*4882a593Smuzhiyun #define DB_LEGACY_ADDR_RESERVED0_MASK 0x3 887*4882a593Smuzhiyun #define DB_LEGACY_ADDR_RESERVED0_SHIFT 0 888*4882a593Smuzhiyun #define DB_LEGACY_ADDR_DEMS_MASK 0x7 889*4882a593Smuzhiyun #define DB_LEGACY_ADDR_DEMS_SHIFT 2 890*4882a593Smuzhiyun #define DB_LEGACY_ADDR_ICID_MASK 0x7FFFFFF 891*4882a593Smuzhiyun #define DB_LEGACY_ADDR_ICID_SHIFT 5 892*4882a593Smuzhiyun }; 893*4882a593Smuzhiyun 894*4882a593Smuzhiyun /* Structure for doorbell address, in PWM mode */ 895*4882a593Smuzhiyun struct db_pwm_addr { 896*4882a593Smuzhiyun __le32 addr; 897*4882a593Smuzhiyun #define DB_PWM_ADDR_RESERVED0_MASK 0x7 898*4882a593Smuzhiyun #define DB_PWM_ADDR_RESERVED0_SHIFT 0 899*4882a593Smuzhiyun #define DB_PWM_ADDR_OFFSET_MASK 0x7F 900*4882a593Smuzhiyun #define DB_PWM_ADDR_OFFSET_SHIFT 3 901*4882a593Smuzhiyun #define DB_PWM_ADDR_WID_MASK 0x3 902*4882a593Smuzhiyun #define DB_PWM_ADDR_WID_SHIFT 10 903*4882a593Smuzhiyun #define DB_PWM_ADDR_DPI_MASK 0xFFFF 904*4882a593Smuzhiyun #define DB_PWM_ADDR_DPI_SHIFT 12 905*4882a593Smuzhiyun #define DB_PWM_ADDR_RESERVED1_MASK 0xF 906*4882a593Smuzhiyun #define DB_PWM_ADDR_RESERVED1_SHIFT 28 907*4882a593Smuzhiyun }; 908*4882a593Smuzhiyun 909*4882a593Smuzhiyun /* Parameters to RDMA firmware, passed in EDPM doorbell */ 910*4882a593Smuzhiyun struct db_rdma_dpm_params { 911*4882a593Smuzhiyun __le32 params; 912*4882a593Smuzhiyun #define DB_RDMA_DPM_PARAMS_SIZE_MASK 0x3F 913*4882a593Smuzhiyun #define DB_RDMA_DPM_PARAMS_SIZE_SHIFT 0 914*4882a593Smuzhiyun #define DB_RDMA_DPM_PARAMS_DPM_TYPE_MASK 0x3 915*4882a593Smuzhiyun #define DB_RDMA_DPM_PARAMS_DPM_TYPE_SHIFT 6 916*4882a593Smuzhiyun #define DB_RDMA_DPM_PARAMS_OPCODE_MASK 0xFF 917*4882a593Smuzhiyun #define DB_RDMA_DPM_PARAMS_OPCODE_SHIFT 8 918*4882a593Smuzhiyun #define DB_RDMA_DPM_PARAMS_WQE_SIZE_MASK 0x7FF 919*4882a593Smuzhiyun #define DB_RDMA_DPM_PARAMS_WQE_SIZE_SHIFT 16 920*4882a593Smuzhiyun #define DB_RDMA_DPM_PARAMS_RESERVED0_MASK 0x1 921*4882a593Smuzhiyun #define DB_RDMA_DPM_PARAMS_RESERVED0_SHIFT 27 922*4882a593Smuzhiyun #define DB_RDMA_DPM_PARAMS_ACK_REQUEST_MASK 0x1 923*4882a593Smuzhiyun #define DB_RDMA_DPM_PARAMS_ACK_REQUEST_SHIFT 28 924*4882a593Smuzhiyun #define DB_RDMA_DPM_PARAMS_S_FLG_MASK 0x1 925*4882a593Smuzhiyun #define DB_RDMA_DPM_PARAMS_S_FLG_SHIFT 29 926*4882a593Smuzhiyun #define DB_RDMA_DPM_PARAMS_COMPLETION_FLG_MASK 0x1 927*4882a593Smuzhiyun #define DB_RDMA_DPM_PARAMS_COMPLETION_FLG_SHIFT 30 928*4882a593Smuzhiyun #define DB_RDMA_DPM_PARAMS_CONN_TYPE_IS_IWARP_MASK 0x1 929*4882a593Smuzhiyun #define DB_RDMA_DPM_PARAMS_CONN_TYPE_IS_IWARP_SHIFT 31 930*4882a593Smuzhiyun }; 931*4882a593Smuzhiyun 932*4882a593Smuzhiyun /* Structure for doorbell data, in RDMA DPM mode, for the first doorbell in a 933*4882a593Smuzhiyun * DPM burst. 934*4882a593Smuzhiyun */ 935*4882a593Smuzhiyun struct db_rdma_dpm_data { 936*4882a593Smuzhiyun __le16 icid; 937*4882a593Smuzhiyun __le16 prod_val; 938*4882a593Smuzhiyun struct db_rdma_dpm_params params; 939*4882a593Smuzhiyun }; 940*4882a593Smuzhiyun 941*4882a593Smuzhiyun /* Igu interrupt command */ 942*4882a593Smuzhiyun enum igu_int_cmd { 943*4882a593Smuzhiyun IGU_INT_ENABLE = 0, 944*4882a593Smuzhiyun IGU_INT_DISABLE = 1, 945*4882a593Smuzhiyun IGU_INT_NOP = 2, 946*4882a593Smuzhiyun IGU_INT_NOP2 = 3, 947*4882a593Smuzhiyun MAX_IGU_INT_CMD 948*4882a593Smuzhiyun }; 949*4882a593Smuzhiyun 950*4882a593Smuzhiyun /* IGU producer or consumer update command */ 951*4882a593Smuzhiyun struct igu_prod_cons_update { 952*4882a593Smuzhiyun __le32 sb_id_and_flags; 953*4882a593Smuzhiyun #define IGU_PROD_CONS_UPDATE_SB_INDEX_MASK 0xFFFFFF 954*4882a593Smuzhiyun #define IGU_PROD_CONS_UPDATE_SB_INDEX_SHIFT 0 955*4882a593Smuzhiyun #define IGU_PROD_CONS_UPDATE_UPDATE_FLAG_MASK 0x1 956*4882a593Smuzhiyun #define IGU_PROD_CONS_UPDATE_UPDATE_FLAG_SHIFT 24 957*4882a593Smuzhiyun #define IGU_PROD_CONS_UPDATE_ENABLE_INT_MASK 0x3 958*4882a593Smuzhiyun #define IGU_PROD_CONS_UPDATE_ENABLE_INT_SHIFT 25 959*4882a593Smuzhiyun #define IGU_PROD_CONS_UPDATE_SEGMENT_ACCESS_MASK 0x1 960*4882a593Smuzhiyun #define IGU_PROD_CONS_UPDATE_SEGMENT_ACCESS_SHIFT 27 961*4882a593Smuzhiyun #define IGU_PROD_CONS_UPDATE_TIMER_MASK_MASK 0x1 962*4882a593Smuzhiyun #define IGU_PROD_CONS_UPDATE_TIMER_MASK_SHIFT 28 963*4882a593Smuzhiyun #define IGU_PROD_CONS_UPDATE_RESERVED0_MASK 0x3 964*4882a593Smuzhiyun #define IGU_PROD_CONS_UPDATE_RESERVED0_SHIFT 29 965*4882a593Smuzhiyun #define IGU_PROD_CONS_UPDATE_COMMAND_TYPE_MASK 0x1 966*4882a593Smuzhiyun #define IGU_PROD_CONS_UPDATE_COMMAND_TYPE_SHIFT 31 967*4882a593Smuzhiyun __le32 reserved1; 968*4882a593Smuzhiyun }; 969*4882a593Smuzhiyun 970*4882a593Smuzhiyun /* Igu segments access for default status block only */ 971*4882a593Smuzhiyun enum igu_seg_access { 972*4882a593Smuzhiyun IGU_SEG_ACCESS_REG = 0, 973*4882a593Smuzhiyun IGU_SEG_ACCESS_ATTN = 1, 974*4882a593Smuzhiyun MAX_IGU_SEG_ACCESS 975*4882a593Smuzhiyun }; 976*4882a593Smuzhiyun 977*4882a593Smuzhiyun /* Enumeration for L3 type field of parsing_and_err_flags. 978*4882a593Smuzhiyun * L3Type: 0 - unknown (not ip), 1 - Ipv4, 2 - Ipv6 979*4882a593Smuzhiyun * (This field can be filled according to the last-ethertype) 980*4882a593Smuzhiyun */ 981*4882a593Smuzhiyun enum l3_type { 982*4882a593Smuzhiyun e_l3_type_unknown, 983*4882a593Smuzhiyun e_l3_type_ipv4, 984*4882a593Smuzhiyun e_l3_type_ipv6, 985*4882a593Smuzhiyun MAX_L3_TYPE 986*4882a593Smuzhiyun }; 987*4882a593Smuzhiyun 988*4882a593Smuzhiyun /* Enumeration for l4Protocol field of parsing_and_err_flags. 989*4882a593Smuzhiyun * L4-protocol: 0 - none, 1 - TCP, 2 - UDP. 990*4882a593Smuzhiyun * If the packet is IPv4 fragment, and its not the first fragment, the 991*4882a593Smuzhiyun * protocol-type should be set to none. 992*4882a593Smuzhiyun */ 993*4882a593Smuzhiyun enum l4_protocol { 994*4882a593Smuzhiyun e_l4_protocol_none, 995*4882a593Smuzhiyun e_l4_protocol_tcp, 996*4882a593Smuzhiyun e_l4_protocol_udp, 997*4882a593Smuzhiyun MAX_L4_PROTOCOL 998*4882a593Smuzhiyun }; 999*4882a593Smuzhiyun 1000*4882a593Smuzhiyun /* Parsing and error flags field */ 1001*4882a593Smuzhiyun struct parsing_and_err_flags { 1002*4882a593Smuzhiyun __le16 flags; 1003*4882a593Smuzhiyun #define PARSING_AND_ERR_FLAGS_L3TYPE_MASK 0x3 1004*4882a593Smuzhiyun #define PARSING_AND_ERR_FLAGS_L3TYPE_SHIFT 0 1005*4882a593Smuzhiyun #define PARSING_AND_ERR_FLAGS_L4PROTOCOL_MASK 0x3 1006*4882a593Smuzhiyun #define PARSING_AND_ERR_FLAGS_L4PROTOCOL_SHIFT 2 1007*4882a593Smuzhiyun #define PARSING_AND_ERR_FLAGS_IPV4FRAG_MASK 0x1 1008*4882a593Smuzhiyun #define PARSING_AND_ERR_FLAGS_IPV4FRAG_SHIFT 4 1009*4882a593Smuzhiyun #define PARSING_AND_ERR_FLAGS_TAG8021QEXIST_MASK 0x1 1010*4882a593Smuzhiyun #define PARSING_AND_ERR_FLAGS_TAG8021QEXIST_SHIFT 5 1011*4882a593Smuzhiyun #define PARSING_AND_ERR_FLAGS_L4CHKSMWASCALCULATED_MASK 0x1 1012*4882a593Smuzhiyun #define PARSING_AND_ERR_FLAGS_L4CHKSMWASCALCULATED_SHIFT 6 1013*4882a593Smuzhiyun #define PARSING_AND_ERR_FLAGS_TIMESYNCPKT_MASK 0x1 1014*4882a593Smuzhiyun #define PARSING_AND_ERR_FLAGS_TIMESYNCPKT_SHIFT 7 1015*4882a593Smuzhiyun #define PARSING_AND_ERR_FLAGS_TIMESTAMPRECORDED_MASK 0x1 1016*4882a593Smuzhiyun #define PARSING_AND_ERR_FLAGS_TIMESTAMPRECORDED_SHIFT 8 1017*4882a593Smuzhiyun #define PARSING_AND_ERR_FLAGS_IPHDRERROR_MASK 0x1 1018*4882a593Smuzhiyun #define PARSING_AND_ERR_FLAGS_IPHDRERROR_SHIFT 9 1019*4882a593Smuzhiyun #define PARSING_AND_ERR_FLAGS_L4CHKSMERROR_MASK 0x1 1020*4882a593Smuzhiyun #define PARSING_AND_ERR_FLAGS_L4CHKSMERROR_SHIFT 10 1021*4882a593Smuzhiyun #define PARSING_AND_ERR_FLAGS_TUNNELEXIST_MASK 0x1 1022*4882a593Smuzhiyun #define PARSING_AND_ERR_FLAGS_TUNNELEXIST_SHIFT 11 1023*4882a593Smuzhiyun #define PARSING_AND_ERR_FLAGS_TUNNEL8021QTAGEXIST_MASK 0x1 1024*4882a593Smuzhiyun #define PARSING_AND_ERR_FLAGS_TUNNEL8021QTAGEXIST_SHIFT 12 1025*4882a593Smuzhiyun #define PARSING_AND_ERR_FLAGS_TUNNELIPHDRERROR_MASK 0x1 1026*4882a593Smuzhiyun #define PARSING_AND_ERR_FLAGS_TUNNELIPHDRERROR_SHIFT 13 1027*4882a593Smuzhiyun #define PARSING_AND_ERR_FLAGS_TUNNELL4CHKSMWASCALCULATED_MASK 0x1 1028*4882a593Smuzhiyun #define PARSING_AND_ERR_FLAGS_TUNNELL4CHKSMWASCALCULATED_SHIFT 14 1029*4882a593Smuzhiyun #define PARSING_AND_ERR_FLAGS_TUNNELL4CHKSMERROR_MASK 0x1 1030*4882a593Smuzhiyun #define PARSING_AND_ERR_FLAGS_TUNNELL4CHKSMERROR_SHIFT 15 1031*4882a593Smuzhiyun }; 1032*4882a593Smuzhiyun 1033*4882a593Smuzhiyun /* Parsing error flags bitmap */ 1034*4882a593Smuzhiyun struct parsing_err_flags { 1035*4882a593Smuzhiyun __le16 flags; 1036*4882a593Smuzhiyun #define PARSING_ERR_FLAGS_MAC_ERROR_MASK 0x1 1037*4882a593Smuzhiyun #define PARSING_ERR_FLAGS_MAC_ERROR_SHIFT 0 1038*4882a593Smuzhiyun #define PARSING_ERR_FLAGS_TRUNC_ERROR_MASK 0x1 1039*4882a593Smuzhiyun #define PARSING_ERR_FLAGS_TRUNC_ERROR_SHIFT 1 1040*4882a593Smuzhiyun #define PARSING_ERR_FLAGS_PKT_TOO_SMALL_MASK 0x1 1041*4882a593Smuzhiyun #define PARSING_ERR_FLAGS_PKT_TOO_SMALL_SHIFT 2 1042*4882a593Smuzhiyun #define PARSING_ERR_FLAGS_ANY_HDR_MISSING_TAG_MASK 0x1 1043*4882a593Smuzhiyun #define PARSING_ERR_FLAGS_ANY_HDR_MISSING_TAG_SHIFT 3 1044*4882a593Smuzhiyun #define PARSING_ERR_FLAGS_ANY_HDR_IP_VER_MISMTCH_MASK 0x1 1045*4882a593Smuzhiyun #define PARSING_ERR_FLAGS_ANY_HDR_IP_VER_MISMTCH_SHIFT 4 1046*4882a593Smuzhiyun #define PARSING_ERR_FLAGS_ANY_HDR_IP_V4_HDR_LEN_TOO_SMALL_MASK 0x1 1047*4882a593Smuzhiyun #define PARSING_ERR_FLAGS_ANY_HDR_IP_V4_HDR_LEN_TOO_SMALL_SHIFT 5 1048*4882a593Smuzhiyun #define PARSING_ERR_FLAGS_ANY_HDR_IP_BAD_TOTAL_LEN_MASK 0x1 1049*4882a593Smuzhiyun #define PARSING_ERR_FLAGS_ANY_HDR_IP_BAD_TOTAL_LEN_SHIFT 6 1050*4882a593Smuzhiyun #define PARSING_ERR_FLAGS_IP_V4_CHKSM_ERROR_MASK 0x1 1051*4882a593Smuzhiyun #define PARSING_ERR_FLAGS_IP_V4_CHKSM_ERROR_SHIFT 7 1052*4882a593Smuzhiyun #define PARSING_ERR_FLAGS_ANY_HDR_L4_IP_LEN_MISMTCH_MASK 0x1 1053*4882a593Smuzhiyun #define PARSING_ERR_FLAGS_ANY_HDR_L4_IP_LEN_MISMTCH_SHIFT 8 1054*4882a593Smuzhiyun #define PARSING_ERR_FLAGS_ZERO_UDP_IP_V6_CHKSM_MASK 0x1 1055*4882a593Smuzhiyun #define PARSING_ERR_FLAGS_ZERO_UDP_IP_V6_CHKSM_SHIFT 9 1056*4882a593Smuzhiyun #define PARSING_ERR_FLAGS_INNER_L4_CHKSM_ERROR_MASK 0x1 1057*4882a593Smuzhiyun #define PARSING_ERR_FLAGS_INNER_L4_CHKSM_ERROR_SHIFT 10 1058*4882a593Smuzhiyun #define PARSING_ERR_FLAGS_ANY_HDR_ZERO_TTL_OR_HOP_LIM_MASK 0x1 1059*4882a593Smuzhiyun #define PARSING_ERR_FLAGS_ANY_HDR_ZERO_TTL_OR_HOP_LIM_SHIFT 11 1060*4882a593Smuzhiyun #define PARSING_ERR_FLAGS_NON_8021Q_TAG_EXISTS_IN_BOTH_HDRS_MASK 0x1 1061*4882a593Smuzhiyun #define PARSING_ERR_FLAGS_NON_8021Q_TAG_EXISTS_IN_BOTH_HDRS_SHIFT 12 1062*4882a593Smuzhiyun #define PARSING_ERR_FLAGS_GENEVE_OPTION_OVERSIZED_MASK 0x1 1063*4882a593Smuzhiyun #define PARSING_ERR_FLAGS_GENEVE_OPTION_OVERSIZED_SHIFT 13 1064*4882a593Smuzhiyun #define PARSING_ERR_FLAGS_TUNNEL_IP_V4_CHKSM_ERROR_MASK 0x1 1065*4882a593Smuzhiyun #define PARSING_ERR_FLAGS_TUNNEL_IP_V4_CHKSM_ERROR_SHIFT 14 1066*4882a593Smuzhiyun #define PARSING_ERR_FLAGS_TUNNEL_L4_CHKSM_ERROR_MASK 0x1 1067*4882a593Smuzhiyun #define PARSING_ERR_FLAGS_TUNNEL_L4_CHKSM_ERROR_SHIFT 15 1068*4882a593Smuzhiyun }; 1069*4882a593Smuzhiyun 1070*4882a593Smuzhiyun /* Pb context */ 1071*4882a593Smuzhiyun struct pb_context { 1072*4882a593Smuzhiyun __le32 crc[4]; 1073*4882a593Smuzhiyun }; 1074*4882a593Smuzhiyun 1075*4882a593Smuzhiyun /* Concrete Function ID */ 1076*4882a593Smuzhiyun struct pxp_concrete_fid { 1077*4882a593Smuzhiyun __le16 fid; 1078*4882a593Smuzhiyun #define PXP_CONCRETE_FID_PFID_MASK 0xF 1079*4882a593Smuzhiyun #define PXP_CONCRETE_FID_PFID_SHIFT 0 1080*4882a593Smuzhiyun #define PXP_CONCRETE_FID_PORT_MASK 0x3 1081*4882a593Smuzhiyun #define PXP_CONCRETE_FID_PORT_SHIFT 4 1082*4882a593Smuzhiyun #define PXP_CONCRETE_FID_PATH_MASK 0x1 1083*4882a593Smuzhiyun #define PXP_CONCRETE_FID_PATH_SHIFT 6 1084*4882a593Smuzhiyun #define PXP_CONCRETE_FID_VFVALID_MASK 0x1 1085*4882a593Smuzhiyun #define PXP_CONCRETE_FID_VFVALID_SHIFT 7 1086*4882a593Smuzhiyun #define PXP_CONCRETE_FID_VFID_MASK 0xFF 1087*4882a593Smuzhiyun #define PXP_CONCRETE_FID_VFID_SHIFT 8 1088*4882a593Smuzhiyun }; 1089*4882a593Smuzhiyun 1090*4882a593Smuzhiyun /* Concrete Function ID */ 1091*4882a593Smuzhiyun struct pxp_pretend_concrete_fid { 1092*4882a593Smuzhiyun __le16 fid; 1093*4882a593Smuzhiyun #define PXP_PRETEND_CONCRETE_FID_PFID_MASK 0xF 1094*4882a593Smuzhiyun #define PXP_PRETEND_CONCRETE_FID_PFID_SHIFT 0 1095*4882a593Smuzhiyun #define PXP_PRETEND_CONCRETE_FID_RESERVED_MASK 0x7 1096*4882a593Smuzhiyun #define PXP_PRETEND_CONCRETE_FID_RESERVED_SHIFT 4 1097*4882a593Smuzhiyun #define PXP_PRETEND_CONCRETE_FID_VFVALID_MASK 0x1 1098*4882a593Smuzhiyun #define PXP_PRETEND_CONCRETE_FID_VFVALID_SHIFT 7 1099*4882a593Smuzhiyun #define PXP_PRETEND_CONCRETE_FID_VFID_MASK 0xFF 1100*4882a593Smuzhiyun #define PXP_PRETEND_CONCRETE_FID_VFID_SHIFT 8 1101*4882a593Smuzhiyun }; 1102*4882a593Smuzhiyun 1103*4882a593Smuzhiyun /* Function ID */ 1104*4882a593Smuzhiyun union pxp_pretend_fid { 1105*4882a593Smuzhiyun struct pxp_pretend_concrete_fid concrete_fid; 1106*4882a593Smuzhiyun __le16 opaque_fid; 1107*4882a593Smuzhiyun }; 1108*4882a593Smuzhiyun 1109*4882a593Smuzhiyun /* Pxp Pretend Command Register */ 1110*4882a593Smuzhiyun struct pxp_pretend_cmd { 1111*4882a593Smuzhiyun union pxp_pretend_fid fid; 1112*4882a593Smuzhiyun __le16 control; 1113*4882a593Smuzhiyun #define PXP_PRETEND_CMD_PATH_MASK 0x1 1114*4882a593Smuzhiyun #define PXP_PRETEND_CMD_PATH_SHIFT 0 1115*4882a593Smuzhiyun #define PXP_PRETEND_CMD_USE_PORT_MASK 0x1 1116*4882a593Smuzhiyun #define PXP_PRETEND_CMD_USE_PORT_SHIFT 1 1117*4882a593Smuzhiyun #define PXP_PRETEND_CMD_PORT_MASK 0x3 1118*4882a593Smuzhiyun #define PXP_PRETEND_CMD_PORT_SHIFT 2 1119*4882a593Smuzhiyun #define PXP_PRETEND_CMD_RESERVED0_MASK 0xF 1120*4882a593Smuzhiyun #define PXP_PRETEND_CMD_RESERVED0_SHIFT 4 1121*4882a593Smuzhiyun #define PXP_PRETEND_CMD_RESERVED1_MASK 0xF 1122*4882a593Smuzhiyun #define PXP_PRETEND_CMD_RESERVED1_SHIFT 8 1123*4882a593Smuzhiyun #define PXP_PRETEND_CMD_PRETEND_PATH_MASK 0x1 1124*4882a593Smuzhiyun #define PXP_PRETEND_CMD_PRETEND_PATH_SHIFT 12 1125*4882a593Smuzhiyun #define PXP_PRETEND_CMD_PRETEND_PORT_MASK 0x1 1126*4882a593Smuzhiyun #define PXP_PRETEND_CMD_PRETEND_PORT_SHIFT 13 1127*4882a593Smuzhiyun #define PXP_PRETEND_CMD_PRETEND_FUNCTION_MASK 0x1 1128*4882a593Smuzhiyun #define PXP_PRETEND_CMD_PRETEND_FUNCTION_SHIFT 14 1129*4882a593Smuzhiyun #define PXP_PRETEND_CMD_IS_CONCRETE_MASK 0x1 1130*4882a593Smuzhiyun #define PXP_PRETEND_CMD_IS_CONCRETE_SHIFT 15 1131*4882a593Smuzhiyun }; 1132*4882a593Smuzhiyun 1133*4882a593Smuzhiyun /* PTT Record in PXP Admin Window */ 1134*4882a593Smuzhiyun struct pxp_ptt_entry { 1135*4882a593Smuzhiyun __le32 offset; 1136*4882a593Smuzhiyun #define PXP_PTT_ENTRY_OFFSET_MASK 0x7FFFFF 1137*4882a593Smuzhiyun #define PXP_PTT_ENTRY_OFFSET_SHIFT 0 1138*4882a593Smuzhiyun #define PXP_PTT_ENTRY_RESERVED0_MASK 0x1FF 1139*4882a593Smuzhiyun #define PXP_PTT_ENTRY_RESERVED0_SHIFT 23 1140*4882a593Smuzhiyun struct pxp_pretend_cmd pretend; 1141*4882a593Smuzhiyun }; 1142*4882a593Smuzhiyun 1143*4882a593Smuzhiyun /* VF Zone A Permission Register */ 1144*4882a593Smuzhiyun struct pxp_vf_zone_a_permission { 1145*4882a593Smuzhiyun __le32 control; 1146*4882a593Smuzhiyun #define PXP_VF_ZONE_A_PERMISSION_VFID_MASK 0xFF 1147*4882a593Smuzhiyun #define PXP_VF_ZONE_A_PERMISSION_VFID_SHIFT 0 1148*4882a593Smuzhiyun #define PXP_VF_ZONE_A_PERMISSION_VALID_MASK 0x1 1149*4882a593Smuzhiyun #define PXP_VF_ZONE_A_PERMISSION_VALID_SHIFT 8 1150*4882a593Smuzhiyun #define PXP_VF_ZONE_A_PERMISSION_RESERVED0_MASK 0x7F 1151*4882a593Smuzhiyun #define PXP_VF_ZONE_A_PERMISSION_RESERVED0_SHIFT 9 1152*4882a593Smuzhiyun #define PXP_VF_ZONE_A_PERMISSION_RESERVED1_MASK 0xFFFF 1153*4882a593Smuzhiyun #define PXP_VF_ZONE_A_PERMISSION_RESERVED1_SHIFT 16 1154*4882a593Smuzhiyun }; 1155*4882a593Smuzhiyun 1156*4882a593Smuzhiyun /* Rdif context */ 1157*4882a593Smuzhiyun struct rdif_task_context { 1158*4882a593Smuzhiyun __le32 initial_ref_tag; 1159*4882a593Smuzhiyun __le16 app_tag_value; 1160*4882a593Smuzhiyun __le16 app_tag_mask; 1161*4882a593Smuzhiyun u8 flags0; 1162*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_IGNORE_APP_TAG_MASK 0x1 1163*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_IGNORE_APP_TAG_SHIFT 0 1164*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_INITIAL_REF_TAG_VALID_MASK 0x1 1165*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_INITIAL_REF_TAG_VALID_SHIFT 1 1166*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_HOST_GUARD_TYPE_MASK 0x1 1167*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_HOST_GUARD_TYPE_SHIFT 2 1168*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_SET_ERROR_WITH_EOP_MASK 0x1 1169*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_SET_ERROR_WITH_EOP_SHIFT 3 1170*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_PROTECTION_TYPE_MASK 0x3 1171*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_PROTECTION_TYPE_SHIFT 4 1172*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_CRC_SEED_MASK 0x1 1173*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_CRC_SEED_SHIFT 6 1174*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_KEEP_REF_TAG_CONST_MASK 0x1 1175*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_KEEP_REF_TAG_CONST_SHIFT 7 1176*4882a593Smuzhiyun u8 partial_dif_data[7]; 1177*4882a593Smuzhiyun __le16 partial_crc_value; 1178*4882a593Smuzhiyun __le16 partial_checksum_value; 1179*4882a593Smuzhiyun __le32 offset_in_io; 1180*4882a593Smuzhiyun __le16 flags1; 1181*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_VALIDATE_GUARD_MASK 0x1 1182*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_VALIDATE_GUARD_SHIFT 0 1183*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_VALIDATE_APP_TAG_MASK 0x1 1184*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_VALIDATE_APP_TAG_SHIFT 1 1185*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_VALIDATE_REF_TAG_MASK 0x1 1186*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_VALIDATE_REF_TAG_SHIFT 2 1187*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_FORWARD_GUARD_MASK 0x1 1188*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_FORWARD_GUARD_SHIFT 3 1189*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_FORWARD_APP_TAG_MASK 0x1 1190*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_FORWARD_APP_TAG_SHIFT 4 1191*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_FORWARD_REF_TAG_MASK 0x1 1192*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_FORWARD_REF_TAG_SHIFT 5 1193*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_INTERVAL_SIZE_MASK 0x7 1194*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_INTERVAL_SIZE_SHIFT 6 1195*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_HOST_INTERFACE_MASK 0x3 1196*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_HOST_INTERFACE_SHIFT 9 1197*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_DIF_BEFORE_DATA_MASK 0x1 1198*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_DIF_BEFORE_DATA_SHIFT 11 1199*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_RESERVED0_MASK 0x1 1200*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_RESERVED0_SHIFT 12 1201*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_NETWORK_INTERFACE_MASK 0x1 1202*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_NETWORK_INTERFACE_SHIFT 13 1203*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_FORWARD_APP_TAG_WITH_MASK_MASK 0x1 1204*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_FORWARD_APP_TAG_WITH_MASK_SHIFT 14 1205*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_FORWARD_REF_TAG_WITH_MASK_MASK 0x1 1206*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_FORWARD_REF_TAG_WITH_MASK_SHIFT 15 1207*4882a593Smuzhiyun __le16 state; 1208*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_RECEIVED_DIF_BYTES_LEFT_MASK 0xF 1209*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_RECEIVED_DIF_BYTES_LEFT_SHIFT 0 1210*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_TRANSMITED_DIF_BYTES_LEFT_MASK 0xF 1211*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_TRANSMITED_DIF_BYTES_LEFT_SHIFT 4 1212*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_ERROR_IN_IO_MASK 0x1 1213*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_ERROR_IN_IO_SHIFT 8 1214*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_CHECKSUM_OVERFLOW_MASK 0x1 1215*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_CHECKSUM_OVERFLOW_SHIFT 9 1216*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_REF_TAG_MASK_MASK 0xF 1217*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_REF_TAG_MASK_SHIFT 10 1218*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_RESERVED1_MASK 0x3 1219*4882a593Smuzhiyun #define RDIF_TASK_CONTEXT_RESERVED1_SHIFT 14 1220*4882a593Smuzhiyun __le32 reserved2; 1221*4882a593Smuzhiyun }; 1222*4882a593Smuzhiyun 1223*4882a593Smuzhiyun /* Status block structure */ 1224*4882a593Smuzhiyun struct status_block_e4 { 1225*4882a593Smuzhiyun __le16 pi_array[PIS_PER_SB_E4]; 1226*4882a593Smuzhiyun __le32 sb_num; 1227*4882a593Smuzhiyun #define STATUS_BLOCK_E4_SB_NUM_MASK 0x1FF 1228*4882a593Smuzhiyun #define STATUS_BLOCK_E4_SB_NUM_SHIFT 0 1229*4882a593Smuzhiyun #define STATUS_BLOCK_E4_ZERO_PAD_MASK 0x7F 1230*4882a593Smuzhiyun #define STATUS_BLOCK_E4_ZERO_PAD_SHIFT 9 1231*4882a593Smuzhiyun #define STATUS_BLOCK_E4_ZERO_PAD2_MASK 0xFFFF 1232*4882a593Smuzhiyun #define STATUS_BLOCK_E4_ZERO_PAD2_SHIFT 16 1233*4882a593Smuzhiyun __le32 prod_index; 1234*4882a593Smuzhiyun #define STATUS_BLOCK_E4_PROD_INDEX_MASK 0xFFFFFF 1235*4882a593Smuzhiyun #define STATUS_BLOCK_E4_PROD_INDEX_SHIFT 0 1236*4882a593Smuzhiyun #define STATUS_BLOCK_E4_ZERO_PAD3_MASK 0xFF 1237*4882a593Smuzhiyun #define STATUS_BLOCK_E4_ZERO_PAD3_SHIFT 24 1238*4882a593Smuzhiyun }; 1239*4882a593Smuzhiyun 1240*4882a593Smuzhiyun /* Tdif context */ 1241*4882a593Smuzhiyun struct tdif_task_context { 1242*4882a593Smuzhiyun __le32 initial_ref_tag; 1243*4882a593Smuzhiyun __le16 app_tag_value; 1244*4882a593Smuzhiyun __le16 app_tag_mask; 1245*4882a593Smuzhiyun __le16 partial_crc_value_b; 1246*4882a593Smuzhiyun __le16 partial_checksum_value_b; 1247*4882a593Smuzhiyun __le16 stateB; 1248*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_RECEIVED_DIF_BYTES_LEFT_B_MASK 0xF 1249*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_RECEIVED_DIF_BYTES_LEFT_B_SHIFT 0 1250*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_TRANSMITED_DIF_BYTES_LEFT_B_MASK 0xF 1251*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_TRANSMITED_DIF_BYTES_LEFT_B_SHIFT 4 1252*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_ERROR_IN_IO_B_MASK 0x1 1253*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_ERROR_IN_IO_B_SHIFT 8 1254*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_CHECKSUM_VERFLOW_MASK 0x1 1255*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_CHECKSUM_VERFLOW_SHIFT 9 1256*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_RESERVED0_MASK 0x3F 1257*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_RESERVED0_SHIFT 10 1258*4882a593Smuzhiyun u8 reserved1; 1259*4882a593Smuzhiyun u8 flags0; 1260*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_IGNORE_APP_TAG_MASK 0x1 1261*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_IGNORE_APP_TAG_SHIFT 0 1262*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_INITIAL_REF_TAG_VALID_MASK 0x1 1263*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_INITIAL_REF_TAG_VALID_SHIFT 1 1264*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_HOST_GUARD_TYPE_MASK 0x1 1265*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_HOST_GUARD_TYPE_SHIFT 2 1266*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_SET_ERROR_WITH_EOP_MASK 0x1 1267*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_SET_ERROR_WITH_EOP_SHIFT 3 1268*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_PROTECTION_TYPE_MASK 0x3 1269*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_PROTECTION_TYPE_SHIFT 4 1270*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_CRC_SEED_MASK 0x1 1271*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_CRC_SEED_SHIFT 6 1272*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_RESERVED2_MASK 0x1 1273*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_RESERVED2_SHIFT 7 1274*4882a593Smuzhiyun __le32 flags1; 1275*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_VALIDATE_GUARD_MASK 0x1 1276*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_VALIDATE_GUARD_SHIFT 0 1277*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_VALIDATE_APP_TAG_MASK 0x1 1278*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_VALIDATE_APP_TAG_SHIFT 1 1279*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_VALIDATE_REF_TAG_MASK 0x1 1280*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_VALIDATE_REF_TAG_SHIFT 2 1281*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_FORWARD_GUARD_MASK 0x1 1282*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_FORWARD_GUARD_SHIFT 3 1283*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_FORWARD_APP_TAG_MASK 0x1 1284*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_FORWARD_APP_TAG_SHIFT 4 1285*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_FORWARD_REF_TAG_MASK 0x1 1286*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_FORWARD_REF_TAG_SHIFT 5 1287*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_INTERVAL_SIZE_MASK 0x7 1288*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_INTERVAL_SIZE_SHIFT 6 1289*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_HOST_INTERFACE_MASK 0x3 1290*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_HOST_INTERFACE_SHIFT 9 1291*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_DIF_BEFORE_DATA_MASK 0x1 1292*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_DIF_BEFORE_DATA_SHIFT 11 1293*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_RESERVED3_MASK 0x1 1294*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_RESERVED3_SHIFT 12 1295*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_NETWORK_INTERFACE_MASK 0x1 1296*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_NETWORK_INTERFACE_SHIFT 13 1297*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_RECEIVED_DIF_BYTES_LEFT_A_MASK 0xF 1298*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_RECEIVED_DIF_BYTES_LEFT_A_SHIFT 14 1299*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_TRANSMITED_DIF_BYTES_LEFT_A_MASK 0xF 1300*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_TRANSMITED_DIF_BYTES_LEFT_A_SHIFT 18 1301*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_ERROR_IN_IO_A_MASK 0x1 1302*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_ERROR_IN_IO_A_SHIFT 22 1303*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_CHECKSUM_OVERFLOW_A_MASK 0x1 1304*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_CHECKSUM_OVERFLOW_A_SHIFT 23 1305*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_REF_TAG_MASK_MASK 0xF 1306*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_REF_TAG_MASK_SHIFT 24 1307*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_FORWARD_APP_TAG_WITH_MASK_MASK 0x1 1308*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_FORWARD_APP_TAG_WITH_MASK_SHIFT 28 1309*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_FORWARD_REF_TAG_WITH_MASK_MASK 0x1 1310*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_FORWARD_REF_TAG_WITH_MASK_SHIFT 29 1311*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_KEEP_REF_TAG_CONST_MASK 0x1 1312*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_KEEP_REF_TAG_CONST_SHIFT 30 1313*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_RESERVED4_MASK 0x1 1314*4882a593Smuzhiyun #define TDIF_TASK_CONTEXT_RESERVED4_SHIFT 31 1315*4882a593Smuzhiyun __le32 offset_in_io_b; 1316*4882a593Smuzhiyun __le16 partial_crc_value_a; 1317*4882a593Smuzhiyun __le16 partial_checksum_value_a; 1318*4882a593Smuzhiyun __le32 offset_in_io_a; 1319*4882a593Smuzhiyun u8 partial_dif_data_a[8]; 1320*4882a593Smuzhiyun u8 partial_dif_data_b[8]; 1321*4882a593Smuzhiyun }; 1322*4882a593Smuzhiyun 1323*4882a593Smuzhiyun /* Timers context */ 1324*4882a593Smuzhiyun struct timers_context { 1325*4882a593Smuzhiyun __le32 logical_client_0; 1326*4882a593Smuzhiyun #define TIMERS_CONTEXT_EXPIRATIONTIMELC0_MASK 0x7FFFFFF 1327*4882a593Smuzhiyun #define TIMERS_CONTEXT_EXPIRATIONTIMELC0_SHIFT 0 1328*4882a593Smuzhiyun #define TIMERS_CONTEXT_RESERVED0_MASK 0x1 1329*4882a593Smuzhiyun #define TIMERS_CONTEXT_RESERVED0_SHIFT 27 1330*4882a593Smuzhiyun #define TIMERS_CONTEXT_VALIDLC0_MASK 0x1 1331*4882a593Smuzhiyun #define TIMERS_CONTEXT_VALIDLC0_SHIFT 28 1332*4882a593Smuzhiyun #define TIMERS_CONTEXT_ACTIVELC0_MASK 0x1 1333*4882a593Smuzhiyun #define TIMERS_CONTEXT_ACTIVELC0_SHIFT 29 1334*4882a593Smuzhiyun #define TIMERS_CONTEXT_RESERVED1_MASK 0x3 1335*4882a593Smuzhiyun #define TIMERS_CONTEXT_RESERVED1_SHIFT 30 1336*4882a593Smuzhiyun __le32 logical_client_1; 1337*4882a593Smuzhiyun #define TIMERS_CONTEXT_EXPIRATIONTIMELC1_MASK 0x7FFFFFF 1338*4882a593Smuzhiyun #define TIMERS_CONTEXT_EXPIRATIONTIMELC1_SHIFT 0 1339*4882a593Smuzhiyun #define TIMERS_CONTEXT_RESERVED2_MASK 0x1 1340*4882a593Smuzhiyun #define TIMERS_CONTEXT_RESERVED2_SHIFT 27 1341*4882a593Smuzhiyun #define TIMERS_CONTEXT_VALIDLC1_MASK 0x1 1342*4882a593Smuzhiyun #define TIMERS_CONTEXT_VALIDLC1_SHIFT 28 1343*4882a593Smuzhiyun #define TIMERS_CONTEXT_ACTIVELC1_MASK 0x1 1344*4882a593Smuzhiyun #define TIMERS_CONTEXT_ACTIVELC1_SHIFT 29 1345*4882a593Smuzhiyun #define TIMERS_CONTEXT_RESERVED3_MASK 0x3 1346*4882a593Smuzhiyun #define TIMERS_CONTEXT_RESERVED3_SHIFT 30 1347*4882a593Smuzhiyun __le32 logical_client_2; 1348*4882a593Smuzhiyun #define TIMERS_CONTEXT_EXPIRATIONTIMELC2_MASK 0x7FFFFFF 1349*4882a593Smuzhiyun #define TIMERS_CONTEXT_EXPIRATIONTIMELC2_SHIFT 0 1350*4882a593Smuzhiyun #define TIMERS_CONTEXT_RESERVED4_MASK 0x1 1351*4882a593Smuzhiyun #define TIMERS_CONTEXT_RESERVED4_SHIFT 27 1352*4882a593Smuzhiyun #define TIMERS_CONTEXT_VALIDLC2_MASK 0x1 1353*4882a593Smuzhiyun #define TIMERS_CONTEXT_VALIDLC2_SHIFT 28 1354*4882a593Smuzhiyun #define TIMERS_CONTEXT_ACTIVELC2_MASK 0x1 1355*4882a593Smuzhiyun #define TIMERS_CONTEXT_ACTIVELC2_SHIFT 29 1356*4882a593Smuzhiyun #define TIMERS_CONTEXT_RESERVED5_MASK 0x3 1357*4882a593Smuzhiyun #define TIMERS_CONTEXT_RESERVED5_SHIFT 30 1358*4882a593Smuzhiyun __le32 host_expiration_fields; 1359*4882a593Smuzhiyun #define TIMERS_CONTEXT_HOSTEXPRIRATIONVALUE_MASK 0x7FFFFFF 1360*4882a593Smuzhiyun #define TIMERS_CONTEXT_HOSTEXPRIRATIONVALUE_SHIFT 0 1361*4882a593Smuzhiyun #define TIMERS_CONTEXT_RESERVED6_MASK 0x1 1362*4882a593Smuzhiyun #define TIMERS_CONTEXT_RESERVED6_SHIFT 27 1363*4882a593Smuzhiyun #define TIMERS_CONTEXT_HOSTEXPRIRATIONVALID_MASK 0x1 1364*4882a593Smuzhiyun #define TIMERS_CONTEXT_HOSTEXPRIRATIONVALID_SHIFT 28 1365*4882a593Smuzhiyun #define TIMERS_CONTEXT_RESERVED7_MASK 0x7 1366*4882a593Smuzhiyun #define TIMERS_CONTEXT_RESERVED7_SHIFT 29 1367*4882a593Smuzhiyun }; 1368*4882a593Smuzhiyun 1369*4882a593Smuzhiyun /* Enum for next_protocol field of tunnel_parsing_flags / tunnelTypeDesc */ 1370*4882a593Smuzhiyun enum tunnel_next_protocol { 1371*4882a593Smuzhiyun e_unknown = 0, 1372*4882a593Smuzhiyun e_l2 = 1, 1373*4882a593Smuzhiyun e_ipv4 = 2, 1374*4882a593Smuzhiyun e_ipv6 = 3, 1375*4882a593Smuzhiyun MAX_TUNNEL_NEXT_PROTOCOL 1376*4882a593Smuzhiyun }; 1377*4882a593Smuzhiyun 1378*4882a593Smuzhiyun #endif /* __COMMON_HSI__ */ 1379*4882a593Smuzhiyun #endif 1380