lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <78b4ca2a-9448-4451-8e25-c57306af38e9@kernel.org>
Date: Thu, 12 Sep 2024 10:07:27 +0300
From: Roger Quadros <rogerq@...nel.org>
To: Simon Horman <horms@...nel.org>, "David S. Miller" <davem@...emloft.net>,
 Eric Dumazet <edumazet@...gle.com>, Jakub Kicinski <kuba@...nel.org>,
 Paolo Abeni <pabeni@...hat.com>, Siddharth Vadapalli <s-vadapalli@...com>,
 Nathan Chancellor <nathan@...nel.org>,
 Nick Desaulniers <ndesaulniers@...gle.com>, Bill Wendling
 <morbo@...gle.com>, Justin Stitt <justinstitt@...gle.com>
Cc: netdev@...r.kernel.org, linux-omap@...r.kernel.org, llvm@...ts.linux.dev
Subject: Re: [PATCH net-next 3/3] net: ethernet: ti: cpsw_ale: Remove unused
 accessor functions

Hi Simon,

On 10/09/2024 10:17, Simon Horman wrote:
> W=1 builds flag that some accessor functions for ALE fields are unused.
> 
> Address this by splitting up the macros used to define these
> accessors to allow only those that are used to be declared.
> 
> The warnings are verbose, but for example, the mcast_state case is
> flagged by clang-18 as:
> 
> .../cpsw_ale.c:220:1: warning: unused function 'cpsw_ale_get_mcast_state' [-Wunused-function]
>   220 | DEFINE_ALE_FIELD(mcast_state,           62,     2)
>       | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> .../cpsw_ale.c:145:19: note: expanded from macro 'DEFINE_ALE_FIELD'
>   145 | static inline int cpsw_ale_get_##name(u32 *ale_entry)                   \
>       |                   ^~~~~~~~~~~~~~~~~~~
> <scratch space>:196:1: note: expanded from here
>   196 | cpsw_ale_get_mcast_state
>       | ^~~~~~~~~~~~~~~~~~~~~~~~
> 
> Compile tested only.
> No functional change intended.
> 
> Signed-off-by: Simon Horman <horms@...nel.org>
> ---
>  drivers/net/ethernet/ti/cpsw_ale.c | 30 +++++++++++++++++++++---------
>  1 file changed, 21 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/net/ethernet/ti/cpsw_ale.c b/drivers/net/ethernet/ti/cpsw_ale.c
> index 64bf22cd860c..d37b4ddd6787 100644
> --- a/drivers/net/ethernet/ti/cpsw_ale.c
> +++ b/drivers/net/ethernet/ti/cpsw_ale.c
> @@ -141,27 +141,39 @@ static inline void cpsw_ale_set_field(u32 *ale_entry, u32 start, u32 bits,
>  	ale_entry[idx] |=  (value << start);
>  }
>  
> -#define DEFINE_ALE_FIELD(name, start, bits)				\
> +#define DEFINE_ALE_FIELD_GET(name, start, bits)				\
>  static inline int cpsw_ale_get_##name(u32 *ale_entry)			\
>  {									\
>  	return cpsw_ale_get_field(ale_entry, start, bits);		\
> -}									\
> +}
> +
> +#define DEFINE_ALE_FIELD_SET(name, start, bits)				\
>  static inline void cpsw_ale_set_##name(u32 *ale_entry, u32 value)	\
>  {									\
>  	cpsw_ale_set_field(ale_entry, start, bits, value);		\
>  }
>  
> -#define DEFINE_ALE_FIELD1(name, start)					\
> +#define DEFINE_ALE_FIELD(name, start, bits)				\
> +DEFINE_ALE_FIELD_GET(name, start, bits)					\
> +DEFINE_ALE_FIELD_SET(name, start, bits)
> +
> +#define DEFINE_ALE_FIELD1_GET(name, start)				\
>  static inline int cpsw_ale_get_##name(u32 *ale_entry, u32 bits)		\
>  {									\
>  	return cpsw_ale_get_field(ale_entry, start, bits);		\
> -}									\
> +}
> +
> +#define DEFINE_ALE_FIELD1_SET(name, start)				\
>  static inline void cpsw_ale_set_##name(u32 *ale_entry, u32 value,	\
>  		u32 bits)						\
>  {									\
>  	cpsw_ale_set_field(ale_entry, start, bits, value);		\
>  }
>  
> +#define DEFINE_ALE_FIELD1(name, start)					\
> +DEFINE_ALE_FIELD1_GET(name, start)					\
> +DEFINE_ALE_FIELD1_SET(name, start)
> +
>  enum {
>  	ALE_ENT_VID_MEMBER_LIST = 0,
>  	ALE_ENT_VID_UNREG_MCAST_MSK,
> @@ -217,14 +229,14 @@ static const struct ale_entry_fld vlan_entry_k3_cpswxg[] = {
>  
>  DEFINE_ALE_FIELD(entry_type,		60,	2)
>  DEFINE_ALE_FIELD(vlan_id,		48,	12)
> -DEFINE_ALE_FIELD(mcast_state,		62,	2)
> +DEFINE_ALE_FIELD_SET(mcast_state,	62,	2)

I don't understand why we need separate macros for GET and SET.
The original intent was to use one macro for both.

Otherwise we will have to add DEFINE_ALE_FIELD/1_SET to all the fields.

>  DEFINE_ALE_FIELD1(port_mask,		66)
>  DEFINE_ALE_FIELD(super,			65,	1)
>  DEFINE_ALE_FIELD(ucast_type,		62,     2)
> -DEFINE_ALE_FIELD1(port_num,		66)
> -DEFINE_ALE_FIELD(blocked,		65,     1)
> -DEFINE_ALE_FIELD(secure,		64,     1)
> -DEFINE_ALE_FIELD(mcast,			40,	1)
> +DEFINE_ALE_FIELD1_SET(port_num,		66)
> +DEFINE_ALE_FIELD_SET(blocked,		65,     1)
> +DEFINE_ALE_FIELD_SET(secure,		64,     1)
> +DEFINE_ALE_FIELD_GET(mcast,		40,	1)
>  
>  #define NU_VLAN_UNREG_MCAST_IDX	1
>  
> 

-- 
cheers,
-roger

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