aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic/pending-5.15/732-08-net-dsa-add-support-for-DSA-rx-offloading-via-metada.patch
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@nbd.name>2022-11-19 19:04:08 +0100
committerFelix Fietkau <nbd@nbd.name>2022-11-21 11:47:36 +0100
commit9b482ee22f3f509880d2420652392971eef3211d (patch)
treef1e2325843bc13b6c509899d3ef5fdfdc4e6f392 /target/linux/generic/pending-5.15/732-08-net-dsa-add-support-for-DSA-rx-offloading-via-metada.patch
parent0d375de10dac3160c65c264bb91a5137ef4c0817 (diff)
downloadupstream-9b482ee22f3f509880d2420652392971eef3211d.tar.gz
upstream-9b482ee22f3f509880d2420652392971eef3211d.tar.bz2
upstream-9b482ee22f3f509880d2420652392971eef3211d.zip
kernel: add more fixes for mtk_eth_soc
Fix corner cases in DSA offload Add refcounting fix for flow offload Fix VLAN untagging issue on MT7986 Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'target/linux/generic/pending-5.15/732-08-net-dsa-add-support-for-DSA-rx-offloading-via-metada.patch')
-rw-r--r--target/linux/generic/pending-5.15/732-08-net-dsa-add-support-for-DSA-rx-offloading-via-metada.patch7
1 files changed, 4 insertions, 3 deletions
diff --git a/target/linux/generic/pending-5.15/732-08-net-dsa-add-support-for-DSA-rx-offloading-via-metada.patch b/target/linux/generic/pending-5.15/732-08-net-dsa-add-support-for-DSA-rx-offloading-via-metada.patch
index f6799f2949..0478cb528e 100644
--- a/target/linux/generic/pending-5.15/732-08-net-dsa-add-support-for-DSA-rx-offloading-via-metada.patch
+++ b/target/linux/generic/pending-5.15/732-08-net-dsa-add-support-for-DSA-rx-offloading-via-metada.patch
@@ -12,11 +12,12 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/net/core/flow_dissector.c
+++ b/net/core/flow_dissector.c
-@@ -941,11 +941,13 @@ bool __skb_flow_dissect(const struct net
+@@ -940,12 +940,14 @@ bool __skb_flow_dissect(const struct net
+ #if IS_ENABLED(CONFIG_NET_DSA)
if (unlikely(skb->dev && netdev_uses_dsa(skb->dev) &&
proto == htons(ETH_P_XDSA))) {
- const struct dsa_device_ops *ops;
+ struct metadata_dst *md_dst = skb_metadata_dst(skb);
+ const struct dsa_device_ops *ops;
int offset = 0;
ops = skb->dev->dsa_ptr->tag_ops;
@@ -53,7 +54,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+ if (md_dst && md_dst->type == METADATA_HW_PORT_MUX) {
+ unsigned int port = md_dst->u.port_info.port_id;
+
-+ skb_dst_set(skb, NULL);
++ skb_dst_drop(skb);
+ if (!skb_has_extensions(skb))
+ skb->slow_gro = 0;
+