On Thu, Sep 3, 2020 at 10:08 PM John Fastabend <john.fastab...@gmail.com> wrote: > Maybe this would unlock us, > > diff --git a/net/core/dev.c b/net/core/dev.c > index 7df6c9617321..9b09429103f1 100644 > --- a/net/core/dev.c > +++ b/net/core/dev.c > @@ -3749,7 +3749,7 @@ static inline int __dev_xmit_skb(struct sk_buff *skb, > struct Qdisc *q, > > if (q->flags & TCQ_F_NOLOCK) { > rc = q->enqueue(skb, q, &to_free) & NET_XMIT_MASK; > - qdisc_run(q); > + __qdisc_run(q); > > if (unlikely(to_free)) > kfree_skb_list(to_free); > > > Per other thread we also need the state deactivated check added > back.
I guess no, because pfifo_dequeue() seems to require q->seqlock, according to comments in qdisc_run(), so we can not just get rid of qdisc_run_begin()/qdisc_run_end() here. Thanks.