--- m/net/sched/sch_taprio.c +++ n/net/sched/sch_taprio.c @@ -758,7 +758,16 @@ first_run: rcu_assign_pointer(q->current_entry, next); spin_unlock(&q->current_entry_lock); - hrtimer_set_expires(&q->advance_timer, close_time); + do { + struct hrtimer *timer = &q->advance_timer; + ktime_t now = timer->base->get_time(); + + now = ktime_add_ns(now, 2000); + if (ktime_compare(now, close_time) > 0) + hrtimer_set_expires(&q->advance_timer, now); + else + hrtimer_set_expires(&q->advance_timer, close_time); + } while (0); rcu_read_lock(); __netif_schedule(sch);