sch_sfq.c (b160292cc216a50fd0cd386b0bda2cd48352c73b) sch_sfq.c (b24b8a247ff65c01b252025926fe564209fae4fc)
1/*
2 * net/sched/sch_sfq.c Stochastic Fairness Queueing discipline.
3 *
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License
6 * as published by the Free Software Foundation; either version
7 * 2 of the License, or (at your option) any later version.
8 *

--- 412 unchanged lines hidden (view full) ---

421 return 0;
422}
423
424static int sfq_init(struct Qdisc *sch, struct rtattr *opt)
425{
426 struct sfq_sched_data *q = qdisc_priv(sch);
427 int i;
428
1/*
2 * net/sched/sch_sfq.c Stochastic Fairness Queueing discipline.
3 *
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License
6 * as published by the Free Software Foundation; either version
7 * 2 of the License, or (at your option) any later version.
8 *

--- 412 unchanged lines hidden (view full) ---

421 return 0;
422}
423
424static int sfq_init(struct Qdisc *sch, struct rtattr *opt)
425{
426 struct sfq_sched_data *q = qdisc_priv(sch);
427 int i;
428
429 init_timer(&q->perturb_timer);
430 q->perturb_timer.data = (unsigned long)sch;
431 q->perturb_timer.function = sfq_perturbation;
429 setup_timer(&q->perturb_timer, sfq_perturbation, (unsigned long)sch);
432
433 for (i=0; i<SFQ_HASH_DIVISOR; i++)
434 q->ht[i] = SFQ_DEPTH;
435 for (i=0; i<SFQ_DEPTH; i++) {
436 skb_queue_head_init(&q->qs[i]);
437 q->dep[i+SFQ_DEPTH].next = i+SFQ_DEPTH;
438 q->dep[i+SFQ_DEPTH].prev = i+SFQ_DEPTH;
439 }

--- 73 unchanged lines hidden ---
430
431 for (i=0; i<SFQ_HASH_DIVISOR; i++)
432 q->ht[i] = SFQ_DEPTH;
433 for (i=0; i<SFQ_DEPTH; i++) {
434 skb_queue_head_init(&q->qs[i]);
435 q->dep[i+SFQ_DEPTH].next = i+SFQ_DEPTH;
436 q->dep[i+SFQ_DEPTH].prev = i+SFQ_DEPTH;
437 }

--- 73 unchanged lines hidden ---