On Wed, Nov 01, 2017 at 09:18:03AM +0100, Jiri Pirko wrote: > Wed, Nov 01, 2017 at 03:12:50AM CET, alexei.starovoi...@gmail.com wrote: > >On Tue, Oct 31, 2017 at 04:12:22PM +0100, Jiri Pirko wrote: > >> From: Jiri Pirko <j...@mellanox.com> > >> > >> In sch_handle_egress and sch_handle_ingress tp->q is used only in order > >> to update stats. So stats and filter list are the only things that are > >> needed in clsact qdisc fastpath processing. Introduce new mini_Qdisc > >> struct to hold those items. Also, introduce a helper to swap the > >> mini_Qdisc structures in case filter list head changes. > >> > >> This removes need for tp->q usage without added overhead. > >> > >> Signed-off-by: Jiri Pirko <j...@mellanox.com> > >> --- > >> v2->v3: > >> - Using head change callback to replace miniq pointer every time tp head > >> changes. This eliminates one rcu dereference and makes the claim "without > >> added overhead" valid. > > > >you kidding, right? > >It's still two loads. > > I'm not. > I replace: > > one rcu_dereference_bh(dev->egress_cl_list) > by one rcu_dereference_bh(dev->miniq_egress) > > one dereference cl->q > by one dereference miniq->filter_list > > What do I miss?
that in assembler code they are the same when debug is off ?