Linux wireless drivers development
 help / color / mirror / Atom feed
* Re: [PATCH] [compat-2.6] fix build problems
From: Luis R. Rodriguez @ 2009-09-23 19:25 UTC (permalink / raw)
  To: Hauke Mehrtens; +Cc: linux-wireless
In-Reply-To: <1253731843-1045-1-git-send-email-hauke@hauke-m.de>

On Wed, Sep 23, 2009 at 11:50 AM, Hauke Mehrtens <hauke@hauke-m.de> wrote:
> IRQ_WAKE_THREAD is not defined in kernel < 2.6.30
> in include/linux/irqreturn.h .
>
> In 09-threaded-irq.patch the condition was wrong.

Applied, thanks.

  Luis

^ permalink raw reply

* Re: Flush TX - wireless summit topic
From: Jouni Malinen @ 2009-09-23 22:58 UTC (permalink / raw)
  To: Luis R. Rodriguez
  Cc: Bob Copeland, Jouni.Malinen, Johannes Berg, linux-wireless
In-Reply-To: <43e72e890909221541u67fa291fq353327d1d55841f2@mail.gmail.com>

On Tue, Sep 22, 2009 at 03:41:50PM -0700, Luis R. Rodriguez wrote:
> Another thing we spoke about at the wireless summit was flushing TX
> prior to changing channel / scan. Bob, remember the issue with ath5k
> on the band not coinciding on received skbs since we don't do a DMA RX
> flush prior to channel change? Well one theory discussed was that we
> would see that issue disappear if we actually did a proper TX flush
> prior to channel change since we expect we would not see further
> incoming frames from our AP if we told it we were going to PS (sending
> a null func frame). If we implement a proper TX flush then the theory
> goes that we wouldn't need to do any sort of DMA flush as we would not
> have any frames pending.

I don't know where this theory is coming from, but I do not subscribe to
it ;-). The AP may very well send broadcast frames even after we
indicate the change to PS mode. In addition, other frames could
potentially be received based on RX filter settings. If we want to make
sure we do not get new pending RX frames, we need to stop the receiver
first or be prepared to handle the received frames somehow.

The number of pending RX frames would hopefully be relatively small,
though, in this kind of case. In order to process these frames
correctly, they would need to be taken care of prior to the channel
change or alternatively, with the channel parameters cached in the
driver so that they could be sent up with all the correct information
even after the channel change.

-- 
Jouni Malinen                                            PGP id EFC895FA

^ permalink raw reply

* Re: pull request: wireless-next-2.6 2009-09-23
From: David Miller @ 2009-09-23 23:24 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, netdev, linux-kernel
In-Reply-To: <20090923155339.GA14597@tuxdriver.com>

From: "John W. Linville" <linville@tuxdriver.com>
Date: Wed, 23 Sep 2009 11:53:40 -0400

> Please accept this one last round of wireless bits for the merge window.
> They are fixes for the most part, and the teams involved are very eager
> to have these for the 2.6.32 cycle.  In particular, the b43 and ath9k
> teams have some late breakers -- yes, I have reminded them of the
> process, but they are quite insistent...
> 
> Please let me know if there are problems!

Pulled, but yes you guys need to stick to pure bug fixes at
this point, please.

Also, please put the branch name, even if it's simply 'master'
in your GIT pull urls you give me.

Thanks.

^ permalink raw reply

* Re: Synching trees for BT 3.0 and a possible compat-bluetooth
From: Marcel Holtmann @ 2009-09-23 23:27 UTC (permalink / raw)
  To: Luis R. Rodriguez
  Cc: John W. Linville, Jouni.Malinen, Johannes Berg, Gaurav Jauhar,
	Senthil Balasubramanian, Jothikumar Mothilal, linux-wireless,
	Kevin Hayes
In-Reply-To: <43e72e890909221001m19f076d8n64fb012b486f666a@mail.gmail.com>

Hi Luis,

> I forgot to poke about BT 3.0 synching at the summit. To work on
> bluetooth 3.0 we'll need some synching of trees between
> wireless-testing and Marcel's bluetooth tree. Also a compat-bluetooth
> might be in order to accomplish the same as we do with
> compat-wireless, only it would seem logical to consider tying to just
> merge this with compat-wireless to get the features required for
> bluetooth 3.0; to do this having one tree with both would be nice with
> the added benefit of all the same compat-2.6.3x.[ch] files being
> reused. Synching of the trees would be required only when a feature on
> one tree is not yet available on the latest rc kernel (provided marcel
> rebases on Linus' latest rc as well, not sure), this will probably be
> important during initial implementation, not sure how much divergence
> we should expect after this goes through a release through Linus.
> 
> So any thoughts on synching bluetooth and wireless-testing other than
> doing so on a private tree for development purposes?

we don't need this right now. For the initial development of the WiFi
AMP, we will use the fact that you can create HCI RAW devices from a
driver. These are skipped by BlueZ and only show up in hciconfig. That
should be enough for testing.

Regards

Marcel



^ permalink raw reply

* Re: Flush TX - wireless summit topic
From: Luis R. Rodriguez @ 2009-09-23 23:28 UTC (permalink / raw)
  To: Jouni Malinen; +Cc: Bob Copeland, Jouni.Malinen, Johannes Berg, linux-wireless
In-Reply-To: <20090923225853.GA14625@jm.kir.nu>

On Wed, Sep 23, 2009 at 3:58 PM, Jouni Malinen <j@w1.fi> wrote:
> On Tue, Sep 22, 2009 at 03:41:50PM -0700, Luis R. Rodriguez wrote:
>> Another thing we spoke about at the wireless summit was flushing TX
>> prior to changing channel / scan. Bob, remember the issue with ath5k
>> on the band not coinciding on received skbs since we don't do a DMA RX
>> flush prior to channel change? Well one theory discussed was that we
>> would see that issue disappear if we actually did a proper TX flush
>> prior to channel change since we expect we would not see further
>> incoming frames from our AP if we told it we were going to PS (sending
>> a null func frame). If we implement a proper TX flush then the theory
>> goes that we wouldn't need to do any sort of DMA flush as we would not
>> have any frames pending.
>
> I don't know where this theory is coming from, but I do not subscribe to
> it ;-).

I misunderstood you then, sorry about that.

> The AP may very well send broadcast frames even after we
> indicate the change to PS mode. In addition, other frames could
> potentially be received based on RX filter settings. If we want to make
> sure we do not get new pending RX frames, we need to stop the receiver
> first or be prepared to handle the received frames somehow.

Thanks for the clarification.

> The number of pending RX frames would hopefully be relatively small,
> though, in this kind of case.

Indeed.

> In order to process these frames
> correctly, they would need to be taken care of prior to the channel
> change or alternatively, with the channel parameters cached in the
> driver so that they could be sent up with all the correct information
> even after the channel change.

