2009-03-21 22:11:52

by Christian Lamparter

[permalink] [raw]
Subject: [PATCH 5/5] ar9170: update Makefile, Kconfig and MAINTAINERS

This patch update all necessary Makefile and Kconfig files.

Now you can then enable ar9170 in the kernel configuration under:
Device Drivers --->
[*] Network device support --->
Wireless LAN --->
[*] Wireless LAN (IEEE 802.11)
<M> Atheros AR9170 support
<M> Atheros AR9170 USB support

Signed-off-by: Christian Lamparter <[email protected]>
---
John,

This is the last patch of this series. As far as I can _test_,
this driver is ready for wireless-testing. I hope you agree, with me.
I'll look into Alina's issue, once I've received more information.

Regards,
Chr
---
diff --git a/MAINTAINERS b/MAINTAINERS
index 1ba59d8..f0b1c45 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -765,6 +765,14 @@ L: [email protected]
L: [email protected]
S: Supported

+ATHEROS AR9170 WIRELESS DRIVER
+P: Christian Lamparter
+M: [email protected]
+L: [email protected]
+W: http://wireless.kernel.org/en/users/Drivers/ar9170
+S: Maintained
+F: drivers/net/wireless/ar9170/
+
ATI_REMOTE2 DRIVER
P: Ville Syrjala
M: [email protected]
diff --git a/drivers/net/wireless/Kconfig b/drivers/net/wireless/Kconfig
index 612fffe..8a08235 100644
--- a/drivers/net/wireless/Kconfig
+++ b/drivers/net/wireless/Kconfig
@@ -485,6 +485,7 @@ config MWL8K
source "drivers/net/wireless/p54/Kconfig"
source "drivers/net/wireless/ath5k/Kconfig"
source "drivers/net/wireless/ath9k/Kconfig"
+source "drivers/net/wireless/ar9170/Kconfig"
source "drivers/net/wireless/ipw2x00/Kconfig"
source "drivers/net/wireless/iwlwifi/Kconfig"
source "drivers/net/wireless/hostap/Kconfig"
diff --git a/drivers/net/wireless/Makefile b/drivers/net/wireless/Makefile
index d780487..5e7c9ac 100644
--- a/drivers/net/wireless/Makefile
+++ b/drivers/net/wireless/Makefile
@@ -57,5 +57,6 @@ obj-$(CONFIG_P54_COMMON) += p54/

obj-$(CONFIG_ATH5K) += ath5k/
obj-$(CONFIG_ATH9K) += ath9k/
+obj-$(CONFIG_AR9170_COMMON) += ar9170/

obj-$(CONFIG_MAC80211_HWSIM) += mac80211_hwsim.o
diff --git a/drivers/net/wireless/ar9170/Kconfig b/drivers/net/wireless/ar9170/Kconfig
new file mode 100644
index 0000000..f661187
--- /dev/null
+++ b/drivers/net/wireless/ar9170/Kconfig
@@ -0,0 +1,28 @@
+config AR9170_COMMON
+ tristate "Atheros AR9170 support"
+ depends on WLAN_80211 && MAC80211 && EXPERIMENTAL
+ help
+ This is common code for AR9170 based devices.
+ This module does nothing by itself - the USB/(SPI) frontends
+ also need to be enabled in order to support any devices.
+
+ Say Y if you have the hardware, or M to build a module called
+ ar9170common.
+
+config AR9170_USB
+ tristate "Atheros AR9170 USB support"
+ depends on AR9170_COMMON && USB
+ select FW_LOADER
+ help
+ This is a driver for the Atheros "otus" 802.11n USB devices.
+
+ These devices require additional firmware (2 files).
+ For now, these files can be downloaded from here:
+ http://wireless.kernel.org/en/users/Drivers/ar9170
+
+ If you choose to build a module, it'll be called ar9170usb.
+
+config AR9170_LEDS
+ bool
+ depends on AR9170_COMMON && MAC80211_LEDS && (LEDS_CLASS = y || LEDS_CLASS = AR9170_COMMON)
+ default y
diff --git a/drivers/net/wireless/ar9170/Makefile b/drivers/net/wireless/ar9170/Makefile
new file mode 100644
index 0000000..3f0e468
--- /dev/null
+++ b/drivers/net/wireless/ar9170/Makefile
@@ -0,0 +1,5 @@
+ar9170common-objs += main.o cmd.o mac.o phy.o led.o
+ar9170usb-objs += usb.o
+
+obj-$(CONFIG_AR9170_COMMON) += ar9170common.o
+obj-$(CONFIG_AR9170_USB) += ar9170usb.o


