On 06.09.2018 11:30, Eric Dumazet wrote:
>
>
> On 09/06/2018 12:58 AM, Vlad Buslov wrote:
>
> ...
>
>> diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h
>> index 18e22a5a6550..239c73f29471 100644
>> --- a/include/net/sch_generic.h
>> +++ b/include/net/sch_generic.h
>> @@ -90,6 +90,7 @@ struct Qdisc {
>> struct gnet_stats_queue __percpu *cpu_qstats;
>> int padded;
>> refcount_t refcnt;
>> + struct rcu_head rcu;
>>
>> /*
>> * For performance sake on SMP, we put highly modified fields at the end
>
> Probably better to move this at the end of struct Qdisc,
> not risking unexpected performance regressions in fast path.
Do you mean regressions on UP? On SMP it looks like this field
fits in the unused gap created by:
struct sk_buff_head gso_skb ____cacheline_aligned_in_smp;
Kirill