]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blobdiff - queue-5.4/net-l2tp-drop-flow-hash-on-forward.patch
Fixes for 5.4
[thirdparty/kernel/stable-queue.git] / queue-5.4 / net-l2tp-drop-flow-hash-on-forward.patch
diff --git a/queue-5.4/net-l2tp-drop-flow-hash-on-forward.patch b/queue-5.4/net-l2tp-drop-flow-hash-on-forward.patch
new file mode 100644 (file)
index 0000000..f0aa939
--- /dev/null
@@ -0,0 +1,49 @@
+From dbb91a698082fc8c9e811399364deab39fecca19 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 24 Apr 2024 19:11:10 +0200
+Subject: net l2tp: drop flow hash on forward
+
+From: David Bauer <mail@david-bauer.net>
+
+[ Upstream commit 42f853b42899d9b445763b55c3c8adc72be0f0e1 ]
+
+Drop the flow-hash of the skb when forwarding to the L2TP netdev.
+
+This avoids the L2TP qdisc from using the flow-hash from the outer
+packet, which is identical for every flow within the tunnel.
+
+This does not affect every platform but is specific for the ethernet
+driver. It depends on the platform including L4 information in the
+flow-hash.
+
+One such example is the Mediatek Filogic MT798x family of networking
+processors.
+
+Fixes: d9e31d17ceba ("l2tp: Add L2TP ethernet pseudowire support")
+Acked-by: James Chapman <jchapman@katalix.com>
+Signed-off-by: David Bauer <mail@david-bauer.net>
+Reviewed-by: Simon Horman <horms@kernel.org>
+Link: https://lore.kernel.org/r/20240424171110.13701-1-mail@david-bauer.net
+Signed-off-by: Paolo Abeni <pabeni@redhat.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ net/l2tp/l2tp_eth.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/net/l2tp/l2tp_eth.c b/net/l2tp/l2tp_eth.c
+index d3b520b9b2c9d..2c5853597aa90 100644
+--- a/net/l2tp/l2tp_eth.c
++++ b/net/l2tp/l2tp_eth.c
+@@ -149,6 +149,9 @@ static void l2tp_eth_dev_recv(struct l2tp_session *session, struct sk_buff *skb,
+       /* checksums verified by L2TP */
+       skb->ip_summed = CHECKSUM_NONE;
++      /* drop outer flow-hash */
++      skb_clear_hash(skb);
++
+       skb_dst_drop(skb);
+       nf_reset_ct(skb);
+-- 
+2.43.0
+