@@ -149,7 +149,6 @@ struct cbq_sched_data {
149
149
psched_time_t now ; /* Cached timestamp */
150
150
unsigned int pmask ;
151
151
152
- struct hrtimer delay_timer ;
153
152
struct qdisc_watchdog watchdog ; /* Watchdog timer,
154
153
started when CBQ has
155
154
backlog, but cannot
@@ -441,81 +440,6 @@ static void cbq_overlimit(struct cbq_class *cl)
441
440
}
442
441
}
443
442
444
- static psched_tdiff_t cbq_undelay_prio (struct cbq_sched_data * q , int prio ,
445
- psched_time_t now )
446
- {
447
- struct cbq_class * cl ;
448
- struct cbq_class * cl_prev = q -> active [prio ];
449
- psched_time_t sched = now ;
450
-
451
- if (cl_prev == NULL )
452
- return 0 ;
453
-
454
- do {
455
- cl = cl_prev -> next_alive ;
456
- if (now - cl -> penalized > 0 ) {
457
- cl_prev -> next_alive = cl -> next_alive ;
458
- cl -> next_alive = NULL ;
459
- cl -> cpriority = cl -> priority ;
460
- cl -> delayed = 0 ;
461
- cbq_activate_class (cl );
462
-
463
- if (cl == q -> active [prio ]) {
464
- q -> active [prio ] = cl_prev ;
465
- if (cl == q -> active [prio ]) {
466
- q -> active [prio ] = NULL ;
467
- return 0 ;
468
- }
469
- }
470
-
471
- cl = cl_prev -> next_alive ;
472
- } else if (sched - cl -> penalized > 0 )
473
- sched = cl -> penalized ;
474
- } while ((cl_prev = cl ) != q -> active [prio ]);
475
-
476
- return sched - now ;
477
- }
478
-
479
- static enum hrtimer_restart cbq_undelay (struct hrtimer * timer )
480
- {
481
- struct cbq_sched_data * q = container_of (timer , struct cbq_sched_data ,
482
- delay_timer );
483
- struct Qdisc * sch = q -> watchdog .qdisc ;
484
- psched_time_t now ;
485
- psched_tdiff_t delay = 0 ;
486
- unsigned int pmask ;
487
-
488
- now = psched_get_time ();
489
-
490
- pmask = q -> pmask ;
491
- q -> pmask = 0 ;
492
-
493
- while (pmask ) {
494
- int prio = ffz (~pmask );
495
- psched_tdiff_t tmp ;
496
-
497
- pmask &= ~(1 <<prio );
498
-
499
- tmp = cbq_undelay_prio (q , prio , now );
500
- if (tmp > 0 ) {
501
- q -> pmask |= 1 <<prio ;
502
- if (tmp < delay || delay == 0 )
503
- delay = tmp ;
504
- }
505
- }
506
-
507
- if (delay ) {
508
- ktime_t time ;
509
-
510
- time = 0 ;
511
- time = ktime_add_ns (time , PSCHED_TICKS2NS (now + delay ));
512
- hrtimer_start (& q -> delay_timer , time , HRTIMER_MODE_ABS_PINNED );
513
- }
514
-
515
- __netif_schedule (qdisc_root (sch ));
516
- return HRTIMER_NORESTART ;
517
- }
518
-
519
443
/*
520
444
* It is mission critical procedure.
521
445
*
@@ -1034,7 +958,6 @@ cbq_reset(struct Qdisc *sch)
1034
958
q -> tx_class = NULL ;
1035
959
q -> tx_borrowed = NULL ;
1036
960
qdisc_watchdog_cancel (& q -> watchdog );
1037
- hrtimer_cancel (& q -> delay_timer );
1038
961
q -> toplevel = TC_CBQ_MAXLEVEL ;
1039
962
q -> now = psched_get_time ();
1040
963
@@ -1162,8 +1085,6 @@ static int cbq_init(struct Qdisc *sch, struct nlattr *opt,
1162
1085
int err ;
1163
1086
1164
1087
qdisc_watchdog_init (& q -> watchdog , sch );
1165
- hrtimer_init (& q -> delay_timer , CLOCK_MONOTONIC , HRTIMER_MODE_ABS_PINNED );
1166
- q -> delay_timer .function = cbq_undelay ;
1167
1088
1168
1089
err = cbq_opt_parse (tb , opt , extack );
1169
1090
if (err < 0 )
0 commit comments