2009-03-23 14:29:16

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH 5/5] ar9170: update Makefile, Kconfig and MAINTAINERS

On Sat, 2009-03-21 at 23:11 +0100, Christian Lamparter wrote:

> +config AR9170_COMMON
> + tristate "Atheros AR9170 support"
> + depends on WLAN_80211 && MAC80211 && EXPERIMENTAL
> + help
> + This is common code for AR9170 based devices.
> + This module does nothing by itself - the USB/(SPI) frontends
> + also need to be enabled in order to support any devices.
> +
> + Say Y if you have the hardware, or M to build a module called
> + ar9170common.
> +
> +config AR9170_USB
> + tristate "Atheros AR9170 USB support"
> + depends on AR9170_COMMON && USB
> + select FW_LOADER
> + help
> + This is a driver for the Atheros "otus" 802.11n USB devices.
> +
> + These devices require additional firmware (2 files).
> + For now, these files can be downloaded from here:
> + http://wireless.kernel.org/en/users/Drivers/ar9170
> +
> + If you choose to build a module, it'll be called ar9170usb.
> +
> +config AR9170_LEDS
> + bool
> + depends on AR9170_COMMON && MAC80211_LEDS && (LEDS_CLASS = y || LEDS_CLASS = AR9170_COMMON)
> + default y
> diff --git a/drivers/net/wireless/ar9170/Makefile b/drivers/net/wireless/ar9170/Makefile
> new file mode 100644
> index 0000000..3f0e468
> --- /dev/null
> +++ b/drivers/net/wireless/ar9170/Makefile
> @@ -0,0 +1,5 @@
> +ar9170common-objs += main.o cmd.o mac.o phy.o led.o
> +ar9170usb-objs += usb.o
> +
> +obj-$(CONFIG_AR9170_COMMON) += ar9170common.o
> +obj-$(CONFIG_AR9170_USB) += ar9170usb.o

I think it would make sense to link them into the same module as long as
we don't have a second user of the common code. I actually doubt we will
see a second user of the common code at all, even if it is in theory
possible with the hardware design.

johannes


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

2009-03-24 07:41:06

by Johannes Berg

[permalink] [raw]
Subject: Re: [PATCH 5/5] ar9170: update Makefile, Kconfig and MAINTAINERS

On Tue, 2009-03-24 at 01:26 +0100, Christian Lamparter wrote:

> Shh, there's a secret plan, see ar9170/main.c
>
> /*
> * BIG FAT TODO:
> *
> * By the looks of things: these devices share a lot of things like
> * EEPROM layout/design and PHY code with other Atheros WIFI products.
> * So this driver/library will eventually become ath9k code... or vice versa ;-)
> */
>
> And the ath5k<->ath9k merge could provide some "helper" function for this
> driver as well... (wishful thinking, but anyway...)

_Very_ wishful thinking -- only very small parts of the design are
really shared, the PHY stuff, which happens to be relevant to the
eeprom.

> Meanwhile, what about a config option that can be enabled to
> integrate everything into the front-end module (ar9170usb)?
> ( However, I don't think this config solution will stand a chance ;-)
> and we all come to the same "all-in-one works best" conclusion. )

This seems like a pointless option. Why not just change the Kconfig file
to remove the common option and link both files into one binary,
removing all EXPORT_SYMBOLs?

