1*4882a593Smuzhiyun /* SPDX-License-Identifier: (GPL-2.0 OR MIT) 2*4882a593Smuzhiyun * Microsemi Ocelot Switch driver 3*4882a593Smuzhiyun * Copyright (c) 2019 Microsemi Corporation 4*4882a593Smuzhiyun */ 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun #ifndef _OCELOT_VCAP_H_ 7*4882a593Smuzhiyun #define _OCELOT_VCAP_H_ 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun #include <soc/mscc/ocelot.h> 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun /* ================================================================= 12*4882a593Smuzhiyun * VCAP Common 13*4882a593Smuzhiyun * ================================================================= 14*4882a593Smuzhiyun */ 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun enum { 17*4882a593Smuzhiyun VCAP_ES0, 18*4882a593Smuzhiyun VCAP_IS1, 19*4882a593Smuzhiyun VCAP_IS2, 20*4882a593Smuzhiyun __VCAP_COUNT, 21*4882a593Smuzhiyun }; 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun #define OCELOT_NUM_VCAP_BLOCKS __VCAP_COUNT 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun struct vcap_props { 26*4882a593Smuzhiyun u16 tg_width; /* Type-group width (in bits) */ 27*4882a593Smuzhiyun u16 sw_count; /* Sub word count */ 28*4882a593Smuzhiyun u16 entry_count; /* Entry count */ 29*4882a593Smuzhiyun u16 entry_words; /* Number of entry words */ 30*4882a593Smuzhiyun u16 entry_width; /* Entry width (in bits) */ 31*4882a593Smuzhiyun u16 action_count; /* Action count */ 32*4882a593Smuzhiyun u16 action_words; /* Number of action words */ 33*4882a593Smuzhiyun u16 action_width; /* Action width (in bits) */ 34*4882a593Smuzhiyun u16 action_type_width; /* Action type width (in bits) */ 35*4882a593Smuzhiyun struct { 36*4882a593Smuzhiyun u16 width; /* Action type width (in bits) */ 37*4882a593Smuzhiyun u16 count; /* Action type sub word count */ 38*4882a593Smuzhiyun } action_table[2]; 39*4882a593Smuzhiyun u16 counter_words; /* Number of counter words */ 40*4882a593Smuzhiyun u16 counter_width; /* Counter width (in bits) */ 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun enum ocelot_target target; 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun const struct vcap_field *keys; 45*4882a593Smuzhiyun const struct vcap_field *actions; 46*4882a593Smuzhiyun }; 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun /* VCAP Type-Group values */ 49*4882a593Smuzhiyun #define VCAP_TG_NONE 0 /* Entry is invalid */ 50*4882a593Smuzhiyun #define VCAP_TG_FULL 1 /* Full entry */ 51*4882a593Smuzhiyun #define VCAP_TG_HALF 2 /* Half entry */ 52*4882a593Smuzhiyun #define VCAP_TG_QUARTER 3 /* Quarter entry */ 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun #define VCAP_CORE_UPDATE_CTRL_UPDATE_CMD(x) (((x) << 22) & GENMASK(24, 22)) 55*4882a593Smuzhiyun #define VCAP_CORE_UPDATE_CTRL_UPDATE_CMD_M GENMASK(24, 22) 56*4882a593Smuzhiyun #define VCAP_CORE_UPDATE_CTRL_UPDATE_CMD_X(x) (((x) & GENMASK(24, 22)) >> 22) 57*4882a593Smuzhiyun #define VCAP_CORE_UPDATE_CTRL_UPDATE_ENTRY_DIS BIT(21) 58*4882a593Smuzhiyun #define VCAP_CORE_UPDATE_CTRL_UPDATE_ACTION_DIS BIT(20) 59*4882a593Smuzhiyun #define VCAP_CORE_UPDATE_CTRL_UPDATE_CNT_DIS BIT(19) 60*4882a593Smuzhiyun #define VCAP_CORE_UPDATE_CTRL_UPDATE_ADDR(x) (((x) << 3) & GENMASK(18, 3)) 61*4882a593Smuzhiyun #define VCAP_CORE_UPDATE_CTRL_UPDATE_ADDR_M GENMASK(18, 3) 62*4882a593Smuzhiyun #define VCAP_CORE_UPDATE_CTRL_UPDATE_ADDR_X(x) (((x) & GENMASK(18, 3)) >> 3) 63*4882a593Smuzhiyun #define VCAP_CORE_UPDATE_CTRL_UPDATE_SHOT BIT(2) 64*4882a593Smuzhiyun #define VCAP_CORE_UPDATE_CTRL_CLEAR_CACHE BIT(1) 65*4882a593Smuzhiyun #define VCAP_CORE_UPDATE_CTRL_MV_TRAFFIC_IGN BIT(0) 66*4882a593Smuzhiyun 67*4882a593Smuzhiyun #define VCAP_CORE_MV_CFG_MV_NUM_POS(x) (((x) << 16) & GENMASK(31, 16)) 68*4882a593Smuzhiyun #define VCAP_CORE_MV_CFG_MV_NUM_POS_M GENMASK(31, 16) 69*4882a593Smuzhiyun #define VCAP_CORE_MV_CFG_MV_NUM_POS_X(x) (((x) & GENMASK(31, 16)) >> 16) 70*4882a593Smuzhiyun #define VCAP_CORE_MV_CFG_MV_SIZE(x) ((x) & GENMASK(15, 0)) 71*4882a593Smuzhiyun #define VCAP_CORE_MV_CFG_MV_SIZE_M GENMASK(15, 0) 72*4882a593Smuzhiyun 73*4882a593Smuzhiyun #define VCAP_CACHE_ENTRY_DAT_RSZ 0x4 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun #define VCAP_CACHE_MASK_DAT_RSZ 0x4 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun #define VCAP_CACHE_ACTION_DAT_RSZ 0x4 78*4882a593Smuzhiyun 79*4882a593Smuzhiyun #define VCAP_CACHE_CNT_DAT_RSZ 0x4 80*4882a593Smuzhiyun 81*4882a593Smuzhiyun #define VCAP_STICKY_VCAP_ROW_DELETED_STICKY BIT(0) 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun #define TCAM_BIST_CTRL_TCAM_BIST BIT(1) 84*4882a593Smuzhiyun #define TCAM_BIST_CTRL_TCAM_INIT BIT(0) 85*4882a593Smuzhiyun 86*4882a593Smuzhiyun #define TCAM_BIST_CFG_TCAM_BIST_SOE_ENA BIT(8) 87*4882a593Smuzhiyun #define TCAM_BIST_CFG_TCAM_HCG_DIS BIT(7) 88*4882a593Smuzhiyun #define TCAM_BIST_CFG_TCAM_CG_DIS BIT(6) 89*4882a593Smuzhiyun #define TCAM_BIST_CFG_TCAM_BIAS(x) ((x) & GENMASK(5, 0)) 90*4882a593Smuzhiyun #define TCAM_BIST_CFG_TCAM_BIAS_M GENMASK(5, 0) 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun #define TCAM_BIST_STAT_BIST_RT_ERR BIT(15) 93*4882a593Smuzhiyun #define TCAM_BIST_STAT_BIST_PENC_ERR BIT(14) 94*4882a593Smuzhiyun #define TCAM_BIST_STAT_BIST_COMP_ERR BIT(13) 95*4882a593Smuzhiyun #define TCAM_BIST_STAT_BIST_ADDR_ERR BIT(12) 96*4882a593Smuzhiyun #define TCAM_BIST_STAT_BIST_BL1E_ERR BIT(11) 97*4882a593Smuzhiyun #define TCAM_BIST_STAT_BIST_BL1_ERR BIT(10) 98*4882a593Smuzhiyun #define TCAM_BIST_STAT_BIST_BL0E_ERR BIT(9) 99*4882a593Smuzhiyun #define TCAM_BIST_STAT_BIST_BL0_ERR BIT(8) 100*4882a593Smuzhiyun #define TCAM_BIST_STAT_BIST_PH1_ERR BIT(7) 101*4882a593Smuzhiyun #define TCAM_BIST_STAT_BIST_PH0_ERR BIT(6) 102*4882a593Smuzhiyun #define TCAM_BIST_STAT_BIST_PV1_ERR BIT(5) 103*4882a593Smuzhiyun #define TCAM_BIST_STAT_BIST_PV0_ERR BIT(4) 104*4882a593Smuzhiyun #define TCAM_BIST_STAT_BIST_RUN BIT(3) 105*4882a593Smuzhiyun #define TCAM_BIST_STAT_BIST_ERR BIT(2) 106*4882a593Smuzhiyun #define TCAM_BIST_STAT_BIST_BUSY BIT(1) 107*4882a593Smuzhiyun #define TCAM_BIST_STAT_TCAM_RDY BIT(0) 108*4882a593Smuzhiyun 109*4882a593Smuzhiyun /* ================================================================= 110*4882a593Smuzhiyun * VCAP IS2 111*4882a593Smuzhiyun * ================================================================= 112*4882a593Smuzhiyun */ 113*4882a593Smuzhiyun 114*4882a593Smuzhiyun /* IS2 half key types */ 115*4882a593Smuzhiyun #define IS2_TYPE_ETYPE 0 116*4882a593Smuzhiyun #define IS2_TYPE_LLC 1 117*4882a593Smuzhiyun #define IS2_TYPE_SNAP 2 118*4882a593Smuzhiyun #define IS2_TYPE_ARP 3 119*4882a593Smuzhiyun #define IS2_TYPE_IP_UDP_TCP 4 120*4882a593Smuzhiyun #define IS2_TYPE_IP_OTHER 5 121*4882a593Smuzhiyun #define IS2_TYPE_IPV6 6 122*4882a593Smuzhiyun #define IS2_TYPE_OAM 7 123*4882a593Smuzhiyun #define IS2_TYPE_SMAC_SIP6 8 124*4882a593Smuzhiyun #define IS2_TYPE_ANY 100 /* Pseudo type */ 125*4882a593Smuzhiyun 126*4882a593Smuzhiyun /* IS2 half key type mask for matching any IP */ 127*4882a593Smuzhiyun #define IS2_TYPE_MASK_IP_ANY 0xe 128*4882a593Smuzhiyun 129*4882a593Smuzhiyun enum { 130*4882a593Smuzhiyun IS2_ACTION_TYPE_NORMAL, 131*4882a593Smuzhiyun IS2_ACTION_TYPE_SMAC_SIP, 132*4882a593Smuzhiyun IS2_ACTION_TYPE_MAX, 133*4882a593Smuzhiyun }; 134*4882a593Smuzhiyun 135*4882a593Smuzhiyun /* IS2 MASK_MODE values */ 136*4882a593Smuzhiyun #define IS2_ACT_MASK_MODE_NONE 0 137*4882a593Smuzhiyun #define IS2_ACT_MASK_MODE_FILTER 1 138*4882a593Smuzhiyun #define IS2_ACT_MASK_MODE_POLICY 2 139*4882a593Smuzhiyun #define IS2_ACT_MASK_MODE_REDIR 3 140*4882a593Smuzhiyun 141*4882a593Smuzhiyun /* IS2 REW_OP values */ 142*4882a593Smuzhiyun #define IS2_ACT_REW_OP_NONE 0 143*4882a593Smuzhiyun #define IS2_ACT_REW_OP_PTP_ONE 2 144*4882a593Smuzhiyun #define IS2_ACT_REW_OP_PTP_TWO 3 145*4882a593Smuzhiyun #define IS2_ACT_REW_OP_SPECIAL 8 146*4882a593Smuzhiyun #define IS2_ACT_REW_OP_PTP_ORG 9 147*4882a593Smuzhiyun #define IS2_ACT_REW_OP_PTP_ONE_SUB_DELAY_1 (IS2_ACT_REW_OP_PTP_ONE | (1 << 3)) 148*4882a593Smuzhiyun #define IS2_ACT_REW_OP_PTP_ONE_SUB_DELAY_2 (IS2_ACT_REW_OP_PTP_ONE | (2 << 3)) 149*4882a593Smuzhiyun #define IS2_ACT_REW_OP_PTP_ONE_ADD_DELAY (IS2_ACT_REW_OP_PTP_ONE | (1 << 5)) 150*4882a593Smuzhiyun #define IS2_ACT_REW_OP_PTP_ONE_ADD_SUB BIT(7) 151*4882a593Smuzhiyun 152*4882a593Smuzhiyun #define VCAP_PORT_WIDTH 4 153*4882a593Smuzhiyun 154*4882a593Smuzhiyun /* IS2 quarter key - SMAC_SIP4 */ 155*4882a593Smuzhiyun #define IS2_QKO_IGR_PORT 0 156*4882a593Smuzhiyun #define IS2_QKL_IGR_PORT VCAP_PORT_WIDTH 157*4882a593Smuzhiyun #define IS2_QKO_L2_SMAC (IS2_QKO_IGR_PORT + IS2_QKL_IGR_PORT) 158*4882a593Smuzhiyun #define IS2_QKL_L2_SMAC 48 159*4882a593Smuzhiyun #define IS2_QKO_L3_IP4_SIP (IS2_QKO_L2_SMAC + IS2_QKL_L2_SMAC) 160*4882a593Smuzhiyun #define IS2_QKL_L3_IP4_SIP 32 161*4882a593Smuzhiyun 162*4882a593Smuzhiyun enum vcap_is2_half_key_field { 163*4882a593Smuzhiyun /* Common */ 164*4882a593Smuzhiyun VCAP_IS2_TYPE, 165*4882a593Smuzhiyun VCAP_IS2_HK_FIRST, 166*4882a593Smuzhiyun VCAP_IS2_HK_PAG, 167*4882a593Smuzhiyun VCAP_IS2_HK_RSV1, 168*4882a593Smuzhiyun VCAP_IS2_HK_IGR_PORT_MASK, 169*4882a593Smuzhiyun VCAP_IS2_HK_RSV2, 170*4882a593Smuzhiyun VCAP_IS2_HK_HOST_MATCH, 171*4882a593Smuzhiyun VCAP_IS2_HK_L2_MC, 172*4882a593Smuzhiyun VCAP_IS2_HK_L2_BC, 173*4882a593Smuzhiyun VCAP_IS2_HK_VLAN_TAGGED, 174*4882a593Smuzhiyun VCAP_IS2_HK_VID, 175*4882a593Smuzhiyun VCAP_IS2_HK_DEI, 176*4882a593Smuzhiyun VCAP_IS2_HK_PCP, 177*4882a593Smuzhiyun /* MAC_ETYPE / MAC_LLC / MAC_SNAP / OAM common */ 178*4882a593Smuzhiyun VCAP_IS2_HK_L2_DMAC, 179*4882a593Smuzhiyun VCAP_IS2_HK_L2_SMAC, 180*4882a593Smuzhiyun /* MAC_ETYPE (TYPE=000) */ 181*4882a593Smuzhiyun VCAP_IS2_HK_MAC_ETYPE_ETYPE, 182*4882a593Smuzhiyun VCAP_IS2_HK_MAC_ETYPE_L2_PAYLOAD0, 183*4882a593Smuzhiyun VCAP_IS2_HK_MAC_ETYPE_L2_PAYLOAD1, 184*4882a593Smuzhiyun VCAP_IS2_HK_MAC_ETYPE_L2_PAYLOAD2, 185*4882a593Smuzhiyun /* MAC_LLC (TYPE=001) */ 186*4882a593Smuzhiyun VCAP_IS2_HK_MAC_LLC_DMAC, 187*4882a593Smuzhiyun VCAP_IS2_HK_MAC_LLC_SMAC, 188*4882a593Smuzhiyun VCAP_IS2_HK_MAC_LLC_L2_LLC, 189*4882a593Smuzhiyun /* MAC_SNAP (TYPE=010) */ 190*4882a593Smuzhiyun VCAP_IS2_HK_MAC_SNAP_SMAC, 191*4882a593Smuzhiyun VCAP_IS2_HK_MAC_SNAP_DMAC, 192*4882a593Smuzhiyun VCAP_IS2_HK_MAC_SNAP_L2_SNAP, 193*4882a593Smuzhiyun /* MAC_ARP (TYPE=011) */ 194*4882a593Smuzhiyun VCAP_IS2_HK_MAC_ARP_SMAC, 195*4882a593Smuzhiyun VCAP_IS2_HK_MAC_ARP_ADDR_SPACE_OK, 196*4882a593Smuzhiyun VCAP_IS2_HK_MAC_ARP_PROTO_SPACE_OK, 197*4882a593Smuzhiyun VCAP_IS2_HK_MAC_ARP_LEN_OK, 198*4882a593Smuzhiyun VCAP_IS2_HK_MAC_ARP_TARGET_MATCH, 199*4882a593Smuzhiyun VCAP_IS2_HK_MAC_ARP_SENDER_MATCH, 200*4882a593Smuzhiyun VCAP_IS2_HK_MAC_ARP_OPCODE_UNKNOWN, 201*4882a593Smuzhiyun VCAP_IS2_HK_MAC_ARP_OPCODE, 202*4882a593Smuzhiyun VCAP_IS2_HK_MAC_ARP_L3_IP4_DIP, 203*4882a593Smuzhiyun VCAP_IS2_HK_MAC_ARP_L3_IP4_SIP, 204*4882a593Smuzhiyun VCAP_IS2_HK_MAC_ARP_DIP_EQ_SIP, 205*4882a593Smuzhiyun /* IP4_TCP_UDP / IP4_OTHER common */ 206*4882a593Smuzhiyun VCAP_IS2_HK_IP4, 207*4882a593Smuzhiyun VCAP_IS2_HK_L3_FRAGMENT, 208*4882a593Smuzhiyun VCAP_IS2_HK_L3_FRAG_OFS_GT0, 209*4882a593Smuzhiyun VCAP_IS2_HK_L3_OPTIONS, 210*4882a593Smuzhiyun VCAP_IS2_HK_IP4_L3_TTL_GT0, 211*4882a593Smuzhiyun VCAP_IS2_HK_L3_TOS, 212*4882a593Smuzhiyun VCAP_IS2_HK_L3_IP4_DIP, 213*4882a593Smuzhiyun VCAP_IS2_HK_L3_IP4_SIP, 214*4882a593Smuzhiyun VCAP_IS2_HK_DIP_EQ_SIP, 215*4882a593Smuzhiyun /* IP4_TCP_UDP (TYPE=100) */ 216*4882a593Smuzhiyun VCAP_IS2_HK_TCP, 217*4882a593Smuzhiyun VCAP_IS2_HK_L4_SPORT, 218*4882a593Smuzhiyun VCAP_IS2_HK_L4_DPORT, 219*4882a593Smuzhiyun VCAP_IS2_HK_L4_RNG, 220*4882a593Smuzhiyun VCAP_IS2_HK_L4_SPORT_EQ_DPORT, 221*4882a593Smuzhiyun VCAP_IS2_HK_L4_SEQUENCE_EQ0, 222*4882a593Smuzhiyun VCAP_IS2_HK_L4_URG, 223*4882a593Smuzhiyun VCAP_IS2_HK_L4_ACK, 224*4882a593Smuzhiyun VCAP_IS2_HK_L4_PSH, 225*4882a593Smuzhiyun VCAP_IS2_HK_L4_RST, 226*4882a593Smuzhiyun VCAP_IS2_HK_L4_SYN, 227*4882a593Smuzhiyun VCAP_IS2_HK_L4_FIN, 228*4882a593Smuzhiyun VCAP_IS2_HK_L4_1588_DOM, 229*4882a593Smuzhiyun VCAP_IS2_HK_L4_1588_VER, 230*4882a593Smuzhiyun /* IP4_OTHER (TYPE=101) */ 231*4882a593Smuzhiyun VCAP_IS2_HK_IP4_L3_PROTO, 232*4882a593Smuzhiyun VCAP_IS2_HK_L3_PAYLOAD, 233*4882a593Smuzhiyun /* IP6_STD (TYPE=110) */ 234*4882a593Smuzhiyun VCAP_IS2_HK_IP6_L3_TTL_GT0, 235*4882a593Smuzhiyun VCAP_IS2_HK_IP6_L3_PROTO, 236*4882a593Smuzhiyun VCAP_IS2_HK_L3_IP6_SIP, 237*4882a593Smuzhiyun /* OAM (TYPE=111) */ 238*4882a593Smuzhiyun VCAP_IS2_HK_OAM_MEL_FLAGS, 239*4882a593Smuzhiyun VCAP_IS2_HK_OAM_VER, 240*4882a593Smuzhiyun VCAP_IS2_HK_OAM_OPCODE, 241*4882a593Smuzhiyun VCAP_IS2_HK_OAM_FLAGS, 242*4882a593Smuzhiyun VCAP_IS2_HK_OAM_MEPID, 243*4882a593Smuzhiyun VCAP_IS2_HK_OAM_CCM_CNTS_EQ0, 244*4882a593Smuzhiyun VCAP_IS2_HK_OAM_IS_Y1731, 245*4882a593Smuzhiyun }; 246*4882a593Smuzhiyun 247*4882a593Smuzhiyun struct vcap_field { 248*4882a593Smuzhiyun int offset; 249*4882a593Smuzhiyun int length; 250*4882a593Smuzhiyun }; 251*4882a593Smuzhiyun 252*4882a593Smuzhiyun enum vcap_is2_action_field { 253*4882a593Smuzhiyun VCAP_IS2_ACT_HIT_ME_ONCE, 254*4882a593Smuzhiyun VCAP_IS2_ACT_CPU_COPY_ENA, 255*4882a593Smuzhiyun VCAP_IS2_ACT_CPU_QU_NUM, 256*4882a593Smuzhiyun VCAP_IS2_ACT_MASK_MODE, 257*4882a593Smuzhiyun VCAP_IS2_ACT_MIRROR_ENA, 258*4882a593Smuzhiyun VCAP_IS2_ACT_LRN_DIS, 259*4882a593Smuzhiyun VCAP_IS2_ACT_POLICE_ENA, 260*4882a593Smuzhiyun VCAP_IS2_ACT_POLICE_IDX, 261*4882a593Smuzhiyun VCAP_IS2_ACT_POLICE_VCAP_ONLY, 262*4882a593Smuzhiyun VCAP_IS2_ACT_PORT_MASK, 263*4882a593Smuzhiyun VCAP_IS2_ACT_REW_OP, 264*4882a593Smuzhiyun VCAP_IS2_ACT_SMAC_REPLACE_ENA, 265*4882a593Smuzhiyun VCAP_IS2_ACT_RSV, 266*4882a593Smuzhiyun VCAP_IS2_ACT_ACL_ID, 267*4882a593Smuzhiyun VCAP_IS2_ACT_HIT_CNT, 268*4882a593Smuzhiyun }; 269*4882a593Smuzhiyun 270*4882a593Smuzhiyun /* ================================================================= 271*4882a593Smuzhiyun * VCAP IS1 272*4882a593Smuzhiyun * ================================================================= 273*4882a593Smuzhiyun */ 274*4882a593Smuzhiyun 275*4882a593Smuzhiyun /* IS1 half key types */ 276*4882a593Smuzhiyun #define IS1_TYPE_S1_NORMAL 0 277*4882a593Smuzhiyun #define IS1_TYPE_S1_5TUPLE_IP4 1 278*4882a593Smuzhiyun 279*4882a593Smuzhiyun /* IS1 full key types */ 280*4882a593Smuzhiyun #define IS1_TYPE_S1_NORMAL_IP6 0 281*4882a593Smuzhiyun #define IS1_TYPE_S1_7TUPLE 1 282*4882a593Smuzhiyun #define IS2_TYPE_S1_5TUPLE_IP6 2 283*4882a593Smuzhiyun 284*4882a593Smuzhiyun enum { 285*4882a593Smuzhiyun IS1_ACTION_TYPE_NORMAL, 286*4882a593Smuzhiyun IS1_ACTION_TYPE_MAX, 287*4882a593Smuzhiyun }; 288*4882a593Smuzhiyun 289*4882a593Smuzhiyun enum vcap_is1_half_key_field { 290*4882a593Smuzhiyun VCAP_IS1_HK_TYPE, 291*4882a593Smuzhiyun VCAP_IS1_HK_LOOKUP, 292*4882a593Smuzhiyun VCAP_IS1_HK_IGR_PORT_MASK, 293*4882a593Smuzhiyun VCAP_IS1_HK_RSV, 294*4882a593Smuzhiyun VCAP_IS1_HK_OAM_Y1731, 295*4882a593Smuzhiyun VCAP_IS1_HK_L2_MC, 296*4882a593Smuzhiyun VCAP_IS1_HK_L2_BC, 297*4882a593Smuzhiyun VCAP_IS1_HK_IP_MC, 298*4882a593Smuzhiyun VCAP_IS1_HK_VLAN_TAGGED, 299*4882a593Smuzhiyun VCAP_IS1_HK_VLAN_DBL_TAGGED, 300*4882a593Smuzhiyun VCAP_IS1_HK_TPID, 301*4882a593Smuzhiyun VCAP_IS1_HK_VID, 302*4882a593Smuzhiyun VCAP_IS1_HK_DEI, 303*4882a593Smuzhiyun VCAP_IS1_HK_PCP, 304*4882a593Smuzhiyun /* Specific Fields for IS1 Half Key S1_NORMAL */ 305*4882a593Smuzhiyun VCAP_IS1_HK_L2_SMAC, 306*4882a593Smuzhiyun VCAP_IS1_HK_ETYPE_LEN, 307*4882a593Smuzhiyun VCAP_IS1_HK_ETYPE, 308*4882a593Smuzhiyun VCAP_IS1_HK_IP_SNAP, 309*4882a593Smuzhiyun VCAP_IS1_HK_IP4, 310*4882a593Smuzhiyun VCAP_IS1_HK_L3_FRAGMENT, 311*4882a593Smuzhiyun VCAP_IS1_HK_L3_FRAG_OFS_GT0, 312*4882a593Smuzhiyun VCAP_IS1_HK_L3_OPTIONS, 313*4882a593Smuzhiyun VCAP_IS1_HK_L3_DSCP, 314*4882a593Smuzhiyun VCAP_IS1_HK_L3_IP4_SIP, 315*4882a593Smuzhiyun VCAP_IS1_HK_TCP_UDP, 316*4882a593Smuzhiyun VCAP_IS1_HK_TCP, 317*4882a593Smuzhiyun VCAP_IS1_HK_L4_SPORT, 318*4882a593Smuzhiyun VCAP_IS1_HK_L4_RNG, 319*4882a593Smuzhiyun /* Specific Fields for IS1 Half Key S1_5TUPLE_IP4 */ 320*4882a593Smuzhiyun VCAP_IS1_HK_IP4_INNER_TPID, 321*4882a593Smuzhiyun VCAP_IS1_HK_IP4_INNER_VID, 322*4882a593Smuzhiyun VCAP_IS1_HK_IP4_INNER_DEI, 323*4882a593Smuzhiyun VCAP_IS1_HK_IP4_INNER_PCP, 324*4882a593Smuzhiyun VCAP_IS1_HK_IP4_IP4, 325*4882a593Smuzhiyun VCAP_IS1_HK_IP4_L3_FRAGMENT, 326*4882a593Smuzhiyun VCAP_IS1_HK_IP4_L3_FRAG_OFS_GT0, 327*4882a593Smuzhiyun VCAP_IS1_HK_IP4_L3_OPTIONS, 328*4882a593Smuzhiyun VCAP_IS1_HK_IP4_L3_DSCP, 329*4882a593Smuzhiyun VCAP_IS1_HK_IP4_L3_IP4_DIP, 330*4882a593Smuzhiyun VCAP_IS1_HK_IP4_L3_IP4_SIP, 331*4882a593Smuzhiyun VCAP_IS1_HK_IP4_L3_PROTO, 332*4882a593Smuzhiyun VCAP_IS1_HK_IP4_TCP_UDP, 333*4882a593Smuzhiyun VCAP_IS1_HK_IP4_TCP, 334*4882a593Smuzhiyun VCAP_IS1_HK_IP4_L4_RNG, 335*4882a593Smuzhiyun VCAP_IS1_HK_IP4_IP_PAYLOAD_S1_5TUPLE, 336*4882a593Smuzhiyun }; 337*4882a593Smuzhiyun 338*4882a593Smuzhiyun enum vcap_is1_action_field { 339*4882a593Smuzhiyun VCAP_IS1_ACT_DSCP_ENA, 340*4882a593Smuzhiyun VCAP_IS1_ACT_DSCP_VAL, 341*4882a593Smuzhiyun VCAP_IS1_ACT_QOS_ENA, 342*4882a593Smuzhiyun VCAP_IS1_ACT_QOS_VAL, 343*4882a593Smuzhiyun VCAP_IS1_ACT_DP_ENA, 344*4882a593Smuzhiyun VCAP_IS1_ACT_DP_VAL, 345*4882a593Smuzhiyun VCAP_IS1_ACT_PAG_OVERRIDE_MASK, 346*4882a593Smuzhiyun VCAP_IS1_ACT_PAG_VAL, 347*4882a593Smuzhiyun VCAP_IS1_ACT_RSV, 348*4882a593Smuzhiyun VCAP_IS1_ACT_VID_REPLACE_ENA, 349*4882a593Smuzhiyun VCAP_IS1_ACT_VID_ADD_VAL, 350*4882a593Smuzhiyun VCAP_IS1_ACT_FID_SEL, 351*4882a593Smuzhiyun VCAP_IS1_ACT_FID_VAL, 352*4882a593Smuzhiyun VCAP_IS1_ACT_PCP_DEI_ENA, 353*4882a593Smuzhiyun VCAP_IS1_ACT_PCP_VAL, 354*4882a593Smuzhiyun VCAP_IS1_ACT_DEI_VAL, 355*4882a593Smuzhiyun VCAP_IS1_ACT_VLAN_POP_CNT_ENA, 356*4882a593Smuzhiyun VCAP_IS1_ACT_VLAN_POP_CNT, 357*4882a593Smuzhiyun VCAP_IS1_ACT_CUSTOM_ACE_TYPE_ENA, 358*4882a593Smuzhiyun VCAP_IS1_ACT_HIT_STICKY, 359*4882a593Smuzhiyun }; 360*4882a593Smuzhiyun 361*4882a593Smuzhiyun /* ================================================================= 362*4882a593Smuzhiyun * VCAP ES0 363*4882a593Smuzhiyun * ================================================================= 364*4882a593Smuzhiyun */ 365*4882a593Smuzhiyun 366*4882a593Smuzhiyun enum { 367*4882a593Smuzhiyun ES0_ACTION_TYPE_NORMAL, 368*4882a593Smuzhiyun ES0_ACTION_TYPE_MAX, 369*4882a593Smuzhiyun }; 370*4882a593Smuzhiyun 371*4882a593Smuzhiyun enum vcap_es0_key_field { 372*4882a593Smuzhiyun VCAP_ES0_EGR_PORT, 373*4882a593Smuzhiyun VCAP_ES0_IGR_PORT, 374*4882a593Smuzhiyun VCAP_ES0_RSV, 375*4882a593Smuzhiyun VCAP_ES0_L2_MC, 376*4882a593Smuzhiyun VCAP_ES0_L2_BC, 377*4882a593Smuzhiyun VCAP_ES0_VID, 378*4882a593Smuzhiyun VCAP_ES0_DP, 379*4882a593Smuzhiyun VCAP_ES0_PCP, 380*4882a593Smuzhiyun }; 381*4882a593Smuzhiyun 382*4882a593Smuzhiyun enum vcap_es0_action_field { 383*4882a593Smuzhiyun VCAP_ES0_ACT_PUSH_OUTER_TAG, 384*4882a593Smuzhiyun VCAP_ES0_ACT_PUSH_INNER_TAG, 385*4882a593Smuzhiyun VCAP_ES0_ACT_TAG_A_TPID_SEL, 386*4882a593Smuzhiyun VCAP_ES0_ACT_TAG_A_VID_SEL, 387*4882a593Smuzhiyun VCAP_ES0_ACT_TAG_A_PCP_SEL, 388*4882a593Smuzhiyun VCAP_ES0_ACT_TAG_A_DEI_SEL, 389*4882a593Smuzhiyun VCAP_ES0_ACT_TAG_B_TPID_SEL, 390*4882a593Smuzhiyun VCAP_ES0_ACT_TAG_B_VID_SEL, 391*4882a593Smuzhiyun VCAP_ES0_ACT_TAG_B_PCP_SEL, 392*4882a593Smuzhiyun VCAP_ES0_ACT_TAG_B_DEI_SEL, 393*4882a593Smuzhiyun VCAP_ES0_ACT_VID_A_VAL, 394*4882a593Smuzhiyun VCAP_ES0_ACT_PCP_A_VAL, 395*4882a593Smuzhiyun VCAP_ES0_ACT_DEI_A_VAL, 396*4882a593Smuzhiyun VCAP_ES0_ACT_VID_B_VAL, 397*4882a593Smuzhiyun VCAP_ES0_ACT_PCP_B_VAL, 398*4882a593Smuzhiyun VCAP_ES0_ACT_DEI_B_VAL, 399*4882a593Smuzhiyun VCAP_ES0_ACT_RSV, 400*4882a593Smuzhiyun VCAP_ES0_ACT_HIT_STICKY, 401*4882a593Smuzhiyun }; 402*4882a593Smuzhiyun 403*4882a593Smuzhiyun #endif /* _OCELOT_VCAP_H_ */ 404