2019-09-07 17:32:25

by Mark Salyzyn

[permalink] [raw]
Subject: [PATCH v2] net: enable wireless core features with LEGACY_WEXT_ALLCONFIG

In embedded environments the requirements are to be able to pick and
chose which features one requires built into the kernel. If an
embedded environment wants to supports loading modules that have been
kbuilt out of tree, there is a need to enable hidden configurations
for legacy wireless core features to provide the API surface for
them to load.

Introduce CONFIG_LEGACY_WEXT_ALLCONFIG to select all legacy wireless
extension core features by activating in turn all the associated
hidden configuration options, without having to specifically select
any wireless module(s).

Signed-off-by: Mark Salyzyn <[email protected]>
Cc: [email protected]
Cc: Johannes Berg <[email protected]>
Cc: "David S. Miller" <[email protected]>
Cc: Marcel Holtmann <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected] # 4.19
---
v2: change name and documentation to CONFIG_LEGACY_WEXT_ALLCONFIG
---
net/wireless/Kconfig | 14 ++++++++++++++
1 file changed, 14 insertions(+)

diff --git a/net/wireless/Kconfig b/net/wireless/Kconfig
index 67f8360dfcee..0d646cf28de5 100644
--- a/net/wireless/Kconfig
+++ b/net/wireless/Kconfig
@@ -17,6 +17,20 @@ config WEXT_SPY
config WEXT_PRIV
bool

+config LEGACY_WEXT_ALLCONFIG
+ bool "allconfig for legacy wireless extensions"
+ select WIRELESS_EXT
+ select WEXT_CORE
+ select WEXT_PROC
+ select WEXT_SPY
+ select WEXT_PRIV
+ help
+ Config option used to enable all the legacy wireless extensions to
+ the core functionality used by add-in modules.
+
+ If you are not building a kernel to be used for a variety of
+ out-of-kernel built wireless modules, say N here.
+
config CFG80211
tristate "cfg80211 - wireless configuration API"
depends on RFKILL || !RFKILL
--
2.23.0.187.g17f5b7556c-goog


2019-09-08 09:11:01

by Greg KH

[permalink] [raw]
Subject: Re: [PATCH v2] net: enable wireless core features with LEGACY_WEXT_ALLCONFIG

On Fri, Sep 06, 2019 at 12:24:00PM -0700, Mark Salyzyn wrote:
> In embedded environments the requirements are to be able to pick and
> chose which features one requires built into the kernel. If an
> embedded environment wants to supports loading modules that have been
> kbuilt out of tree, there is a need to enable hidden configurations
> for legacy wireless core features to provide the API surface for
> them to load.
>
> Introduce CONFIG_LEGACY_WEXT_ALLCONFIG to select all legacy wireless
> extension core features by activating in turn all the associated
> hidden configuration options, without having to specifically select
> any wireless module(s).
>
> Signed-off-by: Mark Salyzyn <[email protected]>
> Cc: [email protected]
> Cc: Johannes Berg <[email protected]>
> Cc: "David S. Miller" <[email protected]>
> Cc: Marcel Holtmann <[email protected]>
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected] # 4.19
> ---
> v2: change name and documentation to CONFIG_LEGACY_WEXT_ALLCONFIG
> ---
> net/wireless/Kconfig | 14 ++++++++++++++
> 1 file changed, 14 insertions(+)
>
> diff --git a/net/wireless/Kconfig b/net/wireless/Kconfig
> index 67f8360dfcee..0d646cf28de5 100644
> --- a/net/wireless/Kconfig
> +++ b/net/wireless/Kconfig
> @@ -17,6 +17,20 @@ config WEXT_SPY
> config WEXT_PRIV
> bool
>
> +config LEGACY_WEXT_ALLCONFIG
> + bool "allconfig for legacy wireless extensions"
> + select WIRELESS_EXT
> + select WEXT_CORE
> + select WEXT_PROC
> + select WEXT_SPY
> + select WEXT_PRIV
> + help
> + Config option used to enable all the legacy wireless extensions to
> + the core functionality used by add-in modules.
> +
> + If you are not building a kernel to be used for a variety of
> + out-of-kernel built wireless modules, say N here.
> +
> config CFG80211
> tristate "cfg80211 - wireless configuration API"
> depends on RFKILL || !RFKILL
> --
> 2.23.0.187.g17f5b7556c-goog
>

How is this patch applicable to stable kernels???

2019-09-10 08:20:48

by Mark Salyzyn

[permalink] [raw]
Subject: Re: [PATCH v2] net: enable wireless core features with LEGACY_WEXT_ALLCONFIG

