netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] pktgen: avoid unused-const-variable warning
@ 2025-02-25  8:57 Arnd Bergmann
  2025-02-26 18:17 ` Peter Seiderer
  2025-02-27 12:10 ` patchwork-bot+netdevbpf
  0 siblings, 2 replies; 6+ messages in thread
From: Arnd Bergmann @ 2025-02-25  8:57 UTC (permalink / raw)
  To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni
  Cc: Arnd Bergmann, Simon Horman, Peter Seiderer, netdev, linux-kernel

From: Arnd Bergmann <arnd@arndb.de>

When extra warnings are enable, there are configurations that build
pktgen without CONFIG_XFRM, which leaves a static const variable unused:

net/core/pktgen.c:213:1: error: unused variable 'F_IPSEC' [-Werror,-Wunused-const-variable]
  213 | PKT_FLAGS
      | ^~~~~~~~~
net/core/pktgen.c:197:2: note: expanded from macro 'PKT_FLAGS'
  197 |         pf(IPSEC)               /* ipsec on for flows */                \
      |         ^~~~~~~~~

This could be marked as __maybe_unused, or by making the one use visible
to the compiler by slightly rearranging the #ifdef blocks. The second
variant looks slightly nicer here, so use that.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 net/core/pktgen.c | 9 ++-------
 1 file changed, 2 insertions(+), 7 deletions(-)

diff --git a/net/core/pktgen.c b/net/core/pktgen.c
index 55064713223e..402e01a2ce19 100644
--- a/net/core/pktgen.c
+++ b/net/core/pktgen.c
@@ -158,9 +158,7 @@
 #include <net/udp.h>
 #include <net/ip6_checksum.h>
 #include <net/addrconf.h>
-#ifdef CONFIG_XFRM
 #include <net/xfrm.h>
-#endif
 #include <net/netns/generic.h>
 #include <asm/byteorder.h>
 #include <linux/rcupdate.h>
@@ -2363,13 +2361,13 @@ static inline int f_pick(struct pktgen_dev *pkt_dev)
 }
 
 
-#ifdef CONFIG_XFRM
 /* If there was already an IPSEC SA, we keep it as is, else
  * we go look for it ...
 */
 #define DUMMY_MARK 0
 static void get_ipsec_sa(struct pktgen_dev *pkt_dev, int flow)
 {
+#ifdef CONFIG_XFRM
 	struct xfrm_state *x = pkt_dev->flows[flow].x;
 	struct pktgen_net *pn = net_generic(dev_net(pkt_dev->odev), pg_net_id);
 	if (!x) {
@@ -2395,11 +2393,10 @@ static void get_ipsec_sa(struct pktgen_dev *pkt_dev, int flow)
 		}
 
 	}
-}
 #endif
+}
 static void set_cur_queue_map(struct pktgen_dev *pkt_dev)
 {
-
 	if (pkt_dev->flags & F_QUEUE_MAP_CPU)
 		pkt_dev->cur_queue_map = smp_processor_id();
 
@@ -2574,10 +2571,8 @@ static void mod_cur_headers(struct pktgen_dev *pkt_dev)
 				pkt_dev->flows[flow].flags |= F_INIT;
 				pkt_dev->flows[flow].cur_daddr =
 				    pkt_dev->cur_daddr;
-#ifdef CONFIG_XFRM
 				if (pkt_dev->flags & F_IPSEC)
 					get_ipsec_sa(pkt_dev, flow);
-#endif
 				pkt_dev->nflows++;
 			}
 		}
-- 
2.39.5


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH] pktgen: avoid unused-const-variable warning
  2025-02-25  8:57 [PATCH] pktgen: avoid unused-const-variable warning Arnd Bergmann
