X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fice%2Fbase%2Fice_flex_type.h;h=c30d407c2e5229b9585042922645a53b023a4021;hb=34c672476522006441bf9af5810fdb5babdbc0a8;hp=f259e1371649cd65371edd83f6a2a94c722a7009;hpb=6e1db8a61d1de33e04a2e6d0ea24538e40c5c2de;p=dpdk.git diff --git a/drivers/net/ice/base/ice_flex_type.h b/drivers/net/ice/base/ice_flex_type.h index f259e13716..c30d407c2e 100644 --- a/drivers/net/ice/base/ice_flex_type.h +++ b/drivers/net/ice/base/ice_flex_type.h @@ -5,7 +5,7 @@ #ifndef _ICE_FLEX_TYPE_H_ #define _ICE_FLEX_TYPE_H_ -#define ICE_FV_OFFSET_INVAL 0x1FF +#define ICE_FV_OFFSET_INVAL 0x1FF #pragma pack(1) /* Extraction Sequence (Field Vector) Table */ @@ -14,7 +14,6 @@ struct ice_fv_word { u16 off; /* Offset within the protocol header */ u8 resvrd; }; - #pragma pack() #define ICE_MAX_FV_WORDS 48 @@ -367,7 +366,6 @@ struct ice_boost_key_value { __le16 hv_src_port_key; u8 tcam_search_key; }; - #pragma pack() struct ice_boost_key { @@ -406,7 +404,6 @@ struct ice_xlt1_section { __le16 offset; u8 value[1]; }; - #pragma pack() #define ICE_XLT1_SIZE(n) (sizeof(struct ice_xlt1_section) + \ @@ -455,17 +452,7 @@ struct ice_pkg_enum { enum ice_tunnel_type { TNL_VXLAN = 0, - TNL_GTPC, - TNL_GTPC_TEID, - TNL_GTPU, - TNL_GTPU_TEID, - TNL_VXLAN_GPE, TNL_GENEVE, - TNL_NAT, - TNL_ROCE_V2, - TNL_MPLSO_UDP, - TNL_UDP2_END, - TNL_UPD_END, TNL_LAST = 0xFF, TNL_ALL = 0xFF, }; @@ -477,19 +464,19 @@ struct ice_tunnel_type_scan { struct ice_tunnel_entry { enum ice_tunnel_type type; - u8 valid; - u8 in_use; - u8 marked; u16 boost_addr; u16 port; struct ice_boost_tcam_entry *boost_entry; + u8 valid; + u8 in_use; + u8 marked; }; #define ICE_TUNNEL_MAX_ENTRIES 16 struct ice_tunnel_table { - u16 count; struct ice_tunnel_entry tbl[ICE_TUNNEL_MAX_ENTRIES]; + u16 count; }; struct ice_pkg_es { @@ -503,11 +490,12 @@ struct ice_es { u16 count; u16 fvw; u16 *ref_count; - u8 *written; - u8 reverse; /* set to true to reverse FV order */ + u32 *mask_ena; struct LIST_HEAD_TYPE prof_map; struct ice_fv_word *t; - u8 *resource_used_hack; /* hack for testing */ + struct ice_lock prof_map_lock; /* protect access to profiles list */ + u8 *written; + u8 reverse; /* set to true to reverse FV order */ }; /* PTYPE Group management */ @@ -521,33 +509,33 @@ struct ice_es { #define ICE_DEFAULT_PTG 0 struct ice_ptg_entry { - u8 in_use; struct ice_ptg_ptype *first_ptype; + u8 in_use; }; struct ice_ptg_ptype { - u8 ptg; struct ice_ptg_ptype *next_ptype; + u8 ptg; }; -#define ICE_MAX_TCAM_PER_PROFILE 8 -#define ICE_MAX_PTYPE_PER_PROFILE 8 +#define ICE_MAX_TCAM_PER_PROFILE 32 +#define ICE_MAX_PTG_PER_PROFILE 32 struct ice_prof_map { struct LIST_ENTRY_TYPE list; u64 profile_cookie; u64 context; u8 prof_id; - u8 ptype_count; - u8 ptype[ICE_MAX_PTYPE_PER_PROFILE]; + u8 ptg_cnt; + u8 ptg[ICE_MAX_PTG_PER_PROFILE]; }; #define ICE_INVALID_TCAM 0xFFFF struct ice_tcam_inf { + u16 tcam_idx; u8 ptg; u8 prof_id; - u16 tcam_idx; u8 in_use; }; @@ -560,16 +548,16 @@ struct ice_vsig_prof { }; struct ice_vsig_entry { - u8 in_use; struct LIST_HEAD_TYPE prop_lst; struct ice_vsig_vsi *first_vsi; + u8 in_use; }; struct ice_vsig_vsi { + struct ice_vsig_vsi *next_vsi; + u32 prop_mask; u16 changed; u16 vsig; - u32 prop_mask; - struct ice_vsig_vsi *next_vsi; }; #define ICE_XLT1_CNT 1024 @@ -577,11 +565,11 @@ struct ice_vsig_vsi { /* XLT1 Table */ struct ice_xlt1 { - u32 sid; - u16 count; struct ice_ptg_entry *ptg_tbl; struct ice_ptg_ptype *ptypes; u8 *t; + u32 sid; + u16 count; }; #define ICE_XLT2_CNT 768 @@ -589,7 +577,7 @@ struct ice_xlt1 { /* Vsig bit layout: * [0:12]: incremental vsig index 1 to ICE_MAX_VSIGS - * [13:15]: pf number of device + * [13:15]: PF number of device */ #define ICE_VSIG_IDX_M (0x1FFF) #define ICE_PF_NUM_S 13 @@ -601,11 +589,11 @@ struct ice_xlt1 { /* XLT2 Table */ struct ice_xlt2 { - u32 sid; - u16 count; struct ice_vsig_entry *vsig_tbl; struct ice_vsig_vsi *vsis; u16 *t; + u32 sid; + u16 count; }; /* Extraction sequence - list of match fields: @@ -651,22 +639,35 @@ struct ice_prof_id_section { __le16 count; struct ice_prof_tcam_entry entry[1]; }; - #pragma pack() struct ice_prof_tcam { u32 sid; u16 count; u16 max_prof_id; - u8 cdid_bits; /* # cdid bits to use in key, 0, 2, 4, or 8 */ struct ice_prof_tcam_entry *t; - u8 *resource_used_hack; + u8 cdid_bits; /* # cdid bits to use in key, 0, 2, 4, or 8 */ }; struct ice_prof_redir { + u8 *t; u32 sid; u16 count; - u8 *t; +}; + +struct ice_mask { + u16 mask; /* 16-bit mask */ + u16 idx; /* index */ + u16 ref; /* reference count */ + u8 in_use; /* non-zero if used */ +}; + +struct ice_masks { + struct ice_lock lock; /* lock to protect this structure */ + u16 first; /* first mask owned by the PF */ + u16 count; /* number of masks owned by the PF */ +#define ICE_PROFILE_MASK_COUNT 32 + struct ice_mask masks[ICE_PROFILE_MASK_COUNT]; }; /* Tables per block */ @@ -676,7 +677,9 @@ struct ice_blk_info { struct ice_prof_tcam prof; struct ice_prof_redir prof_redir; struct ice_es es; + struct ice_masks masks; u8 overwrite; /* set to true to allow overwrite of table entries */ + u8 is_list_init; }; enum ice_chg_type { @@ -707,4 +710,12 @@ struct ice_chs_chg { #define ICE_FLOW_PTYPE_MAX ICE_XLT1_CNT +enum ice_prof_type { + ICE_PROF_NON_TUN = 0x1, + ICE_PROF_TUN_UDP = 0x2, + ICE_PROF_TUN_GRE = 0x4, + ICE_PROF_TUN_PPPOE = 0x8, + ICE_PROF_TUN_ALL = 0xE, + ICE_PROF_ALL = 0xFF, +}; #endif /* _ICE_FLEX_TYPE_H_ */