johannes


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

2009-03-24 15:22:00

by Christian Lamparter

[permalink] [raw]
Subject: [PATCH] ar9170: single module build

This patch restores all-in-one module build procedure for ar9170.

Signed-off-by: Christian Lamparter <[email protected]>
---
On Tuesday 24 March 2009 08:41:01 Johannes Berg wrote:
> > And the ath5k<->ath9k merge could provide some "helper" function for this
> > driver as well... (wishful thinking, but anyway...)
>
> _Very_ wishful thinking -- only very small parts of the design are
> really shared, the PHY stuff, which happens to be relevant to the
> eeprom.
small? regd.c, eeprom.c, ani.c, calib.c, phy.c (including some register
definitions) and code for LED/Bluetooth Coex?/Rfkill?

that's nearly a third of ath9k. However: Agreed!
Lets wait and see what Atheros' is doing/planing.

> > Meanwhile, what about a config option that can be enabled to
> > integrate everything into the front-end module (ar9170usb)?
> > ( However, I don't think this config solution will stand a chance ;-)
> > and we all come to the same "all-in-one works best" conclusion. )
> This seems like a pointless option. Why not just change the Kconfig file
> to remove the common option and link both files into one binary,
> removing all EXPORT_SYMBOLs?
Done!
---
On Tuesday 24 March 2009 00:35:22 Luis R. Rodriguez wrote:
> The MACs are completely different so if there is some code sharing possible
> it may be difficult to find but it would certainly be welcomed!
MAC with its firmware is a zd12xx derivate, true...
the PHY chips are AR9101/AR9102/AR9104, right?

>Future Atheros 11n USB devices will use a different MAC and therefore expect
>them to be different. I am not sure if in the future we can share but
>I won't know for sure for a little while.
That's really good to hear!
---
diff --git a/drivers/net/wireless/Makefile b/drivers/net/wireless/Makefile
index 5e7c9ac..50e7fba 100644
--- a/drivers/net/wireless/Makefile
+++ b/drivers/net/wireless/Makefile
@@ -57,6 +57,6 @@ obj-$(CONFIG_P54_COMMON) += p54/

obj-$(CONFIG_ATH5K) += ath5k/
obj-$(CONFIG_ATH9K) += ath9k/
-obj-$(CONFIG_AR9170_COMMON) += ar9170/
+obj-$(CONFIG_AR9170_USB) += ar9170/

obj-$(CONFIG_MAC80211_HWSIM) += mac80211_hwsim.o
diff --git a/drivers/net/wireless/ar9170/Kconfig b/drivers/net/wireless/ar9170/Kconfig
index f661187..de4281f 100644
--- a/drivers/net/wireless/ar9170/Kconfig
+++ b/drivers/net/wireless/ar9170/Kconfig
@@ -1,17 +1,6 @@
-config AR9170_COMMON
- tristate "Atheros AR9170 support"
- depends on WLAN_80211 && MAC80211 && EXPERIMENTAL
- help
- This is common code for AR9170 based devices.
- This module does nothing by itself - the USB/(SPI) frontends
- also need to be enabled in order to support any devices.
-
- Say Y if you have the hardware, or M to build a module called
- ar9170common.
-
config AR9170_USB
- tristate "Atheros AR9170 USB support"
- depends on AR9170_COMMON && USB
+ tristate "Atheros AR9170 802.11n USB support"
+ depends on USB && MAC80211 && WLAN_80211 && EXPERIMENTAL
select FW_LOADER
help
This is a driver for the Atheros "otus" 802.11n USB devices.
@@ -24,5 +13,5 @@ config AR9170_USB