@ 2025-02-26 18:17 ` Peter Seiderer
  2025-02-27 11:35   ` Paolo Abeni
  2025-02-27 12:10 ` patchwork-bot+netdevbpf
  1 sibling, 1 reply; 6+ messages in thread
From: Peter Seiderer @ 2025-02-26 18:17 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Arnd Bergmann, Simon Horman, netdev, linux-kernel

Hello Arnd,

On Tue, 25 Feb 2025 09:57:14 +0100, Arnd Bergmann <arnd@kernel.org> wrote:

> From: Arnd Bergmann <arnd@arndb.de>
>
> When extra warnings are enable, there are configurations that build
> pktgen without CONFIG_XFRM, which leaves a static const variable unused:
>
> net/core/pktgen.c:213:1: error: unused variable 'F_IPSEC' [-Werror,-Wunused-const-variable]
>   213 | PKT_FLAGS
>       | ^~~~~~~~~
> net/core/pktgen.c:197:2: note: expanded from macro 'PKT_FLAGS'
>   197 |         pf(IPSEC)               /* ipsec on for flows */                \
>       |         ^~~~~~~~~
>
> This could be marked as __maybe_unused, or by making the one use visible
> to the compiler by slightly rearranging the #ifdef blocks. The second
> variant looks slightly nicer here, so use that.
>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
>  net/core/pktgen.c | 9 ++-------
>  1 file changed, 2 insertions(+), 7 deletions(-)
>
> diff --git a/net/core/pktgen.c b/net/core/pktgen.c
> index 55064713223e..402e01a2ce19 100644
> --- a/net/core/pktgen.c
> +++ b/net/core/pktgen.c
> @@ -158,9 +158,7 @@
>  #include <net/udp.h>
>  #include <net/ip6_checksum.h>
>  #include <net/addrconf.h>
> -#ifdef CONFIG_XFRM
>  #include <net/xfrm.h>
> -#endif

This ifdef/endif can be kept (as the xfrm stuff is still not used)...

>  #include <net/netns/generic.h>
>  #include <asm/byteorder.h>
>  #include <linux/rcupdate.h>
> @@ -2363,13 +2361,13 @@ static inline int f_pick(struct pktgen_dev *pkt_dev)
>  }
>
>
> -#ifdef CONFIG_XFRM
>  /* If there was already an IPSEC SA, we keep it as is, else
>   * we go look for it ...
>  */
>  #define DUMMY_MARK 0

A now unused define...

>  static void get_ipsec_sa(struct pktgen_dev *pkt_dev, int flow)
>  {
> +#ifdef CONFIG_XFRM
>  	struct xfrm_state *x = pkt_dev->flows[flow].x;
>  	struct pktgen_net *pn = net_generic(dev_net(pkt_dev->odev), pg_net_id);

Maybe better this way here?

	const u32 dummy_mark = 0;

>  	if (!x) {
> @@ -2395,11 +2393,10 @@ static void get_ipsec_sa(struct pktgen_dev *pkt_dev, int flow)
>  		}
>
>  	}
> -}
>  #endif
> +}
>  static void set_cur_queue_map(struct pktgen_dev *pkt_dev)
>  {
> -
>  	if (pkt_dev->flags & F_QUEUE_MAP_CPU)
>  		pkt_dev->cur_queue_map = smp_processor_id();
>
> @@ -2574,10 +2571,8 @@ static void mod_cur_headers(struct pktgen_dev *pkt_dev)
>  				pkt_dev->flows[flow].flags |= F_INIT;
>  				pkt_dev->flows[flow].cur_daddr =
>  				    pkt_dev->cur_daddr;
> -#ifdef CONFIG_XFRM
>  				if (pkt_dev->flags & F_IPSEC)
>  					get_ipsec_sa(pkt_dev, flow);
> -#endif
>  				pkt_dev->nflows++;
>  			}
>  		}

Otherwise works as expected, you can add my (with or without the suggested
changes)

Reviewed-by: Peter Seiderer <ps.report@gmx.net>

Regards,
Peter


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] pktgen: avoid unused-const-variable warning
  2025-02-26 18:17 ` Peter Seiderer
@ 2025-02-27 11:35   ` Paolo Abeni
  2025-02-27 14:21     ` Peter Seiderer
  0 siblings, 1 reply; 6+ messages in thread
From: Paolo Abeni @ 2025-02-27 11:35 UTC (permalink / raw)
  To: Peter Seiderer, Arnd Bergmann
  Cc: David S. Miller, Eric Dumazet, Jakub Kicinski, Arnd Bergmann,
	Simon Horman, netdev, linux-kernel

On 2/26/25 7:17 PM, Peter Seiderer wrote:
> From: Arnd Bergmann <arnd@arndb.de>
>> When extra warnings are enable, there are configurations that build
>> pktgen without CONFIG_XFRM, which leaves a static const variable unused:
>>
>> net/core/pktgen.c:213:1: error: unused variable 'F_IPSEC' [-Werror,-Wunused-const-variable]
>>   213 | PKT_FLAGS
>>       | ^~~~~~~~~
>> net/core/pktgen.c:197:2: note: expanded from macro 'PKT_FLAGS'
>>   197 |         pf(IPSEC)               /* ipsec on for flows */                \
>>       |         ^~~~~~~~~
>>
>> This could be marked as __maybe_unused, or by making the one use visible
>> to the compiler by slightly rearranging the #ifdef blocks. The second
>> variant looks slightly nicer here, so use that.
>>
>> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
>> ---
>>  net/core/pktgen.c | 9 ++-------
>>  1 file changed, 2 insertions(+), 7 deletions(-)
>>
>> diff --git a/net/core/pktgen.c b/net/core/pktgen.c
>> index 55064713223e..402e01a2ce19 100644
>> --- a/net/core/pktgen.c
>> +++ b/net/core/pktgen.c
>> @@ -158,9 +158,7 @@
>>  #include <net/udp.h>
>>  #include <net/ip6_checksum.h>
>>  #include <net/addrconf.h>
>> -#ifdef CONFIG_XFRM
>>  #include <net/xfrm.h>
>> -#endif
> 
> This ifdef/endif can be kept (as the xfrm stuff is still not used)...

FTR, I think dropping unneeded #ifdef is preferable in c files: only
such file build time is affected, and the code is more readable.

> 
>>  #include <net/netns/generic.h>
>>  #include <asm/byteorder.h>
>>  #include <linux/rcupdate.h>
>> @@ -2363,13 +2361,13 @@ static inline int f_pick(struct pktgen_dev *pkt_dev)
>>  }
>>
>>
>> -#ifdef CONFIG_XFRM
>>  /* If there was already an IPSEC SA, we keep it as is, else
>>   * we go look for it ...
>>  */
>>  #define DUMMY_MARK 0
> 
> A now unused define...
> 
>>  static void get_ipsec_sa(struct pktgen_dev *pkt_dev, int flow)
>>  {
>> +#ifdef CONFIG_XFRM
>>  	struct xfrm_state *x = pkt_dev->flows[flow].x;
>>  	struct pktgen_net *pn = net_generic(dev_net(pkt_dev->odev), pg_net_id);
> 
> Maybe better this way here?

I think the unused define is preferable; I think pre-processor defines
are cheaper than static const.

Thanks,

Paolo


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] pktgen: avoid unused-const-variable warning
  2025-02-25  8:57 [PATCH] pktgen: avoid unused-const-variable warning Arnd Bergmann
  2025-02-26 18:17 ` Peter Seiderer
@ 2025-02-27 12:10 ` patchwork-bot+netdevbpf
  1 sibling, 0 replies; 6+ messages in thread
From: patchwork-bot+netdevbpf @ 2025-02-27 12:10 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: davem, edumazet, kuba, pabeni, arnd, horms, ps.report, netdev,
	linux-kernel

Hello:

This patch was applied to netdev/net-next.git (main)
by Paolo Abeni <pabeni@redhat.com>:

On Tue, 25 Feb 2025 09:57:14 +0100 you wrote:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> When extra warnings are enable, there are configurations that build
> pktgen without CONFIG_XFRM, which leaves a static const variable unused:
> 
> net/core/pktgen.c:213:1: error: unused variable 'F_IPSEC' [-Werror,-Wunused-const-variable]
>   213 | PKT_FLAGS
>       | ^~~~~~~~~
> net/core/pktgen.c:197:2: note: expanded from macro 'PKT_FLAGS'
>   197 |         pf(IPSEC)               /* ipsec on for flows */                \
>       |         ^~~~~~~~~
> 
> [...]

