[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CAAd0S9BDCqw9XZSe=r5fcJuncUagJoJJ0jOe3fB2=UkyXgjozQ@mail.gmail.com>
Date: Wed, 26 Mar 2025 21:00:33 +0100
From: Christian Lamparter <chunkeey@...il.com>
To: Yury Norov <yury.norov@...il.com>
Cc: linux-wireless@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] wifi: carl9170: micro-optimize carl9170_tx_shift_bm()
Hi,
On Wed, Mar 26, 2025 at 4:52 PM Yury Norov <yury.norov@...il.com> wrote:
>
> The function calls bitmap_empty() just before find_first_bit(). Both
> functions are O(N). Because find_first_bit() returns >= nbits in case of
> empty bitmap, the bitmap_empty() test may be avoided.
>
I looked up bitmap_empty():
<https://web.git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/linux/bitmap.h#n423>
apart from the small_const_nbits stuff (which carl9170 likely does not qualify
for since from what I remember it's a 128bits bitmap) the function just does:
| return find_first_bit(src, nbits) == nbits;
so yes, find_first_bit runs twice with same parameters... Unless the
compiler is smart
enough to detect this and (re-)use the intermediate result later. But
I haven't check
if this is the case with any current, old or future compilers. Has anyone?
Anyway, Sure.
> Signed-off-by: Yury Norov <yury.norov@...il.com>
Acked-by: Christian Lamparter <chunkeey@...il.com>
> ---
> drivers/net/wireless/ath/carl9170/tx.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/carl9170/tx.c b/drivers/net/wireless/ath/carl9170/tx.c
> index 0226c31a6cae..b7717f9e1e9b 100644
> --- a/drivers/net/wireless/ath/carl9170/tx.c
> +++ b/drivers/net/wireless/ath/carl9170/tx.c
> @@ -366,8 +366,7 @@ static void carl9170_tx_shift_bm(struct ar9170 *ar,
> if (WARN_ON_ONCE(off >= CARL9170_BAW_BITS))
> return;
>
> - if (!bitmap_empty(tid_info->bitmap, off))
> - off = find_first_bit(tid_info->bitmap, off);
> + off = min(off, find_first_bit(tid_info->bitmap, off));
>
> tid_info->bsn += off;
> tid_info->bsn &= 0x0fff;
> --
> 2.43.0
>
Powered by blists - more mailing lists