2009-12-01 23:46:10

by Daniel Ritz

[permalink] [raw]
Subject: [PATCH] lib80211: make crypt modules configurable by user

Make the crypt modules configurable by user. Normally drivers select them
when needed, but out-of-tree drivers can't do that. Having a minimal
kernel with just the things required won't select any of those modules,
resulting in the external driver to be close to useless (ie. it can scan
the networks, but cannot join a single one).

Signed-off-by: Daniel Ritz <[email protected]>
---
net/wireless/Kconfig | 23 ++++++++++++++++++-----
1 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/net/wireless/Kconfig b/net/wireless/Kconfig
index abf7ca3..48f60ab 100644
--- a/net/wireless/Kconfig
+++ b/net/wireless/Kconfig
@@ -123,17 +123,30 @@ config LIB80211
This options enables a library of common routines used
by IEEE802.11 wireless LAN drivers.

- Drivers should select this themselves if needed. Say Y if
- you want this built into your kernel.
+ Drivers should select this themselves if needed, but for
+ out-of-tree drivers manually selecting it might be required.
+ Say Y if you want this built into your kernel.

config LIB80211_CRYPT_WEP
- tristate
+ tristate "lib80211 WEP support module"
+ depends on LIB80211
+ default m
+ help
+ This adds WEP support to lib80211.

config LIB80211_CRYPT_CCMP
- tristate
+ tristate "lib80211 CCMP support module"
+ depends on LIB80211
+ default m
+ help
+ This adds CCMP support to lib80211.

config LIB80211_CRYPT_TKIP
- tristate
+ tristate "lib80211 TKIP support module"
+ depends on LIB80211
+ default m
+ help
+ This adds TKIP support to lib80211.

config LIB80211_DEBUG
bool "lib80211 debugging messages"
--
1.6.3.3





2009-12-01 23:59:29

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH] lib80211: make crypt modules configurable by user

On Wed, 2009-12-02 at 00:46 +0100, Daniel Ritz wrote:
> Make the crypt modules configurable by user. Normally drivers select them
> when needed, but out-of-tree drivers can't do that. Having a minimal
> kernel with just the things required won't select any of those modules,
> resulting in the external driver to be close to useless (ie. it can scan
> the networks, but cannot join a single one).

So ... what makes you think anyone cares about out of tree drivers?

From my POV a clear NACK on this, since it makes the kernel
configuration more complex for no useful reason.

johannes


Attachments:
signature.asc (801.00 B)
This is a digitally signed message part

2009-12-03 09:20:45

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH] lib80211: make crypt modules configurable by user

Hi,


Please do me a favour and explain _why_ you want to change anything
before you do. I'm not really interested in pointless chit-chat about
lib80211 kconfig.

> ok. but looking at it again, there are some minor problems that have
> nothing to do with out-of-tree-drivers:
> - it's possible for the user to compile-in lib80211, but not the crypt
> modules

Yes, the correct solution to that inconsistency is to remove the
lib80211 config symbol from the user's view... then it'll always be the
same the driver is ...

> - the crypt modules depend on crypto API and modules, but it's the WLAN
> drivers that select them. duplicated selects for each driver.

Yes, well ...

> so how about the following?

The following patch (snipped) was clearly not tested at all. I'll leave
it to you to figure out why it's completely and utterly broken, but I'll
give you a hint: it has something to do with "select".

Please come back when only you have a problem to solve.

johannes


Attachments:
signature.asc (801.00 B)
This is a digitally signed message part

2009-12-02 22:38:22

by Daniel Ritz

[permalink] [raw]
Subject: Re: [PATCH] lib80211: make crypt modules configurable by user

