From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by dpdk.space (Postfix) with ESMTP id 3D4DFA0471 for ; Wed, 19 Jun 2019 17:50:54 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 8B95B1C592; Wed, 19 Jun 2019 17:22:01 +0200 (CEST) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by dpdk.org (Postfix) with ESMTP id 2CBB31C510 for ; Wed, 19 Jun 2019 17:21:04 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 19 Jun 2019 08:21:03 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.63,392,1557212400"; d="scan'208";a="165050445" Received: from lrong-srv-03.sh.intel.com ([10.67.119.177]) by orsmga006.jf.intel.com with ESMTP; 19 Jun 2019 08:21:03 -0700 From: Leyi Rong To: qi.z.zhang@intel.com Cc: dev@dpdk.org, Leyi Rong , Jesse Brandeburg , Paul M Stillwell Jr Date: Wed, 19 Jun 2019 23:18:17 +0800 Message-Id: <20190619151846.113820-41-leyi.rong@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190619151846.113820-1-leyi.rong@intel.com> References: <20190611155221.2703-1-leyi.rong@intel.com> <20190619151846.113820-1-leyi.rong@intel.com> Subject: [dpdk-dev] [PATCH v3 40/69] net/ice/base: use more efficient structures X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Move a bunch of members around to make more efficient use of memory, eliminating holes where possible. None of these members are hot path so cache line alignment is not very important here. Signed-off-by: Jesse Brandeburg Signed-off-by: Paul M Stillwell Jr Signed-off-by: Leyi Rong --- drivers/net/ice/base/ice_controlq.h | 4 +-- drivers/net/ice/base/ice_flex_type.h | 38 +++++++++++++--------------- drivers/net/ice/base/ice_flow.c | 4 +-- drivers/net/ice/base/ice_flow.h | 18 ++++++------- 4 files changed, 29 insertions(+), 35 deletions(-) diff --git a/drivers/net/ice/base/ice_controlq.h b/drivers/net/ice/base/ice_controlq.h index 182db6754..21c8722e5 100644 --- a/drivers/net/ice/base/ice_controlq.h +++ b/drivers/net/ice/base/ice_controlq.h @@ -81,6 +81,7 @@ struct ice_rq_event_info { /* Control Queue information */ struct ice_ctl_q_info { enum ice_ctl_q qtype; + enum ice_aq_err rq_last_status; /* last status on receive queue */ struct ice_ctl_q_ring rq; /* receive queue */ struct ice_ctl_q_ring sq; /* send queue */ u32 sq_cmd_timeout; /* send queue cmd write back timeout */ @@ -88,10 +89,9 @@ struct ice_ctl_q_info { u16 num_sq_entries; /* send queue depth */ u16 rq_buf_size; /* receive queue buffer size */ u16 sq_buf_size; /* send queue buffer size */ + enum ice_aq_err sq_last_status; /* last status on send queue */ struct ice_lock sq_lock; /* Send queue lock */ struct ice_lock rq_lock; /* Receive queue lock */ - enum ice_aq_err sq_last_status; /* last status on send queue */ - enum ice_aq_err rq_last_status; /* last status on receive queue */ }; #endif /* _ICE_CONTROLQ_H_ */ diff --git a/drivers/net/ice/base/ice_flex_type.h b/drivers/net/ice/base/ice_flex_type.h index d23b2ae82..dca5cf285 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) + \ @@ -467,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 { @@ -511,13 +508,13 @@ 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 @@ -535,9 +532,9 @@ struct ice_prof_map { #define ICE_INVALID_TCAM 0xFFFF struct ice_tcam_inf { + u16 tcam_idx; u8 ptg; u8 prof_id; - u16 tcam_idx; u8 in_use; }; @@ -550,16 +547,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 @@ -567,11 +564,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 @@ -591,11 +588,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: @@ -641,21 +638,20 @@ 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 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; }; /* Tables per block */ diff --git a/drivers/net/ice/base/ice_flow.c b/drivers/net/ice/base/ice_flow.c index 825c53b51..9f3f33ca3 100644 --- a/drivers/net/ice/base/ice_flow.c +++ b/drivers/net/ice/base/ice_flow.c @@ -284,10 +284,10 @@ static const u32 ice_ptypes_mac_il[] = { /* Manage parameters and info. used during the creation of a flow profile */ struct ice_flow_prof_params { enum ice_block blk; - struct ice_flow_prof *prof; - u16 entry_length; /* # of bytes formatted entry will require */ u8 es_cnt; + struct ice_flow_prof *prof; + /* For ACL, the es[0] will have the data of ICE_RX_MDID_PKT_FLAGS_15_0 * This will give us the direction flags. */ diff --git a/drivers/net/ice/base/ice_flow.h b/drivers/net/ice/base/ice_flow.h index 4fa13064e..33c2f129c 100644 --- a/drivers/net/ice/base/ice_flow.h +++ b/drivers/net/ice/base/ice_flow.h @@ -225,20 +225,18 @@ struct ice_flow_entry { struct LIST_ENTRY_TYPE l_entry; u64 id; - u16 vsi_handle; - enum ice_flow_priority priority; struct ice_flow_prof *prof; - + /* Action list */ + struct ice_flow_action *acts; /* Flow entry's content */ - u16 entry_sz; void *entry; - - /* Action list */ + enum ice_flow_priority priority; + u16 vsi_handle; + u16 entry_sz; u8 acts_cnt; - struct ice_flow_action *acts; }; -#define ICE_FLOW_ENTRY_HNDL(e) ((unsigned long)e) +#define ICE_FLOW_ENTRY_HNDL(e) ((u64)e) #define ICE_FLOW_ENTRY_PTR(h) ((struct ice_flow_entry *)(h)) struct ice_flow_prof { @@ -246,12 +244,13 @@ struct ice_flow_prof { u64 id; enum ice_flow_dir dir; + u8 segs_cnt; + u8 acts_cnt; /* Keep track of flow entries associated with this flow profile */ struct ice_lock entries_lock; struct LIST_HEAD_TYPE entries; - u8 segs_cnt; struct ice_flow_seg_info segs[ICE_FLOW_SEG_MAX]; /* software VSI handles referenced by this flow profile */ @@ -264,7 +263,6 @@ struct ice_flow_prof { } cfg; /* Default actions */ - u8 acts_cnt; struct ice_flow_action *acts; }; -- 2.17.1