I'm inclined for mac80211 to force an rxflush here so that we force
all drivers to do the right thing and we'd document this as such,
instead of having to rely on each driver doing the right thing
(caching the channel for the RX'f frame). The downside to this is
obviously this can create a delay on channel change, however long it
takes to process the pending frames already sitting for us on the
DMA'd memory.

  Luis

^ permalink raw reply

* Re: Synching trees for BT 3.0 and a possible compat-bluetooth
From: Luis R. Rodriguez @ 2009-09-23 23:30 UTC (permalink / raw)
  To: Marcel Holtmann
  Cc: John W. Linville, Jouni.Malinen, Johannes Berg, Gaurav Jauhar,
	Senthil Balasubramanian, Jothikumar Mothilal, linux-wireless,
	Kevin Hayes
In-Reply-To: <1253748426.2931.9.camel@localhost.localdomain>

On Wed, Sep 23, 2009 at 4:27 PM, Marcel Holtmann <marcel@holtmann.org> wrote:
> Hi Luis,
>
>> I forgot to poke about BT 3.0 synching at the summit. To work on
>> bluetooth 3.0 we'll need some synching of trees between
>> wireless-testing and Marcel's bluetooth tree. Also a compat-bluetooth
>> might be in order to accomplish the same as we do with
>> compat-wireless, only it would seem logical to consider tying to just
>> merge this with compat-wireless to get the features required for
>> bluetooth 3.0; to do this having one tree with both would be nice with
>> the added benefit of all the same compat-2.6.3x.[ch] files being
>> reused. Synching of the trees would be required only when a feature on
>> one tree is not yet available on the latest rc kernel (provided marcel
>> rebases on Linus' latest rc as well, not sure), this will probably be
>> important during initial implementation, not sure how much divergence
>> we should expect after this goes through a release through Linus.
>>
>> So any thoughts on synching bluetooth and wireless-testing other than
>> doing so on a private tree for development purposes?
>
> we don't need this right now. For the initial development of the WiFi
> AMP, we will use the fact that you can create HCI RAW devices from a
> driver. These are skipped by BlueZ and only show up in hciconfig. That
> should be enough for testing.

Thanks Marcel, when do you expect we would need this?

  Luis

^ permalink raw reply

* Re: Flush TX - wireless summit topic
From: Luis R. Rodriguez @ 2009-09-24  0:38 UTC (permalink / raw)
  To: Jouni Malinen; +Cc: Bob Copeland, Jouni.Malinen, Johannes Berg, linux-wireless
In-Reply-To: <43e72e890909231628g340f1467ka5c02515b051285b@mail.gmail.com>

On Wed, Sep 23, 2009 at 4:28 PM, Luis R. Rodriguez <mcgrof@gmail.com> wrote:

> I'm inclined for mac80211 to force an rxflush here so that we force
> all drivers to do the right thing and we'd document this as such,
> instead of having to rely on each driver doing the right thing
> (caching the channel for the RX'f frame). The downside to this is
> obviously this can create a delay on channel change, however long it
> takes to process the pending frames already sitting for us on the
> DMA'd memory.

After reviewing this in great detail with Jouni it seems the advised
path is to implement an RX flush prior to channel change in each
driver. There is some obvious delta created upon channel change if you
force to process all pending DMA'd frames but it remains unproven that
this delta in time will actually create an issue.

  Luis

^ permalink raw reply

* wireless-testing broken
From: Kalle Valo @ 2009-09-24  1:00 UTC (permalink / raw)
  To: linux-wireless; +Cc: John W. Linville

Hi,

I upgraded to latest wireless-testing and noticed that I can't connect
anymore with my iwl3945. master-2009-09-16 still works. My syslog has
this:

Sep 24 03:53:28 tikku kernel: [  719.479190] phy0: device no longer
idle - scanning
Sep 24 03:53:31 tikku wpa_supplicant[12381]: CTRL-EVENT-SCAN-RESULTS
Sep 24 03:53:31 tikku wpa_supplicant[12381]: Trying to associate with
00:03:52:d9:27:10 (SSID='ibahn' freq=2452 MHz)
Sep 24 03:53:31 tikku wpa_supplicant[12381]: Association request to
the driver failed
Sep 24 03:53:31 tikku kernel: [  722.096782] phy0: device now idle
Sep 24 03:53:31 tikku kernel: [  722.099163] phy0: device no longer
idle - scanning
Sep 24 03:53:31 tikku wpa_supplicant[12381]: CTRL-EVENT-SCAN-RESULTS
Sep 24 03:53:31 tikku kernel: [  722.101652] phy0: device now idle
Sep 24 03:53:32 tikku kernel: [  723.101920] phy0: device no longer
idle - scanning
Sep 24 03:53:34 tikku wpa_supplicant[12381]: CTRL-EVENT-SCAN-RESULTS
Sep 24 03:53:34 tikku kernel: [  725.804837] phy0: device now idle
Sep 24 03:53:36 tikku wpa_supplicant[12381]: Authentication with
00:03:52:d9:27:10 timed out.
Sep 24 03:53:36 tikku kernel: [  727.101285] phy0: device no longer
idle - scanning
Sep 24 03:53:38 tikku wpa_supplicant[12381]: CTRL-EVENT-SCAN-RESULTS
Sep 24 03:53:38 tikku wpa_supplicant[12381]: Trying to associate with
00:03:52:d9:77:70 (SSID='ibahn' freq=2427 MHz)
Sep 24 03:53:38 tikku wpa_supplicant[12381]: Association request to
the driver failed
Sep 24 03:53:38 tikku wpa_supplicant[12381]: CTRL-EVENT-SCAN-RESULTS
Sep 24 03:53:38 tikku kernel: [  729.816160] phy0: device now idle
Sep 24 03:53:39 tikku kernel: [  730.777467] phy0: device no longer
idle - scanning
Sep 24 03:53:42 tikku wpa_supplicant[12381]: CTRL-EVENT-SCAN-RESULTS
Sep 24 03:53:42 tikku kernel: [  733.389081] phy0: device now idle
Sep 24 03:53:43 tikku wpa_supplicant[12381]: Authentication with
00:03:52:d9:77:70 timed out.
Sep 24 03:53:43 tikku kernel: [  734.737634] phy0: device no longer
idle - scanning
Sep 24 03:53:46 tikku wpa_supplicant[12381]: CTRL-EVENT-SCAN-RESULTS
Sep 24 03:53:46 tikku wpa_supplicant[12381]: Trying to associate with
00:03:52:a4:7d:b0 (SSID='ibahn' freq=2432 MHz)
Sep 24 03:53:46 tikku wpa_supplicant[12381]: Association request to
the driver failed
Sep 24 03:53:46 tikku wpa_supplicant[12381]: CTRL-EVENT-SCAN-RESULTS
Sep 24 03:53:46 tikku kernel: [  737.428317] phy0: device now idle
Sep 24 03:53:47 tikku kernel: [  738.414783] phy0: device no longer
idle - scanning
Sep 24 03:53:50 tikku wpa_supplicant[12381]: CTRL-EVENT-SCAN-RESULTS

But gotta run now, more info later.

Kalle

^ permalink raw reply

* [PATCH 3/4] ath9k_hw: print device ID if not supported
From: Luis R. Rodriguez @ 2009-09-24  3:07 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, devel, ath9k-devel, Luis R. Rodriguez
In-Reply-To: <1253761622-9530-1-git-send-email-lrodriguez@atheros.com>

Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
---
 drivers/net/wireless/ath/ath9k/hw.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c
index 7d167a1..7bf0f8c 100644
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
@@ -900,8 +900,12 @@ int ath9k_hw_init(struct ath_hw *ah)
 	struct ath_common *common = ath9k_hw_common(ah);
 	int r = 0;
 
-	if (!ath9k_hw_devid_supported(ah->hw_version.devid))
+	if (!ath9k_hw_devid_supported(ah->hw_version.devid)) {
+		ath_print(common, ATH_DBG_FATAL,
+			  "Unsupported device ID: 0x%0x\n",
+			  ah->hw_version.devid);
 		return -EOPNOTSUPP;
+	}
 
 	ath9k_hw_init_defaults(ah);
 	ath9k_hw_init_config(ah);
-- 
1.6.3.3


^ permalink raw reply related

* [PATCH 1/4] ath9k: use common read/write ops on pci and debug code
From: Luis R. Rodriguez @ 2009-09-24  3:06 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, devel, ath9k-devel, Luis R. Rodriguez
In-Reply-To: <1253761622-9530-1-git-send-email-lrodriguez@atheros.com>

PCI and debug code will not be shared between ath9k and
ath9k_htc, so make that code use the common read/write ops.

Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
---
 drivers/net/wireless/ath/ath9k/debug.c |   21 +++++++++++++--------
 drivers/net/wireless/ath/ath9k/pci.c   |    4 ++--
 2 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/debug.c b/drivers/net/wireless/ath/ath9k/debug.c
index 5dfc0e9..352914c 100644
--- a/drivers/net/wireless/ath/ath9k/debug.c
+++ b/drivers/net/wireless/ath/ath9k/debug.c
@@ -18,6 +18,11 @@
 
 #include "ath9k.h"
 
+#define REG_WRITE_D(_ah, _reg, _val) \
+	ath9k_hw_common(_ah)->ops->write((_ah), (_val), (_reg))
+#define REG_READ_D(_ah, _reg) \
+	ath9k_hw_common(_ah)->ops->read((_ah), (_reg))
+
 static unsigned int ath9k_debug = ATH_DBG_DEFAULT;
 module_param_named(debug, ath9k_debug, uint, 0);
 
@@ -82,7 +87,7 @@ static ssize_t read_file_dma(struct file *file, char __user *user_buf,
 
 	ath9k_ps_wakeup(sc);
 
-	REG_WRITE(ah, AR_MACMISC,
+	REG_WRITE_D(ah, AR_MACMISC,
 		  ((AR_MACMISC_DMA_OBS_LINE_8 << AR_MACMISC_DMA_OBS_S) |
 		   (AR_MACMISC_MISC_OBS_BUS_1 <<
 		    AR_MACMISC_MISC_OBS_BUS_MSB_S)));
@@ -94,7 +99,7 @@ static ssize_t read_file_dma(struct file *file, char __user *user_buf,
 		if (i % 4 == 0)
 			len += snprintf(buf + len, sizeof(buf) - len, "\n");
 
-		val[i] = REG_READ(ah, AR_DMADBG_0 + (i * sizeof(u32)));
+		val[i] = REG_READ_D(ah, AR_DMADBG_0 + (i * sizeof(u32)));
 		len += snprintf(buf + len, sizeof(buf) - len, "%d: %08x ",
 				i, val[i]);
 	}
@@ -144,9 +149,9 @@ static ssize_t read_file_dma(struct file *file, char __user *user_buf,
 		(val[6] & 0x0001e000) >> 13, (val[6] & 0x001e0000) >> 17);
 
 	len += snprintf(buf + len, sizeof(buf) - len, "pcu observe: 0x%x \n",
-			REG_READ(ah, AR_OBS_BUS_1));
+			REG_READ_D(ah, AR_OBS_BUS_1));
 	len += snprintf(buf + len, sizeof(buf) - len,
-			"AR_CR: 0x%x \n", REG_READ(ah, AR_CR));
+			"AR_CR: 0x%x \n", REG_READ_D(ah, AR_CR));
 
 	ath9k_ps_restore(sc);
 
@@ -363,12 +368,12 @@ static ssize_t read_file_wiphy(struct file *file, char __user *user_buf,
 				aphy->chan_idx, aphy->chan_is_ht);
 	}
 
-	put_unaligned_le32(REG_READ(sc->sc_ah, AR_STA_ID0), addr);
-	put_unaligned_le16(REG_READ(sc->sc_ah, AR_STA_ID1) & 0xffff, addr + 4);
+	put_unaligned_le32(REG_READ_D(sc->sc_ah, AR_STA_ID0), addr);
+	put_unaligned_le16(REG_READ_D(sc->sc_ah, AR_STA_ID1) & 0xffff, addr + 4);
 	len += snprintf(buf + len, sizeof(buf) - len,
 			"addr: %pM\n", addr);
-	put_unaligned_le32(REG_READ(sc->sc_ah, AR_BSSMSKL), addr);
-	put_unaligned_le16(REG_READ(sc->sc_ah, AR_BSSMSKU) & 0xffff, addr + 4);
+	put_unaligned_le32(REG_READ_D(sc->sc_ah, AR_BSSMSKL), addr);
+	put_unaligned_le16(REG_READ_D(sc->sc_ah, AR_BSSMSKU) & 0xffff, addr + 4);
 	len += snprintf(buf + len, sizeof(buf) - len,
 			"addrmask: %pM\n", addr);
 
diff --git a/drivers/net/wireless/ath/ath9k/pci.c b/drivers/net/wireless/ath/ath9k/pci.c
index a1001ff..b2a45ce 100644
--- a/drivers/net/wireless/ath/ath9k/pci.c
+++ b/drivers/net/wireless/ath/ath9k/pci.c
@@ -65,7 +65,7 @@ static bool ath_pci_eeprom_read(struct ath_common *common, u32 off, u16 *data)
 {
 	struct ath_hw *ah = (struct ath_hw *) common->ah;
 
-	(void)REG_READ(ah, AR5416_EEPROM_OFFSET + (off << AR5416_EEPROM_S));
+	common->ops->read(ah, AR5416_EEPROM_OFFSET + (off << AR5416_EEPROM_S));
 
 	if (!ath9k_hw_wait(ah,
 			   AR_EEPROM_STATUS_DATA,
@@ -75,7 +75,7 @@ static bool ath_pci_eeprom_read(struct ath_common *common, u32 off, u16 *data)
 		return false;
 	}
 
-	*data = MS(REG_READ(ah, AR_EEPROM_STATUS_DATA),
+	*data = MS(common->ops->read(ah, AR_EEPROM_STATUS_DATA),
 		   AR_EEPROM_STATUS_DATA_VAL);
 
 	return true;
-- 
1.6.3.3


^ permalink raw reply related

* [PATCH 0/4] atheros: move ath9k hw code to a module
From: Luis R. Rodriguez @ 2009-09-24  3:06 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, devel, ath9k-devel, Luis R. Rodriguez

Based on review through IRC of my RFC patches about moving ath9k hw
code onto ath/ we determined its best to separate hw code from the
ath module and instead use a separate new module. Since its shared
between ath9k and ath9k_htc and since I'm working on reducing the
number of files ath9k_htc has we'll just keep this new module,
ath9k_hw, under ath9k/ as well as the future ath9k_htc module.

This patch series was rebased as of today's wireless-testing and
applies on top of the other pending ath9k patches, specifically
on top of Senthil's patch, "ath9k: Fix bugs in handling TX power".

If you have today's wireless-testing and want to apply all
pending ath9k patches you can get all 61 patches from here:

http://bombadil.infradead.org/~mcgrof/patches/ath/2009/09/all-2009-09-23.patch

Its sha1sum is: 90b59e0c85029a89bff7c6ec064220586cc6543e

If you're working on new patches please rebase on top of these.

Luis R. Rodriguez (4):
  ath9k: use common read/write ops on pci and debug code
  ath9k: move hw code to its own module
  ath9k_hw: print device ID if not supported
  ath9k_hw: add AR9271 srev and device ID to allow hw to support ar9271

 drivers/net/wireless/ath/Makefile       |    2 +-
 drivers/net/wireless/ath/ath9k/Kconfig  |    4 ++
 drivers/net/wireless/ath/ath9k/Makefile |   27 ++++++------
 drivers/net/wireless/ath/ath9k/ani.c    |    2 +
 drivers/net/wireless/ath/ath9k/btcoex.c |    6 +++
 drivers/net/wireless/ath/ath9k/calib.c  |    3 +
 drivers/net/wireless/ath/ath9k/debug.c  |   21 ++++++----
 drivers/net/wireless/ath/ath9k/hw.c     |   71 +++++++++++++++++++++++++++++-
 drivers/net/wireless/ath/ath9k/hw.h     |    5 ++
 drivers/net/wireless/ath/ath9k/mac.c    |   30 +++++++++++++
 drivers/net/wireless/ath/ath9k/pci.c    |    4 +-
 11 files changed, 148 insertions(+), 27 deletions(-)


^ permalink raw reply

* [PATCH 4/4] ath9k_hw: add AR9271 srev and device ID to allow hw to support ar9271
From: Luis R. Rodriguez @ 2009-09-24  3:07 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, devel, ath9k-devel, Luis R. Rodriguez
In-Reply-To: <1253761622-9530-1-git-send-email-lrodriguez@atheros.com>

This allows for hw support to be enabled for ar9271.

Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
---
 drivers/net/wireless/ath/ath9k/hw.c |    4 ++--
 drivers/net/wireless/ath/ath9k/hw.h |    5 +++++
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c
index 7bf0f8c..692fd1d 100644
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
@@ -609,6 +609,7 @@ static bool ath9k_hw_devid_supported(u16 devid)
 	case AR9285_DEVID_PCIE:
 	case AR5416_DEVID_AR9287_PCI:
 	case AR5416_DEVID_AR9287_PCIE:
+	case AR9271_USB:
 		return true;
 	default:
 		break;
@@ -626,9 +627,8 @@ static bool ath9k_hw_macversion_supported(u32 macversion)
 	case AR_SREV_VERSION_9280:
 	case AR_SREV_VERSION_9285:
 	case AR_SREV_VERSION_9287:
-		return true;
-	/* Not yet */
 	case AR_SREV_VERSION_9271:
+		return true;
 	default:
 		break;
 	}
diff --git a/drivers/net/wireless/ath/ath9k/hw.h b/drivers/net/wireless/ath/ath9k/hw.h
index 773f5c4..f782c1a 100644
--- a/drivers/net/wireless/ath/ath9k/hw.h
+++ b/drivers/net/wireless/ath/ath9k/hw.h
@@ -33,13 +33,18 @@
 #include "../debug.h"
 
 #define ATHEROS_VENDOR_ID	0x168c
+
 #define AR5416_DEVID_PCI	0x0023
 #define AR5416_DEVID_PCIE	0x0024
 #define AR9160_DEVID_PCI	0x0027
 #define AR9280_DEVID_PCI	0x0029
 #define AR9280_DEVID_PCIE	0x002a
 #define AR9285_DEVID_PCIE	0x002b
+
 #define AR5416_AR9100_DEVID	0x000b
+
+#define AR9271_USB             0x9271
+
 #define	AR_SUBVENDOR_ID_NOG	0x0e11
 #define AR_SUBVENDOR_ID_NEW_A	0x7065
 #define AR5416_MAGIC		0x19641014
-- 
1.6.3.3


^ permalink raw reply related

* [PATCH 2/4] ath9k: move hw code to its own module
From: Luis R. Rodriguez @ 2009-09-24  3:07 UTC (permalink / raw)
  To: linville
  Cc: linux-wireless, devel, ath9k-devel, Luis R. Rodriguez,
	Jouni Malinen
In-Reply-To: <1253761622-9530-1-git-send-email-lrodriguez@atheros.com>

hw code for Atheros 802.11n hardware is commmon between
different chipsets. This moves this code into a separate
module, the next expected user of this code will be
the ath9k_htc module.

The ath9k/ dir is now selected by ATH9K_HW, an option which
gets selected by either ath9k or ath9k_htc, but remains
invisible for user menuconfig configuration. If either
ath9k or ath9k_htc will be compiled into the kernel
ath9k_hw will also be compiled in.

Cc: Jouni Malinen <jouni.malinen@atheros.com>
Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
---
 drivers/net/wireless/ath/Makefile       |    2 +-
 drivers/net/wireless/ath/ath9k/Kconfig  |    4 ++
 drivers/net/wireless/ath/ath9k/Makefile |   27 +++++++-------
 drivers/net/wireless/ath/ath9k/ani.c    |    2 +
 drivers/net/wireless/ath/ath9k/btcoex.c |    6 +++
 drivers/net/wireless/ath/ath9k/calib.c  |    3 ++
 drivers/net/wireless/ath/ath9k/hw.c     |   61 +++++++++++++++++++++++++++++++
 drivers/net/wireless/ath/ath9k/mac.c    |   30 +++++++++++++++
 8 files changed, 121 insertions(+), 14 deletions(-)

diff --git a/drivers/net/wireless/ath/Makefile b/drivers/net/wireless/ath/Makefile
index 5c8e6b2..8113a50 100644
--- a/drivers/net/wireless/ath/Makefile
+++ b/drivers/net/wireless/ath/Makefile
@@ -1,5 +1,5 @@
 obj-$(CONFIG_ATH5K)		+= ath5k/
-obj-$(CONFIG_ATH9K)		+= ath9k/
+obj-$(CONFIG_ATH9K_HW)		+= ath9k/
 obj-$(CONFIG_AR9170_USB)        += ar9170/
 
 obj-$(CONFIG_ATH_COMMON)	+= ath.o
diff --git a/drivers/net/wireless/ath/ath9k/Kconfig b/drivers/net/wireless/ath/ath9k/Kconfig
index de4aeea..99ce066 100644
--- a/drivers/net/wireless/ath/ath9k/Kconfig
+++ b/drivers/net/wireless/ath/ath9k/Kconfig
@@ -1,6 +1,10 @@
+config ATH9K_HW
+	tristate
+
 config ATH9K
 	tristate "Atheros 802.11n wireless cards support"
 	depends on PCI && MAC80211 && WLAN_80211
+	select ATH9K_HW
 	select MAC80211_LEDS
 	select LEDS_CLASS
 	select NEW_LEDS
diff --git a/drivers/net/wireless/ath/ath9k/Makefile b/drivers/net/wireless/ath/ath9k/Makefile
index f3221af..8caf2a8 100644
--- a/drivers/net/wireless/ath/ath9k/Makefile
+++ b/drivers/net/wireless/ath/ath9k/Makefile
@@ -1,16 +1,4 @@
-ATH9K_HW +=	hw.o \
-		eeprom.o \
-		eeprom_def.o \
-		eeprom_4k.o \
-		eeprom_9287.o \
-		calib.o \
-		ani.o \
-		phy.o \
-		btcoex.o \
-		mac.o \
-
-ath9k-y +=	$(ATH9K_HW) \
-		beacon.o \
+ath9k-y +=	beacon.o \
 		main.o \
 		recv.o \
 		xmit.o \
@@ -22,3 +10,16 @@ ath9k-$(CONFIG_ATHEROS_AR71XX) += ahb.o
 ath9k-$(CONFIG_ATH9K_DEBUG) += debug.o
 
 obj-$(CONFIG_ATH9K) += ath9k.o
+
+ath9k_hw-y:=	hw.o \
+		eeprom.o \
+		eeprom_def.o \
+		eeprom_4k.o \
+		eeprom_9287.o \
+		calib.o \
+		ani.o \
+		phy.o \
+		btcoex.o \
+		mac.o \
+
+obj-$(CONFIG_ATH9K_HW) += ath9k_hw.o
diff --git a/drivers/net/wireless/ath/ath9k/ani.c b/drivers/net/wireless/ath/ath9k/ani.c
index ecb23f3..2a0cd64 100644
--- a/drivers/net/wireless/ath/ath9k/ani.c
+++ b/drivers/net/wireless/ath/ath9k/ani.c
@@ -629,6 +629,7 @@ void ath9k_hw_ani_monitor(struct ath_hw *ah,
 		}
 	}
 }
+EXPORT_SYMBOL(ath9k_hw_ani_monitor);
 
 void ath9k_enable_mib_counters(struct ath_hw *ah)
 {
@@ -756,6 +757,7 @@ void ath9k_hw_procmibevent(struct ath_hw *ah)
 		ath9k_ani_restart(ah);
 	}
 }
+EXPORT_SYMBOL(ath9k_hw_procmibevent);
 
 void ath9k_hw_ani_setup(struct ath_hw *ah)
 {
diff --git a/drivers/net/wireless/ath/ath9k/btcoex.c b/drivers/net/wireless/ath/ath9k/btcoex.c
index 0c54489..fb4ac15 100644
--- a/drivers/net/wireless/ath/ath9k/btcoex.c
+++ b/drivers/net/wireless/ath/ath9k/btcoex.c
@@ -95,6 +95,7 @@ void ath9k_hw_init_btcoex_hw(struct ath_hw *ah, int qnum)
 	for (i = 0; i < 32; i++)
 		ah->hw_gen_timers.gen_timer_index[(debruijn32 << i) >> 27] = i;
 }
+EXPORT_SYMBOL(ath9k_hw_init_btcoex_hw);
 
 void ath9k_hw_btcoex_init_2wire(struct ath_hw *ah)
 {
@@ -116,6 +117,7 @@ void ath9k_hw_btcoex_init_2wire(struct ath_hw *ah)
 	/* Configure the desired gpio port for input */
 	ath9k_hw_cfg_gpio_input(ah, btcoex_hw->btactive_gpio);
 }
+EXPORT_SYMBOL(ath9k_hw_btcoex_init_2wire);
 
 void ath9k_hw_btcoex_init_3wire(struct ath_hw *ah)
 {
@@ -141,6 +143,7 @@ void ath9k_hw_btcoex_init_3wire(struct ath_hw *ah)
 	ath9k_hw_cfg_gpio_input(ah, btcoex_hw->btactive_gpio);
 	ath9k_hw_cfg_gpio_input(ah, btcoex_hw->btpriority_gpio);
 }
+EXPORT_SYMBOL(ath9k_hw_btcoex_init_3wire);
 
 static void ath9k_hw_btcoex_enable_2wire(struct ath_hw *ah)
 {
@@ -160,6 +163,7 @@ void ath9k_hw_btcoex_set_weight(struct ath_hw *ah,
 	btcoex_hw->bt_coex_weights = SM(bt_weight, AR_BTCOEX_BT_WGHT) |
 				     SM(wlan_weight, AR_BTCOEX_WL_WGHT);
 }
+EXPORT_SYMBOL(ath9k_hw_btcoex_set_weight);
 
 static void ath9k_hw_btcoex_enable_3wire(struct ath_hw *ah)
 {
@@ -201,6 +205,7 @@ void ath9k_hw_btcoex_enable(struct ath_hw *ah)
 
 	ah->btcoex_hw.enabled = true;
 }
+EXPORT_SYMBOL(ath9k_hw_btcoex_enable);
 
 void ath9k_hw_btcoex_disable(struct ath_hw *ah)
 {
@@ -219,3 +224,4 @@ void ath9k_hw_btcoex_disable(struct ath_hw *ah)
 
 	ah->btcoex_hw.enabled = false;
 }
+EXPORT_SYMBOL(ath9k_hw_btcoex_disable);
diff --git a/drivers/net/wireless/ath/ath9k/calib.c b/drivers/net/wireless/ath/ath9k/calib.c
index d347ea7..f46bd05 100644
--- a/drivers/net/wireless/ath/ath9k/calib.c
+++ b/drivers/net/wireless/ath/ath9k/calib.c
@@ -594,6 +594,7 @@ bool ath9k_hw_reset_calvalid(struct ath_hw *ah)
 
 	return false;
 }
+EXPORT_SYMBOL(ath9k_hw_reset_calvalid);
 
 void ath9k_hw_start_nfcal(struct ath_hw *ah)
 {
@@ -746,6 +747,7 @@ s16 ath9k_hw_getchan_noise(struct ath_hw *ah, struct ath9k_channel *chan)
 
 	return nf;
 }
+EXPORT_SYMBOL(ath9k_hw_getchan_noise);
 
 static void ath9k_olc_temp_compensation_9287(struct ath_hw *ah)
 {
@@ -1066,6 +1068,7 @@ bool ath9k_hw_calibrate(struct ath_hw *ah, struct ath9k_channel *chan,
 
 	return iscaldone;
 }
+EXPORT_SYMBOL(ath9k_hw_calibrate);
 
 static bool ar9285_clc(struct ath_hw *ah, struct ath9k_channel *chan)
 {
diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c
index 7a4de3d..7d167a1 100644
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
@@ -33,6 +33,23 @@ static u32 ath9k_hw_ini_fixup(struct ath_hw *ah,
 static void ath9k_hw_9280_spur_mitigate(struct ath_hw *ah, struct ath9k_channel *chan);
 static void ath9k_hw_spur_mitigate(struct ath_hw *ah, struct ath9k_channel *chan);
 
+MODULE_AUTHOR("Atheros Communications");
+MODULE_DESCRIPTION("Support for Atheros 802.11n wireless LAN cards.");
+MODULE_SUPPORTED_DEVICE("Atheros 802.11n WLAN cards");
+MODULE_LICENSE("Dual BSD/GPL");
+
+static int __init ath9k_init(void)
+{
+	return 0;
+}
+module_init(ath9k_init);
+
+static void __exit ath9k_exit(void)
+{
+	return;
+}
+module_exit(ath9k_exit);
+
 /********************/
 /* Helper Functions */
 /********************/
@@ -99,6 +116,7 @@ bool ath9k_hw_wait(struct ath_hw *ah, u32 reg, u32 mask, u32 val, u32 timeout)
 
 	return false;
 }
+EXPORT_SYMBOL(ath9k_hw_wait);
 
 u32 ath9k_hw_reverse_bits(u32 val, u32 n)
 {
@@ -186,6 +204,7 @@ u16 ath9k_hw_computetxtime(struct ath_hw *ah,
 
 	return txTime;
 }
+EXPORT_SYMBOL(ath9k_hw_computetxtime);
 
 void ath9k_hw_get_channel_centers(struct ath_hw *ah,
 				  struct ath9k_channel *chan,
@@ -402,6 +421,7 @@ static void ath9k_hw_init_config(struct ath_hw *ah)
 	if (num_possible_cpus() > 1)
 		ah->config.serialize_regmode = SER_REG_MODE_AUTO;
 }
+EXPORT_SYMBOL(ath9k_hw_init);
 
 static void ath9k_hw_init_defaults(struct ath_hw *ah)
 {
@@ -1223,6 +1243,7 @@ void ath9k_hw_detach(struct ath_hw *ah)
 	kfree(ah);
 	ah = NULL;
 }
+EXPORT_SYMBOL(ath9k_hw_detach);
 
 /*******/
 /* INI */
@@ -2561,6 +2582,7 @@ int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan,
 
 	return 0;
 }
+EXPORT_SYMBOL(ath9k_hw_reset);
 
 /************************/
 /* Key Cache Management */
@@ -2599,6 +2621,7 @@ bool ath9k_hw_keyreset(struct ath_hw *ah, u16 entry)
 
 	return true;
 }
+EXPORT_SYMBOL(ath9k_hw_keyreset);
 
 bool ath9k_hw_keysetmac(struct ath_hw *ah, u16 entry, const u8 *mac)
 {
@@ -2627,6 +2650,7 @@ bool ath9k_hw_keysetmac(struct ath_hw *ah, u16 entry, const u8 *mac)
 
 	return true;
 }
+EXPORT_SYMBOL(ath9k_hw_keysetmac);
 
 bool ath9k_hw_set_keycache_entry(struct ath_hw *ah, u16 entry,
 				 const struct ath9k_keyval *k,
@@ -2825,6 +2849,7 @@ bool ath9k_hw_set_keycache_entry(struct ath_hw *ah, u16 entry,
 
 	return true;
 }
+EXPORT_SYMBOL(ath9k_hw_set_keycache_entry);
 
 bool ath9k_hw_keyisvalid(struct ath_hw *ah, u16 entry)
 {
@@ -2835,6 +2860,7 @@ bool ath9k_hw_keyisvalid(struct ath_hw *ah, u16 entry)
 	}
 	return false;
 }
+EXPORT_SYMBOL(ath9k_hw_keyisvalid);
 
 /******************************/
 /* Power Management (Chipset) */
@@ -2951,6 +2977,7 @@ bool ath9k_hw_setpower(struct ath_hw *ah, enum ath9k_power_mode mode)
 
 	return status;
 }
+EXPORT_SYMBOL(ath9k_hw_setpower);
 
 /*
  * Helper for ASPM support.
@@ -3083,6 +3110,7 @@ void ath9k_hw_configpcipowersave(struct ath_hw *ah, int restore, int power_off)
 		}
 	}
 }
+EXPORT_SYMBOL(ath9k_hw_configpcipowersave);
 
 /**********************/
 /* Interrupt Handling */
@@ -3106,6 +3134,7 @@ bool ath9k_hw_intrpend(struct ath_hw *ah)
 
 	return false;
 }
