Re: [RFC net-next 1/6] netdevice: Add napi_affinity_no_change

From: Joe Damato
Date: Tue Aug 13 2024 - 05:13:02 EST


On Mon, Aug 12, 2024 at 03:36:42PM -0700, Stanislav Fomichev wrote:
> On 08/12, Joe Damato wrote:
> > On Mon, Aug 12, 2024 at 01:23:27PM -0700, Stanislav Fomichev wrote:
> > > On 08/12, Joe Damato wrote:
> > > > Several drivers have their own, very similar, implementations of
> > > > determining if IRQ affinity has changed. Create napi_affinity_no_change
> > > > to centralize this logic in the core.
> > > >
> > > > This will be used in following commits for various drivers to eliminate
> > > > duplicated code.
> > > >

[...]

> > > > +bool napi_affinity_no_change(unsigned int irq)
> > > > +{
> > > > + int cpu_curr = smp_processor_id();
> > > > + const struct cpumask *aff_mask;
> > > > +
> > >
> > > [..]
> > >
> > > > + aff_mask = irq_get_effective_affinity_mask(irq);
> > >
> > > Most drivers don't seem to call this on every napi_poll (and
> > > cache the aff_mask somewhere instead). Should we try to keep this
> > > out of the past path as well?
> >
> > Hm, I see what you mean. It looks like only gve calls it on every
> > poll, while the others use a cached value.
> >
> > Maybe a better solution is to:
> > 1. Have the helper take the cached affinity mask from the driver
> > and return true/false.
> > 2. Update gve to cache the mask (like the other 4 are doing).
>
> SG! GVE is definitely the outlier here.

OK, I'll hack on that for rfcv2 and see what it looks like. Thanks
for the suggestion.

Hopefully the maintainers (or other folks) will chime in on whether
or not I should submit fixes for patches 4 - 6 for the type mismatch
stuff first or just handle it all together.