On 9/6/19 4:30 PM, Greg KH wrote:
> On Fri, Sep 06, 2019 at 12:24:00PM -0700, Mark Salyzyn wrote:
>> In embedded environments the requirements are to be able to pick and
>> chose which features one requires built into the kernel. If an
>> embedded environment wants to supports loading modules that have been
>> kbuilt out of tree, there is a need to enable hidden configurations
>> for legacy wireless core features to provide the API surface for
>> them to load.
>>
>> Introduce CONFIG_LEGACY_WEXT_ALLCONFIG to select all legacy wireless
>> extension core features by activating in turn all the associated
>> hidden configuration options, without having to specifically select
>> any wireless module(s).
>>
>> Signed-off-by: Mark Salyzyn <[email protected]>
>> Cc: [email protected]
>> Cc: Johannes Berg <[email protected]>
>> Cc: "David S. Miller" <[email protected]>
>> Cc: Marcel Holtmann <[email protected]>
>> Cc: [email protected]
>> Cc: [email protected]
>> Cc: [email protected]
>> Cc: [email protected] # 4.19
>> ---
>> v2: change name and documentation to CONFIG_LEGACY_WEXT_ALLCONFIG
>> ---
>> net/wireless/Kconfig | 14 ++++++++++++++
>> 1 file changed, 14 insertions(+)
>>
>> diff --git a/net/wireless/Kconfig b/net/wireless/Kconfig
>> index 67f8360dfcee..0d646cf28de5 100644
>> --- a/net/wireless/Kconfig
>> +++ b/net/wireless/Kconfig
>> @@ -17,6 +17,20 @@ config WEXT_SPY
>> config WEXT_PRIV
>> bool
>>
>> +config LEGACY_WEXT_ALLCONFIG
>> + bool "allconfig for legacy wireless extensions"
>> + select WIRELESS_EXT
>> + select WEXT_CORE
>> + select WEXT_PROC
>> + select WEXT_SPY
>> + select WEXT_PRIV
>> + help
>> + Config option used to enable all the legacy wireless extensions to
>> + the core functionality used by add-in modules.
>> +
>> + If you are not building a kernel to be used for a variety of
>> + out-of-kernel built wireless modules, say N here.
>> +
>> config CFG80211
>> tristate "cfg80211 - wireless configuration API"
>> depends on RFKILL || !RFKILL
>> --
>> 2.23.0.187.g17f5b7556c-goog
>>
> How is this patch applicable to stable kernels???

A) worth a shot ;-}

B) there is a shortcoming in _all_ kernel versions with respect to
hidden configurations options like this, hoping to set one precedent in
how to handle them if acceptable to the community.

C) [AGENDA ALERT] Android _will_ be back-porting this to android-4.19
kernel anyway, would help maintenance if via stable. <holding hat in hand>

D) Not an ABI or interface break, does not introduce instability, but
rather keeps downstream kernels of any distributions from having to hack
in their own alternate means of dealing with this problem leading to
further fragmentation.

E) Timely discussion item for LPC?

Sincerely -- Mark Salyzyn

2019-09-10 08:48:12

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH v2] net: enable wireless core features with LEGACY_WEXT_ALLCONFIG

On Mon, 2019-09-09 at 07:24 -0700, Mark Salyzyn wrote:
>
> > How is this patch applicable to stable kernels???

I'm not sure I even buy the arguments to get it into the regular kernel.

> B) there is a shortcoming in _all_ kernel versions with respect to
> hidden configurations options like this, hoping to set one precedent in
> how to handle them if acceptable to the community.

This really is the only argument, I think, but I don't really see it as
a shortcoming. The kernel is handling this properly, after all, with
respect to itself. You just have issues with out-of-tree modules.

And while it is true, setting that precedent might ultimately mean we'll
end up with ~80 (**) new Kconfig options in net/ alone ... That's
certainly *NOT* a precedent I want to set nor the way I want to see this
handled, when we already get complaints that we're adding too many
Kconfig options (and those are ones we really do need).

Obviously, nothing stops you from putting this into your kernel (and I
guess you already are), but I don't really see how it benefits us as a
kernel community.

> E) Timely discussion item for LPC?

Perhaps you should indeed drive that discussion there, this really is
bigger than this particular wireless feature. At the very least, to
avoid Kconfig complexity explosion, add a single new

config OPTIONS_FOR_OUT_OF_TREE_MODULES
bool "..."
depends on EXPERT
help
...

and make LEGACY_WEXT_ALLCONFIG depend on that.

But if you're honest and obvious about it like that, I have a hard time
seeing you get that into the tree past Greg or Linus...


Also, you probably know this, but in this particular case you really
should just get rid of your wext dependencies ... this stuff is
literally decades old, and while that isn't necessarily a bad thing, it
also has issues that have been known for a decade or so that simply
cannot be solved.


