OVS current sets RTE_MBUF_F_TX_IPV[46] flags in early stages of the packet reception and keeps track of the IP packet type as the packet goes through OVS pipeline. When a packet leaves OVS and hits a DPDK driver, OVS may not request IP checksum offloading but leaves one of this packet type flag in ol_flags.
Setting RTE_MBUF_F_TX_IPV4 without RTE_MBUF_F_TX_IPSUM is not defined in the DPDK api. This can confuse some drivers (like net/iavf) which then reads zero'd l2_len and l3_len and ends up dropping the packet. Reported-at: https://bugzilla.redhat.com/show_bug.cgi?id=2231081 Fixes: 5d11c47d3ebe ("userspace: Enable IP checksum offloading by default.") Signed-off-by: David Marchand <david.march...@redhat.com> --- Some note: - I submitted a fix on the DPDK side for net/iavf. But to be on the safe side, this OVS patch here is a proposal to avoid hitting bugs in some other drivers, --- lib/netdev-dpdk.c | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c index 8f1361e21f..92d10d1c55 100644 --- a/lib/netdev-dpdk.c +++ b/lib/netdev-dpdk.c @@ -2431,6 +2431,7 @@ netdev_dpdk_prep_hwol_packet(struct netdev_dpdk *dev, struct rte_mbuf *mbuf) 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); return true; } -- 2.41.0 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev