Lines Matching refs:sch
73 static inline struct atm_flow_data *lookup_flow(struct Qdisc *sch, u32 classid)
75 struct atm_qdisc_data *p = qdisc_priv(sch);
85 static int atm_tc_graft(struct Qdisc *sch, unsigned long arg,
89 struct atm_qdisc_data *p = qdisc_priv(sch);
92 pr_debug("atm_tc_graft(sch %p,[qdisc %p],flow %p,new %p,old %p)\n",
93 sch, p, flow, new, old);
105 static struct Qdisc *atm_tc_leaf(struct Qdisc *sch, unsigned long cl)
109 pr_debug("atm_tc_leaf(sch %p,flow %p)\n", sch, flow);
113 static unsigned long atm_tc_find(struct Qdisc *sch, u32 classid)
115 struct atm_qdisc_data *p __maybe_unused = qdisc_priv(sch);
118 pr_debug("%s(sch %p,[qdisc %p],classid %x)\n", __func__, sch, p, classid);
119 flow = lookup_flow(sch, classid);
124 static unsigned long atm_tc_bind_filter(struct Qdisc *sch,
127 struct atm_qdisc_data *p __maybe_unused = qdisc_priv(sch);
130 pr_debug("%s(sch %p,[qdisc %p],classid %x)\n", __func__, sch, p, classid);
131 flow = lookup_flow(sch, classid);
143 static void atm_tc_put(struct Qdisc *sch, unsigned long cl)
145 struct atm_qdisc_data *p = qdisc_priv(sch);
148 pr_debug("atm_tc_put(sch %p,[qdisc %p],flow %p)\n", sch, p, flow);
163 atm_tc_put(sch, (unsigned long)flow->excess);
195 static int atm_tc_change(struct Qdisc *sch, u32 classid, u32 parent,
199 struct atm_qdisc_data *p = qdisc_priv(sch);
208 pr_debug("atm_tc_change(sch %p,[qdisc %p],classid %x,parent %x,"
209 "flow %p,opt %p)\n", sch, p, classid, parent, flow, opt);
213 if (parent && parent != TC_H_ROOT && parent != sch->handle)
247 atm_tc_find(sch, nla_get_u32(tb[TCA_ATM_EXCESS]));
264 if (TC_H_MAJ(classid ^ sch->handle)) {
274 classid = TC_H_MAKE(sch->handle, 0x8000 | i);
275 cl = atm_tc_find(sch, classid);
288 error = tcf_block_get(&flow->block, &flow->filter_list, sch,
295 flow->q = qdisc_create_dflt(sch->dev_queue, &pfifo_qdisc_ops, classid,
323 static int atm_tc_delete(struct Qdisc *sch, unsigned long arg)
325 struct atm_qdisc_data *p = qdisc_priv(sch);
328 pr_debug("atm_tc_delete(sch %p,[qdisc %p],flow %p)\n", sch, p, flow);
343 atm_tc_put(sch, arg);
347 static void atm_tc_walk(struct Qdisc *sch, struct qdisc_walker *walker)
349 struct atm_qdisc_data *p = qdisc_priv(sch);
352 pr_debug("atm_tc_walk(sch %p,[qdisc %p],walker %p)\n", sch, p, walker);
357 walker->fn(sch, (unsigned long)flow, walker) < 0) {
365 static struct tcf_block *atm_tc_tcf_block(struct Qdisc *sch, unsigned long cl,
368 struct atm_qdisc_data *p = qdisc_priv(sch);
371 pr_debug("atm_tc_find_tcf(sch %p,[qdisc %p],flow %p)\n", sch, p, flow);
377 static int atm_tc_enqueue(struct sk_buff *skb, struct Qdisc *sch,
380 struct atm_qdisc_data *p = qdisc_priv(sch);
386 pr_debug("atm_tc_enqueue(skb %p,sch %p,[qdisc %p])\n", skb, sch, p);
389 if (TC_H_MAJ(skb->priority) != sch->handle ||
390 !(flow = (struct atm_flow_data *)atm_tc_find(sch, skb->priority))) {
404 flow = lookup_flow(sch, res.classid);
442 qdisc_qstats_drop(sch);
452 * success at this place. Also, sch->q.qdisc needs to reflect whether
458 sch->q.qlen++;
474 struct Qdisc *sch = (struct Qdisc *)data;
475 struct atm_qdisc_data *p = qdisc_priv(sch);
479 pr_debug("sch_atm_dequeue(sch %p,[qdisc %p])\n", sch, p);
495 qdisc_bstats_update(sch, skb);
522 static struct sk_buff *atm_tc_dequeue(struct Qdisc *sch)
524 struct atm_qdisc_data *p = qdisc_priv(sch);
527 pr_debug("atm_tc_dequeue(sch %p,[qdisc %p])\n", sch, p);
531 sch->q.qlen--;
535 static struct sk_buff *atm_tc_peek(struct Qdisc *sch)
537 struct atm_qdisc_data *p = qdisc_priv(sch);
539 pr_debug("atm_tc_peek(sch %p,[qdisc %p])\n", sch, p);
544 static int atm_tc_init(struct Qdisc *sch, struct nlattr *opt,
547 struct atm_qdisc_data *p = qdisc_priv(sch);
550 pr_debug("atm_tc_init(sch %p,[qdisc %p],opt %p)\n", sch, p, opt);
554 p->link.q = qdisc_create_dflt(sch->dev_queue,
555 &pfifo_qdisc_ops, sch->handle, extack);
561 p->link.common.classid = sch->handle;
564 err = tcf_block_get(&p->link.block, &p->link.filter_list, sch,
569 tasklet_init(&p->task, sch_atm_dequeue, (unsigned long)sch);
573 static void atm_tc_reset(struct Qdisc *sch)
575 struct atm_qdisc_data *p = qdisc_priv(sch);
578 pr_debug("atm_tc_reset(sch %p,[qdisc %p])\n", sch, p);
583 static void atm_tc_destroy(struct Qdisc *sch)
585 struct atm_qdisc_data *p = qdisc_priv(sch);
588 pr_debug("atm_tc_destroy(sch %p,[qdisc %p])\n", sch, p);
597 atm_tc_put(sch, (unsigned long)flow);
602 static int atm_tc_dump_class(struct Qdisc *sch, unsigned long cl,
605 struct atm_qdisc_data *p = qdisc_priv(sch);
609 pr_debug("atm_tc_dump_class(sch %p,[qdisc %p],flow %p,skb %p,tcm %p)\n",
610 sch, p, flow, skb, tcm);
651 atm_tc_dump_class_stats(struct Qdisc *sch, unsigned long arg,
656 if (gnet_stats_copy_basic(qdisc_root_sleeping_running(sch),
664 static int atm_tc_dump(struct Qdisc *sch, struct sk_buff *skb)