On Wed, 2009-12-02 at 00:59 +0100, Johannes Berg wrote:
> On Wed, 2009-12-02 at 00:46 +0100, Daniel Ritz wrote:
> > Make the crypt modules configurable by user. Normally drivers select them
> > when needed, but out-of-tree drivers can't do that. Having a minimal
> > kernel with just the things required won't select any of those modules,
> > resulting in the external driver to be close to useless (ie. it can scan
> > the networks, but cannot join a single one).
>
> So ... what makes you think anyone cares about out of tree drivers?

hmm...dunno. nothing i guess :)

>
> From my POV a clear NACK on this, since it makes the kernel
> configuration more complex for no useful reason.

ok. but looking at it again, there are some minor problems that have
nothing to do with out-of-tree-drivers:
- it's possible for the user to compile-in lib80211, but not the crypt
modules
- the crypt modules depend on crypto API and modules, but it's the WLAN
drivers that select them. duplicated selects for each driver.

so how about the following?
- allow the user to compile-in the crypto modules as well
- select the dependencies in the crypt modules, not the drivers

rgds
-daniel


diff --git a/drivers/net/wireless/hostap/Kconfig b/drivers/net/wireless/hostap/Kconfig
index c15db22..33b1080 100644
--- a/drivers/net/wireless/hostap/Kconfig
+++ b/drivers/net/wireless/hostap/Kconfig
@@ -2,13 +2,6 @@ config HOSTAP
tristate "IEEE 802.11 for Host AP (Prism2/2.5/3 and WEP/TKIP/CCMP)"
depends on WLAN_80211
select WIRELESS_EXT
- select CRYPTO
- select CRYPTO_ARC4
- select CRYPTO_ECB
- select CRYPTO_AES
- select CRYPTO_MICHAEL_MIC
- select CRYPTO_ECB
- select CRC32
select LIB80211
select LIB80211_CRYPT_WEP
select LIB80211_CRYPT_TKIP
diff --git a/drivers/net/wireless/ipw2x00/Kconfig b/drivers/net/wireless/ipw2x00/Kconfig
index a813138..3846b2b 100644
--- a/drivers/net/wireless/ipw2x00/Kconfig
+++ b/drivers/net/wireless/ipw2x00/Kconfig
@@ -152,13 +152,6 @@ config LIBIPW
tristate
depends on PCI && WLAN_80211 && CFG80211
select WIRELESS_EXT
- select CRYPTO
- select CRYPTO_ARC4
- select CRYPTO_ECB
- select CRYPTO_AES
- select CRYPTO_MICHAEL_MIC
- select CRYPTO_ECB
- select CRC32
select LIB80211
select LIB80211_CRYPT_WEP
select LIB80211_CRYPT_TKIP
diff --git a/net/wireless/Kconfig b/net/wireless/Kconfig
index abf7ca3..01b704c 100644
--- a/net/wireless/Kconfig
+++ b/net/wireless/Kconfig
@@ -127,13 +127,36 @@ config LIB80211
you want this built into your kernel.

config LIB80211_CRYPT_WEP
- tristate
+ tristate "lib80211 WEP support"
+ depends on LIB80211
+ select CRYPTO
+ select CRYPTO_ARC4
+ select CRYPTO_ECB
+ select CRC32
+ help
+ Drivers should select this themselves if needed. Say Y if
+ you want this built into your kernel.

config LIB80211_CRYPT_CCMP
- tristate
+ tristate "lib80211 CCMP support"
+ depends on LIB80211
+ select CRYPTO
+ select CRYPTO_AES
+ help
+ Drivers should select this themselves if needed. Say Y if
+ you want this built into your kernel.

config LIB80211_CRYPT_TKIP
- tristate
+ tristate "lib80211 TKIP support"
+ depends on LIB80211
+ select CRYPTO
+ select CRYPTO_ARC4
+ select CRYPTO_ECB
+ select CRYPTO_MICHAEL_MIC
+ select CRC32
+ help
+ Drivers should select this themselves if needed. Say Y if
+ you want this built into your kernel.

config LIB80211_DEBUG
bool "lib80211 debugging messages"