config AR9170_LEDS
bool
- depends on AR9170_COMMON && MAC80211_LEDS && (LEDS_CLASS = y || LEDS_CLASS = AR9170_COMMON)
+ depends on AR9170_USB && MAC80211_LEDS && (LEDS_CLASS = y || LEDS_CLASS = AR9170_USB)
default y
diff --git a/drivers/net/wireless/ar9170/Makefile b/drivers/net/wireless/ar9170/Makefile
index 59b174d..8d91c7e 100644
--- a/drivers/net/wireless/ar9170/Makefile
+++ b/drivers/net/wireless/ar9170/Makefile
@@ -1,5 +1,3 @@
-ar9170common-objs += main.o cmd.o mac.o phy.o led.o
-ar9170usb-objs += usb.o
+ar9170usb-objs := usb.o main.o cmd.o mac.o phy.o led.o

-obj-$(CONFIG_AR9170_COMMON) += ar9170common.o
obj-$(CONFIG_AR9170_USB) += ar9170usb.o
diff --git a/drivers/net/wireless/ar9170/cmd.c b/drivers/net/wireless/ar9170/cmd.c
index fd5625c..f57a620 100644
--- a/drivers/net/wireless/ar9170/cmd.c
+++ b/drivers/net/wireless/ar9170/cmd.c
@@ -127,4 +127,3 @@ int ar9170_echo_test(struct ar9170 *ar, u32 v)

return 0;
}
-EXPORT_SYMBOL_GPL(ar9170_echo_test);
diff --git a/drivers/net/wireless/ar9170/main.c b/drivers/net/wireless/ar9170/main.c
index f8c2357..5996ff9 100644
--- a/drivers/net/wireless/ar9170/main.c
+++ b/drivers/net/wireless/ar9170/main.c
@@ -37,14 +37,6 @@
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/

-/*
- * BIG FAT TODO:
- *
- * By the looks of things: these devices share a lot of things like
- * EEPROM layout/design and PHY code with other Atheros WIFI products.
- * So this driver/library will eventually become ath9k code... or vice versa ;-)
- */
-
#include <linux/init.h>
#include <linux/module.h>
#include <linux/etherdevice.h>
@@ -56,9 +48,6 @@
static int modparam_nohwcrypt;
module_param_named(nohwcrypt, modparam_nohwcrypt, bool, S_IRUGO);
MODULE_PARM_DESC(nohwcrypt, "Disable hardware encryption.");
-MODULE_AUTHOR("Johannes Berg <[email protected]>");
-MODULE_LICENSE("GPL");
-MODULE_DESCRIPTION("Atheros shared code for AR9170 wireless devices");

#define RATE(_bitrate, _hw_rate, _txpidx, _flags) { \
.bitrate = (_bitrate), \
@@ -247,7 +236,6 @@ void ar9170_handle_tx_status(struct ar9170 *ar, struct sk_buff *skb,
skb_pull(skb, sizeof(struct ar9170_tx_control));
ieee80211_tx_status_irqsafe(ar->hw, skb);
}
-EXPORT_SYMBOL_GPL(ar9170_handle_tx_status);

static struct sk_buff *ar9170_find_skb_in_queue(struct ar9170 *ar,
const u8 *mac,
@@ -630,13 +618,6 @@ static void ar9170_handle_mpdu(struct ar9170 *ar, u8 *buf, int len)
ieee80211_rx_irqsafe(ar->hw, skb, &status);
}

-/*
- * TODO:
- * It looks like AR9170 supports more than just the USB transport interface.
- * Unfortunately, there is no available information what parts of the
- * precendent and following code fragments is device specific and what not.
- * For now, everything stays here, until some SPI chips pop up.
- */
void ar9170_rx(struct ar9170 *ar, struct sk_buff *skb)
{
unsigned int i, tlen, resplen;
@@ -694,7 +675,6 @@ void ar9170_rx(struct ar9170 *ar, struct sk_buff *skb)
printk(KERN_ERR "%s: buffer remains!\n",
wiphy_name(ar->hw->wiphy));
}
-EXPORT_SYMBOL_GPL(ar9170_rx);

