| From: Felix Fietkau <nbd@nbd.name> |
| Date: Sun, 13 Sep 2020 08:27:24 +0200 |
| 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> |
| --- |
| |
| --- 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" |
| @@ -1278,6 +1279,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); |
| @@ -1350,6 +1352,12 @@ static int mtk_poll_rx(struct napi_struc |
| skb->protocol = eth_type_trans(skb, netdev); |
| bytes += pktlen; |
| |
| + hash = trxd.rxd4 & GENMASK(13, 0); |
| + if (hash != GENMASK(13, 0)) { |
| + 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), |