+EXPORT_SYMBOL(ath9k_hw_intrpend);
 
 bool ath9k_hw_getisr(struct ath_hw *ah, enum ath9k_int *masked)
 {
@@ -3258,6 +3287,7 @@ bool ath9k_hw_getisr(struct ath_hw *ah, enum ath9k_int *masked)
 
 	return true;
 }
+EXPORT_SYMBOL(ath9k_hw_getisr);
 
 enum ath9k_int ath9k_hw_set_interrupts(struct ath_hw *ah, enum ath9k_int ints)
 {
@@ -3365,6 +3395,7 @@ enum ath9k_int ath9k_hw_set_interrupts(struct ath_hw *ah, enum ath9k_int ints)
 
 	return omask;
 }
+EXPORT_SYMBOL(ath9k_hw_set_interrupts);
 
 /*******************/
 /* Beacon Handling */
@@ -3426,6 +3457,7 @@ void ath9k_hw_beaconinit(struct ath_hw *ah, u32 next_beacon, u32 beacon_period)
 
 	REG_SET_BIT(ah, AR_TIMER_MODE, flags);
 }
+EXPORT_SYMBOL(ath9k_hw_beaconinit);
 
 void ath9k_hw_set_sta_beacon_timers(struct ath_hw *ah,
 				    const struct ath9k_beacon_state *bs)
