mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-04 06:54:27 -05:00 
			
		
		
		
	Copy backport, hack, pending patch and config from 5.15 to 6.1. Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
		
			
				
	
	
		
			34 lines
		
	
	
		
			959 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			959 B
		
	
	
	
		
			Diff
		
	
	
	
	
	
From: Felix Fietkau <nbd@nbd.name>
 | 
						|
Date: Tue, 27 Dec 2022 15:02:51 +0100
 | 
						|
Subject: [PATCH] net: ethernet: mtk_eth_soc: ppe: fix L2 offloading with DSA
 | 
						|
 untagging offload enabled
 | 
						|
 | 
						|
Check for skb metadata in order to detect the case where the DSA header is not
 | 
						|
present.
 | 
						|
 | 
						|
Fixes: 2d7605a72906 ("net: ethernet: mtk_eth_soc: enable hardware DSA untagging")
 | 
						|
Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
						|
---
 | 
						|
 | 
						|
--- a/drivers/net/ethernet/mediatek/mtk_ppe.c
 | 
						|
+++ b/drivers/net/ethernet/mediatek/mtk_ppe.c
 | 
						|
@@ -8,6 +8,7 @@
 | 
						|
 #include <linux/platform_device.h>
 | 
						|
 #include <linux/if_ether.h>
 | 
						|
 #include <linux/if_vlan.h>
 | 
						|
+#include <net/dst_metadata.h>
 | 
						|
 #include <net/dsa.h>
 | 
						|
 #include "mtk_eth_soc.h"
 | 
						|
 #include "mtk_ppe.h"
 | 
						|
@@ -757,7 +758,9 @@ void __mtk_ppe_check_skb(struct mtk_ppe
 | 
						|
 		    skb->dev->dsa_ptr->tag_ops->proto != DSA_TAG_PROTO_MTK)
 | 
						|
 			goto out;
 | 
						|
 
 | 
						|
-		tag += 4;
 | 
						|
+		if (!skb_metadata_dst(skb))
 | 
						|
+			tag += 4;
 | 
						|
+
 | 
						|
 		if (get_unaligned_be16(tag) != ETH_P_8021Q)
 | 
						|
 			break;
 | 
						|
 
 |