#define AR9170_FILL_QUEUE(queue, ai_fs, cwmin, cwmax, _txop) \
do { \
@@ -1582,7 +1562,6 @@ void *ar9170_alloc(size_t priv_size)

return ar;
}
-EXPORT_SYMBOL_GPL(ar9170_alloc);

static int ar9170_read_eeprom(struct ar9170 *ar)
{
@@ -1680,7 +1659,6 @@ err_unreg:
err_out:
return err;
}
-EXPORT_SYMBOL_GPL(ar9170_register);

void ar9170_unregister(struct ar9170 *ar)
{
@@ -1691,21 +1669,3 @@ void ar9170_unregister(struct ar9170 *ar)
ieee80211_unregister_hw(ar->hw);
mutex_destroy(&ar->mutex);
}
-EXPORT_SYMBOL_GPL(ar9170_unregister);
-
-static int __init ar9170_init(void)
-{
- if (modparam_nohwcrypt)
- printk(KERN_INFO "ar9170: cryptographic acceleration "
- "disabled.\n");
-
- return 0;
-}
-
-static void __exit ar9170_exit(void)
-{
-
-}
-
-module_init(ar9170_init);
-module_exit(ar9170_exit);
diff --git a/drivers/net/wireless/ar9170/usb.c b/drivers/net/wireless/ar9170/usb.c
index ede511e..ad29684 100644
--- a/drivers/net/wireless/ar9170/usb.c
+++ b/drivers/net/wireless/ar9170/usb.c
@@ -47,9 +47,10 @@
#include "hw.h"
#include "usb.h"

+MODULE_AUTHOR("Johannes Berg <[email protected]>");
MODULE_AUTHOR("Christian Lamparter <[email protected]>");
MODULE_LICENSE("GPL");
-MODULE_DESCRIPTION("USB Driver for Atheros AR9170 based devices");
+MODULE_DESCRIPTION("Atheros AR9170 802.11n USB wireless");
MODULE_FIRMWARE("ar9170-1.fw");
MODULE_FIRMWARE("ar9170-2.fw");


2009-03-24 00:26:16

by Christian Lamparter

[permalink] [raw]
Subject: Re: [PATCH 5/5] ar9170: update Makefile, Kconfig and MAINTAINERS

On Monday 23 March 2009 15:29:11 Johannes Berg wrote:
>
> I think it would make sense to link them into the same module as long as
> we don't have a second user of the common code. I actually doubt we will
> see a second user of the common code at all, even if it is in theory
> possible with the hardware design.
Shh, there's a secret plan, see ar9170/main.c

/*
* BIG FAT TODO:
*
* By the looks of things: these devices share a lot of things like
* EEPROM layout/design and PHY code with other Atheros WIFI products.
* So this driver/library will eventually become ath9k code... or vice versa ;-)
*/

And the ath5k<->ath9k merge could provide some "helper" function for this
driver as well... (wishful thinking, but anyway...)

Meanwhile, what about a config option that can be enabled to
integrate everything into the front-end module (ar9170usb)?
( However, I don't think this config solution will stand a chance ;-)
and we all come to the same "all-in-one works best" conclusion. )
---
diff --git a/drivers/net/wireless/ar9170/Kconfig b/drivers/net/wireless/ar9170/Kconfig
index f661187..5272940 100644
--- a/drivers/net/wireless/ar9170/Kconfig
+++ b/drivers/net/wireless/ar9170/Kconfig
@@ -22,6 +22,16 @@ config AR9170_USB

If you choose to build a module, it'll be called ar9170usb.