@@ -3489,6 +3521,7 @@ void ath9k_hw_set_sta_beacon_timers(struct ath_hw *ah,
 	/* TSF Out of Range Threshold */
 	REG_WRITE(ah, AR_TSFOOR_THRESHOLD, bs->bs_tsfoor_threshold);
 }
+EXPORT_SYMBOL(ath9k_hw_set_sta_beacon_timers);
 
 /*******************/
 /* HW Capabilities */
@@ -3756,6 +3789,7 @@ bool ath9k_hw_getcapability(struct ath_hw *ah, enum ath9k_capability_type type,
 		return false;
 	}
 }
+EXPORT_SYMBOL(ath9k_hw_getcapability);
 
 bool ath9k_hw_setcapability(struct ath_hw *ah, enum ath9k_capability_type type,
 			    u32 capability, u32 setting, int *status)
@@ -3789,6 +3823,7 @@ bool ath9k_hw_setcapability(struct ath_hw *ah, enum ath9k_capability_type type,
 		return false;
 	}
 }
+EXPORT_SYMBOL(ath9k_hw_setcapability);
 
 /****************************/
 /* GPIO / RFKILL / Antennae */
@@ -3835,6 +3870,7 @@ void ath9k_hw_cfg_gpio_input(struct ath_hw *ah, u32 gpio)
 		(AR_GPIO_OE_OUT_DRV_NO << gpio_shift),
 		(AR_GPIO_OE_OUT_DRV << gpio_shift));
 }
+EXPORT_SYMBOL(ath9k_hw_cfg_gpio_input);
 
 u32 ath9k_hw_gpio_get(struct ath_hw *ah, u32 gpio)
 {
@@ -3853,6 +3889,7 @@ u32 ath9k_hw_gpio_get(struct ath_hw *ah, u32 gpio)
 	else
 		return MS_REG_READ(AR, gpio) != 0;
 }
+EXPORT_SYMBOL(ath9k_hw_gpio_get);
 
 void ath9k_hw_cfg_output(struct ath_hw *ah, u32 gpio,
 			 u32 ah_signal_type)
@@ -3868,22 +3905,26 @@ void ath9k_hw_cfg_output(struct ath_hw *ah, u32 gpio,
 		(AR_GPIO_OE_OUT_DRV_ALL << gpio_shift),
 		(AR_GPIO_OE_OUT_DRV << gpio_shift));
 }
+EXPORT_SYMBOL(ath9k_hw_cfg_output);
 
 void ath9k_hw_set_gpio(struct ath_hw *ah, u32 gpio, u32 val)
 {
 	REG_RMW(ah, AR_GPIO_IN_OUT, ((val & 1) << gpio),
 		AR_GPIO_BIT(gpio));
 }
+EXPORT_SYMBOL(ath9k_hw_set_gpio);
 
 u32 ath9k_hw_getdefantenna(struct ath_hw *ah)
 {
 	return REG_READ(ah, AR_DEF_ANTENNA) & 0x7;
 }
+EXPORT_SYMBOL(ath9k_hw_getdefantenna);
 
 void ath9k_hw_setantenna(struct ath_hw *ah, u32 antenna)
 {
 	REG_WRITE(ah, AR_DEF_ANTENNA, (antenna & 0x7));
 }
+EXPORT_SYMBOL(ath9k_hw_setantenna);
 
 bool ath9k_hw_setantennaswitch(struct ath_hw *ah,
 			       enum ath9k_ant_setting settings,
@@ -3946,6 +3987,7 @@ u32 ath9k_hw_getrxfilter(struct ath_hw *ah)
 
 	return bits;
 }
+EXPORT_SYMBOL(ath9k_hw_getrxfilter);
 
 void ath9k_hw_setrxfilter(struct ath_hw *ah, u32 bits)
 {
@@ -3967,6 +4009,7 @@ void ath9k_hw_setrxfilter(struct ath_hw *ah, u32 bits)
 		REG_WRITE(ah, AR_RXCFG,
 			  REG_READ(ah, AR_RXCFG) & ~AR_RXCFG_ZLFDMA);
 }
+EXPORT_SYMBOL(ath9k_hw_setrxfilter);
 
 bool ath9k_hw_phy_disable(struct ath_hw *ah)
 {
@@ -3976,6 +4019,7 @@ bool ath9k_hw_phy_disable(struct ath_hw *ah)
 	ath9k_hw_init_pll(ah, NULL);
 	return true;
 }
+EXPORT_SYMBOL(ath9k_hw_phy_disable);
 
 bool ath9k_hw_disable(struct ath_hw *ah)
 {
@@ -3988,6 +4032,7 @@ bool ath9k_hw_disable(struct ath_hw *ah)
 	ath9k_hw_init_pll(ah, NULL);
 	return true;
 }
+EXPORT_SYMBOL(ath9k_hw_disable);
 
 void ath9k_hw_set_txpowerlimit(struct ath_hw *ah, u32 limit)
 {
@@ -4004,22 +4049,26 @@ void ath9k_hw_set_txpowerlimit(struct ath_hw *ah, u32 limit)
 				 min((u32) MAX_RATE_POWER,
 				 (u32) regulatory->power_limit));
 }
+EXPORT_SYMBOL(ath9k_hw_set_txpowerlimit);
 
 void ath9k_hw_setmac(struct ath_hw *ah, const u8 *mac)
 {
 	memcpy(ath9k_hw_common(ah)->macaddr, mac, ETH_ALEN);
 }
+EXPORT_SYMBOL(ath9k_hw_setmac);
 
 void ath9k_hw_setopmode(struct ath_hw *ah)
 {
 	ath9k_hw_set_operating_mode(ah, ah->opmode);
 }
+EXPORT_SYMBOL(ath9k_hw_setopmode);
 
 void ath9k_hw_setmcastfilter(struct ath_hw *ah, u32 filter0, u32 filter1)
 {
 	REG_WRITE(ah, AR_MCAST_FIL0, filter0);
 	REG_WRITE(ah, AR_MCAST_FIL1, filter1);
 }
+EXPORT_SYMBOL(ath9k_hw_setmcastfilter);
 
 void ath9k_hw_write_associd(struct ath_hw *ah)
 {
@@ -4029,6 +4078,7 @@ void ath9k_hw_write_associd(struct ath_hw *ah)
 	REG_WRITE(ah, AR_BSS_ID1, get_unaligned_le16(common->curbssid + 4) |
 		  ((common->curaid & 0x3fff) << AR_BSS_ID1_AID_S));
 }
+EXPORT_SYMBOL(ath9k_hw_write_associd);
 
 u64 ath9k_hw_gettsf64(struct ath_hw *ah)
 {
@@ -4039,12 +4089,14 @@ u64 ath9k_hw_gettsf64(struct ath_hw *ah)
 
 	return tsf;
 }
+EXPORT_SYMBOL(ath9k_hw_gettsf64);
 
 void ath9k_hw_settsf64(struct ath_hw *ah, u64 tsf64)
 {
 	REG_WRITE(ah, AR_TSF_L32, tsf64 & 0xffffffff);
 	REG_WRITE(ah, AR_TSF_U32, (tsf64 >> 32) & 0xffffffff);
 }
+EXPORT_SYMBOL(ath9k_hw_settsf64);
 
 void ath9k_hw_reset_tsf(struct ath_hw *ah)
 {
@@ -4055,6 +4107,7 @@ void ath9k_hw_reset_tsf(struct ath_hw *ah)
 
 	REG_WRITE(ah, AR_RESET_TSF, AR_RESET_TSF_ONCE);
 }
