Lines Matching refs:qdisc
540 static int noop_enqueue(struct sk_buff *skb, struct Qdisc *qdisc, in noop_enqueue() argument
547 static struct sk_buff *noop_dequeue(struct Qdisc *qdisc) in noop_dequeue() argument
562 .qdisc = &noop_qdisc,
578 static int noqueue_init(struct Qdisc *qdisc, struct nlattr *opt, in noqueue_init() argument
584 qdisc->enqueue = NULL; in noqueue_init()
622 static int pfifo_fast_enqueue(struct sk_buff *skb, struct Qdisc *qdisc, in pfifo_fast_enqueue() argument
626 struct pfifo_fast_priv *priv = qdisc_priv(qdisc); in pfifo_fast_enqueue()
634 return qdisc_drop_cpu(skb, qdisc, to_free); in pfifo_fast_enqueue()
636 qdisc_qstats_cpu_qlen_inc(qdisc); in pfifo_fast_enqueue()
640 this_cpu_add(qdisc->cpu_qstats->backlog, pkt_len); in pfifo_fast_enqueue()
644 static struct sk_buff *pfifo_fast_dequeue(struct Qdisc *qdisc) in pfifo_fast_dequeue() argument
646 struct pfifo_fast_priv *priv = qdisc_priv(qdisc); in pfifo_fast_dequeue()
659 qdisc_qstats_cpu_backlog_dec(qdisc, skb); in pfifo_fast_dequeue()
660 qdisc_bstats_cpu_update(qdisc, skb); in pfifo_fast_dequeue()
661 qdisc_qstats_cpu_qlen_dec(qdisc); in pfifo_fast_dequeue()
667 static struct sk_buff *pfifo_fast_peek(struct Qdisc *qdisc) in pfifo_fast_peek() argument
669 struct pfifo_fast_priv *priv = qdisc_priv(qdisc); in pfifo_fast_peek()
682 static void pfifo_fast_reset(struct Qdisc *qdisc) in pfifo_fast_reset() argument
685 struct pfifo_fast_priv *priv = qdisc_priv(qdisc); in pfifo_fast_reset()
702 struct gnet_stats_queue *q = per_cpu_ptr(qdisc->cpu_qstats, i); in pfifo_fast_reset()
709 static int pfifo_fast_dump(struct Qdisc *qdisc, struct sk_buff *skb) in pfifo_fast_dump() argument
722 static int pfifo_fast_init(struct Qdisc *qdisc, struct nlattr *opt, in pfifo_fast_init() argument
725 unsigned int qlen = qdisc_dev(qdisc)->tx_queue_len; in pfifo_fast_init()
726 struct pfifo_fast_priv *priv = qdisc_priv(qdisc); in pfifo_fast_init()
743 qdisc->flags |= TCQ_F_CAN_BYPASS; in pfifo_fast_init()
911 void qdisc_reset(struct Qdisc *qdisc) in qdisc_reset() argument
913 const struct Qdisc_ops *ops = qdisc->ops; in qdisc_reset()
917 ops->reset(qdisc); in qdisc_reset()
919 skb_queue_walk_safe(&qdisc->gso_skb, skb, tmp) { in qdisc_reset()
920 __skb_unlink(skb, &qdisc->gso_skb); in qdisc_reset()
924 skb_queue_walk_safe(&qdisc->skb_bad_txq, skb, tmp) { in qdisc_reset()
925 __skb_unlink(skb, &qdisc->skb_bad_txq); in qdisc_reset()
929 qdisc->q.qlen = 0; in qdisc_reset()
930 qdisc->qstats.backlog = 0; in qdisc_reset()
934 void qdisc_free(struct Qdisc *qdisc) in qdisc_free() argument
936 if (qdisc_is_percpu_stats(qdisc)) { in qdisc_free()
937 free_percpu(qdisc->cpu_bstats); in qdisc_free()
938 free_percpu(qdisc->cpu_qstats); in qdisc_free()
941 kfree((char *) qdisc - qdisc->padded); in qdisc_free()
944 void qdisc_destroy(struct Qdisc *qdisc) in qdisc_destroy() argument
946 const struct Qdisc_ops *ops = qdisc->ops; in qdisc_destroy()
949 if (qdisc->flags & TCQ_F_BUILTIN || in qdisc_destroy()
950 !refcount_dec_and_test(&qdisc->refcnt)) in qdisc_destroy()
954 qdisc_hash_del(qdisc); in qdisc_destroy()
956 qdisc_put_stab(rtnl_dereference(qdisc->stab)); in qdisc_destroy()
958 gen_kill_estimator(&qdisc->rate_est); in qdisc_destroy()
960 ops->reset(qdisc); in qdisc_destroy()
962 ops->destroy(qdisc); in qdisc_destroy()
965 dev_put(qdisc_dev(qdisc)); in qdisc_destroy()
967 skb_queue_walk_safe(&qdisc->gso_skb, skb, tmp) { in qdisc_destroy()
968 __skb_unlink(skb, &qdisc->gso_skb); in qdisc_destroy()
972 skb_queue_walk_safe(&qdisc->skb_bad_txq, skb, tmp) { in qdisc_destroy()
973 __skb_unlink(skb, &qdisc->skb_bad_txq); in qdisc_destroy()
977 qdisc_free(qdisc); in qdisc_destroy()
983 struct Qdisc *qdisc) in dev_graft_qdisc() argument
992 if (qdisc == NULL) in dev_graft_qdisc()
993 qdisc = &noop_qdisc; in dev_graft_qdisc()
994 dev_queue->qdisc_sleeping = qdisc; in dev_graft_qdisc()
995 rcu_assign_pointer(dev_queue->qdisc, &noop_qdisc); in dev_graft_qdisc()
1007 struct Qdisc *qdisc; in attach_one_default_qdisc() local
1013 qdisc = qdisc_create_dflt(dev_queue, ops, TC_H_ROOT, NULL); in attach_one_default_qdisc()
1014 if (!qdisc) { in attach_one_default_qdisc()
1019 qdisc->flags |= TCQ_F_ONETXQUEUE | TCQ_F_NOPARENT; in attach_one_default_qdisc()
1020 dev_queue->qdisc_sleeping = qdisc; in attach_one_default_qdisc()
1026 struct Qdisc *qdisc; in attach_default_qdiscs() local
1033 dev->qdisc = txq->qdisc_sleeping; in attach_default_qdiscs()
1034 qdisc_refcount_inc(dev->qdisc); in attach_default_qdiscs()
1036 qdisc = qdisc_create_dflt(txq, &mq_qdisc_ops, TC_H_ROOT, NULL); in attach_default_qdiscs()
1037 if (qdisc) { in attach_default_qdiscs()
1038 dev->qdisc = qdisc; in attach_default_qdiscs()
1039 qdisc->ops->attach(qdisc); in attach_default_qdiscs()
1043 if (dev->qdisc != &noop_qdisc) in attach_default_qdiscs()
1044 qdisc_hash_add(dev->qdisc, false); in attach_default_qdiscs()
1058 rcu_assign_pointer(dev_queue->qdisc, new_qdisc); in transition_one_qdisc()
1074 if (dev->qdisc == &noop_qdisc) in dev_activate()
1098 struct Qdisc *qdisc; in dev_deactivate_queue() local
1100 qdisc = rtnl_dereference(dev_queue->qdisc); in dev_deactivate_queue()
1101 if (qdisc) { in dev_deactivate_queue()
1102 bool nolock = qdisc->flags & TCQ_F_NOLOCK; in dev_deactivate_queue()
1105 spin_lock_bh(&qdisc->seqlock); in dev_deactivate_queue()
1106 spin_lock_bh(qdisc_lock(qdisc)); in dev_deactivate_queue()
1108 if (!(qdisc->flags & TCQ_F_BUILTIN)) in dev_deactivate_queue()
1109 set_bit(__QDISC_STATE_DEACTIVATED, &qdisc->state); in dev_deactivate_queue()
1111 rcu_assign_pointer(dev_queue->qdisc, qdisc_default); in dev_deactivate_queue()
1112 qdisc_reset(qdisc); in dev_deactivate_queue()
1114 spin_unlock_bh(qdisc_lock(qdisc)); in dev_deactivate_queue()
1116 spin_unlock_bh(&qdisc->seqlock); in dev_deactivate_queue()
1151 struct Qdisc *qdisc = dev_queue->qdisc_sleeping; in dev_qdisc_reset() local
1153 if (qdisc) in dev_qdisc_reset()
1154 qdisc_reset(qdisc); in dev_qdisc_reset()
1210 struct Qdisc *qdisc = dev_queue->qdisc_sleeping; in qdisc_change_tx_queue_len() local
1211 const struct Qdisc_ops *ops = qdisc->ops; in qdisc_change_tx_queue_len()
1214 return ops->change_tx_queue_len(qdisc, dev->tx_queue_len); in qdisc_change_tx_queue_len()
1244 struct Qdisc *qdisc = _qdisc; in dev_init_scheduler_queue() local
1246 rcu_assign_pointer(dev_queue->qdisc, qdisc); in dev_init_scheduler_queue()
1247 dev_queue->qdisc_sleeping = qdisc; in dev_init_scheduler_queue()
1248 __skb_queue_head_init(&qdisc->gso_skb); in dev_init_scheduler_queue()
1249 __skb_queue_head_init(&qdisc->skb_bad_txq); in dev_init_scheduler_queue()
1254 dev->qdisc = &noop_qdisc; in dev_init_scheduler()
1266 struct Qdisc *qdisc = dev_queue->qdisc_sleeping; in shutdown_scheduler_queue() local
1269 if (qdisc) { in shutdown_scheduler_queue()
1270 rcu_assign_pointer(dev_queue->qdisc, qdisc_default); in shutdown_scheduler_queue()
1273 qdisc_destroy(qdisc); in shutdown_scheduler_queue()
1282 qdisc_destroy(dev->qdisc); in dev_shutdown()
1283 dev->qdisc = &noop_qdisc; in dev_shutdown()
1361 void mini_qdisc_pair_init(struct mini_Qdisc_pair *miniqp, struct Qdisc *qdisc, in mini_qdisc_pair_init() argument
1364 miniqp->miniq1.cpu_bstats = qdisc->cpu_bstats; in mini_qdisc_pair_init()
1365 miniqp->miniq1.cpu_qstats = qdisc->cpu_qstats; in mini_qdisc_pair_init()
1366 miniqp->miniq2.cpu_bstats = qdisc->cpu_bstats; in mini_qdisc_pair_init()
1367 miniqp->miniq2.cpu_qstats = qdisc->cpu_qstats; in mini_qdisc_pair_init()