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