1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- From fa817272c37ef78e25dc14e4760ac78a7043a18a Mon Sep 17 00:00:00 2001
- From: Felix Fietkau <[email protected]>
- 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 <[email protected]>
- [Ilya: Use MTK_RXD4_FOE_ENTRY instead of GENMASK(13, 0)]
- Signed-off-by: Ilya Lipnitskiy <[email protected]>
- Signed-off-by: David S. Miller <[email protected]>
- ---
- 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"
- @@ -1271,6 +1272,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);
- @@ -1340,6 +1342,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),
|