1c7648810STony Nguyen /* SPDX-License-Identifier: GPL-2.0 */ 2c7648810STony Nguyen /* Copyright (c) 2019, Intel Corporation. */ 3c7648810STony Nguyen 4c7648810STony Nguyen #ifndef _ICE_FLEX_TYPE_H_ 5c7648810STony Nguyen #define _ICE_FLEX_TYPE_H_ 6*2ffd87d3SSergey Temerkhanov #include "ice_ddp.h" 743dbfc7bSTony Nguyen 860f44fe4SJeff Guo /* Packet Type (PTYPE) values */ 960f44fe4SJeff Guo #define ICE_PTYPE_MAC_PAY 1 1060f44fe4SJeff Guo #define ICE_PTYPE_IPV4_PAY 23 1160f44fe4SJeff Guo #define ICE_PTYPE_IPV4_UDP_PAY 24 1260f44fe4SJeff Guo #define ICE_PTYPE_IPV4_TCP_PAY 26 1360f44fe4SJeff Guo #define ICE_PTYPE_IPV4_SCTP_PAY 27 1460f44fe4SJeff Guo #define ICE_PTYPE_IPV6_PAY 89 1560f44fe4SJeff Guo #define ICE_PTYPE_IPV6_UDP_PAY 90 1660f44fe4SJeff Guo #define ICE_PTYPE_IPV6_TCP_PAY 92 1760f44fe4SJeff Guo #define ICE_PTYPE_IPV6_SCTP_PAY 93 1860f44fe4SJeff Guo #define ICE_MAC_IPV4_ESP 160 1960f44fe4SJeff Guo #define ICE_MAC_IPV6_ESP 161 2060f44fe4SJeff Guo #define ICE_MAC_IPV4_AH 162 2160f44fe4SJeff Guo #define ICE_MAC_IPV6_AH 163 2260f44fe4SJeff Guo #define ICE_MAC_IPV4_NAT_T_ESP 164 2360f44fe4SJeff Guo #define ICE_MAC_IPV6_NAT_T_ESP 165 2460f44fe4SJeff Guo #define ICE_MAC_IPV4_GTPU 329 2560f44fe4SJeff Guo #define ICE_MAC_IPV6_GTPU 330 26cbad5db8SQi Zhang #define ICE_MAC_IPV4_GTPU_IPV4_FRAG 331 27cbad5db8SQi Zhang #define ICE_MAC_IPV4_GTPU_IPV4_PAY 332 28cbad5db8SQi Zhang #define ICE_MAC_IPV4_GTPU_IPV4_UDP_PAY 333 29cbad5db8SQi Zhang #define ICE_MAC_IPV4_GTPU_IPV4_TCP 334 30cbad5db8SQi Zhang #define ICE_MAC_IPV4_GTPU_IPV4_ICMP 335 31cbad5db8SQi Zhang #define ICE_MAC_IPV6_GTPU_IPV4_FRAG 336 32cbad5db8SQi Zhang #define ICE_MAC_IPV6_GTPU_IPV4_PAY 337 33cbad5db8SQi Zhang #define ICE_MAC_IPV6_GTPU_IPV4_UDP_PAY 338 34cbad5db8SQi Zhang #define ICE_MAC_IPV6_GTPU_IPV4_TCP 339 35cbad5db8SQi Zhang #define ICE_MAC_IPV6_GTPU_IPV4_ICMP 340 36cbad5db8SQi Zhang #define ICE_MAC_IPV4_GTPU_IPV6_FRAG 341 37cbad5db8SQi Zhang #define ICE_MAC_IPV4_GTPU_IPV6_PAY 342 38cbad5db8SQi Zhang #define ICE_MAC_IPV4_GTPU_IPV6_UDP_PAY 343 39cbad5db8SQi Zhang #define ICE_MAC_IPV4_GTPU_IPV6_TCP 344 40cbad5db8SQi Zhang #define ICE_MAC_IPV4_GTPU_IPV6_ICMPV6 345 41cbad5db8SQi Zhang #define ICE_MAC_IPV6_GTPU_IPV6_FRAG 346 42cbad5db8SQi Zhang #define ICE_MAC_IPV6_GTPU_IPV6_PAY 347 43cbad5db8SQi Zhang #define ICE_MAC_IPV6_GTPU_IPV6_UDP_PAY 348 44cbad5db8SQi Zhang #define ICE_MAC_IPV6_GTPU_IPV6_TCP 349 45cbad5db8SQi Zhang #define ICE_MAC_IPV6_GTPU_IPV6_ICMPV6 350 4660f44fe4SJeff Guo #define ICE_MAC_IPV4_PFCP_SESSION 352 4760f44fe4SJeff Guo #define ICE_MAC_IPV6_PFCP_SESSION 354 4860f44fe4SJeff Guo #define ICE_MAC_IPV4_L2TPV3 360 4960f44fe4SJeff Guo #define ICE_MAC_IPV6_L2TPV3 361 50cbad5db8SQi Zhang 51cbad5db8SQi Zhang /* Attributes that can modify PTYPE definitions. 52cbad5db8SQi Zhang * 53cbad5db8SQi Zhang * These values will represent special attributes for PTYPEs, which will 54cbad5db8SQi Zhang * resolve into metadata packet flags definitions that can be used in the TCAM 55cbad5db8SQi Zhang * for identifying a PTYPE with specific characteristics. 56cbad5db8SQi Zhang */ 57cbad5db8SQi Zhang enum ice_ptype_attrib_type { 58cbad5db8SQi Zhang /* GTP PTYPEs */ 59cbad5db8SQi Zhang ICE_PTYPE_ATTR_GTP_PDU_EH, 60cbad5db8SQi Zhang ICE_PTYPE_ATTR_GTP_SESSION, 61cbad5db8SQi Zhang ICE_PTYPE_ATTR_GTP_DOWNLINK, 62cbad5db8SQi Zhang ICE_PTYPE_ATTR_GTP_UPLINK, 63cbad5db8SQi Zhang }; 64cbad5db8SQi Zhang 65cbad5db8SQi Zhang struct ice_ptype_attrib_info { 66cbad5db8SQi Zhang u16 flags; 67cbad5db8SQi Zhang u16 mask; 68cbad5db8SQi Zhang }; 69cbad5db8SQi Zhang 70cbad5db8SQi Zhang /* TCAM flag definitions */ 71cbad5db8SQi Zhang #define ICE_GTP_PDU BIT(14) 72cbad5db8SQi Zhang #define ICE_GTP_PDU_LINK BIT(13) 73cbad5db8SQi Zhang 74cbad5db8SQi Zhang /* GTP attributes */ 75cbad5db8SQi Zhang #define ICE_GTP_PDU_FLAG_MASK (ICE_GTP_PDU) 76cbad5db8SQi Zhang #define ICE_GTP_PDU_EH ICE_GTP_PDU 77cbad5db8SQi Zhang 78cbad5db8SQi Zhang #define ICE_GTP_FLAGS_MASK (ICE_GTP_PDU | ICE_GTP_PDU_LINK) 79cbad5db8SQi Zhang #define ICE_GTP_SESSION 0 80cbad5db8SQi Zhang #define ICE_GTP_DOWNLINK ICE_GTP_PDU 81cbad5db8SQi Zhang #define ICE_GTP_UPLINK (ICE_GTP_PDU | ICE_GTP_PDU_LINK) 82cbad5db8SQi Zhang 83cbad5db8SQi Zhang struct ice_ptype_attributes { 84cbad5db8SQi Zhang u16 ptype; 85cbad5db8SQi Zhang enum ice_ptype_attrib_type attrib; 86cbad5db8SQi Zhang }; 87cbad5db8SQi Zhang 88a4e82a81STony Nguyen /* Tunnel enabling */ 89a4e82a81STony Nguyen 90a4e82a81STony Nguyen enum ice_tunnel_type { 91a4e82a81STony Nguyen TNL_VXLAN = 0, 92a4e82a81STony Nguyen TNL_GENEVE, 93f0a35040SMichal Swiatkowski TNL_GRETAP, 949a225f81SMarcin Szycik TNL_GTPC, 959a225f81SMarcin Szycik TNL_GTPU, 96b20e6c17SJakub Kicinski __TNL_TYPE_CNT, 97a4e82a81STony Nguyen TNL_LAST = 0xFF, 98a4e82a81STony Nguyen TNL_ALL = 0xFF, 99a4e82a81STony Nguyen }; 100a4e82a81STony Nguyen 101a4e82a81STony Nguyen struct ice_tunnel_type_scan { 102a4e82a81STony Nguyen enum ice_tunnel_type type; 103a4e82a81STony Nguyen const char *label_prefix; 104a4e82a81STony Nguyen }; 105a4e82a81STony Nguyen 106a4e82a81STony Nguyen struct ice_tunnel_entry { 107a4e82a81STony Nguyen enum ice_tunnel_type type; 108a4e82a81STony Nguyen u16 boost_addr; 109a4e82a81STony Nguyen u16 port; 110a4e82a81STony Nguyen struct ice_boost_tcam_entry *boost_entry; 111a4e82a81STony Nguyen u8 valid; 112a4e82a81STony Nguyen }; 113a4e82a81STony Nguyen 114a4e82a81STony Nguyen #define ICE_TUNNEL_MAX_ENTRIES 16 115a4e82a81STony Nguyen 116a4e82a81STony Nguyen struct ice_tunnel_table { 117a4e82a81STony Nguyen struct ice_tunnel_entry tbl[ICE_TUNNEL_MAX_ENTRIES]; 118a4e82a81STony Nguyen u16 count; 119b20e6c17SJakub Kicinski u16 valid_count[__TNL_TYPE_CNT]; 120a4e82a81STony Nguyen }; 121a4e82a81STony Nguyen 122a1ffafb0SBrett Creeley struct ice_dvm_entry { 123a1ffafb0SBrett Creeley u16 boost_addr; 124a1ffafb0SBrett Creeley u16 enable; 125a1ffafb0SBrett Creeley struct ice_boost_tcam_entry *boost_entry; 126a1ffafb0SBrett Creeley }; 127a1ffafb0SBrett Creeley 128a1ffafb0SBrett Creeley #define ICE_DVM_MAX_ENTRIES 48 129a1ffafb0SBrett Creeley 130a1ffafb0SBrett Creeley struct ice_dvm_table { 131a1ffafb0SBrett Creeley struct ice_dvm_entry tbl[ICE_DVM_MAX_ENTRIES]; 132a1ffafb0SBrett Creeley u16 count; 133a1ffafb0SBrett Creeley }; 134a1ffafb0SBrett Creeley 13543dbfc7bSTony Nguyen struct ice_pkg_es { 13643dbfc7bSTony Nguyen __le16 count; 13743dbfc7bSTony Nguyen __le16 offset; 13866486d89SBruce Allan struct ice_fv_word es[]; 13943dbfc7bSTony Nguyen }; 14043dbfc7bSTony Nguyen 141c7648810STony Nguyen struct ice_es { 142c7648810STony Nguyen u32 sid; 143c7648810STony Nguyen u16 count; 144c7648810STony Nguyen u16 fvw; 145c7648810STony Nguyen u16 *ref_count; 146b199dddbSQi Zhang u32 *mask_ena; 147c7648810STony Nguyen struct list_head prof_map; 148c7648810STony Nguyen struct ice_fv_word *t; 149c7648810STony Nguyen struct mutex prof_map_lock; /* protect access to profiles list */ 150c7648810STony Nguyen u8 *written; 151c7648810STony Nguyen u8 reverse; /* set to true to reverse FV order */ 152c7648810STony Nguyen }; 153c7648810STony Nguyen 154c7648810STony Nguyen /* PTYPE Group management */ 155c7648810STony Nguyen 156c7648810STony Nguyen /* Note: XLT1 table takes 13-bit as input, and results in an 8-bit packet type 157c7648810STony Nguyen * group (PTG) ID as output. 158c7648810STony Nguyen * 159c7648810STony Nguyen * Note: PTG 0 is the default packet type group and it is assumed that all PTYPE 160c7648810STony Nguyen * are a part of this group until moved to a new PTG. 161c7648810STony Nguyen */ 162c7648810STony Nguyen #define ICE_DEFAULT_PTG 0 163c7648810STony Nguyen 164c7648810STony Nguyen struct ice_ptg_entry { 165c7648810STony Nguyen struct ice_ptg_ptype *first_ptype; 166c7648810STony Nguyen u8 in_use; 167c7648810STony Nguyen }; 168c7648810STony Nguyen 169c7648810STony Nguyen struct ice_ptg_ptype { 170c7648810STony Nguyen struct ice_ptg_ptype *next_ptype; 171c7648810STony Nguyen u8 ptg; 172c7648810STony Nguyen }; 173c7648810STony Nguyen 174451f2c44STony Nguyen #define ICE_MAX_TCAM_PER_PROFILE 32 17531ad4e4eSTony Nguyen #define ICE_MAX_PTG_PER_PROFILE 32 17631ad4e4eSTony Nguyen 17731ad4e4eSTony Nguyen struct ice_prof_map { 17831ad4e4eSTony Nguyen struct list_head list; 17931ad4e4eSTony Nguyen u64 profile_cookie; 18031ad4e4eSTony Nguyen u64 context; 18131ad4e4eSTony Nguyen u8 prof_id; 18231ad4e4eSTony Nguyen u8 ptg_cnt; 18331ad4e4eSTony Nguyen u8 ptg[ICE_MAX_PTG_PER_PROFILE]; 184cbad5db8SQi Zhang struct ice_ptype_attrib_info attr[ICE_MAX_PTG_PER_PROFILE]; 18531ad4e4eSTony Nguyen }; 18631ad4e4eSTony Nguyen 187451f2c44STony Nguyen #define ICE_INVALID_TCAM 0xFFFF 188451f2c44STony Nguyen 189451f2c44STony Nguyen struct ice_tcam_inf { 190451f2c44STony Nguyen u16 tcam_idx; 191cbad5db8SQi Zhang struct ice_ptype_attrib_info attr; 192451f2c44STony Nguyen u8 ptg; 193451f2c44STony Nguyen u8 prof_id; 194451f2c44STony Nguyen u8 in_use; 195451f2c44STony Nguyen }; 196451f2c44STony Nguyen 197451f2c44STony Nguyen struct ice_vsig_prof { 198451f2c44STony Nguyen struct list_head list; 199451f2c44STony Nguyen u64 profile_cookie; 200451f2c44STony Nguyen u8 prof_id; 201451f2c44STony Nguyen u8 tcam_count; 202451f2c44STony Nguyen struct ice_tcam_inf tcam[ICE_MAX_TCAM_PER_PROFILE]; 203451f2c44STony Nguyen }; 204451f2c44STony Nguyen 205c7648810STony Nguyen struct ice_vsig_entry { 206c7648810STony Nguyen struct list_head prop_lst; 207c7648810STony Nguyen struct ice_vsig_vsi *first_vsi; 208c7648810STony Nguyen u8 in_use; 209c7648810STony Nguyen }; 210c7648810STony Nguyen 211c7648810STony Nguyen struct ice_vsig_vsi { 212c7648810STony Nguyen struct ice_vsig_vsi *next_vsi; 213c7648810STony Nguyen u32 prop_mask; 214c7648810STony Nguyen u16 changed; 215c7648810STony Nguyen u16 vsig; 216c7648810STony Nguyen }; 217c7648810STony Nguyen 218c7648810STony Nguyen #define ICE_XLT1_CNT 1024 21932d63fa1STony Nguyen #define ICE_MAX_PTGS 256 220c7648810STony Nguyen 221c7648810STony Nguyen /* XLT1 Table */ 222c7648810STony Nguyen struct ice_xlt1 { 223c7648810STony Nguyen struct ice_ptg_entry *ptg_tbl; 224c7648810STony Nguyen struct ice_ptg_ptype *ptypes; 225c7648810STony Nguyen u8 *t; 226c7648810STony Nguyen u32 sid; 227c7648810STony Nguyen u16 count; 228c7648810STony Nguyen }; 229c7648810STony Nguyen 23032d63fa1STony Nguyen #define ICE_XLT2_CNT 768 231c7648810STony Nguyen #define ICE_MAX_VSIGS 768 232c7648810STony Nguyen 233c7648810STony Nguyen /* VSIG bit layout: 234c7648810STony Nguyen * [0:12]: incremental VSIG index 1 to ICE_MAX_VSIGS 235c7648810STony Nguyen * [13:15]: PF number of device 236c7648810STony Nguyen */ 237c7648810STony Nguyen #define ICE_VSIG_IDX_M (0x1FFF) 238c7648810STony Nguyen #define ICE_PF_NUM_S 13 239c7648810STony Nguyen #define ICE_PF_NUM_M (0x07 << ICE_PF_NUM_S) 240c7648810STony Nguyen #define ICE_VSIG_VALUE(vsig, pf_id) \ 2410c3e94c2SBruce Allan ((u16)((((u16)(vsig)) & ICE_VSIG_IDX_M) | \ 2420c3e94c2SBruce Allan (((u16)(pf_id) << ICE_PF_NUM_S) & ICE_PF_NUM_M))) 243c7648810STony Nguyen #define ICE_DEFAULT_VSIG 0 244c7648810STony Nguyen 245c7648810STony Nguyen /* XLT2 Table */ 246c7648810STony Nguyen struct ice_xlt2 { 247c7648810STony Nguyen struct ice_vsig_entry *vsig_tbl; 248c7648810STony Nguyen struct ice_vsig_vsi *vsis; 249c7648810STony Nguyen u16 *t; 250c7648810STony Nguyen u32 sid; 251c7648810STony Nguyen u16 count; 252c7648810STony Nguyen }; 253c7648810STony Nguyen 254451f2c44STony Nguyen /* Profile ID Management */ 255451f2c44STony Nguyen struct ice_prof_id_key { 256451f2c44STony Nguyen __le16 flags; 257451f2c44STony Nguyen u8 xlt1; 258451f2c44STony Nguyen __le16 xlt2_cdid; 259451f2c44STony Nguyen } __packed; 260451f2c44STony Nguyen 261c7648810STony Nguyen /* Keys are made up of two values, each one-half the size of the key. 262c7648810STony Nguyen * For TCAM, the entire key is 80 bits wide (or 2, 40-bit wide values) 263c7648810STony Nguyen */ 264c7648810STony Nguyen #define ICE_TCAM_KEY_VAL_SZ 5 265c7648810STony Nguyen #define ICE_TCAM_KEY_SZ (2 * ICE_TCAM_KEY_VAL_SZ) 266c7648810STony Nguyen 267c7648810STony Nguyen struct ice_prof_tcam_entry { 268c7648810STony Nguyen __le16 addr; 269c7648810STony Nguyen u8 key[ICE_TCAM_KEY_SZ]; 270c7648810STony Nguyen u8 prof_id; 271c7648810STony Nguyen } __packed; 272c7648810STony Nguyen 273c7648810STony Nguyen struct ice_prof_id_section { 274c7648810STony Nguyen __le16 count; 27566486d89SBruce Allan struct ice_prof_tcam_entry entry[]; 27666486d89SBruce Allan }; 277c7648810STony Nguyen 278c7648810STony Nguyen struct ice_prof_tcam { 279c7648810STony Nguyen u32 sid; 280c7648810STony Nguyen u16 count; 281c7648810STony Nguyen u16 max_prof_id; 282c7648810STony Nguyen struct ice_prof_tcam_entry *t; 283c7648810STony Nguyen u8 cdid_bits; /* # CDID bits to use in key, 0, 2, 4, or 8 */ 284c7648810STony Nguyen }; 285c7648810STony Nguyen 286c7648810STony Nguyen struct ice_prof_redir { 287c7648810STony Nguyen u8 *t; 288c7648810STony Nguyen u32 sid; 289c7648810STony Nguyen u16 count; 290c7648810STony Nguyen }; 291c7648810STony Nguyen 292b199dddbSQi Zhang struct ice_mask { 293b199dddbSQi Zhang u16 mask; /* 16-bit mask */ 294b199dddbSQi Zhang u16 idx; /* index */ 295b199dddbSQi Zhang u16 ref; /* reference count */ 296b199dddbSQi Zhang u8 in_use; /* non-zero if used */ 297b199dddbSQi Zhang }; 298b199dddbSQi Zhang 299b199dddbSQi Zhang struct ice_masks { 300b199dddbSQi Zhang struct mutex lock; /* lock to protect this structure */ 301b199dddbSQi Zhang u16 first; /* first mask owned by the PF */ 302b199dddbSQi Zhang u16 count; /* number of masks owned by the PF */ 303b199dddbSQi Zhang #define ICE_PROF_MASK_COUNT 32 304b199dddbSQi Zhang struct ice_mask masks[ICE_PROF_MASK_COUNT]; 305b199dddbSQi Zhang }; 306b199dddbSQi Zhang 307c7648810STony Nguyen /* Tables per block */ 308c7648810STony Nguyen struct ice_blk_info { 309c7648810STony Nguyen struct ice_xlt1 xlt1; 310c7648810STony Nguyen struct ice_xlt2 xlt2; 311c7648810STony Nguyen struct ice_prof_tcam prof; 312c7648810STony Nguyen struct ice_prof_redir prof_redir; 313c7648810STony Nguyen struct ice_es es; 314b199dddbSQi Zhang struct ice_masks masks; 315c7648810STony Nguyen u8 overwrite; /* set to true to allow overwrite of table entries */ 316c7648810STony Nguyen u8 is_list_init; 317c7648810STony Nguyen }; 318c7648810STony Nguyen 319451f2c44STony Nguyen enum ice_chg_type { 320451f2c44STony Nguyen ICE_TCAM_NONE = 0, 321451f2c44STony Nguyen ICE_PTG_ES_ADD, 322451f2c44STony Nguyen ICE_TCAM_ADD, 323451f2c44STony Nguyen ICE_VSIG_ADD, 324451f2c44STony Nguyen ICE_VSIG_REM, 325451f2c44STony Nguyen ICE_VSI_MOVE, 326451f2c44STony Nguyen }; 327451f2c44STony Nguyen 328451f2c44STony Nguyen struct ice_chs_chg { 329451f2c44STony Nguyen struct list_head list_entry; 330451f2c44STony Nguyen enum ice_chg_type type; 331451f2c44STony Nguyen 332451f2c44STony Nguyen u8 add_ptg; 333451f2c44STony Nguyen u8 add_vsig; 334451f2c44STony Nguyen u8 add_tcam_idx; 335451f2c44STony Nguyen u8 add_prof; 336451f2c44STony Nguyen u16 ptype; 337451f2c44STony Nguyen u8 ptg; 338451f2c44STony Nguyen u8 prof_id; 339451f2c44STony Nguyen u16 vsi; 340451f2c44STony Nguyen u16 vsig; 341451f2c44STony Nguyen u16 orig_vsig; 342451f2c44STony Nguyen u16 tcam_idx; 343cbad5db8SQi Zhang struct ice_ptype_attrib_info attr; 344451f2c44STony Nguyen }; 345451f2c44STony Nguyen 34631ad4e4eSTony Nguyen #define ICE_FLOW_PTYPE_MAX ICE_XLT1_CNT 347450052a4SDan Nowlin 348450052a4SDan Nowlin enum ice_prof_type { 349450052a4SDan Nowlin ICE_PROF_NON_TUN = 0x1, 3508b032a55SMichal Swiatkowski ICE_PROF_TUN_UDP = 0x2, 351f0a35040SMichal Swiatkowski ICE_PROF_TUN_GRE = 0x4, 3529a225f81SMarcin Szycik ICE_PROF_TUN_GTPU = 0x8, 3539a225f81SMarcin Szycik ICE_PROF_TUN_GTPC = 0x10, 3549a225f81SMarcin Szycik ICE_PROF_TUN_ALL = 0x1E, 355450052a4SDan Nowlin ICE_PROF_ALL = 0xFF, 356450052a4SDan Nowlin }; 357a1ffafb0SBrett Creeley 358a1ffafb0SBrett Creeley /* Number of bits/bytes contained in meta init entry. Note, this should be a 359a1ffafb0SBrett Creeley * multiple of 32 bits. 360a1ffafb0SBrett Creeley */ 361a1ffafb0SBrett Creeley #define ICE_META_INIT_BITS 192 362a1ffafb0SBrett Creeley #define ICE_META_INIT_DW_CNT (ICE_META_INIT_BITS / (sizeof(__le32) * \ 363a1ffafb0SBrett Creeley BITS_PER_BYTE)) 364a1ffafb0SBrett Creeley 365a1ffafb0SBrett Creeley /* The meta init Flag field starts at this bit */ 366a1ffafb0SBrett Creeley #define ICE_META_FLAGS_ST 123 367a1ffafb0SBrett Creeley 368a1ffafb0SBrett Creeley /* The entry and bit to check for Double VLAN Mode (DVM) support */ 369a1ffafb0SBrett Creeley #define ICE_META_VLAN_MODE_ENTRY 0 370a1ffafb0SBrett Creeley #define ICE_META_FLAG_VLAN_MODE 60 371a1ffafb0SBrett Creeley #define ICE_META_VLAN_MODE_BIT (ICE_META_FLAGS_ST + \ 372a1ffafb0SBrett Creeley ICE_META_FLAG_VLAN_MODE) 373a1ffafb0SBrett Creeley 374a1ffafb0SBrett Creeley struct ice_meta_init_entry { 375a1ffafb0SBrett Creeley __le32 bm[ICE_META_INIT_DW_CNT]; 376a1ffafb0SBrett Creeley }; 377a1ffafb0SBrett Creeley 378a1ffafb0SBrett Creeley struct ice_meta_init_section { 379a1ffafb0SBrett Creeley __le16 count; 380a1ffafb0SBrett Creeley __le16 offset; 381a1ffafb0SBrett Creeley struct ice_meta_init_entry entry; 382a1ffafb0SBrett Creeley }; 383c7648810STony Nguyen #endif /* _ICE_FLEX_TYPE_H_ */ 384