2021-06-24 10:09:29

by Liwei Song

[permalink] [raw]
Subject: [PATCH] iwlwifi: select MAC80211_LEDS conditionally

MAC80211_LEDS depends on LEDS_CLASS=y or LEDS_CLASS=MAC80211,
add condition to enable it in iwlwifi/Kconfig to avoid below
compile warning when LEDS_CLASS was set to m:

WARNING: unmet direct dependencies detected for MAC80211_LEDS
Depends on [n]: NET [=y] && WIRELESS [=y] && MAC80211 [=y] && (LEDS_CLASS [=m]=y || LEDS_CLASS [=m]=MAC80211 [=y])
Selected by [m]:
- IWLWIFI_LEDS [=y] && NETDEVICES [=y] && WLAN [=y] && WLAN_VENDOR_INTEL [=y] && IWLWIFI [=m] && (LEDS_CLASS [=m]=y || LEDS_CLASS [=m]=IWLWIFI [=m]) && (IWLMVM [=m] || IWLDVM [=m])

Signed-off-by: Liwei Song <[email protected]>
---
drivers/net/wireless/intel/iwlwifi/Kconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/wireless/intel/iwlwifi/Kconfig b/drivers/net/wireless/intel/iwlwifi/Kconfig
index 1085afbefba8..0e1de69c259f 100644
--- a/drivers/net/wireless/intel/iwlwifi/Kconfig
+++ b/drivers/net/wireless/intel/iwlwifi/Kconfig
@@ -50,7 +50,7 @@ config IWLWIFI_LEDS
depends on LEDS_CLASS=y || LEDS_CLASS=IWLWIFI
depends on IWLMVM || IWLDVM
select LEDS_TRIGGERS
- select MAC80211_LEDS
+ select MAC80211_LEDS if (LEDS_CLASS=y || LEDS_CLASS=MAC80211)
default y

config IWLDVM
--
2.17.1


2021-06-24 11:07:51

by Liwei Song

[permalink] [raw]
Subject: Re: [PATCH] iwlwifi: select MAC80211_LEDS conditionally



On 6/24/21 18:41, Kalle Valo wrote:
> Liwei Song <[email protected]> writes:
>
>> MAC80211_LEDS depends on LEDS_CLASS=y or LEDS_CLASS=MAC80211,
>> add condition to enable it in iwlwifi/Kconfig to avoid below
>> compile warning when LEDS_CLASS was set to m:
>>
>> WARNING: unmet direct dependencies detected for MAC80211_LEDS
>> Depends on [n]: NET [=y] && WIRELESS [=y] && MAC80211 [=y] && (LEDS_CLASS [=m]=y || LEDS_CLASS [=m]=MAC80211 [=y])
>> Selected by [m]:
>> - IWLWIFI_LEDS [=y] && NETDEVICES [=y] && WLAN [=y] && WLAN_VENDOR_INTEL [=y] && IWLWIFI [=m] && (LEDS_CLASS [=m]=y || LEDS_CLASS [=m]=IWLWIFI [=m]) && (IWLMVM [=m] || IWLDVM [=m])
>>
>> Signed-off-by: Liwei Song <[email protected]>
>
> Is this is a new regression or an old bug? What commit caused this?

It should be exist when the below commit change the dependency of MAC80211_LEDS
to fix some build error:

commit b64acb28da8394485f0762e657470c9fc33aca4d
Author: Arnd Bergmann <[email protected]>
Date: Mon Jan 25 12:36:42 2021 +0100

ath9k: fix build error with LEDS_CLASS=m

When CONFIG_ATH9K is built-in but LED support is in a loadable
module, both ath9k drivers fails to link:

x86_64-linux-ld: drivers/net/wireless/ath/ath9k/gpio.o: in function `ath_deinit_leds':
gpio.c:(.text+0x36): undefined reference to `led_classdev_unregister'
x86_64-linux-ld: drivers/net/wireless/ath/ath9k/gpio.o: in function `ath_init_leds':
gpio.c:(.text+0x179): undefined reference to `led_classdev_register_ext'

The problem is that the 'imply' keyword does not enforce any dependency
but is only a weak hint to Kconfig to enable another symbol from a
defconfig file.

Change imply to a 'depends on LEDS_CLASS' that prevents the incorrect
configuration but still allows building the driver without LED support.

The 'select MAC80211_LEDS' is now ensures that the LED support is
actually used if it is present, and the added Kconfig dependency
on MAC80211_LEDS ensures that it cannot be enabled manually when it
has no effect.

Fixes: 197f466e93f5 ("ath9k_htc: Do not select MAC80211_LEDS by default")
Signed-off-by: Arnd Bergmann <[email protected]>
Acked-by: Johannes Berg <[email protected]>
Signed-off-by: Kalle Valo <[email protected]>
Link: https://lore.kernel.org/r/[email protected]

diff --git a/net/mac80211/Kconfig b/net/mac80211/Kconfig
index cd9a9bd242ba..51ec8256b7fa 100644
--- a/net/mac80211/Kconfig
+++ b/net/mac80211/Kconfig
@@ -69,7 +69,7 @@ config MAC80211_MESH
config MAC80211_LEDS
bool "Enable LED triggers"
depends on MAC80211
- depends on LEDS_CLASS
+ depends on LEDS_CLASS=y || LEDS_CLASS=MAC80211


Thanks,
Liwei.


>

2021-07-26 09:27:30

by Liwei Song

[permalink] [raw]
Subject: Re: [PATCH] iwlwifi: select MAC80211_LEDS conditionally

Hi,

Any suggestion about this patch?

Thanks,
Liwei.

