forked from Minki/linux
net: sched: remove qdisc->empty for lockless qdisc
As MISSED and DRAINING state are used to indicate a non-empty qdisc, qdisc->empty is not longer needed, so remove it. Acked-by: Jakub Kicinski <kuba@kernel.org> Tested-by: Vladimir Oltean <vladimir.oltean@nxp.com> # flexcan Signed-off-by: Yunsheng Lin <linyunsheng@huawei.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
c4fef01ba4
commit
d3e0f57501
@ -117,8 +117,6 @@ struct Qdisc {
|
||||
spinlock_t busylock ____cacheline_aligned_in_smp;
|
||||
spinlock_t seqlock;
|
||||
|
||||
/* for NOLOCK qdisc, true if there are no enqueued skbs */
|
||||
bool empty;
|
||||
struct rcu_head rcu;
|
||||
|
||||
/* private data */
|
||||
@ -165,7 +163,7 @@ static inline bool qdisc_is_percpu_stats(const struct Qdisc *q)
|
||||
static inline bool qdisc_is_empty(const struct Qdisc *qdisc)
|
||||
{
|
||||
if (qdisc_is_percpu_stats(qdisc))
|
||||
return READ_ONCE(qdisc->empty);
|
||||
return nolock_qdisc_is_empty(qdisc);
|
||||
return !READ_ONCE(qdisc->q.qlen);
|
||||
}
|
||||
|
||||
@ -173,7 +171,7 @@ static inline bool qdisc_run_begin(struct Qdisc *qdisc)
|
||||
{
|
||||
if (qdisc->flags & TCQ_F_NOLOCK) {
|
||||
if (spin_trylock(&qdisc->seqlock))
|
||||
goto nolock_empty;
|
||||
return true;
|
||||
|
||||
/* If the MISSED flag is set, it means other thread has
|
||||
* set the MISSED flag before second spin_trylock(), so
|
||||
@ -195,12 +193,7 @@ static inline bool qdisc_run_begin(struct Qdisc *qdisc)
|
||||
/* Retry again in case other CPU may not see the new flag
|
||||
* after it releases the lock at the end of qdisc_run_end().
|
||||
*/
|
||||
if (!spin_trylock(&qdisc->seqlock))
|
||||
return false;
|
||||
|
||||
nolock_empty:
|
||||
WRITE_ONCE(qdisc->empty, false);
|
||||
return true;
|
||||
return spin_trylock(&qdisc->seqlock);
|
||||
} else if (qdisc_is_running(qdisc)) {
|
||||
return false;
|
||||
}
|
||||
|
@ -725,8 +725,6 @@ retry:
|
||||
need_retry = false;
|
||||
|
||||
goto retry;
|
||||
} else {
|
||||
WRITE_ONCE(qdisc->empty, true);
|
||||
}
|
||||
|
||||
return skb;
|
||||
@ -927,7 +925,6 @@ struct Qdisc *qdisc_alloc(struct netdev_queue *dev_queue,
|
||||
sch->enqueue = ops->enqueue;
|
||||
sch->dequeue = ops->dequeue;
|
||||
sch->dev_queue = dev_queue;
|
||||
sch->empty = true;
|
||||
dev_hold(dev);
|
||||
refcount_set(&sch->refcnt, 1);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user