On Wed, 2009-06-03 at 20:15 +0100, Dave wrote: > Johannes Berg wrote: > > * iwm doesn't depend on cfg80211 or wireless extensions > > * rndis wlan selects cfg80211 - needs to depend > > * mac80211 selects cfg80211 - needs to depend > > Hmm. Consider: > > 1. User using a rndis_wlan device on old kernel with cfg80211 unselected. > 2. Upgrades kernel with make old_config > > Result: the rndis_wlan driver is no longer configured to build. > > I don't think it's a big issue, as you can reconfigure and rebuild as > soon as you realise. But you may have to 'realise' without google access. Yeah, I know that can happen. That's why I added the note that gets displayed if you _don't_ have cfg80211 instead of mac80211 when it can't be selected. I don't think it's a huge issue. > The only reason I'm thinking of this is because orinoco may be in the > same boat shortly. Ditto other wireless drivers as they get converted. > So I had a play with Kconfig. How about something like the patch below > instead? > > cfg80211 should just get autoselected in the most appropriate mode, and > drivers get the same restrictions as cfg80211. The option setting > appears to work fine, but I haven't done any build testing. > > It might be possible to chain things like this, so mac80211 could be > done in the same way. But I guess we wouldn't want too much of this > going on... > > > > Dave. > > --- > diff --git a/drivers/net/wireless/Kconfig b/drivers/net/wireless/Kconfig > index a67d292..9038bd6 100644 > --- a/drivers/net/wireless/Kconfig > +++ b/drivers/net/wireless/Kconfig > @@ -333,11 +333,12 @@ config USB_ZD1201 > config USB_NET_RNDIS_WLAN > tristate "Wireless RNDIS USB support" > depends on USB && WLAN_80211 && EXPERIMENTAL > + depends on CFG80211_AS_MODULE > select USB_USBNET > select USB_NET_CDCETHER > select USB_NET_RNDIS_HOST > select WIRELESS_EXT > - select CFG80211 > + select CFG80211_USED > ---help--- > This is a driver for wireless RNDIS devices. > These are USB based adapters found in devices such as: > diff --git a/net/mac80211/Kconfig b/net/mac80211/Kconfig > index 9cbf545..2de2bd8 100644 > --- a/net/mac80211/Kconfig > +++ b/net/mac80211/Kconfig > @@ -1,12 +1,14 @@ > +# If cfg80211 has to be configured as a module, so do we > config MAC80211 > tristate "Generic IEEE 802.11 Networking Stack (mac80211)" > + depends on CFG80211_AS_MODULE > select CRYPTO > select CRYPTO_ECB > select CRYPTO_ARC4 > select CRYPTO_AES > select CRC32 > select WIRELESS_EXT > - select CFG80211 > + select CFG80211_USED > ---help--- > This option enables the hardware independent IEEE 802.11 > networking stack. > diff --git a/net/wireless/Kconfig b/net/wireless/Kconfig > index 4428dd5..d3f08c4 100644 > --- a/net/wireless/Kconfig > +++ b/net/wireless/Kconfig > @@ -1,6 +1,23 @@ > -config CFG80211 > - tristate "Improved wireless configuration API" > +# Selected by drivers which use cfg80211 > +config CFG80211_USED > + tristate > + > +# Is cfg80211 restricted to being a module by its dependencies? > +# Drivers must depend on this so they inherit the restriction. > +# > +# Careful: m means that CFG80211 is restricted to being a module > +# Both n and y mean there is no restriction > +config CFG80211_AS_MODULE > + tristate > depends on RFKILL || !RFKILL > + default y > + > +# Avoid presenting a UI option so we inherit the value of CFG80211_USED > +# If one driver is set to m, and another to y, CFG80211_USED will be y. > +config CFG80211 > + tristate > + depends on CFG80211_AS_MODULE > + default CFG80211_USED Doesn't that mean you cannot ever select cfg80211 by itself? That's kinda strange too. johannes
Attachment:
signature.asc
Description: This is a digitally signed message part