Lines Matching defs:qdisc

45 	/* Only for !TCQ_F_NOLOCK qdisc. Never access it directly.
96 #define TCQ_F_NOLOCK 0x100 /* qdisc does not require locking */
97 #define TCQ_F_OFFLOADED 0x200 /* qdisc is offloaded to HW */
122 unsigned long state2; /* must be written under qdisc spinlock */
136 static inline void qdisc_refcount_inc(struct Qdisc *qdisc)
138 if (qdisc->flags & TCQ_F_BUILTIN)
140 refcount_inc(&qdisc->refcnt);
143 static inline bool qdisc_refcount_dec_if_one(struct Qdisc *qdisc)
145 if (qdisc->flags & TCQ_F_BUILTIN)
147 return refcount_dec_if_one(&qdisc->refcnt);
150 /* Intended to be used by unlocked users, when concurrent qdisc release is
154 static inline struct Qdisc *qdisc_refcount_inc_nz(struct Qdisc *qdisc)
156 if (qdisc->flags & TCQ_F_BUILTIN)
157 return qdisc;
158 if (refcount_inc_not_zero(&qdisc->refcnt))
159 return qdisc;
163 /* For !TCQ_F_NOLOCK qdisc: callers must either call this within a qdisc
167 static inline bool qdisc_is_running(struct Qdisc *qdisc)
169 if (qdisc->flags & TCQ_F_NOLOCK)
170 return spin_is_locked(&qdisc->seqlock);
171 return test_bit(__QDISC_STATE2_RUNNING, &qdisc->state2);
174 static inline bool nolock_qdisc_is_empty(const struct Qdisc *qdisc)
176 return !(READ_ONCE(qdisc->state) & QDISC_STATE_NON_EMPTY);
184 static inline bool qdisc_is_empty(const struct Qdisc *qdisc)
186 if (qdisc_is_percpu_stats(qdisc))
187 return nolock_qdisc_is_empty(qdisc);
188 return !READ_ONCE(qdisc->q.qlen);
191 /* For !TCQ_F_NOLOCK qdisc, qdisc_run_begin/end() must be invoked with
192 * the qdisc root lock acquired.
194 static inline bool qdisc_run_begin(struct Qdisc *qdisc)
196 if (qdisc->flags & TCQ_F_NOLOCK) {
197 if (spin_trylock(&qdisc->seqlock))
205 if (test_and_set_bit(__QDISC_STATE_MISSED, &qdisc->state))
212 return spin_trylock(&qdisc->seqlock);
214 return !__test_and_set_bit(__QDISC_STATE2_RUNNING, &qdisc->state2);
217 static inline void qdisc_run_end(struct Qdisc *qdisc)
219 if (qdisc->flags & TCQ_F_NOLOCK) {
220 spin_unlock(&qdisc->seqlock);
229 &qdisc->state)))
230 __netif_schedule(qdisc);
232 __clear_bit(__QDISC_STATE2_RUNNING, &qdisc->state2);
236 static inline bool qdisc_may_bulk(const struct Qdisc *qdisc)
238 return qdisc->flags & TCQ_F_ONETXQUEUE;
248 /* Child qdisc manipulation */
543 static inline spinlock_t *qdisc_lock(struct Qdisc *qdisc)
545 return &qdisc->q.lock;
548 static inline struct Qdisc *qdisc_root(const struct Qdisc *qdisc)
550 struct Qdisc *q = rcu_dereference_rtnl(qdisc->dev_queue->qdisc);
555 static inline struct Qdisc *qdisc_root_bh(const struct Qdisc *qdisc)
557 return rcu_dereference_bh(qdisc->dev_queue->qdisc);
560 static inline struct Qdisc *qdisc_root_sleeping(const struct Qdisc *qdisc)
562 return rcu_dereference_rtnl(qdisc->dev_queue->qdisc_sleeping);
565 static inline spinlock_t *qdisc_root_sleeping_lock(const struct Qdisc *qdisc)
567 struct Qdisc *root = qdisc_root_sleeping(qdisc);
573 static inline struct net_device *qdisc_dev(const struct Qdisc *qdisc)
575 return qdisc->dev_queue->dev;
694 struct Qdisc *qdisc);
695 void qdisc_reset(struct Qdisc *qdisc);
696 void qdisc_destroy(struct Qdisc *qdisc);
697 void qdisc_put(struct Qdisc *qdisc);
698 void qdisc_put_unlocked(struct Qdisc *qdisc);
699 void qdisc_tree_reduce_backlog(struct Qdisc *qdisc, int n, int len);
730 void qdisc_free(struct Qdisc *qdisc);
761 struct Qdisc *qdisc;
764 qdisc = rtnl_dereference(netdev_get_tx_queue(dev, i)->qdisc);
765 if (qdisc) {
766 spin_lock_bh(qdisc_lock(qdisc));
767 qdisc_reset(qdisc);
768 spin_unlock_bh(qdisc_lock(qdisc));
781 const struct Qdisc *q = rcu_dereference(txq->qdisc);
800 if (rcu_access_pointer(txq->qdisc) !=
807 /* Is the device using the noop qdisc on all queues? */
814 if (rcu_access_pointer(txq->qdisc) != &noop_qdisc)
825 /* additional qdisc xmit flags (NET_XMIT_MASK in linux/netdevice.h) */
1079 /* Instead of calling kfree_skb() while root qdisc lock is held,
1122 /* generic pseudo peek method for non-work-conserving qdisc */
1168 /* use instead of qdisc->dequeue() for all qdiscs queried with ->peek() */
1345 void mini_qdisc_pair_init(struct mini_Qdisc_pair *miniqp, struct Qdisc *qdisc,
1354 /* Make sure qdisc is no longer in SCHED state. */