ramips: 6.6: fix net drivers compatibility
authorMieczyslaw Nalewaj <namiltd@yahoo.com>
Wed, 13 Mar 2024 01:24:11 +0000 (02:24 +0100)
committerNick Hainke <vincent@systemli.org>
Fri, 5 Apr 2024 05:58:15 +0000 (07:58 +0200)
Fix compatibility of ralink net drivers with kernel 6.6.
It follows the kernel patch: u64_stats: Streamline the implementation (https://github.com/torvalds/linux/commit/44b0c2957adc62b86fcd51adeaf8e993171b)

Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
target/linux/ramips/files/drivers/net/ethernet/ralink/ethtool.c
target/linux/ramips/files/drivers/net/ethernet/ralink/mtk_eth_soc.c

index 9b028fbbc9390dfbd2075d2fffbf157b61a48efa..ca3b6fb302e68739776425923e33501526a1993f 100644 (file)
@@ -199,12 +199,20 @@ static void fe_get_ethtool_stats(struct net_device *dev,
        do {
                data_src = &hwstats->tx_bytes;
                data_dst = data;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 6, 0)
+               start = u64_stats_fetch_begin(&hwstats->syncp);
+#else
                start = u64_stats_fetch_begin_irq(&hwstats->syncp);
+#endif
 
                for (i = 0; i < ARRAY_SIZE(fe_gdma_str); i++)
                        *data_dst++ = *data_src++;
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 6, 0)
+       } while (u64_stats_fetch_retry(&hwstats->syncp, start));
+#else
        } while (u64_stats_fetch_retry_irq(&hwstats->syncp, start));
+#endif
 }
 
 static struct ethtool_ops fe_ethtool_ops = {
index 3748264dadf7719574b784c30de85ea76cc93448..4365e398d3fce9e1e5b3dcd36a359d8a2309b309 100644 (file)
@@ -487,7 +487,11 @@ static void fe_get_stats64(struct net_device *dev,
        }
 
        do {
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 6, 0)
+               start = u64_stats_fetch_begin(&hwstats->syncp);
+#else
                start = u64_stats_fetch_begin_irq(&hwstats->syncp);
+#endif
                storage->rx_packets = hwstats->rx_packets;
                storage->tx_packets = hwstats->tx_packets;
                storage->rx_bytes = hwstats->rx_bytes;
@@ -499,7 +503,11 @@ static void fe_get_stats64(struct net_device *dev,
                storage->rx_crc_errors = hwstats->rx_fcs_errors;
                storage->rx_errors = hwstats->rx_checksum_errors;
                storage->tx_aborted_errors = hwstats->tx_skip;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 6, 0)
+       } while (u64_stats_fetch_retry(&hwstats->syncp, start));
+#else
        } while (u64_stats_fetch_retry_irq(&hwstats->syncp, start));
+#endif
 
        storage->tx_errors = priv->netdev->stats.tx_errors;
        storage->rx_dropped = priv->netdev->stats.rx_dropped;