Here is the summary with links:
  - pktgen: avoid unused-const-variable warning
    https://git.kernel.org/netdev/net-next/c/af4a5da8ed54

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] pktgen: avoid unused-const-variable warning
  2025-02-27 11:35   ` Paolo Abeni
@ 2025-02-27 14:21     ` Peter Seiderer
  2025-02-27 14:39       ` Paolo Abeni
  0 siblings, 1 reply; 6+ messages in thread
From: Peter Seiderer @ 2025-02-27 14:21 UTC (permalink / raw)
  To: Paolo Abeni
  Cc: Arnd Bergmann, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Arnd Bergmann, Simon Horman, netdev, linux-kernel

Hello Paolo,

On Thu, 27 Feb 2025 12:35:45 +0100, Paolo Abeni <pabeni@redhat.com> wrote:

> On 2/26/25 7:17 PM, Peter Seiderer wrote:
> > From: Arnd Bergmann <arnd@arndb.de>
> >> When extra warnings are enable, there are configurations that build
> >> pktgen without CONFIG_XFRM, which leaves a static const variable unused:
> >>
> >> net/core/pktgen.c:213:1: error: unused variable 'F_IPSEC' [-Werror,-Wunused-const-variable]
> >>   213 | PKT_FLAGS
> >>       | ^~~~~~~~~
> >> net/core/pktgen.c:197:2: note: expanded from macro 'PKT_FLAGS'
> >>   197 |         pf(IPSEC)               /* ipsec on for flows */                \
> >>       |         ^~~~~~~~~
> >>
> >> This could be marked as __maybe_unused, or by making the one use visible
> >> to the compiler by slightly rearranging the #ifdef blocks. The second
> >> variant looks slightly nicer here, so use that.
> >>
> >> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> >> ---
> >>  net/core/pktgen.c | 9 ++-------
> >>  1 file changed, 2 insertions(+), 7 deletions(-)
> >>
> >> diff --git a/net/core/pktgen.c b/net/core/pktgen.c
> >> index 55064713223e..402e01a2ce19 100644
> >> --- a/net/core/pktgen.c
> >> +++ b/net/core/pktgen.c
> >> @@ -158,9 +158,7 @@
> >>  #include <net/udp.h>
> >>  #include <net/ip6_checksum.h>
> >>  #include <net/addrconf.h>
> >> -#ifdef CONFIG_XFRM
> >>  #include <net/xfrm.h>
> >> -#endif
> >
> > This ifdef/endif can be kept (as the xfrm stuff is still not used)...
>
> FTR, I think dropping unneeded #ifdef is preferable in c files: only
> such file build time is affected, and the code is more readable.

The ifdef/endif emphasizes no xfrm usage (even by mistake) in case CONFIG_XFRM
is not defined, but in the end a matter of taste ;-)

>
> >
> >>  #include <net/netns/generic.h>
> >>  #include <asm/byteorder.h>
> >>  #include <linux/rcupdate.h>
> >> @@ -2363,13 +2361,13 @@ static inline int f_pick(struct pktgen_dev *pkt_dev)
> >>  }
> >>
> >>
> >> -#ifdef CONFIG_XFRM
> >>  /* If there was already an IPSEC SA, we keep it as is, else
> >>   * we go look for it ...
> >>  */
> >>  #define DUMMY_MARK 0
> >
> > A now unused define...
> >
> >>  static void get_ipsec_sa(struct pktgen_dev *pkt_dev, int flow)
> >>  {
> >> +#ifdef CONFIG_XFRM
> >>  	struct xfrm_state *x = pkt_dev->flows[flow].x;
> >>  	struct pktgen_net *pn = net_generic(dev_net(pkt_dev->odev), pg_net_id);
> >
> > Maybe better this way here?
> >
> > 	const u32 dummy_mark = 0;
>
> I think the unused define is preferable; I think pre-processor defines
> are cheaper than static const.

In which regards cheaper (out of interest)?

Both (with and without static) produce the same code see e.g.

	https://godbolt.org/z/Tsr1jM45r
	https://godbolt.org/z/6sr1o8da3

Regards,
Peter

>
> Thanks,
>
> Paolo
>


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] pktgen: avoid unused-const-variable warning
  2025-02-27 14:21     ` Peter Seiderer
@ 2025-02-27 14:39       ` Paolo Abeni
  0 siblings, 0 replies; 6+ messages in thread
From: Paolo Abeni @ 2025-02-27 14:39 UTC (permalink / raw)
  To: Peter Seiderer
  Cc: Arnd Bergmann, David S. Miller, Eric Dumazet, Jakub Kicinski,
	Arnd Bergmann, Simon Horman, netdev, linux-kernel

On 2/27/25 3:21 PM, Peter Seiderer wrote:
> On Thu, 27 Feb 2025 12:35:45 +0100, Paolo Abeni <pabeni@redhat.com> wrote:
>> I think the unused define is preferable; I think pre-processor defines
>> are cheaper than static const.
> 
> In which regards cheaper (out of interest)?
> 
> Both (with and without static) produce the same code see e.g.
> 
> 	https://godbolt.org/z/Tsr1jM45r
> 	https://godbolt.org/z/6sr1o8da3

I must admit I was unsure the compiler would always optimize out the
constant.

I guess the macro could still produce shorter build time (by a few clock
cycles, nothing measurable ;), so in the end it boils down again to a
personal preference.

Cheers,

Paolo



^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-02-27 14:39 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-02-25  8:57 [PATCH] pktgen: avoid unused-const-variable warning Arnd Bergmann
2025-02-26 18:17 ` Peter Seiderer
2025-02-27 11:35   ` Paolo Abeni
2025-02-27 14:21     ` Peter Seiderer
2025-02-27 14:39       ` Paolo Abeni
2025-02-27 12:10 ` patchwork-bot+netdevbpf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).