{
        struct ieee80211_local *local = hw_to_local(hw);
        struct airtime_sched_info *air_sched;
-       u64 now = ktime_get_boottime_ns();
+       u64 now = ktime_get_coarse_boottime_ns();
        struct ieee80211_txq *ret = NULL;
        struct airtime_info *air_info;
        struct txq_info *txqi = NULL;
        u64 weight_sum = 0;
 
        if (unlikely(!now))
-               now = ktime_get_boottime_ns();
+               now = ktime_get_coarse_boottime_ns();
 
        lockdep_assert_held(&air_sched->lock);
 
        struct ieee80211_local *local = hw_to_local(hw);
        struct txq_info *txqi = to_txq_info(txq);
        struct airtime_sched_info *air_sched;
-       u64 now = ktime_get_boottime_ns();
+       u64 now = ktime_get_coarse_boottime_ns();
        struct airtime_info *air_info;
        u8 ac = txq->ac;
        bool was_active;
 
        if (!purge)
                airtime_set_active(air_sched, air_info,
-                                  ktime_get_boottime_ns());
+                                  ktime_get_coarse_boottime_ns());
 
        rb_erase_cached(&txqi->schedule_order,
                        &air_sched->active_txqs);
        if (RB_EMPTY_NODE(&txqi->schedule_order))
                goto out;
 
-       now = ktime_get_boottime_ns();
+       now = ktime_get_coarse_boottime_ns();
 
        /* Like in ieee80211_next_txq(), make sure the first station in the
         * scheduling order is eligible for transmission to avoid starvation.