]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
r8169: enable SG/TSO on selected chip versions per default
authorHeiner Kallweit <hkallweit1@gmail.com>
Thu, 10 Oct 2024 10:58:02 +0000 (12:58 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 14 Oct 2024 12:17:55 +0000 (13:17 +0100)
Due to problem reports in the past SG and TSO/TSO6 are disabled per
default. It's not fully clear which chip versions are affected, so we
may impact also users of unaffected chip versions, unless they know
how to use ethtool for enabling SG/TSO/TSO6.
Vendor drivers r8168/r8125 enable SG/TSO/TSO6 for selected chip
versions per default, I'd interpret this as confirmation that these
chip versions are unaffected. So let's do the same here.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/realtek/r8169_main.c

index 7287e841bbf172a62840b406809664757ff61535..30de74565228771e33f3c82aab670b1e479c8fc0 100644 (file)
@@ -5525,11 +5525,6 @@ static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 
        dev->features |= dev->hw_features;
 
-       /* There has been a number of reports that using SG/TSO results in
-        * tx timeouts. However for a lot of people SG/TSO works fine.
-        * Therefore disable both features by default, but allow users to
-        * enable them. Use at own risk!
-        */
        if (rtl_chip_supports_csum_v2(tp)) {
                dev->hw_features |= NETIF_F_SG | NETIF_F_TSO | NETIF_F_TSO6;
                netif_set_tso_max_size(dev, RTL_GSO_MAX_SIZE_V2);
@@ -5540,6 +5535,17 @@ static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
                netif_set_tso_max_segs(dev, RTL_GSO_MAX_SEGS_V1);
        }
 
+       /* There has been a number of reports that using SG/TSO results in
+        * tx timeouts. However for a lot of people SG/TSO works fine.
+        * It's not fully clear which chip versions are affected. Vendor
+        * drivers enable SG/TSO for certain chip versions per default,
+        * let's mimic this here. On other chip versions users can
+        * use ethtool to enable SG/TSO, use at own risk!
+        */
+       if (tp->mac_version >= RTL_GIGA_MAC_VER_46 &&
+           tp->mac_version != RTL_GIGA_MAC_VER_61)
+               dev->features |= dev->hw_features;
+
        dev->hw_features |= NETIF_F_RXALL;
        dev->hw_features |= NETIF_F_RXFCS;