Lines Matching refs:qdisc

44 	/* Only for !TCQ_F_NOLOCK qdisc. Never access it directly.
95 #define TCQ_F_NOLOCK 0x100 /* qdisc does not require locking */
96 #define TCQ_F_OFFLOADED 0x200 /* qdisc is offloaded to HW */
120 unsigned long state2; /* must be written under qdisc spinlock */
133 static inline void qdisc_refcount_inc(struct Qdisc *qdisc)
135 if (qdisc->flags & TCQ_F_BUILTIN)
137 refcount_inc(&qdisc->refcnt);
140 static inline bool qdisc_refcount_dec_if_one(struct Qdisc *qdisc)
142 if (qdisc->flags & TCQ_F_BUILTIN)
144 return refcount_dec_if_one(&qdisc->refcnt);
147 /* Intended to be used by unlocked users, when concurrent qdisc release is
151 static inline struct Qdisc *qdisc_refcount_inc_nz(struct Qdisc *qdisc)
153 if (qdisc->flags & TCQ_F_BUILTIN)
154 return qdisc;
155 if (refcount_inc_not_zero(&qdisc->refcnt))
156 return qdisc;
160 /* For !TCQ_F_NOLOCK qdisc: callers must either call this within a qdisc
164 static inline bool qdisc_is_running(struct Qdisc *qdisc)
166 if (qdisc->flags & TCQ_F_NOLOCK)
167 return spin_is_locked(&qdisc->seqlock);
168 return test_bit(__QDISC_STATE2_RUNNING, &qdisc->state2);
171 static inline bool nolock_qdisc_is_empty(const struct Qdisc *qdisc)
173 return !(READ_ONCE(qdisc->state) & QDISC_STATE_NON_EMPTY);
181 static inline bool qdisc_is_empty(const struct Qdisc *qdisc)
183 if (qdisc_is_percpu_stats(qdisc))
184 return nolock_qdisc_is_empty(qdisc);
185 return !READ_ONCE(qdisc->q.qlen);
188 /* For !TCQ_F_NOLOCK qdisc, qdisc_run_begin/end() must be invoked with
189 * the qdisc root lock acquired.
191 static inline bool qdisc_run_begin(struct Qdisc *qdisc)
193 if (qdisc->flags & TCQ_F_NOLOCK) {
194 if (spin_trylock(&qdisc->seqlock))
202 if (test_and_set_bit(__QDISC_STATE_MISSED, &qdisc->state))
209 return spin_trylock(&qdisc->seqlock);
211 return !__test_and_set_bit(__QDISC_STATE2_RUNNING, &qdisc->state2);
214 static inline void qdisc_run_end(struct Qdisc *qdisc)
216 if (qdisc->flags & TCQ_F_NOLOCK) {
217 spin_unlock(&qdisc->seqlock);
226 &qdisc->state)))
227 __netif_schedule(qdisc);
229 __clear_bit(__QDISC_STATE2_RUNNING, &qdisc->state2);
233 static inline bool qdisc_may_bulk(const struct Qdisc *qdisc)
235 return qdisc->flags & TCQ_F_ONETXQUEUE;
250 /* Child qdisc manipulation */
540 static inline spinlock_t *qdisc_lock(struct Qdisc *qdisc)
542 return &qdisc->q.lock;
545 static inline struct Qdisc *qdisc_root(const struct Qdisc *qdisc)
547 struct Qdisc *q = rcu_dereference_rtnl(qdisc->dev_queue->qdisc);
552 static inline struct Qdisc *qdisc_root_bh(const struct Qdisc *qdisc)
554 return rcu_dereference_bh(qdisc->dev_queue->qdisc);
557 static inline struct Qdisc *qdisc_root_sleeping(const struct Qdisc *qdisc)
559 return rcu_dereference_rtnl(qdisc->dev_queue->qdisc_sleeping);
562 static inline spinlock_t *qdisc_root_sleeping_lock(const struct Qdisc *qdisc)
564 struct Qdisc *root = qdisc_root_sleeping(qdisc);
570 static inline struct net_device *qdisc_dev(const struct Qdisc *qdisc)
572 return qdisc->dev_queue->dev;
690 struct Qdisc *qdisc);
691 void qdisc_reset(struct Qdisc *qdisc);
692 void qdisc_destroy(struct Qdisc *qdisc);
693 void qdisc_put(struct Qdisc *qdisc);
694 void qdisc_put_unlocked(struct Qdisc *qdisc);
695 void qdisc_tree_reduce_backlog(struct Qdisc *qdisc, int n, int len);
726 void qdisc_free(struct Qdisc *qdisc);
757 struct Qdisc *qdisc;
760 qdisc = rtnl_dereference(netdev_get_tx_queue(dev, i)->qdisc);
761 if (qdisc) {
762 spin_lock_bh(qdisc_lock(qdisc));
763 qdisc_reset(qdisc);
764 spin_unlock_bh(qdisc_lock(qdisc));
777 const struct Qdisc *q = rcu_dereference(txq->qdisc);
796 if (rcu_access_pointer(txq->qdisc) !=
803 /* Is the device using the noop qdisc on all queues? */
810 if (rcu_access_pointer(txq->qdisc) != &noop_qdisc)
821 /* additional qdisc xmit flags (NET_XMIT_MASK in linux/netdevice.h) */
1044 /* Instead of calling kfree_skb() while root qdisc lock is held,
1087 /* generic pseudo peek method for non-work-conserving qdisc */
1133 /* use instead of qdisc->dequeue() for all qdiscs queried with ->peek() */
1310 void mini_qdisc_pair_init(struct mini_Qdisc_pair *miniqp, struct Qdisc *qdisc,
1319 /* Make sure qdisc is no longer in SCHED state. */