openvswitch: Pass on secpath details for internal port rx.
authorAaron Conole <aconole@redhat.com>
Fri, 1 Nov 2024 20:47:32 +0000 (16:47 -0400)
committerJakub Kicinski <kuba@kernel.org>
Wed, 6 Nov 2024 01:38:25 +0000 (17:38 -0800)
Clearing the secpath for internal ports will cause packet drops when
ipsec offload or early SW ipsec decrypt are used.  Systems that rely
on these will not be able to actually pass traffic via openvswitch.

There is still an open issue for a flow miss packet - this is because
we drop the extensions during upcall and there is no facility to
restore such data (and it is non-trivial to add such functionality
to the upcall interface).  That means that when a flow miss occurs,
there will still be packet drops.  With this patch, when a flow is
found then traffic which has an associated xfrm extension will
properly flow.

Signed-off-by: Aaron Conole <aconole@redhat.com>
Acked-by: Eelco Chaudron <echaudro@redhat.com>
Link: https://patch.msgid.link/20241101204732.183840-1-aconole@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/openvswitch/vport-internal_dev.c

index 5858d65ea1a9b37e53ec032242a1eb684f6f2b8d..2412d7813d244c66ffd926b8677b26cd85be8fd5 100644 (file)
@@ -195,7 +195,6 @@ static int internal_dev_recv(struct sk_buff *skb)
 
        skb_dst_drop(skb);
        nf_reset_ct(skb);
-       secpath_reset(skb);
 
        skb->pkt_type = PACKET_HOST;
        skb->protocol = eth_type_trans(skb, netdev);