Lines Matching refs:q

55 static inline int red_use_ecn(struct red_sched_data *q)  in red_use_ecn()  argument
57 return q->flags & TC_RED_ECN; in red_use_ecn()
60 static inline int red_use_harddrop(struct red_sched_data *q) in red_use_harddrop() argument
62 return q->flags & TC_RED_HARDDROP; in red_use_harddrop()
65 static int red_use_nodrop(struct red_sched_data *q) in red_use_nodrop() argument
67 return q->flags & TC_RED_NODROP; in red_use_nodrop()
73 struct red_sched_data *q = qdisc_priv(sch); in red_enqueue() local
74 struct Qdisc *child = q->qdisc; in red_enqueue()
78 q->vars.qavg = red_calc_qavg(&q->parms, in red_enqueue()
79 &q->vars, in red_enqueue()
82 if (red_is_idling(&q->vars)) in red_enqueue()
83 red_end_of_idle_period(&q->vars); in red_enqueue()
85 switch (red_action(&q->parms, &q->vars, q->vars.qavg)) { in red_enqueue()
91 if (!red_use_ecn(q)) { in red_enqueue()
92 q->stats.prob_drop++; in red_enqueue()
97 q->stats.prob_mark++; in red_enqueue()
98 skb = tcf_qevent_handle(&q->qe_mark, sch, skb, to_free, &ret); in red_enqueue()
101 } else if (!red_use_nodrop(q)) { in red_enqueue()
102 q->stats.prob_drop++; in red_enqueue()
111 if (red_use_harddrop(q) || !red_use_ecn(q)) { in red_enqueue()
112 q->stats.forced_drop++; in red_enqueue()
117 q->stats.forced_mark++; in red_enqueue()
118 skb = tcf_qevent_handle(&q->qe_mark, sch, skb, to_free, &ret); in red_enqueue()
121 } else if (!red_use_nodrop(q)) { in red_enqueue()
122 q->stats.forced_drop++; in red_enqueue()
134 sch->q.qlen++; in red_enqueue()
136 q->stats.pdrop++; in red_enqueue()
142 skb = tcf_qevent_handle(&q->qe_early_drop, sch, skb, to_free, &ret); in red_enqueue()
153 struct red_sched_data *q = qdisc_priv(sch); in red_dequeue() local
154 struct Qdisc *child = q->qdisc; in red_dequeue()
160 sch->q.qlen--; in red_dequeue()
162 if (!red_is_idling(&q->vars)) in red_dequeue()
163 red_start_of_idle_period(&q->vars); in red_dequeue()
170 struct red_sched_data *q = qdisc_priv(sch); in red_peek() local
171 struct Qdisc *child = q->qdisc; in red_peek()
178 struct red_sched_data *q = qdisc_priv(sch); in red_reset() local
180 qdisc_reset(q->qdisc); in red_reset()
181 red_restart(&q->vars); in red_reset()
186 struct red_sched_data *q = qdisc_priv(sch); in red_offload() local
198 opt.set.min = q->parms.qth_min >> q->parms.Wlog; in red_offload()
199 opt.set.max = q->parms.qth_max >> q->parms.Wlog; in red_offload()
200 opt.set.probability = q->parms.max_P; in red_offload()
201 opt.set.limit = q->limit; in red_offload()
202 opt.set.is_ecn = red_use_ecn(q); in red_offload()
203 opt.set.is_harddrop = red_use_harddrop(q); in red_offload()
204 opt.set.is_nodrop = red_use_nodrop(q); in red_offload()
215 struct red_sched_data *q = qdisc_priv(sch); in red_destroy() local
217 tcf_qevent_destroy(&q->qe_mark, sch); in red_destroy()
218 tcf_qevent_destroy(&q->qe_early_drop, sch); in red_destroy()
219 del_timer_sync(&q->adapt_timer); in red_destroy()
221 qdisc_put(q->qdisc); in red_destroy()
238 struct red_sched_data *q = qdisc_priv(sch); in __red_change() local
277 flags = (q->flags & ~flags_bf.selector) | flags_bf.value; in __red_change()
282 q->flags = flags; in __red_change()
283 q->userbits = userbits; in __red_change()
284 q->limit = ctl->limit; in __red_change()
286 qdisc_tree_flush_backlog(q->qdisc); in __red_change()
287 old_child = q->qdisc; in __red_change()
288 q->qdisc = child; in __red_change()
291 red_set_parms(&q->parms, in __red_change()
296 red_set_vars(&q->vars); in __red_change()
298 del_timer(&q->adapt_timer); in __red_change()
300 mod_timer(&q->adapt_timer, jiffies + HZ/2); in __red_change()
302 if (!q->qdisc->q.qlen) in __red_change()
303 red_start_of_idle_period(&q->vars); in __red_change()
322 struct red_sched_data *q = from_timer(q, t, adapt_timer); in red_adaptative_timer() local
323 struct Qdisc *sch = q->sch; in red_adaptative_timer()
327 red_adaptative_algo(&q->parms, &q->vars); in red_adaptative_timer()
328 mod_timer(&q->adapt_timer, jiffies + HZ/2); in red_adaptative_timer()
335 struct red_sched_data *q = qdisc_priv(sch); in red_init() local
339 q->qdisc = &noop_qdisc; in red_init()
340 q->sch = sch; in red_init()
341 timer_setup(&q->adapt_timer, red_adaptative_timer, 0); in red_init()
355 err = tcf_qevent_init(&q->qe_early_drop, sch, in red_init()
361 return tcf_qevent_init(&q->qe_mark, sch, in red_init()
369 struct red_sched_data *q = qdisc_priv(sch); in red_change() local
378 err = tcf_qevent_validate_change(&q->qe_early_drop, in red_change()
383 err = tcf_qevent_validate_change(&q->qe_mark, in red_change()
408 struct red_sched_data *q = qdisc_priv(sch); in red_dump() local
411 .limit = q->limit, in red_dump()
412 .flags = (q->flags & TC_RED_HISTORIC_FLAGS) | in red_dump()
413 q->userbits, in red_dump()
414 .qth_min = q->parms.qth_min >> q->parms.Wlog, in red_dump()
415 .qth_max = q->parms.qth_max >> q->parms.Wlog, in red_dump()
416 .Wlog = q->parms.Wlog, in red_dump()
417 .Plog = q->parms.Plog, in red_dump()
418 .Scell_log = q->parms.Scell_log, in red_dump()
430 nla_put_u32(skb, TCA_RED_MAX_P, q->parms.max_P) || in red_dump()
432 q->flags, TC_RED_SUPPORTED_FLAGS) || in red_dump()
433 tcf_qevent_dump(skb, TCA_RED_MARK_BLOCK, &q->qe_mark) || in red_dump()
434 tcf_qevent_dump(skb, TCA_RED_EARLY_DROP_BLOCK, &q->qe_early_drop)) in red_dump()
445 struct red_sched_data *q = qdisc_priv(sch); in red_dump_stats() local
455 .xstats = &q->stats, in red_dump_stats()
461 st.early = q->stats.prob_drop + q->stats.forced_drop; in red_dump_stats()
462 st.pdrop = q->stats.pdrop; in red_dump_stats()
463 st.marked = q->stats.prob_mark + q->stats.forced_mark; in red_dump_stats()
471 struct red_sched_data *q = qdisc_priv(sch); in red_dump_class() local
474 tcm->tcm_info = q->qdisc->handle; in red_dump_class()
496 struct red_sched_data *q = qdisc_priv(sch); in red_graft() local
501 *old = qdisc_replace(sch, new, &q->qdisc); in red_graft()
509 struct red_sched_data *q = qdisc_priv(sch); in red_leaf() local
510 return q->qdisc; in red_leaf()