+config AR9170_INTEGRATE_COMMON
+ bool "Integrate common code into front-end modules"
+ depends on AR9170_COMMON
+ help
+ If this option is set, the common code will be
+ integrated into the front-end modules instead
+ of being linked into a seperate module.
+
+ If unsure, say N.
+
config AR9170_LEDS
bool
depends on AR9170_COMMON && MAC80211_LEDS && (LEDS_CLASS = y || LEDS_CLASS = AR9170_COMMON)
diff --git a/drivers/net/wireless/ar9170/Makefile b/drivers/net/wireless/ar9170/Makefile
index 59b174d..868a520 100644
--- a/drivers/net/wireless/ar9170/Makefile
+++ b/drivers/net/wireless/ar9170/Makefile
@@ -1,5 +1,15 @@
+ifdef CONFIG_AR9170_INTEGRATE_COMMON
+
+ar9170usb-objs += usb.o main.o cmd.o mac.o phy.o led.o
+
+obj-$(CONFIG_AR9170_USB) += ar9170usb.o
+
+else
+
ar9170common-objs += main.o cmd.o mac.o phy.o led.o
ar9170usb-objs += usb.o

obj-$(CONFIG_AR9170_COMMON) += ar9170common.o
obj-$(CONFIG_AR9170_USB) += ar9170usb.o
+
+endif
diff --git a/drivers/net/wireless/ar9170/main.c b/drivers/net/wireless/ar9170/main.c
index f8c2357..ec03df6 100644
--- a/drivers/net/wireless/ar9170/main.c
+++ b/drivers/net/wireless/ar9170/main.c
@@ -57,8 +57,10 @@ static int modparam_nohwcrypt;
module_param_named(nohwcrypt, modparam_nohwcrypt, bool, S_IRUGO);
MODULE_PARM_DESC(nohwcrypt, "Disable hardware encryption.");
MODULE_AUTHOR("Johannes Berg <[email protected]>");
+#ifndef CONFIG_AR9170_INTEGRATE_COMMON
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("Atheros shared code for AR9170 wireless devices");
+#endif /* CONFIG_AR9170_INTEGRATE_COMMON */

#define RATE(_bitrate, _hw_rate, _txpidx, _flags) { \
.bitrate = (_bitrate), \
@@ -1693,6 +1695,7 @@ void ar9170_unregister(struct ar9170 *ar)
}
EXPORT_SYMBOL_GPL(ar9170_unregister);

+#ifndef CONFIG_AR9170_INTEGRATE_COMMON
static int __init ar9170_init(void)
{
if (modparam_nohwcrypt)
@@ -1709,3 +1712,4 @@ static void __exit ar9170_exit(void)

module_init(ar9170_init);
module_exit(ar9170_exit);
+#endif /* CONFIG_AR9170_INTEGRATE_COMMON */

2009-03-24 00:36:00

by Luis R. Rodriguez

[permalink] [raw]
Subject: Re: [PATCH 5/5] ar9170: update Makefile, Kconfig and MAINTAINERS

On Mon, Mar 23, 2009 at 05:26:12PM -0700, Christian Lamparter wrote:
> On Monday 23 March 2009 15:29:11 Johannes Berg wrote:
> >
> > I think it would make sense to link them into the same module as long as
> > we don't have a second user of the common code. I actually doubt we will
> > see a second user of the common code at all, even if it is in theory
> > possible with the hardware design.
> Shh, there's a secret plan, see ar9170/main.c
>
> /*
> * BIG FAT TODO:
> *
> * By the looks of things: these devices share a lot of things like
> * EEPROM layout/design and PHY code with other Atheros WIFI products.
> * So this driver/library will eventually become ath9k code... or vice versa ;-)
> */

The MACs are completely different so if there is some code sharing possible
it may be difficult to find but it would certainly be welcomed!

> And the ath5k<->ath9k merge could provide some "helper" function for this
> driver as well... (wishful thinking, but anyway...)

Yeah we'll see.

> Meanwhile, what about a config option that can be enabled to
> integrate everything into the front-end module (ar9170usb)?
> ( However, I don't think this config solution will stand a chance ;-)
> and we all come to the same "all-in-one works best" conclusion. )

Future Atheros 11n USB devices will use a different MAC and therefore expect
them to be different. I am not sure if in the future we can share but
I won't know for sure for a little while.

Its your driver though so your call. I also just don't see where things
can be immediately shared right now but do welcome the work to do so.

Luis