Lines Matching refs:qdisc

638 static int noop_enqueue(struct sk_buff *skb, struct Qdisc *qdisc,  in noop_enqueue()  argument
645 static struct sk_buff *noop_dequeue(struct Qdisc *qdisc) in noop_dequeue() argument
660 RCU_POINTER_INITIALIZER(qdisc, &noop_qdisc),
687 static int noqueue_init(struct Qdisc *qdisc, struct nlattr *opt, in noqueue_init() argument
693 qdisc->enqueue = NULL; in noqueue_init()
731 static int pfifo_fast_enqueue(struct sk_buff *skb, struct Qdisc *qdisc, in pfifo_fast_enqueue() argument
735 struct pfifo_fast_priv *priv = qdisc_priv(qdisc); in pfifo_fast_enqueue()
743 if (qdisc_is_percpu_stats(qdisc)) in pfifo_fast_enqueue()
744 return qdisc_drop_cpu(skb, qdisc, to_free); in pfifo_fast_enqueue()
746 return qdisc_drop(skb, qdisc, to_free); in pfifo_fast_enqueue()
749 qdisc_update_stats_at_enqueue(qdisc, pkt_len); in pfifo_fast_enqueue()
753 static struct sk_buff *pfifo_fast_dequeue(struct Qdisc *qdisc) in pfifo_fast_dequeue() argument
755 struct pfifo_fast_priv *priv = qdisc_priv(qdisc); in pfifo_fast_dequeue()
770 qdisc_update_stats_at_dequeue(qdisc, skb); in pfifo_fast_dequeue()
772 READ_ONCE(qdisc->state) & QDISC_STATE_NON_EMPTY) { in pfifo_fast_dequeue()
778 clear_bit(__QDISC_STATE_MISSED, &qdisc->state); in pfifo_fast_dequeue()
779 clear_bit(__QDISC_STATE_DRAINING, &qdisc->state); in pfifo_fast_dequeue()
794 static struct sk_buff *pfifo_fast_peek(struct Qdisc *qdisc) in pfifo_fast_peek() argument
796 struct pfifo_fast_priv *priv = qdisc_priv(qdisc); in pfifo_fast_peek()
809 static void pfifo_fast_reset(struct Qdisc *qdisc) in pfifo_fast_reset() argument
812 struct pfifo_fast_priv *priv = qdisc_priv(qdisc); in pfifo_fast_reset()
828 if (qdisc_is_percpu_stats(qdisc)) { in pfifo_fast_reset()
832 q = per_cpu_ptr(qdisc->cpu_qstats, i); in pfifo_fast_reset()
839 static int pfifo_fast_dump(struct Qdisc *qdisc, struct sk_buff *skb) in pfifo_fast_dump() argument
852 static int pfifo_fast_init(struct Qdisc *qdisc, struct nlattr *opt, in pfifo_fast_init() argument
855 unsigned int qlen = qdisc_dev(qdisc)->tx_queue_len; in pfifo_fast_init()
856 struct pfifo_fast_priv *priv = qdisc_priv(qdisc); in pfifo_fast_init()
873 qdisc->flags |= TCQ_F_CAN_BYPASS; in pfifo_fast_init()
1028 void qdisc_reset(struct Qdisc *qdisc) in qdisc_reset() argument
1030 const struct Qdisc_ops *ops = qdisc->ops; in qdisc_reset()
1032 trace_qdisc_reset(qdisc); in qdisc_reset()
1035 ops->reset(qdisc); in qdisc_reset()
1037 __skb_queue_purge(&qdisc->gso_skb); in qdisc_reset()
1038 __skb_queue_purge(&qdisc->skb_bad_txq); in qdisc_reset()
1040 qdisc->q.qlen = 0; in qdisc_reset()
1041 qdisc->qstats.backlog = 0; in qdisc_reset()
1045 void qdisc_free(struct Qdisc *qdisc) in qdisc_free() argument
1047 if (qdisc_is_percpu_stats(qdisc)) { in qdisc_free()
1048 free_percpu(qdisc->cpu_bstats); in qdisc_free()
1049 free_percpu(qdisc->cpu_qstats); in qdisc_free()
1052 kfree(qdisc); in qdisc_free()
1062 static void __qdisc_destroy(struct Qdisc *qdisc) in __qdisc_destroy() argument
1064 const struct Qdisc_ops *ops = qdisc->ops; in __qdisc_destroy()
1067 qdisc_hash_del(qdisc); in __qdisc_destroy()
1069 qdisc_put_stab(rtnl_dereference(qdisc->stab)); in __qdisc_destroy()
1071 gen_kill_estimator(&qdisc->rate_est); in __qdisc_destroy()
1073 qdisc_reset(qdisc); in __qdisc_destroy()
1076 ops->destroy(qdisc); in __qdisc_destroy()
1078 lockdep_unregister_key(&qdisc->root_lock_key); in __qdisc_destroy()
1080 netdev_put(qdisc_dev(qdisc), &qdisc->dev_tracker); in __qdisc_destroy()
1082 trace_qdisc_destroy(qdisc); in __qdisc_destroy()
1084 call_rcu(&qdisc->rcu, qdisc_free_cb); in __qdisc_destroy()
1087 void qdisc_destroy(struct Qdisc *qdisc) in qdisc_destroy() argument
1089 if (qdisc->flags & TCQ_F_BUILTIN) in qdisc_destroy()
1092 __qdisc_destroy(qdisc); in qdisc_destroy()
1095 void qdisc_put(struct Qdisc *qdisc) in qdisc_put() argument
1097 if (!qdisc) in qdisc_put()
1100 if (qdisc->flags & TCQ_F_BUILTIN || in qdisc_put()
1101 !refcount_dec_and_test(&qdisc->refcnt)) in qdisc_put()
1104 __qdisc_destroy(qdisc); in qdisc_put()
1113 void qdisc_put_unlocked(struct Qdisc *qdisc) in qdisc_put_unlocked() argument
1115 if (qdisc->flags & TCQ_F_BUILTIN || in qdisc_put_unlocked()
1116 !refcount_dec_and_rtnl_lock(&qdisc->refcnt)) in qdisc_put_unlocked()
1119 __qdisc_destroy(qdisc); in qdisc_put_unlocked()
1126 struct Qdisc *qdisc) in dev_graft_qdisc() argument
1135 if (qdisc == NULL) in dev_graft_qdisc()
1136 qdisc = &noop_qdisc; in dev_graft_qdisc()
1137 rcu_assign_pointer(dev_queue->qdisc_sleeping, qdisc); in dev_graft_qdisc()
1138 rcu_assign_pointer(dev_queue->qdisc, &noop_qdisc); in dev_graft_qdisc()
1150 struct Qdisc *qdisc = rtnl_dereference(dev_queue->qdisc_sleeping); in shutdown_scheduler_queue() local
1153 if (qdisc) { in shutdown_scheduler_queue()
1154 rcu_assign_pointer(dev_queue->qdisc, qdisc_default); in shutdown_scheduler_queue()
1157 qdisc_put(qdisc); in shutdown_scheduler_queue()
1165 struct Qdisc *qdisc; in attach_one_default_qdisc() local
1173 qdisc = qdisc_create_dflt(dev_queue, ops, TC_H_ROOT, NULL); in attach_one_default_qdisc()
1174 if (!qdisc) in attach_one_default_qdisc()
1178 qdisc->flags |= TCQ_F_ONETXQUEUE | TCQ_F_NOPARENT; in attach_one_default_qdisc()
1179 rcu_assign_pointer(dev_queue->qdisc_sleeping, qdisc); in attach_one_default_qdisc()
1185 struct Qdisc *qdisc; in attach_default_qdiscs() local
1192 qdisc = rtnl_dereference(txq->qdisc_sleeping); in attach_default_qdiscs()
1193 rcu_assign_pointer(dev->qdisc, qdisc); in attach_default_qdiscs()
1194 qdisc_refcount_inc(qdisc); in attach_default_qdiscs()
1196 qdisc = qdisc_create_dflt(txq, &mq_qdisc_ops, TC_H_ROOT, NULL); in attach_default_qdiscs()
1197 if (qdisc) { in attach_default_qdiscs()
1198 rcu_assign_pointer(dev->qdisc, qdisc); in attach_default_qdiscs()
1199 qdisc->ops->attach(qdisc); in attach_default_qdiscs()
1202 qdisc = rtnl_dereference(dev->qdisc); in attach_default_qdiscs()
1205 if (qdisc == &noop_qdisc) { in attach_default_qdiscs()
1211 qdisc = rtnl_dereference(txq->qdisc_sleeping); in attach_default_qdiscs()
1212 rcu_assign_pointer(dev->qdisc, qdisc); in attach_default_qdiscs()
1213 qdisc_refcount_inc(qdisc); in attach_default_qdiscs()
1218 if (qdisc != &noop_qdisc) in attach_default_qdiscs()
1219 qdisc_hash_add(qdisc, false); in attach_default_qdiscs()
1233 rcu_assign_pointer(dev_queue->qdisc, new_qdisc); in transition_one_qdisc()
1249 if (rtnl_dereference(dev->qdisc) == &noop_qdisc) in dev_activate()
1268 static void qdisc_deactivate(struct Qdisc *qdisc) in qdisc_deactivate() argument
1270 if (qdisc->flags & TCQ_F_BUILTIN) in qdisc_deactivate()
1273 set_bit(__QDISC_STATE_DEACTIVATED, &qdisc->state); in qdisc_deactivate()
1281 struct Qdisc *qdisc; in dev_deactivate_queue() local
1283 qdisc = rtnl_dereference(dev_queue->qdisc); in dev_deactivate_queue()
1284 if (qdisc) { in dev_deactivate_queue()
1285 qdisc_deactivate(qdisc); in dev_deactivate_queue()
1286 rcu_assign_pointer(dev_queue->qdisc, qdisc_default); in dev_deactivate_queue()
1294 struct Qdisc *qdisc; in dev_reset_queue() local
1297 qdisc = rtnl_dereference(dev_queue->qdisc_sleeping); in dev_reset_queue()
1298 if (!qdisc) in dev_reset_queue()
1301 nolock = qdisc->flags & TCQ_F_NOLOCK; in dev_reset_queue()
1304 spin_lock_bh(&qdisc->seqlock); in dev_reset_queue()
1305 spin_lock_bh(qdisc_lock(qdisc)); in dev_reset_queue()
1307 qdisc_reset(qdisc); in dev_reset_queue()
1309 spin_unlock_bh(qdisc_lock(qdisc)); in dev_reset_queue()
1311 clear_bit(__QDISC_STATE_MISSED, &qdisc->state); in dev_reset_queue()
1312 clear_bit(__QDISC_STATE_DRAINING, &qdisc->state); in dev_reset_queue()
1313 spin_unlock_bh(&qdisc->seqlock); in dev_reset_queue()
1404 struct Qdisc *qdisc = rtnl_dereference(dev_queue->qdisc_sleeping); in qdisc_change_tx_queue_len() local
1405 const struct Qdisc_ops *ops = qdisc->ops; in qdisc_change_tx_queue_len()
1408 return ops->change_tx_queue_len(qdisc, dev->tx_queue_len); in qdisc_change_tx_queue_len()
1415 struct Qdisc *qdisc = rtnl_dereference(dev->qdisc); in dev_qdisc_change_real_num_tx() local
1417 if (qdisc->ops->change_real_num_tx) in dev_qdisc_change_real_num_tx()
1418 qdisc->ops->change_real_num_tx(qdisc, new_real_tx); in dev_qdisc_change_real_num_tx()
1425 struct Qdisc *qdisc; in mq_change_real_num_tx() local
1429 qdisc = rtnl_dereference(netdev_get_tx_queue(dev, i)->qdisc_sleeping); in mq_change_real_num_tx()
1433 if (qdisc != &noop_qdisc && !qdisc->handle) in mq_change_real_num_tx()
1434 qdisc_hash_del(qdisc); in mq_change_real_num_tx()
1437 qdisc = rtnl_dereference(netdev_get_tx_queue(dev, i)->qdisc_sleeping); in mq_change_real_num_tx()
1438 if (qdisc != &noop_qdisc && !qdisc->handle) in mq_change_real_num_tx()
1439 qdisc_hash_add(qdisc, false); in mq_change_real_num_tx()
1471 struct Qdisc *qdisc = _qdisc; in dev_init_scheduler_queue() local
1473 rcu_assign_pointer(dev_queue->qdisc, qdisc); in dev_init_scheduler_queue()
1474 rcu_assign_pointer(dev_queue->qdisc_sleeping, qdisc); in dev_init_scheduler_queue()
1479 rcu_assign_pointer(dev->qdisc, &noop_qdisc); in dev_init_scheduler()
1492 qdisc_put(rtnl_dereference(dev->qdisc)); in dev_shutdown()
1493 rcu_assign_pointer(dev->qdisc, &noop_qdisc); in dev_shutdown()
1607 void mini_qdisc_pair_init(struct mini_Qdisc_pair *miniqp, struct Qdisc *qdisc, in mini_qdisc_pair_init() argument
1610 miniqp->miniq1.cpu_bstats = qdisc->cpu_bstats; in mini_qdisc_pair_init()
1611 miniqp->miniq1.cpu_qstats = qdisc->cpu_qstats; in mini_qdisc_pair_init()
1612 miniqp->miniq2.cpu_bstats = qdisc->cpu_bstats; in mini_qdisc_pair_init()
1613 miniqp->miniq2.cpu_qstats = qdisc->cpu_qstats; in mini_qdisc_pair_init()