From: Miroslaw Walukiewicz <miroslaw.walukiew...@intel.com> Add new PKT_TX_TCP_SEG flag Add new fields in the tx offload fields indicating MSS and L4 len
Signed-off-by: Mirek Walukiewicz <miroslaw.walukiewicz at intel.com> --- lib/librte_mbuf/rte_mbuf.h | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h index ddadc21..bcb09b9 100644 --- a/lib/librte_mbuf/rte_mbuf.h +++ b/lib/librte_mbuf/rte_mbuf.h @@ -114,6 +114,9 @@ extern "C" { /* Bit 51 - IEEE1588*/ #define PKT_TX_IEEE1588_TMST (1ULL << 51) /**< TX IEEE1588 packet to timestamp. */ +/* Bit 49 - TCP transmit segmenation offload */ +#define PKT_TX_TCP_SEG (1ULL << 49) /**< TX TSO offload */ + /* Use final bit of flags to indicate a control mbuf */ #define CTRL_MBUF_FLAG (1ULL << 63) /**< Mbuf contains control data */ @@ -189,12 +192,22 @@ struct rte_mbuf { 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. */ + /* two bytes - l2/l3 len for compatibility (endian issues) + * two bytes - reseved for alignment + * two bytes - l4 len (TCP/UDP) header len + * two bytes - TCP tso segment size + */ + struct { + union { + uint16_t l2_l3_len; /**< combined l2/l3 len */ + struct { + uint16_t l3_len:9; /**< L3 (IP) Header */ + uint16_t l2_len:7; /**< L2 (MAC) Header */ + }; }; + uint16_t reserved_tx_offload; + uint16_t l4_len; /**< TCP/UDP header len */ + uint16_t tso_segsz; /**< TCP TSO segment size */ }; } __rte_cache_aligned;