Lines Matching refs:qdisc

382 static int noop_enqueue(struct sk_buff *skb, struct Qdisc *qdisc)  in noop_enqueue()  argument
388 static struct sk_buff *noop_dequeue(struct Qdisc *qdisc) in noop_dequeue() argument
403 .qdisc = &noop_qdisc,
430 .qdisc = &noqueue_qdisc,
480 static int pfifo_fast_enqueue(struct sk_buff *skb, struct Qdisc *qdisc) in pfifo_fast_enqueue() argument
482 if (skb_queue_len(&qdisc->q) < qdisc_dev(qdisc)->tx_queue_len) { in pfifo_fast_enqueue()
484 struct pfifo_fast_priv *priv = qdisc_priv(qdisc); in pfifo_fast_enqueue()
488 qdisc->q.qlen++; in pfifo_fast_enqueue()
489 return __qdisc_enqueue_tail(skb, qdisc, list); in pfifo_fast_enqueue()
492 return qdisc_drop(skb, qdisc); in pfifo_fast_enqueue()
495 static struct sk_buff *pfifo_fast_dequeue(struct Qdisc *qdisc) in pfifo_fast_dequeue() argument
497 struct pfifo_fast_priv *priv = qdisc_priv(qdisc); in pfifo_fast_dequeue()
502 struct sk_buff *skb = __qdisc_dequeue_head(qdisc, list); in pfifo_fast_dequeue()
504 qdisc->q.qlen--; in pfifo_fast_dequeue()
514 static struct sk_buff *pfifo_fast_peek(struct Qdisc *qdisc) in pfifo_fast_peek() argument
516 struct pfifo_fast_priv *priv = qdisc_priv(qdisc); in pfifo_fast_peek()
528 static void pfifo_fast_reset(struct Qdisc *qdisc) in pfifo_fast_reset() argument
531 struct pfifo_fast_priv *priv = qdisc_priv(qdisc); in pfifo_fast_reset()
534 __qdisc_reset_queue(qdisc, band2list(priv, prio)); in pfifo_fast_reset()
537 qdisc->qstats.backlog = 0; in pfifo_fast_reset()
538 qdisc->q.qlen = 0; in pfifo_fast_reset()
541 static int pfifo_fast_dump(struct Qdisc *qdisc, struct sk_buff *skb) in pfifo_fast_dump() argument
554 static int pfifo_fast_init(struct Qdisc *qdisc, struct nlattr *opt) in pfifo_fast_init() argument
557 struct pfifo_fast_priv *priv = qdisc_priv(qdisc); in pfifo_fast_init()
563 qdisc->flags |= TCQ_F_CAN_BYPASS; in pfifo_fast_init()
650 void qdisc_reset(struct Qdisc *qdisc) in qdisc_reset() argument
652 const struct Qdisc_ops *ops = qdisc->ops; in qdisc_reset()
655 ops->reset(qdisc); in qdisc_reset()
657 if (qdisc->gso_skb) { in qdisc_reset()
658 kfree_skb_list(qdisc->gso_skb); in qdisc_reset()
659 qdisc->gso_skb = NULL; in qdisc_reset()
660 qdisc->q.qlen = 0; in qdisc_reset()
667 struct Qdisc *qdisc = container_of(head, struct Qdisc, rcu_head); in qdisc_rcu_free() local
669 if (qdisc_is_percpu_stats(qdisc)) { in qdisc_rcu_free()
670 free_percpu(qdisc->cpu_bstats); in qdisc_rcu_free()
671 free_percpu(qdisc->cpu_qstats); in qdisc_rcu_free()
674 kfree((char *) qdisc - qdisc->padded); in qdisc_rcu_free()
677 void qdisc_destroy(struct Qdisc *qdisc) in qdisc_destroy() argument
679 const struct Qdisc_ops *ops = qdisc->ops; in qdisc_destroy()
681 if (qdisc->flags & TCQ_F_BUILTIN || in qdisc_destroy()
682 !atomic_dec_and_test(&qdisc->refcnt)) in qdisc_destroy()
686 qdisc_list_del(qdisc); in qdisc_destroy()
688 qdisc_put_stab(rtnl_dereference(qdisc->stab)); in qdisc_destroy()
690 gen_kill_estimator(&qdisc->bstats, &qdisc->rate_est); in qdisc_destroy()
692 ops->reset(qdisc); in qdisc_destroy()
694 ops->destroy(qdisc); in qdisc_destroy()
697 dev_put(qdisc_dev(qdisc)); in qdisc_destroy()
699 kfree_skb_list(qdisc->gso_skb); in qdisc_destroy()
704 call_rcu(&qdisc->rcu_head, qdisc_rcu_free); in qdisc_destroy()
710 struct Qdisc *qdisc) in dev_graft_qdisc() argument
723 if (qdisc == NULL) in dev_graft_qdisc()
724 qdisc = &noop_qdisc; in dev_graft_qdisc()
725 dev_queue->qdisc_sleeping = qdisc; in dev_graft_qdisc()
726 rcu_assign_pointer(dev_queue->qdisc, &noop_qdisc); in dev_graft_qdisc()
738 struct Qdisc *qdisc = &noqueue_qdisc; in attach_one_default_qdisc() local
741 qdisc = qdisc_create_dflt(dev_queue, in attach_one_default_qdisc()
743 if (!qdisc) { in attach_one_default_qdisc()
748 qdisc->flags |= TCQ_F_ONETXQUEUE | TCQ_F_NOPARENT; in attach_one_default_qdisc()
750 dev_queue->qdisc_sleeping = qdisc; in attach_one_default_qdisc()
756 struct Qdisc *qdisc; in attach_default_qdiscs() local
762 dev->qdisc = txq->qdisc_sleeping; in attach_default_qdiscs()
763 atomic_inc(&dev->qdisc->refcnt); in attach_default_qdiscs()
765 qdisc = qdisc_create_dflt(txq, &mq_qdisc_ops, TC_H_ROOT); in attach_default_qdiscs()
766 if (qdisc) { in attach_default_qdiscs()
767 dev->qdisc = qdisc; in attach_default_qdiscs()
768 qdisc->ops->attach(qdisc); in attach_default_qdiscs()
783 rcu_assign_pointer(dev_queue->qdisc, new_qdisc); in transition_one_qdisc()
799 if (dev->qdisc == &noop_qdisc) in dev_activate()
823 struct Qdisc *qdisc; in dev_deactivate_queue() local
825 qdisc = rtnl_dereference(dev_queue->qdisc); in dev_deactivate_queue()
826 if (qdisc) { in dev_deactivate_queue()
827 spin_lock_bh(qdisc_lock(qdisc)); in dev_deactivate_queue()
829 if (!(qdisc->flags & TCQ_F_BUILTIN)) in dev_deactivate_queue()
830 set_bit(__QDISC_STATE_DEACTIVATED, &qdisc->state); in dev_deactivate_queue()
832 rcu_assign_pointer(dev_queue->qdisc, qdisc_default); in dev_deactivate_queue()
833 qdisc_reset(qdisc); in dev_deactivate_queue()
835 spin_unlock_bh(qdisc_lock(qdisc)); in dev_deactivate_queue()
916 struct Qdisc *qdisc = _qdisc; in dev_init_scheduler_queue() local
918 rcu_assign_pointer(dev_queue->qdisc, qdisc); in dev_init_scheduler_queue()
919 dev_queue->qdisc_sleeping = qdisc; in dev_init_scheduler_queue()
924 dev->qdisc = &noop_qdisc; in dev_init_scheduler()
936 struct Qdisc *qdisc = dev_queue->qdisc_sleeping; in shutdown_scheduler_queue() local
939 if (qdisc) { in shutdown_scheduler_queue()
940 rcu_assign_pointer(dev_queue->qdisc, qdisc_default); in shutdown_scheduler_queue()
943 qdisc_destroy(qdisc); in shutdown_scheduler_queue()
952 qdisc_destroy(dev->qdisc); in dev_shutdown()
953 dev->qdisc = &noop_qdisc; in dev_shutdown()