From: Simon Horman <simon.horman@corigine.com>
To: Randy Dunlap <rdunlap@infradead.org>
Cc: linux-kernel@vger.kernel.org,
Alexandra Winter <wintera@linux.ibm.com>,
Wenjia Zhang <wenjia@linux.ibm.com>,
linux-s390@vger.kernel.org, netdev@vger.kernel.org,
Heiko Carstens <hca@linux.ibm.com>,
Vasily Gorbik <gor@linux.ibm.com>,
Alexander Gordeev <agordeev@linux.ibm.com>,
Christian Borntraeger <borntraeger@linux.ibm.com>,
Sven Schnelle <svens@linux.ibm.com>
Subject: Re: [PATCH] s390/net: lcs: use IS_ENABLED() for kconfig detection
Date: Wed, 21 Jun 2023 17:53:02 +0200 [thread overview]
Message-ID: <ZJMc3oS2nxORPASN@corigine.com> (raw)
In-Reply-To: <ea55623d-d469-ddaf-92ce-3daf1d2d726f@infradead.org>
On Tue, Jun 20, 2023 at 07:35:17PM -0700, Randy Dunlap wrote:
> Hi,
>
> On 6/15/23 15:21, Randy Dunlap wrote:
> > When CONFIG_ETHERNET=m or CONFIG_FDDI=m, lcs.s has build errors or
> > warnings:
> >
> > ../drivers/s390/net/lcs.c:40:2: error: #error Cannot compile lcs.c without some net devices switched on.
> > 40 | #error Cannot compile lcs.c without some net devices switched on.
> > ../drivers/s390/net/lcs.c: In function 'lcs_startlan_auto':
> > ../drivers/s390/net/lcs.c:1601:13: warning: unused variable 'rc' [-Wunused-variable]
> > 1601 | int rc;
> >
> > Solve this by using IS_ENABLED(CONFIG_symbol) instead of ifdef
> > CONFIG_symbol. The latter only works for builtin (=y) values
> > while IS_ENABLED() works for builtin or modular values.
> >
> > Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
> > Cc: Alexandra Winter <wintera@linux.ibm.com>
> > Cc: Wenjia Zhang <wenjia@linux.ibm.com>
> > Cc: linux-s390@vger.kernel.org
> > Cc: netdev@vger.kernel.org
> > Cc: Heiko Carstens <hca@linux.ibm.com>
> > Cc: Vasily Gorbik <gor@linux.ibm.com>
> > Cc: Alexander Gordeev <agordeev@linux.ibm.com>
> > Cc: Christian Borntraeger <borntraeger@linux.ibm.com>
> > Cc: Sven Schnelle <svens@linux.ibm.com>
> > ---
> > drivers/s390/net/lcs.c | 10 +++++-----
> > 1 file changed, 5 insertions(+), 5 deletions(-)
> >
> > diff -- a/drivers/s390/net/lcs.c b/drivers/s390/net/lcs.c
> > --- a/drivers/s390/net/lcs.c
> > +++ b/drivers/s390/net/lcs.c
> > @@ -36,7 +36,7 @@
> > #include "lcs.h"
> >
> >
> > -#if !defined(CONFIG_ETHERNET) && !defined(CONFIG_FDDI)
> > +#if !IS_ENABLED(CONFIG_ETHERNET) && !IS_ENABLED(CONFIG_FDDI)
> > #error Cannot compile lcs.c without some net devices switched on.
> > #endif
> >
> > @@ -1601,14 +1601,14 @@ lcs_startlan_auto(struct lcs_card *card)
> > int rc;
> >
> > LCS_DBF_TEXT(2, trace, "strtauto");
> > -#ifdef CONFIG_ETHERNET
> > +#if IS_ENABLED(CONFIG_ETHERNET)
> > card->lan_type = LCS_FRAME_TYPE_ENET;
> > rc = lcs_send_startlan(card, LCS_INITIATOR_TCPIP);
> > if (rc == 0)
> > return 0;
> >
> > #endif
> > -#ifdef CONFIG_FDDI
> > +#if IS_ENABLED(CONFIG_FDDI)
> > card->lan_type = LCS_FRAME_TYPE_FDDI;
> > rc = lcs_send_startlan(card, LCS_INITIATOR_TCPIP);
> > if (rc == 0)
> > @@ -2139,13 +2139,13 @@ lcs_new_device(struct ccwgroup_device *c
> > goto netdev_out;
> > }
> > switch (card->lan_type) {
> > -#ifdef CONFIG_ETHERNET
> > +#if IS_ENABLED(CONFIG_ETHERNET)
> > case LCS_FRAME_TYPE_ENET:
> > card->lan_type_trans = eth_type_trans;
> > dev = alloc_etherdev(0);
> > break;
> > #endif
> > -#ifdef CONFIG_FDDI
> > +#if IS_ENABLED(CONFIG_FDDI)
> > case LCS_FRAME_TYPE_FDDI:
> > card->lan_type_trans = fddi_type_trans;
> > dev = alloc_fddidev(0);
>
>
> kernel test robot reports build errors from this patch when
> ETHERNET=y, FDDI=m, LCS=y:
>
> https://lore.kernel.org/all/202306202129.pl0AqK8G-lkp@intel.com/
>
> Since the code before my patch expected (supported) FDDI=y only
> (by checking for CONFIG_FDDI only and not checking for CONFIG_FDDI_MODULE),
> the best solution that I can see is to enforce that expectation in
> drivers/s390/net/Kconfig:
>
> diff -- a/drivers/s390/net/Kconfig b/drivers/s390/net/Kconfig
> --- a/drivers/s390/net/Kconfig
> +++ b/drivers/s390/net/Kconfig
> @@ -5,7 +5,7 @@ menu "S/390 network device drivers"
> config LCS
> def_tristate m
> prompt "Lan Channel Station Interface"
> - depends on CCW && NETDEVICES && (ETHERNET || FDDI)
> + depends on CCW && NETDEVICES && (ETHERNET || FDDI = y)
Hi Randy,
Unfortunately I don't think this helps.
In the config given at the link above, ETHERNET is y.
And the error regarding fddi_type_trans and alloc_fddidev being undefined
seems to occur regardless of your change.
I did have better luck with this.
diff --git a/drivers/s390/net/Kconfig b/drivers/s390/net/Kconfig
index 9c67b97faba2..303220251495 100644
--- a/drivers/s390/net/Kconfig
+++ b/drivers/s390/net/Kconfig
@@ -6,6 +6,7 @@ config LCS
def_tristate m
prompt "Lan Channel Station Interface"
depends on CCW && NETDEVICES && (ETHERNET || FDDI)
+ depends on FDDI=y || FDDI=n
help
Select this option if you want to use LCS networking on IBM System z.
This device driver supports FDDI (IEEE 802.7) and Ethernet.
I am assuming that LCS=m and FDDI=m can't work at runtime
because there is no guarantee that FDDI is loaded before LCS.
But I could well be wrong here.
> help
> Select this option if you want to use LCS networking on IBM System z.
> This device driver supports FDDI (IEEE 802.7) and Ethernet.
>
> What do people think of that change?
> Any other ideas/suggestions?
>
> thanks.
> --
> ~Randy
>
next prev parent reply other threads:[~2023-06-21 15:53 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-15 22:21 [PATCH] s390/net: lcs: use IS_ENABLED() for kconfig detection Randy Dunlap
2023-06-16 8:10 ` patchwork-bot+netdevbpf
2023-06-19 10:04 ` Alexandra Winter
2023-06-19 15:18 ` Randy Dunlap
2023-06-21 2:35 ` Randy Dunlap
2023-06-21 15:53 ` Simon Horman [this message]
2023-06-21 18:08 ` Randy Dunlap
2023-06-21 19:37 ` Simon Horman
2023-06-21 21:19 ` Randy Dunlap
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZJMc3oS2nxORPASN@corigine.com \
--to=simon.horman@corigine.com \
--cc=agordeev@linux.ibm.com \
--cc=borntraeger@linux.ibm.com \
--cc=gor@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=rdunlap@infradead.org \
--cc=svens@linux.ibm.com \
--cc=wenjia@linux.ibm.com \
--cc=wintera@linux.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).