* Re: [PATCH] wl1251: re-disable PG10 chips
From: Kalle Valo @ 2009-10-27 19:39 UTC (permalink / raw)
To: John W. Linville; +Cc: linux-wireless
In-Reply-To: <1256671025-26126-1-git-send-email-linville@tuxdriver.com>
"John W. Linville" <linville@tuxdriver.com> writes:
> "wl1251: add support for PG11 chips." accidentally enabled PG10 chips as
> well...
>
> Reported-by: Kalle Valo <kalle.valo@iki.fi>
> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Thanks, looks good.
--
Kalle Valo
^ permalink raw reply
* [PATCH] mac80211_hwsim: don't register CCK rates on 5ghz
From: Johannes Berg @ 2009-10-27 19:53 UTC (permalink / raw)
To: John Linville; +Cc: linux-wireless
This buglet confused me a lot just now ...
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
---
drivers/net/wireless/mac80211_hwsim.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
--- wireless-testing.orig/drivers/net/wireless/mac80211_hwsim.c 2009-10-27 20:52:53.000000000 +0100
+++ wireless-testing/drivers/net/wireless/mac80211_hwsim.c 2009-10-27 20:52:56.000000000 +0100
@@ -1045,19 +1045,20 @@ static int __init init_mac80211_hwsim(vo
sband->channels = data->channels_2ghz;
sband->n_channels =
ARRAY_SIZE(hwsim_channels_2ghz);
+ sband->bitrates = data->rates;
+ sband->n_bitrates = ARRAY_SIZE(hwsim_rates);
break;
case IEEE80211_BAND_5GHZ:
sband->channels = data->channels_5ghz;
sband->n_channels =
ARRAY_SIZE(hwsim_channels_5ghz);
+ sband->bitrates = data->rates + 4;
+ sband->n_bitrates = ARRAY_SIZE(hwsim_rates) - 4;
break;
default:
break;
}
- sband->bitrates = data->rates;
- sband->n_bitrates = ARRAY_SIZE(hwsim_rates);
-
sband->ht_cap.ht_supported = true;
sband->ht_cap.cap = IEEE80211_HT_CAP_SUP_WIDTH_20_40 |
IEEE80211_HT_CAP_GRN_FLD |
^ permalink raw reply
* [PATCH] mac80211: remove outdated comment
From: Johannes Berg @ 2009-10-27 19:56 UTC (permalink / raw)
To: John Linville; +Cc: linux-wireless
This comment hasn't been a real TODO item for a long
time now since we fixed that quite a while ago.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
---
net/mac80211/scan.c | 2 --
1 file changed, 2 deletions(-)
--- wireless-testing.orig/net/mac80211/scan.c 2009-10-27 17:12:54.000000000 +0100
+++ wireless-testing/net/mac80211/scan.c 2009-10-27 17:19:16.000000000 +0100
@@ -12,8 +12,6 @@
* published by the Free Software Foundation.
*/
-/* TODO: figure out how to avoid that the "current BSS" expires */
-
#include <linux/wireless.h>
#include <linux/if_arp.h>
#include <linux/rtnetlink.h>
^ permalink raw reply
* [PATCH 2.6.32] mac80211: split hardware scan by band
From: Johannes Berg @ 2009-10-27 19:59 UTC (permalink / raw)
To: John Linville; +Cc: linux-wireless
There's currently a very odd bug in mac80211 -- a
hardware scan that is done while the hardware is
really operating on 2.4 GHz will include CCK rates
in the probe request frame, even on 5 GHz (if the
driver uses the mac80211 IEs). Vice versa, if the
hardware is operating on 5 GHz the 2.4 GHz probe
requests will not include CCK rates even though
they should.
Fix this by splitting up cfg80211 scan requests by
band -- recalculating the IEs every time -- and
requesting only per-band scans from the driver.
Apparently this bug hasn't been a problem yet, but
it is imaginable that some older access points get
confused if confronted with such behaviour.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
---
net/mac80211/ieee80211_i.h | 8 +--
net/mac80211/scan.c | 96 +++++++++++++++++++++++++++++++++------------
net/mac80211/util.c | 8 ++-
3 files changed, 80 insertions(+), 32 deletions(-)
--- wireless-testing.orig/net/mac80211/ieee80211_i.h 2009-10-27 20:53:00.000000000 +0100
+++ wireless-testing/net/mac80211/ieee80211_i.h 2009-10-27 20:54:01.000000000 +0100
@@ -667,10 +667,9 @@ struct ieee80211_local {
unsigned long scanning;
struct cfg80211_ssid scan_ssid;
struct cfg80211_scan_request *int_scan_req;
- struct cfg80211_scan_request *scan_req;
+ struct cfg80211_scan_request *scan_req, *hw_scan_req;
struct ieee80211_channel *scan_channel;
- const u8 *orig_ies;
- int orig_ies_len;
+ enum ieee80211_band hw_scan_band;
int scan_channel_idx;
int scan_ies_len;
@@ -1050,7 +1049,8 @@ void ieee80211_send_auth(struct ieee8021
u8 *extra, size_t extra_len, const u8 *bssid,
const u8 *key, u8 key_len, u8 key_idx);
int ieee80211_build_preq_ies(struct ieee80211_local *local, u8 *buffer,
- const u8 *ie, size_t ie_len);
+ const u8 *ie, size_t ie_len,
+ enum ieee80211_band band);
void ieee80211_send_probe_req(struct ieee80211_sub_if_data *sdata, u8 *dst,
const u8 *ssid, size_t ssid_len,
const u8 *ie, size_t ie_len);
--- wireless-testing.orig/net/mac80211/scan.c 2009-10-27 20:53:00.000000000 +0100
+++ wireless-testing/net/mac80211/scan.c 2009-10-27 20:54:01.000000000 +0100
@@ -187,6 +187,39 @@ ieee80211_scan_rx(struct ieee80211_sub_i
return RX_QUEUED;
}
+/* return false if no more work */
+static bool ieee80211_prep_hw_scan(struct ieee80211_local *local)
+{
+ struct cfg80211_scan_request *req = local->scan_req;
+ enum ieee80211_band band;
+ int i, ielen, n_chans;
+
+ do {
+ if (local->hw_scan_band == IEEE80211_NUM_BANDS)
+ return false;
+
+ band = local->hw_scan_band;
+ n_chans = 0;
+ for (i = 0; i < req->n_channels; i++) {
+ if (req->channels[i]->band == band) {
+ local->hw_scan_req->channels[n_chans] =
+ req->channels[i];
+ n_chans++;
+ }
+ }
+
+ local->hw_scan_band++;
+ } while (!n_chans);
+
+ local->hw_scan_req->n_channels = n_chans;
+
+ ielen = ieee80211_build_preq_ies(local, (u8 *)local->hw_scan_req->ie,
+ req->ie, req->ie_len, band);
+ local->hw_scan_req->ie_len = ielen;
+
+ return true;
+}
+
/*
* inform AP that we will go to sleep so that it will buffer the frames
* while we scan
@@ -247,13 +280,6 @@ static void ieee80211_scan_ps_disable(st
}
}
-static void ieee80211_restore_scan_ies(struct ieee80211_local *local)
-{
- kfree(local->scan_req->ie);
- local->scan_req->ie = local->orig_ies;
- local->scan_req->ie_len = local->orig_ies_len;
-}
-
void ieee80211_scan_completed(struct ieee80211_hw *hw, bool aborted)
{
struct ieee80211_local *local = hw_to_local(hw);
@@ -272,15 +298,22 @@ void ieee80211_scan_completed(struct iee
return;
}
- if (test_bit(SCAN_HW_SCANNING, &local->scanning))
- ieee80211_restore_scan_ies(local);
+ was_hw_scan = test_bit(SCAN_HW_SCANNING, &local->scanning);
+ if (was_hw_scan && !aborted && ieee80211_prep_hw_scan(local)) {
+ ieee80211_queue_delayed_work(&local->hw,
+ &local->scan_work, 0);
+ mutex_unlock(&local->scan_mtx);
+ return;
+ }
+
+ kfree(local->hw_scan_req);
+ local->hw_scan_req = NULL;
if (local->scan_req != local->int_scan_req)
cfg80211_scan_done(local->scan_req, aborted);
local->scan_req = NULL;
local->scan_sdata = NULL;
- was_hw_scan = test_bit(SCAN_HW_SCANNING, &local->scanning);
local->scanning = 0;
local->scan_channel = NULL;
@@ -392,19 +425,23 @@ static int __ieee80211_start_scan(struct
if (local->ops->hw_scan) {
u8 *ies;
- int ielen;
- ies = kmalloc(2 + IEEE80211_MAX_SSID_LEN +
- local->scan_ies_len + req->ie_len, GFP_KERNEL);
- if (!ies)
+ local->hw_scan_req = kmalloc(
+ sizeof(*local->hw_scan_req) +
+ req->n_channels * sizeof(req->channels[0]) +
+ 2 + IEEE80211_MAX_SSID_LEN + local->scan_ies_len +
+ req->ie_len, GFP_KERNEL);
+ if (!local->hw_scan_req)
return -ENOMEM;
- ielen = ieee80211_build_preq_ies(local, ies,
- req->ie, req->ie_len);
- local->orig_ies = req->ie;
- local->orig_ies_len = req->ie_len;
- req->ie = ies;
- req->ie_len = ielen;
+ local->hw_scan_req->ssids = req->ssids;
+ local->hw_scan_req->n_ssids = req->n_ssids;
+ ies = (u8 *)local->hw_scan_req +
+ sizeof(*local->hw_scan_req) +
+ req->n_channels * sizeof(req->channels[0]);
+ local->hw_scan_req->ie = ies;
+
+ local->hw_scan_band = 0;
}
local->scan_req = req;
@@ -436,16 +473,17 @@ static int __ieee80211_start_scan(struct
ieee80211_recalc_idle(local);
mutex_unlock(&local->scan_mtx);
- if (local->ops->hw_scan)
- rc = drv_hw_scan(local, local->scan_req);
- else
+ if (local->ops->hw_scan) {
+ WARN_ON(!ieee80211_prep_hw_scan(local));
+ rc = drv_hw_scan(local, local->hw_scan_req);
+ } else
rc = ieee80211_start_sw_scan(local);
mutex_lock(&local->scan_mtx);
if (rc) {
- if (local->ops->hw_scan)
- ieee80211_restore_scan_ies(local);
+ kfree(local->hw_scan_req);
+ local->hw_scan_req = NULL;
local->scanning = 0;
ieee80211_recalc_idle(local);
@@ -654,6 +692,14 @@ void ieee80211_scan_work(struct work_str
return;
}
+ if (local->hw_scan_req) {
+ int rc = drv_hw_scan(local, local->hw_scan_req);
+ mutex_unlock(&local->scan_mtx);
+ if (rc)
+ ieee80211_scan_completed(&local->hw, true);
+ return;
+ }
+
if (local->scan_req && !local->scanning) {
struct cfg80211_scan_request *req = local->scan_req;
int rc;
--- wireless-testing.orig/net/mac80211/util.c 2009-10-27 20:53:00.000000000 +0100
+++ wireless-testing/net/mac80211/util.c 2009-10-27 20:54:01.000000000 +0100
@@ -872,13 +872,14 @@ void ieee80211_send_auth(struct ieee8021
}
int ieee80211_build_preq_ies(struct ieee80211_local *local, u8 *buffer,
- const u8 *ie, size_t ie_len)
+ const u8 *ie, size_t ie_len,
+ enum ieee80211_band band)
{
struct ieee80211_supported_band *sband;
u8 *pos, *supp_rates_len, *esupp_rates_len = NULL;
int i;
- sband = local->hw.wiphy->bands[local->hw.conf.channel->band];
+ sband = local->hw.wiphy->bands[band];
pos = buffer;
@@ -966,7 +967,8 @@ void ieee80211_send_probe_req(struct iee
memcpy(pos, ssid, ssid_len);
pos += ssid_len;
- skb_put(skb, ieee80211_build_preq_ies(local, pos, ie, ie_len));
+ skb_put(skb, ieee80211_build_preq_ies(local, pos, ie, ie_len,
+ local->hw.conf.channel->band));
ieee80211_tx_skb(sdata, skb, 0);
}
^ permalink raw reply
* Re: [PATCH 2.6.32] mac80211: split hardware scan by band
From: Johannes Berg @ 2009-10-27 20:24 UTC (permalink / raw)
To: John Linville; +Cc: linux-wireless, Luciano Coelho
In-Reply-To: <1256673595.4237.24.camel@johannes.local>
[-- Attachment #1: Type: text/plain, Size: 548 bytes --]
On Tue, 2009-10-27 at 20:59 +0100, Johannes Berg wrote:
> Fix this by splitting up cfg80211 scan requests by
> band -- recalculating the IEs every time -- and
> requesting only per-band scans from the driver.
Incidentally, this means that dual-band drivers now absolutely need to
take a look at the scan channel list that is provided since if they
ignore it they will end up doing two full scans instead of one. Since
wl1271 is the only driver this affects right now, and its 5ghz support
is disabled, this seems ok to me.
johannes
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 801 bytes --]
^ permalink raw reply
* iwlist wlan0 scan disrupts communications
From: Charles Gordon @ 2009-10-27 20:40 UTC (permalink / raw)
To: linux-wireless
Hi,
I am using version 2.6.28 of the kernel and version 0.9.11-nogit of
iw. Communications are disrupted and the device stops responding to
ping when I use the command "iwlist wlan0 scan". Communications are
restored when the command completes. Is this behavior expected? Has
it been fixed in a later release?
Thanks for your help.
^ permalink raw reply
* Re: iwlist wlan0 scan disrupts communications
From: Johannes Berg @ 2009-10-27 20:43 UTC (permalink / raw)
To: Charles Gordon; +Cc: linux-wireless
In-Reply-To: <86201b3f0910271340t51aa6c0bgff43e6e7211a0dee@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 497 bytes --]
On Tue, 2009-10-27 at 16:40 -0400, Charles Gordon wrote:
> Hi,
>
> I am using version 2.6.28 of the kernel and version 0.9.11-nogit of
> iw. Communications are disrupted and the device stops responding to
> ping when I use the command "iwlist wlan0 scan". Communications are
> restored when the command completes. Is this behavior expected? Has
> it been fixed in a later release?
Yes and yes, but I don't remember whether it's better in 2.6.31 or only
will be in 32.
johannes
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 801 bytes --]
^ permalink raw reply
* Re: iwlist wlan0 scan disrupts communications
From: John W. Linville @ 2009-10-27 20:59 UTC (permalink / raw)
To: Charles Gordon; +Cc: linux-wireless
In-Reply-To: <86201b3f0910271340t51aa6c0bgff43e6e7211a0dee@mail.gmail.com>
On Tue, Oct 27, 2009 at 04:40:46PM -0400, Charles Gordon wrote:
> I am using version 2.6.28 of the kernel and version 0.9.11-nogit of
> iw. Communications are disrupted and the device stops responding to
> ping when I use the command "iwlist wlan0 scan". Communications are
> restored when the command completes. Is this behavior expected? Has
> it been fixed in a later release?
The device has to change frequencies to conduct the scan. Kinda like
missing part of a show while you are flipping channels... :-)
--
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
* [PATCH] libertas: remove internal buffers from GSPI driver
From: Andrey Yurovsky @ 2009-10-27 23:51 UTC (permalink / raw)
To: linux-wireless; +Cc: libertas-dev, sebatian, dcbw, Andrey Yurovsky
This patch removes the internal command and data buffers that the GSPI driver
maintained and instead relies on the Libertas core to synchronize access
to the command and data ports as with the other interface drivers. This
cleanup reduces the GSPI driver's memory footprint and should improve
performance by removing the need to copy to these internal buffers.
This also simplifies the bottom half of the interrupt handler.
This is an incremental cleanup: after removing the redundant buffers, we
can further improve the driver to use a threaded IRQ handler instead of
maintaining its own thread. However I would like a few folks to test
the buffer removal first and make sure that I'm not introducing
regressions.
Tested on Blackfin BF527 with DMA disabled due to an issue with the SPI
host controller driver in the current bleeding-edge Blackfin kernel. I
would appreciate it if someone with working DMA could test this patch
and provide feedback.
Signed-off-by: Andrey Yurovsky <andrey@cozybit.com>
---
drivers/net/wireless/libertas/if_spi.c | 136 ++------------------------------
1 files changed, 6 insertions(+), 130 deletions(-)
diff --git a/drivers/net/wireless/libertas/if_spi.c b/drivers/net/wireless/libertas/if_spi.c
index 06df2e1..9e0096d 100644
--- a/drivers/net/wireless/libertas/if_spi.c
+++ b/drivers/net/wireless/libertas/if_spi.c
@@ -32,12 +32,6 @@
#include "dev.h"
#include "if_spi.h"
-struct if_spi_packet {
- struct list_head list;
- u16 blen;
- u8 buffer[0] __attribute__((aligned(4)));
-};
-
struct if_spi_card {
struct spi_device *spi;
struct lbs_private *priv;
@@ -66,33 +60,10 @@ struct if_spi_card {
struct semaphore spi_thread_terminated;
u8 cmd_buffer[IF_SPI_CMD_BUF_SIZE];
-
- /* A buffer of incoming packets from libertas core.
- * Since we can't sleep in hw_host_to_card, we have to buffer
- * them. */
- struct list_head cmd_packet_list;
- struct list_head data_packet_list;
-
- /* Protects cmd_packet_list and data_packet_list */
- spinlock_t buffer_lock;
};
static void free_if_spi_card(struct if_spi_card *card)
{
- struct list_head *cursor, *next;
- struct if_spi_packet *packet;
-
- BUG_ON(card->run_thread);
- list_for_each_safe(cursor, next, &card->cmd_packet_list) {
- packet = container_of(cursor, struct if_spi_packet, list);
- list_del(&packet->list);
- kfree(packet);
- }
- list_for_each_safe(cursor, next, &card->data_packet_list) {
- packet = container_of(cursor, struct if_spi_packet, list);
- list_del(&packet->list);
- kfree(packet);
- }
spi_set_drvdata(card->spi, NULL);
kfree(card);
}
@@ -774,40 +745,6 @@ out:
return err;
}
-/* Move data or a command from the host to the card. */
-static void if_spi_h2c(struct if_spi_card *card,
- struct if_spi_packet *packet, int type)
-{
- int err = 0;
- u16 int_type, port_reg;
-
- switch (type) {
- case MVMS_DAT:
- int_type = IF_SPI_CIC_TX_DOWNLOAD_OVER;
- port_reg = IF_SPI_DATA_RDWRPORT_REG;
- break;
- case MVMS_CMD:
- int_type = IF_SPI_CIC_CMD_DOWNLOAD_OVER;
- port_reg = IF_SPI_CMD_RDWRPORT_REG;
- break;
- default:
- lbs_pr_err("can't transfer buffer of type %d\n", type);
- err = -EINVAL;
- goto out;
- }
-
- /* Write the data to the card */
- err = spu_write(card, port_reg, packet->buffer, packet->blen);
- if (err)
- goto out;
-
-out:
- kfree(packet);
-
- if (err)
- lbs_pr_err("%s: error %d\n", __func__, err);
-}
-
/* Inform the host about a card event */
static void if_spi_e2h(struct if_spi_card *card)
{
@@ -837,8 +774,6 @@ static int lbs_spi_thread(void *data)
int err;
struct if_spi_card *card = data;
u16 hiStatus;
- unsigned long flags;
- struct if_spi_packet *packet;
while (1) {
/* Wait to be woken up by one of two things. First, our ISR
@@ -877,43 +812,9 @@ static int lbs_spi_thread(void *data)
if (hiStatus & IF_SPI_HIST_CMD_DOWNLOAD_RDY ||
(card->priv->psstate != PS_STATE_FULL_POWER &&
(hiStatus & IF_SPI_HIST_TX_DOWNLOAD_RDY))) {
- /* This means two things. First of all,
- * if there was a previous command sent, the card has
- * successfully received it.
- * Secondly, it is now ready to download another
- * command.
- */
lbs_host_to_card_done(card->priv);
-
- /* Do we have any command packets from the host to
- * send? */
- packet = NULL;
- spin_lock_irqsave(&card->buffer_lock, flags);
- if (!list_empty(&card->cmd_packet_list)) {
- packet = (struct if_spi_packet *)(card->
- cmd_packet_list.next);
- list_del(&packet->list);
- }
- spin_unlock_irqrestore(&card->buffer_lock, flags);
-
- if (packet)
- if_spi_h2c(card, packet, MVMS_CMD);
}
- if (hiStatus & IF_SPI_HIST_TX_DOWNLOAD_RDY) {
- /* Do we have any data packets from the host to
- * send? */
- packet = NULL;
- spin_lock_irqsave(&card->buffer_lock, flags);
- if (!list_empty(&card->data_packet_list)) {
- packet = (struct if_spi_packet *)(card->
- data_packet_list.next);
- list_del(&packet->list);
- }
- spin_unlock_irqrestore(&card->buffer_lock, flags);
- if (packet)
- if_spi_h2c(card, packet, MVMS_DAT);
- }
if (hiStatus & IF_SPI_HIST_CARD_EVENT)
if_spi_e2h(card);
@@ -942,40 +843,18 @@ static int if_spi_host_to_card(struct lbs_private *priv,
u8 type, u8 *buf, u16 nb)
{
int err = 0;
- unsigned long flags;
struct if_spi_card *card = priv->card;
- struct if_spi_packet *packet;
- u16 blen;
lbs_deb_enter_args(LBS_DEB_SPI, "type %d, bytes %d", type, nb);
- if (nb == 0) {
- lbs_pr_err("%s: invalid size requested: %d\n", __func__, nb);
- err = -EINVAL;
- goto out;
- }
- blen = ALIGN(nb, 4);
- packet = kzalloc(sizeof(struct if_spi_packet) + blen, GFP_ATOMIC);
- if (!packet) {
- err = -ENOMEM;
- goto out;
- }
- packet->blen = blen;
- memcpy(packet->buffer, buf, nb);
- memset(packet->buffer + nb, 0, blen - nb);
+ nb = ALIGN(nb, 4);
switch (type) {
case MVMS_CMD:
- priv->dnld_sent = DNLD_CMD_SENT;
- spin_lock_irqsave(&card->buffer_lock, flags);
- list_add_tail(&packet->list, &card->cmd_packet_list);
- spin_unlock_irqrestore(&card->buffer_lock, flags);
+ err = spu_write(card, IF_SPI_CMD_RDWRPORT_REG, buf, nb);
break;
case MVMS_DAT:
- priv->dnld_sent = DNLD_DATA_SENT;
- spin_lock_irqsave(&card->buffer_lock, flags);
- list_add_tail(&packet->list, &card->data_packet_list);
- spin_unlock_irqrestore(&card->buffer_lock, flags);
+ err = spu_write(card, IF_SPI_DATA_RDWRPORT_REG, buf, nb);
break;
default:
lbs_pr_err("can't transfer buffer of type %d", type);
@@ -983,9 +862,6 @@ static int if_spi_host_to_card(struct lbs_private *priv,
break;
}
- /* Wake up the spi thread */
- up(&card->spi_ready);
-out:
lbs_deb_leave_args(LBS_DEB_SPI, "err=%d", err);
return err;
}
@@ -1062,9 +938,6 @@ static int __devinit if_spi_probe(struct spi_device *spi)
sema_init(&card->spi_ready, 0);
sema_init(&card->spi_thread_terminated, 0);
- INIT_LIST_HEAD(&card->cmd_packet_list);
- INIT_LIST_HEAD(&card->data_packet_list);
- spin_lock_init(&card->buffer_lock);
/* Initialize the SPI Interface Unit */
err = spu_init(card, pdata->use_dummy_writes);
@@ -1141,6 +1014,9 @@ static int __devinit if_spi_probe(struct spi_device *spi)
goto terminate_thread;
}
+ /* poke the IRQ handler so that we don't miss the first interrupt */
+ up(&card->spi_ready);
+
/* Start the card.
* This will call register_netdev, and we'll start
* getting interrupts... */
--
1.5.6.3
^ permalink raw reply related
* Re: [ath5k-devel] ath5k, too high output power?
From: Bob Copeland @ 2009-10-28 4:16 UTC (permalink / raw)
To: Luis R. Rodriguez; +Cc: Denys Fedoryschenko, ath5k-devel, linux-wireless
In-Reply-To: <43e72e890910261959s6490b900xebb365d288c03f@mail.gmail.com>
On Mon, Oct 26, 2009 at 10:59 PM, Luis R. Rodriguez <mcgrof@gmail.com> wrote:
>> I mean A or B :-) AUX or MAIN :-)
>> Sorry for my ugly English.
>> In madwifi, as i remember i was possible to do that or over sysctl or over
>> module parameter, i dont remember exactly where.
>
> You mean can you do antenna diversity and select this manually ? I am
> not sure, but I doubt it, should be easy to add though.
The code's already there in the driver, there's just not any interface
to do it from cfg80211 yet. If you want to hack the driver just look
for the antenna-related defines :)
--
Bob Copeland %% www.bobcopeland.com
^ permalink raw reply
* [PATCH] mac80211: fix radiotap header generation
From: Johannes Berg @ 2009-10-28 8:58 UTC (permalink / raw)
To: John Linville; +Cc: linux-wireless, Bruno Randolf
In
commit 601ae7f25aea58f208a7f640f6174aac0652403a
Author: Bruno Randolf <br1@einfach.org>
Date: Thu May 8 19:22:43 2008 +0200
mac80211: make rx radiotap header more flexible
code was added that tried to align the radiotap header
position in memory based on the radiotap header length.
Quite obviously, that is completely useless.
Instead of trying to do that, use unaligned accesses
to generate the radiotap header. To properly do that,
we also need to mark struct ieee80211_radiotap_header
packed, but that is fine since it's already packed
(and it should be marked packed anyway since its a
wire format).
Cc: Bruno Randolf <br1@einfach.org>
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
---
I'm not sure it should be sent to stable, it only affects platforms that
don't do unaligned accesses well.
include/net/ieee80211_radiotap.h | 2 +-
net/mac80211/rx.c | 26 ++++++++++++--------------
2 files changed, 13 insertions(+), 15 deletions(-)
--- wireless-testing.orig/net/mac80211/rx.c 2009-10-28 08:43:27.000000000 +0100
+++ wireless-testing/net/mac80211/rx.c 2009-10-28 08:58:24.000000000 +0100
@@ -95,10 +95,6 @@ ieee80211_rx_radiotap_len(struct ieee802
if (len & 1) /* padding for RX_FLAGS if necessary */
len++;
- /* make sure radiotap starts at a naturally aligned address */
- if (len % 8)
- len = roundup(len, 8);
-
return len;
}
@@ -116,6 +112,7 @@ ieee80211_add_rx_radiotap_header(struct
struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb);
struct ieee80211_radiotap_header *rthdr;
unsigned char *pos;
+ u16 rx_flags = 0;
rthdr = (struct ieee80211_radiotap_header *)skb_push(skb, rtap_len);
memset(rthdr, 0, rtap_len);
@@ -134,7 +131,7 @@ ieee80211_add_rx_radiotap_header(struct
/* IEEE80211_RADIOTAP_TSFT */
if (status->flag & RX_FLAG_TSFT) {
- *(__le64 *)pos = cpu_to_le64(status->mactime);
+ put_unaligned_le64(status->mactime, pos);
rthdr->it_present |=
cpu_to_le32(1 << IEEE80211_RADIOTAP_TSFT);
pos += 8;
@@ -166,17 +163,17 @@ ieee80211_add_rx_radiotap_header(struct
pos++;
/* IEEE80211_RADIOTAP_CHANNEL */
- *(__le16 *)pos = cpu_to_le16(status->freq);
+ put_unaligned_le16(status->freq, pos);
pos += 2;
if (status->band == IEEE80211_BAND_5GHZ)
- *(__le16 *)pos = cpu_to_le16(IEEE80211_CHAN_OFDM |
- IEEE80211_CHAN_5GHZ);
+ put_unaligned_le16(IEEE80211_CHAN_OFDM | IEEE80211_CHAN_5GHZ,
+ pos);
else if (rate->flags & IEEE80211_RATE_ERP_G)
- *(__le16 *)pos = cpu_to_le16(IEEE80211_CHAN_OFDM |
- IEEE80211_CHAN_2GHZ);
+ put_unaligned_le16(IEEE80211_CHAN_OFDM | IEEE80211_CHAN_2GHZ,
+ pos);
else
- *(__le16 *)pos = cpu_to_le16(IEEE80211_CHAN_CCK |
- IEEE80211_CHAN_2GHZ);
+ put_unaligned_le16(IEEE80211_CHAN_CCK | IEEE80211_CHAN_2GHZ,
+ pos);
pos += 2;
/* IEEE80211_RADIOTAP_DBM_ANTSIGNAL */
@@ -205,10 +202,11 @@ ieee80211_add_rx_radiotap_header(struct
/* IEEE80211_RADIOTAP_RX_FLAGS */
/* ensure 2 byte alignment for the 2 byte field as required */
- if ((pos - (unsigned char *)rthdr) & 1)
+ if ((pos - (u8 *)rthdr) & 1)
pos++;
if (status->flag & RX_FLAG_FAILED_PLCP_CRC)
- *(__le16 *)pos |= cpu_to_le16(IEEE80211_RADIOTAP_F_RX_BADPLCP);
+ rx_flags |= IEEE80211_RADIOTAP_F_RX_BADPLCP;
+ put_unaligned_le16(rx_flags, pos);
pos += 2;
}
--- wireless-testing.orig/include/net/ieee80211_radiotap.h 2009-10-28 08:46:35.000000000 +0100
+++ wireless-testing/include/net/ieee80211_radiotap.h 2009-10-28 08:51:49.000000000 +0100
@@ -80,7 +80,7 @@ struct ieee80211_radiotap_header {
* Additional extensions are made
* by setting bit 31.
*/
-};
+} __packed;
/* Name Data type Units
* ---- --------- -----
^ permalink raw reply
* [PATCH] mac80211: remove RX_FLAG_RADIOTAP
From: Johannes Berg @ 2009-10-28 9:03 UTC (permalink / raw)
To: John Linville; +Cc: linux-wireless, Jouni Malinen
While there may be a case for a driver adding its
own bits of radiotap information, none currently
does. Also, drivers would have to copy the code
to generate the radiotap bits that now mac80211
generates. If some driver in the future needs to
add some driver-specific information I'd expect
that to be in a radiotap vendor namespace and we
can add a different way of passing such data up
and having mac80211 include it.
Additionally, rename IEEE80211_CONF_RADIOTAP to
IEEE80211_CONF_MONITOR since it's still used by
b43(legacy) to obtain per-frame timestamps.
The purpose of this patch is to simplify the RX
code in mac80211 to make it easier to add paged
skb support.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
---
drivers/net/wireless/b43/main.c | 2 +-
drivers/net/wireless/b43legacy/main.c | 2 +-
include/net/mac80211.h | 15 +++++++--------
net/mac80211/iface.c | 8 ++++----
net/mac80211/rx.c | 33 ++++++++++++---------------------
5 files changed, 25 insertions(+), 35 deletions(-)
--- wireless-testing.orig/drivers/net/wireless/b43/main.c 2009-10-28 09:43:07.000000000 +0100
+++ wireless-testing/drivers/net/wireless/b43/main.c 2009-10-28 09:43:30.000000000 +0100
@@ -3573,7 +3573,7 @@ static int b43_op_config(struct ieee8021
if (conf->channel->hw_value != phy->channel)
b43_switch_channel(dev, conf->channel->hw_value);
- dev->wl->radiotap_enabled = !!(conf->flags & IEEE80211_CONF_RADIOTAP);
+ dev->wl->radiotap_enabled = !!(conf->flags & IEEE80211_CONF_MONITOR);
/* Adjust the desired TX power level. */
if (conf->power_level != 0) {
--- wireless-testing.orig/drivers/net/wireless/b43legacy/main.c 2009-10-28 09:43:08.000000000 +0100
+++ wireless-testing/drivers/net/wireless/b43legacy/main.c 2009-10-28 09:43:35.000000000 +0100
@@ -2677,7 +2677,7 @@ static int b43legacy_op_dev_config(struc
if (conf->channel->hw_value != phy->channel)
b43legacy_radio_selectchannel(dev, conf->channel->hw_value, 0);
- dev->wl->radiotap_enabled = !!(conf->flags & IEEE80211_CONF_RADIOTAP);
+ dev->wl->radiotap_enabled = !!(conf->flags & IEEE80211_CONF_MONITOR);
/* Adjust the desired TX power level. */
if (conf->power_level != 0) {
--- wireless-testing.orig/include/net/mac80211.h 2009-10-28 09:41:17.000000000 +0100
+++ wireless-testing/include/net/mac80211.h 2009-10-28 09:44:19.000000000 +0100
@@ -494,7 +494,6 @@ ieee80211_tx_info_clear_status(struct ie
* @RX_FLAG_MMIC_ERROR: Michael MIC error was reported on this frame.
* Use together with %RX_FLAG_MMIC_STRIPPED.
* @RX_FLAG_DECRYPTED: This frame was decrypted in hardware.
- * @RX_FLAG_RADIOTAP: This frame starts with a radiotap header.
* @RX_FLAG_MMIC_STRIPPED: the Michael MIC is stripped off this frame,
* verification has been done by the hardware.
* @RX_FLAG_IV_STRIPPED: The IV/ICV are stripped from this frame.
@@ -515,7 +514,6 @@ ieee80211_tx_info_clear_status(struct ie
enum mac80211_rx_flags {
RX_FLAG_MMIC_ERROR = 1<<0,
RX_FLAG_DECRYPTED = 1<<1,
- RX_FLAG_RADIOTAP = 1<<2,
RX_FLAG_MMIC_STRIPPED = 1<<3,
RX_FLAG_IV_STRIPPED = 1<<4,
RX_FLAG_FAILED_FCS_CRC = 1<<5,
@@ -565,7 +563,9 @@ struct ieee80211_rx_status {
*
* Flags to define PHY configuration options
*
- * @IEEE80211_CONF_RADIOTAP: add radiotap header at receive time (if supported)
+ * @IEEE80211_CONF_MONITOR: there's a monitor interface present -- use this
+ * to determine for example whether to calculate timestamps for packets
+ * or not, do not use instead of filter flags!
* @IEEE80211_CONF_PS: Enable 802.11 power save mode (managed mode only)
* @IEEE80211_CONF_IDLE: The device is running, but idle; if the flag is set
* the driver should be prepared to handle configuration requests but
@@ -574,7 +574,7 @@ struct ieee80211_rx_status {
* it can also be unset in that case when monitor interfaces are active.
*/
enum ieee80211_conf_flags {
- IEEE80211_CONF_RADIOTAP = (1<<0),
+ IEEE80211_CONF_MONITOR = (1<<0),
IEEE80211_CONF_PS = (1<<1),
IEEE80211_CONF_IDLE = (1<<2),
};
@@ -584,7 +584,7 @@ enum ieee80211_conf_flags {
* enum ieee80211_conf_changed - denotes which configuration changed
*
* @IEEE80211_CONF_CHANGE_LISTEN_INTERVAL: the listen interval changed
- * @IEEE80211_CONF_CHANGE_RADIOTAP: the radiotap flag changed
+ * @IEEE80211_CONF_CHANGE_MONITOR: the monitor flag changed
* @IEEE80211_CONF_CHANGE_PS: the PS flag or dynamic PS timeout changed
* @IEEE80211_CONF_CHANGE_POWER: the TX power changed
* @IEEE80211_CONF_CHANGE_CHANNEL: the channel/channel_type changed
@@ -593,7 +593,7 @@ enum ieee80211_conf_flags {
*/
enum ieee80211_conf_changed {
IEEE80211_CONF_CHANGE_LISTEN_INTERVAL = BIT(2),
- IEEE80211_CONF_CHANGE_RADIOTAP = BIT(3),
+ IEEE80211_CONF_CHANGE_MONITOR = BIT(3),
IEEE80211_CONF_CHANGE_PS = BIT(4),
IEEE80211_CONF_CHANGE_POWER = BIT(5),
IEEE80211_CONF_CHANGE_CHANNEL = BIT(6),
@@ -1661,8 +1661,7 @@ void ieee80211_restart_hw(struct ieee802
* ieee80211_rx - receive frame
*
* Use this function to hand received frames to mac80211. The receive
- * buffer in @skb must start with an IEEE 802.11 header or a radiotap
- * header if %RX_FLAG_RADIOTAP is set in the @status flags.
+ * buffer in @skb must start with an IEEE 802.11 header.
*
* This function may not be called in IRQ context. Calls to this function
* for a single hardware must be synchronized against each other. Calls to
--- wireless-testing.orig/net/mac80211/iface.c 2009-10-28 09:42:16.000000000 +0100
+++ wireless-testing/net/mac80211/iface.c 2009-10-28 09:42:26.000000000 +0100
@@ -214,8 +214,8 @@ static int ieee80211_open(struct net_dev
/* must be before the call to ieee80211_configure_filter */
local->monitors++;
if (local->monitors == 1) {
- local->hw.conf.flags |= IEEE80211_CONF_RADIOTAP;
- hw_reconf_flags |= IEEE80211_CONF_CHANGE_RADIOTAP;
+ local->hw.conf.flags |= IEEE80211_CONF_MONITOR;
+ hw_reconf_flags |= IEEE80211_CONF_CHANGE_MONITOR;
}
if (sdata->u.mntr_flags & MONITOR_FLAG_FCSFAIL)
@@ -435,8 +435,8 @@ static int ieee80211_stop(struct net_dev
local->monitors--;
if (local->monitors == 0) {
- local->hw.conf.flags &= ~IEEE80211_CONF_RADIOTAP;
- hw_reconf_flags |= IEEE80211_CONF_CHANGE_RADIOTAP;
+ local->hw.conf.flags &= ~IEEE80211_CONF_MONITOR;
+ hw_reconf_flags |= IEEE80211_CONF_CHANGE_MONITOR;
}
if (sdata->u.mntr_flags & MONITOR_FLAG_FCSFAIL)
--- wireless-testing.orig/net/mac80211/rx.c 2009-10-28 09:44:36.000000000 +0100
+++ wireless-testing/net/mac80211/rx.c 2009-10-28 09:46:28.000000000 +0100
@@ -39,11 +39,8 @@ static u8 ieee80211_sta_manage_reorder_b
* only useful for monitoring.
*/
static struct sk_buff *remove_monitor_info(struct ieee80211_local *local,
- struct sk_buff *skb,
- int rtap_len)
+ struct sk_buff *skb)
{
- skb_pull(skb, rtap_len);
-
if (local->hw.flags & IEEE80211_HW_RX_INCLUDES_FCS) {
if (likely(skb->len > FCS_LEN))
skb_trim(skb, skb->len - FCS_LEN);
@@ -59,15 +56,14 @@ static struct sk_buff *remove_monitor_in
}
static inline int should_drop_frame(struct sk_buff *skb,
- int present_fcs_len,
- int radiotap_len)
+ int present_fcs_len)
{
struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb);
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
if (status->flag & (RX_FLAG_FAILED_FCS_CRC | RX_FLAG_FAILED_PLCP_CRC))
return 1;
- if (unlikely(skb->len < 16 + present_fcs_len + radiotap_len))
+ if (unlikely(skb->len < 16 + present_fcs_len))
return 1;
if (ieee80211_is_ctl(hdr->frame_control) &&
!ieee80211_is_pspoll(hdr->frame_control) &&
@@ -225,7 +221,6 @@ ieee80211_rx_monitor(struct ieee80211_lo
struct sk_buff *skb, *skb2;
struct net_device *prev_dev = NULL;
int present_fcs_len = 0;
- int rtap_len = 0;
/*
* First, we may need to make a copy of the skb because
@@ -235,25 +230,23 @@ ieee80211_rx_monitor(struct ieee80211_lo
* We don't need to, of course, if we aren't going to return
* the SKB because it has a bad FCS/PLCP checksum.
*/
- if (status->flag & RX_FLAG_RADIOTAP)
- rtap_len = ieee80211_get_radiotap_len(origskb->data);
- else
- /* room for the radiotap header based on driver features */
- needed_headroom = ieee80211_rx_radiotap_len(local, status);
+
+ /* room for the radiotap header based on driver features */
+ needed_headroom = ieee80211_rx_radiotap_len(local, status);
if (local->hw.flags & IEEE80211_HW_RX_INCLUDES_FCS)
present_fcs_len = FCS_LEN;
if (!local->monitors) {
- if (should_drop_frame(origskb, present_fcs_len, rtap_len)) {
+ if (should_drop_frame(origskb, present_fcs_len)) {
dev_kfree_skb(origskb);
return NULL;
}
- return remove_monitor_info(local, origskb, rtap_len);
+ return remove_monitor_info(local, origskb);
}
- if (should_drop_frame(origskb, present_fcs_len, rtap_len)) {
+ if (should_drop_frame(origskb, present_fcs_len)) {
/* only need to expand headroom if necessary */
skb = origskb;
origskb = NULL;
@@ -277,16 +270,14 @@ ieee80211_rx_monitor(struct ieee80211_lo
*/
skb = skb_copy_expand(origskb, needed_headroom, 0, GFP_ATOMIC);
- origskb = remove_monitor_info(local, origskb, rtap_len);
+ origskb = remove_monitor_info(local, origskb);
if (!skb)
return origskb;
}
- /* if necessary, prepend radiotap information */
- if (!(status->flag & RX_FLAG_RADIOTAP))
- ieee80211_add_rx_radiotap_header(local, skb, rate,
- needed_headroom);
+ /* prepend radiotap information */
+ ieee80211_add_rx_radiotap_header(local, skb, rate, needed_headroom);
skb_reset_mac_header(skb);
skb->ip_summed = CHECKSUM_UNNECESSARY;
^ permalink raw reply
* BUG at workqueue.c:192, debian 2.6.30 AND compat-wireless-2009-10-28
From: Konstantin Kletschke @ 2009-10-28 11:18 UTC (permalink / raw)
To: linux-wireless
Hi Folks!
I use an ath9k in an Asus eeePC 1101HA.
Actually regardeless which stable Kernel I use, I get many disconnects from
my AP and receive strength is very low (-106dB) or I get no scan results.
The Problem was solved with Kernel 2.6.32-rc3 but I need to use an vanilla
debian Kernel and put a compat-wireless packages among it.
With this, regardeless if compat-wireless-2009-10-28 or
compat-wireless-2.6.32-rc5.tar.bz2 I get this while booting:
[ 6.287660] kernel BUG at /build/buildd-linux-2.6_2.6.30-8-i386-Tm0Lt9/linux-2.6-2.6.30/debian/build/source_i386_none/kernel/workqueue.c:192!
[ 6.287778] invalid opcode: 0000 [#1] SMP
[ 6.287939] last sysfs file: /sys/devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D0p/pcm_class
[ 6.288005] Modules linked in: ath9k(+) snd_hda_codec_realtek ath9k_hw
mac80211 snd_hda_intel ath snd_hda_codec snd_hwdep snd_pcm joydev snd_seq
cfg80211 snd_timer rfkill_backport snd_seq_device i2c_isch uvcvideo
serio_raw snd eeepc_laptop videodev v4l1_compat led_class i2c_core psmouse
evdev atl1c wmi rfkill soundcore ac battery processor snd_page_alloc button
ext4 mbcache jbd2 crc16 usbhid hid sd_mod crc_t10dif ide_pci_generic
ide_core ata_generic pata_sch libata uhci_hcd video output scsi_mod
ehci_hcd usbcore thermal fan thermal_sys [last unloaded: scsi_wait_scan]
[ 6.288005]
[ 6.288005] Pid: 721, comm: modprobe Not tainted (2.6.30-2-686 #1) 1101HA
[ 6.288005] EIP: 0060:[<c0134552>] EFLAGS: 00010213 CPU: 0
[ 6.288005] EIP is at queue_work_on+0x1b/0x44
[ 6.288005] EAX: ef507308 EBX: 00000000 ECX: ef507304 EDX: 00000000
[ 6.288005] ESI: f7001d60 EDI: f71f9101 EBP: f71f89f4 ESP: ef7afe74
[ 6.288005] DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
[ 6.288005] Process modprobe (pid: 721, ti=ef7ae000 task=f70d2140 task.ti=ef7ae000)
[ 6.288005] Stack:
[ 6.288005] f71f92ec 00000000 f883475c ef088000 ef088030 f71f8220 00000000 00000008
[ 6.288005] f8840f70 f71ee000 f71f89f4 dbc30001 f883a66c f883c978 ef7afec8 f71ee058
[ 6.288005] 00000000 f8860000 f71f8220 c01ca4d0 dbc35001 081e1089 f8840ea8 f71ee000
[ 6.288005] Call Trace:
[ 6.288005] [<f883475c>] ? ath_init_device+0x96e/0x9f2 [ath9k]
[ 6.288005] [<f883a66c>] ? ath_pci_probe+0x1e1/0x2e7 [ath9k]
[ 6.288005] [<c01ca4d0>] ? sysfs_do_create_link+0xab/0xed
[ 6.288005] [<c020f87d>] ? local_pci_probe+0xb/0xc
[ 6.288005] [<c02101f3>] ? pci_device_probe+0x41/0x63
[ 6.288005] [<c026d40a>] ? driver_probe_device+0x76/0xfe
[ 6.288005] [<c026d4d2>] ? __driver_attach+0x40/0x5b
[ 6.288005] [<c026ced6>] ? bus_for_each_dev+0x37/0x5f
[ 6.288005] [<c026d2f1>] ? driver_attach+0x11/0x13
[ 6.288005] [<c026d492>] ? __driver_attach+0x0/0x5b
[ 6.288005] [<c026c99b>] ? bus_add_driver+0x99/0x1bf
[ 6.288005] [<c026d6eb>] ? driver_register+0x87/0xe0
[ 6.288005] [<c0210528>] ? __pci_register_driver+0x33/0x8b
[ 6.288005] [<f8844000>] ? ath9k_init+0x0/0x3d [ath9k]
[ 6.288005] [<f8844020>] ? ath9k_init+0x20/0x3d [ath9k]
[ 6.288005] [<c010113e>] ? do_one_initcall+0x55/0x155
[ 6.288005] [<c0147311>] ? sys_init_module+0x87/0x187
[ 6.288005] [<c0102ff4>] ? sysenter_do_call+0x12/0x28
[ 6.288005] Code: 0d 34 cf 43 c0 8b 00 03 04 8d 60 cd 43 c0 eb b2 56 89
d6 53 89 c3 f0 0f ba 29 00 19 c0 31 d2 85 c0 75 2c 8d 41 04 39 41 04 74 04
<0f> 0b eb fe 83 7e 10 00 89 ca 0f 45 1d 34 cf 43 c0 8b 06 03 04
[ 6.288005] EIP: [<c0134552>] queue_work_on+0x1b/0x44 SS:ESP
0068:ef7afe74
[ 6.299736] ---[ end trace 165efc44446b5942 ]---
What am I supposed to to now, to get this working?
Kind Regards, Konsti
--
GPG KeyID EF62FCEF
Fingerprint: 13C9 B16B 9844 EC15 CC2E A080 1E69 3FDA EF62 FCEF
^ permalink raw reply
* Re: BUG at workqueue.c:192, debian 2.6.30 AND compat-wireless-2009-10-28
From: Luis R. Rodriguez @ 2009-10-28 13:51 UTC (permalink / raw)
To: Konstantin Kletschke; +Cc: linux-wireless
In-Reply-To: <20091028111847.GA25553@punzenstreichler.doom>
On Wed, Oct 28, 2009 at 4:18 AM, Konstantin Kletschke <konsti@ku-gbr.de> wrote:
> Hi Folks!
>
> I use an ath9k in an Asus eeePC 1101HA.
>
> Actually regardeless which stable Kernel I use, I get many disconnects from
> my AP and receive strength is very low (-106dB) or I get no scan results.
>
> The Problem was solved with Kernel 2.6.32-rc3 but I need to use an vanilla
> debian Kernel and put a compat-wireless packages among it.
>
> With this, regardeless if compat-wireless-2009-10-28 or
> compat-wireless-2.6.32-rc5.tar.bz2 I get this while booting:
>
> [ 6.287660] kernel BUG at /build/buildd-linux-2.6_2.6.30-8-i386-Tm0Lt9/linux-2.6-2.6.30/debian/build/source_i386_none/kernel/workqueue.c:192!
> [ 6.287778] invalid opcode: 0000 [#1] SMP
> [ 6.287939] last sysfs file: /sys/devices/pci0000:00/0000:00:1b.0/sound/card0/pcmC0D0p/pcm_class
> [ 6.288005] Modules linked in: ath9k(+) snd_hda_codec_realtek ath9k_hw
> mac80211 snd_hda_intel ath snd_hda_codec snd_hwdep snd_pcm joydev snd_seq
> cfg80211 snd_timer rfkill_backport snd_seq_device i2c_isch uvcvideo
> serio_raw snd eeepc_laptop videodev v4l1_compat led_class i2c_core psmouse
> evdev atl1c wmi rfkill soundcore ac battery processor snd_page_alloc button
> ext4 mbcache jbd2 crc16 usbhid hid sd_mod crc_t10dif ide_pci_generic
> ide_core ata_generic pata_sch libata uhci_hcd video output scsi_mod
> ehci_hcd usbcore thermal fan thermal_sys [last unloaded: scsi_wait_scan]
> [ 6.288005]
> [ 6.288005] Pid: 721, comm: modprobe Not tainted (2.6.30-2-686 #1) 1101HA
> [ 6.288005] EIP: 0060:[<c0134552>] EFLAGS: 00010213 CPU: 0
> [ 6.288005] EIP is at queue_work_on+0x1b/0x44
> [ 6.288005] EAX: ef507308 EBX: 00000000 ECX: ef507304 EDX: 00000000
> [ 6.288005] ESI: f7001d60 EDI: f71f9101 EBP: f71f89f4 ESP: ef7afe74
> [ 6.288005] DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
> [ 6.288005] Process modprobe (pid: 721, ti=ef7ae000 task=f70d2140 task.ti=ef7ae000)
> [ 6.288005] Stack:
> [ 6.288005] f71f92ec 00000000 f883475c ef088000 ef088030 f71f8220 00000000 00000008
> [ 6.288005] f8840f70 f71ee000 f71f89f4 dbc30001 f883a66c f883c978 ef7afec8 f71ee058
> [ 6.288005] 00000000 f8860000 f71f8220 c01ca4d0 dbc35001 081e1089 f8840ea8 f71ee000
> [ 6.288005] Call Trace:
> [ 6.288005] [<f883475c>] ? ath_init_device+0x96e/0x9f2 [ath9k]
> [ 6.288005] [<f883a66c>] ? ath_pci_probe+0x1e1/0x2e7 [ath9k]
> [ 6.288005] [<c01ca4d0>] ? sysfs_do_create_link+0xab/0xed
> [ 6.288005] [<c020f87d>] ? local_pci_probe+0xb/0xc
> [ 6.288005] [<c02101f3>] ? pci_device_probe+0x41/0x63
> [ 6.288005] [<c026d40a>] ? driver_probe_device+0x76/0xfe
> [ 6.288005] [<c026d4d2>] ? __driver_attach+0x40/0x5b
> [ 6.288005] [<c026ced6>] ? bus_for_each_dev+0x37/0x5f
> [ 6.288005] [<c026d2f1>] ? driver_attach+0x11/0x13
> [ 6.288005] [<c026d492>] ? __driver_attach+0x0/0x5b
> [ 6.288005] [<c026c99b>] ? bus_add_driver+0x99/0x1bf
> [ 6.288005] [<c026d6eb>] ? driver_register+0x87/0xe0
> [ 6.288005] [<c0210528>] ? __pci_register_driver+0x33/0x8b
> [ 6.288005] [<f8844000>] ? ath9k_init+0x0/0x3d [ath9k]
> [ 6.288005] [<f8844020>] ? ath9k_init+0x20/0x3d [ath9k]
> [ 6.288005] [<c010113e>] ? do_one_initcall+0x55/0x155
> [ 6.288005] [<c0147311>] ? sys_init_module+0x87/0x187
> [ 6.288005] [<c0102ff4>] ? sysenter_do_call+0x12/0x28
> [ 6.288005] Code: 0d 34 cf 43 c0 8b 00 03 04 8d 60 cd 43 c0 eb b2 56 89
> d6 53 89 c3 f0 0f ba 29 00 19 c0 31 d2 85 c0 75 2c 8d 41 04 39 41 04 74 04
> <0f> 0b eb fe 83 7e 10 00 89 ca 0f 45 1d 34 cf 43 c0 8b 06 03 04
> [ 6.288005] EIP: [<c0134552>] queue_work_on+0x1b/0x44 SS:ESP
> 0068:ef7afe74
> [ 6.299736] ---[ end trace 165efc44446b5942 ]---
>
> What am I supposed to to now, to get this working?
What kernel are you on?
Luis
^ permalink raw reply
* [PATCH resend] mac80211: fix BSS leak
From: Johannes Berg @ 2009-10-28 14:12 UTC (permalink / raw)
To: John Linville; +Cc: linux-wireless
In-Reply-To: <1254262165.30589.25.camel@johannes.local>
The IBSS code leaks a BSS struct after telling
cfg80211 about a given BSS by passing a frame.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
---
net/mac80211/ibss.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
--- wireless-testing.orig/net/mac80211/ibss.c 2009-10-27 09:16:01.000000000 +0100
+++ wireless-testing/net/mac80211/ibss.c 2009-10-27 09:42:06.000000000 +0100
@@ -73,6 +73,7 @@ static void __ieee80211_sta_join_ibss(st
struct ieee80211_mgmt *mgmt;
u8 *pos;
struct ieee80211_supported_band *sband;
+ struct cfg80211_bss *bss;
u32 bss_change;
u8 supp_rates[IEEE80211_MAX_SUPP_RATES];
@@ -177,8 +178,9 @@ static void __ieee80211_sta_join_ibss(st
mod_timer(&ifibss->timer,
round_jiffies(jiffies + IEEE80211_IBSS_MERGE_INTERVAL));
- cfg80211_inform_bss_frame(local->hw.wiphy, local->hw.conf.channel,
- mgmt, skb->len, 0, GFP_KERNEL);
+ bss = cfg80211_inform_bss_frame(local->hw.wiphy, local->hw.conf.channel,
+ mgmt, skb->len, 0, GFP_KERNEL);
+ cfg80211_put_bss(bss);
cfg80211_ibss_joined(sdata->dev, ifibss->bssid, GFP_KERNEL);
}
^ permalink raw reply
* Re: BUG at workqueue.c:192, debian 2.6.30 AND compat-wireless-2009-10-28
From: Konstantin Kletschke @ 2009-10-28 14:12 UTC (permalink / raw)
To: linux-wireless
In-Reply-To: <43e72e890910280651h4e91819n20e55cae48474533@mail.gmail.com>
"Luis R. Rodriguez" <mcgrof@gmail.com>
writes:
> What kernel are you on?
I am on debian vanilla 2.6.30. debian names this package
"linux-image-2.6.30-2-686", uname -a says:
Linux muschimaus 2.6.30-2-686 #1 SMP Sat Sep 26 01:16:22 UTC 2009 i686 GNU/Linux
Regards, Konsti
^ permalink raw reply
* Re: iwlist wlan0 scan disrupts communications
From: Charles Gordon @ 2009-10-28 14:47 UTC (permalink / raw)
To: linux-wireless
In-Reply-To: <1256676190.4237.27.camel@johannes.local>
On Tue, Oct 27, 2009 at 4:43 PM, Johannes Berg
<johannes@sipsolutions.net> wrote:
> On Tue, 2009-10-27 at 16:40 -0400, Charles Gordon wrote:
>> Hi,
>>
>> I am using version 2.6.28 of the kernel and version 0.9.11-nogit of
>> iw. Communications are disrupted and the device stops responding to
>> ping when I use the command "iwlist wlan0 scan". Communications are
>> restored when the command completes. Is this behavior expected? Has
>> it been fixed in a later release?
>
> Yes and yes, but I don't remember whether it's better in 2.6.31 or only
> will be in 32.
>
> johannes
>
Thanks for the information. After doing some more testing I found
that the association to the AP is sometimes lost and that mac80211
does not recover automatically. You have to type the command "wpa_cli
reassociate" to trigger the stack to reassociate with the AP. Is this
one of the things that is, or will be, fixed in later releases?
^ permalink raw reply
* Re: iwlist wlan0 scan disrupts communications
From: Johannes Berg @ 2009-10-28 14:54 UTC (permalink / raw)
To: Charles Gordon; +Cc: linux-wireless
In-Reply-To: <86201b3f0910280747q557a6153oec929e8235459c8f@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 515 bytes --]
On Wed, 2009-10-28 at 10:47 -0400, Charles Gordon wrote:
> Thanks for the information. After doing some more testing I found
> that the association to the AP is sometimes lost and that mac80211
> does not recover automatically. You have to type the command "wpa_cli
> reassociate" to trigger the stack to reassociate with the AP. Is this
> one of the things that is, or will be, fixed in later releases?
I don't know. Normally, wpa_supplicant should notice this and re-connect
by itself.
johannes
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 801 bytes --]
^ permalink raw reply
* Re: iwlist wlan0 scan disrupts communications
From: Charles Gordon @ 2009-10-28 15:02 UTC (permalink / raw)
To: linux-wireless
In-Reply-To: <1256741651.4237.112.camel@johannes.local>
On Wed, Oct 28, 2009 at 10:54 AM, Johannes Berg
<johannes@sipsolutions.net> wrote:
> On Wed, 2009-10-28 at 10:47 -0400, Charles Gordon wrote:
>
>> Thanks for the information. After doing some more testing I found
>> that the association to the AP is sometimes lost and that mac80211
>> does not recover automatically. You have to type the command "wpa_cli
>> reassociate" to trigger the stack to reassociate with the AP. Is this
>> one of the things that is, or will be, fixed in later releases?
>
> I don't know. Normally, wpa_supplicant should notice this and re-connect
> by itself.
>
> johannes
>
I think the way wpa_supplicant would notice this is that the AP would
send a deauthentication or dissassociation frame to the station, and
that would trigger wpa_supplicant to reassociate. However, if we are
tuned to a different channel when the frame is sent, then we won't
receive it. The AP won't send another notification unless we try to
send it another data frame, but if another station is trying to send
to us, we won't be notified.
I think that when the scan completes, mac80211 should either notify
wpa_supplicant that it should reassociate, or maybe send a null-data
frame to the AP which might cause it to send another
deauthentication/dissassociation frame (if we lost the connect).
^ permalink raw reply
* Re: iwlist wlan0 scan disrupts communications
From: Johannes Berg @ 2009-10-28 15:23 UTC (permalink / raw)
To: Charles Gordon; +Cc: linux-wireless
In-Reply-To: <86201b3f0910280802r279bf0d8q3424245ddfb1f8a8@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 447 bytes --]
On Wed, 2009-10-28 at 11:02 -0400, Charles Gordon wrote:
> I think that when the scan completes, mac80211 should either notify
> wpa_supplicant that it should reassociate, or maybe send a null-data
> frame to the AP which might cause it to send another
> deauthentication/dissassociation frame (if we lost the connect).
it does send nullfunc frames, you're probably running into an old bug
that caused those to not be sent.
johannes
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 801 bytes --]
^ permalink raw reply
* Re: iwlist wlan0 scan disrupts communications
From: Dan Williams @ 2009-10-28 15:48 UTC (permalink / raw)
To: Johannes Berg; +Cc: Charles Gordon, linux-wireless
In-Reply-To: <1256743398.4237.114.camel@johannes.local>
On Wed, 2009-10-28 at 16:23 +0100, Johannes Berg wrote:
> On Wed, 2009-10-28 at 11:02 -0400, Charles Gordon wrote:
>
> > I think that when the scan completes, mac80211 should either notify
> > wpa_supplicant that it should reassociate, or maybe send a null-data
> > frame to the AP which might cause it to send another
> > deauthentication/dissassociation frame (if we lost the connect).
>
> it does send nullfunc frames, you're probably running into an old bug
> that caused those to not be sent.
Correct, 2.6.28 did *not* have the nullfunc TX fix, so if the scan lasts
more than a few seconds, and the AP has traffic for the STA the TX will
time out, and the AP may drop the STA during the scan. 2.6.29 was the
first kernel that had the nullfunc TX fix.
But the supplicant should still reconnect...
Dan
^ permalink raw reply
* Re: [PATCH] libertas: remove internal buffers from GSPI driver
From: Dan Williams @ 2009-10-28 17:13 UTC (permalink / raw)
To: Andrey Yurovsky; +Cc: linux-wireless, libertas-dev, sebatian
In-Reply-To: <1256687501-8636-1-git-send-email-andrey@cozybit.com>
On Tue, 2009-10-27 at 16:51 -0700, Andrey Yurovsky wrote:
> This patch removes the internal command and data buffers that the GSPI driver
> maintained and instead relies on the Libertas core to synchronize access
> to the command and data ports as with the other interface drivers. This
> cleanup reduces the GSPI driver's memory footprint and should improve
> performance by removing the need to copy to these internal buffers.
> This also simplifies the bottom half of the interrupt handler.
>
> This is an incremental cleanup: after removing the redundant buffers, we
> can further improve the driver to use a threaded IRQ handler instead of
> maintaining its own thread. However I would like a few folks to test
> the buffer removal first and make sure that I'm not introducing
> regressions.
>
> Tested on Blackfin BF527 with DMA disabled due to an issue with the SPI
> host controller driver in the current bleeding-edge Blackfin kernel. I
> would appreciate it if someone with working DMA could test this patch
> and provide feedback.
>
> Signed-off-by: Andrey Yurovsky <andrey@cozybit.com>
Looks OK to me, but I don't have any of the SPI hardware so when you get
a Tested-by:, let me know and I'll ack.
Dan
> ---
> drivers/net/wireless/libertas/if_spi.c | 136 ++------------------------------
> 1 files changed, 6 insertions(+), 130 deletions(-)
>
> diff --git a/drivers/net/wireless/libertas/if_spi.c b/drivers/net/wireless/libertas/if_spi.c
> index 06df2e1..9e0096d 100644
> --- a/drivers/net/wireless/libertas/if_spi.c
> +++ b/drivers/net/wireless/libertas/if_spi.c
> @@ -32,12 +32,6 @@
> #include "dev.h"
> #include "if_spi.h"
>
> -struct if_spi_packet {
> - struct list_head list;
> - u16 blen;
> - u8 buffer[0] __attribute__((aligned(4)));
> -};
> -
> struct if_spi_card {
> struct spi_device *spi;
> struct lbs_private *priv;
> @@ -66,33 +60,10 @@ struct if_spi_card {
> struct semaphore spi_thread_terminated;
>
> u8 cmd_buffer[IF_SPI_CMD_BUF_SIZE];
> -
> - /* A buffer of incoming packets from libertas core.
> - * Since we can't sleep in hw_host_to_card, we have to buffer
> - * them. */
> - struct list_head cmd_packet_list;
> - struct list_head data_packet_list;
> -
> - /* Protects cmd_packet_list and data_packet_list */
> - spinlock_t buffer_lock;
> };
>
> static void free_if_spi_card(struct if_spi_card *card)
> {
> - struct list_head *cursor, *next;
> - struct if_spi_packet *packet;
> -
> - BUG_ON(card->run_thread);
> - list_for_each_safe(cursor, next, &card->cmd_packet_list) {
> - packet = container_of(cursor, struct if_spi_packet, list);
> - list_del(&packet->list);
> - kfree(packet);
> - }
> - list_for_each_safe(cursor, next, &card->data_packet_list) {
> - packet = container_of(cursor, struct if_spi_packet, list);
> - list_del(&packet->list);
> - kfree(packet);
> - }
> spi_set_drvdata(card->spi, NULL);
> kfree(card);
> }
> @@ -774,40 +745,6 @@ out:
> return err;
> }
>
> -/* Move data or a command from the host to the card. */
> -static void if_spi_h2c(struct if_spi_card *card,
> - struct if_spi_packet *packet, int type)
> -{
> - int err = 0;
> - u16 int_type, port_reg;
> -
> - switch (type) {
> - case MVMS_DAT:
> - int_type = IF_SPI_CIC_TX_DOWNLOAD_OVER;
> - port_reg = IF_SPI_DATA_RDWRPORT_REG;
> - break;
> - case MVMS_CMD:
> - int_type = IF_SPI_CIC_CMD_DOWNLOAD_OVER;
> - port_reg = IF_SPI_CMD_RDWRPORT_REG;
> - break;
> - default:
> - lbs_pr_err("can't transfer buffer of type %d\n", type);
> - err = -EINVAL;
> - goto out;
> - }
> -
> - /* Write the data to the card */
> - err = spu_write(card, port_reg, packet->buffer, packet->blen);
> - if (err)
> - goto out;
> -
> -out:
> - kfree(packet);
> -
> - if (err)
> - lbs_pr_err("%s: error %d\n", __func__, err);
> -}
> -
> /* Inform the host about a card event */
> static void if_spi_e2h(struct if_spi_card *card)
> {
> @@ -837,8 +774,6 @@ static int lbs_spi_thread(void *data)
> int err;
> struct if_spi_card *card = data;
> u16 hiStatus;
> - unsigned long flags;
> - struct if_spi_packet *packet;
>
> while (1) {
> /* Wait to be woken up by one of two things. First, our ISR
> @@ -877,43 +812,9 @@ static int lbs_spi_thread(void *data)
> if (hiStatus & IF_SPI_HIST_CMD_DOWNLOAD_RDY ||
> (card->priv->psstate != PS_STATE_FULL_POWER &&
> (hiStatus & IF_SPI_HIST_TX_DOWNLOAD_RDY))) {
> - /* This means two things. First of all,
> - * if there was a previous command sent, the card has
> - * successfully received it.
> - * Secondly, it is now ready to download another
> - * command.
> - */
> lbs_host_to_card_done(card->priv);
> -
> - /* Do we have any command packets from the host to
> - * send? */
> - packet = NULL;
> - spin_lock_irqsave(&card->buffer_lock, flags);
> - if (!list_empty(&card->cmd_packet_list)) {
> - packet = (struct if_spi_packet *)(card->
> - cmd_packet_list.next);
> - list_del(&packet->list);
> - }
> - spin_unlock_irqrestore(&card->buffer_lock, flags);
> -
> - if (packet)
> - if_spi_h2c(card, packet, MVMS_CMD);
> }
> - if (hiStatus & IF_SPI_HIST_TX_DOWNLOAD_RDY) {
> - /* Do we have any data packets from the host to
> - * send? */
> - packet = NULL;
> - spin_lock_irqsave(&card->buffer_lock, flags);
> - if (!list_empty(&card->data_packet_list)) {
> - packet = (struct if_spi_packet *)(card->
> - data_packet_list.next);
> - list_del(&packet->list);
> - }
> - spin_unlock_irqrestore(&card->buffer_lock, flags);
>
> - if (packet)
> - if_spi_h2c(card, packet, MVMS_DAT);
> - }
> if (hiStatus & IF_SPI_HIST_CARD_EVENT)
> if_spi_e2h(card);
>
> @@ -942,40 +843,18 @@ static int if_spi_host_to_card(struct lbs_private *priv,
> u8 type, u8 *buf, u16 nb)
> {
> int err = 0;
> - unsigned long flags;
> struct if_spi_card *card = priv->card;
> - struct if_spi_packet *packet;
> - u16 blen;
>
> lbs_deb_enter_args(LBS_DEB_SPI, "type %d, bytes %d", type, nb);
>
> - if (nb == 0) {
> - lbs_pr_err("%s: invalid size requested: %d\n", __func__, nb);
> - err = -EINVAL;
> - goto out;
> - }
> - blen = ALIGN(nb, 4);
> - packet = kzalloc(sizeof(struct if_spi_packet) + blen, GFP_ATOMIC);
> - if (!packet) {
> - err = -ENOMEM;
> - goto out;
> - }
> - packet->blen = blen;
> - memcpy(packet->buffer, buf, nb);
> - memset(packet->buffer + nb, 0, blen - nb);
> + nb = ALIGN(nb, 4);
>
> switch (type) {
> case MVMS_CMD:
> - priv->dnld_sent = DNLD_CMD_SENT;
> - spin_lock_irqsave(&card->buffer_lock, flags);
> - list_add_tail(&packet->list, &card->cmd_packet_list);
> - spin_unlock_irqrestore(&card->buffer_lock, flags);
> + err = spu_write(card, IF_SPI_CMD_RDWRPORT_REG, buf, nb);
> break;
> case MVMS_DAT:
> - priv->dnld_sent = DNLD_DATA_SENT;
> - spin_lock_irqsave(&card->buffer_lock, flags);
> - list_add_tail(&packet->list, &card->data_packet_list);
> - spin_unlock_irqrestore(&card->buffer_lock, flags);
> + err = spu_write(card, IF_SPI_DATA_RDWRPORT_REG, buf, nb);
> break;
> default:
> lbs_pr_err("can't transfer buffer of type %d", type);
> @@ -983,9 +862,6 @@ static int if_spi_host_to_card(struct lbs_private *priv,
> break;
> }
>
> - /* Wake up the spi thread */
> - up(&card->spi_ready);
> -out:
> lbs_deb_leave_args(LBS_DEB_SPI, "err=%d", err);
> return err;
> }
> @@ -1062,9 +938,6 @@ static int __devinit if_spi_probe(struct spi_device *spi)
>
> sema_init(&card->spi_ready, 0);
> sema_init(&card->spi_thread_terminated, 0);
> - INIT_LIST_HEAD(&card->cmd_packet_list);
> - INIT_LIST_HEAD(&card->data_packet_list);
> - spin_lock_init(&card->buffer_lock);
>
> /* Initialize the SPI Interface Unit */
> err = spu_init(card, pdata->use_dummy_writes);
> @@ -1141,6 +1014,9 @@ static int __devinit if_spi_probe(struct spi_device *spi)
> goto terminate_thread;
> }
>
> + /* poke the IRQ handler so that we don't miss the first interrupt */
> + up(&card->spi_ready);
> +
> /* Start the card.
> * This will call register_netdev, and we'll start
> * getting interrupts... */
^ permalink raw reply
* odd state reached when AP deauths you after assoc
From: Luis R. Rodriguez @ 2009-10-28 18:37 UTC (permalink / raw)
To: linux-wireless
I ran into this when ath5k with wpa_supplicant with config file with
a wrong password against a Cisco AP. It seems the Cisco AP auths you
and lets you assoc but later it deauths you -- I guess after it
determines you are auth credentials failed. When this happens I get:
mcgrof@tux ~ $ iw dev wlan0 link
Authenticated with 00:0b:85:5b:8d:6c (on wlan0)
Not connected.
The log *after* this is below. I'll try to reproduce again, I can reproduce
all the time.
[ 171.905675] wlan0: deauthenticating from 00:0b:85:5b:a6:ec by local choice (reason=3)
[ 171.929065] ------------[ cut here ]------------
[ 171.929106] WARNING: at net/mac80211/scan.c:267 ieee80211_scan_completed+0x240/0x270 [mac80211]()
[ 171.929112] Hardware name: 7660A14
[ 171.929117] Modules linked in: i915 drm_kms_helper drm i2c_algo_bit binfmt_misc ppdev bridge stp bnep lp parport snd_hda_codec_analog snd_hda_intel snd_hda_codec snd_pcm_oss snd_mixer_oss snd_pcm arc4 snd_seq_dummy snd_seq_oss snd_seq_midi snd_rawmidi ath5k snd_seq_midi_event snd_seq joydev snd_timer snd_seq_device mac80211 ath snd pcmcia soundcore cfg80211 thinkpad_acpi video intel_agp psmouse snd_page_alloc nvram led_class yenta_socket rsrc_nonstatic pcmcia_core output agpgart pcspkr serio_raw btusb iTCO_wdt iTCO_vendor_support ohci1394 ieee1394 e1000e
[ 171.929226] Pid: 4022, comm: wpa_supplicant Not tainted 2.6.32-rc5-wl #27
[ 171.929231] Call Trace:
[ 171.929245] [<c05a3a23>] ? printk+0x1d/0x22
[ 171.929269] [<f8379040>] ? ieee80211_scan_completed+0x240/0x270 [mac80211]
[ 171.929281] [<c0146121>] warn_slowpath_common+0x71/0xd0
[ 171.929306] [<f8379040>] ? ieee80211_scan_completed+0x240/0x270 [mac80211]
[ 171.929316] [<c014619a>] warn_slowpath_null+0x1a/0x20
[ 171.929340] [<f8379040>] ieee80211_scan_completed+0x240/0x270 [mac80211]
[ 171.929363] [<f83790b9>] ieee80211_scan_cancel+0x49/0x80 [mac80211]
[ 171.929388] [<f83826ca>] ieee80211_stop+0x59a/0x5b0 [mac80211]
[ 171.929399] [<c04e513e>] ? dev_deactivate+0x17e/0x1a0
[ 171.929412] [<c04d34cb>] dev_close+0x6b/0xc0
[ 171.929421] [<c05a6733>] ? _spin_unlock_bh+0x13/0x20
[ 171.929430] [<c04d150f>] ? dev_set_rx_mode+0x2f/0x40
[ 171.929438] [<c04d2d44>] dev_change_flags+0x84/0x1d0
[ 171.929448] [<c05207ea>] devinet_ioctl+0x54a/0x600
[ 171.929456] [<c04d489d>] ? dev_ioctl+0x28d/0x530
[ 171.929465] [<c0521c6a>] inet_ioctl+0x9a/0xc0
[ 171.929475] [<c04c25c8>] sock_ioctl+0x68/0x270
[ 171.929483] [<c04c2560>] ? sock_ioctl+0x0/0x270
[ 171.929493] [<c021bb9d>] vfs_ioctl+0x2d/0x90
[ 171.929501] [<c021bd62>] do_vfs_ioctl+0x72/0x5f0
[ 171.929510] [<c02267bf>] ? mntput_no_expire+0x1f/0xd0
[ 171.929520] [<c020c2ca>] ? __fput+0x17a/0x1f0
[ 171.929529] [<c020c367>] ? fput+0x27/0x30
[ 171.929537] [<c0207aec>] ? filp_close+0x4c/0x80
[ 171.929545] [<c021c34b>] sys_ioctl+0x6b/0x70
[ 171.929554] [<c01030dc>] sysenter_do_call+0x12/0x28
[ 171.929560] ---[ end trace d6c0a8110c16e049 ]---
[ 171.937047] phy0: device now idle
[ 171.938704] ------------[ cut here ]------------
[ 171.938733] WARNING: at net/wireless/core.c:619 wdev_cleanup_work+0xbf/0xe0 [cfg80211]()
[ 171.938741] Hardware name: 7660A14
[ 171.938746] Modules linked in: i915 drm_kms_helper drm i2c_algo_bit binfmt_misc ppdev bridge stp bnep lp parport snd_hda_codec_analog snd_hda_intel snd_hda_codec snd_pcm_oss snd_mixer_oss snd_pcm arc4 snd_seq_dummy snd_seq_oss snd_seq_midi snd_rawmidi ath5k snd_seq_midi_event snd_seq joydev snd_timer snd_seq_device mac80211 ath snd pcmcia soundcore cfg80211 thinkpad_acpi video intel_agp psmouse snd_page_alloc nvram led_class yenta_socket rsrc_nonstatic pcmcia_core output agpgart pcspkr serio_raw btusb iTCO_wdt iTCO_vendor_support ohci1394 ieee1394 e1000e
[ 171.938873] Pid: 9, comm: events/0 Tainted: G W 2.6.32-rc5-wl #27
[ 171.938880] Call Trace:
[ 171.938892] [<c05a3a23>] ? printk+0x1d/0x22
[ 171.938910] [<f82cd18f>] ? wdev_cleanup_work+0xbf/0xe0 [cfg80211]
[ 171.938922] [<c0146121>] warn_slowpath_common+0x71/0xd0
[ 171.938939] [<f82cd18f>] ? wdev_cleanup_work+0xbf/0xe0 [cfg80211]
[ 171.938950] [<c014619a>] warn_slowpath_null+0x1a/0x20
[ 171.938967] [<f82cd18f>] wdev_cleanup_work+0xbf/0xe0 [cfg80211]
[ 171.938981] [<c01639b4>] worker_thread+0x134/0x200
[ 171.938998] [<f82cd0d0>] ? wdev_cleanup_work+0x0/0xe0 [cfg80211]
[ 171.939010] [<c0168600>] ? autoremove_wake_function+0x0/0x50
[ 171.939021] [<c0163880>] ? worker_thread+0x0/0x200
[ 171.939031] [<c01682b4>] kthread+0x74/0x80
[ 171.939041] [<c0168240>] ? kthread+0x0/0x80
[ 171.939051] [<c0103c47>] kernel_thread_helper+0x7/0x10
[ 171.939059] ---[ end trace d6c0a8110c16e04a ]---
[ 171.957054] CE: hpet increasing min_delta_ns to 15000 nsec
[ 173.591594] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 173.816116] phy0: device no longer idle - scanning
[ 177.440103] ------------[ cut here ]------------
[ 177.440138] WARNING: at net/wireless/scan.c:88 cfg80211_scan_done+0x4b/0x50 [cfg80211]()
[ 177.440145] Hardware name: 7660A14
[ 177.440150] Modules linked in: i915 drm_kms_helper drm i2c_algo_bit binfmt_misc ppdev bridge stp bnep lp parport snd_hda_codec_analog snd_hda_intel snd_hda_codec snd_pcm_oss snd_mixer_oss snd_pcm arc4 snd_seq_dummy snd_seq_oss snd_seq_midi snd_rawmidi ath5k snd_seq_midi_event snd_seq joydev snd_timer snd_seq_device mac80211 ath snd pcmcia soundcore cfg80211 thinkpad_acpi video intel_agp psmouse snd_page_alloc nvram led_class yenta_socket rsrc_nonstatic pcmcia_core output agpgart pcspkr serio_raw btusb iTCO_wdt iTCO_vendor_support ohci1394 ieee1394 e1000e
[ 177.440256] Pid: 1864, comm: phy0 Tainted: G W 2.6.32-rc5-wl #27
[ 177.440262] Call Trace:
[ 177.440275] [<c05a3a23>] ? printk+0x1d/0x22
[ 177.440293] [<f82d17fb>] ? cfg80211_scan_done+0x4b/0x50 [cfg80211]
[ 177.440306] [<c0146121>] warn_slowpath_common+0x71/0xd0
[ 177.440322] [<f82d17fb>] ? cfg80211_scan_done+0x4b/0x50 [cfg80211]
[ 177.440332] [<c014619a>] warn_slowpath_null+0x1a/0x20
[ 177.440349] [<f82d17fb>] cfg80211_scan_done+0x4b/0x50 [cfg80211]
[ 177.440374] [<f8378e54>] ieee80211_scan_completed+0x54/0x270 [mac80211]
[ 177.440397] [<f8379236>] ieee80211_scan_work+0x146/0x4b0 [mac80211]
[ 177.440408] [<c01bb51d>] ? probe_workqueue_execution+0x8d/0xb0
[ 177.440420] [<c01639b4>] worker_thread+0x134/0x200
[ 177.440444] [<f83790f0>] ? ieee80211_scan_work+0x0/0x4b0 [mac80211]
[ 177.440454] [<c0168600>] ? autoremove_wake_function+0x0/0x50
[ 177.440463] [<c0163880>] ? worker_thread+0x0/0x200
[ 177.440471] [<c01682b4>] kthread+0x74/0x80
[ 177.440479] [<c0168240>] ? kthread+0x0/0x80
[ 177.440488] [<c0103c47>] kernel_thread_helper+0x7/0x10
[ 177.440494] ---[ end trace d6c0a8110c16e04b ]---
[ 177.443939] phy0: device now idle
[ 183.714141] phy0: device no longer idle - scanning
[ 187.335604] wlan0: direct probe to AP 00:0b:85:5b:a6:ec (try 1)
[ 187.338695] wlan0: direct probe responded
[ 187.338703] wlan0: authenticate with AP 00:0b:85:5b:a6:ec (try 1)
[ 187.340329] wlan0: authenticated
[ 187.340635] wlan0: associate with AP 00:0b:85:5b:a6:ec (try 1)
[ 187.343385] wlan0: RX AssocResp from 00:0b:85:5b:a6:ec (capab=0x431 status=0 aid=52)
[ 187.343392] wlan0: associated
[ 187.343401] phy0: Allocated STA 00:0b:85:5b:a6:ec
[ 187.344165] phy0: Inserted STA 00:0b:85:5b:a6:ec
[ 187.344924] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[ 187.345770] cfg80211: Calling CRDA for country: US
[ 187.352927] cfg80211: Received country IE:
[ 187.352935] cfg80211: Regulatory domain: US
[ 187.352939] (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
[ 187.352947] (2402000 KHz - 2477000 KHz @ 40000 KHz), (10000 mBi, 10000 mBm)
[ 187.352952] cfg80211: CRDA thinks this should applied:
[ 187.352956] cfg80211: Regulatory domain: US
[ 187.352960] (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
[ 187.352967] (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2700 mBm)
[ 187.352974] (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 1700 mBm)
[ 187.352980] (5250000 KHz - 5330000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[ 187.352987] (5490000 KHz - 5600000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[ 187.352994] (5651000 KHz - 5710000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[ 187.353000] (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 3000 mBm)
[ 187.353005] cfg80211: We intersect both of these and get:
[ 187.353010] cfg80211: Regulatory domain: 98
[ 187.353014] (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
[ 187.353020] (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2700 mBm)
[ 187.353033] cfg80211: Disabling channel 2467 MHz on phy0 due to Country IE
[ 187.353038] cfg80211: Disabling channel 2472 MHz on phy0 due to Country IE
[ 187.353044] cfg80211: Disabling channel 2484 MHz on phy0 due to Country IE
[ 187.353050] cfg80211: Leaving channel 5180 MHz intact on phy0 - no rule found in band on Country IE
[ 187.353060] wlan0: dropped frame to 00:0b:85:5b:a6:ec (unauthorized port)
[ 187.353068] cfg80211: Leaving channel 5200 MHz intact on phy0 - no rule found in band on Country IE
[ 187.353075] cfg80211: Leaving channel 5220 MHz intact on phy0 - no rule found in band on Country IE
[ 187.353083] cfg80211: Leaving channel 5240 MHz intact on phy0 - no rule found in band on Country IE
[ 187.353091] cfg80211: Leaving channel 5260 MHz intact on phy0 - no rule found in band on Country IE
[ 187.353098] cfg80211: Leaving channel 5280 MHz intact on phy0 - no rule found in band on Country IE
[ 187.353106] cfg80211: Leaving channel 5300 MHz intact on phy0 - no rule found in band on Country IE
[ 187.353113] cfg80211: Leaving channel 5320 MHz intact on phy0 - no rule found in band on Country IE
[ 187.353121] cfg80211: Leaving channel 5500 MHz intact on phy0 - no rule found in band on Country IE
[ 187.353129] cfg80211: Leaving channel 5520 MHz intact on phy0 - no rule found in band on Country IE
[ 187.353136] cfg80211: Leaving channel 5540 MHz intact on phy0 - no rule found in band on Country IE
[ 187.353144] cfg80211: Leaving channel 5560 MHz intact on phy0 - no rule found in band on Country IE
[ 187.353151] cfg80211: Leaving channel 5580 MHz intact on phy0 - no rule found in band on Country IE
[ 187.353159] cfg80211: Leaving channel 5600 MHz intact on phy0 - no rule found in band on Country IE
[ 187.353167] cfg80211: Leaving channel 5620 MHz intact on phy0 - no rule found in band on Country IE
[ 187.353175] cfg80211: Leaving channel 5640 MHz intact on phy0 - no rule found in band on Country IE
[ 187.353183] cfg80211: Leaving channel 5660 MHz intact on phy0 - no rule found in band on Country IE
[ 187.353190] cfg80211: Leaving channel 5680 MHz intact on phy0 - no rule found in band on Country IE
[ 187.353198] cfg80211: Leaving channel 5700 MHz intact on phy0 - no rule found in band on Country IE
[ 187.353205] cfg80211: Leaving channel 5745 MHz intact on phy0 - no rule found in band on Country IE
[ 187.353213] cfg80211: Leaving channel 5765 MHz intact on phy0 - no rule found in band on Country IE
[ 187.353221] cfg80211: Leaving channel 5785 MHz intact on phy0 - no rule found in band on Country IE
[ 187.353228] cfg80211: Leaving channel 5805 MHz intact on phy0 - no rule found in band on Country IE
[ 187.353236] cfg80211: Leaving channel 5825 MHz intact on phy0 - no rule found in band on Country IE
[ 187.353253] cfg80211: Current regulatory domain updated by AP to: US
[ 187.353258] (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
[ 187.353265] (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2700 mBm)
[ 187.805098] wlan0: dropped frame to 00:0b:85:5b:a6:ec (unauthorized port)
[ 188.804121] wlan0: dropped frame to 00:0b:85:5b:a6:ec (unauthorized port)
[ 191.290511] wlan0: deauthenticated from 00:0b:85:5b:a6:ec (Reason: 1)
[ 191.290536] phy0: device now idle
[ 191.290573] phy0: Removed STA 00:0b:85:5b:a6:ec
[ 191.321556] phy0: Destroyed STA 00:0b:85:5b:a6:ec
[ 191.421927] phy0: device no longer idle - scanning
[ 194.672155] wlan0: direct probe to AP 00:0b:85:5b:a6:e3 (try 1)
[ 194.673139] wlan0: direct probe responded
[ 194.673146] wlan0: authenticate with AP 00:0b:85:5b:a6:e3 (try 1)
[ 194.674160] wlan0: authenticated
[ 194.674494] wlan0: associate with AP 00:0b:85:5b:a6:e3 (try 1)
[ 194.677426] wlan0: RX AssocResp from 00:0b:85:5b:a6:e3 (capab=0x11 status=0 aid=70)
[ 194.677433] wlan0: associated
[ 194.677442] phy0: Allocated STA 00:0b:85:5b:a6:e3
[ 194.677931] phy0: Inserted STA 00:0b:85:5b:a6:e3
[ 196.804059] wlan0: dropped frame to 00:0b:85:5b:a6:e3 (unauthorized port)
[ 197.689989] wlan0: deauthenticated from 00:0b:85:5b:a6:e3 (Reason: 1)
[ 197.690012] phy0: device now idle
[ 197.690047] phy0: Removed STA 00:0b:85:5b:a6:e3
[ 197.717474] phy0: Destroyed STA 00:0b:85:5b:a6:e3
[ 197.805059] wlan0: no IPv6 routers present
[ 197.818000] phy0: device no longer idle - scanning
[ 201.079270] phy0: device now idle
[ 201.084747] phy0: device no longer idle - in use
[ 201.084770] wlan0: direct probe to AP 00:0b:85:5b:a6:ec (try 1)
[ 201.089664] wlan0: direct probe responded
[ 201.089668] wlan0: authenticate with AP 00:0b:85:5b:a6:ec (try 1)
[ 201.092158] wlan0: authenticated
[ 201.092452] wlan0: associate with AP 00:0b:85:5b:a6:ec (try 1)
[ 201.096074] wlan0: RX AssocResp from 00:0b:85:5b:a6:ec (capab=0x431 status=0 aid=52)
[ 201.096081] wlan0: associated
[ 201.096090] phy0: Allocated STA 00:0b:85:5b:a6:ec
[ 201.096552] phy0: Inserted STA 00:0b:85:5b:a6:ec
[ 204.093552] wlan0: deauthenticated from 00:0b:85:5b:a6:ec (Reason: 1)
[ 204.093575] phy0: device now idle
[ 204.093612] phy0: Removed STA 00:0b:85:5b:a6:ec
[ 204.113479] phy0: Destroyed STA 00:0b:85:5b:a6:ec
[ 204.214013] phy0: device no longer idle - scanning
[ 207.471524] phy0: device now idle
[ 207.476732] phy0: device no longer idle - in use
[ 207.476756] wlan0: direct probe to AP 00:0b:85:5b:a6:e3 (try 1)
[ 207.477684] wlan0: direct probe responded
[ 207.477687] wlan0: authenticate with AP 00:0b:85:5b:a6:e3 (try 1)
[ 207.479033] wlan0: authenticated
[ 207.479171] wlan0: associate with AP 00:0b:85:5b:a6:e3 (try 1)
[ 207.480744] wlan0: RX AssocResp from 00:0b:85:5b:a6:e3 (capab=0x11 status=0 aid=72)
[ 207.480748] wlan0: associated
[ 207.480752] phy0: Allocated STA 00:0b:85:5b:a6:e3
[ 207.480965] phy0: Inserted STA 00:0b:85:5b:a6:e3
[ 210.489907] wlan0: deauthenticated from 00:0b:85:5b:a6:e3 (Reason: 1)
[ 210.489930] phy0: device now idle
[ 210.489968] phy0: Removed STA 00:0b:85:5b:a6:e3
[ 210.521484] phy0: Destroyed STA 00:0b:85:5b:a6:e3
[ 210.621987] phy0: device no longer idle - scanning
[ 213.876178] phy0: device now idle
[ 213.879982] phy0: device no longer idle - in use
[ 213.880004] wlan0: direct probe to AP 00:0b:85:5b:8d:6c (try 1)
[ 214.080136] wlan0: direct probe to AP 00:0b:85:5b:8d:6c (try 2)
[ 214.089058] wlan0: direct probe responded
[ 214.089066] wlan0: authenticate with AP 00:0b:85:5b:8d:6c (try 1)
[ 214.107502] wlan0: authenticated
[ 214.107916] wlan0: associate with AP 00:0b:85:5b:8d:6c (try 1)
[ 214.122278] wlan0: RX AssocResp from 00:0b:85:5b:8d:6c (capab=0x401 status=17 aid=0)
[ 214.122285] wlan0: AP denied association (code=17)
Luis
^ permalink raw reply
* Re: odd state reached when AP deauths you after assoc
From: Luis R. Rodriguez @ 2009-10-28 18:47 UTC (permalink / raw)
To: linux-wireless
In-Reply-To: <20091028183726.GA4952@tux>
On Wed, Oct 28, 2009 at 11:37 AM, Luis R. Rodriguez
<lrodriguez@atheros.com> wrote:
> I ran into this when ath5k with wpa_supplicant with config file with
> a wrong password against a Cisco AP. It seems the Cisco AP auths you
> and lets you assoc but later it deauths you -- I guess after it
> determines you are auth credentials failed. When this happens I get:
>
> mcgrof@tux ~ $ iw dev wlan0 link
> Authenticated with 00:0b:85:5b:8d:6c (on wlan0)
> Not connected.
So here is the log when using a wrong password against a cisco AP:
[ 1858.773080] phy0: device now idle
[ 1858.776409] ADDRCONF(NETDEV_UP): wlan0: link is not ready
[ 1858.905642] phy0: device no longer idle - scanning
[ 1860.057062] cfg80211: Found new beacon on frequency: 5180 MHz (Ch 36) on phy0
[ 1860.233974] cfg80211: Found new beacon on frequency: 5200 MHz (Ch 40) on phy0
[ 1860.289658] cfg80211: Found new beacon on frequency: 5220 MHz (Ch 44) on phy0
[ 1860.401686] cfg80211: Found new beacon on frequency: 5240 MHz (Ch 48) on phy0
[ 1862.426385] cfg80211: Found new beacon on frequency: 5745 MHz (Ch
149) on phy0
[ 1862.667996] cfg80211: Found new beacon on frequency: 5785 MHz (Ch
157) on phy0
[ 1862.772666] cfg80211: Found new beacon on frequency: 5805 MHz (Ch
161) on phy0
[ 1863.016600] wlan0: direct probe to AP 00:0b:85:5b:a6:ec (try 1)
[ 1863.025332] wlan0: direct probe responded
[ 1863.025340] wlan0: authenticate with AP 00:0b:85:5b:a6:ec (try 1)
[ 1863.029490] wlan0: authenticated
[ 1863.029675] wlan0: associate with AP 00:0b:85:5b:a6:ec (try 1)
[ 1863.044240] wlan0: RX AssocResp from 00:0b:85:5b:a6:ec (capab=0x431
status=0 aid=59)
[ 1863.044248] wlan0: associated
[ 1863.044258] phy0: Allocated STA 00:0b:85:5b:a6:ec
[ 1863.045048] phy0: Inserted STA 00:0b:85:5b:a6:ec
[ 1863.045566] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[ 1863.046086] cfg80211: Calling CRDA for country: US
[ 1863.053060] wlan0: dropped frame to 00:0b:85:5b:a6:ec (unauthorized port)
[ 1863.053242] cfg80211: Received country IE:
[ 1863.053247] cfg80211: Regulatory domain: US
[ 1863.053252] (start_freq - end_freq @ bandwidth),
(max_antenna_gain, max_eirp)
[ 1863.053260] (2402000 KHz - 2477000 KHz @ 40000 KHz), (10000 mBi, 10000 mBm)
[ 1863.053265] cfg80211: CRDA thinks this should applied:
[ 1863.053269] cfg80211: Regulatory domain: US
[ 1863.053273] (start_freq - end_freq @ bandwidth),
(max_antenna_gain, max_eirp)
[ 1863.053281] (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2700 mBm)
[ 1863.053288] (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 1700 mBm)
[ 1863.053294] (5250000 KHz - 5330000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[ 1863.053301] (5490000 KHz - 5600000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[ 1863.053307] (5651000 KHz - 5710000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[ 1863.053314] (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 3000 mBm)
[ 1863.053319] cfg80211: We intersect both of these and get:
[ 1863.053323] cfg80211: Regulatory domain: 98
[ 1863.053327] (start_freq - end_freq @ bandwidth),
(max_antenna_gain, max_eirp)
[ 1863.053334] (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2700 mBm)
[ 1863.053344] cfg80211: Disabling channel 2467 MHz on phy0 due to Country IE
[ 1863.053349] cfg80211: Disabling channel 2472 MHz on phy0 due to Country IE
[ 1863.053355] cfg80211: Disabling channel 2484 MHz on phy0 due to Country IE
[ 1863.053361] cfg80211: Leaving channel 5180 MHz intact on phy0 - no
rule found in band on Country IE
[ 1863.053367] cfg80211: Leaving channel 5200 MHz intact on phy0 - no
rule found in band on Country IE
[ 1863.053373] cfg80211: Leaving channel 5220 MHz intact on phy0 - no
rule found in band on Country IE
[ 1863.053379] cfg80211: Leaving channel 5240 MHz intact on phy0 - no
rule found in band on Country IE
[ 1863.053386] cfg80211: Leaving channel 5260 MHz intact on phy0 - no
rule found in band on Country IE
[ 1863.053392] cfg80211: Leaving channel 5280 MHz intact on phy0 - no
rule found in band on Country IE
[ 1863.053398] cfg80211: Leaving channel 5300 MHz intact on phy0 - no
rule found in band on Country IE
[ 1863.053404] cfg80211: Leaving channel 5320 MHz intact on phy0 - no
rule found in band on Country IE
[ 1863.053411] cfg80211: Leaving channel 5500 MHz intact on phy0 - no
rule found in band on Country IE
[ 1863.053417] cfg80211: Leaving channel 5520 MHz intact on phy0 - no
rule found in band on Country IE
[ 1863.053423] cfg80211: Leaving channel 5540 MHz intact on phy0 - no
rule found in band on Country IE
[ 1863.053429] cfg80211: Leaving channel 5560 MHz intact on phy0 - no
rule found in band on Country IE
[ 1863.053435] cfg80211: Leaving channel 5580 MHz intact on phy0 - no
rule found in band on Country IE
[ 1863.053441] cfg80211: Leaving channel 5600 MHz intact on phy0 - no
rule found in band on Country IE
[ 1863.053447] cfg80211: Leaving channel 5620 MHz intact on phy0 - no
rule found in band on Country IE
[ 1863.053454] cfg80211: Leaving channel 5640 MHz intact on phy0 - no
rule found in band on Country IE
[ 1863.053460] cfg80211: Leaving channel 5660 MHz intact on phy0 - no
rule found in band on Country IE
[ 1863.053466] cfg80211: Leaving channel 5680 MHz intact on phy0 - no
rule found in band on Country IE
[ 1863.053472] cfg80211: Leaving channel 5700 MHz intact on phy0 - no
rule found in band on Country IE
[ 1863.053478] cfg80211: Leaving channel 5745 MHz intact on phy0 - no
rule found in band on Country IE
[ 1863.053485] cfg80211: Leaving channel 5765 MHz intact on phy0 - no
rule found in band on Country IE
[ 1863.053491] cfg80211: Leaving channel 5785 MHz intact on phy0 - no
rule found in band on Country IE
[ 1863.053497] cfg80211: Leaving channel 5805 MHz intact on phy0 - no
rule found in band on Country IE
[ 1863.053503] cfg80211: Leaving channel 5825 MHz intact on phy0 - no
rule found in band on Country IE
[ 1863.053519] cfg80211: Current regulatory domain updated by AP to: US
[ 1863.053524] (start_freq - end_freq @ bandwidth),
(max_antenna_gain, max_eirp)
[ 1863.053531] (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2700 mBm)
[ 1863.296154] wlan0: dropped frame to 00:0b:85:5b:a6:ec (unauthorized port)
[ 1864.296183] wlan0: dropped frame to 00:0b:85:5b:a6:ec (unauthorized port)
[ 1866.881205] wlan0: deauthenticated from 00:0b:85:5b:a6:ec (Reason: 1)
[ 1866.881228] phy0: device now idle
[ 1866.881265] phy0: Removed STA 00:0b:85:5b:a6:ec
[ 1866.913511] phy0: Destroyed STA 00:0b:85:5b:a6:ec
[ 1867.013816] phy0: device no longer idle - scanning
[ 1870.268556] phy0: device now idle
[ 1870.272935] phy0: device no longer idle - in use
[ 1870.272957] wlan0: direct probe to AP 00:0b:85:5b:8d:6c (try 1)
[ 1870.468116] wlan0: direct probe to AP 00:0b:85:5b:8d:6c (try 2)
[ 1870.668115] wlan0: direct probe to AP 00:0b:85:5b:8d:6c (try 3)
[ 1870.672686] wlan0: direct probe responded
[ 1870.672693] wlan0: authenticate with AP 00:0b:85:5b:8d:6c (try 1)
[ 1870.674428] wlan0: authenticated
[ 1870.674602] wlan0: associate with AP 00:0b:85:5b:8d:6c (try 1)
[ 1870.677800] wlan0: RX AssocResp from 00:0b:85:5b:8d:6c (capab=0x421
status=17 aid=0)
[ 1870.677807] wlan0: AP denied association (code=17)
[ 1870.679901] wlan0: RX AssocResp from 00:0b:85:5b:8d:6c (capab=0x421
status=17 aid=0)
[ 1870.679908] wlan0: AP denied association (code=17)
[ 1873.297089] wlan0: no IPv6 routers present
This puts the device into a funky state.
This can also be reached even if the AP does not deauth you but instead just
denies association:
This puts the device into a funky state.
This can also be reached even if the AP does not deauth you but instead just
denies association:
[ 1958.579149] cfg80211: Found new beacon on frequency: 5745 MHz (Ch
149) on phy0
[ 1958.820612] cfg80211: Found new beacon on frequency: 5785 MHz (Ch
157) on phy0
[ 1958.953174] cfg80211: Found new beacon on frequency: 5805 MHz (Ch
161) on phy0
[ 1959.167831] wlan0: direct probe to AP 00:0b:85:5b:8d:6c (try 1)
[ 1959.180785] wlan0: direct probe responded
[ 1959.180793] wlan0: authenticate with AP 00:0b:85:5b:8d:6c (try 1)
[ 1959.189268] wlan0: authenticated
[ 1959.189414] wlan0: associate with AP 00:0b:85:5b:8d:6c (try 1)
[ 1959.201056] wlan0: RX AssocResp from 00:0b:85:5b:8d:6c (capab=0x401
status=17 aid=0)
[ 1959.201063] wlan0: AP denied association (code=17)
Luis
^ permalink raw reply
* Re: [RFC] rtl8180: change PCI DMA mask to DMA_BIT_MASK(32) to solve "No suitable DMA available" problems on sparc64.
From: John W. Linville @ 2009-10-28 19:11 UTC (permalink / raw)
To: Tiziano Müller; +Cc: linux-wireless
In-Reply-To: <1252575463.30576.59.camel@localhost>
Can I get a "Signed-off-by:" line from you for this?
Thanks,
John
On Thu, Sep 10, 2009 at 11:37:43AM +0200, Tiziano Müller wrote:
> Hi there
>
> I had problems to get my rtl8185 PCI card running on Sparc64: I always
> got an error about "No suitable DMA available" followed by an error
> that no device could be detected. When comparing the rtl8180 driver to
> others I noticed that others are mostly using DMA_BIT_MASK so I changed
> the custom mask to DMA_BIT_MASK(32) which fixed my issue.
>
> Cheers,
> Tiziano
>
> ---
> drivers/net/wireless/rtl818x/rtl8180_dev.c | 4 ++--
> 1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/wireless/rtl818x/rtl8180_dev.c b/drivers/net/wireless/rtl818x/rtl8180_dev.c
> index 16429c4..515f562 100644
> --- a/drivers/net/wireless/rtl818x/rtl8180_dev.c
> +++ b/drivers/net/wireless/rtl818x/rtl8180_dev.c
> @@ -850,8 +850,8 @@ static int __devinit rtl8180_probe(struct pci_dev *pdev,
> goto err_free_reg;
> }
>
> - if ((err = pci_set_dma_mask(pdev, 0xFFFFFF00ULL)) ||
> - (err = pci_set_consistent_dma_mask(pdev, 0xFFFFFF00ULL))) {
> + if ((err = pci_set_dma_mask(pdev, DMA_BIT_MASK(32))) ||
> + (err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32)))) {
> printk(KERN_ERR "%s (rtl8180): No suitable DMA available\n",
> pci_name(pdev));
> goto err_free_reg;
> --
> 1.6.4
>
>
--
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
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox