On 2020/9/2 15:32, Eric Dumazet wrote: > > > On 9/1/20 11:34 PM, Yunsheng Lin wrote: > >> >> I am not familiar with TCQ_F_CAN_BYPASS. >> From my understanding, the problem is that there is no order between >> qdisc enqueuing and qdisc reset. > > Thw qdisc_reset() should be done after rcu grace period, when there is > guarantee no enqueue is in progress. > > qdisc_destroy() already has a qdisc_reset() call, I am not sure why > qdisc_deactivate() is also calling qdisc_reset()
That is a good point. Do we allow skb left in qdisc when the qdisc is deactivated state? And qdisc_destroy() is not always called after qdisc_deactivate() is called. If we allow skb left in qdisc when the qdisc is deactivated state, then it is huge change of semantics for qdisc_deactivate(), and I am not sure how many cases will affected by this change. > > >