[dpdk-dev] [PATCH] pmd: Add generic support for TCP TSO (Transmit Segmentation Offload)
miroslaw.walukiewicz at intel.com
miroslaw.walukiewicz at intel.com
Mon Oct 20 11:42:52 CEST 2014
From: Miroslaw Walukiewicz <miroslaw.walukiewicz at 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;
More information about the dev
mailing list