(**) git grep "bool$" and "tristate$" in Kconfig files under net/ yields
a bit more, but here you already set 5, who knows. Still, even if it's
only 20 in the end that's too much.

johannes


2019-09-10 09:25:59

by Jeff Johnson

[permalink] [raw]
Subject: Re: [PATCH v2] net: enable wireless core features with LEGACY_WEXT_ALLCONFIG

On 2019-09-09 08:44, Johannes Berg wrote:
> Also, you probably know this, but in this particular case you really
> should just get rid of your wext dependencies

This.

Particularly for one out-of-tree driver with which I'm intimately
familiar there has been considerable recent work to make all WEXT code
correctly conditional, and nothing in the Android support should be
reliant upon WEXT.

2019-09-10 10:22:10

by Greg KH

[permalink] [raw]
Subject: Re: [PATCH v2] net: enable wireless core features with LEGACY_WEXT_ALLCONFIG

On Mon, Sep 09, 2019 at 07:24:29AM -0700, Mark Salyzyn wrote:
> On 9/6/19 4:30 PM, Greg KH wrote:
> > On Fri, Sep 06, 2019 at 12:24:00PM -0700, Mark Salyzyn wrote:
> > > In embedded environments the requirements are to be able to pick and
> > > chose which features one requires built into the kernel. If an
> > > embedded environment wants to supports loading modules that have been
> > > kbuilt out of tree, there is a need to enable hidden configurations
> > > for legacy wireless core features to provide the API surface for
> > > them to load.
> > >
> > > Introduce CONFIG_LEGACY_WEXT_ALLCONFIG to select all legacy wireless
> > > extension core features by activating in turn all the associated
> > > hidden configuration options, without having to specifically select
> > > any wireless module(s).
> > >
> > > Signed-off-by: Mark Salyzyn <[email protected]>
> > > Cc: [email protected]
> > > Cc: Johannes Berg <[email protected]>
> > > Cc: "David S. Miller" <[email protected]>
> > > Cc: Marcel Holtmann <[email protected]>
> > > Cc: [email protected]
> > > Cc: [email protected]
> > > Cc: [email protected]
> > > Cc: [email protected] # 4.19
> > > ---
> > > v2: change name and documentation to CONFIG_LEGACY_WEXT_ALLCONFIG
> > > ---
> > > net/wireless/Kconfig | 14 ++++++++++++++
> > > 1 file changed, 14 insertions(+)
> > >
> > > diff --git a/net/wireless/Kconfig b/net/wireless/Kconfig
> > > index 67f8360dfcee..0d646cf28de5 100644
> > > --- a/net/wireless/Kconfig
> > > +++ b/net/wireless/Kconfig
> > > @@ -17,6 +17,20 @@ config WEXT_SPY
> > > config WEXT_PRIV
> > > bool
> > > +config LEGACY_WEXT_ALLCONFIG
> > > + bool "allconfig for legacy wireless extensions"
> > > + select WIRELESS_EXT
> > > + select WEXT_CORE
> > > + select WEXT_PROC
> > > + select WEXT_SPY
> > > + select WEXT_PRIV
> > > + help
> > > + Config option used to enable all the legacy wireless extensions to
> > > + the core functionality used by add-in modules.
> > > +
> > > + If you are not building a kernel to be used for a variety of
> > > + out-of-kernel built wireless modules, say N here.
> > > +
> > > config CFG80211
> > > tristate "cfg80211 - wireless configuration API"
> > > depends on RFKILL || !RFKILL
> > > --
> > > 2.23.0.187.g17f5b7556c-goog
> > >
> > How is this patch applicable to stable kernels???
>
> A) worth a shot ;-}

Not nice, please, you know better :)

> B) there is a shortcoming in _all_ kernel versions with respect to hidden
> configurations options like this, hoping to set one precedent in how to
> handle them if acceptable to the community.

That's fine, but it's a new feature, not for stable.

> C) [AGENDA ALERT] Android _will_ be back-porting this to android-4.19 kernel
> anyway, would help maintenance if via stable. <holding hat in hand>

That's fine, lots of distros backport loads of stuff for new features
for stuff that is upstream. That's trivial to do, don't try to abuse
the stable tree for new features like this please. It only makes
maintainers grumpy when you do so :(

> D) Not an ABI or interface break, does not introduce instability, but rather
> keeps downstream kernels of any distributions from having to hack in their
> own alternate means of dealing with this problem leading to further
> fragmentation.

Again, new feature, not fixing a bug, so not applicable for stable.

For penance I require a handwritten copy of:
https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html

thanks,

greg k-h