In some cases only outer offloads may be requested for a tunneled
packet. In this case there is no need to mark the type of an
inner packet. Clean these flags up to avoid potential confusion
of DPDK drivers.
Fixes: 084c8087292c ("userspace: Support VXLAN and GENEVE TSO.")
Signed-off-by: Ilya Maximets
---
lib/netdev-dpdk.c | 9 +
1 file changed, 9 insertions(+)
diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c
index 8c52accff..270d3e11c 100644
--- a/lib/netdev-dpdk.c
+++ b/lib/netdev-dpdk.c
@@ -2607,6 +2607,15 @@ netdev_dpdk_prep_hwol_packet(struct netdev_dpdk *dev,
struct rte_mbuf *mbuf)
(char *) dp_packet_eth(pkt);
mbuf->outer_l3_len = (char *) dp_packet_l4(pkt) -
(char *) dp_packet_l3(pkt);
+
+/* If neither inner checksums nor TSO is requested, inner marks
+ * should not be set. */
+if (!(mbuf->ol_flags & (RTE_MBUF_F_TX_IP_CKSUM |
+RTE_MBUF_F_TX_L4_MASK |
+RTE_MBUF_F_TX_TCP_SEG))) {
+mbuf->ol_flags &= ~(RTE_MBUF_F_TX_IPV4 |
+RTE_MBUF_F_TX_IPV6);
+}
} else {
mbuf->l2_len = (char *) dp_packet_l3(pkt) -
(char *) dp_packet_eth(pkt);
--
2.43.0
___
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev