* [PATCH 2/5] ath6kl: Replace spin_lock_irqsave with spin_lock_bh
From: Vasanthakumar Thiagarajan @ 2011-09-30 13:48 UTC (permalink / raw)
To: kvalo; +Cc: linux-wireless
In-Reply-To: <1317390526-3442-1-git-send-email-vthiagar@qca.qualcomm.com>
It is not necessary to use spinlock primitive to
protect data which is accessed in hard irq context as
nothing is running in hard irq with this driver. The
spinlock primitive meant to protect data in softirq
context is more appropriate.
Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
---
drivers/net/wireless/ath/ath6kl/main.c | 17 ++++-------
drivers/net/wireless/ath/ath6kl/sdio.c | 51 +++++++++++++------------------
2 files changed, 27 insertions(+), 41 deletions(-)
diff --git a/drivers/net/wireless/ath/ath6kl/main.c b/drivers/net/wireless/ath/ath6kl/main.c
index 30b5a53..adb1635 100644
--- a/drivers/net/wireless/ath/ath6kl/main.c
+++ b/drivers/net/wireless/ath/ath6kl/main.c
@@ -1025,8 +1025,6 @@ void ath6kl_connect_event(struct ath6kl *ar, u16 channel, u8 *bssid,
u8 assoc_req_len, u8 assoc_resp_len,
u8 *assoc_info)
{
- unsigned long flags;
-
ath6kl_cfg80211_connect_event(ar, channel, bssid,
listen_int, beacon_int,
net_type, beacon_ie_len,
@@ -1043,11 +1041,11 @@ void ath6kl_connect_event(struct ath6kl *ar, u16 channel, u8 *bssid,
netif_wake_queue(ar->net_dev);
/* Update connect & link status atomically */
- spin_lock_irqsave(&ar->lock, flags);
+ spin_lock_bh(&ar->lock);
set_bit(CONNECTED, &ar->flag);
clear_bit(CONNECT_PEND, &ar->flag);
netif_carrier_on(ar->net_dev);
- spin_unlock_irqrestore(&ar->lock, flags);
+ spin_unlock_bh(&ar->lock);
aggr_reset_state(ar->aggr_cntxt);
ar->reconnect_flag = 0;
@@ -1330,8 +1328,6 @@ void ath6kl_disconnect_event(struct ath6kl *ar, u8 reason, u8 *bssid,
u8 assoc_resp_len, u8 *assoc_info,
u16 prot_reason_status)
{
- unsigned long flags;
-
if (ar->nw_type == AP_NETWORK) {
if (!ath6kl_remove_sta(ar, bssid, prot_reason_status))
return;
@@ -1390,10 +1386,10 @@ void ath6kl_disconnect_event(struct ath6kl *ar, u8 reason, u8 *bssid,
}
/* update connect & link status atomically */
- spin_lock_irqsave(&ar->lock, flags);
+ spin_lock_bh(&ar->lock);
clear_bit(CONNECTED, &ar->flag);
netif_carrier_off(ar->net_dev);
- spin_unlock_irqrestore(&ar->lock, flags);
+ spin_unlock_bh(&ar->lock);
if ((reason != CSERV_DISCONNECT) || (ar->reconnect_flag != 1))
ar->reconnect_flag = 0;
@@ -1411,9 +1407,8 @@ void ath6kl_disconnect_event(struct ath6kl *ar, u8 reason, u8 *bssid,
static int ath6kl_open(struct net_device *dev)
{
struct ath6kl *ar = ath6kl_priv(dev);
- unsigned long flags;
- spin_lock_irqsave(&ar->lock, flags);
+ spin_lock_bh(&ar->lock);
set_bit(WLAN_ENABLED, &ar->flag);
@@ -1423,7 +1418,7 @@ static int ath6kl_open(struct net_device *dev)
} else
netif_carrier_off(dev);
- spin_unlock_irqrestore(&ar->lock, flags);
+ spin_unlock_bh(&ar->lock);
return 0;
}
diff --git a/drivers/net/wireless/ath/ath6kl/sdio.c b/drivers/net/wireless/ath/ath6kl/sdio.c
index f1dc311..2dd7a88 100644
--- a/drivers/net/wireless/ath/ath6kl/sdio.c
+++ b/drivers/net/wireless/ath/ath6kl/sdio.c
@@ -166,12 +166,11 @@ static int ath6kl_sdio_io(struct sdio_func *func, u32 request, u32 addr,
static struct bus_request *ath6kl_sdio_alloc_busreq(struct ath6kl_sdio *ar_sdio)
{
struct bus_request *bus_req;
- unsigned long flag;
- spin_lock_irqsave(&ar_sdio->lock, flag);
+ spin_lock_bh(&ar_sdio->lock);
if (list_empty(&ar_sdio->bus_req_freeq)) {
- spin_unlock_irqrestore(&ar_sdio->lock, flag);
+ spin_unlock_bh(&ar_sdio->lock);
return NULL;
}
@@ -179,7 +178,7 @@ static struct bus_request *ath6kl_sdio_alloc_busreq(struct ath6kl_sdio *ar_sdio)
struct bus_request, list);
list_del(&bus_req->list);
- spin_unlock_irqrestore(&ar_sdio->lock, flag);
+ spin_unlock_bh(&ar_sdio->lock);
ath6kl_dbg(ATH6KL_DBG_SCATTER, "%s: bus request 0x%p\n",
__func__, bus_req);
@@ -189,14 +188,12 @@ static struct bus_request *ath6kl_sdio_alloc_busreq(struct ath6kl_sdio *ar_sdio)
static void ath6kl_sdio_free_bus_req(struct ath6kl_sdio *ar_sdio,
struct bus_request *bus_req)
{
- unsigned long flag;
-
ath6kl_dbg(ATH6KL_DBG_SCATTER, "%s: bus request 0x%p\n",
__func__, bus_req);
- spin_lock_irqsave(&ar_sdio->lock, flag);
+ spin_lock_bh(&ar_sdio->lock);
list_add_tail(&bus_req->list, &ar_sdio->bus_req_freeq);
- spin_unlock_irqrestore(&ar_sdio->lock, flag);
+ spin_unlock_bh(&ar_sdio->lock);
}
static void ath6kl_sdio_setup_scat_data(struct hif_scatter_req *scat_req,
@@ -424,20 +421,19 @@ static void __ath6kl_sdio_write_async(struct ath6kl_sdio *ar_sdio,
static void ath6kl_sdio_write_async_work(struct work_struct *work)
{
struct ath6kl_sdio *ar_sdio;
- unsigned long flags;
struct bus_request *req, *tmp_req;
ar_sdio = container_of(work, struct ath6kl_sdio, wr_async_work);
sdio_claim_host(ar_sdio->func);
- spin_lock_irqsave(&ar_sdio->wr_async_lock, flags);
+ spin_lock_bh(&ar_sdio->wr_async_lock);
list_for_each_entry_safe(req, tmp_req, &ar_sdio->wr_asyncq, list) {
list_del(&req->list);
- spin_unlock_irqrestore(&ar_sdio->wr_async_lock, flags);
+ spin_unlock_bh(&ar_sdio->wr_async_lock);
__ath6kl_sdio_write_async(ar_sdio, req);
- spin_lock_irqsave(&ar_sdio->wr_async_lock, flags);
+ spin_lock_bh(&ar_sdio->wr_async_lock);
}
- spin_unlock_irqrestore(&ar_sdio->wr_async_lock, flags);
+ spin_unlock_bh(&ar_sdio->wr_async_lock);
sdio_release_host(ar_sdio->func);
}
@@ -520,7 +516,6 @@ static int ath6kl_sdio_write_async(struct ath6kl *ar, u32 address, u8 *buffer,
{
struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar);
struct bus_request *bus_req;
- unsigned long flags;
bus_req = ath6kl_sdio_alloc_busreq(ar_sdio);
@@ -533,9 +528,9 @@ static int ath6kl_sdio_write_async(struct ath6kl *ar, u32 address, u8 *buffer,
bus_req->request = request;
bus_req->packet = packet;
- spin_lock_irqsave(&ar_sdio->wr_async_lock, flags);
+ spin_lock_bh(&ar_sdio->wr_async_lock);
list_add_tail(&bus_req->list, &ar_sdio->wr_asyncq);
- spin_unlock_irqrestore(&ar_sdio->wr_async_lock, flags);
+ spin_unlock_bh(&ar_sdio->wr_async_lock);
queue_work(ar->ath6kl_wq, &ar_sdio->wr_async_work);
return 0;
@@ -581,9 +576,8 @@ static struct hif_scatter_req *ath6kl_sdio_scatter_req_get(struct ath6kl *ar)
{
struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar);
struct hif_scatter_req *node = NULL;
- unsigned long flag;
- spin_lock_irqsave(&ar_sdio->scat_lock, flag);
+ spin_lock_bh(&ar_sdio->scat_lock);
if (!list_empty(&ar_sdio->scat_req)) {
node = list_first_entry(&ar_sdio->scat_req,
@@ -591,7 +585,7 @@ static struct hif_scatter_req *ath6kl_sdio_scatter_req_get(struct ath6kl *ar)
list_del(&node->list);
}
- spin_unlock_irqrestore(&ar_sdio->scat_lock, flag);
+ spin_unlock_bh(&ar_sdio->scat_lock);
return node;
}
@@ -600,13 +594,12 @@ static void ath6kl_sdio_scatter_req_add(struct ath6kl *ar,
struct hif_scatter_req *s_req)
{
struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar);
- unsigned long flag;
- spin_lock_irqsave(&ar_sdio->scat_lock, flag);
+ spin_lock_bh(&ar_sdio->scat_lock);
list_add_tail(&s_req->list, &ar_sdio->scat_req);
- spin_unlock_irqrestore(&ar_sdio->scat_lock, flag);
+ spin_unlock_bh(&ar_sdio->scat_lock);
}
@@ -617,7 +610,6 @@ static int ath6kl_sdio_async_rw_scatter(struct ath6kl *ar,
struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar);
u32 request = scat_req->req;
int status = 0;
- unsigned long flags;
if (!scat_req->len)
return -EINVAL;
@@ -631,9 +623,9 @@ static int ath6kl_sdio_async_rw_scatter(struct ath6kl *ar,
status = ath6kl_sdio_scat_rw(ar_sdio, scat_req->busrequest);
sdio_release_host(ar_sdio->func);
} else {
- spin_lock_irqsave(&ar_sdio->wr_async_lock, flags);
+ spin_lock_bh(&ar_sdio->wr_async_lock);
list_add_tail(&scat_req->busrequest->list, &ar_sdio->wr_asyncq);
- spin_unlock_irqrestore(&ar_sdio->wr_async_lock, flags);
+ spin_unlock_bh(&ar_sdio->wr_async_lock);
queue_work(ar->ath6kl_wq, &ar_sdio->wr_async_work);
}
@@ -645,13 +637,12 @@ static void ath6kl_sdio_cleanup_scatter(struct ath6kl *ar)
{
struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar);
struct hif_scatter_req *s_req, *tmp_req;
- unsigned long flag;
/* empty the free list */
- spin_lock_irqsave(&ar_sdio->scat_lock, flag);
+ spin_lock_bh(&ar_sdio->scat_lock);
list_for_each_entry_safe(s_req, tmp_req, &ar_sdio->scat_req, list) {
list_del(&s_req->list);
- spin_unlock_irqrestore(&ar_sdio->scat_lock, flag);
+ spin_unlock_bh(&ar_sdio->scat_lock);
if (s_req->busrequest)
ath6kl_sdio_free_bus_req(ar_sdio, s_req->busrequest);
@@ -659,9 +650,9 @@ static void ath6kl_sdio_cleanup_scatter(struct ath6kl *ar)
kfree(s_req->sgentries);
kfree(s_req);
- spin_lock_irqsave(&ar_sdio->scat_lock, flag);
+ spin_lock_bh(&ar_sdio->scat_lock);
}
- spin_unlock_irqrestore(&ar_sdio->scat_lock, flag);
+ spin_unlock_bh(&ar_sdio->scat_lock);
}
/* setup of HIF scatter resources */
--
1.7.0.4
^ permalink raw reply related
* [PATCH 3/5] ath6kl: Claim sdio function only at appropriate places
From: Vasanthakumar Thiagarajan @ 2011-09-30 13:48 UTC (permalink / raw)
To: kvalo; +Cc: linux-wireless
In-Reply-To: <1317390526-3442-1-git-send-email-vthiagar@qca.qualcomm.com>
There are places where tx_complete callbacks are called with
claiming the sdio function. This is wrong. Claim the sdio function
only when doing actual sdio read/write.
Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
---
drivers/net/wireless/ath/ath6kl/sdio.c | 19 ++++++++++---------
1 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/drivers/net/wireless/ath/ath6kl/sdio.c b/drivers/net/wireless/ath/ath6kl/sdio.c
index 2dd7a88..7695c29 100644
--- a/drivers/net/wireless/ath/ath6kl/sdio.c
+++ b/drivers/net/wireless/ath/ath6kl/sdio.c
@@ -134,6 +134,8 @@ static int ath6kl_sdio_io(struct sdio_func *func, u32 request, u32 addr,
{
int ret = 0;
+ sdio_claim_host(func);
+
if (request & HIF_WRITE) {
/* FIXME: looks like ugly workaround for something */
if (addr >= HIF_MBOX_BASE_ADDR &&
@@ -155,6 +157,8 @@ static int ath6kl_sdio_io(struct sdio_func *func, u32 request, u32 addr,
ret = sdio_memcpy_fromio(func, buf, addr, len);
}
+ sdio_release_host(func);
+
ath6kl_dbg(ATH6KL_DBG_SDIO, "%s addr 0x%x%s buf 0x%p len %d\n",
request & HIF_WRITE ? "wr" : "rd", addr,
request & HIF_FIXED_ADDRESS ? " (fixed)" : "", buf, len);
@@ -287,10 +291,14 @@ static int ath6kl_sdio_scat_rw(struct ath6kl_sdio *ar_sdio,
mmc_req.cmd = &cmd;
mmc_req.data = &data;
+ sdio_claim_host(ar_sdio->func);
+
mmc_set_data_timeout(&data, ar_sdio->func->card);
/* synchronous call to process request */
mmc_wait_for_req(ar_sdio->func->card->host, &mmc_req);
+ sdio_release_host(ar_sdio->func);
+
status = cmd.error ? cmd.error : data.error;
scat_complete:
@@ -391,11 +399,9 @@ static int ath6kl_sdio_read_write_sync(struct ath6kl *ar, u32 addr, u8 *buf,
} else
tbuf = buf;
- sdio_claim_host(ar_sdio->func);
ret = ath6kl_sdio_io(ar_sdio->func, request, addr, tbuf, len);
if ((request & HIF_READ) && bounced)
memcpy(buf, tbuf, len);
- sdio_release_host(ar_sdio->func);
return ret;
}
@@ -424,7 +430,6 @@ static void ath6kl_sdio_write_async_work(struct work_struct *work)
struct bus_request *req, *tmp_req;
ar_sdio = container_of(work, struct ath6kl_sdio, wr_async_work);
- sdio_claim_host(ar_sdio->func);
spin_lock_bh(&ar_sdio->wr_async_lock);
list_for_each_entry_safe(req, tmp_req, &ar_sdio->wr_asyncq, list) {
@@ -434,8 +439,6 @@ static void ath6kl_sdio_write_async_work(struct work_struct *work)
spin_lock_bh(&ar_sdio->wr_async_lock);
}
spin_unlock_bh(&ar_sdio->wr_async_lock);
-
- sdio_release_host(ar_sdio->func);
}
static void ath6kl_sdio_irq_handler(struct sdio_func *func)
@@ -618,11 +621,9 @@ static int ath6kl_sdio_async_rw_scatter(struct ath6kl *ar,
"hif-scatter: total len: %d scatter entries: %d\n",
scat_req->len, scat_req->scat_entries);
- if (request & HIF_SYNCHRONOUS) {
- sdio_claim_host(ar_sdio->func);
+ if (request & HIF_SYNCHRONOUS)
status = ath6kl_sdio_scat_rw(ar_sdio, scat_req->busrequest);
- sdio_release_host(ar_sdio->func);
- } else {
+ else {
spin_lock_bh(&ar_sdio->wr_async_lock);
list_add_tail(&scat_req->busrequest->list, &ar_sdio->wr_asyncq);
spin_unlock_bh(&ar_sdio->wr_async_lock);
--
1.7.0.4
^ permalink raw reply related
* [PATCH 4/5] ath6kl: Fix possible race in accessing bounce buffer
From: Vasanthakumar Thiagarajan @ 2011-09-30 13:48 UTC (permalink / raw)
To: kvalo; +Cc: linux-wireless
In-Reply-To: <1317390526-3442-1-git-send-email-vthiagar@qca.qualcomm.com>
There is only one bounce buffer (ar_sdio->dma_buffer) which is used
for both read and write without any protection. Fix this race by
allocating bounce buffer every time when it is needed.
Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
---
drivers/net/wireless/ath/ath6kl/sdio.c | 18 +++++++++++-------
1 files changed, 11 insertions(+), 7 deletions(-)
diff --git a/drivers/net/wireless/ath/ath6kl/sdio.c b/drivers/net/wireless/ath/ath6kl/sdio.c
index 7695c29..06e3f09 100644
--- a/drivers/net/wireless/ath/ath6kl/sdio.c
+++ b/drivers/net/wireless/ath/ath6kl/sdio.c
@@ -383,25 +383,29 @@ static int ath6kl_sdio_read_write_sync(struct ath6kl *ar, u32 addr, u8 *buf,
u32 len, u32 request)
{
struct ath6kl_sdio *ar_sdio = ath6kl_sdio_priv(ar);
- u8 *tbuf = NULL;
int ret;
+ u8 *bounce_buf = NULL;
bool bounced = false;
if (request & HIF_BLOCK_BASIS)
len = round_down(len, HIF_MBOX_BLOCK_SIZE);
if (buf_needs_bounce(buf)) {
- if (!ar_sdio->dma_buffer)
+ bounce_buf = kmalloc(len, GFP_ATOMIC);
+ if (!bounce_buf)
return -ENOMEM;
- tbuf = ar_sdio->dma_buffer;
- memcpy(tbuf, buf, len);
+ memcpy(bounce_buf, buf, len);
bounced = true;
} else
- tbuf = buf;
+ bounce_buf = buf;
+
+ ret = ath6kl_sdio_io(ar_sdio->func, request, addr, bounce_buf, len);
- ret = ath6kl_sdio_io(ar_sdio->func, request, addr, tbuf, len);
if ((request & HIF_READ) && bounced)
- memcpy(buf, tbuf, len);
+ memcpy(buf, bounce_buf, len);
+
+ if (bounced)
+ kfree(bounce_buf);
return ret;
}
--
1.7.0.4
^ permalink raw reply related
* [PATCH 5/5] ath6kl: Remove unused ar_sdio->dma_buffer
From: Vasanthakumar Thiagarajan @ 2011-09-30 13:48 UTC (permalink / raw)
To: kvalo; +Cc: linux-wireless
In-Reply-To: <1317390526-3442-1-git-send-email-vthiagar@qca.qualcomm.com>
Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
---
drivers/net/wireless/ath/ath6kl/sdio.c | 12 +-----------
1 files changed, 1 insertions(+), 11 deletions(-)
diff --git a/drivers/net/wireless/ath/ath6kl/sdio.c b/drivers/net/wireless/ath/ath6kl/sdio.c
index 06e3f09..6bef420 100644
--- a/drivers/net/wireless/ath/ath6kl/sdio.c
+++ b/drivers/net/wireless/ath/ath6kl/sdio.c
@@ -39,7 +39,6 @@ struct ath6kl_sdio {
struct bus_request bus_req[BUS_REQUEST_MAX_NUM];
struct ath6kl *ar;
- u8 *dma_buffer;
/* scatter request list head */
struct list_head scat_req;
@@ -777,12 +776,6 @@ static int ath6kl_sdio_probe(struct sdio_func *func,
if (!ar_sdio)
return -ENOMEM;
- ar_sdio->dma_buffer = kzalloc(HIF_DMA_BUFFER_SIZE, GFP_KERNEL);
- if (!ar_sdio->dma_buffer) {
- ret = -ENOMEM;
- goto err_hif;
- }
-
ar_sdio->func = func;
sdio_set_drvdata(func, ar_sdio);
@@ -806,7 +799,7 @@ static int ath6kl_sdio_probe(struct sdio_func *func,
if (!ar) {
ath6kl_err("Failed to alloc ath6kl core\n");
ret = -ENOMEM;
- goto err_dma;
+ goto err_hif;
}
ar_sdio->ar = ar;
@@ -866,8 +859,6 @@ err_off:
ath6kl_sdio_power_off(ar_sdio);
err_cfg80211:
ath6kl_cfg80211_deinit(ar_sdio->ar);
-err_dma:
- kfree(ar_sdio->dma_buffer);
err_hif:
kfree(ar_sdio);
@@ -891,7 +882,6 @@ static void ath6kl_sdio_remove(struct sdio_func *func)
ath6kl_sdio_power_off(ar_sdio);
- kfree(ar_sdio->dma_buffer);
kfree(ar_sdio);
}
--
1.7.0.4
^ permalink raw reply related
* Re: Alfa AWUS036NHR with RTL8188RU chipset
From: v4mp @ 2011-09-30 14:20 UTC (permalink / raw)
To: linux-wireless
In-Reply-To: <4E7A529E.1040808@lwfinger.net>
hello larry,
i've an ALFA AWUS036NHR and i tried latest compat-wireless-2011-09-27 on ubuntu
natty 3.0.4-030004-generic,
the adapter is recognized as rtl8192cu but is not
responding, no network is detected.
Then if i try to "modprobe -r rtl8192cu" results
FATAL: Error removing rtl8192cu
(/lib/modules/3.0.4-030004-generic/updates/drivers/net/wireless/rtlwifi
/rtl8192cu/rtl8192cu.ko):
Device or resource busy
seems that remains blocked..i can't do anything
tried dmesg and it says
.....
.....
[ 2610.093638] rtlwifi: reg 0xc1c, usbctrl_vendorreq TimeOut! status:0xfffffff4
value=0xed827478
[ 2610.093645] xhci_hcd 0000:05:00.0: ERROR no room on ep ring
[ 2610.093650] rtlwifi: reg 0xc4c, usbctrl_vendorreq TimeOut! status:0xfffffff4
value=0xed827478
[ 2610.093656] xhci_hcd 0000:05:00.0: ERROR no room on ep ring
[ 2610.093662] rtlwifi: reg 0xc78, usbctrl_vendorreq TimeOut! status:0xfffffff4
value=0xed827478
[ 2610.093668] xhci_hcd 0000:05:00.0: ERROR no room on ep ring
[ 2610.093683] rtlwifi: reg 0xc80, usbctrl_vendorreq TimeOut! status:0xfffffff4
value=0xed827478
[ 2610.234960] xhci_hcd 0000:05:00.0: ERROR no room on ep ring
[ 2610.255767] ADDRCONF(NETDEV_UP): wlan1: link is not ready
don't know what to do, waiting for an help :)
^ permalink raw reply
* Re: Alfa AWUS036NHR with RTL8188RU chipset
From: Larry Finger @ 2011-09-30 15:18 UTC (permalink / raw)
To: v4mp; +Cc: linux-wireless, 'George0505', 'georgia'
In-Reply-To: <loom.20110930T160704-310@post.gmane.org>
On 09/30/2011 09:20 AM, v4mp wrote:
> hello larry,
>
> i've an ALFA AWUS036NHR and i tried latest compat-wireless-2011-09-27 on ubuntu
> natty 3.0.4-030004-generic,
> the adapter is recognized as rtl8192cu but is not
> responding, no network is detected.
>
> Then if i try to "modprobe -r rtl8192cu" results
> FATAL: Error removing rtl8192cu
> (/lib/modules/3.0.4-030004-generic/updates/drivers/net/wireless/rtlwifi
> /rtl8192cu/rtl8192cu.ko):
> Device or resource busy
>
> seems that remains blocked..i can't do anything
You are the second person that has reported a problem with this device.
Unfortunately, I do not have a sample of the device, but I have just ordered one
that will be delivered in about one week. I would guess that there is some
difference between the RTL8192CU and the RTL8188RU chips.
I Cc'd the Realtek group that works on USB devices. Perhaps they have some info
that will be useful. Given the difference in time between the US and Taiwan, I
would not expect any answer until Monday.
There are some changes that affect connection with an 802.11n network that are
found in the latest kernels. I'm not sure they are in the one you are using. You
can get the very latest by downloading and building the "bleeding edge" version
of compat-wireless.
Larry
^ permalink raw reply
* Re: [PATCH] wireless: at76c50x: fix multithread access to hex2str
From: Pavel Roskin @ 2011-09-30 15:53 UTC (permalink / raw)
To: Andy Shevchenko; +Cc: linux-wireless, John W. Linville
In-Reply-To: <1317293215.2676.111.camel@smile>
On Thu, 29 Sep 2011 13:46:55 +0300
Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:
> On Wed, 2011-09-28 at 17:19 -0400, Pavel Roskin wrote:
> > Or maybe you could develop an extension for printk() format that
> > would dump strings of the given length? Something like %pM, but
> > with an extra argument (and make sure it would not trigger a gcc
> > warning). This way, everybody would benefit.
> I don't think it would be a noticeable benefit. On the other hand
> vsnprintf() is hugely overloaded by many "extensions" to the C99
> variant.
I looked at the code, and it seems very little is needed to support
"%*pM"
> > Please rethink whether it's helpful to send such "fixes" for old and
> > little maintained drivers.
> Last copyright is 2010, TODO list actually suggests to remove hex2str
> at all.
I don't know where it's written, but I think it's a good idea,
especially if there is a better alternative available for all drivers.
--
Regards,
Pavel Roskin
^ permalink raw reply
* [PATCH V2 3/5] ath6kl: Claim sdio function only at appropriate places
From: Vasanthakumar Thiagarajan @ 2011-09-30 16:16 UTC (permalink / raw)
To: kvalo; +Cc: linux-wireless
There are places where tx_complete callbacks are called with
claiming the sdio function. It is not necessary to hold the
sdio func for longer. This may even affect the host side power
save, if it is supported by the controller.
Signed-off-by: Vasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
---
drivers/net/wireless/ath/ath6kl/sdio.c | 19 ++++++++++---------
1 files changed, 10 insertions(+), 9 deletions(-)
V2 -- Commit log change
diff --git a/drivers/net/wireless/ath/ath6kl/sdio.c b/drivers/net/wireless/ath/ath6kl/sdio.c
index 2dd7a88..7695c29 100644
--- a/drivers/net/wireless/ath/ath6kl/sdio.c
+++ b/drivers/net/wireless/ath/ath6kl/sdio.c
@@ -134,6 +134,8 @@ static int ath6kl_sdio_io(struct sdio_func *func, u32 request, u32 addr,
{
int ret = 0;
+ sdio_claim_host(func);
+
if (request & HIF_WRITE) {
/* FIXME: looks like ugly workaround for something */
if (addr >= HIF_MBOX_BASE_ADDR &&
@@ -155,6 +157,8 @@ static int ath6kl_sdio_io(struct sdio_func *func, u32 request, u32 addr,
ret = sdio_memcpy_fromio(func, buf, addr, len);
}
+ sdio_release_host(func);
+
ath6kl_dbg(ATH6KL_DBG_SDIO, "%s addr 0x%x%s buf 0x%p len %d\n",
request & HIF_WRITE ? "wr" : "rd", addr,
request & HIF_FIXED_ADDRESS ? " (fixed)" : "", buf, len);
@@ -287,10 +291,14 @@ static int ath6kl_sdio_scat_rw(struct ath6kl_sdio *ar_sdio,
mmc_req.cmd = &cmd;
mmc_req.data = &data;
+ sdio_claim_host(ar_sdio->func);
+
mmc_set_data_timeout(&data, ar_sdio->func->card);
/* synchronous call to process request */
mmc_wait_for_req(ar_sdio->func->card->host, &mmc_req);
+ sdio_release_host(ar_sdio->func);
+
status = cmd.error ? cmd.error : data.error;
scat_complete:
@@ -391,11 +399,9 @@ static int ath6kl_sdio_read_write_sync(struct ath6kl *ar, u32 addr, u8 *buf,
} else
tbuf = buf;
- sdio_claim_host(ar_sdio->func);
ret = ath6kl_sdio_io(ar_sdio->func, request, addr, tbuf, len);
if ((request & HIF_READ) && bounced)
memcpy(buf, tbuf, len);
- sdio_release_host(ar_sdio->func);
return ret;
}
@@ -424,7 +430,6 @@ static void ath6kl_sdio_write_async_work(struct work_struct *work)
struct bus_request *req, *tmp_req;
ar_sdio = container_of(work, struct ath6kl_sdio, wr_async_work);
- sdio_claim_host(ar_sdio->func);
spin_lock_bh(&ar_sdio->wr_async_lock);
list_for_each_entry_safe(req, tmp_req, &ar_sdio->wr_asyncq, list) {
@@ -434,8 +439,6 @@ static void ath6kl_sdio_write_async_work(struct work_struct *work)
spin_lock_bh(&ar_sdio->wr_async_lock);
}
spin_unlock_bh(&ar_sdio->wr_async_lock);
-
- sdio_release_host(ar_sdio->func);
}
static void ath6kl_sdio_irq_handler(struct sdio_func *func)
@@ -618,11 +621,9 @@ static int ath6kl_sdio_async_rw_scatter(struct ath6kl *ar,
"hif-scatter: total len: %d scatter entries: %d\n",
scat_req->len, scat_req->scat_entries);
- if (request & HIF_SYNCHRONOUS) {
- sdio_claim_host(ar_sdio->func);
+ if (request & HIF_SYNCHRONOUS)
status = ath6kl_sdio_scat_rw(ar_sdio, scat_req->busrequest);
- sdio_release_host(ar_sdio->func);
- } else {
+ else {
spin_lock_bh(&ar_sdio->wr_async_lock);
list_add_tail(&scat_req->busrequest->list, &ar_sdio->wr_asyncq);
spin_unlock_bh(&ar_sdio->wr_async_lock);
--
1.7.0.4
^ permalink raw reply related
* Re: Alfa AWUS036NHR with RTL8188RU chipset
From: v4mp @ 2011-09-30 18:14 UTC (permalink / raw)
To: linux-wireless
In-Reply-To: <4E85DDA9.3090300@lwfinger.net>
ok thx for reply, i just like to say to you that i have tryed beini tiny core
1.2.3 that was patched to support this type of usb device with the latest
update, and it works with rtl8192cu (and the blue led is working)
i've extracted a .tce module from the beini that seems to be rtl8192cu modded
driver,
this is the link i've uploaded on fileserve
http://www.fileserve.com/file/9mZxX5T/x_rtl8188ru_20110812.tce
maybe it could be useful, thx :)
^ permalink raw reply
* new stuff for 3.2 needs to be posted _now_
From: John W. Linville @ 2011-09-30 18:28 UTC (permalink / raw)
To: linux-wireless
You may have noticed that Linus has released 3.1-rc8. So, the
merge window is around the corner!
For those that need a reminder, the opening of the merge window is a
_deadline_ for new features. Once the merge window opens, only fixes
will be accepted for 3.2. In fact, any non-fix patches need to
already be in wireless-next when the merge window opens if you want
them in 3.2. That means you need to get them posted _now_, so they
can be reviewed and I can find time to merge them before the deadline.
You have been warned...this means you!
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: r8712u driver - on ARM
From: Ian Jeffray @ 2011-09-30 18:39 UTC (permalink / raw)
To: linux-wireless
In-Reply-To: <4E81F8C8.4010909@lwfinger.net>
On 27/09/2011 17:24, Larry Finger wrote:
> On 09/27/2011 10:36 AM, Ian Jeffray wrote:
>> Dear all,
>>
>> I'm attempting to get some sense from a Realtek 8191S device on
>> ARM linux.
<SNIP>
>> My host is a TI DaVinci DM8168 (OMAP3+toys). The USB host is not
>> fantastic, but has been thrashed heavily with other devices and seems
>> to be reliable in those cases.
<SNIP>
>
> I have not tried this chip on an ARM host as I have no hardware. My
> testing has been with X86 and PPC - thus I know the endianess is OK, but
> that is the extent of my platform testing.
>
> The first thing I would try is wireshark on another host to verify that
> packets are actually getting on the air.
Ok, so I've spent more more days working on this. The driver appears
to be fine on an ARM9 S3X board. I've contacted the TI support
team about the USB host and applied some patches from them which have
slightly improved the situation, but it's still horrible - I'm actually
getting "reliable" scans but only a pathetic 1Mbit or less of data
throughput.
I've also tried this driver (and the realtek upstream version) with
a Blackfin BF527 device, which has roughly the same 'musb' Inventra
USB host controller... and I see exactly the same problem there!
The firmware appears to load fine, but scans produce no results.
I'm not really sure about your comment about wireshark because,
as far as I understand, a 'iwlist wlan0 scan' command doesn't cause
any traffic which would be wireshark capturable on another host...
am I misunderstanding something?
So it appears as though there may be some general problem with this
driver and an 'musb' host controller. Very strange.
My next course of attack is to try comparing outputs of 'usbmon'
dumps between hosts which work and hosts which don't... but I can't
make a great deal of sense looking at them really.
I'd greatly appreciate any more advice you may be able to give.
Many thanks,
Ian.
--
Ian Jeffray ian@emobix.co.uk Tel: +44 (0) 141 221 8449
emobix Limited, Suite 5/5, 29 St Vincent Place, Glasgow, G1 2DT
Registered in Scotland; Company No. 371276 - VAT No. 983 4833 78
^ permalink raw reply
* Re: [PATCH 3/3] mac80211: pass vif param to conf_tx() callback
From: John W. Linville @ 2011-09-30 18:43 UTC (permalink / raw)
To: Johannes Berg; +Cc: Eliad Peller, linux-wireless
In-Reply-To: <1317217708.3986.17.camel@jlt3.sipsolutions.net>
On Wed, Sep 28, 2011 at 03:48:28PM +0200, Johannes Berg wrote:
> On Sun, 2011-09-25 at 20:06 +0300, Eliad Peller wrote:
> > tx params should be configured per interface.
> > Add ieee80211_vif param to the conf_tx callback,
> > and update all the drivers that use this callback.
>
> I see patches 1 and 2 in the tree, but not this. I suspect the reason is
> that it was actually incomplete, not updating for example iwlwifi
> because there the function is defined in another file and the spatch
> failed?
It didn't apply. I thought I might try again now that I pulled
wireless into wireless-next...
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
* Compat-wireless release for 2011-09-30 is baked
From: Compat-wireless cronjob account @ 2011-09-30 19:04 UTC (permalink / raw)
To: linux-wireless
>From git://github.com/sfrothwell/linux-next
+ 19fab9b...8de4587 akpm-end -> origin/akpm-end (forced update)
+ a4a2504...a33a912 master -> origin/master (forced update)
* [new tag] next-20110930 -> next-20110930
compat-wireless code metrics
813049 - Total upstream lines of code being pulled
^ permalink raw reply
* Re: r8712u driver - on ARM
From: Christian Lamparter @ 2011-09-30 19:06 UTC (permalink / raw)
To: Ian Jeffray; +Cc: linux-wireless
In-Reply-To: <4E860CDB.9040207@emobix.co.uk>
On Friday 30 September 2011 20:39:23 Ian Jeffray wrote:
> On 27/09/2011 17:24, Larry Finger wrote:
> > On 09/27/2011 10:36 AM, Ian Jeffray wrote:
> >> Dear all,
> >>
> >> I'm attempting to get some sense from a Realtek 8191S device on
> >> ARM linux.
> <SNIP>
> >> My host is a TI DaVinci DM8168 (OMAP3+toys). The USB host is not
> >> fantastic, but has been thrashed heavily with other devices and seems
> >> to be reliable in those cases.
> <SNIP>
> >
> > I have not tried this chip on an ARM host as I have no hardware. My
> > testing has been with X86 and PPC - thus I know the endianess is OK, but
> > that is the extent of my platform testing.
> >
> > The first thing I would try is wireshark on another host to verify that
> > packets are actually getting on the air.
>
> Ok, so I've spent more more days working on this. The driver appears
> to be fine on an ARM9 S3X board. I've contacted the TI support
> team about the USB host and applied some patches from them which have
> slightly improved the situation, but it's still horrible - I'm actually
> getting "reliable" scans but only a pathetic 1Mbit or less of data
> throughput.
>
> I've also tried this driver (and the realtek upstream version) with
> a Blackfin BF527 device, which has roughly the same 'musb' Inventra
> USB host controller... and I see exactly the same problem there!
> The firmware appears to load fine, but scans produce no results.
>
> I'm not really sure about your comment about wireshark because,
> as far as I understand, a 'iwlist wlan0 scan' command doesn't cause
> any traffic which would be wireshark capturable on another host...
> am I misunderstanding something?
>
> So it appears as though there may be some general problem with this
> driver and an 'musb' host controller. Very strange.
>
> My next course of attack is to try comparing outputs of 'usbmon'
> dumps between hosts which work and hosts which don't... but I can't
> make a great deal of sense looking at them really.
>
> I'd greatly appreciate any more advice you may be able to give.
Well, I'm not really in r8712u but I can tell you a few things about
carl9170 and musb.
You see I had a similar discussion a while ago:
http://www.spinics.net/lists/linux-wireless/msg68870.html
Apparently, musb can't do DMA with non 4-bytes aligned buffers
and falls back to PIO [which results in a much higher cpu utilization
and really bad usb throughput... so if timing is critical this "fact"
is pretty much a deal-breaker for the combination].
Now, you might ask, why this DMA vs. PIO is so importent... Well,
it's because the network stack has its own alignment ideas and
about the data/skbs. There's a comment in include/linux/skbuff.h
around line 1400 which explains the situation. The upshot is you
can choose between a penatly on the packet processing by the
stack, or a penatly on the driver/hardware site if r8712u does
not implement any additional techniques to counter the issues.
Regards,
Chr
^ permalink raw reply
* pull request: wireless-next 2011-09-30
From: John W. Linville @ 2011-09-30 19:11 UTC (permalink / raw)
To: davem; +Cc: linux-wireless, netdev
Dave,
Here is yet another big package of wireless updates for 3.2. Highlights
include a bluetooth pull, a wl12xx pull, and a pull of the wireless tree
to fix some merge issues. Also included is the usual big sets of
updates to ath9k, iwlagn, b43, and others. Plus, the NFC subsystem grew
NCI support.
Please let me know if there are problems!
Thanks,
John
---
The following changes since commit 56fd49e399ce1d82200fad5b8924d4e35a587809:
bna: Driver Version changed to 3.0.2.2 (2011-09-29 19:36:36 -0400)
are available in the git repository at:
git://git.infradead.org/users/linville/wireless-next.git for-davem
Alexander Simon (1):
mac80211: fix indentation
Amit Beka (1):
iwlagn: remove duplicate list init
Amitkumar Karwar (4):
mwifiex: fix 5GHz association issue
mwifiex: update bss band information
mwifiex: pass correct band parameter to ieee80211_channel_to_frequency()
mwifiex: reset skb length before inserting to free queue
Anderson Briglia (1):
Bluetooth: Fix wrong memcpy size on LE start encryption
Andre Guedes (2):
Bluetooth: Reduce critical region.
Bluetooth: Check 'dev_class' in mgmt_device_found()
Antti Julku (2):
Bluetooth: Add mgmt command for fast connectable mode
Bluetooth: Add mgmt events for blacklisting
Arik Nemtsov (12):
wl12xx: don't queue a new dummy packet if one is already pending
wl12xx: don't indicate up PS-filtered dummy packets
wl12xx: AP mode - don't regulate FW blocks for non-active STAs
wl12xx: support up to 8 stations in AP-mode
wl12xx: don't regulate links when a single STA is connected
wl12xx: AP mode - enable the BA constraint event from the FW
wl12xx: AP mode - clean BA and queue state in tx_reset
wl12xx: set mac80211 flags for A-MPDU aggregation support
wl12xx: AP mode - support hidden SSID
wl12xx: correct fw_status structure for 8 sta support in AP-mode
wl12xx: report the stop_ba event to all STAs in AP-mode
mac80211: treat the WME sta flag as a bit
Dan Carpenter (4):
mwifiex: add a kfree() to an error path
mwifiex: remove unneeded NULL check
NFC: use after free on error
wl3501_cs: min_t() cast truncates high bits
Daniel Drake (1):
libertas: scan behaviour consistency improvements
David Herrmann (1):
Bluetooth: hidp: Add support for NO_INIT_REPORTS quirk
Don Fry (1):
iwlagn: replace beacon_time_fsf_bits variable with #define
Eliad Peller (20):
wl12xx: print acx id
wl12xx: print the seq_num of rx packet
wl12xx: add module_param to trigger BUG() on recovery
wl12xx: add beacon_filtering debugfs file
wl12xx: don't disconnect on recovery
wl12xx: don't use WL1271_SCAN_OPT_PRIORITY_HIGH flag
wl12xx: check for ROC on scan_complete
wl12xx: add config_hangover command
wl12xx: use kstrtoul_from_user
wl12xx: declare support for WIPHY_FLAG_AP_UAPSD
wl12xx: support p2p interfaces
cfg80211: add cfg80211_find_vendor_ie() function
wl12xx: remove TIM ie from probe response
wl12xx: remove P2P ie from probe response
wl12xx: send all pending packets on channel change
wl12xx: Use dev_hlid for auth and assoc req
wl12xx: implement set_bitrate_mask callback
mac80211: add ieee80211_vif param to tsf functions
cfg80211/mac80211: add netdev param to set_txq_params()
mac80211: save tx params per sdata
Emmanuel Grumbach (17):
iwlagn: warn about buggy fw that doesn't set SEQ_RX_FRAME
iwlagn: unmap cmd queue's tfds as BIDI
iwlagn: free the Tx cmd when a non empty Tx queue is freed
iwlagn: move iwl_stop / wake_queue to the upper layer
iwlagn: use enum iwl_rxon_context_id instead of u8
iwlagn: document the bus layer API
iwlagn: add documentation to the transport layer
iwlagn: provide data after WARN_ON
iwlagn: remove the callback in host commands
iwlagn: simplify the iwl_device_cmd layout
iwlagn: remove uneeded declaration
iwlagn: pending frames musn't be incremented if agg is on
iwlagn: remove warning in iwl_rx_handle
iwlagn: sparse warning priv->temperature is signed
iwlagn: set the sequence control from the transport layer
iwlagn: update rate scaling with BA notifications
iwlagn: use kcalloc when possible for array allocation
Felix Fietkau (7):
ath9k: fix setting the IEEE80211_TX_CTL_CLEAR_PS_FILT flag
ath9k: sync the dma buffer after changing the retry flag
ath9k_hw: clean up hardware revision checks
ath9k_hw: remove dead code in the eeprom ops
ath9k_hw: fix setting the hardware diversity flag
ath9k_hw: remove ar9100_hw_compute_pll_control
ath9k: fix a regression in ath9k_ps_restore
Fry, Donald H (2):
iwlagn: fix modinfo display for 135 ucode.
iwlagn: simplify chain_noise_num_beacons indirection
Ilan Elias (7):
NFC: Add dev_up and dev_down control operations
NFC: move nfc.h from include/net to include/net/nfc
NFC: basic NCI protocol implementation
NFC: driver for TI shared transport
NFC: improve readability of an 'if' in nci core.c
NFC: implicitly deactivate in nci_start_poll
NFC: protect nci_data_exchange transactions
Joe Perches (1):
iwlagn: Convert kzalloc to kcalloc
Johannes Berg (22):
iwlagn: move PCI-E transport files
iwlagn: generically provide iwl_trans_send_cmd_pdu
iwlagn: Makefile whitespace cleanup
iwlagn: clean up PM code
iwlagn: rename iwl-pci.h to iwl-cfg.h
iwlagn: remove unused function declarations
iwlagn: move sysfs files to debugfs
iwlagn: remove drvdata support from bus layer
iwlagn: do not use interruptible waits
cfg80211: validate IBSS BSSID
mac80211: fix AP/VLAN PS buffer race
iwlagn: move scan code to scan file
iwlagn: remove common station priv
iwlagn: split remain-on-channel
iwlagn: fix dangling scan request
iwlagn: fix dangling scan request
iwlagn: fix slot programming
iwlagn: remove Kelvin support
iwlagn: make iwl_scan_cancel_timeout void
iwlagn: refactor scan complete
iwlagn: move iwl_process_scan_complete up
iwlagn: fix scan complete processing
John W. Linville (7):
Merge branch 'for-linville' of git://github.com/lucacoelho/wl12xx
Revert "ath9k: do not insert padding into tx buffers on AR9380+"
Merge branch 'master' of git://git.infradead.org/users/linville/wireless
Merge branch 'master' of git://github.com/padovan/bluetooth-next
Merge branch 'for-linville' of git://github.com/lucacoelho/wl12xx
Merge branch 'master' of git://git.infradead.org/users/linville/wireless
Merge branch 'master' of git://git.infradead.org/users/linville/wireless-next into for-davem
Jouni Malinen (4):
cfg80211/nl80211: Add PMKSA caching candidate event
cfg80211: Fix validation of AKM suites
cfg80211: Remove strict validation of AKM suites
cfg80211: Validate cipher suite against supported ciphers
Larry Finger (5):
rtlwifi: rtl8192ce: Change modinfo messages
rtlwifi: rtl8192se: Change modinfo messages
rtlwifi: rtl8192de: Change modinfo messages
rtlwifi: Combine instances of RTL_HAL_IS_CCK_RATE macros.
rtlwifi: rtl8192cu: Fix unitialized struct
Luciano Coelho (5):
wl12xx: remove deprecated CONFIG_WL12XX_HT flag
wl12xx: add support for sched_scan filters
wl12xx: increase number of allowed SSIDs in sched_scan
wl12xx: ignore sched scan match sets without SSID
wl12xx: fix forced passive scans
Luiz Augusto von Dentz (2):
Bluetooth: make use of connection number to optimize the scheduler
Bluetooth: mark l2cap_create_iframe_pdu as static
Mohammed Shafi Shajakhan (3):
rfkill: properly assign a boolean type
ath9k: Fix a dma warning/memory leak
ath9k: add Block ACK bitmap in sample debug
Peter Hurley (1):
Bluetooth: Add LE link type for debugfs output
Rafał Miłecki (10):
bcma: cc: export more control functions
b43: LCN-PHY: tweaks for channel switching
b43: LCN-PHY: set TX filters
b43: LCN-PHY: implement SPUR avoidance mode
b43: LCN-PHY: init TX power control
b43: LCN-PHY: add more init tweaks
b43: LCN-PHY: finish sense setup
b43: add missing MMIO defines
b43: update dummy transmission
b43: LCN-PHY: minor clean ups
Rajkumar Manoharan (9):
ath9k_hw: Fix magnitude/phase coeff correction
ath9k: load noise floor from history after the full chip reset
ath9k: Reset caldata on radio enable
mac80211: Fix regression on queue stop during 2040 bss change
wireless: Do not allow disabled channel in scan request
ath9k: Store noise immunity values across scanning
ath9k_hw: Fix Rx DMA stuck for AR9003 chips
nl80211/cfg80211: Add support to disable CCK rate for management frame
mac80211: Send the management frame at requested rate
Randy Dunlap (1):
nfc: NFC_WILINK depends on NFC_NCI
Shahar Levi (2):
wl12xx: fix sdio_test module functionality
wl12xx: Include OFDM rates in IBSS mode
Stanislaw Gruszka (2):
iwlegacy: fix command queue timeout
iwlegacy: do not use interruptible waits
Thomas Pedersen (1):
mac80211: notify peer when shutting down peer link
Vinicius Costa Gomes (15):
Bluetooth: Reset the security timer when a command is queued
Bluetooth: Add a flag to indicate that SMP is going on
Bluetooth: Use the same timeouts for both ACL and LE links
Bluetooth: Add support for pairing via mgmt over LE
Bluetooth: Add support for running SMP without a socket
Bluetooth: Add link_type information to the mgmt Connected event
Bluetooth: Move SMP fields to a separate structure
Bluetooth: Move SMP crypto functions to a workqueue
Bluetooth: Require authentication if MITM protection is requested
Bluetooth: Use the MEDIUM security level for pairings
Bluetooth: Fix sending wrong authentication requirements
Bluetooth: Use the LTK after receiving a LE Security Request
Revert "Bluetooth: Add support for communicating keys with userspace"
Bluetooth: Fix not setting a pending security level
Bluetooth: Remove support for other SMP keys than the LTK
Wey-Yi Guy (8):
iwlagn: New SKU for 6005 SFF
iwlagn: merge eeprom access into single file
iwlagn: add support for v2 of temperature offset calibration
iwlagn: use iwl_eeprom_calib_hdr structure
iwlagn: fix stack corruption for temperature offset v2
iwlagn: signedness bug
MAINTAINERS: update iwlwifi
iwlagn: add debugging to show probe related info in scan notification
MAINTAINERS | 4 +-
drivers/bcma/driver_chipcommon_pmu.c | 38 +-
drivers/net/wireless/adm8211.c | 3 +-
drivers/net/wireless/ath/ath5k/mac80211-ops.c | 6 +-
drivers/net/wireless/ath/ath9k/ani.c | 10 +-
drivers/net/wireless/ath/ath9k/ani.h | 1 +
drivers/net/wireless/ath/ath9k/ar5008_phy.c | 32 +-
drivers/net/wireless/ath/ath9k/ar9002_calib.c | 1 +
.../net/wireless/ath/ath9k/ar9003_2p2_initvals.h | 2 +-
drivers/net/wireless/ath/ath9k/ar9003_calib.c | 4 +-
drivers/net/wireless/ath/ath9k/ar9003_phy.c | 14 +-
drivers/net/wireless/ath/ath9k/debug.c | 24 +-
drivers/net/wireless/ath/ath9k/debug.h | 2 +
drivers/net/wireless/ath/ath9k/eeprom.c | 7 +-
drivers/net/wireless/ath/ath9k/eeprom_4k.c | 108 +-
drivers/net/wireless/ath/ath9k/eeprom_9287.c | 12 +-
drivers/net/wireless/ath/ath9k/eeprom_def.c | 46 +-
drivers/net/wireless/ath/ath9k/htc_drv_main.c | 9 +-
drivers/net/wireless/ath/ath9k/hw-ops.h | 5 -
drivers/net/wireless/ath/ath9k/hw.h | 1 -
drivers/net/wireless/ath/ath9k/init.c | 1 -
drivers/net/wireless/ath/ath9k/mac.c | 2 +-
drivers/net/wireless/ath/ath9k/mac.h | 4 -
drivers/net/wireless/ath/ath9k/main.c | 11 +-
drivers/net/wireless/ath/ath9k/recv.c | 10 +-
drivers/net/wireless/ath/ath9k/reg.h | 4 -
drivers/net/wireless/ath/ath9k/xmit.c | 60 +-
drivers/net/wireless/ath/carl9170/main.c | 3 +-
drivers/net/wireless/b43/b43.h | 40 +-
drivers/net/wireless/b43/main.c | 54 +-
drivers/net/wireless/b43/phy_lcn.c | 428 ++++-
drivers/net/wireless/b43/phy_lcn.h | 3 +
drivers/net/wireless/b43/tables_phy_lcn.c | 25 +-
drivers/net/wireless/iwlegacy/iwl-core.c | 7 +-
drivers/net/wireless/iwlegacy/iwl-core.h | 3 +-
drivers/net/wireless/iwlegacy/iwl-hcmd.c | 2 +-
drivers/net/wireless/iwlegacy/iwl-tx.c | 4 +-
drivers/net/wireless/iwlegacy/iwl3945-base.c | 8 +-
drivers/net/wireless/iwlegacy/iwl4965-base.c | 10 +-
drivers/net/wireless/iwlwifi/Makefile | 23 +-
drivers/net/wireless/iwlwifi/iwl-1000.c | 5 +-
drivers/net/wireless/iwlwifi/iwl-2000.c | 12 +-
drivers/net/wireless/iwlwifi/iwl-5000-hw.h | 4 +-
drivers/net/wireless/iwlwifi/iwl-5000.c | 7 +-
drivers/net/wireless/iwlwifi/iwl-6000.c | 7 +-
drivers/net/wireless/iwlwifi/iwl-agn-calib.c | 21 +-
drivers/net/wireless/iwlwifi/iwl-agn-eeprom.c | 299 ---
drivers/net/wireless/iwlwifi/iwl-agn-lib.c | 441 +-----
drivers/net/wireless/iwlwifi/iwl-agn-rs.c | 16 +-
drivers/net/wireless/iwlwifi/iwl-agn-rxon.c | 2 +-
drivers/net/wireless/iwlwifi/iwl-agn-tt.c | 22 +-
drivers/net/wireless/iwlwifi/iwl-agn-tx.c | 39 +-
drivers/net/wireless/iwlwifi/iwl-agn-ucode.c | 63 +-
drivers/net/wireless/iwlwifi/iwl-agn.c | 162 +--
drivers/net/wireless/iwlwifi/iwl-agn.h | 19 +-
drivers/net/wireless/iwlwifi/iwl-bus.h | 72 +-
.../net/wireless/iwlwifi/{iwl-pci.h => iwl-cfg.h} | 5 +-
drivers/net/wireless/iwlwifi/iwl-commands.h | 8 +
drivers/net/wireless/iwlwifi/iwl-core.c | 59 +-
drivers/net/wireless/iwlwifi/iwl-core.h | 13 +-
drivers/net/wireless/iwlwifi/iwl-debugfs.c | 87 +-
drivers/net/wireless/iwlwifi/iwl-dev.h | 19 +-
drivers/net/wireless/iwlwifi/iwl-eeprom.c | 244 +++-
drivers/net/wireless/iwlwifi/iwl-eeprom.h | 10 +-
drivers/net/wireless/iwlwifi/iwl-led.c | 1 -
drivers/net/wireless/iwlwifi/iwl-pci.c | 33 +-
drivers/net/wireless/iwlwifi/iwl-rx.c | 97 +-
drivers/net/wireless/iwlwifi/iwl-scan.c | 696 ++++++-
drivers/net/wireless/iwlwifi/iwl-shared.h | 146 +-
drivers/net/wireless/iwlwifi/iwl-sta.c | 37 +-
drivers/net/wireless/iwlwifi/iwl-sta.h | 5 +-
.../{iwl-trans-int-pcie.h => iwl-trans-pcie-int.h} | 26 +-
.../{iwl-trans-rx-pcie.c => iwl-trans-pcie-rx.c} | 36 +-
.../{iwl-trans-tx-pcie.c => iwl-trans-pcie-tx.c} | 92 +-
drivers/net/wireless/iwlwifi/iwl-trans-pcie.c | 1989 ++++++++++++++++++++
drivers/net/wireless/iwlwifi/iwl-trans.c | 1926 +-------------------
drivers/net/wireless/iwlwifi/iwl-trans.h | 44 +-
drivers/net/wireless/libertas/cfg.c | 33 +-
drivers/net/wireless/libertas/dev.h | 1 -
drivers/net/wireless/mwifiex/cfg80211.c | 7 +-
drivers/net/wireless/mwifiex/cmdevt.c | 3 +
drivers/net/wireless/mwifiex/main.h | 2 +-
drivers/net/wireless/mwifiex/scan.c | 29 +-
drivers/net/wireless/mwifiex/sta_ioctl.c | 16 +-
drivers/net/wireless/rt2x00/rt2400pci.c | 5 +-
drivers/net/wireless/rt2x00/rt2500pci.c | 3 +-
drivers/net/wireless/rt2x00/rt2800lib.c | 2 +-
drivers/net/wireless/rt2x00/rt2800lib.h | 2 +-
drivers/net/wireless/rt2x00/rt61pci.c | 2 +-
drivers/net/wireless/rt2x00/rt73usb.c | 2 +-
drivers/net/wireless/rtl818x/rtl8180/dev.c | 5 +-
drivers/net/wireless/rtl818x/rtl8187/dev.c | 2 +-
drivers/net/wireless/rtlwifi/core.c | 8 +-
drivers/net/wireless/rtlwifi/rtl8192ce/sw.c | 12 +-
drivers/net/wireless/rtlwifi/rtl8192ce/trx.h | 6 -
drivers/net/wireless/rtlwifi/rtl8192cu/mac.h | 6 -
drivers/net/wireless/rtlwifi/rtl8192de/sw.c | 12 +-
drivers/net/wireless/rtlwifi/rtl8192de/trx.h | 6 -
drivers/net/wireless/rtlwifi/rtl8192se/def.h | 2 +-
drivers/net/wireless/rtlwifi/rtl8192se/sw.c | 14 +-
drivers/net/wireless/rtlwifi/rtl8192se/trx.c | 2 +-
drivers/net/wireless/rtlwifi/usb.c | 1 +
drivers/net/wireless/rtlwifi/wifi.h | 6 +
drivers/net/wireless/wl12xx/Kconfig | 10 -
drivers/net/wireless/wl12xx/Makefile | 6 +-
drivers/net/wireless/wl12xx/acx.c | 40 +
drivers/net/wireless/wl12xx/acx.h | 18 +
drivers/net/wireless/wl12xx/cmd.c | 60 +-
drivers/net/wireless/wl12xx/cmd.h | 7 +
drivers/net/wireless/wl12xx/conf.h | 29 +-
drivers/net/wireless/wl12xx/debugfs.c | 88 +-
drivers/net/wireless/wl12xx/event.c | 39 +-
drivers/net/wireless/wl12xx/init.c | 22 +-
drivers/net/wireless/wl12xx/main.c | 300 +++-
drivers/net/wireless/wl12xx/ps.c | 8 +-
drivers/net/wireless/wl12xx/rx.c | 9 +-
drivers/net/wireless/wl12xx/scan.c | 166 ++-
drivers/net/wireless/wl12xx/sdio_test.c | 15 +-
drivers/net/wireless/wl12xx/tx.c | 60 +-
drivers/net/wireless/wl12xx/tx.h | 9 +-
drivers/net/wireless/wl12xx/wl12xx.h | 13 +-
drivers/net/wireless/wl3501_cs.c | 2 +-
drivers/net/wireless/zd1211rw/zd_mac.c | 2 +-
drivers/nfc/Kconfig | 11 +
drivers/nfc/Makefile | 1 +
drivers/nfc/nfcwilink.c | 342 ++++
drivers/nfc/pn533.c | 4 +-
drivers/staging/brcm80211/brcmsmac/mac80211_if.c | 12 +-
drivers/staging/winbond/wbusb.c | 2 +-
include/linux/bcma/bcma_driver_chipcommon.h | 9 +
include/linux/ieee80211.h | 10 +
include/linux/nfc.h | 6 +
include/linux/nl80211.h | 46 +
include/net/bluetooth/hci.h | 10 +
include/net/bluetooth/hci_core.h | 25 +-
include/net/bluetooth/l2cap.h | 8 +-
include/net/bluetooth/mgmt.h | 16 +
include/net/bluetooth/smp.h | 17 +
include/net/cfg80211.h | 36 +-
include/net/mac80211.h | 13 +-
include/net/nfc/nci.h | 313 +++
include/net/nfc/nci_core.h | 184 ++
include/net/{ => nfc}/nfc.h | 4 +
net/bluetooth/hci_conn.c | 2 +-
net/bluetooth/hci_core.c | 57 +-
net/bluetooth/hci_event.c | 16 +-
net/bluetooth/hci_sock.c | 18 +-
net/bluetooth/hci_sysfs.c | 2 +
net/bluetooth/hidp/core.c | 3 +
net/bluetooth/l2cap_core.c | 18 +-
net/bluetooth/mgmt.c | 212 ++-
net/bluetooth/smp.c | 421 +++--
net/mac80211/cfg.c | 12 +-
net/mac80211/debugfs.c | 52 -
net/mac80211/debugfs_netdev.c | 48 +-
net/mac80211/driver-ops.h | 27 +-
net/mac80211/driver-trace.h | 40 +-
net/mac80211/ibss.c | 6 +-
net/mac80211/ieee80211_i.h | 5 +-
net/mac80211/iface.c | 10 +-
net/mac80211/mesh_plink.c | 8 +
net/mac80211/mlme.c | 49 +-
net/mac80211/rate.c | 29 +-
net/mac80211/scan.c | 3 +-
net/mac80211/util.c | 23 +-
net/mac80211/work.c | 2 +-
net/nfc/Kconfig | 2 +
net/nfc/Makefile | 1 +
net/nfc/core.c | 77 +
net/nfc/nci/Kconfig | 10 +
net/nfc/nci/Makefile | 7 +
net/nfc/nci/core.c | 797 ++++++++
net/nfc/nci/data.c | 247 +++
net/nfc/nci/lib.c | 94 +
net/nfc/nci/ntf.c | 258 +++
net/nfc/nci/rsp.c | 226 +++
net/nfc/netlink.c | 56 +
net/nfc/nfc.h | 6 +-
net/rfkill/core.c | 2 +-
net/wireless/core.h | 4 +-
net/wireless/mlme.c | 16 +-
net/wireless/nl80211.c | 100 +-
net/wireless/nl80211.h | 4 +
net/wireless/scan.c | 27 +
net/wireless/sme.c | 19 +-
net/wireless/util.c | 16 +-
186 files changed, 8573 insertions(+), 4415 deletions(-)
delete mode 100644 drivers/net/wireless/iwlwifi/iwl-agn-eeprom.c
rename drivers/net/wireless/iwlwifi/{iwl-pci.h => iwl-cfg.h} (97%)
rename drivers/net/wireless/iwlwifi/{iwl-trans-int-pcie.h => iwl-trans-pcie-int.h} (94%)
rename drivers/net/wireless/iwlwifi/{iwl-trans-rx-pcie.c => iwl-trans-pcie-rx.c} (97%)
rename drivers/net/wireless/iwlwifi/{iwl-trans-tx-pcie.c => iwl-trans-pcie-tx.c} (94%)
create mode 100644 drivers/net/wireless/iwlwifi/iwl-trans-pcie.c
create mode 100644 drivers/nfc/nfcwilink.c
create mode 100644 include/net/nfc/nci.h
create mode 100644 include/net/nfc/nci_core.h
rename include/net/{ => nfc}/nfc.h (97%)
create mode 100644 net/nfc/nci/Kconfig
create mode 100644 net/nfc/nci/Makefile
create mode 100644 net/nfc/nci/core.c
create mode 100644 net/nfc/nci/data.c
create mode 100644 net/nfc/nci/lib.c
create mode 100644 net/nfc/nci/ntf.c
create mode 100644 net/nfc/nci/rsp.c
Omnibus patch is (or should be) available here:
http://bombadil.infradead.org/users/linville/wireless-next-2011-09-30.patch.gz
--
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 1/1] iwlagn: rename iwlagn module iwlwifi and alias to iwlagn.
From: Wey-Yi Guy @ 2011-09-30 18:40 UTC (permalink / raw)
To: linville; +Cc: linux-wireless, Don Fry, Wey-Yi Guy
In-Reply-To: <1317408020-16627-1-git-send-email-wey-yi.w.guy@intel.com>
From: Don Fry <donald.h.fry@intel.com>
Rename the iwlagn module as iwlwifi in preparation for future
changes. Add an alias to iwlagn for backward compatibility.
Signed-off-by: Don Fry <donald.h.fry@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
---
Documentation/feature-removal-schedule.txt | 5 +++
drivers/net/wireless/Makefile | 2 +-
drivers/net/wireless/iwlwifi/Kconfig | 22 +++++++-------
drivers/net/wireless/iwlwifi/Makefile | 40 ++++++++++++++--------------
drivers/net/wireless/iwlwifi/iwl-agn.c | 1 +
drivers/net/wireless/iwlwifi/iwl-shared.h | 2 +-
6 files changed, 39 insertions(+), 33 deletions(-)
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt
index dfd6a9f..1cf3dbd 100644
--- a/Documentation/feature-removal-schedule.txt
+++ b/Documentation/feature-removal-schedule.txt
@@ -555,3 +555,8 @@ Why: This driver has been superseded by g_mass_storage.
Who: Alan Stern <stern@rowland.harvard.edu>
----------------------------
+What: iwlagn alias support
+When: 3.5
+Why: The iwlagn module has been renamed iwlwifi. The alias will be around
+ for backward compatibility for several cycles and then dropped.
+Who: Don Fry <donald.h.fry@intel.com>
\ No newline at end of file
diff --git a/drivers/net/wireless/Makefile b/drivers/net/wireless/Makefile
index 7bba6a8..4cf0ad3 100644
--- a/drivers/net/wireless/Makefile
+++ b/drivers/net/wireless/Makefile
@@ -41,7 +41,7 @@ obj-$(CONFIG_ADM8211) += adm8211.o
obj-$(CONFIG_MWL8K) += mwl8k.o
-obj-$(CONFIG_IWLAGN) += iwlwifi/
+obj-$(CONFIG_IWLWIFI) += iwlwifi/
obj-$(CONFIG_IWLWIFI_LEGACY) += iwlegacy/
obj-$(CONFIG_RT2X00) += rt2x00/
diff --git a/drivers/net/wireless/iwlwifi/Kconfig b/drivers/net/wireless/iwlwifi/Kconfig
index 1d7572f..e044103 100644
--- a/drivers/net/wireless/iwlwifi/Kconfig
+++ b/drivers/net/wireless/iwlwifi/Kconfig
@@ -1,5 +1,5 @@
-config IWLAGN
- tristate "Intel Wireless WiFi Next Gen AGN - Wireless-N/Advanced-N/Ultimate-N (iwlagn) "
+config IWLWIFI
+ tristate "Intel Wireless WiFi Next Gen AGN - Wireless-N/Advanced-N/Ultimate-N (iwlwifi) "
depends on PCI && MAC80211
select FW_LOADER
select NEW_LEDS
@@ -39,14 +39,14 @@ config IWLAGN
If you want to compile the driver as a module ( = code which can be
inserted in and removed from the running kernel whenever you want),
say M here and read <file:Documentation/kbuild/modules.txt>. The
- module will be called iwlagn.
+ module will be called iwlwifi.
menu "Debugging Options"
- depends on IWLAGN
+ depends on IWLWIFI
config IWLWIFI_DEBUG
- bool "Enable full debugging output in the iwlagn driver"
- depends on IWLAGN
+ bool "Enable full debugging output in the iwlwifi driver"
+ depends on IWLWIFI
---help---
This option will enable debug tracing output for the iwlwifi drivers
@@ -70,8 +70,8 @@ config IWLWIFI_DEBUG
any problems you may encounter.
config IWLWIFI_DEBUGFS
- bool "iwlagn debugfs support"
- depends on IWLAGN && MAC80211_DEBUGFS
+ bool "iwlwifi debugfs support"
+ depends on IWLWIFI && MAC80211_DEBUGFS
---help---
Enable creation of debugfs files for the iwlwifi drivers. This
is a low-impact option that allows getting insight into the
@@ -79,13 +79,13 @@ config IWLWIFI_DEBUGFS
config IWLWIFI_DEBUG_EXPERIMENTAL_UCODE
bool "Experimental uCode support"
- depends on IWLAGN && IWLWIFI_DEBUG
+ depends on IWLWIFI && IWLWIFI_DEBUG
---help---
Enable use of experimental ucode for testing and debugging.
config IWLWIFI_DEVICE_TRACING
bool "iwlwifi device access tracing"
- depends on IWLAGN
+ depends on IWLWIFI
depends on EVENT_TRACING
help
Say Y here to trace all commands, including TX frames and IO
@@ -104,7 +104,7 @@ endmenu
config IWLWIFI_DEVICE_SVTOOL
bool "iwlwifi device svtool support"
- depends on IWLAGN
+ depends on IWLWIFI
select NL80211_TESTMODE
help
This option enables the svtool support for iwlwifi device through
diff --git a/drivers/net/wireless/iwlwifi/Makefile b/drivers/net/wireless/iwlwifi/Makefile
index 8fa59cd..bacafa4 100644
--- a/drivers/net/wireless/iwlwifi/Makefile
+++ b/drivers/net/wireless/iwlwifi/Makefile
@@ -1,25 +1,25 @@
-# AGN
-obj-$(CONFIG_IWLAGN) += iwlagn.o
-iwlagn-objs := iwl-agn.o iwl-agn-rs.o
-iwlagn-objs += iwl-agn-ucode.o iwl-agn-tx.o
-iwlagn-objs += iwl-agn-lib.o iwl-agn-calib.o iwl-io.o
-iwlagn-objs += iwl-agn-tt.o iwl-agn-sta.o
+# WIFI
+obj-$(CONFIG_IWLWIFI) += iwlwifi.o
+iwlwifi-objs := iwl-agn.o iwl-agn-rs.o
+iwlwifi-objs += iwl-agn-ucode.o iwl-agn-tx.o
+iwlwifi-objs += iwl-agn-lib.o iwl-agn-calib.o iwl-io.o
+iwlwifi-objs += iwl-agn-tt.o iwl-agn-sta.o
-iwlagn-objs += iwl-core.o iwl-eeprom.o iwl-power.o
-iwlagn-objs += iwl-rx.o iwl-sta.o
-iwlagn-objs += iwl-scan.o iwl-led.o
-iwlagn-objs += iwl-agn-rxon.o
-iwlagn-objs += iwl-5000.o
-iwlagn-objs += iwl-6000.o
-iwlagn-objs += iwl-1000.o
-iwlagn-objs += iwl-2000.o
-iwlagn-objs += iwl-pci.o
-iwlagn-objs += iwl-trans.o
-iwlagn-objs += iwl-trans-pcie.o iwl-trans-pcie-rx.o iwl-trans-pcie-tx.o
+iwlwifi-objs += iwl-core.o iwl-eeprom.o iwl-power.o
+iwlwifi-objs += iwl-rx.o iwl-sta.o
+iwlwifi-objs += iwl-scan.o iwl-led.o
+iwlwifi-objs += iwl-agn-rxon.o
+iwlwifi-objs += iwl-5000.o
+iwlwifi-objs += iwl-6000.o
+iwlwifi-objs += iwl-1000.o
+iwlwifi-objs += iwl-2000.o
+iwlwifi-objs += iwl-pci.o
+iwlwifi-objs += iwl-trans.o
+iwlwifi-objs += iwl-trans-pcie.o iwl-trans-pcie-rx.o iwl-trans-pcie-tx.o
-iwlagn-$(CONFIG_IWLWIFI_DEBUGFS) += iwl-debugfs.o
-iwlagn-$(CONFIG_IWLWIFI_DEVICE_TRACING) += iwl-devtrace.o
-iwlagn-$(CONFIG_IWLWIFI_DEVICE_SVTOOL) += iwl-sv-open.o
+iwlwifi-$(CONFIG_IWLWIFI_DEBUGFS) += iwl-debugfs.o
+iwlwifi-$(CONFIG_IWLWIFI_DEVICE_TRACING) += iwl-devtrace.o
+iwlwifi-$(CONFIG_IWLWIFI_DEVICE_SVTOOL) += iwl-sv-open.o
CFLAGS_iwl-devtrace.o := -I$(src)
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index baaf486..d0fd6f0 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -79,6 +79,7 @@ MODULE_DESCRIPTION(DRV_DESCRIPTION);
MODULE_VERSION(DRV_VERSION);
MODULE_AUTHOR(DRV_COPYRIGHT " " DRV_AUTHOR);
MODULE_LICENSE("GPL");
+MODULE_ALIAS("iwlagn");
void iwl_update_chain_flags(struct iwl_priv *priv)
{
diff --git a/drivers/net/wireless/iwlwifi/iwl-shared.h b/drivers/net/wireless/iwlwifi/iwl-shared.h
index 8747bbd..3a24b47 100644
--- a/drivers/net/wireless/iwlwifi/iwl-shared.h
+++ b/drivers/net/wireless/iwlwifi/iwl-shared.h
@@ -100,7 +100,7 @@ struct iwl_priv;
struct iwl_sensitivity_ranges;
struct iwl_trans_ops;
-#define DRV_NAME "iwlagn"
+#define DRV_NAME "iwlwifi"
#define IWLWIFI_VERSION "in-tree:"
#define DRV_COPYRIGHT "Copyright(c) 2003-2011 Intel Corporation"
#define DRV_AUTHOR "<ilw@linux.intel.com>"
--
1.7.0.4
^ permalink raw reply related
* [PATCH 0/1] update for 3.2
From: Wey-Yi Guy @ 2011-09-30 18:40 UTC (permalink / raw)
To: linville; +Cc: linux-wireless, Wey-Yi Guy
We rename the driver name from iwlagn to iwlwifi. This is the preparation for
future driver partition work to support multiple device architectures.
We will have the alias support for "iwlagn" which will be deprecate on kernel
release 3.5.
Don Fry (1):
iwlagn: rename iwlagn module iwlwifi and alias to iwlagn.
these patches are also available from wireless-next-2.6 branch on
git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi.git
Because the file system problem, all the patches are not push into
git.kernel.org yet. I will push as soon as the file system issue addressed
Documentation/feature-removal-schedule.txt | 5 +++
drivers/net/wireless/Makefile | 2 +-
drivers/net/wireless/iwlwifi/Kconfig | 22 +++++++-------
drivers/net/wireless/iwlwifi/Makefile | 40 ++++++++++++++--------------
drivers/net/wireless/iwlwifi/iwl-agn.c | 1 +
drivers/net/wireless/iwlwifi/iwl-shared.h | 2 +-
6 files changed, 39 insertions(+), 33 deletions(-)
^ permalink raw reply
* Re: pull request: wireless-next 2011-09-30
From: David Miller @ 2011-09-30 19:27 UTC (permalink / raw)
To: linville; +Cc: linux-wireless, netdev
In-Reply-To: <20110930191131.GC2526@tuxdriver.com>
From: "John W. Linville" <linville@tuxdriver.com>
Date: Fri, 30 Sep 2011 15:11:31 -0400
> Here is yet another big package of wireless updates for 3.2. Highlights
> include a bluetooth pull, a wl12xx pull, and a pull of the wireless tree
> to fix some merge issues. Also included is the usual big sets of
> updates to ath9k, iwlagn, b43, and others. Plus, the NFC subsystem grew
> NCI support.
>
> Please let me know if there are problems!
Pulled, thanks John.
^ permalink raw reply
* Re: [PATCH] libertas: detect TX lockups and reset hardware
From: John W. Linville @ 2011-09-30 19:15 UTC (permalink / raw)
To: Daniel Drake; +Cc: dcbw, linux-wireless, libertas-dev
In-Reply-To: <20110921153017.8FDAE9D401D@zog.reactivated.net>
On Wed, Sep 21, 2011 at 04:30:17PM +0100, Daniel Drake wrote:
> Recent patches added support for resetting the SD8686 hardware when
> commands time out, which seems to happen quite frequently soon after
> resuming the system from a Wake-on-WLAN-triggered resume.
>
> At http://dev.laptop.org/ticket/10969 we see the same thing happen
> with transmits. In this case, the hardware will fail to respond to
> a frame passed for transmission, and libertas (correctly) will block
> all further commands and transmissions as the hardware can only
> deal with one thing at a time. This results in a lockup while the
> system waits indefinitely for the dead card to respond.
>
> Hook up a TX lockup timer to detect this and reset the hardware.
>
> Signed-off-by: Daniel Drake <dsd@laptop.org>
> @@ -995,6 +1029,7 @@ void lbs_stop_card(struct lbs_private *priv)
>
> /* Delete the timeout of the currently processing command */
> del_timer_sync(&priv->command_timer);
> + del_timer_sync(&priv->tx_lockup_timer);
> del_timer_sync(&priv->auto_deepsleep_timer);
>
> /* Flush pending command nodes */
This hunk doesn't apply. What tree are you using as a base?
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: [PATCH 3/3] mac80211: pass vif param to conf_tx() callback
From: John W. Linville @ 2011-09-30 19:57 UTC (permalink / raw)
To: Eliad Peller; +Cc: Johannes Berg, linux-wireless
In-Reply-To: <1316970415-23239-3-git-send-email-eliad@wizery.com>
On Sun, Sep 25, 2011 at 08:06:55PM +0300, Eliad Peller wrote:
> tx params should be configured per interface.
> Add ieee80211_vif param to the conf_tx callback,
> and update all the drivers that use this callback.
>
> The following spatch was used:
> @rule1@
> struct ieee80211_ops ops;
> identifier conf_tx_op;
> @@
> ops.conf_tx = conf_tx_op;
>
> @rule2@
> identifier rule1.conf_tx_op;
> identifier hw, queue, params;
> @@
> conf_tx_op (
> - struct ieee80211_hw *hw,
> + struct ieee80211_hw *hw, struct ieee80211_vif *vif,
> u16 queue,
> const struct ieee80211_tx_queue_params *params) {...}
>
> Signed-off-by: Eliad Peller <eliad@wizery.com>
You really need to compile patches before submitting them...
CC [M] drivers/net/wireless/iwlegacy/iwl3945-base.o
drivers/net/wireless/iwlegacy/iwl3945-base.c:3522:2: warning: initialization from incompatible pointer type
CC [M] drivers/net/wireless/iwlegacy/iwl-4965.o
drivers/net/wireless/iwlegacy/iwl-4965.c:2125:2: warning: initialization from incompatible pointer type
CC [M] drivers/net/wireless/iwlwifi/iwl-agn.o
drivers/net/wireless/iwlwifi/iwl-agn.c:3092:2: warning: initialization from incompatible pointer type
CC [M] drivers/net/wireless/rt2x00/rt2500pci.o
drivers/net/wireless/rt2x00/rt2500pci.c:2005:2: warning: initialization from incompatible pointer type
CC [M] drivers/net/wireless/rt2x00/rt2800pci.o
drivers/net/wireless/rt2x00/rt2800pci.c:1021:2: warning: initialization from incompatible pointer type
CC [M] drivers/net/wireless/rt2x00/rt2500usb.o
drivers/net/wireless/rt2x00/rt2500usb.c:1824:2: warning: initialization from incompatible pointer type
CC [M] drivers/net/wireless/rt2x00/rt2800usb.o
drivers/net/wireless/rt2x00/rt2800usb.c:766:2: warning: initialization from incompatible pointer type
CC [M] drivers/net/wireless/mwl8k.o
drivers/net/wireless/mwl8k.c: In function ‘mwl8k_reload_firmware’:
drivers/net/wireless/mwl8k.c:5466:3: warning: passing argument 2 of ‘mwl8k_conf_tx’ makes pointer from integer without a cast
drivers/net/wireless/mwl8k.c:4918:12: note: expected ‘struct ieee80211_vif *’ but argument is of type ‘int’
drivers/net/wireless/mwl8k.c:5466:3: warning: passing argument 3 of ‘mwl8k_conf_tx’ makes integer from pointer without a cast
drivers/net/wireless/mwl8k.c:4918:12: note: expected ‘u16’ but argument is of type ‘struct ieee80211_tx_queue_params *’
drivers/net/wireless/mwl8k.c:5466:3: error: too few arguments to function ‘mwl8k_conf_tx’
drivers/net/wireless/mwl8k.c:4918:12: note: declared here
make[1]: *** [drivers/net/wireless/mwl8k.o] Error 1
make: *** [drivers/net/wireless/] Error 2
Feel free to submit a new patch that doesn't introduce warnings or break the build...
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: [PATCH v2] Move brcm80211 to mainline
From: Arend Van Spriel @ 2011-09-30 21:54 UTC (permalink / raw)
To: Johannes Berg
Cc: Greg KH, linville@tuxdriver.com, devel@linuxdriverproject.org,
linux-wireless@vger.kernel.org, Brett Rudley, Roland Vossen,
Franky (Zhenhui) Lin
In-Reply-To: <1314248569.5054.43.camel@jlt3.sipsolutions.net>
PiBGcm9tOiBKb2hhbm5lcyBCZXJnIFttYWlsdG86am9oYW5uZXNAc2lwc29sdXRpb25zLm5ldF0N
Cj4gU2VudDogZG9uZGVyZGFnIDI1IGF1Z3VzdHVzIDIwMTEgNzowMw0KPiANCj4gPiArI2RlZmlu
ZSBMT0NLKHdsKQlzcGluX2xvY2tfYmgoJih3bCktPmxvY2spDQo+IA0KPiBObyB3YXkgLi4uDQo+
IA0KDQpIaSBKb2hhbm5lcywNCg0KWW91ciBjb21tZW50IGlzIGEgYml0IG9wZW4gZm9yIGludGVy
cHJldGF0aW9uIChvciBub3QgOy0pICkuIENvdWxkIHlvdSBlbGFib3JhdGUgb24gdGhpcyBvbmU/
DQoNCkdyLiBBdlMNCg==
^ permalink raw reply
* Re: [PATCH v2] Move brcm80211 to mainline
From: Luis R. Rodriguez @ 2011-09-30 22:11 UTC (permalink / raw)
To: Arend Van Spriel
Cc: Johannes Berg, Greg KH, linville@tuxdriver.com,
devel@linuxdriverproject.org, linux-wireless@vger.kernel.org,
Brett Rudley, Roland Vossen, Franky (Zhenhui) Lin
In-Reply-To: <400C43189542CE41BC0A5B252FC90136BC0CF45AE8@SJEXCHCCR02.corp.ad.broadcom.com>
On Fri, Sep 30, 2011 at 2:54 PM, Arend Van Spriel <arend@broadcom.com> wrote:
>> From: Johannes Berg [mailto:johannes@sipsolutions.net]
>> Sent: donderdag 25 augustus 2011 7:03
>>
>> > +#define LOCK(wl) spin_lock_bh(&(wl)->lock)
>>
>> No way ...
>>
>
> Hi Johannes,
>
> Your comment is a bit open for interpretation (or not ;-) ). Could you elaborate on this one?
Dude, just kill the define.
Luis
^ permalink raw reply
* [PATCH net-next] drivers/net: Add module.h to wireless/ath/ath6kl/sdio.c
From: Paul Gortmaker @ 2011-09-30 23:07 UTC (permalink / raw)
To: davem; +Cc: netdev, linville, kvalo, linux-wireless, Paul Gortmaker
This file uses various MODULE_* macros, and so needs the full
module.h header called out explicitly.
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
---
[Dave: I can't carry this in the module.h tree with all the other one
line patches, as it only exists in trees based off wireless/net-next.
It fixes a compile failure that shows up in linux-next. Thanks.]
diff --git a/drivers/net/wireless/ath/ath6kl/sdio.c b/drivers/net/wireless/ath/ath6kl/sdio.c
index 3417160..ca4a93e 100644
--- a/drivers/net/wireless/ath/ath6kl/sdio.c
+++ b/drivers/net/wireless/ath/ath6kl/sdio.c
@@ -14,6 +14,7 @@
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
+#include <linux/module.h>
#include <linux/mmc/card.h>
#include <linux/mmc/mmc.h>
#include <linux/mmc/host.h>
--
1.7.6
^ permalink raw reply related
* iwlagn rmmod BUG iwlagn_dev_cmd: Objects remaining on kmem_cache_close()
From: Luis R. Rodriguez @ 2011-09-30 23:41 UTC (permalink / raw)
To: linux-wireless
While I rmmod iwlagn, I get this.
mcgrof@tux ~ $ uname -r
3.1.0-rc5-wl+
[ 18.925738] iwlagn 0000:03:00.0: loaded firmware version 9.221.4.1
build 25532
[ 18.928240] Registered led device: phy0-led
[ 18.928533] cfg80211: Ignoring regulatory request Set by core since
the driver uses its own custom regulatory domain
[ 18.929829] ieee80211 phy0: Selected rate control algorithm 'iwl-agn-rs'
[ 18.941901] input: ThinkPad Extra Buttons as
/devices/platform/thinkpad_acpi/input/input9
[ 19.016856] udev[382]: renamed network interface wlan0 to wlan8
[ 19.019627] iwlagn 0000:03:00.0: L1 Disabled; Enabling L0S
[ 19.019755] iwlagn 0000:03:00.0: Radio type=0x1-0x3-0x1
[ 19.257317] iwlagn 0000:03:00.0: L1 Disabled; Enabling L0S
[ 19.257447] iwlagn 0000:03:00.0: Radio type=0x1-0x3-0x1
[ 19.352187] ieee80211 phy0: device now idle
[ 19.365350] ADDRCONF(NETDEV_UP): wlan8: link is not ready
[ 19.429844] ieee80211 phy0: device no longer idle - scanning
[ 20.346536] EXT4-fs (sda1): re-mounted. Opts:
errors=remount-ro,user_xattr,commit=0
[ 20.395747] checking generic (d0000000 3f0000) vs hw (d0000000 10000000)
[ 20.395750] fb: conflicting fb hw usage inteldrmfb vs VESA VGA -
removing generic driver
[ 20.395920] Console: switching to colour dummy device 80x25
[ 20.397297] fbcon: inteldrmfb (fb0) is primary device
[ 20.397865] Console: switching to colour frame buffer device 180x56
[ 20.397872] fb0: inteldrmfb frame buffer device
[ 20.397873] drm: registered panic notifier
[ 20.627535] acpi device:02: registered as cooling_device4
[ 20.655823] input: Video Bus as
/devices/LNXSYSTM:00/device:00/PNP0A08:00/LNXVIDEO:00/input/input10
[ 20.656457] ACPI: Video Device [VID] (multi-head: yes rom: no post: no)
[ 20.657053] [drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0
[ 20.770262] ppdev: user-space parallel port driver
[ 22.085036] cfg80211: Found new beacon on frequency: 5745 MHz (Ch
149) on phy0
[ 22.567306] ieee80211 phy0: device now idle
[ 25.135394] IBM TrackPoint firmware: 0x0e, buttons: 3/3
[ 25.392278] input: TPPS/2 IBM TrackPoint as
/devices/platform/i8042/serio1/serio2/input/input11
[ 35.114291] hda-intel: Invalid position buffer, using LPIB read
method instead.
[ 35.124068] hda-intel: Invalid position buffer, using LPIB read
method instead.
[ 35.298915] hda-intel: IRQ timing workaround is activated for card
#0. Suggest a bigger bdl_pos_adj.
[ 39.177463] ieee80211 phy0: device no longer idle - scanning
[ 39.281338] EXT4-fs (sda1): re-mounted. Opts:
errors=remount-ro,user_xattr,commit=0
[ 42.319521] ieee80211 phy0: device now idle
[ 132.085933] ieee80211 phy0: device no longer idle - scanning
[ 135.458783] ieee80211 phy0: device now idle
[ 135.463938] ieee80211 phy0: device no longer idle - working
[ 135.466849] wlan8: authenticate with 68:7f:74:3b:b1:0f (try 1)
[ 135.472508] wlan8: authenticated
[ 135.472680] ieee80211 phy0: Allocated STA 68:7f:74:3b:b1:0f
[ 135.472689] ieee80211 phy0: Inserted dummy STA 68:7f:74:3b:b1:0f
[ 135.475839] wlan8: associate with 68:7f:74:3b:b1:0f (try 1)
[ 135.482033] wlan8: RX AssocResp from 68:7f:74:3b:b1:0f (capab=0x411
status=0 aid=2)
[ 135.482036] wlan8: associated
[ 135.482609] ieee80211 phy0: Inserted STA 68:7f:74:3b:b1:0f
[ 135.482613] ieee80211 phy0: WMM queue=2 aci=0 acm=0 aifs=3 cWmin=15
cWmax=1023 txop=0 uapsd=0
[ 135.482616] ieee80211 phy0: WMM queue=3 aci=1 acm=0 aifs=7 cWmin=15
cWmax=1023 txop=0 uapsd=0
[ 135.482619] ieee80211 phy0: WMM queue=1 aci=2 acm=0 aifs=2 cWmin=7
cWmax=15 txop=94 uapsd=0
[ 135.482621] ieee80211 phy0: WMM queue=0 aci=3 acm=0 aifs=2 cWmin=3
cWmax=7 txop=47 uapsd=0
[ 135.487047] ADDRCONF(NETDEV_CHANGE): wlan8: link becomes ready
[ 135.488063] Rx A-MPDU request on tid 0 result 0
[ 144.357086] Open BA session requested for 68:7f:74:3b:b1:0f tid 0
[ 144.426737] activated addBA response timer on tid 0
[ 144.428615] switched off addBA timer for tid 0
[ 144.428618] Aggregation is on for tid 0
[ 144.428758] iwlagn 0000:03:00.0: Tx aggregation enabled on ra =
68:7f:74:3b:b1:0f tid = 0
[ 563.427696] Open BA session requested for 68:7f:74:3b:b1:0f tid 6
[ 563.428179] activated addBA response timer on tid 6
[ 563.430054] switched off addBA timer for tid 6
[ 563.430058] Aggregation is on for tid 6
[ 563.430198] iwlagn 0000:03:00.0: Tx aggregation enabled on ra =
68:7f:74:3b:b1:0f tid = 6
[ 1274.053879] ieee80211 phy0: wlan8: No ack for nullfunc frame to AP
68:7f:74:3b:b1:0f, try 1/2
[ 1274.058786] ieee80211 phy0: wlan8: No ack for nullfunc frame to AP
68:7f:74:3b:b1:0f, disconnecting.
[ 1274.058807] Tx BA session stop requested for 68:7f:74:3b:b1:0f tid 0
[ 1274.058820] Rx BA session stop requested for 68:7f:74:3b:b1:0f tid 0
[ 1274.058948] Tx BA session stop requested for 68:7f:74:3b:b1:0f tid 6
[ 1274.063782] Tx BA session stop requested for 68:7f:74:3b:b1:0f tid 0
[ 1274.063793] iwlagn 0000:03:00.0: Stopping AGG while state not ONor starting
[ 1274.063937] Tx BA session stop requested for 68:7f:74:3b:b1:0f tid 6
[ 1274.063944] iwlagn 0000:03:00.0: Stopping AGG while state not ONor starting
[ 1274.212659] ieee80211 phy0: Removed STA 68:7f:74:3b:b1:0f
[ 1274.212848] ieee80211 phy0: Destroyed STA 68:7f:74:3b:b1:0f
[ 1274.212872] ieee80211 phy0: device now idle
[ 1274.262722] Stopping Tx BA session for 68:7f:74:3b:b1:0f tid 6
[ 1274.262728] Could not find station: 68:7f:74:3b:b1:0f
[ 1274.262763] Stopping Tx BA session for 68:7f:74:3b:b1:0f tid 0
[ 1274.262768] Could not find station: 68:7f:74:3b:b1:0f
[ 1274.262803] Stopping Tx BA session for 68:7f:74:3b:b1:0f tid 0
[ 1274.262808] Could not find station: 68:7f:74:3b:b1:0f
[ 1274.262841] Stopping Tx BA session for 68:7f:74:3b:b1:0f tid 6
[ 1274.262846] Could not find station: 68:7f:74:3b:b1:0f
[ 1274.263312] cfg80211: All devices are disconnected, going to
restore regulatory settings
[ 1274.263334] cfg80211: Restoring regulatory settings
[ 1274.263391] cfg80211: Calling CRDA to update world regulatory domain
[ 1274.280759] cfg80211: Ignoring regulatory request Set by core since
the driver uses its own custom regulatory domain
[ 1274.280766] cfg80211: World regulatory domain updated:
[ 1274.280769] cfg80211: (start_freq - end_freq @ bandwidth),
(max_antenna_gain, max_eirp)
[ 1274.280774] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz),
(600 mBi, 2000 mBm)
[ 1274.363721] ieee80211 phy0: device no longer idle - scanning
[ 1277.606397] ieee80211 phy0: device now idle
[ 1277.611446] ieee80211 phy0: device no longer idle - working
[ 1277.614321] wlan8: authenticate with 68:7f:74:3b:b1:0f (try 1)
[ 1277.617086] wlan8: authenticated
[ 1277.617193] ieee80211 phy0: Allocated STA 68:7f:74:3b:b1:0f
[ 1277.617201] ieee80211 phy0: Inserted dummy STA 68:7f:74:3b:b1:0f
[ 1277.618046] wlan8: associate with 68:7f:74:3b:b1:0f (try 1)
[ 1277.624327] wlan8: RX AssocResp from 68:7f:74:3b:b1:0f (capab=0x411
status=0 aid=2)
[ 1277.624333] wlan8: associated
[ 1277.625710] ieee80211 phy0: Inserted STA 68:7f:74:3b:b1:0f
[ 1277.625719] ieee80211 phy0: WMM queue=2 aci=0 acm=0 aifs=3 cWmin=15
cWmax=1023 txop=0 uapsd=0
[ 1277.625727] ieee80211 phy0: WMM queue=3 aci=1 acm=0 aifs=7 cWmin=15
cWmax=1023 txop=0 uapsd=0
[ 1277.625733] ieee80211 phy0: WMM queue=1 aci=2 acm=0 aifs=2 cWmin=7
cWmax=15 txop=94 uapsd=0
[ 1277.625738] ieee80211 phy0: WMM queue=0 aci=3 acm=0 aifs=2 cWmin=3
cWmax=7 txop=47 uapsd=0
[ 1277.629864] Rx A-MPDU request on tid 0 result 0
[ 1277.640505] iwlagn 0000:03:00.0: Queue 2 stuck for 2000 ms.
[ 1277.640513] iwlagn 0000:03:00.0: On demand firmware reload
[ 1277.640610] ieee80211 phy0: Hardware restart was requested
[ 1277.640668] iwlagn 0000:03:00.0: L1 Disabled; Enabling L0S
[ 1277.640797] iwlagn 0000:03:00.0: Radio type=0x1-0x3-0x1
[ 1277.749326] Rx BA session stop requested for 68:7f:74:3b:b1:0f tid 0
[ 1278.639143] Rx A-MPDU request on tid 0 result 0
[ 1291.825925] Open BA session requested for 68:7f:74:3b:b1:0f tid 0
[ 1291.826100] activated addBA response timer on tid 0
[ 1291.830332] switched off addBA timer for tid 0
[ 1379.437022] Aggregation is on for tid 0
[ 1379.437169] iwlagn 0000:03:00.0: Tx aggregation enabled on ra =
68:7f:74:3b:b1:0f tid = 0
[ 2233.422214] ieee80211 phy0: wlan8: No ack for nullfunc frame to AP
68:7f:74:3b:b1:0f, try 1/2
[ 3541.474353] wlan8: deauthenticated from 68:7f:74:3b:b1:0f (Reason: 16)
[ 3541.474367] Tx BA session stop requested for 68:7f:74:3b:b1:0f tid 0
[ 3541.474490] Rx BA session stop requested for 68:7f:74:3b:b1:0f tid 0
[ 3541.477062] Tx BA session stop requested for 68:7f:74:3b:b1:0f tid 0
[ 3541.477072] iwlagn 0000:03:00.0: Stopping AGG while state not ONor starting
[ 3541.719666] ieee80211 phy0: Removed STA 68:7f:74:3b:b1:0f
[ 3541.719803] ieee80211 phy0: Destroyed STA 68:7f:74:3b:b1:0f
[ 3541.719832] ieee80211 phy0: device now idle
[ 3541.890003] Stopping Tx BA session for 68:7f:74:3b:b1:0f tid 0
[ 3541.890009] Could not find station: 68:7f:74:3b:b1:0f
[ 3541.890029] Stopping Tx BA session for 68:7f:74:3b:b1:0f tid 0
[ 3541.890032] Could not find station: 68:7f:74:3b:b1:0f
[ 3541.890348] cfg80211: All devices are disconnected, going to
restore regulatory settings
[ 3541.890368] cfg80211: Restoring regulatory settings
[ 3541.890406] cfg80211: Calling CRDA to update world regulatory domain
[ 3541.906994] cfg80211: Ignoring regulatory request Set by core since
the driver uses its own custom regulatory domain
[ 3541.907000] cfg80211: World regulatory domain updated:
[ 3541.907003] cfg80211: (start_freq - end_freq @ bandwidth),
(max_antenna_gain, max_eirp)
[ 3541.907008] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz),
(600 mBi, 2000 mBm)
[ 3541.990694] ieee80211 phy0: device no longer idle - scanning
[ 3545.160488] cfg80211: Found new beacon on frequency: 5805 MHz (Ch
161) on phy0
[ 3545.301274] ieee80211 phy0: device now idle
[ 3545.303904] ieee80211 phy0: device no longer idle - working
[ 3545.306816] wlan8: authenticate with 68:7f:74:3b:b1:0f (try 1)
[ 3545.315795] wlan8: authenticated
[ 3545.315928] ieee80211 phy0: Allocated STA 68:7f:74:3b:b1:0f
[ 3545.315937] ieee80211 phy0: Inserted dummy STA 68:7f:74:3b:b1:0f
[ 3545.316681] ieee80211 phy0: device now idle
[ 3545.316736] ieee80211 phy0: device no longer idle - working
[ 3545.319321] wlan8: associate with 68:7f:74:3b:b1:0f (try 1)
[ 3545.325539] wlan8: RX AssocResp from 68:7f:74:3b:b1:0f (capab=0x411
status=0 aid=2)
[ 3545.325544] wlan8: associated
[ 3545.326821] ieee80211 phy0: Inserted STA 68:7f:74:3b:b1:0f
[ 3545.326826] ieee80211 phy0: WMM queue=2 aci=0 acm=0 aifs=3 cWmin=15
cWmax=1023 txop=0 uapsd=0
[ 3545.326831] ieee80211 phy0: WMM queue=3 aci=1 acm=0 aifs=7 cWmin=15
cWmax=1023 txop=0 uapsd=0
[ 3545.326834] ieee80211 phy0: WMM queue=1 aci=2 acm=0 aifs=2 cWmin=7
cWmax=15 txop=94 uapsd=0
[ 3545.326838] ieee80211 phy0: WMM queue=0 aci=3 acm=0 aifs=2 cWmin=3
cWmax=7 txop=47 uapsd=0
[ 3545.335917] Rx A-MPDU request on tid 0 result 0
[ 3551.260332] Open BA session requested for 68:7f:74:3b:b1:0f tid 0
[ 3551.355065] activated addBA response timer on tid 0
[ 3552.353772] addBA response timer expired on tid 0
[ 3552.353790] Tx BA session stop requested for 68:7f:74:3b:b1:0f tid 0
[ 3552.632503] switched off addBA timer for tid 0
[ 3552.632508] Aggregation is on for tid 0
[ 3552.632653] iwlagn 0000:03:00.0: Tx aggregation enabled on ra =
68:7f:74:3b:b1:0f tid = 0
[ 3552.632800] Stopping Tx BA session for 68:7f:74:3b:b1:0f tid 0
[ 3618.389134] Open BA session requested for 68:7f:74:3b:b1:0f tid 0
[ 3618.389323] activated addBA response timer on tid 0
[ 3618.393331] switched off addBA timer for tid 0
[ 3618.393335] Aggregation is on for tid 0
[ 3618.393477] iwlagn 0000:03:00.0: Tx aggregation enabled on ra =
68:7f:74:3b:b1:0f tid = 0
Then I decided to rmmod iwlagn
[ 3973.371031] Tx BA session stop requested for 68:7f:74:3b:b1:0f tid 0
[ 3973.371147] Rx BA session stop requested for 68:7f:74:3b:b1:0f tid 0
[ 3973.371189] Stopping Tx BA session for 68:7f:74:3b:b1:0f tid 0
[ 3973.371388] wlan8: deauthenticating from 68:7f:74:3b:b1:0f by local
choice (reason=3)
[ 3973.533339] ieee80211 phy0: Removed STA 68:7f:74:3b:b1:0f
[ 3973.533432] ieee80211 phy0: Destroyed STA 68:7f:74:3b:b1:0f
[ 3973.533445] ieee80211 phy0: device now idle
[ 3973.533490] cfg80211: All devices are disconnected, going to
restore regulatory settings
[ 3973.533502] cfg80211: Restoring regulatory settings
[ 3973.533532] cfg80211: Calling CRDA to update world regulatory domain
[ 3973.546604] cfg80211: Ignoring regulatory request Set by core since
the driver uses its own custom regulatory domain
[ 3973.546611] cfg80211: World regulatory domain updated:
[ 3973.546614] cfg80211: (start_freq - end_freq @ bandwidth),
(max_antenna_gain, max_eirp)
[ 3973.546619] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz),
(600 mBi, 2000 mBm)
[ 3975.237526] =============================================================================
[ 3975.237534] BUG iwlagn_dev_cmd: Objects remaining on kmem_cache_close()
[ 3975.237538] -----------------------------------------------------------------------------
[ 3975.237540]
[ 3975.237544] INFO: Slab 0xffffea0002a2bc00 objects=24 used=1
fp=0xffff8800a8af1480 flags=0x100000000004080
[ 3975.237551] Pid: 3118, comm: rmmod Not tainted 3.1.0-rc5-wl+ #21
[ 3975.237554] Call Trace:
[ 3975.237567] [<ffffffff8114dddf>] slab_err+0xaf/0xd0
[ 3975.237574] [<ffffffff8115135b>] ? __kmalloc+0x13b/0x1d0
[ 3975.237580] [<ffffffff81152c00>] kmem_cache_destroy+0x1d0/0x3d0
[ 3975.237592] [<ffffffffa0380767>] iwl_uninit_drv+0x37/0x70 [iwlagn]
[ 3975.237605] [<ffffffffa03aa105>] iwl_remove+0x101/0x11d [iwlagn]
[ 3975.237617] [<ffffffffa03aa14b>] iwl_pci_remove+0x2a/0x6d [iwlagn]
[ 3975.237625] [<ffffffff813024e2>] pci_device_remove+0x52/0x120
[ 3975.237632] [<ffffffff813b178c>] __device_release_driver+0x7c/0xe0
[ 3975.237637] [<ffffffff813b1ed8>] driver_detach+0xc8/0xd0
[ 3975.237642] [<ffffffff813b15e9>] bus_remove_driver+0x79/0xd0
[ 3975.237646] [<ffffffff813b22d2>] driver_unregister+0x62/0xa0
[ 3975.237652] [<ffffffff813025f5>] pci_unregister_driver+0x45/0xc0
[ 3975.237666] [<ffffffffa039b195>]
iwl_pci_unregister_driver+0x15/0x20 [iwlagn]
[ 3975.237678] [<ffffffffa03aa197>] iwl_exit+0x9/0x10 [iwlagn]
[ 3975.237684] [<ffffffff810a193d>] sys_delete_module+0x18d/0x260
[ 3975.237690] [<ffffffff8113445a>] ? do_munmap+0x2da/0x370
[ 3975.237699] [<ffffffff815b0f75>] ? page_fault+0x25/0x30
[ 3975.237705] [<ffffffff815b8982>] system_call_fastpath+0x16/0x1b
[ 3975.237714] INFO: Object 0xffff8800a8af1c30 @offset=7216
[ 3975.237724] INFO: Allocated in iwlagn_tx_skb+0xd6/0x810 [iwlagn]
age=269909 cpu=1 pid=884
[ 3975.237730] __slab_alloc+0x297/0x480
[ 3975.237734] kmem_cache_alloc+0x11f/0x170
[ 3975.237742] iwlagn_tx_skb+0xd6/0x810 [iwlagn]
[ 3975.237749] iwlagn_mac_tx+0x1a/0x30 [iwlagn]
[ 3975.237774] __ieee80211_tx+0x76/0x260 [mac80211]
[ 3975.237792] ieee80211_tx+0x8c/0xb0 [mac80211]
[ 3975.237809] ieee80211_xmit+0xbe/0x1e0 [mac80211]
[ 3975.237827] ieee80211_subif_start_xmit+0x3b1/0x8e0 [mac80211]
[ 3975.237833] dev_hard_start_xmit+0x2a1/0x6b0
[ 3975.237837] sch_direct_xmit+0xee/0x1e0
[ 3975.237841] dev_queue_xmit+0x18f/0x620
[ 3975.237846] packet_sendmsg+0xb26/0xb90
[ 3975.237851] sock_sendmsg+0xef/0x120
[ 3975.237855] sys_sendto+0x13d/0x190
[ 3975.237859] system_call_fastpath+0x16/0x1b
[ 3975.237871] INFO: Freed in iwlagn_rx_reply_tx+0x307/0x770 [iwlagn]
age=269909 cpu=2 pid=0
[ 3975.237877] __slab_free+0x1a7/0x2c0
[ 3975.237881] kmem_cache_free+0xe6/0xf0
[ 3975.237889] iwlagn_rx_reply_tx+0x307/0x770 [iwlagn]
[ 3975.237900] iwl_rx_dispatch+0x11f/0x130 [iwlagn]
[ 3975.237911] iwl_irq_tasklet+0x32c/0x830 [iwlagn]
[ 3975.237915] tasklet_action+0x6c/0x120
[ 3975.237919] __do_softirq+0xad/0x1d0
[ 3975.237924] call_softirq+0x1c/0x30
[ 3975.237929] do_softirq+0x65/0xa0
[ 3975.237932] irq_exit+0x8e/0xb0
[ 3975.237935] do_IRQ+0x66/0xe0
[ 3975.237940] ret_from_intr+0x0/0x15
[ 3975.237945] acpi_idle_enter_c1+0x8d/0xab
[ 3975.237950] cpuidle_idle_call+0xe9/0x1c0
[ 3975.237954] cpu_idle+0xc5/0x100
[ 3975.237958] start_secondary+0x1e0/0x1e7
[ 3975.237983] SLUB iwlagn_dev_cmd: kmem_cache_destroy called for
cache that still has objects.
[ 3975.237988] Pid: 3118, comm: rmmod Not tainted 3.1.0-rc5-wl+ #21
[ 3975.237991] Call Trace:
[ 3975.237997] [<ffffffff81152d9f>] kmem_cache_destroy+0x36f/0x3d0
[ 3975.238006] [<ffffffffa0380767>] iwl_uninit_drv+0x37/0x70 [iwlagn]
[ 3975.238018] [<ffffffffa03aa105>] iwl_remove+0x101/0x11d [iwlagn]
[ 3975.238030] [<ffffffffa03aa14b>] iwl_pci_remove+0x2a/0x6d [iwlagn]
[ 3975.238036] [<ffffffff813024e2>] pci_device_remove+0x52/0x120
[ 3975.238041] [<ffffffff813b178c>] __device_release_driver+0x7c/0xe0
[ 3975.238046] [<ffffffff813b1ed8>] driver_detach+0xc8/0xd0
[ 3975.238051] [<ffffffff813b15e9>] bus_remove_driver+0x79/0xd0
[ 3975.238056] [<ffffffff813b22d2>] driver_unregister+0x62/0xa0
[ 3975.238062] [<ffffffff813025f5>] pci_unregister_driver+0x45/0xc0
[ 3975.238074] [<ffffffffa039b195>]
iwl_pci_unregister_driver+0x15/0x20 [iwlagn]
[ 3975.238086] [<ffffffffa03aa197>] iwl_exit+0x9/0x10 [iwlagn]
[ 3975.238090] [<ffffffff810a193d>] sys_delete_module+0x18d/0x260
[ 3975.238095] [<ffffffff8113445a>] ? do_munmap+0x2da/0x370
[ 3975.238101] [<ffffffff815b0f75>] ? page_fault+0x25/0x30
[ 3975.238106] [<ffffffff815b8982>] system_call_fastpath+0x16/0x1b
[ 3975.239817] iwlagn 0000:03:00.0: PCI INT A disabled
[ 3977.626994] Intel(R) Wireless WiFi Link AGN driver for Linux, in-tree:
[ 3977.626997] Copyright(c) 2003-2011 Intel Corporation
[ 3977.627102] iwlagn 0000:03:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17
[ 3977.627113] iwlagn 0000:03:00.0: setting latency timer to 64
[ 3977.627628] iwlagn 0000:03:00.0: pci_resource_len = 0x00002000
[ 3977.627630] iwlagn 0000:03:00.0: pci_resource_base = ffffc90024518000
[ 3977.627632] iwlagn 0000:03:00.0: HW Revision ID = 0x35
[ 3977.627731] iwlagn 0000:03:00.0: irq 44 for MSI/MSI-X
[ 3977.627782] iwlagn 0000:03:00.0: Detected Intel(R) Centrino(R)
Advanced-N 6200 AGN, REV=0x74
[ 3977.627961] iwlagn 0000:03:00.0: L1 Disabled; Enabling L0S
[ 3977.637141] iwlagn 0000:03:00.0: device EEPROM VER=0x436, CALIB=0x6
[ 3977.637143] iwlagn 0000:03:00.0: Device SKU: 0X1f0
[ 3977.637181] iwlagn 0000:03:00.0: Tunable channels: 13 802.11bg, 24
802.11a channels
[ 3977.645447] iwlagn 0000:03:00.0: loaded firmware version 9.221.4.1
build 25532
[ 3977.646031] Registered led device: phy1-led
[ 3977.646346] cfg80211: Ignoring regulatory request Set by core since
the driver uses its own custom regulatory domain
[ 3977.647668] ieee80211 phy1: Selected rate control algorithm 'iwl-agn-rs'
[ 3977.701067] udev[3239]: renamed network interface wlan0 to wlan8
[ 3977.704796] iwlagn 0000:03:00.0: L1 Disabled; Enabling L0S
[ 3977.704939] iwlagn 0000:03:00.0: Radio type=0x1-0x3-0x1
[ 3977.951352] iwlagn 0000:03:00.0: L1 Disabled; Enabling L0S
[ 3977.951483] iwlagn 0000:03:00.0: Radio type=0x1-0x3-0x1
[ 3978.043624] ieee80211 phy1: device now idle
[ 3978.057693] ADDRCONF(NETDEV_UP): wlan8: link is not ready
[ 3978.123908] ieee80211 phy1: device no longer idle - scanning
^ permalink raw reply
* Re: r8712u driver - on ARM
From: Larry Finger @ 2011-10-01 0:51 UTC (permalink / raw)
To: Christian Lamparter; +Cc: Ian Jeffray, linux-wireless
In-Reply-To: <201109302106.12028.chunkeey@googlemail.com>
On 09/30/2011 02:06 PM, Christian Lamparter wrote:
> On Friday 30 September 2011 20:39:23 Ian Jeffray wrote:
>> On 27/09/2011 17:24, Larry Finger wrote:
>>> On 09/27/2011 10:36 AM, Ian Jeffray wrote:
>>>> Dear all,
>>>>
>>>> I'm attempting to get some sense from a Realtek 8191S device on
>>>> ARM linux.
>> <SNIP>
>>>> My host is a TI DaVinci DM8168 (OMAP3+toys). The USB host is not
>>>> fantastic, but has been thrashed heavily with other devices and seems
>>>> to be reliable in those cases.
>> <SNIP>
>>>
>>> I have not tried this chip on an ARM host as I have no hardware. My
>>> testing has been with X86 and PPC - thus I know the endianess is OK, but
>>> that is the extent of my platform testing.
>>>
>>> The first thing I would try is wireshark on another host to verify that
>>> packets are actually getting on the air.
>>
>> Ok, so I've spent more more days working on this. The driver appears
>> to be fine on an ARM9 S3X board. I've contacted the TI support
>> team about the USB host and applied some patches from them which have
>> slightly improved the situation, but it's still horrible - I'm actually
>> getting "reliable" scans but only a pathetic 1Mbit or less of data
>> throughput.
>>
>> I've also tried this driver (and the realtek upstream version) with
>> a Blackfin BF527 device, which has roughly the same 'musb' Inventra
>> USB host controller... and I see exactly the same problem there!
>> The firmware appears to load fine, but scans produce no results.
>>
>> I'm not really sure about your comment about wireshark because,
>> as far as I understand, a 'iwlist wlan0 scan' command doesn't cause
>> any traffic which would be wireshark capturable on another host...
>> am I misunderstanding something?
@Ian: If iwlist scan is run as root, an active scan is done. If run as an
unprivileged user, then a passive scan is done. With the former, we would see an
outgoing probe packet on each channel.
>> So it appears as though there may be some general problem with this
>> driver and an 'musb' host controller. Very strange.
>>
>> My next course of attack is to try comparing outputs of 'usbmon'
>> dumps between hosts which work and hosts which don't... but I can't
>> make a great deal of sense looking at them really.
>>
>> I'd greatly appreciate any more advice you may be able to give.
>
> Well, I'm not really in r8712u but I can tell you a few things about
> carl9170 and musb.
>
> You see I had a similar discussion a while ago:
> http://www.spinics.net/lists/linux-wireless/msg68870.html
>
> Apparently, musb can't do DMA with non 4-bytes aligned buffers
> and falls back to PIO [which results in a much higher cpu utilization
> and really bad usb throughput... so if timing is critical this "fact"
> is pretty much a deal-breaker for the combination].
>
> Now, you might ask, why this DMA vs. PIO is so importent... Well,
> it's because the network stack has its own alignment ideas and
> about the data/skbs. There's a comment in include/linux/skbuff.h
> around line 1400 which explains the situation. The upshot is you
> can choose between a penatly on the packet processing by the
> stack, or a penatly on the driver/hardware site if r8712u does
> not implement any additional techniques to counter the issues.
@Christian: Thanks for the pointer on the penalty associated with unaligned DMA
on ARM. I'll prepare a patch to see if using the skb_reserve() call hurts x86 or
PPC performance. If it does not, then the patch can be used for all architectures.
Larry
^ 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