On 8/28/23 18:07, David Marchand wrote: > 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. > > The DPDK api describes that RTE_MBUF_F_TX_IPV4 must be set when > requesting some Tx offloads (like RTE_MBUF_F_TX_IPSUM, > RTE_MBUF_F_TX_TCP_CKSUM, .., RTE_MBUF_F_TX_TCP_SEG). > Even though setting RTE_MBUF_F_TX_IPV4 without requesting a Tx offload is > undefined, 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 <[email protected]> > Acked-by: Mike Pattrick <[email protected]> > --- > lib/netdev-dpdk.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c > index 8f1361e21f..2f5a133184 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; > } >
Thanks! Applied and backported to 3.2. Best regards, Ilya Maximets. _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
