[08/10] net/gve: enable Tx checksum offload for DQO
Checks
Commit Message
Enable Tx checksum offload once any flag of L4 checksum is set.
Signed-off-by: Junfeng Guo <junfeng.guo@intel.com>
Signed-off-by: Rushil Gupta <rushilg@google.com>
Signed-off-by: Joshua Washington <joshwash@google.com>
Signed-off-by: Jeroen de Borst <jeroendb@google.com>
---
drivers/net/gve/gve_ethdev.h | 4 ++++
drivers/net/gve/gve_tx_dqo.c | 5 +++++
2 files changed, 9 insertions(+)
@@ -38,6 +38,10 @@
#define GVE_MAX_MTU RTE_ETHER_MTU
#define GVE_MIN_MTU RTE_ETHER_MIN_MTU
+#define GVE_TX_CKSUM_OFFLOAD_MASK ( \
+ RTE_MBUF_F_TX_L4_MASK | \
+ RTE_MBUF_F_TX_TCP_SEG)
+
/* A list of pages registered with the device during setup and used by a queue
* as buffers
*/
@@ -78,6 +78,7 @@ gve_tx_burst_dqo(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
uint16_t mask, sw_mask;
uint16_t nb_to_clean;
uint16_t nb_tx = 0;
+ uint64_t ol_flags;
uint16_t nb_used;
uint16_t tx_id;
uint16_t sw_id;
@@ -104,6 +105,7 @@ gve_tx_burst_dqo(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
if (txq->nb_free < tx_pkt->nb_segs)
break;
+ ol_flags = tx_pkt->ol_flags;
nb_used = tx_pkt->nb_segs;
do {
@@ -128,6 +130,9 @@ gve_tx_burst_dqo(void *tx_queue, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)
/* fill the last descriptor with End of Packet (EOP) bit */
txd->pkt.end_of_packet = 1;
+ if (ol_flags & GVE_TX_CKSUM_OFFLOAD_MASK)
+ txd->pkt.checksum_offload_enable = 1;
+
txq->nb_free -= nb_used;
txq->nb_used += nb_used;
}