Lines Matching defs:sch

144 	struct Qdisc	*sch;
163 static unsigned int sfq_classify(struct sk_buff *skb, struct Qdisc *sch,
166 struct sfq_sched_data *q = qdisc_priv(sch);
171 if (TC_H_MAJ(skb->priority) == sch->handle &&
293 static unsigned int sfq_drop(struct Qdisc *sch, struct sk_buff **to_free)
295 struct sfq_sched_data *q = qdisc_priv(sch);
310 sch->q.qlen--;
311 qdisc_qstats_backlog_dec(sch, skb);
312 qdisc_drop(skb, sch, to_free);
346 sfq_enqueue(struct sk_buff *skb, struct Qdisc *sch, struct sk_buff **to_free)
348 struct sfq_sched_data *q = qdisc_priv(sch);
356 hash = sfq_classify(skb, sch, &ret);
359 qdisc_qstats_drop(sch);
370 return qdisc_drop(skb, sch, to_free);
389 qdisc_qstats_overlimit(sch);
406 qdisc_qstats_overlimit(sch);
427 return qdisc_drop(skb, sch, to_free);
432 sch->qstats.backlog -= delta;
434 qdisc_drop(head, sch, to_free);
437 qdisc_tree_reduce_backlog(sch, 0, delta);
442 qdisc_qstats_backlog_inc(sch, skb);
461 if (++sch->q.qlen <= q->limit)
465 dropped = sfq_drop(sch, to_free);
470 qdisc_tree_reduce_backlog(sch, 0, dropped - qdisc_pkt_len(skb));
475 qdisc_tree_reduce_backlog(sch, 1, dropped);
480 sfq_dequeue(struct Qdisc *sch)
482 struct sfq_sched_data *q = qdisc_priv(sch);
501 qdisc_bstats_update(sch, skb);
502 sch->q.qlen--;
503 qdisc_qstats_backlog_dec(sch, skb);
521 sfq_reset(struct Qdisc *sch)
525 while ((skb = sfq_dequeue(sch)) != NULL)
535 static void sfq_rehash(struct Qdisc *sch)
537 struct sfq_sched_data *q = qdisc_priv(sch);
571 qdisc_qstats_backlog_dec(sch, skb);
601 sch->q.qlen -= dropped;
602 qdisc_tree_reduce_backlog(sch, dropped, drop_len);
608 struct Qdisc *sch = q->sch;
615 root_lock = qdisc_lock(qdisc_root_sleeping(sch));
619 sfq_rehash(sch);
631 static int sfq_change(struct Qdisc *sch, struct nlattr *opt)
633 struct sfq_sched_data *q = qdisc_priv(sch);
665 sch_tree_lock(sch);
697 qlen = sch->q.qlen;
698 while (sch->q.qlen > q->limit) {
699 dropped += sfq_drop(sch, &to_free);
705 qdisc_tree_reduce_backlog(sch, qlen - sch->q.qlen, dropped);
712 sch_tree_unlock(sch);
727 static void sfq_destroy(struct Qdisc *sch)
729 struct sfq_sched_data *q = qdisc_priv(sch);
739 static int sfq_init(struct Qdisc *sch, struct nlattr *opt,
742 struct sfq_sched_data *q = qdisc_priv(sch);
746 q->sch = sch;
749 err = tcf_block_get(&q->block, &q->filter_list, sch, extack);
764 q->quantum = psched_mtu(qdisc_dev(sch));
770 int err = sfq_change(sch, opt);
790 sch->flags |= TCQ_F_CAN_BYPASS;
792 sch->flags &= ~TCQ_F_CAN_BYPASS;
796 static int sfq_dump(struct Qdisc *sch, struct sk_buff *skb)
798 struct sfq_sched_data *q = qdisc_priv(sch);
833 static struct Qdisc *sfq_leaf(struct Qdisc *sch, unsigned long arg)
838 static unsigned long sfq_find(struct Qdisc *sch, u32 classid)
843 static unsigned long sfq_bind(struct Qdisc *sch, unsigned long parent,
853 static struct tcf_block *sfq_tcf_block(struct Qdisc *sch, unsigned long cl,
856 struct sfq_sched_data *q = qdisc_priv(sch);
863 static int sfq_dump_class(struct Qdisc *sch, unsigned long cl,
870 static int sfq_dump_class_stats(struct Qdisc *sch, unsigned long cl,
873 struct sfq_sched_data *q = qdisc_priv(sch);
890 static void sfq_walk(struct Qdisc *sch, struct qdisc_walker *arg)
892 struct sfq_sched_data *q = qdisc_priv(sch);
903 if (!tc_qdisc_stats_dump(sch, i + 1, arg))