Lines Matching defs:sch

311 static bool fq_fastpath_check(const struct Qdisc *sch, struct sk_buff *skb,
314 const struct fq_sched_data *q = qdisc_priv(sch);
320 if (sch->q.qlen != 0) {
347 static struct fq_flow *fq_classify(struct Qdisc *sch, struct sk_buff *skb,
350 struct fq_sched_data *q = qdisc_priv(sch);
386 if (fq_fastpath_check(sch, skb, now)) {
471 static void fq_erase_head(struct Qdisc *sch, struct fq_flow *flow,
478 skb->dev = qdisc_dev(sch);
485 static void fq_dequeue_skb(struct Qdisc *sch, struct fq_flow *flow,
488 fq_erase_head(sch, flow, skb);
490 qdisc_qstats_backlog_dec(sch, skb);
491 sch->q.qlen--;
532 static int fq_enqueue(struct sk_buff *skb, struct Qdisc *sch,
535 struct fq_sched_data *q = qdisc_priv(sch);
541 if (unlikely(q->band_pkt_count[band] >= sch->limit)) {
543 return qdisc_drop(skb, sch, to_free);
554 return qdisc_drop(skb, sch, to_free);
562 f = fq_classify(sch, skb, now);
567 return qdisc_drop(skb, sch, to_free);
587 qdisc_qstats_backlog_inc(sch, skb);
588 sch->q.qlen++;
631 static struct sk_buff *fq_dequeue(struct Qdisc *sch)
633 struct fq_sched_data *q = qdisc_priv(sch);
643 if (!sch->q.qlen)
649 fq_dequeue_skb(sch, &q->internal, skb);
702 fq_dequeue_skb(sch, f, skb);
760 qdisc_bstats_update(sch, skb);
780 static void fq_reset(struct Qdisc *sch)
782 struct fq_sched_data *q = qdisc_priv(sch);
788 sch->q.qlen = 0;
789 sch->qstats.backlog = 0;
867 static int fq_resize(struct Qdisc *sch, u32 log)
869 struct fq_sched_data *q = qdisc_priv(sch);
879 netdev_queue_numa_node_read(sch->dev_queue));
886 sch_tree_lock(sch);
895 sch_tree_unlock(sch);
993 static int fq_change(struct Qdisc *sch, struct nlattr *opt,
996 struct fq_sched_data *q = qdisc_priv(sch);
1007 sch_tree_lock(sch);
1020 WRITE_ONCE(sch->limit,
1103 sch_tree_unlock(sch);
1104 err = fq_resize(sch, fq_log);
1105 sch_tree_lock(sch);
1107 while (sch->q.qlen > sch->limit) {
1108 struct sk_buff *skb = fq_dequeue(sch);
1116 qdisc_tree_reduce_backlog(sch, drop_count, drop_len);
1118 sch_tree_unlock(sch);
1122 static void fq_destroy(struct Qdisc *sch)
1124 struct fq_sched_data *q = qdisc_priv(sch);
1126 fq_reset(sch);
1131 static int fq_init(struct Qdisc *sch, struct nlattr *opt,
1134 struct fq_sched_data *q = qdisc_priv(sch);
1137 sch->limit = 10000;
1139 q->quantum = 2 * psched_mtu(qdisc_dev(sch));
1140 q->initial_quantum = 10 * psched_mtu(qdisc_dev(sch));
1167 qdisc_watchdog_init_clockid(&q->watchdog, sch, CLOCK_MONOTONIC);
1170 err = fq_change(sch, opt, extack);
1172 err = fq_resize(sch, q->fq_trees_log);
1177 static int fq_dump(struct Qdisc *sch, struct sk_buff *skb)
1179 struct fq_sched_data *q = qdisc_priv(sch);
1201 READ_ONCE(sch->limit)) ||
1245 static int fq_dump_stats(struct Qdisc *sch, struct gnet_dump *d)
1247 struct fq_sched_data *q = qdisc_priv(sch);
1253 sch_tree_lock(sch);
1277 sch_tree_unlock(sch);