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 <bruce.richardson@intel.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
This commit is contained in:
Bruce Richardson 2014-09-11 14:15:45 +01:00 committed by Thomas Monjalon
parent f867492346
commit bd815dc0b7

View File

@ -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;
/**