On 6/24/21 19:06, Liwei Song wrote:
>
>
> On 6/24/21 18:41, Kalle Valo wrote:
>> Liwei Song <[email protected]> writes:
>>
>>> MAC80211_LEDS depends on LEDS_CLASS=y or LEDS_CLASS=MAC80211,
>>> add condition to enable it in iwlwifi/Kconfig to avoid below
>>> compile warning when LEDS_CLASS was set to m:
>>>
>>> WARNING: unmet direct dependencies detected for MAC80211_LEDS
>>> Depends on [n]: NET [=y] && WIRELESS [=y] && MAC80211 [=y] && (LEDS_CLASS [=m]=y || LEDS_CLASS [=m]=MAC80211 [=y])
>>> Selected by [m]:
>>> - IWLWIFI_LEDS [=y] && NETDEVICES [=y] && WLAN [=y] && WLAN_VENDOR_INTEL [=y] && IWLWIFI [=m] && (LEDS_CLASS [=m]=y || LEDS_CLASS [=m]=IWLWIFI [=m]) && (IWLMVM [=m] || IWLDVM [=m])
>>>
>>> Signed-off-by: Liwei Song <[email protected]>
>>
>> Is this is a new regression or an old bug? What commit caused this?
>
> It should be exist when the below commit change the dependency of MAC80211_LEDS
> to fix some build error:
>
> commit b64acb28da8394485f0762e657470c9fc33aca4d
> Author: Arnd Bergmann <[email protected]>
> Date: Mon Jan 25 12:36:42 2021 +0100
>
> ath9k: fix build error with LEDS_CLASS=m
>
> When CONFIG_ATH9K is built-in but LED support is in a loadable
> module, both ath9k drivers fails to link:
>
> x86_64-linux-ld: drivers/net/wireless/ath/ath9k/gpio.o: in function `ath_deinit_leds':
> gpio.c:(.text+0x36): undefined reference to `led_classdev_unregister'
> x86_64-linux-ld: drivers/net/wireless/ath/ath9k/gpio.o: in function `ath_init_leds':
> gpio.c:(.text+0x179): undefined reference to `led_classdev_register_ext'
>
> The problem is that the 'imply' keyword does not enforce any dependency
> but is only a weak hint to Kconfig to enable another symbol from a
> defconfig file.
>
> Change imply to a 'depends on LEDS_CLASS' that prevents the incorrect
> configuration but still allows building the driver without LED support.
>
> The 'select MAC80211_LEDS' is now ensures that the LED support is
> actually used if it is present, and the added Kconfig dependency
> on MAC80211_LEDS ensures that it cannot be enabled manually when it
> has no effect.
>
> Fixes: 197f466e93f5 ("ath9k_htc: Do not select MAC80211_LEDS by default")
> Signed-off-by: Arnd Bergmann <[email protected]>
> Acked-by: Johannes Berg <[email protected]>
> Signed-off-by: Kalle Valo <[email protected]>
> Link: https://lore.kernel.org/r/[email protected]
>
> diff --git a/net/mac80211/Kconfig b/net/mac80211/Kconfig
> index cd9a9bd242ba..51ec8256b7fa 100644
> --- a/net/mac80211/Kconfig
> +++ b/net/mac80211/Kconfig
> @@ -69,7 +69,7 @@ config MAC80211_MESH
> config MAC80211_LEDS
> bool "Enable LED triggers"
> depends on MAC80211
> - depends on LEDS_CLASS
> + depends on LEDS_CLASS=y || LEDS_CLASS=MAC80211
>
>
> Thanks,
> Liwei.
>
>
>>

2021-08-05 14:44:38

by Kalle Valo

[permalink] [raw]
Subject: Re: [PATCH] iwlwifi: select MAC80211_LEDS conditionally

Liwei Song <[email protected]> writes:

> On 6/24/21 18:41, Kalle Valo wrote:
>> Liwei Song <[email protected]> writes:
>>
>>> MAC80211_LEDS depends on LEDS_CLASS=y or LEDS_CLASS=MAC80211,
>>> add condition to enable it in iwlwifi/Kconfig to avoid below
>>> compile warning when LEDS_CLASS was set to m:
>>>
>>> WARNING: unmet direct dependencies detected for MAC80211_LEDS
>>> Depends on [n]: NET [=y] && WIRELESS [=y] && MAC80211 [=y] &&
>>> (LEDS_CLASS [=m]=y || LEDS_CLASS [=m]=MAC80211 [=y])
>>> Selected by [m]:
>>> - IWLWIFI_LEDS [=y] && NETDEVICES [=y] && WLAN [=y] &&
>>> WLAN_VENDOR_INTEL [=y] && IWLWIFI [=m] && (LEDS_CLASS [=m]=y ||
>>> LEDS_CLASS [=m]=IWLWIFI [=m]) && (IWLMVM [=m] || IWLDVM [=m])
>>>
>>> Signed-off-by: Liwei Song <[email protected]>
>>
>> Is this is a new regression or an old bug? What commit caused this?
>
> It should be exist when the below commit change the dependency of MAC80211_LEDS
> to fix some build error:
>
> commit b64acb28da8394485f0762e657470c9fc33aca4d
> Author: Arnd Bergmann <[email protected]>
> Date: Mon Jan 25 12:36:42 2021 +0100
>
> ath9k: fix build error with LEDS_CLASS=m

Thanks, it seems LEDS_CLASS is a constant source of problems for
wireless drivers :/

Luca, what should we do? We cannot have compile errors in the tree.

I assigned this patch to me on patchwork.

--
https://patchwork.kernel.org/project/linux-wireless/list/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches