On Tue, Dec 23, 2025 at 07:08:46PM +0000, David Laight wrote: > On Tue, 23 Dec 2025 11:23:01 -0500 > "Yury Norov (NVIDIA)" <[email protected]> wrote: > > > Use the right helper and save one bitmaps traverse. > > It makes no difference here.
No it makes. > The bitmap has 48 entries and is just a single 'long' on 64bit. > It is also already in a very slow path that has iterated all the > 'set' bit of two bitmaps. > > The code is also pretty convoluted and confusing already. > One of the other bitmaps has 64 entries, recoding using u64 would > make it a bit more readable. > > Doing the 'weight' here is also just optimising for failure. We've introduced bitmap_weighted_or() recently, and now we need to add siblings to the new sub-class. Regardless of performance impact in this case, having a dedicated helper for a typical operations saves a lot in debugging. This is proven by decades of code development. > Oh, and using u8 and u16 for function parameters, return values and > maths requires extra instructions and is usually a bad idea. Changing function signatures is not the patch purpose. Feel free to submit a separate patch. > Dvaid > > > > > Signed-off-by: Yury Norov (NVIDIA) <[email protected]> > > --- > > drivers/net/ethernet/intel/ice/ice_switch.c | 4 +--- > > 1 file changed, 1 insertion(+), 3 deletions(-) > > > > diff --git a/drivers/net/ethernet/intel/ice/ice_switch.c > > b/drivers/net/ethernet/intel/ice/ice_switch.c > > index 84848f0123e7..903417477929 100644 > > --- a/drivers/net/ethernet/intel/ice/ice_switch.c > > +++ b/drivers/net/ethernet/intel/ice/ice_switch.c > > @@ -4984,10 +4984,8 @@ ice_find_free_recp_res_idx(struct ice_hw *hw, const > > unsigned long *profiles, > > hw->switch_info->recp_list[bit].res_idxs, > > ICE_MAX_FV_WORDS); > > > > - bitmap_xor(free_idx, used_idx, possible_idx, ICE_MAX_FV_WORDS); > > - > > /* return number of free indexes */ > > - return (u16)bitmap_weight(free_idx, ICE_MAX_FV_WORDS); > > + return (u16)bitmap_weighted_xor(free_idx, used_idx, possible_idx, > > ICE_MAX_FV_WORDS); > > } > > > > /**
