mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 22:21:40 +00:00
net_sched: add qdisc_watchdog_schedule_range_ns()
Some packet schedulers might want to add a slack when programming hrtimers. This can reduce number of interrupts and increase batch sizes and thus give good xmit_more savings. This commit adds qdisc_watchdog_schedule_range_ns() helper, with an extra delta_ns parameter. Legacy qdisc_watchdog_schedule_n() becomes an inline passing a zero slack. Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
24ee86511b
commit
efe074c2cc
@ -75,7 +75,15 @@ struct qdisc_watchdog {
|
||||
void qdisc_watchdog_init_clockid(struct qdisc_watchdog *wd, struct Qdisc *qdisc,
|
||||
clockid_t clockid);
|
||||
void qdisc_watchdog_init(struct qdisc_watchdog *wd, struct Qdisc *qdisc);
|
||||
void qdisc_watchdog_schedule_ns(struct qdisc_watchdog *wd, u64 expires);
|
||||
|
||||
void qdisc_watchdog_schedule_range_ns(struct qdisc_watchdog *wd, u64 expires,
|
||||
u64 delta_ns);
|
||||
|
||||
static inline void qdisc_watchdog_schedule_ns(struct qdisc_watchdog *wd,
|
||||
u64 expires)
|
||||
{
|
||||
return qdisc_watchdog_schedule_range_ns(wd, expires, 0ULL);
|
||||
}
|
||||
|
||||
static inline void qdisc_watchdog_schedule(struct qdisc_watchdog *wd,
|
||||
psched_time_t expires)
|
||||
|
@ -618,7 +618,8 @@ void qdisc_watchdog_init(struct qdisc_watchdog *wd, struct Qdisc *qdisc)
|
||||
}
|
||||
EXPORT_SYMBOL(qdisc_watchdog_init);
|
||||
|
||||
void qdisc_watchdog_schedule_ns(struct qdisc_watchdog *wd, u64 expires)
|
||||
void qdisc_watchdog_schedule_range_ns(struct qdisc_watchdog *wd, u64 expires,
|
||||
u64 delta_ns)
|
||||
{
|
||||
if (test_bit(__QDISC_STATE_DEACTIVATED,
|
||||
&qdisc_root_sleeping(wd->qdisc)->state))
|
||||
@ -628,11 +629,12 @@ void qdisc_watchdog_schedule_ns(struct qdisc_watchdog *wd, u64 expires)
|
||||
return;
|
||||
|
||||
wd->last_expires = expires;
|
||||
hrtimer_start(&wd->timer,
|
||||
ns_to_ktime(expires),
|
||||
HRTIMER_MODE_ABS_PINNED);
|
||||
hrtimer_start_range_ns(&wd->timer,
|
||||
ns_to_ktime(expires),
|
||||
delta_ns,
|
||||
HRTIMER_MODE_ABS_PINNED);
|
||||
}
|
||||
EXPORT_SYMBOL(qdisc_watchdog_schedule_ns);
|
||||
EXPORT_SYMBOL(qdisc_watchdog_schedule_range_ns);
|
||||
|
||||
void qdisc_watchdog_cancel(struct qdisc_watchdog *wd)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user