Re: [PATCH v2] staging: vt6656: Use ARRAY_SIZE instead of hardcoded size

From: Quentin Deslandes
Date: Tue Mar 24 2020 - 05:55:46 EST


On 03/18/20 18:40:15, Oscar Carter wrote:
> Use ARRAY_SIZE to replace the hardcoded size so we will never have a
> mismatch.
>
> Signed-off-by: Oscar Carter <oscar.carter@xxxxxxx>
> ---
> Changelog v1 -> v2
> - Use ARRAY_SIZE(priv->cck_pwr_tbl) everywhere instead of introducing a new
> variable to hold its value.
>
> drivers/staging/vt6656/main_usb.c | 7 ++++---
> 1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/staging/vt6656/main_usb.c b/drivers/staging/vt6656/main_usb.c
> index 5e48b3ddb94c..acfcc11c3b61 100644
> --- a/drivers/staging/vt6656/main_usb.c
> +++ b/drivers/staging/vt6656/main_usb.c
> @@ -23,6 +23,7 @@
>
> #include <linux/etherdevice.h>
> #include <linux/file.h>
> +#include <linux/kernel.h>
> #include "device.h"
> #include "card.h"
> #include "baseband.h"
> @@ -145,7 +146,7 @@ static int vnt_init_registers(struct vnt_private *priv)
>
> init_cmd->init_class = DEVICE_INIT_COLD;
> init_cmd->exist_sw_net_addr = priv->exist_sw_net_addr;
> - for (ii = 0; ii < 6; ii++)
> + for (ii = 0; ii < ARRAY_SIZE(init_cmd->sw_net_addr); ii++)
> init_cmd->sw_net_addr[ii] = priv->current_net_addr[ii];
> init_cmd->short_retry_limit = priv->short_retry_limit;
> init_cmd->long_retry_limit = priv->long_retry_limit;
> @@ -184,7 +185,7 @@ static int vnt_init_registers(struct vnt_private *priv)
> priv->cck_pwr = priv->eeprom[EEP_OFS_PWR_CCK];
> priv->ofdm_pwr_g = priv->eeprom[EEP_OFS_PWR_OFDMG];
> /* load power table */
> - for (ii = 0; ii < 14; ii++) {
> + for (ii = 0; ii < ARRAY_SIZE(priv->cck_pwr_tbl); ii++) {
> priv->cck_pwr_tbl[ii] =
> priv->eeprom[ii + EEP_OFS_CCK_PWR_TBL];
> if (priv->cck_pwr_tbl[ii] == 0)
> @@ -200,7 +201,7 @@ static int vnt_init_registers(struct vnt_private *priv)
> * original zonetype is USA, but custom zonetype is Europe,
> * then need to recover 12, 13, 14 channels with 11 channel
> */
> - for (ii = 11; ii < 14; ii++) {
> + for (ii = 11; ii < ARRAY_SIZE(priv->cck_pwr_tbl); ii++) {
> priv->cck_pwr_tbl[ii] = priv->cck_pwr_tbl[10];
> priv->ofdm_pwr_tbl[ii] = priv->ofdm_pwr_tbl[10];
> }
> --
> 2.20.1
>

Looks good, however are we certain priv->cck_pwr_tbl and
priv->ofdm_pwr_tbl are always the same size?

What about using a macro for cck_pwr_tbl and ofdm_pwr_tbl size in
device.h? Or a BUILD_BUG() if array's sizes are different? It could be
helpful for future developers to say these arrays must be the same size.

Thanks,
Quentin