[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20251223190846.76ff4dc0@pumpkin>
Date: Tue, 23 Dec 2025 19:08:46 +0000
From: David Laight <david.laight.linux@...il.com>
To: "Yury Norov (NVIDIA)" <yury.norov@...il.com>
Cc: Tony Nguyen <anthony.l.nguyen@...el.com>, Przemek Kitszel
<przemyslaw.kitszel@...el.com>, Andrew Lunn <andrew+netdev@...n.ch>, "David
S. Miller" <davem@...emloft.net>, Eric Dumazet <edumazet@...gle.com>, Jakub
Kicinski <kuba@...nel.org>, Paolo Abeni <pabeni@...hat.com>, Rasmus
Villemoes <linux@...musvillemoes.dk>, Andrew Morton
<akpm@...ux-foundation.org>, intel-wired-lan@...ts.osuosl.org,
netdev@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH 2/3] ice: use bitmap_weighted_xor() in
ice_find_free_recp_res_idx()
On Tue, 23 Dec 2025 11:23:01 -0500
"Yury Norov (NVIDIA)" <yury.norov@...il.com> wrote:
> Use the right helper and save one bitmaps traverse.
It makes no difference here.
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.
Oh, and using u8 and u16 for function parameters, return values and
maths requires extra instructions and is usually a bad idea.
Dvaid
>
> Signed-off-by: Yury Norov (NVIDIA) <yury.norov@...il.com>
> ---
> 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);
> }
>
> /**
Powered by blists - more mailing lists