From: Haiyue Wang <haiyue.wang@intel.com> To: dev@dpdk.org Cc: stephen@networkplumber.org, ferruh.yigit@intel.com, Haiyue Wang <haiyue.wang@intel.com>, Olivier Matz <olivier.matz@6wind.com> Subject: [dpdk-dev] [PATCH v2] net: adjust the header length parse size Date: Sat, 5 Sep 2020 11:06:46 +0800 Message-ID: <20200905030646.374157-1-haiyue.wang@intel.com> (raw) In-Reply-To: <20200904054020.77648-1-haiyue.wang@intel.com> Align to the rte_mbuf's design about Tx header length data size for the header length parse result. struct { uint64_t l2_len:7; /* 88: 0 8 */ uint64_t l3_len:9; /* 88: 7 8 */ uint64_t l4_len:8; /* 88:16 8 */ uint64_t tso_segsz:16; /* 88:24 8 */ uint64_t outer_l3_len:9; /* 88:40 8 */ uint64_t outer_l2_len:7; /* 88:49 8 */ }; Now the IPv6 can support bigger extension header. The below is the structure hole analysis result: Before: struct rte_net_hdr_lens { uint8_t l2_len; /* 0 1 */ uint8_t l3_len; /* 1 1 */ uint8_t l4_len; /* 2 1 */ uint8_t tunnel_len; /* 3 1 */ uint8_t inner_l2_len; /* 4 1 */ uint8_t inner_l3_len; /* 5 1 */ uint8_t inner_l4_len; /* 6 1 */ /* size: 7, cachelines: 1, members: 7 */ /* last cacheline: 7 bytes */ }; Now: struct rte_net_hdr_lens { uint64_t l2_len:7; /* 0: 0 8 */ uint64_t l3_len:9; /* 0: 7 8 */ uint64_t l4_len:8; /* 0:16 8 */ uint64_t tunnel_len:8; /* 0:24 8 */ uint64_t inner_l2_len:7; /* 0:32 8 */ uint64_t inner_l3_len:9; /* 0:39 8 */ uint64_t inner_l4_len:8; /* 0:48 8 */ /* size: 8, cachelines: 1, members: 7 */ /* bit_padding: 8 bits */ /* last cacheline: 8 bytes */ }; Signed-off-by: Haiyue Wang <haiyue.wang@intel.com> --- v2: use bit field to avoid creating a structure hole. --- lib/librte_net/rte_net.h | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/lib/librte_net/rte_net.h b/lib/librte_net/rte_net.h index 94b06d9ee..a14e3d814 100644 --- a/lib/librte_net/rte_net.h +++ b/lib/librte_net/rte_net.h @@ -18,14 +18,15 @@ extern "C" { * Structure containing header lengths associated to a packet, filled * by rte_net_get_ptype(). */ +__extension__ struct rte_net_hdr_lens { - uint8_t l2_len; - uint8_t l3_len; - uint8_t l4_len; - uint8_t tunnel_len; - uint8_t inner_l2_len; - uint8_t inner_l3_len; - uint8_t inner_l4_len; + uint64_t l2_len:7; + uint64_t l3_len:9; + uint64_t l4_len:8; + uint64_t tunnel_len:8; + uint64_t inner_l2_len:7; + uint64_t inner_l3_len:9; + uint64_t inner_l4_len:8; }; /** -- 2.28.0
next prev parent reply other threads:[~2020-09-05 3:17 UTC|newest] Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-09-04 5:40 [dpdk-dev] [PATCH v1] net: expand the data size of L3 length to 16 bits Haiyue Wang 2020-09-04 18:55 ` Stephen Hemminger 2020-09-05 3:17 ` Wang, Haiyue 2020-09-05 3:06 ` Haiyue Wang [this message] 2020-09-05 16:56 ` [dpdk-dev] [PATCH v2] net: adjust the header length parse size Stephen Hemminger 2020-09-07 2:14 ` Wang, Haiyue 2020-09-07 1:56 ` [dpdk-dev] [PATCH v3] " Haiyue Wang 2020-09-08 14:53 ` Stephen Hemminger 2020-09-18 8:47 ` Ferruh Yigit
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20200905030646.374157-1-haiyue.wang@intel.com \ --to=haiyue.wang@intel.com \ --cc=dev@dpdk.org \ --cc=ferruh.yigit@intel.com \ --cc=olivier.matz@6wind.com \ --cc=stephen@networkplumber.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
DPDK patches and discussions This inbox may be cloned and mirrored by anyone: git clone --mirror https://inbox.dpdk.org/dev/0 dev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 dev dev/ https://inbox.dpdk.org/dev \ dev@dpdk.org public-inbox-index dev Example config snippet for mirrors. Newsgroup available over NNTP: nntp://inbox.dpdk.org/inbox.dpdk.dev AGPL code for this site: git clone https://public-inbox.org/public-inbox.git