return RTL_R32(tp, CounterAddrLow) & (CounterReset | CounterDump);
 }
 
-static bool rtl8169_do_counters(struct net_device *dev, u32 counter_cmd)
+static bool rtl8169_do_counters(struct rtl8169_private *tp, u32 counter_cmd)
 {
-       struct rtl8169_private *tp = netdev_priv(dev);
        dma_addr_t paddr = tp->counters_phys_addr;
        u32 cmd;
 
        return rtl_udelay_loop_wait_low(tp, &rtl_counters_cond, 10, 1000);
 }
 
-static bool rtl8169_reset_counters(struct net_device *dev)
+static bool rtl8169_reset_counters(struct rtl8169_private *tp)
 {
-       struct rtl8169_private *tp = netdev_priv(dev);
-
        /*
         * Versions prior to RTL_GIGA_MAC_VER_19 don't support resetting the
         * tally counters.
        if (tp->mac_version < RTL_GIGA_MAC_VER_19)
                return true;
 
-       return rtl8169_do_counters(dev, CounterReset);
+       return rtl8169_do_counters(tp, CounterReset);
 }
 
-static bool rtl8169_update_counters(struct net_device *dev)
+static bool rtl8169_update_counters(struct rtl8169_private *tp)
 {
-       struct rtl8169_private *tp = netdev_priv(dev);
-
        /*
         * Some chips are unable to dump tally counters when the receiver
         * is disabled.
        if ((RTL_R8(tp, ChipCmd) & CmdRxEnb) == 0)
                return true;
 
-       return rtl8169_do_counters(dev, CounterDump);
+       return rtl8169_do_counters(tp, CounterDump);
 }
 
-static bool rtl8169_init_counter_offsets(struct net_device *dev)
+static bool rtl8169_init_counter_offsets(struct rtl8169_private *tp)
 {
-       struct rtl8169_private *tp = netdev_priv(dev);
        struct rtl8169_counters *counters = tp->counters;
        bool ret = false;
 
                return true;
 
        /* If both, reset and update fail, propagate to caller. */
-       if (rtl8169_reset_counters(dev))
+       if (rtl8169_reset_counters(tp))
                ret = true;
 
-       if (rtl8169_update_counters(dev))
+       if (rtl8169_update_counters(tp))
                ret = true;
 
        tp->tc_offset.tx_errors = counters->tx_errors;
        pm_runtime_get_noresume(d);
 
        if (pm_runtime_active(d))
-               rtl8169_update_counters(dev);
+               rtl8169_update_counters(tp);
 
        pm_runtime_put_noidle(d);
 
        pm_runtime_get_sync(&pdev->dev);
 
        /* Update counters before going down */
-       rtl8169_update_counters(dev);
+       rtl8169_update_counters(tp);
 
        rtl_lock_work(tp);
        clear_bit(RTL_FLAG_TASK_ENABLED, tp->wk.flags);
 
        rtl_hw_start(tp);
 
-       if (!rtl8169_init_counter_offsets(dev))
+       if (!rtl8169_init_counter_offsets(tp))
                netif_warn(tp, hw, dev, "counter reset/update failed\n");
 
        netif_start_queue(dev);
         * from tally counters.
         */
        if (pm_runtime_active(&pdev->dev))
-               rtl8169_update_counters(dev);
+               rtl8169_update_counters(tp);
 
        /*
         * Subtract values fetched during initalization.
 
        /* Update counters before going runtime suspend */
        rtl8169_rx_missed(dev);
-       rtl8169_update_counters(dev);
+       rtl8169_update_counters(tp);
 
        return 0;
 }