From: Bruce Richardson Date: Thu, 11 Sep 2014 13:15:45 +0000 (+0100) Subject: mbuf: move l2_len and l3_len to second cache line X-Git-Tag: spdx-start~10425 X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=bd815dc0b75fb5d2c0f240b2b46a1dc90f058f63;p=dpdk.git mbuf: move l2_len and l3_len to second cache line The l2_len and l3_len fields are used for TX offloads and so should be put on the second cache line, along with the other fields only used on TX. The l2 and l3 lengths can be accessed as a single uint16_t for performance, as well as individually. Signed-off-by: Bruce Richardson Acked-by: Thomas Monjalon --- diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h index 508021bd90..1c6e11507a 100644 --- a/lib/librte_mbuf/rte_mbuf.h +++ b/lib/librte_mbuf/rte_mbuf.h @@ -159,13 +159,7 @@ struct rte_mbuf { uint16_t reserved2; /**< Unused field. Required for padding */ uint16_t data_len; /**< Amount of data in segment buffer. */ uint32_t pkt_len; /**< Total pkt len: sum of all segments. */ - union { - uint16_t l2_l3_len; /**< combined l2/l3 lengths as single var */ - struct { - uint16_t l3_len:9; /**< L3 (IP) Header Length. */ - uint16_t l2_len:7; /**< L2 (MAC) Header Length. */ - }; - }; + uint16_t reserved; uint16_t vlan_tci; /**< VLAN Tag Control Identifier (CPU order) */ union { uint32_t rss; /**< RSS hash result if RSS enabled */ @@ -181,6 +175,14 @@ struct rte_mbuf { struct rte_mempool *pool; /**< Pool from which mbuf was allocated. */ struct rte_mbuf *next; /**< Next segment of scattered packet. */ + /* fields to support TX offloads */ + union { + uint16_t l2_l3_len; /**< combined l2/l3 lengths as single var */ + struct { + uint16_t l3_len:9; /**< L3 (IP) Header Length. */ + uint16_t l2_len:7; /**< L2 (MAC) Header Length. */ + }; + }; } __rte_cache_aligned; /**