ipq40xx: enable RX hash / CTAG TX offloading for single-phy
authorDavid Bauer <mail@david-bauer.net>
Mon, 26 Oct 2020 20:59:47 +0000 (21:59 +0100)
committerDavid Bauer <mail@david-bauer.net>
Sun, 1 Nov 2020 14:30:22 +0000 (15:30 +0100)
This re-enables offloading features disabled by
commit 9da2b567605b ("ipq40xx: fix ethernet vlan double tagging").

Single-PHY devices use port-based VLANs on the switch, therefore no
S-TAG magic is involved here. Re-enabling these features restores
throughput back to 950 Mbit/s.

Reported-by: Jannis Pinter <jannis@pinterjann.is>
Signed-off-by: David Bauer <mail@david-bauer.net>
target/linux/ipq40xx/files/drivers/net/ethernet/qualcomm/essedma/edma_axi.c

index 50335b0d14b985562e6eab855044e9ef918d0ef8..49ee31a1bdf2e387c6be993d73b307c854d0900e 100644 (file)
@@ -978,11 +978,20 @@ static int edma_axi_probe(struct platform_device *pdev)
                edma_netdev[i]->wanted_features = NETIF_F_HW_CSUM | NETIF_F_SG |
                                             NETIF_F_TSO | NETIF_F_GRO;
 
+               if (of_property_read_bool(np, "qcom,single-phy") && edma_cinfo->num_gmac == 1)
+                       edma_netdev[i]->features |= NETIF_F_HW_VLAN_CTAG_TX;
+
 #ifdef CONFIG_RFS_ACCEL
                edma_netdev[i]->features |=  NETIF_F_NTUPLE;
                edma_netdev[i]->hw_features |=  NETIF_F_NTUPLE;
                edma_netdev[i]->vlan_features |= NETIF_F_NTUPLE;
                edma_netdev[i]->wanted_features |= NETIF_F_NTUPLE;
+               if (of_property_read_bool(np, "qcom,single-phy") && edma_cinfo->num_gmac == 1) {
+                       edma_netdev[i]->features |= NETIF_F_RXHASH;
+                       edma_netdev[i]->hw_features |= NETIF_F_RXHASH;
+                       edma_netdev[i]->vlan_features |= NETIF_F_RXHASH;
+                       edma_netdev[i]->wanted_features |= NETIF_F_RXHASH;
+               }
 #endif
                edma_set_ethtool_ops(edma_netdev[i]);