mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-30 21:44:27 -04:00 
			
		
		
		
	All patches automatically rebased. Build system: x86_64 Build-tested: ipq806x/R7800 Signed-off-by: John Audia <therealgraysky@proton.me>
		
			
				
	
	
		
			48 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From fa817272c37ef78e25dc14e4760ac78a7043a18a Mon Sep 17 00:00:00 2001
 | |
| From: Felix Fietkau <nbd@nbd.name>
 | |
| Date: Thu, 22 Apr 2021 22:21:07 -0700
 | |
| Subject: [PATCH] net: ethernet: mtk_eth_soc: set PPE flow hash as skb hash if
 | |
|  present
 | |
| 
 | |
| This improves GRO performance
 | |
| 
 | |
| Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | |
| [Ilya: Use MTK_RXD4_FOE_ENTRY instead of GENMASK(13, 0)]
 | |
| Signed-off-by: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com>
 | |
| Signed-off-by: David S. Miller <davem@davemloft.net>
 | |
| ---
 | |
|  drivers/net/ethernet/mediatek/mtk_eth_soc.c | 8 ++++++++
 | |
|  1 file changed, 8 insertions(+)
 | |
| 
 | |
| --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
 | |
| +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
 | |
| @@ -19,6 +19,7 @@
 | |
|  #include <linux/interrupt.h>
 | |
|  #include <linux/pinctrl/devinfo.h>
 | |
|  #include <linux/phylink.h>
 | |
| +#include <linux/jhash.h>
 | |
|  #include <net/dsa.h>
 | |
|  
 | |
|  #include "mtk_eth_soc.h"
 | |
| @@ -1282,6 +1283,7 @@ static int mtk_poll_rx(struct napi_struc
 | |
|  		struct net_device *netdev;
 | |
|  		unsigned int pktlen;
 | |
|  		dma_addr_t dma_addr;
 | |
| +		u32 hash;
 | |
|  		int mac;
 | |
|  
 | |
|  		ring = mtk_get_rx_ring(eth);
 | |
| @@ -1354,6 +1356,12 @@ static int mtk_poll_rx(struct napi_struc
 | |
|  		skb->protocol = eth_type_trans(skb, netdev);
 | |
|  		bytes += pktlen;
 | |
|  
 | |
| +		hash = trxd.rxd4 & MTK_RXD4_FOE_ENTRY;
 | |
| +		if (hash != MTK_RXD4_FOE_ENTRY) {
 | |
| +			hash = jhash_1word(hash, 0);
 | |
| +			skb_set_hash(skb, hash, PKT_HASH_TYPE_L4);
 | |
| +		}
 | |
| +
 | |
|  		if (netdev->features & NETIF_F_HW_VLAN_CTAG_RX &&
 | |
|  		    (trxd.rxd2 & RX_DMA_VTAG))
 | |
|  			__vlan_hwaccel_put_tag(skb, htons(ETH_P_8021Q),
 |