+EXPORT_SYMBOL(ath9k_hw_reset_tsf);
 
 void ath9k_hw_set_tsfadjust(struct ath_hw *ah, u32 setting)
 {
@@ -4063,6 +4116,7 @@ void ath9k_hw_set_tsfadjust(struct ath_hw *ah, u32 setting)
 	else
 		ah->misc_mode &= ~AR_PCU_TX_ADD_TSF;
 }
+EXPORT_SYMBOL(ath9k_hw_set_tsfadjust);
 
 bool ath9k_hw_setslottime(struct ath_hw *ah, u32 us)
 {
@@ -4077,6 +4131,7 @@ bool ath9k_hw_setslottime(struct ath_hw *ah, u32 us)
 		return true;
 	}
 }
+EXPORT_SYMBOL(ath9k_hw_setslottime);
 
 void ath9k_hw_set11nmac2040(struct ath_hw *ah)
 {
@@ -4140,6 +4195,7 @@ u32 ath9k_hw_gettsf32(struct ath_hw *ah)
 {
 	return REG_READ(ah, AR_TSF_L32);
 }
+EXPORT_SYMBOL(ath9k_hw_gettsf32);
 
 struct ath_gen_timer *ath_gen_timer_alloc(struct ath_hw *ah,
 					  void (*trigger)(void *),
@@ -4168,6 +4224,7 @@ struct ath_gen_timer *ath_gen_timer_alloc(struct ath_hw *ah,
 
 	return timer;
 }
+EXPORT_SYMBOL(ath_gen_timer_alloc);
 
 void ath9k_hw_gen_timer_start(struct ath_hw *ah,
 			      struct ath_gen_timer *timer,
@@ -4209,6 +4266,7 @@ void ath9k_hw_gen_timer_start(struct ath_hw *ah,
 		(SM(AR_GENTMR_BIT(timer->index), AR_IMR_S5_GENTIMER_THRESH) |
 		SM(AR_GENTMR_BIT(timer->index), AR_IMR_S5_GENTIMER_TRIG)));
 }
+EXPORT_SYMBOL(ath9k_hw_gen_timer_start);
 
 void ath9k_hw_gen_timer_stop(struct ath_hw *ah, struct ath_gen_timer *timer)
 {
@@ -4230,6 +4288,7 @@ void ath9k_hw_gen_timer_stop(struct ath_hw *ah, struct ath_gen_timer *timer)
 
 	clear_bit(timer->index, &timer_table->timer_mask.timer_bits);
 }
+EXPORT_SYMBOL(ath9k_hw_gen_timer_stop);
 
 void ath_gen_timer_free(struct ath_hw *ah, struct ath_gen_timer *timer)
 {
@@ -4239,6 +4298,7 @@ void ath_gen_timer_free(struct ath_hw *ah, struct ath_gen_timer *timer)
 	timer_table->timers[timer->index] = NULL;
 	kfree(timer);
 }
+EXPORT_SYMBOL(ath_gen_timer_free);
 
 /*
  * Generic Timer Interrupts handling
@@ -4276,3 +4336,4 @@ void ath_gen_timer_isr(struct ath_hw *ah)
 		timer->trigger(timer->arg);
 	}
 }
+EXPORT_SYMBOL(ath_gen_timer_isr);
diff --git a/drivers/net/wireless/ath/ath9k/mac.c b/drivers/net/wireless/ath/ath9k/mac.c
index 3be658d..e2c1ba3 100644
--- a/drivers/net/wireless/ath/ath9k/mac.c
+++ b/drivers/net/wireless/ath/ath9k/mac.c
@@ -39,11 +39,13 @@ u32 ath9k_hw_gettxbuf(struct ath_hw *ah, u32 q)
 {
 	return REG_READ(ah, AR_QTXDP(q));
 }
+EXPORT_SYMBOL(ath9k_hw_gettxbuf);
 
 void ath9k_hw_puttxbuf(struct ath_hw *ah, u32 q, u32 txdp)
 {
 	REG_WRITE(ah, AR_QTXDP(q), txdp);
 }
+EXPORT_SYMBOL(ath9k_hw_puttxbuf);
 
 void ath9k_hw_txstart(struct ath_hw *ah, u32 q)
 {
@@ -51,6 +53,7 @@ void ath9k_hw_txstart(struct ath_hw *ah, u32 q)
 		  "Enable TXE on queue: %u\n", q);
 	REG_WRITE(ah, AR_Q_TXE, 1 << q);
 }
+EXPORT_SYMBOL(ath9k_hw_txstart);
 
 u32 ath9k_hw_numtxpending(struct ath_hw *ah, u32 q)
 {
@@ -65,6 +68,7 @@ u32 ath9k_hw_numtxpending(struct ath_hw *ah, u32 q)
 
 	return npend;
 }
+EXPORT_SYMBOL(ath9k_hw_numtxpending);
 
 bool ath9k_hw_updatetxtriglevel(struct ath_hw *ah, bool bIncTrigLevel)
 {
@@ -94,6 +98,7 @@ bool ath9k_hw_updatetxtriglevel(struct ath_hw *ah, bool bIncTrigLevel)
 
 	return newLevel != curLevel;
 }
+EXPORT_SYMBOL(ath9k_hw_updatetxtriglevel);
 
 bool ath9k_hw_stoptxdma(struct ath_hw *ah, u32 q)
 {
@@ -173,6 +178,7 @@ bool ath9k_hw_stoptxdma(struct ath_hw *ah, u32 q)
 #undef ATH9K_TX_STOP_DMA_TIMEOUT
 #undef ATH9K_TIME_QUANTUM
 }
+EXPORT_SYMBOL(ath9k_hw_stoptxdma);
 
 void ath9k_hw_filltxdesc(struct ath_hw *ah, struct ath_desc *ds,
 			 u32 segLen, bool firstSeg,
@@ -199,6 +205,7 @@ void ath9k_hw_filltxdesc(struct ath_hw *ah, struct ath_desc *ds,
 	ads->ds_txstatus6 = ads->ds_txstatus7 = 0;
 	ads->ds_txstatus8 = ads->ds_txstatus9 = 0;
 }
+EXPORT_SYMBOL(ath9k_hw_filltxdesc);
 
 void ath9k_hw_cleartxdesc(struct ath_hw *ah, struct ath_desc *ds)
 {
@@ -210,6 +217,7 @@ void ath9k_hw_cleartxdesc(struct ath_hw *ah, struct ath_desc *ds)
 	ads->ds_txstatus6 = ads->ds_txstatus7 = 0;
 	ads->ds_txstatus8 = ads->ds_txstatus9 = 0;
 }
+EXPORT_SYMBOL(ath9k_hw_cleartxdesc);
 
 int ath9k_hw_txprocdesc(struct ath_hw *ah, struct ath_desc *ds)
 {
@@ -285,6 +293,7 @@ int ath9k_hw_txprocdesc(struct ath_hw *ah, struct ath_desc *ds)
 
 	return 0;
 }
+EXPORT_SYMBOL(ath9k_hw_txprocdesc);
 
 void ath9k_hw_set11n_txdesc(struct ath_hw *ah, struct ath_desc *ds,
 			    u32 pktLen, enum ath9k_pkt_type type, u32 txPower,
@@ -320,6 +329,7 @@ void ath9k_hw_set11n_txdesc(struct ath_hw *ah, struct ath_desc *ds,
 		ads->ds_ctl11 = 0;
 	}
 }
+EXPORT_SYMBOL(ath9k_hw_set11n_txdesc);
 
 void ath9k_hw_set11n_ratescenario(struct ath_hw *ah, struct ath_desc *ds,
 				  struct ath_desc *lastds,
@@ -375,6 +385,7 @@ void ath9k_hw_set11n_ratescenario(struct ath_hw *ah, struct ath_desc *ds,
 	last_ads->ds_ctl2 = ads->ds_ctl2;
 	last_ads->ds_ctl3 = ads->ds_ctl3;
 }
+EXPORT_SYMBOL(ath9k_hw_set11n_ratescenario);
 
 void ath9k_hw_set11n_aggr_first(struct ath_hw *ah, struct ath_desc *ds,
 				u32 aggrLen)
@@ -385,6 +396,7 @@ void ath9k_hw_set11n_aggr_first(struct ath_hw *ah, struct ath_desc *ds,
 	ads->ds_ctl6 &= ~AR_AggrLen;
 	ads->ds_ctl6 |= SM(aggrLen, AR_AggrLen);
 }
+EXPORT_SYMBOL(ath9k_hw_set11n_aggr_first);
 
 void ath9k_hw_set11n_aggr_middle(struct ath_hw *ah, struct ath_desc *ds,
 				 u32 numDelims)
@@ -399,6 +411,7 @@ void ath9k_hw_set11n_aggr_middle(struct ath_hw *ah, struct ath_desc *ds,
 	ctl6 |= SM(numDelims, AR_PadDelim);
 	ads->ds_ctl6 = ctl6;
 }
+EXPORT_SYMBOL(ath9k_hw_set11n_aggr_middle);
 
 void ath9k_hw_set11n_aggr_last(struct ath_hw *ah, struct ath_desc *ds)
 {
@@ -408,6 +421,7 @@ void ath9k_hw_set11n_aggr_last(struct ath_hw *ah, struct ath_desc *ds)
 	ads->ds_ctl1 &= ~AR_MoreAggr;
 	ads->ds_ctl6 &= ~AR_PadDelim;
 }
+EXPORT_SYMBOL(ath9k_hw_set11n_aggr_last);
 
 void ath9k_hw_clr11n_aggr(struct ath_hw *ah, struct ath_desc *ds)
 {
@@ -415,6 +429,7 @@ void ath9k_hw_clr11n_aggr(struct ath_hw *ah, struct ath_desc *ds)
 
 	ads->ds_ctl1 &= (~AR_IsAggr & ~AR_MoreAggr);
 }
+EXPORT_SYMBOL(ath9k_hw_clr11n_aggr);
 
 void ath9k_hw_set11n_burstduration(struct ath_hw *ah, struct ath_desc *ds,
 				   u32 burstDuration)
@@ -424,6 +439,7 @@ void ath9k_hw_set11n_burstduration(struct ath_hw *ah, struct ath_desc *ds,
 	ads->ds_ctl2 &= ~AR_BurstDur;
 	ads->ds_ctl2 |= SM(burstDuration, AR_BurstDur);
 }
+EXPORT_SYMBOL(ath9k_hw_set11n_burstduration);
 
 void ath9k_hw_set11n_virtualmorefrag(struct ath_hw *ah, struct ath_desc *ds,
 				     u32 vmf)
@@ -441,6 +457,7 @@ void ath9k_hw_gettxintrtxqs(struct ath_hw *ah, u32 *txqs)
 	*txqs &= ah->intr_txqs;
 	ah->intr_txqs &= ~(*txqs);
 }
+EXPORT_SYMBOL(ath9k_hw_gettxintrtxqs);
 
 bool ath9k_hw_set_txq_props(struct ath_hw *ah, int q,
 			    const struct ath9k_tx_queue_info *qinfo)
@@ -512,6 +529,7 @@ bool ath9k_hw_set_txq_props(struct ath_hw *ah, int q,
 
 	return true;
 }
+EXPORT_SYMBOL(ath9k_hw_set_txq_props);
 
 bool ath9k_hw_get_txq_props(struct ath_hw *ah, int q,
 			    struct ath9k_tx_queue_info *qinfo)
@@ -550,6 +568,7 @@ bool ath9k_hw_get_txq_props(struct ath_hw *ah, int q,
 
 	return true;
 }
+EXPORT_SYMBOL(ath9k_hw_get_txq_props);
 
 int ath9k_hw_setuptxqueue(struct ath_hw *ah, enum ath9k_tx_queue type,
 			  const struct ath9k_tx_queue_info *qinfo)
@@ -617,6 +636,7 @@ int ath9k_hw_setuptxqueue(struct ath_hw *ah, enum ath9k_tx_queue type,
 
 	return q;
 }
+EXPORT_SYMBOL(ath9k_hw_setuptxqueue);
 
 bool ath9k_hw_releasetxqueue(struct ath_hw *ah, u32 q)
 {
@@ -648,6 +668,7 @@ bool ath9k_hw_releasetxqueue(struct ath_hw *ah, u32 q)
 
 	return true;
 }
+EXPORT_SYMBOL(ath9k_hw_releasetxqueue);
 
 bool ath9k_hw_resettxqueue(struct ath_hw *ah, u32 q)
 {
@@ -805,6 +826,7 @@ bool ath9k_hw_resettxqueue(struct ath_hw *ah, u32 q)
 
 	return true;
 }
+EXPORT_SYMBOL(ath9k_hw_resettxqueue);
 
 int ath9k_hw_rxprocdesc(struct ath_hw *ah, struct ath_desc *ds,
 			u32 pa, struct ath_desc *nds, u64 tsf)
@@ -886,6 +908,7 @@ int ath9k_hw_rxprocdesc(struct ath_hw *ah, struct ath_desc *ds,
 
 	return 0;
 }
+EXPORT_SYMBOL(ath9k_hw_rxprocdesc);
 
 void ath9k_hw_setuprxdesc(struct ath_hw *ah, struct ath_desc *ds,
 			  u32 size, u32 flags)
@@ -901,6 +924,7 @@ void ath9k_hw_setuprxdesc(struct ath_hw *ah, struct ath_desc *ds,
 	if (!(pCap->hw_caps & ATH9K_HW_CAP_AUTOSLEEP))
 		memset(&(ads->u), 0, sizeof(ads->u));
 }
+EXPORT_SYMBOL(ath9k_hw_setuprxdesc);
 
 bool ath9k_hw_setrxabort(struct ath_hw *ah, bool set)
 {
@@ -930,16 +954,19 @@ bool ath9k_hw_setrxabort(struct ath_hw *ah, bool set)
 
 	return true;
 }
+EXPORT_SYMBOL(ath9k_hw_setrxabort);
 
 void ath9k_hw_putrxbuf(struct ath_hw *ah, u32 rxdp)
 {
 	REG_WRITE(ah, AR_RXDP, rxdp);
 }
+EXPORT_SYMBOL(ath9k_hw_putrxbuf);
 
 void ath9k_hw_rxena(struct ath_hw *ah)
 {
 	REG_WRITE(ah, AR_CR, AR_CR_RXE);
 }
+EXPORT_SYMBOL(ath9k_hw_rxena);
 
 void ath9k_hw_startpcureceive(struct ath_hw *ah)
 {
@@ -949,6 +976,7 @@ void ath9k_hw_startpcureceive(struct ath_hw *ah)
 
 	REG_CLR_BIT(ah, AR_DIAG_SW, (AR_DIAG_RX_DIS | AR_DIAG_RX_ABORT));
 }
+EXPORT_SYMBOL(ath9k_hw_startpcureceive);
 
 void ath9k_hw_stoppcurecv(struct ath_hw *ah)
 {
@@ -956,6 +984,7 @@ void ath9k_hw_stoppcurecv(struct ath_hw *ah)
 
 	ath9k_hw_disable_mib_counters(ah);
 }
+EXPORT_SYMBOL(ath9k_hw_stoppcurecv);
 
 bool ath9k_hw_stopdmarecv(struct ath_hw *ah)
 {
@@ -988,3 +1017,4 @@ bool ath9k_hw_stopdmarecv(struct ath_hw *ah)
 #undef AH_RX_TIME_QUANTUM
 #undef AH_RX_STOP_DMA_TIMEOUT
 }
+EXPORT_SYMBOL(ath9k_hw_stopdmarecv);
-- 
1.6.3.3


^ permalink raw reply related

* Re: wireless-testing broken
From: Luis R. Rodriguez @ 2009-09-24  3:55 UTC (permalink / raw)
  To: Kalle Valo; +Cc: linux-wireless, John W. Linville
In-Reply-To: <da94abde0909231800v75b05677ka6b8570a73b6055c@mail.gmail.com>

On Wed, Sep 23, 2009 at 6:00 PM, Kalle Valo <kalle.valo@iki.fi> wrote:
> Hi,
>
> I upgraded to latest wireless-testing and noticed that I can't connect
> anymore with my iwl3945. master-2009-09-16 still works. My syslog has
> this:

Hm, seems to work fine with my ath5k and ath9k device. So perhaps this
is just an iwl3945 regression?

  Luis

^ permalink raw reply

* Re: pull request: wireless-next-2.6 2009-09-23
From: John W. Linville @ 2009-09-24  3:50 UTC (permalink / raw)
  To: David Miller; +Cc: linux-wireless, netdev, linux-kernel
In-Reply-To: <20090923.162449.141768862.davem@davemloft.net>

On Wed, Sep 23, 2009 at 04:24:49PM -0700, David Miller wrote:

> Also, please put the branch name, even if it's simply 'master'
> in your GIT pull urls you give me.

Noted...thanks!

John
-- 
John W. Linville		Someday the world will need a hero, and you
linville@tuxdriver.com			might be all we have.  Be ready.

^ permalink raw reply

* Re: wireless-testing broken
From: John W. Linville @ 2009-09-24  3:54 UTC (permalink / raw)
  To: Kalle Valo; +Cc: linux-wireless
In-Reply-To: <da94abde0909231800v75b05677ka6b8570a73b6055c@mail.gmail.com>

On Wed, Sep 23, 2009 at 06:00:41PM -0700, Kalle Valo wrote:
> Hi,
> 
> I upgraded to latest wireless-testing and noticed that I can't connect
> anymore with my iwl3945. master-2009-09-16 still works. My syslog has
> this:
> 
> Sep 24 03:53:28 tikku kernel: [  719.479190] phy0: device no longer
> idle - scanning
> Sep 24 03:53:31 tikku wpa_supplicant[12381]: CTRL-EVENT-SCAN-RESULTS
> Sep 24 03:53:31 tikku wpa_supplicant[12381]: Trying to associate with
> 00:03:52:d9:27:10 (SSID='ibahn' freq=2452 MHz)

Kalle,

I know you aren't in a great situation for this, but could you try
a bisect?  Or, you might just try reverting "iwlwifi: reduce noise
when skb allocation" as a start...

John
-- 
John W. Linville		Someday the world will need a hero, and you
linville@tuxdriver.com			might be all we have.  Be ready.

^ permalink raw reply

* Re: wireless-testing broken
From: Kalle Valo @ 2009-09-24  4:16 UTC (permalink / raw)
  To: John W. Linville; +Cc: linux-wireless
In-Reply-To: <20090924035356.GC2726@tuxdriver.com>

On Wed, Sep 23, 2009 at 8:54 PM, John W. Linville
<linville@tuxdriver.com> wrote:
> On Wed, Sep 23, 2009 at 06:00:41PM -0700, Kalle Valo wrote:
>> Hi,
>>
>> I upgraded to latest wireless-testing and noticed that I can't connect
>> anymore with my iwl3945. master-2009-09-16 still works. My syslog has
>> this:
>>
>> Sep 24 03:53:28 tikku kernel: [  719.479190] phy0: device no longer
>> idle - scanning
>> Sep 24 03:53:31 tikku wpa_supplicant[12381]: CTRL-EVENT-SCAN-RESULTS
>> Sep 24 03:53:31 tikku wpa_supplicant[12381]: Trying to associate with
>> 00:03:52:d9:27:10 (SSID='ibahn' freq=2452 MHz)
>
> Kalle,
>
> I know you aren't in a great situation for this, but could you try
> a bisect?  Or, you might just try reverting "iwlwifi: reduce noise
> when skb allocation" as a start...

Sure, I'll start bisecting right now.

Kalle

^ permalink raw reply

* Re: wireless-testing broken
From: Kalle Valo @ 2009-09-24  4:39 UTC (permalink / raw)
  To: John W. Linville; +Cc: linux-wireless, Johannes Berg
In-Reply-To: <da94abde0909232116n4ddc8bedxf7033a140a0c6fa0@mail.gmail.com>

On Wed, Sep 23, 2009 at 9:16 PM, Kalle Valo <kalle.valo@iki.fi> wrote:
> On Wed, Sep 23, 2009 at 8:54 PM, John W. Linville
> <linville@tuxdriver.com> wrote:
>> I know you aren't in a great situation for this, but could you try
>> a bisect?  Or, you might just try reverting "iwlwifi: reduce noise
>> when skb allocation" as a start...
>
> Sure, I'll start bisecting right now.

The result is:

55a00b83339f25d2979b85ab6e2151390327db80 is first bad commit
commit 55a00b83339f25d2979b85ab6e2151390327db80
Author: Johannes Berg <johannes@sipsolutions.net>
Date:   Thu Sep 17 17:15:31 2009 -0700

    cfg80211: don't overwrite privacy setting

    When cfg80211 is instructed to connect, it always
    uses the default WEP key for the privacy setting,
    which clearly is wrong when using wpa_supplicant.
    Don't overwrite the setting, and rely on it being
    false when wpa_supplicant is not running, instead
    set it to true when we have keys.

    Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
    Signed-off-by: John W. Linville <linville@tuxdriver.com>

I verified the result by manually reverting the commit and this is
really causing my problem. My current setup is debian unstable,
default debian wpa_supplicant (using wext I think, haven't checked)
and open network at Portland Marriott hotel. I can reproduce the
problem every time.

Kalle

^ permalink raw reply

* [PATCH] cfg80211: don't set privacy w/o key
From: Johannes Berg @ 2009-09-24  7:00 UTC (permalink / raw)
  To: John Linville; +Cc: Kalle Valo, linux-wireless, Luis R. Rodriguez

When wpa_supplicant is used to connect to open networks,
it causes the wdev->wext.keys to point to key memory, but
that key memory is all empty. Only use privacy when there
is a default key to be used.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
---
Never happened of course with iw ...

 net/wireless/wext-sme.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- wireless-testing.orig/net/wireless/wext-sme.c	2009-09-24 08:51:14.000000000 +0200
+++ wireless-testing/net/wireless/wext-sme.c	2009-09-24 08:57:01.000000000 +0200
@@ -30,7 +30,8 @@ int cfg80211_mgd_wext_connect(struct cfg
 	if (wdev->wext.keys) {
 		wdev->wext.keys->def = wdev->wext.default_key;
 		wdev->wext.keys->defmgmt = wdev->wext.default_mgmt_key;
-		wdev->wext.connect.privacy = true;
+		if (wdev->wext.default_key != -1)
+			wdev->wext.connect.privacy = true;
 	}
 
 	if (!wdev->wext.connect.ssid_len)



^ permalink raw reply

* Re: BUG: can bring wpa_supplicant/mac80211 into a stuck state at will
From: Johannes Berg @ 2009-09-24  7:20 UTC (permalink / raw)
  To: Holger Schurig; +Cc: hostap, linux-wireless
In-Reply-To: <200909211722.33577.hs4233@mail.mn-solutions.de>

[-- Attachment #1: Type: text/plain, Size: 554 bytes --]

On Mon, 2009-09-21 at 17:22 +0200, Holger Schurig wrote:

> iw eth1 link
> Connected to 00:1b:53:11:dc:40 (on eth1)
>         SSID: MNFUNK
>         freq: 2412
> Authenticated with 00:13:19:80:da:30 (on eth1)
>         RX: 78173 bytes (722 packets)
>         TX: 144 bytes (4 packets)
>         signal: -67 dBm
>         tx bitrate: 11.0 MBit/s

This is very odd, I'll look into it.

> If I understand this right, then mac80211 thinks it's connected, 
> even before the 4-way key exchange?

Umm, it is supposed to think so.

johannes

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 801 bytes --]

^ permalink raw reply

* Re: BUG: can bring wpa_supplicant/mac80211 into a stuck state at will
From: Johannes Berg @ 2009-09-24  7:53 UTC (permalink / raw)
  To: Holger Schurig; +Cc: hostap, linux-wireless
In-Reply-To: <200909221123.36953.hs4233@mail.mn-solutions.de>

[-- Attachment #1: Type: text/plain, Size: 302 bytes --]

On Tue, 2009-09-22 at 11:23 +0200, Holger Schurig wrote:

> Maybe some state isn't clear at the implicit "ifdown XXX down"
> that wpa_supplicant does when terminating?

The SSID is kept and then re-applied during ifup, so that would cause a
scan, but shouldn't cause any timeouts.

johannes


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 801 bytes --]

^ permalink raw reply

* Re: BUG: can bring wpa_supplicant/mac80211 into a stuck state at will
From: Holger Schurig @ 2009-09-24  7:56 UTC (permalink / raw)
  To: hostap; +Cc: linux-wireless
In-Reply-To: <200909221123.36953.hs4233@mail.mn-solutions.de>

> script -c "./wpa_supplicant -i eth1 -D wext -t -c mnfunk.conf -d" 1
> Wait till "ping" works
Ctrl-C
> script -c "./wpa_supplicant -i eth1 -D wext -t -c mnfunk.conf -d" 2

I cannot reproduce this anymore, dunny why.

-- 
http://www.holgerschurig.de

^ permalink raw reply

* [PATCH 3/3 V2] i2400m-sdio: select IWMC3200TOP in Kconfig
From: Tomas Winkler @ 2009-09-24  8:00 UTC (permalink / raw)
  To: davem, linville, netdev, linux-wireless, linux-mmc
  Cc: yi.zhu, inaky.perez-gonzalez, cindy.h.kao, guy.cohen,
	ron.rindjunsky, Tomas Winkler

i2400m-sdio requires iwmc3200top for its operation

create separate config option to separate 3200 specifics
from eventual further wimax sdio HW.

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
---
V2: create separate config option as discussed with Inaky

 drivers/net/wimax/i2400m/Kconfig |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/drivers/net/wimax/i2400m/Kconfig b/drivers/net/wimax/i2400m/Kconfig
index d623b3d..9723c5c 100644
--- a/drivers/net/wimax/i2400m/Kconfig
+++ b/drivers/net/wimax/i2400m/Kconfig
@@ -31,6 +31,15 @@ config WIMAX_I2400M_SDIO
 
 	  If unsure, it is safe to select M (module).
 
+config WIMAX_IWMC3200_SDIO
+	bool "Intel Wireless Multicom WiMAX Connection 3200 over SDIO"
+	depends on WIMAX_I2400M_SDIO
+	select IWMC3200TOP
+	help
+	  Select if you have a device based on the Intel Multicom WiMAX
+          Connection 3200 over SDIO.
+ 
+
 config WIMAX_I2400M_DEBUG_LEVEL
 	int "WiMAX i2400m debug level"
 	depends on WIMAX_I2400M
-- 
1.6.0.6

---------------------------------------------------------------------
Intel Israel (74) Limited

This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.


^ permalink raw reply related

* Re: Problems with "cfg80211: fix SME connect" commit
From: Johannes Berg @ 2009-09-24  8:05 UTC (permalink / raw)
  To: Albert Herranz; +Cc: Holger Schurig, linville, linux-wireless
In-Reply-To: <4AB7A5BB.1050300@yahoo.es>

[-- Attachment #1: Type: text/plain, Size: 860 bytes --]

On Mon, 2009-09-21 at 18:11 +0200, Albert Herranz wrote:

> Adding back "cfg80211: fix SME connect" and applying "cfg80211: don't
> overwrite privacy setting" fixes the connection issue, but with a
> introduces a small difference vs the previous working version.
> There is now an extra "deauthenticating by local choice (reason=3)"
> message in the logs.

> [   13.969153] b43-phy0 debug: Adding Interface type 2
> [   16.679249] wlan1: direct probe to AP 00:12:17:15:e7:79 (try 1)

> * master-20090916 + "cfg80211: don't overwrite privacy setting"

> [   13.218613] b43-phy0 debug: Adding Interface type 2
> [   15.832582] wlan1: deauthenticating by local choice (reason=3)
> [   16.131599] wlan1: direct probe to AP 00:12:17:15:e7:79 (try 1)

Very odd. Can you edit the deauthenticating message to show the
BSSID/MAC address?

johannes

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 801 bytes --]

^ permalink raw reply

* Re: getting "ath5k phy0: noise floor calibration timeout"
From: Holger Schurig @ 2009-09-24  8:15 UTC (permalink / raw)
  To: Dan Williams; +Cc: linux-wireless, Luis R. Rodriguez
In-Reply-To: <1253662161.2510.59.camel@localhost.localdomain>

> I get that all the time, and have since 2.6.27 or earlier.  If
> it's a real bug, we should fix it, but if it's just an
> informational message, maybe we should silence it?

On ath5k-devel, there was a mail "[ath5k-devel] [RFC/RFT] ath5k: 
use noise calibration from madwifi hal" from Bob Copeland.

Part of the patch is "- we do not complain if NF calibration 
isn't complete, instead we keep the last read value.".



I now applied this patch, the message is gone and the device 
seems to work quite nicely. Maybe it should still emit a warning 
if there are n consecutive calibration errors, but for now I'm 
happy.

-- 
http://www.holgerschurig.de

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox