mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-30 21:44:27 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			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"
 | |
| @@ -829,7 +830,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;
 | |
|  
 |