RE: [PATCH 1/4] wifi: rtw88: rtw8822c: convert DAC IQ buffers and signatures to s32

Ping-Ke Shih <[email protected]>
Newsgroups org.kernel.vger.linux-wireless,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
Arsenii Pashchenko <[email protected]> wrote:
> Prepare the DAC IQ calibration path for signed math by converting the
> temporary stack arrays 'iv' and 'qv' from u32 to s32. Update all
> internal function signatures to accept s32 pointers.
> 
> To guarantee bisectability, wrap the existing unsigned logic in
> temporary casts to u32. This maintains identical mathematical behavior
> and avoids any compiler sign-compare warnings.
> 
> Signed-off-by: Arsenii Pashchenko <[email protected]>
> ---
>  drivers/net/wireless/realtek/rtw88/rtw8822c.c | 49 +++++++++++--------
>  1 file changed, 28 insertions(+), 21 deletions(-)
> 
> diff --git a/drivers/net/wireless/realtek/rtw88/rtw8822c.c
> b/drivers/net/wireless/realtek/rtw88/rtw8822c.c
> index 244c80264..896e3e7b9 100644
> --- a/drivers/net/wireless/realtek/rtw88/rtw8822c.c
> +++ b/drivers/net/wireless/realtek/rtw88/rtw8822c.c
> @@ -153,9 +153,12 @@ static void rtw8822c_dac_restore_reg(struct rtw_dev *rtwdev,
>         }
>  }
> 
> -static void rtw8822c_rf_minmax_cmp(struct rtw_dev *rtwdev, u32 value,
> -                                  u32 *min, u32 *max)
> +static void rtw8822c_rf_minmax_cmp(struct rtw_dev *rtwdev, s32 value_s32,
> +                                  s32 *min_s32, s32 *max_s32)
>  {
> +       u32 value = (u32)value_s32;
> +       u32 *min = (u32 *)min_s32;
> +       u32 *max = (u32 *)max_s32;

blank line

Also, it is possible to avoid all casting from s32 to u32, even just a
transition patch? I guess compiler can silently ignore this, and it'd
be much easier to review. Otherwise, I need to check if you remove
these casting clearly. 

>         if (value >= 0x200) {
>                 if (*min >= 0x200) {
>                         if (*min > value)
> @@ -182,8 +185,10 @@ static void rtw8822c_rf_minmax_cmp(struct rtw_dev *rtwdev, u32 value,
>         }
>  }
> 
> -static void __rtw8822c_dac_iq_sort(struct rtw_dev *rtwdev, u32 *v1, u32 *v2)
> +static void __rtw8822c_dac_iq_sort(struct rtw_dev *rtwdev, s32 *v1_s32, s32 *v2_s32)
>  {
> +       u32 *v1 = (u32 *)v1_s32;
> +       u32 *v2 = (u32 *)v2_s32;

blank line

>         if (*v1 >= 0x200 && *v2 >= 0x200) {
>                 if (*v1 > *v2)
>                         swap(*v1, *v2);

[...]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.