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.

Signed-off-by: Bruce Richardson <bruce.richardson at intel.com>
---
 lib/librte_mbuf/rte_mbuf.h | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h
index db079ac..d3c1745 100644
--- a/lib/librte_mbuf/rte_mbuf.h
+++ b/lib/librte_mbuf/rte_mbuf.h
@@ -159,8 +159,7 @@ struct rte_mbuf {
        uint16_t packet_type;   /**< Type of packet, e.g. protocols used */
        uint16_t data_len;      /**< Amount of data in segment buffer. */
        uint32_t pkt_len;       /**< Total pkt len: sum of all segments. */
-       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 */
@@ -176,6 +175,9 @@ 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 */
+       uint16_t l3_len:9;      /**< L3 (IP) Header Length. */
+       uint16_t l2_len:7;      /**< L2 (MAC) Header Length. */
 } __rte_cache_aligned;

 #define RTE_MBUF_METADATA_UINT8(mbuf, offset)              \
-- 
1.9.3

Reply via email to