Lines Matching defs:sch
141 static void tbf_offload_change(struct Qdisc *sch)
143 struct tbf_sched_data *q = qdisc_priv(sch);
144 struct net_device *dev = qdisc_dev(sch);
151 qopt.handle = sch->handle;
152 qopt.parent = sch->parent;
155 qopt.replace_params.qstats = &sch->qstats;
160 static void tbf_offload_destroy(struct Qdisc *sch)
162 struct net_device *dev = qdisc_dev(sch);
169 qopt.handle = sch->handle;
170 qopt.parent = sch->parent;
174 static int tbf_offload_dump(struct Qdisc *sch)
179 qopt.handle = sch->handle;
180 qopt.parent = sch->parent;
181 qopt.stats.bstats = &sch->bstats;
182 qopt.stats.qstats = &sch->qstats;
184 return qdisc_offload_dump_helper(sch, TC_SETUP_QDISC_TBF, &qopt);
190 static int tbf_segment(struct sk_buff *skb, struct Qdisc *sch,
193 struct tbf_sched_data *q = qdisc_priv(sch);
202 return qdisc_drop(skb, sch, to_free);
212 qdisc_qstats_drop(sch);
217 sch->q.qlen += nb;
219 qdisc_tree_reduce_backlog(sch, 1 - nb, prev_len - len);
224 static int tbf_enqueue(struct sk_buff *skb, struct Qdisc *sch,
227 struct tbf_sched_data *q = qdisc_priv(sch);
234 return tbf_segment(skb, sch, to_free);
235 return qdisc_drop(skb, sch, to_free);
240 qdisc_qstats_drop(sch);
244 sch->qstats.backlog += len;
245 sch->q.qlen++;
254 static struct sk_buff *tbf_dequeue(struct Qdisc *sch)
256 struct tbf_sched_data *q = qdisc_priv(sch);
289 qdisc_qstats_backlog_dec(sch, skb);
290 sch->q.qlen--;
291 qdisc_bstats_update(sch, skb);
309 qdisc_qstats_overlimit(sch);
314 static void tbf_reset(struct Qdisc *sch)
316 struct tbf_sched_data *q = qdisc_priv(sch);
335 static int tbf_change(struct Qdisc *sch, struct nlattr *opt,
339 struct tbf_sched_data *q = qdisc_priv(sch);
406 if (max_size < psched_mtu(qdisc_dev(sch)))
408 max_size, qdisc_dev(sch)->name,
409 psched_mtu(qdisc_dev(sch)));
421 child = fifo_create_dflt(sch, &bfifo_qdisc_ops, qopt->limit,
432 sch_tree_lock(sch);
454 sch_tree_unlock(sch);
458 tbf_offload_change(sch);
463 static int tbf_init(struct Qdisc *sch, struct nlattr *opt,
466 struct tbf_sched_data *q = qdisc_priv(sch);
468 qdisc_watchdog_init(&q->watchdog, sch);
476 return tbf_change(sch, opt, extack);
479 static void tbf_destroy(struct Qdisc *sch)
481 struct tbf_sched_data *q = qdisc_priv(sch);
484 tbf_offload_destroy(sch);
488 static int tbf_dump(struct Qdisc *sch, struct sk_buff *skb)
490 struct tbf_sched_data *q = qdisc_priv(sch);
495 err = tbf_offload_dump(sch);
530 static int tbf_dump_class(struct Qdisc *sch, unsigned long cl,
533 struct tbf_sched_data *q = qdisc_priv(sch);
541 static int tbf_graft(struct Qdisc *sch, unsigned long arg, struct Qdisc *new,
544 struct tbf_sched_data *q = qdisc_priv(sch);
549 *old = qdisc_replace(sch, new, &q->qdisc);
553 static struct Qdisc *tbf_leaf(struct Qdisc *sch, unsigned long arg)
555 struct tbf_sched_data *q = qdisc_priv(sch);
559 static unsigned long tbf_find(struct Qdisc *sch, u32 classid)
564 static void tbf_walk(struct Qdisc *sch, struct qdisc_walker *walker)
568 if (walker->fn(sch, 1, walker) < 0) {