On 2/22/2026 9:59 AM, Yury Norov wrote:
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.

I agree, performance issues aside, I could see the utility in having a combined helper. It makes is a little cleaner and removes a point for introducing problems. Assuming there are no objections, could you resend the series? It'll be easier than digging back to get these.

Thanks,
Tony

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);
  }
/**

Reply via email to