Lines Matching refs:sch
70 static inline struct atm_flow_data *lookup_flow(struct Qdisc *sch, u32 classid) in lookup_flow() argument
72 struct atm_qdisc_data *p = qdisc_priv(sch); in lookup_flow()
82 static int atm_tc_graft(struct Qdisc *sch, unsigned long arg, in atm_tc_graft() argument
85 struct atm_qdisc_data *p = qdisc_priv(sch); in atm_tc_graft()
89 sch, p, flow, new, old); in atm_tc_graft()
101 static struct Qdisc *atm_tc_leaf(struct Qdisc *sch, unsigned long cl) in atm_tc_leaf() argument
105 pr_debug("atm_tc_leaf(sch %p,flow %p)\n", sch, flow); in atm_tc_leaf()
109 static unsigned long atm_tc_get(struct Qdisc *sch, u32 classid) in atm_tc_get() argument
111 struct atm_qdisc_data *p __maybe_unused = qdisc_priv(sch); in atm_tc_get()
114 pr_debug("atm_tc_get(sch %p,[qdisc %p],classid %x)\n", sch, p, classid); in atm_tc_get()
115 flow = lookup_flow(sch, classid); in atm_tc_get()
122 static unsigned long atm_tc_bind_filter(struct Qdisc *sch, in atm_tc_bind_filter() argument
125 return atm_tc_get(sch, classid); in atm_tc_bind_filter()
133 static void atm_tc_put(struct Qdisc *sch, unsigned long cl) in atm_tc_put() argument
135 struct atm_qdisc_data *p = qdisc_priv(sch); in atm_tc_put()
138 pr_debug("atm_tc_put(sch %p,[qdisc %p],flow %p)\n", sch, p, flow); in atm_tc_put()
153 atm_tc_put(sch, (unsigned long)flow->excess); in atm_tc_put()
185 static int atm_tc_change(struct Qdisc *sch, u32 classid, u32 parent, in atm_tc_change() argument
188 struct atm_qdisc_data *p = qdisc_priv(sch); in atm_tc_change()
198 "flow %p,opt %p)\n", sch, p, classid, parent, flow, opt); in atm_tc_change()
202 if (parent && parent != TC_H_ROOT && parent != sch->handle) in atm_tc_change()
235 atm_tc_get(sch, nla_get_u32(tb[TCA_ATM_EXCESS])); in atm_tc_change()
252 if (TC_H_MAJ(classid ^ sch->handle)) { in atm_tc_change()
262 classid = TC_H_MAKE(sch->handle, 0x8000 | i); in atm_tc_change()
263 cl = atm_tc_get(sch, classid); in atm_tc_change()
266 atm_tc_put(sch, cl); in atm_tc_change()
277 flow->q = qdisc_create_dflt(sch->dev_queue, &pfifo_qdisc_ops, classid); in atm_tc_change()
301 atm_tc_put(sch, (unsigned long)excess); in atm_tc_change()
306 static int atm_tc_delete(struct Qdisc *sch, unsigned long arg) in atm_tc_delete() argument
308 struct atm_qdisc_data *p = qdisc_priv(sch); in atm_tc_delete()
311 pr_debug("atm_tc_delete(sch %p,[qdisc %p],flow %p)\n", sch, p, flow); in atm_tc_delete()
326 atm_tc_put(sch, arg); in atm_tc_delete()
330 static void atm_tc_walk(struct Qdisc *sch, struct qdisc_walker *walker) in atm_tc_walk() argument
332 struct atm_qdisc_data *p = qdisc_priv(sch); in atm_tc_walk()
335 pr_debug("atm_tc_walk(sch %p,[qdisc %p],walker %p)\n", sch, p, walker); in atm_tc_walk()
340 walker->fn(sch, (unsigned long)flow, walker) < 0) { in atm_tc_walk()
348 static struct tcf_proto __rcu **atm_tc_find_tcf(struct Qdisc *sch, in atm_tc_find_tcf() argument
351 struct atm_qdisc_data *p = qdisc_priv(sch); in atm_tc_find_tcf()
354 pr_debug("atm_tc_find_tcf(sch %p,[qdisc %p],flow %p)\n", sch, p, flow); in atm_tc_find_tcf()
360 static int atm_tc_enqueue(struct sk_buff *skb, struct Qdisc *sch) in atm_tc_enqueue() argument
362 struct atm_qdisc_data *p = qdisc_priv(sch); in atm_tc_enqueue()
368 pr_debug("atm_tc_enqueue(skb %p,sch %p,[qdisc %p])\n", skb, sch, p); in atm_tc_enqueue()
371 if (TC_H_MAJ(skb->priority) != sch->handle || in atm_tc_enqueue()
372 !(flow = (struct atm_flow_data *)atm_tc_get(sch, skb->priority))) { in atm_tc_enqueue()
383 flow = lookup_flow(sch, res.classid); in atm_tc_enqueue()
420 qdisc_qstats_drop(sch); in atm_tc_enqueue()
436 sch->q.qlen++; in atm_tc_enqueue()
452 struct Qdisc *sch = (struct Qdisc *)data; in sch_atm_dequeue() local
453 struct atm_qdisc_data *p = qdisc_priv(sch); in sch_atm_dequeue()
457 pr_debug("sch_atm_dequeue(sch %p,[qdisc %p])\n", sch, p); in sch_atm_dequeue()
473 qdisc_bstats_update(sch, skb); in sch_atm_dequeue()
500 static struct sk_buff *atm_tc_dequeue(struct Qdisc *sch) in atm_tc_dequeue() argument
502 struct atm_qdisc_data *p = qdisc_priv(sch); in atm_tc_dequeue()
505 pr_debug("atm_tc_dequeue(sch %p,[qdisc %p])\n", sch, p); in atm_tc_dequeue()
509 sch->q.qlen--; in atm_tc_dequeue()
513 static struct sk_buff *atm_tc_peek(struct Qdisc *sch) in atm_tc_peek() argument
515 struct atm_qdisc_data *p = qdisc_priv(sch); in atm_tc_peek()
517 pr_debug("atm_tc_peek(sch %p,[qdisc %p])\n", sch, p); in atm_tc_peek()
522 static unsigned int atm_tc_drop(struct Qdisc *sch) in atm_tc_drop() argument
524 struct atm_qdisc_data *p = qdisc_priv(sch); in atm_tc_drop()
528 pr_debug("atm_tc_drop(sch %p,[qdisc %p])\n", sch, p); in atm_tc_drop()
536 static int atm_tc_init(struct Qdisc *sch, struct nlattr *opt) in atm_tc_init() argument
538 struct atm_qdisc_data *p = qdisc_priv(sch); in atm_tc_init()
540 pr_debug("atm_tc_init(sch %p,[qdisc %p],opt %p)\n", sch, p, opt); in atm_tc_init()
544 p->link.q = qdisc_create_dflt(sch->dev_queue, in atm_tc_init()
545 &pfifo_qdisc_ops, sch->handle); in atm_tc_init()
552 p->link.classid = sch->handle; in atm_tc_init()
554 tasklet_init(&p->task, sch_atm_dequeue, (unsigned long)sch); in atm_tc_init()
558 static void atm_tc_reset(struct Qdisc *sch) in atm_tc_reset() argument
560 struct atm_qdisc_data *p = qdisc_priv(sch); in atm_tc_reset()
563 pr_debug("atm_tc_reset(sch %p,[qdisc %p])\n", sch, p); in atm_tc_reset()
566 sch->q.qlen = 0; in atm_tc_reset()
569 static void atm_tc_destroy(struct Qdisc *sch) in atm_tc_destroy() argument
571 struct atm_qdisc_data *p = qdisc_priv(sch); in atm_tc_destroy()
574 pr_debug("atm_tc_destroy(sch %p,[qdisc %p])\n", sch, p); in atm_tc_destroy()
581 atm_tc_put(sch, (unsigned long)flow); in atm_tc_destroy()
586 static int atm_tc_dump_class(struct Qdisc *sch, unsigned long cl, in atm_tc_dump_class() argument
589 struct atm_qdisc_data *p = qdisc_priv(sch); in atm_tc_dump_class()
594 sch, p, flow, skb, tcm); in atm_tc_dump_class()
635 atm_tc_dump_class_stats(struct Qdisc *sch, unsigned long arg, in atm_tc_dump_class_stats() argument
647 static int atm_tc_dump(struct Qdisc *sch, struct sk_buff *skb) in atm_tc_dump() argument