|
@@ -2308,11 +2308,17 @@ static void rtl8169_get_ethtool_stats(struct net_device *dev,
|
|
|
struct ethtool_stats *stats, u64 *data)
|
|
|
{
|
|
|
struct rtl8169_private *tp = netdev_priv(dev);
|
|
|
+ struct device *d = &tp->pci_dev->dev;
|
|
|
struct rtl8169_counters *counters = tp->counters;
|
|
|
|
|
|
ASSERT_RTNL();
|
|
|
|
|
|
- rtl8169_update_counters(dev);
|
|
|
+ pm_runtime_get_noresume(d);
|
|
|
+
|
|
|
+ if (pm_runtime_active(d))
|
|
|
+ rtl8169_update_counters(dev);
|
|
|
+
|
|
|
+ pm_runtime_put_noidle(d);
|
|
|
|
|
|
data[0] = le64_to_cpu(counters->tx_packets);
|
|
|
data[1] = le64_to_cpu(counters->rx_packets);
|