Lines Matching refs:sch
73 static inline struct atm_flow_data *lookup_flow(struct Qdisc *sch, u32 classid) in lookup_flow() argument
75 struct atm_qdisc_data *p = qdisc_priv(sch); in lookup_flow()
85 static int atm_tc_graft(struct Qdisc *sch, unsigned long arg, in atm_tc_graft() argument
89 struct atm_qdisc_data *p = qdisc_priv(sch); in atm_tc_graft()
93 sch, p, flow, new, old); in atm_tc_graft()
105 static struct Qdisc *atm_tc_leaf(struct Qdisc *sch, unsigned long cl) in atm_tc_leaf() argument
109 pr_debug("atm_tc_leaf(sch %p,flow %p)\n", sch, flow); in atm_tc_leaf()
113 static unsigned long atm_tc_find(struct Qdisc *sch, u32 classid) in atm_tc_find() argument
115 struct atm_qdisc_data *p __maybe_unused = qdisc_priv(sch); in atm_tc_find()
118 pr_debug("%s(sch %p,[qdisc %p],classid %x)\n", __func__, sch, p, classid); in atm_tc_find()
119 flow = lookup_flow(sch, classid); in atm_tc_find()
124 static unsigned long atm_tc_bind_filter(struct Qdisc *sch, in atm_tc_bind_filter() argument
127 struct atm_qdisc_data *p __maybe_unused = qdisc_priv(sch); in atm_tc_bind_filter()
130 pr_debug("%s(sch %p,[qdisc %p],classid %x)\n", __func__, sch, p, classid); in atm_tc_bind_filter()
131 flow = lookup_flow(sch, classid); in atm_tc_bind_filter()
143 static void atm_tc_put(struct Qdisc *sch, unsigned long cl) in atm_tc_put() argument
145 struct atm_qdisc_data *p = qdisc_priv(sch); in atm_tc_put()
148 pr_debug("atm_tc_put(sch %p,[qdisc %p],flow %p)\n", sch, p, flow); in atm_tc_put()
163 atm_tc_put(sch, (unsigned long)flow->excess); in atm_tc_put()
195 static int atm_tc_change(struct Qdisc *sch, u32 classid, u32 parent, in atm_tc_change() argument
199 struct atm_qdisc_data *p = qdisc_priv(sch); in atm_tc_change()
209 "flow %p,opt %p)\n", sch, p, classid, parent, flow, opt); in atm_tc_change()
213 if (parent && parent != TC_H_ROOT && parent != sch->handle) in atm_tc_change()
247 atm_tc_find(sch, nla_get_u32(tb[TCA_ATM_EXCESS])); in atm_tc_change()
264 if (TC_H_MAJ(classid ^ sch->handle)) { in atm_tc_change()
274 classid = TC_H_MAKE(sch->handle, 0x8000 | i); in atm_tc_change()
275 cl = atm_tc_find(sch, classid); in atm_tc_change()
288 error = tcf_block_get(&flow->block, &flow->filter_list, sch, in atm_tc_change()
295 flow->q = qdisc_create_dflt(sch->dev_queue, &pfifo_qdisc_ops, classid, in atm_tc_change()
323 static int atm_tc_delete(struct Qdisc *sch, unsigned long arg) in atm_tc_delete() argument
325 struct atm_qdisc_data *p = qdisc_priv(sch); in atm_tc_delete()
328 pr_debug("atm_tc_delete(sch %p,[qdisc %p],flow %p)\n", sch, p, flow); in atm_tc_delete()
343 atm_tc_put(sch, arg); in atm_tc_delete()
347 static void atm_tc_walk(struct Qdisc *sch, struct qdisc_walker *walker) in atm_tc_walk() argument
349 struct atm_qdisc_data *p = qdisc_priv(sch); in atm_tc_walk()
352 pr_debug("atm_tc_walk(sch %p,[qdisc %p],walker %p)\n", sch, p, walker); in atm_tc_walk()
357 walker->fn(sch, (unsigned long)flow, walker) < 0) { in atm_tc_walk()
365 static struct tcf_block *atm_tc_tcf_block(struct Qdisc *sch, unsigned long cl, in atm_tc_tcf_block() argument
368 struct atm_qdisc_data *p = qdisc_priv(sch); in atm_tc_tcf_block()
371 pr_debug("atm_tc_find_tcf(sch %p,[qdisc %p],flow %p)\n", sch, p, flow); in atm_tc_tcf_block()
377 static int atm_tc_enqueue(struct sk_buff *skb, struct Qdisc *sch, in atm_tc_enqueue() argument
380 struct atm_qdisc_data *p = qdisc_priv(sch); in atm_tc_enqueue()
386 pr_debug("atm_tc_enqueue(skb %p,sch %p,[qdisc %p])\n", skb, sch, p); in atm_tc_enqueue()
389 if (TC_H_MAJ(skb->priority) != sch->handle || in atm_tc_enqueue()
390 !(flow = (struct atm_flow_data *)atm_tc_find(sch, skb->priority))) { in atm_tc_enqueue()
401 flow = lookup_flow(sch, res.classid); in atm_tc_enqueue()
439 qdisc_qstats_drop(sch); in atm_tc_enqueue()
455 sch->q.qlen++; in atm_tc_enqueue()
471 struct Qdisc *sch = (struct Qdisc *)data; in sch_atm_dequeue() local
472 struct atm_qdisc_data *p = qdisc_priv(sch); in sch_atm_dequeue()
476 pr_debug("sch_atm_dequeue(sch %p,[qdisc %p])\n", sch, p); in sch_atm_dequeue()
492 qdisc_bstats_update(sch, skb); in sch_atm_dequeue()
519 static struct sk_buff *atm_tc_dequeue(struct Qdisc *sch) in atm_tc_dequeue() argument
521 struct atm_qdisc_data *p = qdisc_priv(sch); in atm_tc_dequeue()
524 pr_debug("atm_tc_dequeue(sch %p,[qdisc %p])\n", sch, p); in atm_tc_dequeue()
528 sch->q.qlen--; in atm_tc_dequeue()
532 static struct sk_buff *atm_tc_peek(struct Qdisc *sch) in atm_tc_peek() argument
534 struct atm_qdisc_data *p = qdisc_priv(sch); in atm_tc_peek()
536 pr_debug("atm_tc_peek(sch %p,[qdisc %p])\n", sch, p); in atm_tc_peek()
541 static int atm_tc_init(struct Qdisc *sch, struct nlattr *opt, in atm_tc_init() argument
544 struct atm_qdisc_data *p = qdisc_priv(sch); in atm_tc_init()
547 pr_debug("atm_tc_init(sch %p,[qdisc %p],opt %p)\n", sch, p, opt); in atm_tc_init()
551 p->link.q = qdisc_create_dflt(sch->dev_queue, in atm_tc_init()
552 &pfifo_qdisc_ops, sch->handle, extack); in atm_tc_init()
558 p->link.common.classid = sch->handle; in atm_tc_init()
561 err = tcf_block_get(&p->link.block, &p->link.filter_list, sch, in atm_tc_init()
566 tasklet_init(&p->task, sch_atm_dequeue, (unsigned long)sch); in atm_tc_init()
570 static void atm_tc_reset(struct Qdisc *sch) in atm_tc_reset() argument
572 struct atm_qdisc_data *p = qdisc_priv(sch); in atm_tc_reset()
575 pr_debug("atm_tc_reset(sch %p,[qdisc %p])\n", sch, p); in atm_tc_reset()
580 static void atm_tc_destroy(struct Qdisc *sch) in atm_tc_destroy() argument
582 struct atm_qdisc_data *p = qdisc_priv(sch); in atm_tc_destroy()
585 pr_debug("atm_tc_destroy(sch %p,[qdisc %p])\n", sch, p); in atm_tc_destroy()
594 atm_tc_put(sch, (unsigned long)flow); in atm_tc_destroy()
599 static int atm_tc_dump_class(struct Qdisc *sch, unsigned long cl, in atm_tc_dump_class() argument
602 struct atm_qdisc_data *p = qdisc_priv(sch); in atm_tc_dump_class()
607 sch, p, flow, skb, tcm); in atm_tc_dump_class()
648 atm_tc_dump_class_stats(struct Qdisc *sch, unsigned long arg, in atm_tc_dump_class_stats() argument
653 if (gnet_stats_copy_basic(qdisc_root_sleeping_running(sch), in atm_tc_dump_class_stats()
661 static int atm_tc_dump(struct Qdisc *sch, struct sk_buff *skb) in atm_tc_dump() argument