Subject: Re: [RFC PATCH 10/13] net: sched: lockless support for netif_schedule

From: John Fastabend <[email-masked]>
Date: Wed, 17 Aug 2016 16:17:13 -0700

On 16-08-17 04:01 PM, Eric Dumazet wrote:
> On Wed, 2016-08-17 at 12:37 -0700, John Fastabend wrote:
> 
>> diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c
>> index d10b762..f5b7254 100644
>> --- a/net/sched/sch_generic.c
>> +++ b/net/sched/sch_generic.c
>> @@ -171,6 +171,7 @@ static void try_bulk_dequeue_skb_slow(struct Qdisc *q,
>>  			if (qdisc_is_percpu_stats(q)) {
>>  				qdisc_qstats_cpu_backlog_inc(q, nskb);
>>  				qdisc_qstats_cpu_qlen_inc(q);
>> +				set_thread_flag(TIF_NEED_RESCHED);
>>  			} else {
>>  				qdisc_qstats_backlog_inc(q, nskb);
>>  				q->q.qlen++;
> 
> Hmm... care to elaborate this bit ?
> 
> 
> 

ah dang thats leftover from trying to resolve a skb getting stuck on the
bad_txq_cell from qdisc_enqueue_skb_bad_txq(). You'll notice I added
a __netif_schedule(skb) call in qdisc_enqueue_skb_bad_txq() which
resolves this and the set_thread_flag() here can then just be removed.

.John