* Re: FUSB200 xhci issue
From: Oleksij Rempel @ 2013-07-28 5:50 UTC (permalink / raw)
To: Christian Lamparter; +Cc: linux-wireless
In-Reply-To: <5176750.ryksn4nuMW@blech>
Am 27.07.2013 23:59, schrieb Christian Lamparter:
> On Wednesday, July 24, 2013 12:37:55 PM Oleksij Rempel wrote:
>> Am 23.07.2013 20:26, schrieb Christian Lamparter:
>>> On Tuesday, July 23, 2013 06:59:46 AM Oleksij Rempel wrote:
>>>> Am 22.07.2013 23:23, schrieb Christian Lamparter:
>>>>> On Monday, July 22, 2013 10:47:41 PM Oleksij Rempel wrote:
>>>>>> Am 22.07.2013 21:54, schrieb Christian Lamparter:
>>>>>>> Hello!
>>>>>>>
>>>>>>> On Monday, July 22, 2013 05:21:54 PM Oleksij Rempel wrote:
>>>>>>>> i'm one of ath9k_htc devs. Currently i'm working on usb_suspend issue of
>>>>>>>> this adapters. Looks like ar9271 and ar7010 have FUSB200, and i
>>>>>>>> accidentally discovered that 9170 have it too. Are there any issue with
>>>>>>>> usb-suspend + xhci controllers by you? Did you some how specially
>>>>>>>> handled it?
>>>>>>>
>>>>>>> No, I haven't heard any complains about xhci + suspend. In fact,
>>>>>>> it's working fine with the NEC xhci I have. I also have a AR9271
>>>>>>> and AR7010, so if you want I could try if they survive a suspend
>>>>>>> +resume cycle when attached.
>>>>>>>
>>>>>>> But, I do have a bug-report from someone else who has/had? problems
>>>>>>> with carl9170 and xhci. If you want, you can get the details from:
>>>>>>> "carl9170 A-MPDU transmit problem":
>>>>>>> <http://comments.gmane.org/gmane.linux.kernel.wireless.general/104597>
>>>>>>>
>>>>>>> The likely cause is related to Intel's xhci silicon (Ivy Bridge is
>>>>>>> affected, but I don't know about Haswell):
>>>>>>> <http://permalink.gmane.org/gmane.linux.kernel.wireless.general/104602>
>>>>>>
>>>>>> Same situation is here - i have problem on Ivy Bridge.
>>>>> (Note: I don't have any Ivy Bridge system. Just Sandy Bridge
>>>>> and AMD's new A6-1450 Temash and both xhci work. So I can't
>>>>> do any proper comparisons like you.)
>>>>>
>>>>>> Steps to reproduce:
>>>>>> - plug adapter. Module and firmware will be loaded
>>>>>> - make sure usb autosupend is enabled. By default it is not! Use
>>>>>> powertop or directly sysfs to enable autosuspend for this device
>>>>>> - rmmod .... and wait some seconds until adapter is suspended and then
>>>>>> modprobe ath9k_htc
>>>>
>>>>>> first packet which is bigger as 64Byte will kill EP4 FIFO. Size register
>>>>>> will report wrong size.. bigger as FIFO can handle. And only first ~40
>>>>>> readet bytes will be actually OK.. all the rest of packet will be trashed.
>>>>>
>>>>> This is what happens with a WN721 (ar9271):
>>>>>
>>>>> [17619.597905] usbcore: deregistering interface driver ath9k_htc
>>>>> [17619.679549] usb 2-2: ath9k_htc: USB layer deinitialized
>>>>> [17619.679602] ath9k_htc: Driver unloaded
>>>>> <suspend>
>>>>>
>>>>> <resume>
>>>>> [17667.543024] usb 2-2: reset high-speed USB device number 3 using xhci_hcd <----
>>>>> [17667.572168] xhci_hcd 0000:19:00.0: xHCI xhci_drop_endpoint called with disabled ep ffff88031aa77600
>>>>> [17667.572174] xhci_hcd 0000:19:00.0: xHCI xhci_drop_endpoint called with disabled ep ffff88031aa77640
>>>>> [17667.572177] xhci_hcd 0000:19:00.0: xHCI xhci_drop_endpoint called with disabled ep ffff88031aa77680
>>>>> [17667.572180] xhci_hcd 0000:19:00.0: xHCI xhci_drop_endpoint called with disabled ep ffff88031aa776c0
>>>>> [17667.572183] xhci_hcd 0000:19:00.0: xHCI xhci_drop_endpoint called with disabled ep ffff88031aa77700
>>>>> [17667.572185] xhci_hcd 0000:19:00.0: xHCI xhci_drop_endpoint called with disabled ep ffff88031aa77740
>>>>> [17667.573826] usb 2-2: ath9k_htc: Firmware htc_9271.fw requested
>>>>> [17667.573873] usbcore: registered new interface driver ath9k_htc
>>>>> [17668.038200] usb 2-2: ath9k_htc: Transferred FW: htc_9271.fw, size: 51272
>>>>> [17668.273249] ath9k_htc 2-2:1.0: ath9k_htc: HTC initialized with 33 credits
>>>>>
>>>>> The driver loads, but there's no "wlanX" interface, no phyX interface
>>>>> and the driver can't be unloaded due to "Error: Module ath9k_htc is in use".
>>>>
>>>> So, it is exactly this bug.
>>>> After firmware was loaded ath9k trying to set some registers. Since
>>>> command buffer is trashed it will write some nonsense to registers and
>>>> some times in wrong to wrong addresses. I have some patches to do crc
>>>> check of commands, to easy detect corrupted ones.
>>>>
>>>> You reproduced it on NEC xhci? Is it possible to reproduce it in
>>>> carl9170?
>>>
>>> Ok: That's dmesg of your scenario:
>>>
>>> [ 809.995966] usbcore: deregistering interface driver carl9170
>>> <suspend>
>>>
>>> <resume>
>>> [ 826.365596] usb 2-2: reset high-speed USB device number 2 using xhci_hcd
>>> [ 826.431154] xhci_hcd 0000:19:00.0: xHCI xhci_drop_endpoint called with disabled ep ffff88045af2b900
>>> [ 826.431159] xhci_hcd 0000:19:00.0: xHCI xhci_drop_endpoint called with disabled ep ffff88045af2b940
>>> [ 826.431162] xhci_hcd 0000:19:00.0: xHCI xhci_drop_endpoint called with disabled ep ffff88045af2b980
>>> [ 826.431164] xhci_hcd 0000:19:00.0: xHCI xhci_drop_endpoint called with disabled ep ffff88045af2b9c0
>>> [ 826.432257] usbcore: registered new interface driver carl9170
>>> [ 826.433717] usb 2-2: driver API: 1.9.8 2013-03-23 [1-1]
>>> ...
>>> [ 826.816110] usb 2-2: Atheros AR9170 is registered as 'phy3'
>>>
>>> carl9170 is able to recover and the stick is working after autosuspend cycle.
>>
>> Thank you for your tests. USB configuration and handlers look similar on
>> this two firmwares. May be problem is not in FUSB200 and it is clock
>> related issue so carl9170 do not need reset. - I don't know :(
>>
>> Can you please test this branch:
>> https://github.com/olerem/open-ath9k-htc-firmware/commits/next
>> There is a workaround to reset adapter, right after this bug is
>> detected. It is really dirty hack, but currently i do not know how to
>> fix this bug on xhci or on ath9k-htc side.
>>
> Is it still Saturday?
>
> Anyway, I tried the -next branch.
>
> commit dbbb809d592dde0b3c9ecb97b3b387ff8e40e799
> Author: Oleksij Rempel <linux@rempel-privat.de>
> Date: Wed Jul 24 10:26:18 2013 +0200
>
> k2_fw_usb_api: workaround for EP4 bug.
>
> but still, the device won't show up after autosuspend.
Hm... firmware probably didn't rebooted before suspend. Did interface
was up, before autosuspend? If no, you need latest wireles-testing -
there are patches to handle this issue. Or just make "ifconfig wlan1 up"
before rmmod.
If it was up... then i would need last log messages from firmware.. If
there is some way to attach to uart pins on it.
--
Regards,
Oleksij
^ permalink raw reply
* (no subject)
From: piuvatsa @ 2013-07-28 14:21 UTC (permalink / raw)
To: linux-wireless
i am using debian 7.1 whezzy but there is a problem in the wi-fi blooth
is working but wi-fi is not showing it may be due to driver problem. I
am a Dell xps user plz help me to solve out this problem
^ permalink raw reply
* Re:
From: Tomas Pospisek @ 2013-07-28 9:49 UTC (permalink / raw)
To: linux-wireless
In-Reply-To: <1375021308.7557.3.camel@piu-xps>
Am 28.07.2013 16:21, schrieb piuvatsa:
> i am using debian 7.1 whezzy but there is a problem in the wi-fi blooth
> is working but wi-fi is not showing it may be due to driver problem. I
> am a Dell xps user plz help me to solve out this problem
You may want to have a look at these:
http://catb.org/~esr/faqs/smart-questions.html#writewell
http://catb.org/~esr/faqs/smart-questions.html#beprecise
*t
^ permalink raw reply
* [PATCH 3.11] rt2x00: fix stop queue
From: stf_xl @ 2013-07-28 11:17 UTC (permalink / raw)
To: linux-wireless; +Cc: users, Stanislaw Gruszka
From: Stanislaw Gruszka <stf_xl@wp.pl>
Since we clear QUEUE_STARTED in rt2x00queue_stop_queue(), following
call to rt2x00queue_pause_queue() reduce to noop, i.e we do not
stop queue in mac80211.
To fix that introduce rt2x00queue_pause_queue_nocheck() function,
which will stop queue in mac80211 directly.
Note that rt2x00_start_queue() explicitly set QUEUE_PAUSED bit.
Note also that reordering operations i.e. first call to
rt2x00queue_pause_queue() and then clear QUEUE_STARTED bit, will race
with rt2x00queue_unpause_queue(), so calling ieee80211_stop_queue()
directly is the only available solution to fix the problem without
major rework.
Cc: stable@vger.kernel.org
Signed-off-by: Stanislaw Gruszka <stf_xl@wp.pl>
---
drivers/net/wireless/rt2x00/rt2x00queue.c | 18 +++++++++++-------
1 files changed, 11 insertions(+), 7 deletions(-)
diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.c b/drivers/net/wireless/rt2x00/rt2x00queue.c
index e571298..8c1de0f 100644
--- a/drivers/net/wireless/rt2x00/rt2x00queue.c
+++ b/drivers/net/wireless/rt2x00/rt2x00queue.c
@@ -936,13 +936,8 @@ void rt2x00queue_index_inc(struct queue_entry *entry, enum queue_index index)
spin_unlock_irqrestore(&queue->index_lock, irqflags);
}
-void rt2x00queue_pause_queue(struct data_queue *queue)
+void rt2x00queue_pause_queue_nocheck(struct data_queue *queue)
{
- if (!test_bit(DEVICE_STATE_PRESENT, &queue->rt2x00dev->flags) ||
- !test_bit(QUEUE_STARTED, &queue->flags) ||
- test_and_set_bit(QUEUE_PAUSED, &queue->flags))
- return;
-
switch (queue->qid) {
case QID_AC_VO:
case QID_AC_VI:
@@ -958,6 +953,15 @@ void rt2x00queue_pause_queue(struct data_queue *queue)
break;
}
}
+void rt2x00queue_pause_queue(struct data_queue *queue)
+{
+ if (!test_bit(DEVICE_STATE_PRESENT, &queue->rt2x00dev->flags) ||
+ !test_bit(QUEUE_STARTED, &queue->flags) ||
+ test_and_set_bit(QUEUE_PAUSED, &queue->flags))
+ return;
+
+ rt2x00queue_pause_queue_nocheck(queue);
+}
EXPORT_SYMBOL_GPL(rt2x00queue_pause_queue);
void rt2x00queue_unpause_queue(struct data_queue *queue)
@@ -1019,7 +1023,7 @@ void rt2x00queue_stop_queue(struct data_queue *queue)
return;
}
- rt2x00queue_pause_queue(queue);
+ rt2x00queue_pause_queue_nocheck(queue);
queue->rt2x00dev->ops->lib->stop_queue(queue);
--
1.7.4.4
^ permalink raw reply related
* Re: FUSB200 xhci issue
From: Christian Lamparter @ 2013-07-28 11:38 UTC (permalink / raw)
To: Oleksij Rempel; +Cc: linux-wireless
In-Reply-To: <51F4B128.3010901@rempel-privat.de>
On Sunday 28 July 2013 07:50:32 Oleksij Rempel wrote:
> Am 27.07.2013 23:59, schrieb Christian Lamparter:
> > On Wednesday, July 24, 2013 12:37:55 PM Oleksij Rempel wrote:
> >> Am 23.07.2013 20:26, schrieb Christian Lamparter:
> >>> On Tuesday, July 23, 2013 06:59:46 AM Oleksij Rempel wrote:
> >>>> Am 22.07.2013 23:23, schrieb Christian Lamparter:
> >>>>> On Monday, July 22, 2013 10:47:41 PM Oleksij Rempel wrote:
> >>>>>> Am 22.07.2013 21:54, schrieb Christian Lamparter:
> >>>>>>> Hello!
> >>>>>>>
> >>>>>>> On Monday, July 22, 2013 05:21:54 PM Oleksij Rempel wrote:
> >>>>>>>> i'm one of ath9k_htc devs. Currently i'm working on usb_suspend issue of
> >>>>>>>> this adapters. Looks like ar9271 and ar7010 have FUSB200, and i
> >>>>>>>> accidentally discovered that 9170 have it too. Are there any issue with
> >>>>>>>> usb-suspend + xhci controllers by you? Did you some how specially
> >>>>>>>> handled it?
> >>>>>>>
> >>>>>>> No, I haven't heard any complains about xhci + suspend. In fact,
> >>>>>>> it's working fine with the NEC xhci I have. I also have a AR9271
> >>>>>>> and AR7010, so if you want I could try if they survive a suspend
> >>>>>>> +resume cycle when attached.
> >>>>>>>
> >>>>>>> But, I do have a bug-report from someone else who has/had? problems
> >>>>>>> with carl9170 and xhci. If you want, you can get the details from:
> >>>>>>> "carl9170 A-MPDU transmit problem":
> >>>>>>> <http://comments.gmane.org/gmane.linux.kernel.wireless.general/104597>
> >>>>>>>
> >>>>>>> The likely cause is related to Intel's xhci silicon (Ivy Bridge is
> >>>>>>> affected, but I don't know about Haswell):
> >>>>>>> <http://permalink.gmane.org/gmane.linux.kernel.wireless.general/104602>
> >>>>>>
> >>>>>> Same situation is here - i have problem on Ivy Bridge.
> >>>>> (Note: I don't have any Ivy Bridge system. Just Sandy Bridge
> >>>>> and AMD's new A6-1450 Temash and both xhci work. So I can't
> >>>>> do any proper comparisons like you.)
> >>>>>
> >>>>>> Steps to reproduce:
> >>>>>> - plug adapter. Module and firmware will be loaded
> >>>>>> - make sure usb autosupend is enabled. By default it is not! Use
> >>>>>> powertop or directly sysfs to enable autosuspend for this device
> >>>>>> - rmmod .... and wait some seconds until adapter is suspended and then
> >>>>>> modprobe ath9k_htc
> >>>>
> >>>>>> first packet which is bigger as 64Byte will kill EP4 FIFO. Size register
> >>>>>> will report wrong size.. bigger as FIFO can handle. And only first ~40
> >>>>>> readet bytes will be actually OK.. all the rest of packet will be trashed.
> >>>>>
> >>>>> This is what happens with a WN721 (ar9271):
> >>>>>
> >>>>> [17619.597905] usbcore: deregistering interface driver ath9k_htc
> >>>>> [17619.679549] usb 2-2: ath9k_htc: USB layer deinitialized
> >>>>> [17619.679602] ath9k_htc: Driver unloaded
> >>>>> <suspend>
> >>>>>
> >>>>> <resume>
> >>>>> [17667.543024] usb 2-2: reset high-speed USB device number 3 using xhci_hcd <----
> >>>>> [17667.572168] xhci_hcd 0000:19:00.0: xHCI xhci_drop_endpoint called with disabled ep ffff88031aa77600
> >>>>> [17667.572174] xhci_hcd 0000:19:00.0: xHCI xhci_drop_endpoint called with disabled ep ffff88031aa77640
> >>>>> [17667.572177] xhci_hcd 0000:19:00.0: xHCI xhci_drop_endpoint called with disabled ep ffff88031aa77680
> >>>>> [17667.572180] xhci_hcd 0000:19:00.0: xHCI xhci_drop_endpoint called with disabled ep ffff88031aa776c0
> >>>>> [17667.572183] xhci_hcd 0000:19:00.0: xHCI xhci_drop_endpoint called with disabled ep ffff88031aa77700
> >>>>> [17667.572185] xhci_hcd 0000:19:00.0: xHCI xhci_drop_endpoint called with disabled ep ffff88031aa77740
> >>>>> [17667.573826] usb 2-2: ath9k_htc: Firmware htc_9271.fw requested
> >>>>> [17667.573873] usbcore: registered new interface driver ath9k_htc
> >>>>> [17668.038200] usb 2-2: ath9k_htc: Transferred FW: htc_9271.fw, size: 51272
> >>>>> [17668.273249] ath9k_htc 2-2:1.0: ath9k_htc: HTC initialized with 33 credits
> >>>>>
> >>>>> The driver loads, but there's no "wlanX" interface, no phyX interface
> >>>>> and the driver can't be unloaded due to "Error: Module ath9k_htc is in use".
> >>>>
> >>>> So, it is exactly this bug.
> >>>> After firmware was loaded ath9k trying to set some registers. Since
> >>>> command buffer is trashed it will write some nonsense to registers and
> >>>> some times in wrong to wrong addresses. I have some patches to do crc
> >>>> check of commands, to easy detect corrupted ones.
> >>>>
> >>>> You reproduced it on NEC xhci? Is it possible to reproduce it in
> >>>> carl9170?
> >>>
> >>> Ok: That's dmesg of your scenario:
> >>>
> >>> [ 809.995966] usbcore: deregistering interface driver carl9170
> >>> <suspend>
> >>>
> >>> <resume>
> >>> [ 826.365596] usb 2-2: reset high-speed USB device number 2 using xhci_hcd
> >>> [ 826.431154] xhci_hcd 0000:19:00.0: xHCI xhci_drop_endpoint called with disabled ep ffff88045af2b900
> >>> [ 826.431159] xhci_hcd 0000:19:00.0: xHCI xhci_drop_endpoint called with disabled ep ffff88045af2b940
> >>> [ 826.431162] xhci_hcd 0000:19:00.0: xHCI xhci_drop_endpoint called with disabled ep ffff88045af2b980
> >>> [ 826.431164] xhci_hcd 0000:19:00.0: xHCI xhci_drop_endpoint called with disabled ep ffff88045af2b9c0
> >>> [ 826.432257] usbcore: registered new interface driver carl9170
> >>> [ 826.433717] usb 2-2: driver API: 1.9.8 2013-03-23 [1-1]
> >>> ...
> >>> [ 826.816110] usb 2-2: Atheros AR9170 is registered as 'phy3'
> >>>
> >>> carl9170 is able to recover and the stick is working after autosuspend cycle.
> >>
> >> Thank you for your tests. USB configuration and handlers look similar on
> >> this two firmwares. May be problem is not in FUSB200 and it is clock
> >> related issue so carl9170 do not need reset. - I don't know :(
> >>
> >> Can you please test this branch:
> >> https://github.com/olerem/open-ath9k-htc-firmware/commits/next
> >> There is a workaround to reset adapter, right after this bug is
> >> detected. It is really dirty hack, but currently i do not know how to
> >> fix this bug on xhci or on ath9k-htc side.
> >>
> > Is it still Saturday?
> >
> > Anyway, I tried the -next branch.
> >
> > commit dbbb809d592dde0b3c9ecb97b3b387ff8e40e799
> > Author: Oleksij Rempel <linux@rempel-privat.de>
> > Date: Wed Jul 24 10:26:18 2013 +0200
> >
> > k2_fw_usb_api: workaround for EP4 bug.
> >
> > but still, the device won't show up after autosuspend.
>
> Hm... firmware probably didn't rebooted before suspend. Did interface
> was up, before autosuspend? If no, you need latest wireles-testing -
> there are patches to handle this issue. Or just make "ifconfig wlan1 up"
> before rmmod.
Oh, I it was on the latest wireless-testing. (And the "ath9k_htc" module
had the patch "ath9k_htc: reboot firmwware if it was loaded").
Furthermore, I did the same test with one of the ehci-only ports
and it worked. Both, devices (one had a AR7015, the other a AR9271)
came back after autosuspend there.
> then i would need last log messages from firmware.. If there is
> some way to attach to uart pins on it.
Sorry, I can't really help you there as I don't have the
necessary tools. But I would be happy to test patches.
Regards,
Chr
^ permalink raw reply
* Re: FUSB200 xhci issue
From: Oleksij Rempel @ 2013-07-28 12:12 UTC (permalink / raw)
To: Christian Lamparter
Cc: linux-wireless, Sarah Sharp, USB list, Seth Forshee, ath9k_htc_fw
In-Reply-To: <201307281338.39157.chunkeey@googlemail.com>
Am 28.07.2013 13:38, schrieb Christian Lamparter:
>>>
>>> Anyway, I tried the -next branch.
>>>
>>> commit dbbb809d592dde0b3c9ecb97b3b387ff8e40e799
>>> Author: Oleksij Rempel <linux@rempel-privat.de>
>>> Date: Wed Jul 24 10:26:18 2013 +0200
>>>
>>> k2_fw_usb_api: workaround for EP4 bug.
>>>
>>> but still, the device won't show up after autosuspend.
>>
>> Hm... firmware probably didn't rebooted before suspend. Did interface
>> was up, before autosuspend? If no, you need latest wireles-testing -
>> there are patches to handle this issue. Or just make "ifconfig wlan1 up"
>> before rmmod.
> Oh, I it was on the latest wireless-testing. (And the "ath9k_htc" module
> had the patch "ath9k_htc: reboot firmwware if it was loaded").
>
> Furthermore, I did the same test with one of the ehci-only ports
> and it worked. Both, devices (one had a AR7015, the other a AR9271)
> came back after autosuspend there.
Grrr... so it brings us back to xhci issue. Even EP4 workaround wont
work here :( Suddenly i have no more ideas.
Sarah, it's your turn now.
--
Regards,
Oleksij
^ permalink raw reply
* Re: FUSB200 xhci issue
From: Oleksij Rempel @ 2013-07-28 14:28 UTC (permalink / raw)
To: Christian Lamparter
Cc: Sarah Sharp, Seth Forshee, ath9k_htc_fw, USB list, linux-wireless
In-Reply-To: <51F50AB7.3030204@rempel-privat.de>
Am 28.07.2013 14:12, schrieb Oleksij Rempel:
> Am 28.07.2013 13:38, schrieb Christian Lamparter:
>
>>>>
>>>> Anyway, I tried the -next branch.
>>>>
>>>> commit dbbb809d592dde0b3c9ecb97b3b387ff8e40e799
>>>> Author: Oleksij Rempel <linux@rempel-privat.de>
>>>> Date: Wed Jul 24 10:26:18 2013 +0200
>>>>
>>>> k2_fw_usb_api: workaround for EP4 bug.
>>>>
>>>> but still, the device won't show up after autosuspend.
>>>
>>> Hm... firmware probably didn't rebooted before suspend. Did interface
>>> was up, before autosuspend? If no, you need latest wireles-testing -
>>> there are patches to handle this issue. Or just make "ifconfig wlan1 up"
>>> before rmmod.
>> Oh, I it was on the latest wireless-testing. (And the "ath9k_htc" module
>> had the patch "ath9k_htc: reboot firmwware if it was loaded").
>>
>> Furthermore, I did the same test with one of the ehci-only ports
>> and it worked. Both, devices (one had a AR7015, the other a AR9271)
>> came back after autosuspend there.
>
> Grrr... so it brings us back to xhci issue. Even EP4 workaround wont
> work here :( Suddenly i have no more ideas.
>
> Sarah, it's your turn now.
Christian,
can you please provide some more info about your xhci controller. I'll
try to get me same.
--
Regards,
Oleksij
^ permalink raw reply
* Re: unable to unblock Bluetooth
From: Pat Erley @ 2013-07-28 18:57 UTC (permalink / raw)
To: Tomas Pospisek; +Cc: linux-wireless
In-Reply-To: <51F3CEF7.4030200@sourcepole.ch>
On 07/27/2013 09:45 AM, Tomas Pospisek wrote:
> Hello
>
> I am not able to unblock Bluetooth:
>
> # rfkill unblock all
> # rfkill list 4
> 4: hp-bluetooth: Bluetooth
> Soft blocked: yes
> Hard blocked: no
>
> The Bluetooth layer remains "Soft blocked".
>
> My system looks like this:
>
> - Linux: 3.11-rc1
> - Userspace: Debian wheezy
> - rfkill: 0.5
> - HW: HP dv7 6130ez
> - Bluetooth probably provided by:
> # lspci
> ...
> 0d:00.0 Network controller: Ralink corp. RT5390
> [802.11 b/g/n 1T1R G-band PCI Express Single Chip]
>
> Kernel logs show no trace of a problem:
>
> Bluetooth: Core ver 2.16
> Bluetooth: HCI device and connection manager initialized
> Bluetooth: HCI socket layer initialized
> Bluetooth: L2CAP socket layer initialized
> Bluetooth: SCO socket layer initialized
> Bluetooth: RFCOMM TTY layer initialized
> Bluetooth: RFCOMM socket layer initialized
> Bluetooth: RFCOMM ver 1.11
> Bluetooth: BNEP (Ethernet Emulation) ver 1.3
> Bluetooth: BNEP filters: protocol multicast
> Bluetooth: BNEP socket layer initialized
>
> I had to provide some firware in order for the Bluetooth device to show
> up in rfkill. I copied those firmware blobs over from Debian's
> "firmware-ralink" package. It must be one of these:
>
> rt2661.bin
> rtl_nic
> rtl_nic/rtl8168f-1.fw
> rtl_nic/rtl8168e-1.fw
> rtl_nic/rtl8168f-2.fw
> rtl_nic/rtl8168e-3.fw
> rtl_nic/rtl8168d-2.fw
> rtl_nic/rtl8168e-2.fw
> rtl_nic/rtl8105e-1.fw
> rtl_nic/rtl8168d-1.fw
> RTL8192SU
> RTL8192SU/rtl8192sfw.bin
> rt2561.bin
> rt2870.bin
> rt2860.bin
> rt73.bin
> rt3070.bin
> rtlwifi
> rtlwifi/rtl8192cufw.bin
> rtlwifi/rtl8192cfwU.bin
> rtlwifi/rtl8192cfw.bin
> rtlwifi/rtl8192cfwU_B.bin
> rtlwifi/rtl8192sefw.bin
> rtlwifi/rtl8192defw.bin
> rtlwifi/rtl8712u.bin
> rt3071.bin
> rt3090.bin
> rt2561s.bin
> RTL8192E
> RTL8192E/main.img
> RTL8192E/boot.img
> RTL8192E/data.img
>
> Additional possibly useful info:
>
> # lsmod |grep blue
> bluetooth 169854 10 bnep,rfcomm
> rfkill 19242 6 cfg80211,hp_wmi,bluetooth
> crc16 12343 2 ext4,bluetooth
>
> What can I do to unblock the Bluetooth?
>
> Thank you,
> *t
lsusb might be useful here too. hp_wmi hooked into rfkill might mean
that hp-wmi is setting that soft block. Perhaps you have a keyboard
combo to unblock it?
Pat Erley
^ permalink raw reply
* Re: FUSB200 xhci issue
From: Christian Lamparter @ 2013-07-28 20:41 UTC (permalink / raw)
To: Oleksij Rempel
Cc: Sarah Sharp, Seth Forshee, ath9k_htc_fw, USB list, linux-wireless
In-Reply-To: <51F52A89.4050506@rempel-privat.de>
On Sunday, July 28, 2013 04:28:25 PM Oleksij Rempel wrote:
> Am 28.07.2013 14:12, schrieb Oleksij Rempel:
> > Am 28.07.2013 13:38, schrieb Christian Lamparter:
> >
> >>>>
> >>>> Anyway, I tried the -next branch.
> >>>>
> >>>> commit dbbb809d592dde0b3c9ecb97b3b387ff8e40e799
> >>>> Author: Oleksij Rempel <linux@rempel-privat.de>
> >>>> Date: Wed Jul 24 10:26:18 2013 +0200
> >>>>
> >>>> k2_fw_usb_api: workaround for EP4 bug.
> >>>>
> >>>> but still, the device won't show up after autosuspend.
> >>>
> >>> Hm... firmware probably didn't rebooted before suspend. Did interface
> >>> was up, before autosuspend? If no, you need latest wireles-testing -
> >>> there are patches to handle this issue. Or just make "ifconfig wlan1 up"
> >>> before rmmod.
> >> Oh, I it was on the latest wireless-testing. (And the "ath9k_htc" module
> >> had the patch "ath9k_htc: reboot firmwware if it was loaded").
> >>
> >> Furthermore, I did the same test with one of the ehci-only ports
> >> and it worked. Both, devices (one had a AR7015, the other a AR9271)
> >> came back after autosuspend there.
> >
> > Grrr... so it brings us back to xhci issue. Even EP4 workaround wont
> > work here :( Suddenly i have no more ideas.
> >
> > Sarah, it's your turn now.
>
> Christian,
> can you please provide some more info about your xhci controller. I'll
> try to get me same.
Well, it's a laptop (HP DV6-6003EG). I recon that getting 100% the
same setup will be difficult. However, since the uPD720200 was/is
very popular, it should be very easy to find one. [It's probably
on all of these "10 euro usb-3.0 pcie-adapters". So as long as you
got a free 1x-pcie port you should be good.]
Here's the lspci summary:
19:00.0 USB controller [0c03]: NEC Corporation uPD720200 USB 3.0 Host Controller [1033:0194] (rev 04) (prog-if 30 [XHCI])
Subsystem: Hewlett-Packard Company Device [103c:1657]
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 19
Region 0: Memory at d3400000 (64-bit, non-prefetchable) [size=8K]
Capabilities: <access denied>
Kernel driver in use: xhci_hcd
Regards,
Chr
^ permalink raw reply
* Re: unable to unblock Bluetooth
From: Tomas Pospisek @ 2013-07-28 21:01 UTC (permalink / raw)
To: linux-wireless
In-Reply-To: <51F569A6.5090800@erley.org>
Am 28.07.2013 20:57, schrieb Pat Erley:
> On 07/27/2013 09:45 AM, Tomas Pospisek wrote:
>> Hello
>>
>> I am not able to unblock Bluetooth:
>>
>> # rfkill unblock all
>> # rfkill list 4
>> 4: hp-bluetooth: Bluetooth
>> Soft blocked: yes
>> Hard blocked: no
>>
>> The Bluetooth layer remains "Soft blocked".
>>
>> My system looks like this:
>>
>> - Linux: 3.11-rc1
>> - Userspace: Debian wheezy
>> - rfkill: 0.5
>> - HW: HP dv7 6130ez
>> - Bluetooth probably provided by:
>> # lspci
>> ...
>> 0d:00.0 Network controller: Ralink corp. RT5390
>> [802.11 b/g/n 1T1R G-band PCI Express Single Chip]
>>
>> Kernel logs show no trace of a problem:
>>
>> Bluetooth: Core ver 2.16
>> Bluetooth: HCI device and connection manager initialized
>> Bluetooth: HCI socket layer initialized
>> Bluetooth: L2CAP socket layer initialized
>> Bluetooth: SCO socket layer initialized
>> Bluetooth: RFCOMM TTY layer initialized
>> Bluetooth: RFCOMM socket layer initialized
>> Bluetooth: RFCOMM ver 1.11
>> Bluetooth: BNEP (Ethernet Emulation) ver 1.3
>> Bluetooth: BNEP filters: protocol multicast
>> Bluetooth: BNEP socket layer initialized
>>
>> I had to provide some firware in order for the Bluetooth device to show
>> up in rfkill. I copied those firmware blobs over from Debian's
>> "firmware-ralink" package. It must be one of these:
>>
>> rt2661.bin
>> rtl_nic
>> rtl_nic/rtl8168f-1.fw
>> rtl_nic/rtl8168e-1.fw
>> rtl_nic/rtl8168f-2.fw
>> rtl_nic/rtl8168e-3.fw
>> rtl_nic/rtl8168d-2.fw
>> rtl_nic/rtl8168e-2.fw
>> rtl_nic/rtl8105e-1.fw
>> rtl_nic/rtl8168d-1.fw
>> RTL8192SU
>> RTL8192SU/rtl8192sfw.bin
>> rt2561.bin
>> rt2870.bin
>> rt2860.bin
>> rt73.bin
>> rt3070.bin
>> rtlwifi
>> rtlwifi/rtl8192cufw.bin
>> rtlwifi/rtl8192cfwU.bin
>> rtlwifi/rtl8192cfw.bin
>> rtlwifi/rtl8192cfwU_B.bin
>> rtlwifi/rtl8192sefw.bin
>> rtlwifi/rtl8192defw.bin
>> rtlwifi/rtl8712u.bin
>> rt3071.bin
>> rt3090.bin
>> rt2561s.bin
>> RTL8192E
>> RTL8192E/main.img
>> RTL8192E/boot.img
>> RTL8192E/data.img
>>
>> Additional possibly useful info:
>>
>> # lsmod |grep blue
>> bluetooth 169854 10 bnep,rfcomm
>> rfkill 19242 6 cfg80211,hp_wmi,bluetooth
>> crc16 12343 2 ext4,bluetooth
>>
>> What can I do to unblock the Bluetooth?
>
> lsusb might be useful here too. hp_wmi hooked into rfkill might mean
> that hp-wmi is setting that soft block. Perhaps you have a keyboard
> combo to unblock it?
Thanks Pat, there's only the "lighthouse" button, that I'm interpreting
as wifi on/off button. Other than that there doesn't seem to be any
"bluetooth" or related button.
As for:
# lsusb
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 004 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 138a:0018 Validity Sensors, Inc.
Bus 001 Device 004: ID 064e:e258 Suyin Corp.
"Validity Sensors" seems to be the fingerprint reader and "Suyin Corp."
seems to be the laptop camera.
I wrote Matthew Garrett the hp_wmi author, but haven heard back. I'm not
sure, maybe I shouldn't contact him directly or maybe he's just busy or
on holidays currently.
If anybody can point out to me what direction to take from here I'd be
very glad.
Thanks,
*t
*t
^ permalink raw reply
* [PATCH v2] ath10k: implement get_survey()
From: Michal Kazior @ 2013-07-29 7:08 UTC (permalink / raw)
To: ath10k; +Cc: linux-wireless, Michal Kazior
In-Reply-To: <1374750412-5513-1-git-send-email-michal.kazior@tieto.com>
This implements a limited subset of what can be
reported in the survey dump.
This can be used for assessing approximate channel
load, e.g. for automatic channel selection.
Signed-off-by: Michal Kazior <michal.kazior@tieto.com>
---
v2: Do not sum up channel time. Each time a
channel is visited stats for that channel are
overwritten. This makes the behaviour
more consistent with ath9k.
drivers/net/wireless/ath/ath10k/core.h | 6 +++
drivers/net/wireless/ath/ath10k/mac.c | 36 +++++++++++++++++
drivers/net/wireless/ath/ath10k/wmi.c | 68 +++++++++++++++++++++++++++++++-
drivers/net/wireless/ath/ath10k/wmi.h | 3 ++
4 files changed, 112 insertions(+), 1 deletion(-)
diff --git a/drivers/net/wireless/ath/ath10k/core.h b/drivers/net/wireless/ath/ath10k/core.h
index 9f21ecb..e1cd1e7 100644
--- a/drivers/net/wireless/ath/ath10k/core.h
+++ b/drivers/net/wireless/ath/ath10k/core.h
@@ -38,6 +38,7 @@
#define ATH10K_SCAN_ID 0
#define WMI_READY_TIMEOUT (5 * HZ)
#define ATH10K_FLUSH_TIMEOUT_HZ (5*HZ)
+#define ATH10K_NUM_CHANS 38
/* Antenna noise floor */
#define ATH10K_DEFAULT_NOISE_FLOOR -95
@@ -374,6 +375,11 @@ struct ath10k {
struct work_struct restart_work;
+ /* cycle count is reported twice for each visited channel during scan */
+ u32 survey_last_rx_clear_count;
+ u32 survey_last_cycle_count;
+ struct survey_info survey[ATH10K_NUM_CHANS];
+
#ifdef CONFIG_ATH10K_DEBUGFS
struct ath10k_debug debug;
#endif
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index d0a7761..5d4ce96 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -2934,6 +2934,41 @@ static void ath10k_restart_complete(struct ieee80211_hw *hw)
mutex_unlock(&ar->conf_mutex);
}
+static int ath10k_get_survey(struct ieee80211_hw *hw, int idx,
+ struct survey_info *survey)
+{
+ struct ath10k *ar = hw->priv;
+ struct ieee80211_supported_band *sband;
+ struct survey_info *ar_survey = &ar->survey[idx];
+ int ret = 0;
+
+ mutex_lock(&ar->conf_mutex);
+
+ sband = hw->wiphy->bands[IEEE80211_BAND_2GHZ];
+ if (sband && idx >= sband->n_channels) {
+ idx -= sband->n_channels;
+ sband = NULL;
+ }
+
+ if (!sband)
+ sband = hw->wiphy->bands[IEEE80211_BAND_5GHZ];
+
+ if (!sband || idx >= sband->n_channels) {
+ ret = -ENOENT;
+ goto exit;
+ }
+
+ spin_lock_bh(&ar->data_lock);
+ memcpy(survey, ar_survey, sizeof(*survey));
+ spin_unlock_bh(&ar->data_lock);
+
+ survey->channel = &sband->channels[idx];
+
+exit:
+ mutex_unlock(&ar->conf_mutex);
+ return ret;
+}
+
static const struct ieee80211_ops ath10k_ops = {
.tx = ath10k_tx,
.start = ath10k_start,
@@ -2955,6 +2990,7 @@ static const struct ieee80211_ops ath10k_ops = {
.flush = ath10k_flush,
.tx_last_beacon = ath10k_tx_last_beacon,
.restart_complete = ath10k_restart_complete,
+ .get_survey = ath10k_get_survey,
#ifdef CONFIG_PM
.suspend = ath10k_suspend,
.resume = ath10k_resume,
diff --git a/drivers/net/wireless/ath/ath10k/wmi.c b/drivers/net/wireless/ath/ath10k/wmi.c
index 5e42460..2150dc84 100644
--- a/drivers/net/wireless/ath/ath10k/wmi.c
+++ b/drivers/net/wireless/ath/ath10k/wmi.c
@@ -390,9 +390,75 @@ static int ath10k_wmi_event_mgmt_rx(struct ath10k *ar, struct sk_buff *skb)
return 0;
}
+static int freq_to_idx(struct ath10k *ar, int freq)
+{
+ struct ieee80211_supported_band *sband;
+ int band, ch, idx = 0;
+
+ for (band = IEEE80211_BAND_2GHZ; band < IEEE80211_NUM_BANDS; band++) {
+ sband = ar->hw->wiphy->bands[band];
+ if (!sband)
+ continue;
+
+ for (ch = 0; ch < sband->n_channels; ch++, idx++)
+ if (sband->channels[ch].center_freq == freq)
+ goto exit;
+ }
+
+exit:
+ return idx;
+}
+
static void ath10k_wmi_event_chan_info(struct ath10k *ar, struct sk_buff *skb)
{
- ath10k_dbg(ATH10K_DBG_WMI, "WMI_CHAN_INFO_EVENTID\n");
+ struct wmi_chan_info_event *ev;
+ int idx;
+
+ spin_lock_bh(&ar->data_lock);
+
+ ev = (struct wmi_chan_info_event *)skb->data;
+ ath10k_dbg(ATH10K_DBG_WMI,
+ "chan info: err_code:%d freq:%d cmd_flags:%d noise_floor:%d rx_clear_count:%d cycle_count:%d\n",
+ __le32_to_cpu(ev->err_code),
+ __le32_to_cpu(ev->freq),
+ __le32_to_cpu(ev->cmd_flags),
+ __le32_to_cpu(ev->noise_floor),
+ __le32_to_cpu(ev->rx_clear_count),
+ __le32_to_cpu(ev->cycle_count));
+
+ if (!ar->scan.in_progress) {
+ ath10k_warn("chan info event without a scan request?\n");
+ goto exit;
+ }
+
+ if (__le32_to_cpu(ev->cmd_flags) & WMI_CHAN_INFO_FLAG_COMPLETE) {
+ idx = freq_to_idx(ar, __le32_to_cpu(ev->freq));
+ if (idx >= ARRAY_SIZE(ar->survey)) {
+ ath10k_warn("chan info: invalid frequency %d (idx %d out of bounds)\n",
+ __le32_to_cpu(ev->freq), idx);
+ } else {
+ /* During scanning chan info is reported twice for each
+ * visited channel. The reported cycle count is global
+ * and per-channel cycle count must be calculated */
+
+ ar->survey[idx].channel_time = WMI_CHAN_INFO_MSEC(
+ __le32_to_cpu(ev->cycle_count) -
+ ar->survey_last_cycle_count);
+ ar->survey[idx].channel_time_rx = WMI_CHAN_INFO_MSEC(
+ __le32_to_cpu(ev->rx_clear_count) -
+ ar->survey_last_rx_clear_count);
+ ar->survey[idx].noise = __le32_to_cpu(ev->noise_floor);
+ ar->survey[idx].filled = SURVEY_INFO_CHANNEL_TIME |
+ SURVEY_INFO_CHANNEL_TIME_RX |
+ SURVEY_INFO_NOISE_DBM;
+ }
+ }
+
+ ar->survey_last_rx_clear_count = __le32_to_cpu(ev->rx_clear_count);
+ ar->survey_last_cycle_count = __le32_to_cpu(ev->cycle_count);
+
+exit:
+ spin_unlock_bh(&ar->data_lock);
}
static void ath10k_wmi_event_echo(struct ath10k *ar, struct sk_buff *skb)
diff --git a/drivers/net/wireless/ath/ath10k/wmi.h b/drivers/net/wireless/ath/ath10k/wmi.h
index da3b2bc..4acff47 100644
--- a/drivers/net/wireless/ath/ath10k/wmi.h
+++ b/drivers/net/wireless/ath/ath10k/wmi.h
@@ -2931,6 +2931,9 @@ struct wmi_chan_info_event {
__le32 cycle_count;
} __packed;
+#define WMI_CHAN_INFO_FLAG_COMPLETE BIT(0)
+#define WMI_CHAN_INFO_MSEC(x) ((x) / 76595) /* XXX: empirically extrapolated */
+
/* Beacon filter wmi command info */
#define BCN_FLT_MAX_SUPPORTED_IES 256
#define BCN_FLT_MAX_ELEMS_IE_LIST (BCN_FLT_MAX_SUPPORTED_IES / 32)
--
1.7.9.5
^ permalink raw reply related
* [RFC 0/3] introduce chan_time parameter to scan request
From: Michal Kazior @ 2013-07-29 8:39 UTC (permalink / raw)
To: johannes; +Cc: linux-wireless, ath10k, Michal Kazior
Hi,
This patchset adds a new scan parameter. It allows
specyfing for how long each channel should be
visited during scan.
I've tested this with ath9k (which doesn't have
hw_scan) and ath10k (does have hw_scan). It's not
super time-precise, but seems reasonable.
The main motivation behind this is to allow easier
ACS implementation in hostapd.
This could also perhaps be useful for spectral
scan and anyone interested in having ability to
tune scan times (e.g. very fast initial channel
scanning on mobile devices, long passive scans).
I'm wondering if it would be okay to set swscan
probe delay to 0 if chan_time is non-zero? Or does
probe delay need to be non-zero? Or maybe it
should also be configurable via a parameter?
Pozdrawiam / Best regards,
Michal Kazior.
Michal Kazior (3):
nl/cfg80211: add chan_time for scan request
mac80211: add support for scan chan_time parameter
ath10k: respect chan_time parameter in scan request
drivers/net/wireless/ath/ath10k/mac.c | 6 ++++++
include/net/cfg80211.h | 3 +++
include/uapi/linux/nl80211.h | 7 +++++++
net/mac80211/scan.c | 22 ++++++++++++++++++++--
net/wireless/nl80211.c | 4 ++++
5 files changed, 40 insertions(+), 2 deletions(-)
--
1.7.9.5
^ permalink raw reply
* [RFC 1/3] nl/cfg80211: add chan_time for scan request
From: Michal Kazior @ 2013-07-29 8:39 UTC (permalink / raw)
To: johannes; +Cc: linux-wireless, ath10k, Michal Kazior
In-Reply-To: <1375087158-22077-1-git-send-email-michal.kazior@tieto.com>
The new scan parameter allows user to specify how
long driver should remain on each scanned channel.
The default is to leave it up to driver to decide.
If specified it is preferred for driver to respect
this setting although it may ignore it if it can't
support it.
This can be useful to do very quick/slow scans
and/or gether survey data, e.g. for automatic
channel selection.
Signed-off-by: Michal Kazior <michal.kazior@tieto.com>
---
include/net/cfg80211.h | 3 +++
include/uapi/linux/nl80211.h | 7 +++++++
net/wireless/nl80211.c | 4 ++++
3 files changed, 14 insertions(+)
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index aeaf6df..2d46112 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -1323,6 +1323,8 @@ struct cfg80211_ssid {
* @aborted: (internal) scan request was notified as aborted
* @notified: (internal) scan request was notified as done or aborted
* @no_cck: used to send probe requests at non CCK rate in 2GHz band
+ * @chan_time: how many msec driver should stay on each channel during scan.
+ * Setting 0 leaves the decision up to the driver.
*/
struct cfg80211_scan_request {
struct cfg80211_ssid *ssids;
@@ -1332,6 +1334,7 @@ struct cfg80211_scan_request {
const u8 *ie;
size_t ie_len;
u32 flags;
+ int chan_time;
u32 rates[IEEE80211_NUM_BANDS];
diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h
index eb68735..4ea1d9b 100644
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -1469,6 +1469,11 @@ enum nl80211_commands {
*
* @NL80211_ATTR_COALESCE_RULE: Coalesce rule information.
*
+ * @NL80211_ATTR_SCAN_CHAN_TIME: Specifies how many msec should a driver spend
+ * on each channel during scanning. This is optional and the default is
+ * leave the decision up to the driver. This setting may, but preferrably
+ * shouldn't, be ignored by driver.
+ *
* @NL80211_ATTR_MAX: highest attribute number currently defined
* @__NL80211_ATTR_AFTER_LAST: internal use
*/
@@ -1771,6 +1776,8 @@ enum nl80211_attrs {
NL80211_ATTR_COALESCE_RULE,
+ NL80211_ATTR_SCAN_CHAN_TIME,
+
/* add attributes here, update the policy in nl80211.c */
__NL80211_ATTR_AFTER_LAST,
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 03d4ef9..27a8fef 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -5298,6 +5298,10 @@ static int nl80211_trigger_scan(struct sk_buff *skb, struct genl_info *info)
request->no_cck =
nla_get_flag(info->attrs[NL80211_ATTR_TX_NO_CCK_RATE]);
+ if (info->attrs[NL80211_ATTR_SCAN_CHAN_TIME])
+ request->chan_time =
+ nla_get_u32(info->attrs[NL80211_ATTR_SCAN_CHAN_TIME]);
+
request->wdev = wdev;
request->wiphy = &rdev->wiphy;
request->scan_start = jiffies;
--
1.7.9.5
^ permalink raw reply related
* [RFC 2/3] mac80211: add support for scan chan_time parameter
From: Michal Kazior @ 2013-07-29 8:39 UTC (permalink / raw)
To: johannes; +Cc: linux-wireless, ath10k, Michal Kazior
In-Reply-To: <1375087158-22077-1-git-send-email-michal.kazior@tieto.com>
This allows mac80211-based drivers that support
hw_scan() to get chan_time paremter.
This also makes mac80211-based drivers that don't
support hw_scan() to respect the chan_time
parameter.
The effective minimum channel time for swscan
drivers is the probe delay. hw_scan drivers may
have their own limits.
Signed-off-by: Michal Kazior <michal.kazior@tieto.com>
---
net/mac80211/scan.c | 22 ++++++++++++++++++++--
1 file changed, 20 insertions(+), 2 deletions(-)
diff --git a/net/mac80211/scan.c b/net/mac80211/scan.c
index 08afe74..e8b1aca 100644
--- a/net/mac80211/scan.c
+++ b/net/mac80211/scan.c
@@ -443,7 +443,18 @@ static void ieee80211_scan_state_send_probe(struct ieee80211_local *local,
* After sending probe requests, wait for probe responses
* on the channel.
*/
- *next_delay = IEEE80211_CHANNEL_TIME;
+ if (local->scan_req->chan_time) {
+ /*
+ * Account probe delay to compute the delay needed to reach
+ * chan_time on a given channel.
+ */
+ *next_delay = msecs_to_jiffies(local->scan_req->chan_time);
+ if (*next_delay > IEEE80211_PROBE_DELAY)
+ *next_delay -= IEEE80211_PROBE_DELAY;
+ else
+ *next_delay = 0;
+ } else
+ *next_delay = IEEE80211_CHANNEL_TIME;
local->next_scan_state = SCAN_DECISION;
}
@@ -485,6 +496,7 @@ static int __ieee80211_start_scan(struct ieee80211_sub_if_data *sdata,
req->n_channels * sizeof(req->channels[0]);
local->hw_scan_req->ie = ies;
local->hw_scan_req->flags = req->flags;
+ local->hw_scan_req->chan_time = req->chan_time;
local->hw_scan_band = 0;
@@ -532,6 +544,9 @@ static int __ieee80211_start_scan(struct ieee80211_sub_if_data *sdata,
next_delay = IEEE80211_CHANNEL_TIME;
}
+ if (req->chan_time)
+ next_delay = msecs_to_jiffies(req->chan_time);
+
/* Now, just wait a bit and we are all done! */
ieee80211_queue_delayed_work(&local->hw, &local->scan_work,
next_delay);
@@ -696,7 +711,10 @@ static void ieee80211_scan_state_set_channel(struct ieee80211_local *local,
*/
if (chan->flags & IEEE80211_CHAN_PASSIVE_SCAN ||
!local->scan_req->n_ssids) {
- *next_delay = IEEE80211_PASSIVE_CHANNEL_TIME;
+ if (local->scan_req->chan_time)
+ *next_delay = msecs_to_jiffies(local->scan_req->chan_time);
+ else
+ *next_delay = IEEE80211_PASSIVE_CHANNEL_TIME;
local->next_scan_state = SCAN_DECISION;
return;
}
--
1.7.9.5
^ permalink raw reply related
* [RFC 3/3] ath10k: respect chan_time parameter in scan request
From: Michal Kazior @ 2013-07-29 8:39 UTC (permalink / raw)
To: johannes; +Cc: linux-wireless, ath10k, Michal Kazior
In-Reply-To: <1375087158-22077-1-git-send-email-michal.kazior@tieto.com>
Respect the new scan request parameter.
Signed-off-by: Michal Kazior <michal.kazior@tieto.com>
---
drivers/net/wireless/ath/ath10k/mac.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index da5c333..cd20a20 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -2150,6 +2150,12 @@ static int ath10k_hw_scan(struct ieee80211_hw *hw,
arg.vdev_id = arvif->vdev_id;
arg.scan_id = ATH10K_SCAN_ID;
+ if (req->chan_time) {
+ arg.dwell_time_active = req->chan_time;
+ arg.dwell_time_passive = req->chan_time;
+ arg.max_scan_time = 2 * req->chan_time * req->n_channels;
+ }
+
if (!req->no_cck)
arg.scan_ctrl_flags |= WMI_SCAN_ADD_CCK_RATES;
--
1.7.9.5
^ permalink raw reply related
* [RFC] iw: add chan_time scan parameter
From: Michal Kazior @ 2013-07-29 8:42 UTC (permalink / raw)
To: johannes; +Cc: linux-wireless, Michal Kazior
The new parameter allows user to specify how long
driver should remain on each channel while
scanning.
Signed-off-by: Michal Kazior <michal.kazior@tieto.com>
---
Note: nl/cfg/mac patches were sent separately.
Should this be split into two patches - one
that updates nl80211.h and the other adding
the parameter support?
nl80211.h | 8 ++++++++
scan.c | 16 +++++++++++++---
2 files changed, 21 insertions(+), 3 deletions(-)
diff --git a/nl80211.h b/nl80211.h
index 5abc54d..f9ef050 100644
--- a/nl80211.h
+++ b/nl80211.h
@@ -1469,6 +1469,12 @@ enum nl80211_commands {
*
* @NL80211_ATTR_COALESCE_RULE: Coalesce rule information.
*
+ * @NL80211_ATTR_SCAN_CHAN_TIME: Specifies how many msec should a driver spend
+ * on each channel during scanning. This is optional and the default is
+ * leave the decision up to the driver. This setting may, but preferrably
+ * shouldn't, be ignored by a driver.
+ *
+ *
* @NL80211_ATTR_MAX: highest attribute number currently defined
* @__NL80211_ATTR_AFTER_LAST: internal use
*/
@@ -1771,6 +1777,8 @@ enum nl80211_attrs {
NL80211_ATTR_COALESCE_RULE,
+ NL80211_ATTR_SCAN_CHAN_TIME,
+
/* add attributes here, update the policy in nl80211.c */
__NL80211_ATTR_AFTER_LAST,
diff --git a/scan.c b/scan.c
index 4fb0f23..c5bafd8 100644
--- a/scan.c
+++ b/scan.c
@@ -87,12 +87,13 @@ static int handle_scan(struct nl80211_state *state,
SSID,
MESHID,
DONE,
+ CHANTIME,
} parse = NONE;
int freq;
bool passive = false, have_ssids = false, have_freqs = false;
size_t ies_len = 0, meshid_len = 0;
unsigned char *ies = NULL, *meshid = NULL, *tmpies;
- int flags = 0;
+ int flags = 0, chan_time = 0;
ssids = nlmsg_alloc();
if (!ssids)
@@ -137,6 +138,9 @@ static int handle_scan(struct nl80211_state *state,
} else if (strcmp(argv[i], "meshid") == 0) {
parse = MESHID;
break;
+ } else if (strcmp(argv[i], "chan-time") == 0) {
+ parse = CHANTIME;
+ break;
}
case DONE:
return 1;
@@ -170,6 +174,10 @@ static int handle_scan(struct nl80211_state *state,
meshid_len += 2;
parse = NONE;
break;
+ case CHANTIME:
+ chan_time = strtoul(argv[i], &eptr, 10);
+ parse = NONE;
+ break;
}
}
@@ -198,6 +206,8 @@ static int handle_scan(struct nl80211_state *state,
nla_put_nested(msg, NL80211_ATTR_SCAN_FREQUENCIES, freqs);
if (flags)
NLA_PUT_U32(msg, NL80211_ATTR_SCAN_FLAGS, flags);
+ if (chan_time)
+ NLA_PUT_U32(msg, NL80211_ATTR_SCAN_CHAN_TIME, chan_time);
err = 0;
nla_put_failure:
@@ -1596,7 +1606,7 @@ static int handle_scan_combined(struct nl80211_state *state,
dump_argv[0] = argv[0];
return handle_cmd(state, id, dump_argc, dump_argv);
}
-TOPLEVEL(scan, "[-u] [freq <freq>*] [ies <hex as 00:11:..>] [meshid <meshid>] [lowpri,flush,ap-force] [ssid <ssid>*|passive]", 0, 0,
+TOPLEVEL(scan, "[-u] [freq <freq>*] [ies <hex as 00:11:..>] [meshid <meshid>] [lowpri,flush,ap-force] [chan-time <msec>] [ssid <ssid>*|passive]", 0, 0,
CIB_NETDEV, handle_scan_combined,
"Scan on the given frequencies and probe for the given SSIDs\n"
"(or wildcard if not given) unless passive scanning is requested.\n"
@@ -1606,7 +1616,7 @@ COMMAND(scan, dump, "[-u]",
NL80211_CMD_GET_SCAN, NLM_F_DUMP, CIB_NETDEV, handle_scan_dump,
"Dump the current scan results. If -u is specified, print unknown\n"
"data in scan results.");
-COMMAND(scan, trigger, "[freq <freq>*] [ies <hex as 00:11:..>] [meshid <meshid>] [lowpri,flush,ap-force] [ssid <ssid>*|passive]",
+COMMAND(scan, trigger, "[freq <freq>*] [ies <hex as 00:11:..>] [meshid <meshid>] [lowpri,flush,ap-force] [chan-time <msec>] [ssid <ssid>*|passive]",
NL80211_CMD_TRIGGER_SCAN, 0, CIB_NETDEV, handle_scan,
"Trigger a scan on the given frequencies with probing for the given\n"
"SSIDs (or wildcard if not given) unless passive scanning is requested.");
--
1.7.9.5
^ permalink raw reply related
* [PATCH] ath9k: Add a debugfs file for antenna diversity
From: Sujith Manoharan @ 2013-07-29 10:34 UTC (permalink / raw)
To: John Linville; +Cc: linux-wireless
From: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
---
drivers/net/wireless/ath/ath9k/antenna.c | 10 ++++-
drivers/net/wireless/ath/ath9k/ath9k.h | 2 +-
drivers/net/wireless/ath/ath9k/debug.c | 64 ++++++++++++++++++++++++++++++++
drivers/net/wireless/ath/ath9k/debug.h | 13 +++++++
4 files changed, 86 insertions(+), 3 deletions(-)
diff --git a/drivers/net/wireless/ath/ath9k/antenna.c b/drivers/net/wireless/ath/ath9k/antenna.c
index 6560dcb..2785dc3 100644
--- a/drivers/net/wireless/ath/ath9k/antenna.c
+++ b/drivers/net/wireless/ath/ath9k/antenna.c
@@ -600,10 +600,16 @@ void ath_ant_comb_scan(struct ath_softc *sc, struct ath_rx_status *rs)
antcomb->total_pkt_count++;
antcomb->main_total_rssi += main_rssi;
antcomb->alt_total_rssi += alt_rssi;
- if (main_ant_conf == rx_ant_conf)
+
+ if (main_ant_conf == rx_ant_conf) {
antcomb->main_recv_cnt++;
- else
+ ANT_STAT_INC(ANT_MAIN, recv_cnt);
+ ANT_LNA_INC(ANT_MAIN, rx_ant_conf);
+ } else {
antcomb->alt_recv_cnt++;
+ ANT_STAT_INC(ANT_ALT, recv_cnt);
+ ANT_LNA_INC(ANT_ALT, rx_ant_conf);
+ }
}
/* Short scan check */
diff --git a/drivers/net/wireless/ath/ath9k/ath9k.h b/drivers/net/wireless/ath/ath9k/ath9k.h
index 2992fd0..2d7e26d 100644
--- a/drivers/net/wireless/ath/ath9k/ath9k.h
+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
@@ -609,7 +609,7 @@ struct ath_ant_comb {
int rssi_third;
bool alt_good;
int quick_scan_cnt;
- int main_conf;
+ enum ath9k_ant_div_comb_lna_conf main_conf;
enum ath9k_ant_div_comb_lna_conf first_quick_scan_conf;
enum ath9k_ant_div_comb_lna_conf second_quick_scan_conf;
bool first_ratio;
diff --git a/drivers/net/wireless/ath/ath9k/debug.c b/drivers/net/wireless/ath/ath9k/debug.c
index 5639c5b..56cbe5d 100644
--- a/drivers/net/wireless/ath/ath9k/debug.c
+++ b/drivers/net/wireless/ath/ath9k/debug.c
@@ -321,6 +321,68 @@ static const struct file_operations fops_bt_ant_diversity = {
.llseek = default_llseek,
};
+static ssize_t read_file_antenna_diversity(struct file *file,
+ char __user *user_buf,
+ size_t count, loff_t *ppos)
+{
+ struct ath_softc *sc = file->private_data;
+ struct ath_hw *ah = sc->sc_ah;
+ struct ath9k_hw_capabilities *pCap = &ah->caps;
+ struct ath_antenna_stats *as_main = &sc->debug.stats.ant_stats[ANT_MAIN];
+ struct ath_antenna_stats *as_alt = &sc->debug.stats.ant_stats[ANT_ALT];
+ unsigned int len = 0, size = 1024;
+ ssize_t retval = 0;
+ char *buf;
+
+ buf = kzalloc(size, GFP_KERNEL);
+ if (buf == NULL)
+ return -ENOMEM;
+
+ if (!(pCap->hw_caps & ATH9K_HW_CAP_ANT_DIV_COMB)) {
+ len += snprintf(buf + len, size - len, "%s\n",
+ "Antenna Diversity Combining is disabled");
+ goto exit;
+ }
+
+ len += snprintf(buf + len, size - len, "%30s%15s\n",
+ "MAIN", "ALT");
+ len += snprintf(buf + len, size - len, "%-15s%15d%15d\n",
+ "RECV CNT",
+ as_main->recv_cnt,
+ as_alt->recv_cnt);
+ len += snprintf(buf + len, size - len, "%-15s%15d%15d\n",
+ "LNA1",
+ as_main->lna_config_cnt[ATH_ANT_DIV_COMB_LNA1],
+ as_alt->lna_config_cnt[ATH_ANT_DIV_COMB_LNA1]);
+ len += snprintf(buf + len, size - len, "%-15s%15d%15d\n",
+ "LNA2",
+ as_main->lna_config_cnt[ATH_ANT_DIV_COMB_LNA2],
+ as_alt->lna_config_cnt[ATH_ANT_DIV_COMB_LNA2]);
+ len += snprintf(buf + len, size - len, "%-15s%15d%15d\n",
+ "LNA1 + LNA2",
+ as_main->lna_config_cnt[ATH_ANT_DIV_COMB_LNA1_PLUS_LNA2],
+ as_alt->lna_config_cnt[ATH_ANT_DIV_COMB_LNA1_PLUS_LNA2]);
+ len += snprintf(buf + len, size - len, "%-15s%15d%15d\n",
+ "LNA1 - LNA2",
+ as_main->lna_config_cnt[ATH_ANT_DIV_COMB_LNA1_MINUS_LNA2],
+ as_alt->lna_config_cnt[ATH_ANT_DIV_COMB_LNA1_MINUS_LNA2]);
+exit:
+ if (len > size)
+ len = size;
+
+ retval = simple_read_from_buffer(user_buf, count, ppos, buf, len);
+ kfree(buf);
+
+ return retval;
+}
+
+static const struct file_operations fops_antenna_diversity = {
+ .read = read_file_antenna_diversity,
+ .open = simple_open,
+ .owner = THIS_MODULE,
+ .llseek = default_llseek,
+};
+
static ssize_t read_file_dma(struct file *file, char __user *user_buf,
size_t count, loff_t *ppos)
{
@@ -1816,6 +1878,8 @@ int ath9k_init_debug(struct ath_hw *ah)
sc->debug.debugfs_phy, &sc->sc_ah->gpio_val);
debugfs_create_file("bt_ant_diversity", S_IRUSR | S_IWUSR,
sc->debug.debugfs_phy, sc, &fops_bt_ant_diversity);
+ debugfs_create_file("antenna_diversity", S_IRUSR,
+ sc->debug.debugfs_phy, sc, &fops_antenna_diversity);
#ifdef CONFIG_ATH9K_BTCOEX_SUPPORT
debugfs_create_file("btcoex", S_IRUSR, sc->debug.debugfs_phy, sc,
&fops_btcoex);
diff --git a/drivers/net/wireless/ath/ath9k/debug.h b/drivers/net/wireless/ath/ath9k/debug.h
index fc67919..a879e45 100644
--- a/drivers/net/wireless/ath/ath9k/debug.h
+++ b/drivers/net/wireless/ath/ath9k/debug.h
@@ -28,9 +28,13 @@ struct fft_sample_tlv;
#ifdef CONFIG_ATH9K_DEBUGFS
#define TX_STAT_INC(q, c) sc->debug.stats.txstats[q].c++
#define RESET_STAT_INC(sc, type) sc->debug.stats.reset[type]++
+#define ANT_STAT_INC(i, c) sc->debug.stats.ant_stats[i].c++
+#define ANT_LNA_INC(i, c) sc->debug.stats.ant_stats[i].lna_config_cnt[c]++;
#else
#define TX_STAT_INC(q, c) do { } while (0)
#define RESET_STAT_INC(sc, type) do { } while (0)
+#define ANT_STAT_INC(i, c) do { } while (0)
+#define ANT_LNA_INC(i, c) do { } while (0)
#endif
enum ath_reset_type {
@@ -243,11 +247,20 @@ struct ath_rx_stats {
u32 rx_spectral;
};
+#define ANT_MAIN 0
+#define ANT_ALT 1
+
+struct ath_antenna_stats {
+ u32 recv_cnt;
+ u32 lna_config_cnt[4];
+};
+
struct ath_stats {
struct ath_interrupt_stats istats;
struct ath_tx_stats txstats[ATH9K_NUM_TX_QUEUES];
struct ath_rx_stats rxstats;
struct ath_dfs_stats dfs_stats;
+ struct ath_antenna_stats ant_stats[2];
u32 reset[__RESET_TYPE_MAX];
};
--
1.8.3.4
^ permalink raw reply related
* re: mwifiex: handle driver initialization error paths
From: Dan Carpenter @ 2013-07-29 14:47 UTC (permalink / raw)
To: akarwar; +Cc: linux-wireless
Hello Amitkumar Karwar,
The patch 6b41f941d7cd: "mwifiex: handle driver initialization error
paths" from Jul 22, 2013, leads to the following warning:
"drivers/net/wireless/mwifiex/main.c:533 mwifiex_fw_dpc()
warn: 'adapter' was already freed."
drivers/net/wireless/mwifiex/main.c
529 adapter->surprise_removed = true;
530 mwifiex_terminate_workqueue(adapter);
531 mwifiex_free_adapter(adapter);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Free.
532 done:
533 if (adapter->cal_data) {
^^^^^^^^^^^^^^^^^
Dereference.
534 release_firmware(adapter->cal_data);
535 adapter->cal_data = NULL;
536 }
regards,
dan carpenter
^ permalink raw reply
* [PATCH v2] Documentation: dt: bindings: TI WiLink modules
From: Luciano Coelho @ 2013-07-29 14:55 UTC (permalink / raw)
To: devicetree-discuss, linux-doc
Cc: mturquette, mark.rutland, balbi, grant.likely, rob.herring,
linux-kernel, linux-omap, linux-wireless, linux-arm, tony, nm,
laurent.pinchart
Add device tree bindings documentation for the TI WiLink modules.
Currently only the WLAN part of the WiLink6, WiLink7 and WiLink8
modules is supported.
Signed-off-by: Luciano Coelho <coelho@ti.com>
---
Changes in v2:
Use generic clock definitions to get the clock data instead of passing
the frequencies directly. Also added definition for "internal"
ti,wilink-clock.
Please review.
Luca.
.../devicetree/bindings/net/wireless/ti-wilink.txt | 68 ++++++++++++++++++++++
1 file changed, 68 insertions(+)
create mode 100644 Documentation/devicetree/bindings/net/wireless/ti-wilink.txt
diff --git a/Documentation/devicetree/bindings/net/wireless/ti-wilink.txt b/Documentation/devicetree/bindings/net/wireless/ti-wilink.txt
new file mode 100644
index 0000000..5fd27dc
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/wireless/ti-wilink.txt
@@ -0,0 +1,68 @@
+TI WiLink Wireless Modules Device Tree Bindings
+===============================================
+
+The WiLink modules provide wireless connectivity, such as WLAN,
+Bluetooth, FM and NFC.
+
+There are several different modules available, which can be grouped by
+their generation: WiLink6, WiLink7 and WiLink8. WiLink4 is not
+currently supported with device tree.
+
+Currently, only the WLAN portion of the modules is supported with
+device tree.
+
+Required properties:
+--------------------
+
+- compatible: should be "ti,wilink6", "ti,wilink7" or "ti,wilink8"
+- interrupt-parent: the interrupt controller
+- interrupts: out-of-band WLAN interrupt
+ See the interrupt controller's bindings documentation for
+ detailed definition.
+
+Optional properties:
+--------------------
+
+- clocks: list of clocks needed by the chip as follows:
+
+ refclock: the internal WLAN reference clock frequency (required for
+ WiLink6 and WiLink7; not used for WiLink8).
+
+ tcxoclock: the internal WLAN TCXO clock frequency (required for
+ WiLink7 not used for WiLink6 and WiLink8).
+
+ The clocks must be defined and named accordingly. For example:
+
+ clocks = <&refclock>
+ clock-names = "refclock";
+
+ refclock: refclock {
+ compatible = "ti,wilink-clock";
+ #clock-cells = <0>;
+ clock-frequency = <38400000>;
+ };
+
+ Some modules that contain the WiLink chip provide clocks in the
+ module itself. In this case, we define a "ti,wilink-clock" as shown
+ above. But any other clock could in theory be used, so the proper
+ clock definition should be used.
+
+
+Example:
+--------
+
+Example definition that can be used in OMAP4 Panda:
+
+wlan {
+ compatible = "ti,wilink6";
+ interrupt-parent = <&gpio2>;
+ interrupts = <21 0x4>; /* gpio line 53, high level triggered */
+ clocks = <&refclock>;
+ clock-names = "refclock";
+
+ refclock: refclock {
+ compatible = "ti,wilink-clock";
+ #clock-cells = <0>;
+ clock-frequency = <38400000>;
+ };
+};
--
1.8.3.2
^ permalink raw reply related
* [RFC/RFT] fwcutter: Add firmware 6.30.163.46
From: Larry Finger @ 2013-07-29 16:23 UTC (permalink / raw)
To: m; +Cc: linux-wireless, b43-dev, Larry Finger
This firmware version can be extracted from the GPL tarball for the ASUS
GPL code for the RT-AC66U 802.11ac Dual-Band Wireless-AC1750 Gigabit Router.
I believe this to be the first instance of 802.11ac firmware for Broadcom
hardware. The firmware is version 784.2.
Note: The http://www.lwfinger.com/broadcom-wl-6.30.163.46.tar.bz2 is the URL
of the extracted apsta binary. The full GPL package is at
http://dlcdnet.asus.com/pub/ASUS/wireless/RT-AC66U/GPL_RT_AC66U_3004372.zip.
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
---
Michael and list,
Is this change worthwhile? This driver implements through ucode43, thus it covers a
lot of PHY revisions not currently available. I have no idea if there are any firmware
changes for boards that are currently supported by b43.
Larry
---
fwcutter/fwcutter_list.h | 181 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 181 insertions(+)
diff --git a/fwcutter/fwcutter_list.h b/fwcutter/fwcutter_list.h
index f84607f..4e0c07a 100644
--- a/fwcutter/fwcutter_list.h
+++ b/fwcutter/fwcutter_list.h
@@ -771,6 +771,179 @@ static struct extract _e1b05e268bcdbfef3560c28fc161f30e[] =
EXTRACT_LIST_END
};
+static struct extract _29c8a47094fbae342902d84881a465ff[] =
+{
+ { .name = "lcn1bsinitvals26", .offset = 0x22CF88, .type = EXT_IV, .length = 0x118 },
+ { .name = "n0bsinitvals22", .offset = 0x28D3D8, .type = EXT_IV, .length = 0x0 },
+ { .name = "lcn0bsinitvals26", .offset = 0x22BF18, .type = EXT_IV, .length = 0x118 },
+ { .name = "ac1bsinitvals42", .offset = 0x274530, .type = EXT_IV, .length = 0x248 },
+ { .name = "ucode24_lcn", .offset = 0x23AF24, .type = EXT_UCODE_3, .length = 0x891A },
+ /* ucode minor version at offset 0x288284 */
+ { .name = "ht0bsinitvals26", .offset = 0x22F068, .type = EXT_IV, .length = 0x118 },
+ { .name = "ucode24_mimo", .offset = 0x231300, .type = EXT_UCODE_3, .length = 0x9C20 },
+ { .name = "n20initvals36", .offset = 0x2312D0, .type = EXT_IV, .length = 0x0 },
+ { .name = "ucode15", .offset = 0x2E86A0, .type = EXT_UCODE_3, .length = 0x7190 },
+ { .name = "b0g0bsinitvals9", .offset = 0x2C8AF8, .type = EXT_IV, .length = 0x118 },
+ { .name = "lcn405initvals35", .offset = 0x2312C0, .type = EXT_IV, .length = 0x0 },
+ { .name = "ac1initvals42", .offset = 0x273218, .type = EXT_IV, .length = 0x1310 },
+ { .name = "lp0bsinitvals13", .offset = 0x2CC668, .type = EXT_IV, .length = 0x118 },
+ { .name = "b0g0bsinitvals5", .offset = 0x2C6898, .type = EXT_IV, .length = 0x118 },
+ { .name = "ucode43", .offset = 0x288270, .type = EXT_UCODE_3, .length = 0x4 },
+ { .name = "lp0initvals16", .offset = 0x28A3F8, .type = EXT_IV, .length = 0xF90 },
+ { .name = "lp1bsinitvals20", .offset = 0x28C408, .type = EXT_IV, .length = 0x0 },
+ { .name = "lcn1initvals25", .offset = 0x2279C8, .type = EXT_IV, .length = 0x10D8 },
+ { .name = "b0g0initvals13", .offset = 0x2CC788, .type = EXT_IV, .length = 0xBF0 },
+ { .name = "lcn402initvals33", .offset = 0x231270, .type = EXT_IV, .length = 0x0 },
+ { .name = "sslpn3bsinitvals21", .offset = 0x28D2B0, .type = EXT_IV, .length = 0x118 },
+ { .name = "ht0initvals29", .offset = 0x22F198, .type = EXT_IV, .length = 0xF98 },
+ { .name = "n2bsinitvals19", .offset = 0x28C3B8, .type = EXT_IV, .length = 0x0 },
+ { .name = "sslpn1bsinitvals20", .offset = 0x28C3F8, .type = EXT_IV, .length = 0x0 },
+ { .name = "ucode25_lcn", .offset = 0x24B570, .type = EXT_UCODE_3, .length = 0x8657 },
+ { .name = "lcn0initvals24", .offset = 0x221FA8, .type = EXT_IV, .length = 0x10E0 },
+ { .name = "lcn404initvals33", .offset = 0x231290, .type = EXT_IV, .length = 0x0 },
+ { .name = "sslpn1bsinitvals27", .offset = 0x22F190, .type = EXT_IV, .length = 0x0 },
+/* { .name = "a0g0bsinitvals4", .offset = 0x2C5E80, .type = EXT_IV, .length = 0x0 }, */
+ { .name = "lcn404bsinitvals33", .offset = 0x231298, .type = EXT_IV, .length = 0x0 },
+ { .name = "ucode22_sslpn", .offset = 0x2C5E44, .type = EXT_UCODE_3, .length = 0x1 },
+ { .name = "lcn1bsinitvals25", .offset = 0x228AA8, .type = EXT_IV, .length = 0x118 },
+ { .name = "lcn406initvals37", .offset = 0x2312E0, .type = EXT_IV, .length = 0x0 },
+ { .name = "ac3initvals43", .offset = 0x274780, .type = EXT_IV, .length = 0x0 },
+ { .name = "lcn2initvals26", .offset = 0x22D0A8, .type = EXT_IV, .length = 0xF48 },
+/* { .name = "b0g0initvals4", .offset = 0x2C5E68, .type = EXT_IV, .length = 0x0 }, */
+ { .name = "ucode20_sslpn", .offset = 0x2B761C, .type = EXT_UCODE_3, .length = 0x1 },
+ { .name = "lcn403bsinitvals33", .offset = 0x231288, .type = EXT_IV, .length = 0x0 },
+ { .name = "a0g0bsinitvals9", .offset = 0x2CA1D8, .type = EXT_IV, .length = 0x118 },
+ { .name = "n0initvals17", .offset = 0x28B4B0, .type = EXT_IV, .length = 0xDD8 },
+ { .name = "ht0bsinitvals29", .offset = 0x230138, .type = EXT_IV, .length = 0x118 },
+ { .name = "ucode21_sslpn", .offset = 0x2B762C, .type = EXT_UCODE_3, .length = 0x7405 },
+ { .name = "sslpn1initvals20", .offset = 0x28C3F0, .type = EXT_IV, .length = 0x0 },
+ { .name = "sslpn0initvals16", .offset = 0x289340, .type = EXT_IV, .length = 0xF90 },
+ { .name = "lcn0initvals26", .offset = 0x22AFC8, .type = EXT_IV, .length = 0xF48 },
+ { .name = "ucode27_sslpn", .offset = 0x25D6E0, .type = EXT_UCODE_3, .length = 0x1 },
+ { .name = "ucode29_mimo", .offset = 0x25D6E8, .type = EXT_UCODE_3, .length = 0xA8D0 },
+ { .name = "ucode21_sslpn_nobt", .offset = 0x2BEA38, .type = EXT_UCODE_3, .length = 0x7405 },
+ { .name = "lp0initvals15", .offset = 0x2CE1C8, .type = EXT_IV, .length = 0xE68 },
+ { .name = "ucode19_sslpn", .offset = 0x2B760C, .type = EXT_UCODE_3, .length = 0x1 },
+ { .name = "lcn1bsinitvals24", .offset = 0x224298, .type = EXT_IV, .length = 0x118 },
+ { .name = "lcn401bsinitvals33", .offset = 0x231268, .type = EXT_IV, .length = 0x0 },
+ { .name = "lp0bsinitvals14", .offset = 0x2CE1C0, .type = EXT_IV, .length = 0x0 },
+/* { .name = "b0g0bsinitvals4", .offset = 0x2C5E70, .type = EXT_IV, .length = 0x0 }, */
+ { .name = "ucode16_sslpn_nobt", .offset = 0x29DF44, .type = EXT_UCODE_3, .length = 0x701C },
+ { .name = "n16bsinitvals30", .offset = 0x231120, .type = EXT_IV, .length = 0x118 },
+ { .name = "a0g1bsinitvals13", .offset = 0x2CE098, .type = EXT_IV, .length = 0x118 },
+ { .name = "lcn402bsinitvals33", .offset = 0x231278, .type = EXT_IV, .length = 0x0 },
+ { .name = "ucode19_sslpn_nobt", .offset = 0x2B7614, .type = EXT_UCODE_3, .length = 0x1 },
+ { .name = "ucode40", .offset = 0x274790, .type = EXT_UCODE_3, .length = 0x9E80 },
+ { .name = "lcn1initvals24", .offset = 0x2231B0, .type = EXT_IV, .length = 0x10E0 },
+ { .name = "sslpn2initvals19", .offset = 0x28C3C0, .type = EXT_IV, .length = 0x0 },
+ { .name = "ac2initvals41", .offset = 0x273208, .type = EXT_IV, .length = 0x0 },
+ { .name = "n16initvals30", .offset = 0x230258, .type = EXT_IV, .length = 0xEC0 },
+ { .name = "ucode16_lp", .offset = 0x28D400, .type = EXT_UCODE_3, .length = 0x83E8 },
+ { .name = "n0initvals22", .offset = 0x28D3D0, .type = EXT_IV, .length = 0x0 },
+ { .name = "sslpn3initvals21", .offset = 0x28C410, .type = EXT_IV, .length = 0xE98 },
+ { .name = "lp1initvals22", .offset = 0x28D3F0, .type = EXT_IV, .length = 0x0 },
+ { .name = "ac2bsinitvals41", .offset = 0x273210, .type = EXT_IV, .length = 0x0 },
+ { .name = "a0g1bsinitvals9", .offset = 0x2CA2F8, .type = EXT_IV, .length = 0x118 },
+ { .name = "n0bsinitvals11", .offset = 0x2CB030, .type = EXT_IV, .length = 0x118 },
+ { .name = "a0g1bsinitvals5", .offset = 0x2C7EF8, .type = EXT_IV, .length = 0x118 },
+ { .name = "lcn2bsinitvals26", .offset = 0x22DFF8, .type = EXT_IV, .length = 0x118 },
+ { .name = "ucode34_mimo", .offset = 0x271C58, .type = EXT_UCODE_3, .length = 0x4 },
+ { .name = "n1initvals20", .offset = 0x28C3E0, .type = EXT_IV, .length = 0x0 },
+ { .name = "lcn2initvals25", .offset = 0x228BC8, .type = EXT_IV, .length = 0x10D8 },
+ { .name = "ucode37_lcn40", .offset = 0x271C70, .type = EXT_UCODE_3, .length = 0x1 },
+ { .name = "n0initvals16", .offset = 0x288288, .type = EXT_IV, .length = 0xF90 },
+ { .name = "n0bsinitvals24", .offset = 0x2266A8, .type = EXT_IV, .length = 0x118 },
+ { .name = "n1bsinitvals20", .offset = 0x28C3E8, .type = EXT_IV, .length = 0x0 },
+ { .name = "b0g0initvals5", .offset = 0x2C5E88, .type = EXT_IV, .length = 0xA08 },
+ { .name = "b0g0initvals9", .offset = 0x2C8018, .type = EXT_IV, .length = 0xAD8 },
+ { .name = "lcn0bsinitvals24", .offset = 0x223090, .type = EXT_IV, .length = 0x118 },
+ { .name = "lcn2bsinitvals25", .offset = 0x229CA8, .type = EXT_IV, .length = 0x118 },
+ { .name = "sslpn4bsinitvals22", .offset = 0x28D3E8, .type = EXT_IV, .length = 0x0 },
+ { .name = "ucode11", .offset = 0x2DA198, .type = EXT_UCODE_2, .length = 0x7818 },
+ { .name = "n2initvals19", .offset = 0x28C3B0, .type = EXT_IV, .length = 0x0 },
+/* { .name = "a0g0initvals4", .offset = 0x2C5E78, .type = EXT_IV, .length = 0x0 }, */
+ { .name = "pcm4", .offset = 0x2EF834, .type = EXT_PCM, .length = 0x4 },
+ { .name = "ucode13", .offset = 0x2E19B4, .type = EXT_UCODE_2, .length = 0x6CE0 },
+ { .name = "lcn0initvals25", .offset = 0x2267C8, .type = EXT_IV, .length = 0x10D8 },
+ { .name = "sslpn1initvals27", .offset = 0x22F188, .type = EXT_IV, .length = 0x0 },
+ { .name = "lp0bsinitvals15", .offset = 0x2CF038, .type = EXT_IV, .length = 0x118 },
+ { .name = "lp0initvals14", .offset = 0x2CE1B8, .type = EXT_IV, .length = 0x0 },
+ { .name = "lp1bsinitvals22", .offset = 0x28D3F8, .type = EXT_IV, .length = 0x0 },
+ { .name = "n18initvals32", .offset = 0x231240, .type = EXT_IV, .length = 0x0 },
+ { .name = "lcn405bsinitvals35", .offset = 0x2312C8, .type = EXT_IV, .length = 0x0 },
+ { .name = "ucode41", .offset = 0x27E614, .type = EXT_UCODE_3, .length = 0x4 },
+ { .name = "lcn400initvals33", .offset = 0x231250, .type = EXT_IV, .length = 0x0 },
+ { .name = "sslpn0bsinitvals16", .offset = 0x28A2D8, .type = EXT_IV, .length = 0x118 },
+ /* ucode minor version at offset 0x2c5e64 */
+ { .name = "lcn401initvals33", .offset = 0x231260, .type = EXT_IV, .length = 0x0 },
+ { .name = "ucode33_lcn40", .offset = 0x271C50, .type = EXT_UCODE_3, .length = 0x1 },
+ { .name = "a0g1initvals9", .offset = 0x2C96F8, .type = EXT_IV, .length = 0xAD8 },
+ { .name = "ucode32_mimo", .offset = 0x271C48, .type = EXT_UCODE_3, .length = 0x4 },
+ { .name = "lcn400bsinitvals33", .offset = 0x231258, .type = EXT_IV, .length = 0x0 },
+ { .name = "lcn404bsinitvals35", .offset = 0x2312B8, .type = EXT_IV, .length = 0x0 },
+ /* ucode major version at offset 0x221fa0 */
+ { .name = "n19initvals34", .offset = 0x2312A0, .type = EXT_IV, .length = 0x0 },
+ { .name = "ac3bsinitvals43", .offset = 0x274788, .type = EXT_IV, .length = 0x0 },
+ { .name = "n0initvals25", .offset = 0x229DC8, .type = EXT_IV, .length = 0x10D8 },
+ { .name = "ucode26_mimo", .offset = 0x253BCC, .type = EXT_UCODE_3, .length = 0x9B10 },
+ { .name = "n0bsinitvals16", .offset = 0x289220, .type = EXT_IV, .length = 0x118 },
+ { .name = "lcn404initvals35", .offset = 0x2312B0, .type = EXT_IV, .length = 0x0 },
+ { .name = "lp2bsinitvals19", .offset = 0x28C3D8, .type = EXT_IV, .length = 0x0 },
+ { .name = "n19bsinitvals34", .offset = 0x2312A8, .type = EXT_IV, .length = 0x0 },
+/* { .name = "ucode4", .offset = 0x2CF158, .type = EXT_UCODE_1, .length = 0x4 }, */
+ { .name = "ucode20_sslpn_nobt", .offset = 0x2B7624, .type = EXT_UCODE_3, .length = 0x1 },
+ { .name = "ac0bsinitvals40", .offset = 0x272FB8, .type = EXT_IV, .length = 0x248 },
+ /* ucode minor version at offset 0x271c84 */
+ { .name = "lcn2initvals24", .offset = 0x2243B8, .type = EXT_IV, .length = 0x10E0 },
+ { .name = "sslpn4initvals22", .offset = 0x28D3E0, .type = EXT_IV, .length = 0x0 },
+ /* ucode major version at offset 0x288280 */
+ { .name = "sslpn2bsinitvals19", .offset = 0x28C3C8, .type = EXT_IV, .length = 0x0 },
+ { .name = "n0bsinitvals25", .offset = 0x22AEA8, .type = EXT_IV, .length = 0x118 },
+ { .name = "lp2initvals19", .offset = 0x28C3D0, .type = EXT_IV, .length = 0x0 },
+ { .name = "n18bsinitvals32", .offset = 0x231248, .type = EXT_IV, .length = 0x0 },
+ { .name = "lcn0bsinitvals25", .offset = 0x2278A8, .type = EXT_IV, .length = 0x118 },
+ { .name = "n0initvals11", .offset = 0x2CA418, .type = EXT_IV, .length = 0xC10 },
+ { .name = "lcn2bsinitvals24", .offset = 0x2254A0, .type = EXT_IV, .length = 0x118 },
+ /* ucode major version at offset 0x2c5e60 */
+ { .name = "n0absinitvals11", .offset = 0x2CB150, .type = EXT_IV, .length = 0x118 },
+ { .name = "a0g0initvals5", .offset = 0x2C69B8, .type = EXT_IV, .length = 0xA08 },
+ { .name = "a0g1initvals13", .offset = 0x2CD4A0, .type = EXT_IV, .length = 0xBF0 },
+ { .name = "pcm5", .offset = 0x2EF83C, .type = EXT_PCM, .length = 0x520 },
+ { .name = "ucode35_lcn40", .offset = 0x271C60, .type = EXT_UCODE_3, .length = 0x1 },
+ { .name = "ucode14", .offset = 0x2E8698, .type = EXT_UCODE_2, .length = 0x4 },
+ { .name = "ucode36_mimo", .offset = 0x271C68, .type = EXT_UCODE_3, .length = 0x4 },
+ { .name = "a0g0initvals9", .offset = 0x2C8C18, .type = EXT_IV, .length = 0xAD8 },
+ { .name = "ucode17_mimo", .offset = 0x2AE928, .type = EXT_UCODE_3, .length = 0x8CE0 },
+ { .name = "lp0initvals13", .offset = 0x2CB270, .type = EXT_IV, .length = 0x13F0 },
+ { .name = "ucode25_mimo", .offset = 0x243844, .type = EXT_UCODE_3, .length = 0x7D28 },
+ { .name = "lp0bsinitvals16", .offset = 0x28B390, .type = EXT_IV, .length = 0x118 },
+ { .name = "lcn406bsinitvals37", .offset = 0x2312E8, .type = EXT_IV, .length = 0x0 },
+ { .name = "ac0initvals40", .offset = 0x271C88, .type = EXT_IV, .length = 0x1328 },
+ { .name = "ucode30_mimo", .offset = 0x267FBC, .type = EXT_UCODE_3, .length = 0x9C88 },
+ { .name = "b0g0bsinitvals13", .offset = 0x2CD380, .type = EXT_IV, .length = 0x118 },
+ { .name = "n20bsinitvals36", .offset = 0x2312D8, .type = EXT_IV, .length = 0x0 },
+ { .name = "ucode42", .offset = 0x27E61C, .type = EXT_UCODE_3, .length = 0x9C50 },
+ { .name = "lcn407initvals38", .offset = 0x2312F0, .type = EXT_IV, .length = 0x0 },
+ { .name = "lcn1initvals26", .offset = 0x22C038, .type = EXT_IV, .length = 0xF48 },
+ /* ucode major version at offset 0x271c80 */
+ { .name = "ht0initvals26", .offset = 0x22E118, .type = EXT_IV, .length = 0xF48 },
+ { .name = "ucode38_lcn40", .offset = 0x271C78, .type = EXT_UCODE_3, .length = 0x1 },
+ { .name = "lcn407bsinitvals38", .offset = 0x2312F8, .type = EXT_IV, .length = 0x0 },
+ { .name = "lcn403initvals33", .offset = 0x231280, .type = EXT_IV, .length = 0x0 },
+ { .name = "ucode16_sslpn", .offset = 0x2957EC, .type = EXT_UCODE_3, .length = 0x8753 },
+ { .name = "ucode16_mimo", .offset = 0x2A4F64, .type = EXT_UCODE_3, .length = 0x99C0 },
+ /* ucode minor version at offset 0x221fa4 */
+ { .name = "n0bsinitvals17", .offset = 0x28C290, .type = EXT_IV, .length = 0x118 },
+ { .name = "a0g1initvals5", .offset = 0x2C73C8, .type = EXT_IV, .length = 0xA08 },
+ { .name = "n0initvals24", .offset = 0x2255C0, .type = EXT_IV, .length = 0x10E0 },
+ { .name = "lp1initvals20", .offset = 0x28C400, .type = EXT_IV, .length = 0x0 },
+ { .name = "a0g0bsinitvals5", .offset = 0x2C7DD8, .type = EXT_IV, .length = 0x118 },
+ { .name = "ucode9", .offset = 0x2D4394, .type = EXT_UCODE_2, .length = 0x5E00 },
+ { .name = "ucode5", .offset = 0x2CF160, .type = EXT_UCODE_2, .length = 0x5230 },
+ { .name = "ucode22_mimo", .offset = 0x2C5E4C, .type = EXT_UCODE_3, .length = 0x4 },
+ EXTRACT_LIST_END
+};
+
/*
* Links change, so let's not put them into the README.
* I still put them here so we know where the file was obtained.
@@ -874,4 +1047,12 @@ static const struct file files[] =
.flags = FW_FLAG_LE | FW_FLAG_V4,
.extract = _e1b05e268bcdbfef3560c28fc161f30e,
},
+ {
+ /* http://www.lwfinger.com/b43-firmware/broadcom-wl-6.30.163.46.tar.bz2 */
+ .name = "wl_apsta.o",
+ .ucode_version = "784.2",
+ .md5 = "29c8a47094fbae342902d84881a465ff",
+ .flags = FW_FLAG_LE | FW_FLAG_V4,
+ .extract = _29c8a47094fbae342902d84881a465ff,
+ },
};
--
1.8.1.4
^ permalink raw reply related
* 3.10, iwlwifi 6200AGN: AP changed bandwidth in a way we can't support - disconnect
From: Andy Isaacson @ 2013-07-29 16:34 UTC (permalink / raw)
To: Johannes Berg; +Cc: linux-wireless, netdev
After upgrading to 3.10.4 and traveling to Europe I'm often suffering
from failures to associate with the following in dmesg:
[ 37.351621] wlan0: authenticate with 64:70:02:e6:a6:ba
[ 37.364701] wlan0: send auth to 64:70:02:e6:a6:ba (try 1/3)
[ 37.366358] wlan0: authenticated
[ 37.368543] wlan0: associate with 64:70:02:e6:a6:ba (try 1/3)
[ 37.372765] wlan0: RX AssocResp from 64:70:02:e6:a6:ba (capab=0x431 status=0 aid=8)
[ 37.380190] wlan0: associated
[ 37.438935] wlan0: AP 64:70:02:e6:a6:ba changed bandwidth, new config is 2447 MHz, width 1 (2447/0 MHz)
[ 37.438941] wlan0: AP 64:70:02:e6:a6:ba changed bandwidth in a way we can't support - disconnect
I hacked the driver to do
- "AP %pM changed bandwidth, new config is %d MHz, width %d (%d/%d MHz)\n",
+ "AP %pM changed bandwidth, new config is %d MHz, width %d (%d/%d MHz) flags %x/%x\n",
ifmgd->bssid, chandef.chan->center_freq, chandef.width,
- chandef.center_freq1, chandef.center_freq2);
+ chandef.center_freq1, chandef.center_freq2, flags, ifmgd->flags);
and
- if (flags != (ifmgd->flags & (IEEE80211_STA_DISABLE_HT |
+ if ((flags != 0x810 && ifmgd->flags != 0x804) && (
+ flags != (ifmgd->flags & (IEEE80211_STA_DISABLE_HT |
and the result is a working link with
[ 1277.069287] wlan0: authenticate with 64:70:02:e6:a6:ba
[ 1277.118344] wlan0: send auth to 64:70:02:e6:a6:ba (try 1/3)
[ 1277.222126] wlan0: send auth to 64:70:02:e6:a6:ba (try 2/3)
[ 1277.226656] wlan0: authenticated
[ 1277.226806] wlan0: waiting for beacon from 64:70:02:e6:a6:ba
[ 1277.258119] wlan0: associate with 64:70:02:e6:a6:ba (try 1/3)
[ 1277.262717] wlan0: RX AssocResp from 64:70:02:e6:a6:ba (capab=0x431 status=0 aid=9)
[ 1277.269678] wlan0: associated
[ 1277.269727] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
[ 1277.366049] wlan0: AP 64:70:02:e6:a6:ba changed bandwidth, new config is 2447 MHz, width 1 (2447/0 MHz) flags 810/804
[ 2219.627077] wlan0: AP 64:70:02:e6:a6:ba changed bandwidth, new config is 2447 MHz, width 2 (2437/0 MHz) flags 800/804
[ 2220.668210] wlan0: AP 64:70:02:e6:a6:ba changed bandwidth, new config is 2447 MHz, width 1 (2447/0 MHz) flags 810/804
My userland is Debian unstable with
ii wpasupplicant 1.0-3+b2 amd64 client support for WPA and WPA2 (IEEE 802.11i)
ii firmware-iwlwifi 0.36+wheezy.1 all Binary firmware for Intel PRO/Wireless 3945 and 802.11
using ifup with the WPA configuration in /etc/network/interfaces.
Hardware is a Thinkpad x201s. Bootup iwlwifi messages are
[ 7.985050] iwlwifi 0000:02:00.0: irq 42 for MSI/MSI-X
[ 8.061896] iwlwifi 0000:02:00.0: loaded firmware version 9.221.4.1 build 25532 op_mode iwldvm
[ 8.087255] iwlwifi 0000:02:00.0: CONFIG_IWLWIFI_DEBUG enabled
[ 8.087257] iwlwifi 0000:02:00.0: CONFIG_IWLWIFI_DEBUGFS enabled
[ 8.087258] iwlwifi 0000:02:00.0: CONFIG_IWLWIFI_DEVICE_TRACING enabled
[ 8.087260] iwlwifi 0000:02:00.0: CONFIG_IWLWIFI_DEVICE_TESTMODE disabled
[ 8.087261] iwlwifi 0000:02:00.0: CONFIG_IWLWIFI_P2P enabled
[ 8.087264] iwlwifi 0000:02:00.0: Detected Intel(R) Centrino(R) Advanced-N 6200 AGN, REV=0x74
[ 8.087379] iwlwifi 0000:02:00.0: L1 Enabled; Disabling L0S
[ 26.676655] iwlwifi 0000:02:00.0: L1 Enabled; Disabling L0S
[ 26.683499] iwlwifi 0000:02:00.0: Radio type=0x1-0x3-0x1
[ 27.023090] iwlwifi 0000:02:00.0: L1 Enabled; Disabling L0S
[ 27.029927] iwlwifi 0000:02:00.0: Radio type=0x1-0x3-0x1
-andy
^ permalink raw reply
* Re: [RFC/RFT] fwcutter: Add firmware 6.30.163.46
From: Michael Büsch @ 2013-07-29 17:03 UTC (permalink / raw)
To: Larry Finger; +Cc: linux-wireless, b43-dev
In-Reply-To: <1375115025-26851-1-git-send-email-Larry.Finger@lwfinger.net>
[-- Attachment #1: Type: text/plain, Size: 466 bytes --]
On Mon, 29 Jul 2013 11:23:45 -0500
Larry Finger <Larry.Finger@lwfinger.net> wrote:
> Is this change worthwhile?
Why not? Doesn't hurt to have it.
> @@ -874,4 +1047,12 @@ static const struct file files[] =
> .flags = FW_FLAG_LE | FW_FLAG_V4,
> .extract = _e1b05e268bcdbfef3560c28fc161f30e,
> },
> + {
> + /* http://www.lwfinger.com/b43-firmware/broadcom-wl-6.30.163.46.tar.bz2 */
Could you also add the original URL here?
--
Michael
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply
* Re: pull request: bluetooth 2013-07-25
From: John W. Linville @ 2013-07-29 18:43 UTC (permalink / raw)
To: Gustavo Padovan, linux-wireless, linux-bluetooth, linux-kernel
In-Reply-To: <20130725150156.GA21959@joana>
On Thu, Jul 25, 2013 at 04:01:58PM +0100, Gustavo Padovan wrote:
> Hi John,
>
> * Gustavo Padovan <gustavo@padovan.org> [2013-07-25 14:05:54 +0100]:
>
> > Hi John,
> >
> > A few fixes and devices ID additions for 3.11:
> >
> > * There are 3 new ath3k device ids
> > * Fixed stack memory usage in ath3k.
> > * Fixed the init process of BlueFRITZ! devices, they were failing to init
> > due to an unsupported command we sent.
> > * Fixed wrong use of PTR_ERR in btusb code that was preventing intel devices
> > to work properly
> > * Fixed race codition between hci_register_dev() and hci_dev_open() that
> > could cause a NULL pointer dereference.
>
> Marcel just raised the comment that we need to add more information to
> the BlueFRITZ! fixes so I'm steping back with it. So just ignore it for
> now.
>
> Gustavo
Is a new version of this request still coming?
--
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: Pull request: ath-current 20130723
From: John W. Linville @ 2013-07-29 18:42 UTC (permalink / raw)
To: Kalle Valo; +Cc: linux-wireless, ath6kl-devel, ath10k
In-Reply-To: <87ehapwqum.fsf@kamboji.qca.qualcomm.com>
On Tue, Jul 23, 2013 at 12:46:57PM +0300, Kalle Valo wrote:
> Hi John,
>
> here's an ath6kl and ath10k pull request for 3.11-rc series.
>
> Geert Uytterhoeven fixed an ath10k build problem when NO_DMA=y. I added
> a missing MAINTAINERS entry for ath10k and updated ath6kl git tree
> location.
>
> Please let me know if there are any problems, or if you prefer me to
> send them through wireless-next instead.
>
> Kalle
>
> The following changes since commit 64b6f46f1141ad938e354f37af62e28da972e8eb:
>
> ath9k_hw: Fix multicast search for AR9002 family (2013-07-18 16:22:00 -0400)
>
> are available in the git repository at:
>
> git://github.com/kvalo/ath.git for-linville-current
>
> for you to fetch changes up to 58cfb681bffb43654776a218a087028ff425ba9e:
>
> MAINTAINERS: update ath6kl git location (2013-07-22 12:26:12 +0300)
Pulling now...
--
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 V2] fwcutter: Add firmware 6.30.163.46
From: Larry Finger @ 2013-07-29 18:56 UTC (permalink / raw)
To: m; +Cc: linux-wireless, b43-dev, Larry Finger
This firmware version can be extracted from the GPL tarball for the ASUS
GPL code for the RT-AC66U 802.11ac Dual-Band Wireless-AC1750 Gigabit Router.
I believe this to be the first instance of 802.11ac firmware for Broadcom
hardware. The firmware is version 784.2.
Note: The http://www.lwfinger.com/broadcom-wl-6.30.163.46.tar.bz2 is the URL
of the extracted apsta binary. The full GPL package is at
http://dlcdnet.asus.com/pub/ASUS/wireless/RT-AC66U/GPL_RT_AC66U_3004372.zip.
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
---
V2 - Add original URL for full GPL package
---
fwcutter/fwcutter_list.h | 182 +++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 182 insertions(+)
diff --git a/fwcutter/fwcutter_list.h b/fwcutter/fwcutter_list.h
index f84607f..4e0c07a 100644
--- a/fwcutter/fwcutter_list.h
+++ b/fwcutter/fwcutter_list.h
@@ -771,6 +771,179 @@ static struct extract _e1b05e268bcdbfef3560c28fc161f30e[] =
EXTRACT_LIST_END
};
+static struct extract _29c8a47094fbae342902d84881a465ff[] =
+{
+ { .name = "lcn1bsinitvals26", .offset = 0x22CF88, .type = EXT_IV, .length = 0x118 },
+ { .name = "n0bsinitvals22", .offset = 0x28D3D8, .type = EXT_IV, .length = 0x0 },
+ { .name = "lcn0bsinitvals26", .offset = 0x22BF18, .type = EXT_IV, .length = 0x118 },
+ { .name = "ac1bsinitvals42", .offset = 0x274530, .type = EXT_IV, .length = 0x248 },
+ { .name = "ucode24_lcn", .offset = 0x23AF24, .type = EXT_UCODE_3, .length = 0x891A },
+ /* ucode minor version at offset 0x288284 */
+ { .name = "ht0bsinitvals26", .offset = 0x22F068, .type = EXT_IV, .length = 0x118 },
+ { .name = "ucode24_mimo", .offset = 0x231300, .type = EXT_UCODE_3, .length = 0x9C20 },
+ { .name = "n20initvals36", .offset = 0x2312D0, .type = EXT_IV, .length = 0x0 },
+ { .name = "ucode15", .offset = 0x2E86A0, .type = EXT_UCODE_3, .length = 0x7190 },
+ { .name = "b0g0bsinitvals9", .offset = 0x2C8AF8, .type = EXT_IV, .length = 0x118 },
+ { .name = "lcn405initvals35", .offset = 0x2312C0, .type = EXT_IV, .length = 0x0 },
+ { .name = "ac1initvals42", .offset = 0x273218, .type = EXT_IV, .length = 0x1310 },
+ { .name = "lp0bsinitvals13", .offset = 0x2CC668, .type = EXT_IV, .length = 0x118 },
+ { .name = "b0g0bsinitvals5", .offset = 0x2C6898, .type = EXT_IV, .length = 0x118 },
+ { .name = "ucode43", .offset = 0x288270, .type = EXT_UCODE_3, .length = 0x4 },
+ { .name = "lp0initvals16", .offset = 0x28A3F8, .type = EXT_IV, .length = 0xF90 },
+ { .name = "lp1bsinitvals20", .offset = 0x28C408, .type = EXT_IV, .length = 0x0 },
+ { .name = "lcn1initvals25", .offset = 0x2279C8, .type = EXT_IV, .length = 0x10D8 },
+ { .name = "b0g0initvals13", .offset = 0x2CC788, .type = EXT_IV, .length = 0xBF0 },
+ { .name = "lcn402initvals33", .offset = 0x231270, .type = EXT_IV, .length = 0x0 },
+ { .name = "sslpn3bsinitvals21", .offset = 0x28D2B0, .type = EXT_IV, .length = 0x118 },
+ { .name = "ht0initvals29", .offset = 0x22F198, .type = EXT_IV, .length = 0xF98 },
+ { .name = "n2bsinitvals19", .offset = 0x28C3B8, .type = EXT_IV, .length = 0x0 },
+ { .name = "sslpn1bsinitvals20", .offset = 0x28C3F8, .type = EXT_IV, .length = 0x0 },
+ { .name = "ucode25_lcn", .offset = 0x24B570, .type = EXT_UCODE_3, .length = 0x8657 },
+ { .name = "lcn0initvals24", .offset = 0x221FA8, .type = EXT_IV, .length = 0x10E0 },
+ { .name = "lcn404initvals33", .offset = 0x231290, .type = EXT_IV, .length = 0x0 },
+ { .name = "sslpn1bsinitvals27", .offset = 0x22F190, .type = EXT_IV, .length = 0x0 },
+/* { .name = "a0g0bsinitvals4", .offset = 0x2C5E80, .type = EXT_IV, .length = 0x0 }, */
+ { .name = "lcn404bsinitvals33", .offset = 0x231298, .type = EXT_IV, .length = 0x0 },
+ { .name = "ucode22_sslpn", .offset = 0x2C5E44, .type = EXT_UCODE_3, .length = 0x1 },
+ { .name = "lcn1bsinitvals25", .offset = 0x228AA8, .type = EXT_IV, .length = 0x118 },
+ { .name = "lcn406initvals37", .offset = 0x2312E0, .type = EXT_IV, .length = 0x0 },
+ { .name = "ac3initvals43", .offset = 0x274780, .type = EXT_IV, .length = 0x0 },
+ { .name = "lcn2initvals26", .offset = 0x22D0A8, .type = EXT_IV, .length = 0xF48 },
+/* { .name = "b0g0initvals4", .offset = 0x2C5E68, .type = EXT_IV, .length = 0x0 }, */
+ { .name = "ucode20_sslpn", .offset = 0x2B761C, .type = EXT_UCODE_3, .length = 0x1 },
+ { .name = "lcn403bsinitvals33", .offset = 0x231288, .type = EXT_IV, .length = 0x0 },
+ { .name = "a0g0bsinitvals9", .offset = 0x2CA1D8, .type = EXT_IV, .length = 0x118 },
+ { .name = "n0initvals17", .offset = 0x28B4B0, .type = EXT_IV, .length = 0xDD8 },
+ { .name = "ht0bsinitvals29", .offset = 0x230138, .type = EXT_IV, .length = 0x118 },
+ { .name = "ucode21_sslpn", .offset = 0x2B762C, .type = EXT_UCODE_3, .length = 0x7405 },
+ { .name = "sslpn1initvals20", .offset = 0x28C3F0, .type = EXT_IV, .length = 0x0 },
+ { .name = "sslpn0initvals16", .offset = 0x289340, .type = EXT_IV, .length = 0xF90 },
+ { .name = "lcn0initvals26", .offset = 0x22AFC8, .type = EXT_IV, .length = 0xF48 },
+ { .name = "ucode27_sslpn", .offset = 0x25D6E0, .type = EXT_UCODE_3, .length = 0x1 },
+ { .name = "ucode29_mimo", .offset = 0x25D6E8, .type = EXT_UCODE_3, .length = 0xA8D0 },
+ { .name = "ucode21_sslpn_nobt", .offset = 0x2BEA38, .type = EXT_UCODE_3, .length = 0x7405 },
+ { .name = "lp0initvals15", .offset = 0x2CE1C8, .type = EXT_IV, .length = 0xE68 },
+ { .name = "ucode19_sslpn", .offset = 0x2B760C, .type = EXT_UCODE_3, .length = 0x1 },
+ { .name = "lcn1bsinitvals24", .offset = 0x224298, .type = EXT_IV, .length = 0x118 },
+ { .name = "lcn401bsinitvals33", .offset = 0x231268, .type = EXT_IV, .length = 0x0 },
+ { .name = "lp0bsinitvals14", .offset = 0x2CE1C0, .type = EXT_IV, .length = 0x0 },
+/* { .name = "b0g0bsinitvals4", .offset = 0x2C5E70, .type = EXT_IV, .length = 0x0 }, */
+ { .name = "ucode16_sslpn_nobt", .offset = 0x29DF44, .type = EXT_UCODE_3, .length = 0x701C },
+ { .name = "n16bsinitvals30", .offset = 0x231120, .type = EXT_IV, .length = 0x118 },
+ { .name = "a0g1bsinitvals13", .offset = 0x2CE098, .type = EXT_IV, .length = 0x118 },
+ { .name = "lcn402bsinitvals33", .offset = 0x231278, .type = EXT_IV, .length = 0x0 },
+ { .name = "ucode19_sslpn_nobt", .offset = 0x2B7614, .type = EXT_UCODE_3, .length = 0x1 },
+ { .name = "ucode40", .offset = 0x274790, .type = EXT_UCODE_3, .length = 0x9E80 },
+ { .name = "lcn1initvals24", .offset = 0x2231B0, .type = EXT_IV, .length = 0x10E0 },
+ { .name = "sslpn2initvals19", .offset = 0x28C3C0, .type = EXT_IV, .length = 0x0 },
+ { .name = "ac2initvals41", .offset = 0x273208, .type = EXT_IV, .length = 0x0 },
+ { .name = "n16initvals30", .offset = 0x230258, .type = EXT_IV, .length = 0xEC0 },
+ { .name = "ucode16_lp", .offset = 0x28D400, .type = EXT_UCODE_3, .length = 0x83E8 },
+ { .name = "n0initvals22", .offset = 0x28D3D0, .type = EXT_IV, .length = 0x0 },
+ { .name = "sslpn3initvals21", .offset = 0x28C410, .type = EXT_IV, .length = 0xE98 },
+ { .name = "lp1initvals22", .offset = 0x28D3F0, .type = EXT_IV, .length = 0x0 },
+ { .name = "ac2bsinitvals41", .offset = 0x273210, .type = EXT_IV, .length = 0x0 },
+ { .name = "a0g1bsinitvals9", .offset = 0x2CA2F8, .type = EXT_IV, .length = 0x118 },
+ { .name = "n0bsinitvals11", .offset = 0x2CB030, .type = EXT_IV, .length = 0x118 },
+ { .name = "a0g1bsinitvals5", .offset = 0x2C7EF8, .type = EXT_IV, .length = 0x118 },
+ { .name = "lcn2bsinitvals26", .offset = 0x22DFF8, .type = EXT_IV, .length = 0x118 },
+ { .name = "ucode34_mimo", .offset = 0x271C58, .type = EXT_UCODE_3, .length = 0x4 },
+ { .name = "n1initvals20", .offset = 0x28C3E0, .type = EXT_IV, .length = 0x0 },
+ { .name = "lcn2initvals25", .offset = 0x228BC8, .type = EXT_IV, .length = 0x10D8 },
+ { .name = "ucode37_lcn40", .offset = 0x271C70, .type = EXT_UCODE_3, .length = 0x1 },
+ { .name = "n0initvals16", .offset = 0x288288, .type = EXT_IV, .length = 0xF90 },
+ { .name = "n0bsinitvals24", .offset = 0x2266A8, .type = EXT_IV, .length = 0x118 },
+ { .name = "n1bsinitvals20", .offset = 0x28C3E8, .type = EXT_IV, .length = 0x0 },
+ { .name = "b0g0initvals5", .offset = 0x2C5E88, .type = EXT_IV, .length = 0xA08 },
+ { .name = "b0g0initvals9", .offset = 0x2C8018, .type = EXT_IV, .length = 0xAD8 },
+ { .name = "lcn0bsinitvals24", .offset = 0x223090, .type = EXT_IV, .length = 0x118 },
+ { .name = "lcn2bsinitvals25", .offset = 0x229CA8, .type = EXT_IV, .length = 0x118 },
+ { .name = "sslpn4bsinitvals22", .offset = 0x28D3E8, .type = EXT_IV, .length = 0x0 },
+ { .name = "ucode11", .offset = 0x2DA198, .type = EXT_UCODE_2, .length = 0x7818 },
+ { .name = "n2initvals19", .offset = 0x28C3B0, .type = EXT_IV, .length = 0x0 },
+/* { .name = "a0g0initvals4", .offset = 0x2C5E78, .type = EXT_IV, .length = 0x0 }, */
+ { .name = "pcm4", .offset = 0x2EF834, .type = EXT_PCM, .length = 0x4 },
+ { .name = "ucode13", .offset = 0x2E19B4, .type = EXT_UCODE_2, .length = 0x6CE0 },
+ { .name = "lcn0initvals25", .offset = 0x2267C8, .type = EXT_IV, .length = 0x10D8 },
+ { .name = "sslpn1initvals27", .offset = 0x22F188, .type = EXT_IV, .length = 0x0 },
+ { .name = "lp0bsinitvals15", .offset = 0x2CF038, .type = EXT_IV, .length = 0x118 },
+ { .name = "lp0initvals14", .offset = 0x2CE1B8, .type = EXT_IV, .length = 0x0 },
+ { .name = "lp1bsinitvals22", .offset = 0x28D3F8, .type = EXT_IV, .length = 0x0 },
+ { .name = "n18initvals32", .offset = 0x231240, .type = EXT_IV, .length = 0x0 },
+ { .name = "lcn405bsinitvals35", .offset = 0x2312C8, .type = EXT_IV, .length = 0x0 },
+ { .name = "ucode41", .offset = 0x27E614, .type = EXT_UCODE_3, .length = 0x4 },
+ { .name = "lcn400initvals33", .offset = 0x231250, .type = EXT_IV, .length = 0x0 },
+ { .name = "sslpn0bsinitvals16", .offset = 0x28A2D8, .type = EXT_IV, .length = 0x118 },
+ /* ucode minor version at offset 0x2c5e64 */
+ { .name = "lcn401initvals33", .offset = 0x231260, .type = EXT_IV, .length = 0x0 },
+ { .name = "ucode33_lcn40", .offset = 0x271C50, .type = EXT_UCODE_3, .length = 0x1 },
+ { .name = "a0g1initvals9", .offset = 0x2C96F8, .type = EXT_IV, .length = 0xAD8 },
+ { .name = "ucode32_mimo", .offset = 0x271C48, .type = EXT_UCODE_3, .length = 0x4 },
+ { .name = "lcn400bsinitvals33", .offset = 0x231258, .type = EXT_IV, .length = 0x0 },
+ { .name = "lcn404bsinitvals35", .offset = 0x2312B8, .type = EXT_IV, .length = 0x0 },
+ /* ucode major version at offset 0x221fa0 */
+ { .name = "n19initvals34", .offset = 0x2312A0, .type = EXT_IV, .length = 0x0 },
+ { .name = "ac3bsinitvals43", .offset = 0x274788, .type = EXT_IV, .length = 0x0 },
+ { .name = "n0initvals25", .offset = 0x229DC8, .type = EXT_IV, .length = 0x10D8 },
+ { .name = "ucode26_mimo", .offset = 0x253BCC, .type = EXT_UCODE_3, .length = 0x9B10 },
+ { .name = "n0bsinitvals16", .offset = 0x289220, .type = EXT_IV, .length = 0x118 },
+ { .name = "lcn404initvals35", .offset = 0x2312B0, .type = EXT_IV, .length = 0x0 },
+ { .name = "lp2bsinitvals19", .offset = 0x28C3D8, .type = EXT_IV, .length = 0x0 },
+ { .name = "n19bsinitvals34", .offset = 0x2312A8, .type = EXT_IV, .length = 0x0 },
+/* { .name = "ucode4", .offset = 0x2CF158, .type = EXT_UCODE_1, .length = 0x4 }, */
+ { .name = "ucode20_sslpn_nobt", .offset = 0x2B7624, .type = EXT_UCODE_3, .length = 0x1 },
+ { .name = "ac0bsinitvals40", .offset = 0x272FB8, .type = EXT_IV, .length = 0x248 },
+ /* ucode minor version at offset 0x271c84 */
+ { .name = "lcn2initvals24", .offset = 0x2243B8, .type = EXT_IV, .length = 0x10E0 },
+ { .name = "sslpn4initvals22", .offset = 0x28D3E0, .type = EXT_IV, .length = 0x0 },
+ /* ucode major version at offset 0x288280 */
+ { .name = "sslpn2bsinitvals19", .offset = 0x28C3C8, .type = EXT_IV, .length = 0x0 },
+ { .name = "n0bsinitvals25", .offset = 0x22AEA8, .type = EXT_IV, .length = 0x118 },
+ { .name = "lp2initvals19", .offset = 0x28C3D0, .type = EXT_IV, .length = 0x0 },
+ { .name = "n18bsinitvals32", .offset = 0x231248, .type = EXT_IV, .length = 0x0 },
+ { .name = "lcn0bsinitvals25", .offset = 0x2278A8, .type = EXT_IV, .length = 0x118 },
+ { .name = "n0initvals11", .offset = 0x2CA418, .type = EXT_IV, .length = 0xC10 },
+ { .name = "lcn2bsinitvals24", .offset = 0x2254A0, .type = EXT_IV, .length = 0x118 },
+ /* ucode major version at offset 0x2c5e60 */
+ { .name = "n0absinitvals11", .offset = 0x2CB150, .type = EXT_IV, .length = 0x118 },
+ { .name = "a0g0initvals5", .offset = 0x2C69B8, .type = EXT_IV, .length = 0xA08 },
+ { .name = "a0g1initvals13", .offset = 0x2CD4A0, .type = EXT_IV, .length = 0xBF0 },
+ { .name = "pcm5", .offset = 0x2EF83C, .type = EXT_PCM, .length = 0x520 },
+ { .name = "ucode35_lcn40", .offset = 0x271C60, .type = EXT_UCODE_3, .length = 0x1 },
+ { .name = "ucode14", .offset = 0x2E8698, .type = EXT_UCODE_2, .length = 0x4 },
+ { .name = "ucode36_mimo", .offset = 0x271C68, .type = EXT_UCODE_3, .length = 0x4 },
+ { .name = "a0g0initvals9", .offset = 0x2C8C18, .type = EXT_IV, .length = 0xAD8 },
+ { .name = "ucode17_mimo", .offset = 0x2AE928, .type = EXT_UCODE_3, .length = 0x8CE0 },
+ { .name = "lp0initvals13", .offset = 0x2CB270, .type = EXT_IV, .length = 0x13F0 },
+ { .name = "ucode25_mimo", .offset = 0x243844, .type = EXT_UCODE_3, .length = 0x7D28 },
+ { .name = "lp0bsinitvals16", .offset = 0x28B390, .type = EXT_IV, .length = 0x118 },
+ { .name = "lcn406bsinitvals37", .offset = 0x2312E8, .type = EXT_IV, .length = 0x0 },
+ { .name = "ac0initvals40", .offset = 0x271C88, .type = EXT_IV, .length = 0x1328 },
+ { .name = "ucode30_mimo", .offset = 0x267FBC, .type = EXT_UCODE_3, .length = 0x9C88 },
+ { .name = "b0g0bsinitvals13", .offset = 0x2CD380, .type = EXT_IV, .length = 0x118 },
+ { .name = "n20bsinitvals36", .offset = 0x2312D8, .type = EXT_IV, .length = 0x0 },
+ { .name = "ucode42", .offset = 0x27E61C, .type = EXT_UCODE_3, .length = 0x9C50 },
+ { .name = "lcn407initvals38", .offset = 0x2312F0, .type = EXT_IV, .length = 0x0 },
+ { .name = "lcn1initvals26", .offset = 0x22C038, .type = EXT_IV, .length = 0xF48 },
+ /* ucode major version at offset 0x271c80 */
+ { .name = "ht0initvals26", .offset = 0x22E118, .type = EXT_IV, .length = 0xF48 },
+ { .name = "ucode38_lcn40", .offset = 0x271C78, .type = EXT_UCODE_3, .length = 0x1 },
+ { .name = "lcn407bsinitvals38", .offset = 0x2312F8, .type = EXT_IV, .length = 0x0 },
+ { .name = "lcn403initvals33", .offset = 0x231280, .type = EXT_IV, .length = 0x0 },
+ { .name = "ucode16_sslpn", .offset = 0x2957EC, .type = EXT_UCODE_3, .length = 0x8753 },
+ { .name = "ucode16_mimo", .offset = 0x2A4F64, .type = EXT_UCODE_3, .length = 0x99C0 },
+ /* ucode minor version at offset 0x221fa4 */
+ { .name = "n0bsinitvals17", .offset = 0x28C290, .type = EXT_IV, .length = 0x118 },
+ { .name = "a0g1initvals5", .offset = 0x2C73C8, .type = EXT_IV, .length = 0xA08 },
+ { .name = "n0initvals24", .offset = 0x2255C0, .type = EXT_IV, .length = 0x10E0 },
+ { .name = "lp1initvals20", .offset = 0x28C400, .type = EXT_IV, .length = 0x0 },
+ { .name = "a0g0bsinitvals5", .offset = 0x2C7DD8, .type = EXT_IV, .length = 0x118 },
+ { .name = "ucode9", .offset = 0x2D4394, .type = EXT_UCODE_2, .length = 0x5E00 },
+ { .name = "ucode5", .offset = 0x2CF160, .type = EXT_UCODE_2, .length = 0x5230 },
+ { .name = "ucode22_mimo", .offset = 0x2C5E4C, .type = EXT_UCODE_3, .length = 0x4 },
+ EXTRACT_LIST_END
+};
+
/*
* Links change, so let's not put them into the README.
* I still put them here so we know where the file was obtained.
@@ -874,4 +1047,13 @@ static const struct file files[] =
.flags = FW_FLAG_LE | FW_FLAG_V4,
.extract = _e1b05e268bcdbfef3560c28fc161f30e,
},
+ {
+ /* http://www.lwfinger.com/b43-firmware/broadcom-wl-6.30.163.46.tar.bz2 */
+ /* http://dlcdnet.asus.com/pub/ASUS/wireless/RT-AC66U/GPL_RT_AC66U_3004372.zip */
+ .name = "wl_apsta.o",
+ .ucode_version = "784.2",
+ .md5 = "29c8a47094fbae342902d84881a465ff",
+ .flags = FW_FLAG_LE | FW_FLAG_V4,
+ .extract = _29c8a47094fbae342902d84881a465ff,
+ },
};
--
1.8.1.4
^ permalink raw reply related
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