Linux wireless drivers development
 help / color / mirror / Atom feed
* Re: ath9k: BUG kmalloc-8192: Poison overwritten
From: Justin P. Mattock @ 2010-05-14  1:13 UTC (permalink / raw)
  To: Bruno Randolf
  Cc: Luis R. Rodriguez, linux-wireless, Linux Kernel Mailing List
In-Reply-To: <201005141008.20667.br1@einfach.org>

On 05/13/10 18:08, Bruno Randolf wrote:
> On Friday 14 May 2010 09:50:51 Justin P. Mattock wrote:
>> On 05/13/10 17:28, Luis R. Rodriguez wrote:
>>> On Thu, May 13, 2010 at 5:21 PM, Justin P. Mattock
>>>
>>> <justinmattock@gmail.com>   wrote:
>>>> On 05/13/10 16:01, Luis R. Rodriguez wrote:
>>>>> On Thu, May 13, 2010 at 3:17 PM, Justin P. Mattock
>>>>>
>>>>> <justinmattock@gmail.com>     wrote:
>>>>>> not sure what this is, but while at a convention
>>>>>> I was trying to access the internet and(below is
>>>>>> full dmesg) this showed up.
>>>>>>
>>>>>> After receiving this, I sat and tried to re-create
>>>>>> my steps to reproduce but had no luck(was even going
>>>>>> todo a bisect n the spot if I could re-create).
>>>>>
>>>>> OK this stuff is hard to reproduce it seems.. you have an Atheros
>>>>> AR5418 MAC/BB Rev:2 AR5133 RF Rev:81, what kconfig option do you use
>>>>> to get the poison stuff? I am just surprised we haven't seen it
>>>>> ourselves yet. Let me make sure all of us get this kconfig option
>>>>> enabled.
>>>>>
>>>>>     Luis
>>>>
>>>> CONFIG_ATH_COMMON=m
>>>> # CONFIG_ATH_DEBUG is not set
>>>> CONFIG_ATH5K=m
>>>> # CONFIG_ATH5K_DEBUG is not set
>>>> CONFIG_ATH9K_HW=m
>>>> CONFIG_ATH9K_COMMON=m
>>>> CONFIG_ATH9K=m
>>>> # CONFIG_ATH9K_DEBUGFS is not set
>>>>
>>>> if you need my .config let me know.
>>>> (I can try again reproducing, but man
>>>> just doesn't easily fire off).
>>>
>>> Oh I mean the config options to enable the poison rant.
>>>
>>>     Luis
>>
>> shoot.. not sure how to grep for the right info
>> in the .config for you, heres what grepping for COFIG_DEBUG
>> looks like:
>> CONFIG_DEBUG_FS=y
>> CONFIG_DEBUG_KERNEL=y
>> CONFIG_DEBUG_RT_MUTEXES=y
>> CONFIG_DEBUG_PI_LIST=y
>> CONFIG_DEBUG_SPINLOCK=y
>> CONFIG_DEBUG_MUTEXES=y
>> CONFIG_DEBUG_BUGVERBOSE=y
>> CONFIG_DEBUG_MEMORY_INIT=y
>> CONFIG_DEBUG_STACKOVERFLOW=y
>
> oh, this reminds me of a similar report we had for ath5k:
>
> https://bugzilla.kernel.org/show_bug.cgi?id=15861
>
> the subject on this mailing list was "ath5k misbehaving affecting other kernel
> parts unrelated?"
>
> bruno
>

Could be.. From what I remember
all I was doing was switching from
one wireless network to another
(then opening firefox to sign my life away).

eventually giving up, realizing I needed 99
big ones to be back on the grid.
(beauty of git though is I don't need
to be online to work).

Justin P. Mattock

^ permalink raw reply

* Re: ath9k: BUG kmalloc-8192: Poison overwritten
From: Bruno Randolf @ 2010-05-14  1:08 UTC (permalink / raw)
  To: Justin P. Mattock
  Cc: Luis R. Rodriguez, linux-wireless, Linux Kernel Mailing List
In-Reply-To: <4BEC9E6B.30809@gmail.com>

On Friday 14 May 2010 09:50:51 Justin P. Mattock wrote:
> On 05/13/10 17:28, Luis R. Rodriguez wrote:
> > On Thu, May 13, 2010 at 5:21 PM, Justin P. Mattock
> > 
> > <justinmattock@gmail.com>  wrote:
> >> On 05/13/10 16:01, Luis R. Rodriguez wrote:
> >>> On Thu, May 13, 2010 at 3:17 PM, Justin P. Mattock
> >>> 
> >>> <justinmattock@gmail.com>    wrote:
> >>>> not sure what this is, but while at a convention
> >>>> I was trying to access the internet and(below is
> >>>> full dmesg) this showed up.
> >>>> 
> >>>> After receiving this, I sat and tried to re-create
> >>>> my steps to reproduce but had no luck(was even going
> >>>> todo a bisect n the spot if I could re-create).
> >>> 
> >>> OK this stuff is hard to reproduce it seems.. you have an Atheros
> >>> AR5418 MAC/BB Rev:2 AR5133 RF Rev:81, what kconfig option do you use
> >>> to get the poison stuff? I am just surprised we haven't seen it
> >>> ourselves yet. Let me make sure all of us get this kconfig option
> >>> enabled.
> >>> 
> >>>    Luis
> >> 
> >> CONFIG_ATH_COMMON=m
> >> # CONFIG_ATH_DEBUG is not set
> >> CONFIG_ATH5K=m
> >> # CONFIG_ATH5K_DEBUG is not set
> >> CONFIG_ATH9K_HW=m
> >> CONFIG_ATH9K_COMMON=m
> >> CONFIG_ATH9K=m
> >> # CONFIG_ATH9K_DEBUGFS is not set
> >> 
> >> if you need my .config let me know.
> >> (I can try again reproducing, but man
> >> just doesn't easily fire off).
> > 
> > Oh I mean the config options to enable the poison rant.
> > 
> >    Luis
> 
> shoot.. not sure how to grep for the right info
> in the .config for you, heres what grepping for COFIG_DEBUG
> looks like:
> CONFIG_DEBUG_FS=y
> CONFIG_DEBUG_KERNEL=y
> CONFIG_DEBUG_RT_MUTEXES=y
> CONFIG_DEBUG_PI_LIST=y
> CONFIG_DEBUG_SPINLOCK=y
> CONFIG_DEBUG_MUTEXES=y
> CONFIG_DEBUG_BUGVERBOSE=y
> CONFIG_DEBUG_MEMORY_INIT=y
> CONFIG_DEBUG_STACKOVERFLOW=y

oh, this reminds me of a similar report we had for ath5k:

https://bugzilla.kernel.org/show_bug.cgi?id=15861

the subject on this mailing list was "ath5k misbehaving affecting other kernel 
parts unrelated?"

bruno

^ permalink raw reply

* Re: ath9k: BUG kmalloc-8192: Poison overwritten
From: Justin P. Mattock @ 2010-05-14  0:50 UTC (permalink / raw)
  To: Luis R. Rodriguez; +Cc: linux-wireless, Linux Kernel Mailing List
In-Reply-To: <AANLkTinKoMxdkPYQA_AblpByL6zAiAP5hv2M3Jn2R3hM@mail.gmail.com>

On 05/13/10 17:28, Luis R. Rodriguez wrote:
> On Thu, May 13, 2010 at 5:21 PM, Justin P. Mattock
> <justinmattock@gmail.com>  wrote:
>> On 05/13/10 16:01, Luis R. Rodriguez wrote:
>>>
>>> On Thu, May 13, 2010 at 3:17 PM, Justin P. Mattock
>>> <justinmattock@gmail.com>    wrote:
>>>>
>>>> not sure what this is, but while at a convention
>>>> I was trying to access the internet and(below is
>>>> full dmesg) this showed up.
>>>>
>>>> After receiving this, I sat and tried to re-create
>>>> my steps to reproduce but had no luck(was even going
>>>> todo a bisect n the spot if I could re-create).
>>>
>>> OK this stuff is hard to reproduce it seems.. you have an Atheros
>>> AR5418 MAC/BB Rev:2 AR5133 RF Rev:81, what kconfig option do you use
>>> to get the poison stuff? I am just surprised we haven't seen it
>>> ourselves yet. Let me make sure all of us get this kconfig option
>>> enabled.
>>>
>>>    Luis
>>>
>>
>>
>>
>> CONFIG_ATH_COMMON=m
>> # CONFIG_ATH_DEBUG is not set
>> CONFIG_ATH5K=m
>> # CONFIG_ATH5K_DEBUG is not set
>> CONFIG_ATH9K_HW=m
>> CONFIG_ATH9K_COMMON=m
>> CONFIG_ATH9K=m
>> # CONFIG_ATH9K_DEBUGFS is not set
>>
>> if you need my .config let me know.
>> (I can try again reproducing, but man
>> just doesn't easily fire off).
>
> Oh I mean the config options to enable the poison rant.
>
>    Luis
>

shoot.. not sure how to grep for the right info
in the .config for you, heres what grepping for COFIG_DEBUG
looks like:
CONFIG_DEBUG_FS=y
CONFIG_DEBUG_KERNEL=y
CONFIG_DEBUG_RT_MUTEXES=y
CONFIG_DEBUG_PI_LIST=y
CONFIG_DEBUG_SPINLOCK=y
CONFIG_DEBUG_MUTEXES=y
CONFIG_DEBUG_BUGVERBOSE=y
CONFIG_DEBUG_MEMORY_INIT=y
CONFIG_DEBUG_STACKOVERFLOW=y


Justin P. Mattock

^ permalink raw reply

* Re: ath9k: BUG kmalloc-8192: Poison overwritten
From: Luis R. Rodriguez @ 2010-05-14  0:28 UTC (permalink / raw)
  To: Justin P. Mattock; +Cc: linux-wireless, Linux Kernel Mailing List
In-Reply-To: <4BEC9782.2040705@gmail.com>

On Thu, May 13, 2010 at 5:21 PM, Justin P. Mattock
<justinmattock@gmail.com> wrote:
> On 05/13/10 16:01, Luis R. Rodriguez wrote:
>>
>> On Thu, May 13, 2010 at 3:17 PM, Justin P. Mattock
>> <justinmattock@gmail.com>  wrote:
>>>
>>> not sure what this is, but while at a convention
>>> I was trying to access the internet and(below is
>>> full dmesg) this showed up.
>>>
>>> After receiving this, I sat and tried to re-create
>>> my steps to reproduce but had no luck(was even going
>>> todo a bisect n the spot if I could re-create).
>>
>> OK this stuff is hard to reproduce it seems.. you have an Atheros
>> AR5418 MAC/BB Rev:2 AR5133 RF Rev:81, what kconfig option do you use
>> to get the poison stuff? I am just surprised we haven't seen it
>> ourselves yet. Let me make sure all of us get this kconfig option
>> enabled.
>>
>>   Luis
>>
>
>
>
> CONFIG_ATH_COMMON=m
> # CONFIG_ATH_DEBUG is not set
> CONFIG_ATH5K=m
> # CONFIG_ATH5K_DEBUG is not set
> CONFIG_ATH9K_HW=m
> CONFIG_ATH9K_COMMON=m
> CONFIG_ATH9K=m
> # CONFIG_ATH9K_DEBUGFS is not set
>
> if you need my .config let me know.
> (I can try again reproducing, but man
> just doesn't easily fire off).

Oh I mean the config options to enable the poison rant.

  Luis

^ permalink raw reply

* Re: ath9k: BUG kmalloc-8192: Poison overwritten
From: Justin P. Mattock @ 2010-05-14  0:21 UTC (permalink / raw)
  To: Luis R. Rodriguez; +Cc: linux-wireless, Linux Kernel Mailing List
In-Reply-To: <AANLkTim7B5z76zJ33by6SGMgSy1gZF6qiwhEhAQ3NUtG@mail.gmail.com>

On 05/13/10 16:01, Luis R. Rodriguez wrote:
> On Thu, May 13, 2010 at 3:17 PM, Justin P. Mattock
> <justinmattock@gmail.com>  wrote:
>> not sure what this is, but while at a convention
>> I was trying to access the internet and(below is
>> full dmesg) this showed up.
>>
>> After receiving this, I sat and tried to re-create
>> my steps to reproduce but had no luck(was even going
>> todo a bisect n the spot if I could re-create).
>
> OK this stuff is hard to reproduce it seems.. you have an Atheros
> AR5418 MAC/BB Rev:2 AR5133 RF Rev:81, what kconfig option do you use
> to get the poison stuff? I am just surprised we haven't seen it
> ourselves yet. Let me make sure all of us get this kconfig option
> enabled.
>
>    Luis
>



CONFIG_ATH_COMMON=m
# CONFIG_ATH_DEBUG is not set
CONFIG_ATH5K=m
# CONFIG_ATH5K_DEBUG is not set
CONFIG_ATH9K_HW=m
CONFIG_ATH9K_COMMON=m
CONFIG_ATH9K=m
# CONFIG_ATH9K_DEBUGFS is not set

if you need my .config let me know.
(I can try again reproducing, but man
just doesn't easily fire off).

Justin P. Mattock

^ permalink raw reply

* Re: [PATCH 0/2] iwlwifi fixes for 2.6.34
From: reinette chatre @ 2010-05-13 23:16 UTC (permalink / raw)
  To: sedat.dilek@gmail.com
  Cc: linville@tuxdriver.com, linux-wireless@vger.kernel.org,
	ipw3945-devel@lists.sourceforge.net
In-Reply-To: <AANLkTilireLxaN70NBPVqZwugHoKk1Iy2_I-cg0ev2oq@mail.gmail.com>

Hi Sedat,

On Thu, 2010-05-13 at 15:58 -0700, Sedat Dilek wrote:
> Sorry, I was confused by the comments in [1] and I am especially
> interested in the internal scans stuff:
> 
> Port following patch to 3945.

Yeah ... in retrospect that commit message could benefit with the
details on why it is needed. Sorry for the confusion. It is indeed a
port of the iwlagn patch since iwlagn used internal scanning long before
iwl3945 and the race was thus fixed there first. The same fix was not
done at that time for iwl3945 since it (iwl3945) was not using internal
scanning.

> 
> "commit 90c4162ff59a3281b6d2f7206740be6217bd6758
> Author: Johannes Berg <johannes.berg@intel.com>
> Date:   Wed Apr 7 00:21:36 2010 -0700
>     iwlwifi: fix scan races"
> 
> The above mentionned patch is already accepted to upstream (2.6.34)
> [2] and iwlagn _is_ already using internal scans.

Right.

>  So why is iwl3945
> different in 2.6.34 especially in that case?

In 2.6.34 iwl3945 never calls RF reset, which triggers an internal scan.
In 2.6.34 iwlagn calls RF reset if the information received in
statistics notification warrants it. This feature is added to iwl3945 in
2.6.35 with [3].

> On first sight, I can't see the correlation of "iwl3945: add plcp
> error checking" [3] and "iwl3945: fix scan races" [1].

Note that [3] adds a value (and implementation behind that value) to the
check_plcp_health function pointer, which is called from
iwl_recover_from_statistics() which is for the first time made available
to iwl3945 in this patch also (see changes to iwl-rx.c).  It is
iwl_recover_from_statistics() that uses statistic information (now
available via the new check_plcp_health function) to decide if an RF
reset is needed. Before this patch iwl3945 merely recorded received
statistics, it never made decisions based on the information contained
in it. This patch introduces the logic to use statistics information to
decide if an RF reset is needed and will trigger and RF reset if needed.

Now, an RF reset is done via an internal scan and before [3] there was
nothing in iwl3945 that triggered an internal scan. We do have issues
with internal scanning, but they were not all addressed for iwl3945
since iwl3945 was not using internal scanning. With [3] we introduced
usage of internal scanning so needed to make sure that the internal scan
races are fixed for it also which was done with [1].


> [1] https://patchwork.kernel.org/patch/98326/
> [2] http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=88be026490ed89c2ffead81a52531fbac5507e01
> [3] http://git.kernel.org/?p=linux/kernel/git/iwlwifi/iwlwifi-2.6.git;a=commit;h=a29576a7844326c5223f4d4adbfd3f4d64173d4c

Reinette



^ permalink raw reply

* Re: Strange ACK Behaviour with ath9k
From: Björn Smedman @ 2010-05-13 23:15 UTC (permalink / raw)
  To: Roberto Riggio; +Cc: linux-wireless
In-Reply-To: <4BEC2318.5050701@create-net.org>

Hi Roberto,

When I've seen this it has been caused by a mismatch between the
addresses in the injected frame and that configured in the hardware.
The transmitting radio doesn't understand it is the intended recipient
of the ack and continues retrying.

/Björn

On Thu, May 13, 2010 at 6:04 PM, Roberto Riggio
<roberto.riggio@create-net.org> wrote:
>
> Hi,
>
> I'm having a very strange behaviour between two sr71a (ath9k) cards
> operating in monitor mode. I'm using the following patch to specify
> the transmission rate frame by frame:
>
> http://thread.gmane.org/gmane.linux.kernel.wireless.general/47441
>
>
> However if I try to send some traffic between the two nodes with both
> interfaces operating in monitor mode I can see from a third machine
> using wireshark that albeit the frame is sent and the corresponding
> ack generated, the originator seems to ignore the ACK and keepts
> retransmitting the frame. This is happening on both ends of the
> communication (i'm ping one node from the other).
>
> As a matter of fact i thought that ACK are handled directly by the
> firmware. Any hints?
>
> R.
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>



-- 
Venatech AB
Ideon Innovation
Ole Römers väg 12
SE-22370 LUND
Sweden

+46 (0) 46 286 86 20
info@venatech.se
http://www.venatech.se

^ permalink raw reply

* Re: ath9k: BUG kmalloc-8192: Poison overwritten
From: Luis R. Rodriguez @ 2010-05-13 23:01 UTC (permalink / raw)
  To: Justin P. Mattock; +Cc: linux-wireless, Linux Kernel Mailing List
In-Reply-To: <4BEC7A84.3010503@gmail.com>

On Thu, May 13, 2010 at 3:17 PM, Justin P. Mattock
<justinmattock@gmail.com> wrote:
> not sure what this is, but while at a convention
> I was trying to access the internet and(below is
> full dmesg) this showed up.
>
> After receiving this, I sat and tried to re-create
> my steps to reproduce but had no luck(was even going
> todo a bisect n the spot if I could re-create).

OK this stuff is hard to reproduce it seems.. you have an Atheros
AR5418 MAC/BB Rev:2 AR5133 RF Rev:81, what kconfig option do you use
to get the poison stuff? I am just surprised we haven't seen it
ourselves yet. Let me make sure all of us get this kconfig option
enabled.

  Luis

^ permalink raw reply

* Re: [PATCH 0/2] iwlwifi fixes for 2.6.34
From: Sedat Dilek @ 2010-05-13 22:58 UTC (permalink / raw)
  To: reinette chatre
  Cc: linville@tuxdriver.com, linux-wireless@vger.kernel.org,
	ipw3945-devel@lists.sourceforge.net
In-Reply-To: <1273788932.7796.376.camel@rchatre-DESK>

Sorry, I was confused by the comments in [1] and I am especially
interested in the internal scans stuff:

Port following patch to 3945.

"commit 90c4162ff59a3281b6d2f7206740be6217bd6758
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Wed Apr 7 00:21:36 2010 -0700
    iwlwifi: fix scan races"

The above mentionned patch is already accepted to upstream (2.6.34)
[2] and iwlagn _is_ already using internal scans. So why is iwl3945
different in 2.6.34 especially in that case?

On first sight, I can't see the correlation of "iwl3945: add plcp
error checking" [3] and "iwl3945: fix scan races" [1].

- Sedat -

[1] https://patchwork.kernel.org/patch/98326/
[2] http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=88be026490ed89c2ffead81a52531fbac5507e01
[3] http://git.kernel.org/?p=linux/kernel/git/iwlwifi/iwlwifi-2.6.git;a=commit;h=a29576a7844326c5223f4d4adbfd3f4d64173d4c

On Fri, May 14, 2010 at 12:15 AM, reinette chatre
<reinette.chatre@intel.com> wrote:
> On Thu, 2010-05-13 at 14:54 -0700, Sedat Dilek wrote:
>> Whats with "iwl3945: fix scan races"?
>
> hmmm ... cryptic indeed ... I assume you are asking "Why is "iwl3945:
> fix scan races" not part of a submission to 2.6.34?
>
> If that is the case then yes, indeed , we did not submit "iwl3945: fix
> scan races" to 2.6.34 since the scan races being fixed is between normal
> (mac80211 initiated) and internal (as part of rf reset) scans. Like I
> mention in the cover letter of the submission that includes that patch
> (http://thread.gmane.org/gmane.linux.kernel.wireless.general/50651 ) we
> introduce RF reset usage to 3945 through the new "plcp error checking"
> patch and thus need the scan races fix for that. Before that patch
> nothing in iwl3945 was using RF reset and thus no internal scanning that
> could trigger a race.
>
> Reinette
>
>
>
>
>

^ permalink raw reply

* ath9k: BUG kmalloc-8192: Poison overwritten
From: Justin P. Mattock @ 2010-05-13 22:17 UTC (permalink / raw)
  To: linux-wireless; +Cc: Linux Kernel Mailing List, lrodriguez

not sure what this is, but while at a convention
I was trying to access the internet and(below is
full dmesg) this showed up.

After receiving this, I sat and tried to re-create
my steps to reproduce but had no luck(was even going
todo a bisect n the spot if I could re-create).

Anyways If I find a way to re-create I'll bisect:



[    0.000000] Linux version 2.6.34-rc7-00057-gcdfda35 (name@name) (gcc 
version 4.4.2 (GCC) ) #1 SMP Wed May 12 09:48:03 PDT 2010
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz root=/dev/sda3 ro 
debug audit=1 selinux=1 vga=790 enforcing=1
[    0.000000] BIOS-provided physical RAM map:
[    0.000000]  BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
[    0.000000]  BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)
[    0.000000]  BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved)
[    0.000000]  BIOS-e820: 0000000000100000 - 000000003f0ea000 (usable)
[    0.000000]  BIOS-e820: 000000003f0ea000 - 000000003f2eb000 (ACPI NVS)
[    0.000000]  BIOS-e820: 000000003f2eb000 - 000000003febe000 (ACPI data)
[    0.000000]  BIOS-e820: 000000003febe000 - 000000003feef000 (ACPI NVS)
[    0.000000]  BIOS-e820: 000000003feef000 - 000000003ff00000 (ACPI data)
[    0.000000]  BIOS-e820: 000000003ff00000 - 0000000040000000 (reserved)
[    0.000000]  BIOS-e820: 00000000f0000000 - 00000000f4000000 (reserved)
[    0.000000]  BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved)
[    0.000000]  BIOS-e820: 00000000fed14000 - 00000000fed1a000 (reserved)
[    0.000000]  BIOS-e820: 00000000fed1c000 - 00000000fed20000 (reserved)
[    0.000000]  BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
[    0.000000]  BIOS-e820: 00000000ffe00000 - 0000000100000000 (reserved)
[    0.000000] NX (Execute Disable) protection: active
[    0.000000] DMI 2.4 present.
[    0.000000] e820 update range: 0000000000000000 - 0000000000001000 
(usable) ==> (reserved)
[    0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 
(usable)
[    0.000000] No AGP bridge found
[    0.000000] last_pfn = 0x3f0ea max_arch_pfn = 0x400000000
[    0.000000] MTRR default type: uncachable
[    0.000000] MTRR fixed ranges enabled:
[    0.000000]   00000-9FFFF write-back
[    0.000000]   A0000-BFFFF uncachable
[    0.000000]   C0000-CFFFF write-protect
[    0.000000]   D0000-DFFFF uncachable
[    0.000000]   E0000-FFFFF write-protect
[    0.000000] MTRR variable ranges enabled:
[    0.000000]   0 base 0FFE00000 mask FFFE00000 write-protect
[    0.000000]   1 base 000000000 mask FC0000000 write-back
[    0.000000]   2 base 03FF00000 mask FFFF00000 uncachable
[    0.000000]   3 disabled
[    0.000000]   4 disabled
[    0.000000]   5 disabled
[    0.000000]   6 disabled
[    0.000000]   7 disabled
[    0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 
0x7010600070106
[    0.000000] initial memory mapped : 0 - 20000000
[    0.000000] init_memory_mapping: 0000000000000000-000000003f0ea000
[    0.000000]  0000000000 - 003f000000 page 2M
[    0.000000]  003f000000 - 003f0ea000 page 4k
[    0.000000] kernel direct mapping tables up to 3f0ea000 @ 8000-b000
[    0.000000] ACPI: RSDP 00000000000fe020 00024 (v02 APPLE )
[    0.000000] ACPI: XSDT 000000003fefd1c0 00074 (v01 APPLE   Apple00 
000000A5      01000013)
[    0.000000] ACPI: FACP 000000003fefb000 000F4 (v03 APPLE   Apple00 
000000A5 Loki 0000005F)
[    0.000000] ACPI: DSDT 000000003fef0000 048D1 (v01 APPLE  MacBookP 
00020002 INTL 20050309)
[    0.000000] ACPI: FACS 000000003fec0000 00040
[    0.000000] ACPI: HPET 000000003fefa000 00038 (v01 APPLE   Apple00 
00000001 Loki 0000005F)
[    0.000000] ACPI: APIC 000000003fef9000 00068 (v01 APPLE   Apple00 
00000001 Loki 0000005F)
[    0.000000] ACPI: MCFG 000000003fef8000 0003C (v01 APPLE   Apple00 
00000001 Loki 0000005F)
[    0.000000] ACPI: ASF! 000000003fef7000 000A0 (v32 APPLE   Apple00 
00000001 Loki 0000005F)
[    0.000000] ACPI: SBST 000000003fef6000 00030 (v01 APPLE   Apple00 
00000001 Loki 0000005F)
[    0.000000] ACPI: ECDT 000000003fef5000 00053 (v01 APPLE   Apple00 
00000001 Loki 0000005F)
[    0.000000] ACPI: SSDT 000000003feef000 004DC (v01 APPLE     CpuPm 
00003000 INTL 20050309)
[    0.000000] ACPI: SSDT 000000003febd000 0064F (v01 SataRe  SataPri 
00001000 INTL 20050309)
[    0.000000] ACPI: SSDT 000000003febc000 0069C (v01 SataRe  SataSec 
00001000 INTL 20050309)
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000]  [ffffea0000000000-ffffea0000dfffff] PMD -> 
[ffff880002000000-ffff880002dfffff] on node 0
[    0.000000] Zone PFN ranges:
[    0.000000]   DMA      0x00000001 -> 0x00001000
[    0.000000]   DMA32    0x00001000 -> 0x00100000
[    0.000000]   Normal   empty
[    0.000000] Movable zone start PFN for each node
[    0.000000] early_node_map[2] active PFN ranges
[    0.000000]     0: 0x00000001 -> 0x0000009f
[    0.000000]     0: 0x00000100 -> 0x0003f0ea
[    0.000000] On node 0 totalpages: 258184
[    0.000000]   DMA zone: 56 pages used for memmap
[    0.000000]   DMA zone: 0 pages reserved
[    0.000000]   DMA zone: 3942 pages, LIFO batch:0
[    0.000000]   DMA32 zone: 3476 pages used for memmap
[    0.000000]   DMA32 zone: 250710 pages, LIFO batch:31
[    0.000000] ACPI: PM-Timer IO Port: 0x408
[    0.000000] ACPI: Local APIC address 0xfee00000
[    0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
[    0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled)
[    0.000000] ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1])
[    0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])
[    0.000000] ACPI: IOAPIC (id[0x01] address[0xfec00000] gsi_base[0])
[    0.000000] IOAPIC[0]: apic_id 1, version 32, address 0xfec00000, GSI 
0-23
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[    0.000000] ACPI: IRQ0 used by override.
[    0.000000] ACPI: IRQ2 used by override.
[    0.000000] ACPI: IRQ9 used by override.
[    0.000000] Using ACPI (MADT) for SMP configuration information
[    0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000
[    0.000000] SMP: Allowing 2 CPUs, 0 hotplug CPUs
[    0.000000] nr_irqs_gsi: 24
[    0.000000] early_res array is doubled to 64 at [7000 - 77ff]
[    0.000000] PM: Registered nosave memory: 000000000009f000 - 
00000000000a0000
[    0.000000] PM: Registered nosave memory: 00000000000a0000 - 
00000000000e0000
[    0.000000] PM: Registered nosave memory: 00000000000e0000 - 
0000000000100000
[    0.000000] Allocating PCI resources starting at 40000000 (gap: 
40000000:b0000000)
[    0.000000] Booting paravirtualized kernel on bare hardware
[    0.000000] setup_percpu: NR_CPUS:2 nr_cpumask_bits:2 nr_cpu_ids:2 
nr_node_ids:1
[    0.000000] PERCPU: Embedded 28 pages/cpu @ffff880001800000 s84584 
r8192 d21912 u1048576
[    0.000000] pcpu-alloc: s84584 r8192 d21912 u1048576 alloc=1*2097152
[    0.000000] pcpu-alloc: [0] 0 1
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on. 
Total pages: 254652
[    0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz 
root=/dev/sda3 ro debug audit=1 selinux=1 vga=790 enforcing=1
[    0.000000] audit: enabled (after initialization)
[    0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
[    0.000000] Dentry cache hash table entries: 131072 (order: 8, 
1048576 bytes)
[    0.000000] Inode-cache hash table entries: 65536 (order: 7, 524288 
bytes)
[    0.000000] Checking aperture...
[    0.000000] No AGP bridge found
[    0.000000] Subtract (48 early reservations)
[    0.000000]   #1 [0001000000 - 00017ae110]   TEXT DATA BSS
[    0.000000]   #2 [000009fc00 - 0000100000]   BIOS reserved
[    0.000000]   #3 [00017af000 - 00017af271]             BRK
[    0.000000]   #4 [0000001000 - 0000003000]      TRAMPOLINE
[    0.000000]   #5 [0000003000 - 0000007000]     ACPI WAKEUP
[    0.000000]   #6 [0000008000 - 0000009000]         PGTABLE
[    0.000000]   #7 [00017af280 - 00017b0280]         BOOTMEM
[    0.000000]   #8 [00017ae140 - 00017ae200]         BOOTMEM
[    0.000000]   #9 [0001fb1000 - 0001fb2000]         BOOTMEM
[    0.000000]   #10 [0001fb2000 - 0001fb3000]         BOOTMEM
[    0.000000]   #11 [0002000000 - 0002e00000]        MEMMAP 0
[    0.000000]   #12 [00017ae200 - 00017ae480]         BOOTMEM
[    0.000000]   #13 [00017b0280 - 00017ba280]         BOOTMEM
[    0.000000]   #14 [00017bb000 - 00017bc000]         BOOTMEM
[    0.000000]   #15 [00017ae480 - 00017ae4c1]         BOOTMEM
[    0.000000]   #16 [00017ae500 - 00017ae543]         BOOTMEM
[    0.000000]   #17 [00017ae580 - 00017ae900]         BOOTMEM
[    0.000000]   #18 [00017ae900 - 00017ae968]         BOOTMEM
[    0.000000]   #19 [00017ae980 - 00017ae9e8]         BOOTMEM
[    0.000000]   #20 [00017aea00 - 00017aea68]         BOOTMEM
[    0.000000]   #21 [00017aea80 - 00017aeae8]         BOOTMEM
[    0.000000]   #22 [00017aeb00 - 00017aeb68]         BOOTMEM
[    0.000000]   #23 [00017aeb80 - 00017aebe8]         BOOTMEM
[    0.000000]   #24 [00017aec00 - 00017aec68]         BOOTMEM
[    0.000000]   #25 [00017aec80 - 00017aece8]         BOOTMEM
[    0.000000]   #26 [00017aed00 - 00017aed68]         BOOTMEM
[    0.000000]   #27 [00017aed80 - 00017aede8]         BOOTMEM
[    0.000000]   #28 [00017aee00 - 00017aee68]         BOOTMEM
[    0.000000]   #29 [00017aee80 - 00017aeee8]         BOOTMEM
[    0.000000]   #30 [00017aef00 - 00017aef68]         BOOTMEM
[    0.000000]   #31 [00017aef80 - 00017aefe8]         BOOTMEM
[    0.000000]   #32 [00017ba280 - 00017ba2e8]         BOOTMEM
[    0.000000]   #33 [00017ba300 - 00017ba320]         BOOTMEM
[    0.000000]   #34 [00017ba340 - 00017ba397]         BOOTMEM
[    0.000000]   #35 [00017ba3c0 - 00017ba417]         BOOTMEM
[    0.000000]   #36 [0001800000 - 000181c000]         BOOTMEM
[    0.000000]   #37 [0001900000 - 000191c000]         BOOTMEM
[    0.000000]   #38 [00017ba440 - 00017ba448]         BOOTMEM
[    0.000000]   #39 [00017ba480 - 00017ba488]         BOOTMEM
[    0.000000]   #40 [00017ba4c0 - 00017ba4c8]         BOOTMEM
[    0.000000]   #41 [00017ba500 - 00017ba510]         BOOTMEM
[    0.000000]   #42 [00017ba540 - 00017ba680]         BOOTMEM
[    0.000000]   #43 [00017ba680 - 00017ba6e0]         BOOTMEM
[    0.000000]   #44 [00017ba700 - 00017ba760]         BOOTMEM
[    0.000000]   #45 [00017bc000 - 00017c4000]         BOOTMEM
[    0.000000]   #46 [000191c000 - 0001a1c000]         BOOTMEM
[    0.000000]   #47 [000181c000 - 000189c000]         BOOTMEM
[    0.000000] Memory: 1008652k/1033128k available (4031k kernel code, 
392k absent, 24084k reserved, 2512k data, 496k init)
[    0.000000] SLUB: Genslabs=13, HWalign=64, Order=0-3, MinObjects=0, 
CPUs=2, Nodes=1
[    0.000000] Hierarchical RCU implementation.
[    0.000000] NR_IRQS:320
[    0.000000] Extended CMOS year: 2000
[    0.000000] Console: colour dummy device 80x25
[    0.000000] console [tty0] enabled
[    0.000000] hpet clockevent registered
[    0.000000] Fast TSC calibration using PIT
[    0.000000] Detected 2185.158 MHz processor.
[    0.001008] Calibrating delay loop (skipped), value calculated using 
timer frequency.. 4370.31 BogoMIPS (lpj=2185158)
[    0.001076] Security Framework initialized
[    0.001087] SELinux:  Initializing.
[    0.001120] SELinux:  Starting in enforcing mode
[    0.001142] Mount-cache hash table entries: 256
[    0.002043] CPU: Physical Processor ID: 0
[    0.002049] CPU: Processor Core ID: 0
[    0.002055] mce: CPU supports 6 MCE banks
[    0.002068] CPU0: Thermal monitoring enabled (TM2)
[    0.002075] using mwait in idle threads.
[    0.002080] Performance Events: Core2 events, Intel PMU driver.
[    0.002091] ... version:                2
[    0.002096] ... bit width:              40
[    0.002100] ... generic registers:      2
[    0.002105] ... value mask:             000000ffffffffff
[    0.002110] ... max period:             000000007fffffff
[    0.002115] ... fixed-purpose events:   3
[    0.002120] ... event mask:             0000000700000003
[    0.003004] ACPI: Core revision 20100121
[    0.026197] Setting APIC routing to flat
[    0.026579] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[    0.036728] CPU0: Intel(R) Core(TM)2 CPU         T7400  @ 2.16GHz 
stepping 06
[    0.036999] Booting Node   0, Processors  #1 Ok.
[    0.108028] Brought up 2 CPUs
[    0.108037] Total of 2 processors activated (8692.62 BogoMIPS).
[    0.110456] NET: Registered protocol family 16
[    0.112093] ACPI: bus type pci registered
[    0.112144] PCI: Using configuration type 1 for base access
[    0.127078] bio: create slab <bio-0> at 0
[    0.129503] ACPI: EC: EC description table is found, configuring boot EC
[    0.138070] ACPI: BIOS _OSI(Linux) query ignored
[    0.141286] ACPI: SSDT 000000003feb8c10 002AE (v01 APPLE   Cpu0Ist 
00003000 INTL 20050309)
[    0.142757] ACPI: SSDT 000000003feb8910 002A0 (v01 APPLE   Cpu0Cst 
00003001 INTL 20050309)
[    0.145161] ACPI: SSDT 000000003feb8f10 00087 (v01 APPLE   Cpu1Ist 
00003000 INTL 20050309)
[    0.146431] ACPI: SSDT 000000003feb7f10 00085 (v01 APPLE   Cpu1Cst 
00003000 INTL 20050309)
[    0.147073] ACPI: Interpreter enabled
[    0.147081] ACPI: (supports S0 S3 S4 S5)
[    0.147172] ACPI: Using IOAPIC for interrupt routing
[    0.181056] ACPI: EC: GPE = 0x17, I/O: command/status = 0x66, data = 0x62
[    0.182099] ACPI: No dock devices found.
[    0.182107] PCI: Ignoring host bridge windows from ACPI; if 
necessary, use "pci=use_crs" and report a bug
[    0.185420] ACPI: PCI Root Bridge [PCI0] (0000:00)
[    0.190476] pci_root PNP0A08:00: host bridge window [io 
0x0000-0x0cf7] (ignored)
[    0.190485] pci_root PNP0A08:00: host bridge window [io 
0x0d00-0xffff] (ignored)
[    0.190494] pci_root PNP0A08:00: host bridge window [mem 
0x000a0000-0x000bffff] (ignored)
[    0.190504] pci_root PNP0A08:00: host bridge window [mem 
0x40000000-0xfebfffff] (ignored)
[    0.190608] pci 0000:00:01.0: PME# supported from D0 D3hot D3cold
[    0.190615] pci 0000:00:01.0: PME# disabled
[    0.190652] pci 0000:00:07.0: reg 10: [mem 0x50404000-0x50404fff]
[    0.190751] pci 0000:00:1b.0: reg 10: [mem 0x50400000-0x50403fff 64bit]
[    0.190816] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold
[    0.190824] pci 0000:00:1b.0: PME# disabled
[    0.190928] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold
[    0.190936] pci 0000:00:1c.0: PME# disabled
[    0.191058] pci 0000:00:1c.1: PME# supported from D0 D3hot D3cold
[    0.191066] pci 0000:00:1c.1: PME# disabled
[    0.191172] pci 0000:00:1c.2: PME# supported from D0 D3hot D3cold
[    0.191181] pci 0000:00:1c.2: PME# disabled
[    0.191253] pci 0000:00:1d.0: reg 20: [io  0x4080-0x409f]
[    0.191325] pci 0000:00:1d.1: reg 20: [io  0x4060-0x407f]
[    0.191396] pci 0000:00:1d.2: reg 20: [io  0x4040-0x405f]
[    0.191468] pci 0000:00:1d.3: reg 20: [io  0x4020-0x403f]
[    0.191536] pci 0000:00:1d.7: reg 10: [mem 0x50405400-0x504057ff]
[    0.191604] pci 0000:00:1d.7: PME# supported from D0 D3hot D3cold
[    0.191613] pci 0000:00:1d.7: PME# disabled
[    0.191789] pci 0000:00:1f.0: quirk: [io  0x0400-0x047f] claimed by 
ICH6 ACPI/GPIO/TCO
[    0.191799] pci 0000:00:1f.0: quirk: [io  0x0500-0x053f] claimed by 
ICH6 GPIO
[    0.191807] pci 0000:00:1f.0: ICH7 LPC Generic IO decode 1 PIO at 
0680 (mask 000f)
[    0.191817] pci 0000:00:1f.0: ICH7 LPC Generic IO decode 2 PIO at 
1640 (mask 000f)
[    0.191829] pci 0000:00:1f.0: ICH7 LPC Generic IO decode 4 PIO at 
0300 (mask 001f)
[    0.191926] pci 0000:00:1f.1: reg 10: [io  0x40d8-0x40df]
[    0.191937] pci 0000:00:1f.1: reg 14: [io  0x40ec-0x40ef]
[    0.191948] pci 0000:00:1f.1: reg 18: [io  0x40d0-0x40d7]
[    0.191959] pci 0000:00:1f.1: reg 1c: [io  0x40e8-0x40eb]
[    0.191970] pci 0000:00:1f.1: reg 20: [io  0x40b0-0x40bf]
[    0.192045] pci 0000:00:1f.2: reg 10: [io  0x40c8-0x40cf]
[    0.192056] pci 0000:00:1f.2: reg 14: [io  0x40e4-0x40e7]
[    0.192067] pci 0000:00:1f.2: reg 18: [io  0x40c0-0x40c7]
[    0.192078] pci 0000:00:1f.2: reg 1c: [io  0x40e0-0x40e3]
[    0.192089] pci 0000:00:1f.2: reg 20: [io  0x40a0-0x40af]
[    0.192100] pci 0000:00:1f.2: reg 24: [mem 0x50405000-0x504053ff]
[    0.192133] pci 0000:00:1f.2: PME# supported from D3hot
[    0.192141] pci 0000:00:1f.2: PME# disabled
[    0.192210] pci 0000:00:1f.3: reg 20: [io  0xefa0-0xefbf]
[    0.192311] pci 0000:01:00.0: reg 10: [mem 0x40000000-0x47ffffff pref]
[    0.192323] pci 0000:01:00.0: reg 14: [io  0x3000-0x30ff]
[    0.192334] pci 0000:01:00.0: reg 18: [mem 0x50300000-0x5030ffff]
[    0.192356] pci 0000:01:00.0: reg 30: [mem 0xfffe0000-0xffffffff pref]
[    0.192386] pci 0000:01:00.0: supports D1 D2
[    0.192401] pci 0000:00:01.0: PCI bridge to [bus 01-01]
[    0.192407] pci 0000:00:01.0:   bridge window [io  0x3000-0x3fff]
[    0.192414] pci 0000:00:01.0:   bridge window [mem 0x50300000-0x503fffff]
[    0.192423] pci 0000:00:01.0:   bridge window [mem 
0x40000000-0x47ffffff 64bit pref]
[    0.192547] pci 0000:02:00.0: reg 10: [mem 0x50200000-0x50203fff 64bit]
[    0.192561] pci 0000:02:00.0: reg 18: [io  0x2000-0x20ff]
[    0.192599] pci 0000:02:00.0: reg 30: [mem 0xfffe0000-0xffffffff pref]
[    0.192658] pci 0000:02:00.0: supports D1 D2
[    0.192663] pci 0000:02:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[    0.192673] pci 0000:02:00.0: PME# disabled
[    0.192690] pci 0000:00:1c.0: PCI bridge to [bus 02-02]
[    0.192698] pci 0000:00:1c.0:   bridge window [io  0x2000-0x2fff]
[    0.192707] pci 0000:00:1c.0:   bridge window [mem 0x50200000-0x502fffff]
[    0.192719] pci 0000:00:1c.0:   bridge window [mem 
0xfff00000-0x000fffff pref] (disabled)
[    0.192848] pci 0000:03:00.0: reg 10: [mem 0x50100000-0x5010ffff 64bit]
[    0.192944] pci 0000:03:00.0: supports D1
[    0.192949] pci 0000:03:00.0: PME# supported from D0 D1 D3hot
[    0.192958] pci 0000:03:00.0: PME# disabled
[    0.192984] pci 0000:00:1c.1: PCI bridge to [bus 03-03]
[    0.193004] pci 0000:00:1c.1:   bridge window [io  0xf000-0x0000] 
(disabled)
[    0.193013] pci 0000:00:1c.1:   bridge window [mem 0x50100000-0x501fffff]
[    0.193025] pci 0000:00:1c.1:   bridge window [mem 
0xfff00000-0x000fffff pref] (disabled)
[    0.193096] pci 0000:00:1c.2: PCI bridge to [bus 04-0b]
[    0.193104] pci 0000:00:1c.2:   bridge window [io  0x1000-0x1fff]
[    0.193113] pci 0000:00:1c.2:   bridge window [mem 0x4c100000-0x500fffff]
[    0.193125] pci 0000:00:1c.2:   bridge window [mem 
0x48000000-0x4bffffff 64bit pref]
[    0.193211] pci 0000:0c:03.0: reg 10: [mem 0x4c004000-0x4c0047ff]
[    0.193223] pci 0000:0c:03.0: reg 14: [mem 0x4c000000-0x4c003fff]
[    0.193290] pci 0000:0c:03.0: supports D1 D2
[    0.193295] pci 0000:0c:03.0: PME# supported from D0 D1 D2 D3hot
[    0.193304] pci 0000:0c:03.0: PME# disabled
[    0.193369] pci 0000:00:1e.0: PCI bridge to [bus 0c-0c] (subtractive 
decode)
[    0.193378] pci 0000:00:1e.0:   bridge window [io  0xf000-0x0000] 
(disabled)
[    0.193387] pci 0000:00:1e.0:   bridge window [mem 0x4c000000-0x4c0fffff]
[    0.193398] pci 0000:00:1e.0:   bridge window [mem 
0xfff00000-0x000fffff pref] (disabled)
[    0.193407] pci 0000:00:1e.0:   bridge window [io  0x0000-0xffff] 
(subtractive decode)
[    0.193416] pci 0000:00:1e.0:   bridge window [mem 
0x00000000-0xffffffffffffffff] (subtractive decode)
[    0.193452] pci_bus 0000:00: on NUMA node 0
[    0.193463] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
[    0.194716] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PEGP._PRT]
[    0.195143] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP01._PRT]
[    0.195547] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP02._PRT]
[    0.195951] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP03._PRT]
[    0.196437] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCIB._PRT]
[    0.231287] ACPI: PCI Interrupt Link [LNKA] (IRQs 1 3 4 5 6 7 10 12 
14 15) *11
[    0.232314] ACPI: PCI Interrupt Link [LNKB] (IRQs 1 3 4 5 6 7 *11 12 
14 15)
[    0.232652] ACPI: PCI Interrupt Link [LNKC] (IRQs 1 3 4 5 6 7 10 12 
14 15) *11
[    0.233007] ACPI: PCI Interrupt Link [LNKD] (IRQs 1 3 4 5 6 7 *11 12 
14 15)
[    0.233341] ACPI: PCI Interrupt Link [LNKE] (IRQs 1 3 4 5 6 7 10 12 
14 15) *0, disabled.
[    0.233678] ACPI: PCI Interrupt Link [LNKF] (IRQs 1 3 4 5 6 7 11 12 
14 15) *0, disabled.
[    0.234029] ACPI: PCI Interrupt Link [LNKG] (IRQs 1 3 4 5 6 7 *10 12 
14 15)
[    0.234370] ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 7 *11 12 14 15)
[    0.235095] vgaarb: device added: 
PCI:0000:01:00.0,decodes=io+mem,owns=io+mem,locks=none
[    0.235095] vgaarb: loaded
[    0.236081] SCSI subsystem initialized
[    0.236093] libata version 3.00 loaded.
[    0.236109] usbcore: registered new interface driver usbfs
[    0.236109] usbcore: registered new interface driver hub
[    0.236109] usbcore: registered new device driver usb
[    0.237110] PCI: Using ACPI for IRQ routing
[    0.237110] PCI: pci_cache_line_size set to 64 bytes
[    0.237185] reserve RAM buffer: 000000000009fc00 - 000000000009ffff
[    0.237190] reserve RAM buffer: 000000003f0ea000 - 000000003fffffff
[    0.238260] cfg80211: Calling CRDA to update world regulatory domain
[    0.238260] NetLabel: Initializing
[    0.238260] NetLabel:  domain hash size = 128
[    0.238260] NetLabel:  protocols = UNLABELED CIPSOv4
[    0.238260] NetLabel:  unlabeled traffic allowed by default
[    0.238260] HPET: 3 timers in total, 0 timers will be used for 
per-cpu timer
[    0.238260] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0
[    0.238260] hpet0: 3 comparators, 64-bit 14.318180 MHz counter
[    0.241053] Switching to clocksource tsc
[    0.253311] pnp: PnP ACPI init
[    0.253343] ACPI: bus type pnp registered
[    0.259548] pnp 00:07: disabling [io  0x1640-0x164f] because it 
overlaps 0000:00:1c.2 BAR 7 [io  0x1000-0x1fff]
[    0.264668] pnp: PnP ACPI: found 9 devices
[    0.264674] ACPI: ACPI bus type pnp unregistered
[    0.264694] system 00:01: [mem 0xf0000000-0xf3ffffff] has been reserved
[    0.264702] system 00:01: [mem 0xfed14000-0xfed17fff] has been reserved
[    0.264709] system 00:01: [mem 0xfed18000-0xfed18fff] has been reserved
[    0.264717] system 00:01: [mem 0xfed19000-0xfed19fff] has been reserved
[    0.264724] system 00:01: [mem 0xfed1c000-0xfed1ffff] has been reserved
[    0.264732] system 00:01: [mem 0xfed20000-0xfed8ffff] has been reserved
[    0.264745] system 00:05: [mem 0xfed00000-0xfed003ff] has been reserved
[    0.264758] system 00:07: [io  0x0680-0x06ef] has been reserved
[    0.264765] system 00:07: [io  0x0800-0x080f] has been reserved
[    0.264772] system 00:07: [io  0x0810-0x0817] has been reserved
[    0.264780] system 00:07: [io  0x0400-0x047f] has been reserved
[    0.264787] system 00:07: [io  0x0500-0x053f] has been reserved
[    0.270837] pci 0000:01:00.0: no compatible bridge window for [mem 
0xfffe0000-0xffffffff pref]
[    0.270849] pci 0000:02:00.0: no compatible bridge window for [mem 
0xfffe0000-0xffffffff pref]
[    0.270864] PCI: max bus depth: 1 pci_try_num: 2
[    0.270919] pci 0000:00:1c.0: BAR 9: assigned [mem 
0x50500000-0x506fffff pref]
[    0.270929] pci 0000:00:1c.1: BAR 9: assigned [mem 
0x50700000-0x508fffff 64bit pref]
[    0.270939] pci 0000:00:1c.1: BAR 7: assigned [io  0x5000-0x5fff]
[    0.270947] pci 0000:01:00.0: BAR 6: assigned [mem 
0x50320000-0x5033ffff pref]
[    0.270956] pci 0000:00:01.0: PCI bridge to [bus 01-01]
[    0.270962] pci 0000:00:01.0:   bridge window [io  0x3000-0x3fff]
[    0.270970] pci 0000:00:01.0:   bridge window [mem 0x50300000-0x503fffff]
[    0.270977] pci 0000:00:01.0:   bridge window [mem 
0x40000000-0x47ffffff 64bit pref]
[    0.270989] pci 0000:02:00.0: BAR 6: assigned [mem 
0x50500000-0x5051ffff pref]
[    0.270998] pci 0000:00:1c.0: PCI bridge to [bus 02-02]
[    0.271004] pci 0000:00:1c.0:   bridge window [io  0x2000-0x2fff]
[    0.271014] pci 0000:00:1c.0:   bridge window [mem 0x50200000-0x502fffff]
[    0.271023] pci 0000:00:1c.0:   bridge window [mem 
0x50500000-0x506fffff pref]
[    0.271036] pci 0000:00:1c.1: PCI bridge to [bus 03-03]
[    0.271043] pci 0000:00:1c.1:   bridge window [io  0x5000-0x5fff]
[    0.271053] pci 0000:00:1c.1:   bridge window [mem 0x50100000-0x501fffff]
[    0.271061] pci 0000:00:1c.1:   bridge window [mem 
0x50700000-0x508fffff 64bit pref]
[    0.271075] pci 0000:00:1c.2: PCI bridge to [bus 04-0b]
[    0.271082] pci 0000:00:1c.2:   bridge window [io  0x1000-0x1fff]
[    0.271092] pci 0000:00:1c.2:   bridge window [mem 0x4c100000-0x500fffff]
[    0.271100] pci 0000:00:1c.2:   bridge window [mem 
0x48000000-0x4bffffff 64bit pref]
[    0.271114] pci 0000:00:1e.0: PCI bridge to [bus 0c-0c]
[    0.271119] pci 0000:00:1e.0:   bridge window [io  disabled]
[    0.271129] pci 0000:00:1e.0:   bridge window [mem 0x4c000000-0x4c0fffff]
[    0.271137] pci 0000:00:1e.0:   bridge window [mem pref disabled]
[    0.271160] pci 0000:00:01.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[    0.271168] pci 0000:00:01.0: setting latency timer to 64
[    0.271183] pci 0000:00:1c.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17
[    0.271192] pci 0000:00:1c.0: setting latency timer to 64
[    0.271206] pci 0000:00:1c.1: PCI INT B -> GSI 16 (level, low) -> IRQ 16
[    0.271214] pci 0000:00:1c.1: setting latency timer to 64
[    0.271229] pci 0000:00:1c.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18
[    0.271238] pci 0000:00:1c.2: setting latency timer to 64
[    0.271414] pci 0000:00:1e.0: power state changed by ACPI to D0
[    0.271585] pci 0000:00:1e.0: power state changed by ACPI to D0
[    0.271596] pci 0000:00:1e.0: setting latency timer to 64
[    0.271604] pci_bus 0000:00: resource 0 [io  0x0000-0xffff]
[    0.271610] pci_bus 0000:00: resource 1 [mem 
0x00000000-0xffffffffffffffff]
[    0.271616] pci_bus 0000:01: resource 0 [io  0x3000-0x3fff]
[    0.271622] pci_bus 0000:01: resource 1 [mem 0x50300000-0x503fffff]
[    0.271628] pci_bus 0000:01: resource 2 [mem 0x40000000-0x47ffffff 
64bit pref]
[    0.271636] pci_bus 0000:02: resource 0 [io  0x2000-0x2fff]
[    0.271641] pci_bus 0000:02: resource 1 [mem 0x50200000-0x502fffff]
[    0.271647] pci_bus 0000:02: resource 2 [mem 0x50500000-0x506fffff pref]
[    0.271653] pci_bus 0000:03: resource 0 [io  0x5000-0x5fff]
[    0.271659] pci_bus 0000:03: resource 1 [mem 0x50100000-0x501fffff]
[    0.271664] pci_bus 0000:03: resource 2 [mem 0x50700000-0x508fffff 
64bit pref]
[    0.271673] pci_bus 0000:04: resource 0 [io  0x1000-0x1fff]
[    0.271678] pci_bus 0000:04: resource 1 [mem 0x4c100000-0x500fffff]
[    0.271684] pci_bus 0000:04: resource 2 [mem 0x48000000-0x4bffffff 
64bit pref]
[    0.271692] pci_bus 0000:0c: resource 1 [mem 0x4c000000-0x4c0fffff]
[    0.271698] pci_bus 0000:0c: resource 4 [io  0x0000-0xffff]
[    0.271704] pci_bus 0000:0c: resource 5 [mem 
0x00000000-0xffffffffffffffff]
[    0.271750] NET: Registered protocol family 2
[    0.271843] IP route cache hash table entries: 32768 (order: 6, 
262144 bytes)
[    0.272403] TCP established hash table entries: 131072 (order: 9, 
2097152 bytes)
[    0.273452] TCP bind hash table entries: 65536 (order: 9, 2097152 bytes)
[    0.274867] TCP: Hash tables configured (established 131072 bind 65536)
[    0.274876] TCP reno registered
[    0.274889] UDP hash table entries: 512 (order: 3, 49152 bytes)
[    0.274930] UDP-Lite hash table entries: 512 (order: 3, 49152 bytes)
[    0.275258] NET: Registered protocol family 1
[    0.275468] pci 0000:01:00.0: Boot video device
[    0.275508] PCI: CLS mismatch (256 != 64), using 64 bytes
[    0.279402] microcode: CPU0 sig=0x6f6, pf=0x20, revision=0xc7
[    0.279416] microcode: CPU1 sig=0x6f6, pf=0x20, revision=0xc7
[    0.279557] microcode: Microcode Update Driver: v2.00 
<tigran@aivazian.fsnet.co.uk>, Peter Oruba
[    0.281445] Initializing RT-Tester: OK
[    0.281596] audit: initializing netlink socket (enabled)
[    0.281628] type=2000 audit(1273772184.281:1): initialized
[    0.298252] HugeTLB registered 2 MB page size, pre-allocated 0 pages
[    0.320047] ROMFS MTD (C) 2007 Red Hat, Inc.
[    0.320386] fuse init (API version 7.13)
[    0.321144] msgmni has been set to 1970
[    0.321470] SELinux:  Registering netfilter hooks
[    0.322904] alg: No test for stdrng (krng)
[    0.322933] io scheduler noop registered
[    0.323320] io scheduler cfq registered (default)
[    0.324678] vesafb: framebuffer at 0x40000000, mapped to 
0xffffc90000100000, using 3072k, total 3072k
[    0.324688] vesafb: mode is 1024x768x32, linelength=4096, pages=0
[    0.324694] vesafb: scrolling: redraw
[    0.324699] vesafb: Truecolor: size=0:8:8:8, shift=0:16:8:0
[    0.324898] fbcon: VESA VGA (fb0) is primary device
[    0.372483] Console: switching to colour frame buffer device 128x48
[    0.416209] fb0: VESA VGA frame buffer device
[    0.432699] Linux agpgart interface v0.103
[    0.436337] loop: module loaded
[    0.437915] ata_piix 0000:00:1f.1: version 2.13
[    0.438440] ata_piix 0000:00:1f.1: power state changed by ACPI to D0
[    0.439107] ata_piix 0000:00:1f.1: power state changed by ACPI to D0
[    0.439687] ata_piix 0000:00:1f.1: PCI INT A -> GSI 18 (level, low) 
-> IRQ 18
[    0.440370] ata_piix 0000:00:1f.1: setting latency timer to 64
[    0.441009] scsi0 : ata_piix
[    0.441972] scsi1 : ata_piix
[    0.445027] ata1: PATA max UDMA/100 cmd 0x1f0 ctl 0x3f6 bmdma 0x40b0 
irq 14
[    0.445652] ata2: PATA max UDMA/100 cmd 0x170 ctl 0x376 bmdma 0x40b8 
irq 15
[    0.446305] ata_piix 0000:00:1f.2: PCI INT B -> GSI 19 (level, low) 
-> IRQ 19
[    0.446958] ata_piix 0000:00:1f.2: MAP [ P0 P2 -- -- ]
[    0.596926] ata_piix 0000:00:1f.2: setting latency timer to 64
[    0.597580] scsi2 : ata_piix
[    0.598188] scsi3 : ata_piix
[    0.603012] ata3: SATA max UDMA/133 cmd 0x40c8 ctl 0x40e4 bmdma 
0x40a0 irq 19
[    0.608993] ata1.00: ATAPI: MATSHITADVD-R   UJ-857D, KCV9, max UDMA/66
[    0.614830] ata1.00: configured for UDMA/66
[    0.616896] scsi 0:0:0:0: CD-ROM            MATSHITA DVD-R   UJ-857D 
  KCV9 PQ: 0 ANSI: 5
[    0.621508] sr0: scsi3-mmc drive: 24x/24x writer cd/rw xa/form2 cdda tray
[    0.621511] Uniform CD-ROM driver Revision: 3.20
[    0.621917] sr 0:0:0:0: Attached scsi CD-ROM sr0
[    0.622252] sr 0:0:0:0: Attached scsi generic sg0 type 5
[    0.668937] ata4: SATA max UDMA/133 cmd 0x40c0 ctl 0x40e0 bmdma 
0x40a8 irq 19
[    0.679184] usbcore: registered new interface driver usblcd
[    0.689515] usbcore: registered new interface driver usbled
[    0.700278] PNP: No PS/2 controller found. Probing ports directly.
[    0.711866] i8042.c: No controller found.
[    0.723142] mice: PS/2 mouse device common for all mice
[    0.734868] Linux video capture interface: v2.00
[    0.748186] device-mapper: ioctl: 4.17.0-ioctl (2010-03-05) 
initialised: dm-devel@redhat.com
[    0.760910] EDAC MC: Ver: 2.1.0 May 12 2010
[    0.774216] cpuidle: using governor ladder
[    0.787369] cpuidle: using governor menu
[    0.804498] usbcore: registered new interface driver hiddev
[    0.818629] usbcore: registered new interface driver usbhid
[    0.832841] usbhid: USB HID core driver
[    0.850719] oprofile: using NMI interrupt.
[    0.853154] ata3.01: ATA-8: FUJITSU MHW2120BH, 00810013, max UDMA/100
[    0.853157] ata3.01: 234441648 sectors, multi 16: LBA48 NCQ (depth 0/32)
[    0.859108] ata3.01: configured for UDMA/100
[    0.859284] scsi 2:0:1:0: Direct-Access     ATA      FUJITSU MHW2120B 
0081 PQ: 0 ANSI: 5
[    0.860054] sd 2:0:1:0: Attached scsi generic sg1 type 0
[    0.860121] sd 2:0:1:0: [sda] 234441648 512-byte logical blocks: (120 
GB/111 GiB)
[    0.860258] sd 2:0:1:0: [sda] Write Protect is off
[    0.860260] sd 2:0:1:0: [sda] Mode Sense: 00 3a 00 00
[    0.860317] sd 2:0:1:0: [sda] Write cache: enabled, read cache: 
enabled, doesn't support DPO or FUA
[    1.003179] IPVS: Registered protocols (TCP, AH, ESP)
[    1.019542] IPVS: Connection hash table configured (size=4096, 
memory=64Kbytes)
[    1.036041] IPVS: ipvs loaded.
[    1.052808] Initializing XFRM netlink socket
[    1.069264] NET: Registered protocol family 17
[    1.085995] NET: Registered protocol family 15
[    1.102224] lib80211: common routines for IEEE802.11 drivers
[    1.118656] lib80211_crypt: registered algorithm 'NULL'
[    1.135474]  sda:
[    1.135917] No TPM chip found, activating TPM-bypass!
[    1.209863]  sda1 sda2 sda3 sda4
[    1.227678] sd 2:0:1:0: [sda] Attached SCSI disk
[    1.278520] EXT4-fs (sda3): mounted filesystem with ordered data mode
[    1.295223] VFS: Mounted root (ext4 filesystem) readonly on device 8:3.
[    1.311808] Freeing unused kernel memory: 496k freed
[    1.844055] SELinux: 2048 avtab hash slots, 175804 rules.
[    2.023210] SELinux: 2048 avtab hash slots, 175804 rules.
[    2.567788] SELinux:  7 users, 14 roles, 3026 types, 119 bools, 1 
sens, 256 cats
[    2.584412] SELinux:  77 classes, 175804 rules
[    2.611487] SELinux:  Completing initialization.
[    2.627459] SELinux:  Setting up existing superblocks.
[    2.643701] SELinux: initialized (dev sda3, type ext4), uses xattr
[    2.660153] SELinux: initialized (dev securityfs, type securityfs), 
uses genfs_contexts
[    2.676501] SELinux: initialized (dev selinuxfs, type selinuxfs), 
uses genfs_contexts
[    2.692911] SELinux: initialized (dev mqueue, type mqueue), uses 
transition SIDs
[    2.709334] SELinux: initialized (dev hugetlbfs, type hugetlbfs), 
uses transition SIDs
[    2.725519] SELinux: initialized (dev devpts, type devpts), uses 
transition SIDs
[    2.741403] SELinux: initialized (dev anon_inodefs, type 
anon_inodefs), uses genfs_contexts
[    2.757550] SELinux: initialized (dev pipefs, type pipefs), uses task 
SIDs
[    2.773911] SELinux: initialized (dev debugfs, type debugfs), uses 
genfs_contexts
[    2.791110] SELinux: initialized (dev sockfs, type sockfs), uses task 
SIDs
[    2.807750] SELinux: initialized (dev tmpfs, type tmpfs), uses 
transition SIDs
[    2.807764] SELinux: initialized (dev proc, type proc), uses 
genfs_contexts
[    2.807774] SELinux: initialized (dev bdev, type bdev), uses 
genfs_contexts
[    2.807779] SELinux: initialized (dev rootfs, type rootfs), uses 
genfs_contexts
[    2.807789] SELinux: initialized (dev sysfs, type sysfs), uses 
genfs_contexts
[    2.909603] type=1403 audit(1273772186.909:2): policy loaded 
auid=4294967295 ses=4294967295
[    3.757319] usbcore: registered new interface driver uvcvideo
[    3.774130] USB Video Class driver (v0.1.0)
[    3.816807] applesmc: Apple MacBook Pro 2,2 detected:
[    3.833839] applesmc:  - Model with accelerometer
[    3.851309] applesmc:  - Model with light sensors and backlight
[    3.868634] applesmc:  - Model with 12 temperature sensors
[    3.938612] applesmc: device successfully initialized (0xe0, 0x00).
[    3.938614] applesmc: device successfully initialized.
[    3.956404] applesmc: 2 fans found.
[    3.975685] input: applesmc as 
/devices/platform/applesmc.768/input/input0
[    3.993613] Registered led device: smc::kbd_backlight
[    3.993783] applesmc: driver successfully loaded.
[    4.015279] usbcore: registered new interface driver appletouch
[    4.050619] Monitor-Mwait will be used to enter C-1 state
[    4.050665] Monitor-Mwait will be used to enter C-2 state
[    4.050710] Monitor-Mwait will be used to enter C-3 state
[    4.050720] Marking TSC unstable due to TSC halts in idle
[    4.068950] Switching to clocksource hpet
[    4.154225] Bluetooth: Core ver 2.15
[    4.179362] NET: Registered protocol family 31
[    4.198212] Bluetooth: HCI device and connection manager initialized
[    4.217290] Bluetooth: HCI socket layer initialized
[    4.240238] Bluetooth: L2CAP ver 2.14
[    4.258807] Bluetooth: L2CAP socket layer initialized
[    4.281298] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
[    4.307083] Bluetooth: Generic Bluetooth USB driver ver 0.6
[    4.325774] usbcore: registered new interface driver btusb
[    4.351853] Bluetooth: RFCOMM TTY layer initialized
[    4.371136] Bluetooth: RFCOMM socket layer initialized
[    4.390479] Bluetooth: RFCOMM ver 1.11
[    4.415303] Bluetooth: HCI UART driver ver 2.2
[    4.434628] Bluetooth: HCI H4 protocol initialized
[    4.454046] Bluetooth: HCI BCSP protocol initialized
[    4.489400] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    4.514683] ehci_hcd 0000:00:1d.7: PCI INT A -> GSI 23 (level, low) 
-> IRQ 23
[    4.540213] ehci_hcd 0000:00:1d.7: setting latency timer to 64
[    4.540220] ehci_hcd 0000:00:1d.7: EHCI Host Controller
[    4.559476] ehci_hcd 0000:00:1d.7: new USB bus registered, assigned 
bus number 1
[    4.578903] ehci_hcd 0000:00:1d.7: using broken periodic workaround
[    4.598151] ehci_hcd 0000:00:1d.7: debug port 1
[    4.621028] ehci_hcd 0000:00:1d.7: cache line size of 64 is not supported
[    4.621080] ehci_hcd 0000:00:1d.7: irq 23, io mem 0x50405400
[    4.649399] ehci_hcd 0000:00:1d.7: USB 2.0 started, EHCI 1.00
[    4.676033] hub 1-0:1.0: USB hub found
[    4.701498] hub 1-0:1.0: 8 ports detected
[    4.740392] uhci_hcd: USB Universal Host Controller Interface driver
[    4.765887] uhci_hcd 0000:00:1d.0: PCI INT A -> GSI 23 (level, low) 
-> IRQ 23
[    4.784953] uhci_hcd 0000:00:1d.0: setting latency timer to 64
[    4.784957] uhci_hcd 0000:00:1d.0: UHCI Host Controller
[    4.803730] uhci_hcd 0000:00:1d.0: new USB bus registered, assigned 
bus number 2
[    4.822726] uhci_hcd 0000:00:1d.0: irq 23, io base 0x00004080
[    4.823275] hub 2-0:1.0: USB hub found
[    4.823288] hub 2-0:1.0: 2 ports detected
[    4.823571] uhci_hcd 0000:00:1d.1: PCI INT B -> GSI 19 (level, low) 
-> IRQ 19
[    4.823581] uhci_hcd 0000:00:1d.1: setting latency timer to 64
[    4.823584] uhci_hcd 0000:00:1d.1: UHCI Host Controller
[    4.823602] uhci_hcd 0000:00:1d.1: new USB bus registered, assigned 
bus number 3
[    4.823639] uhci_hcd 0000:00:1d.1: irq 19, io base 0x00004060
[    4.824202] hub 3-0:1.0: USB hub found
[    4.824214] hub 3-0:1.0: 2 ports detected
[    4.824482] uhci_hcd 0000:00:1d.2: PCI INT C -> GSI 18 (level, low) 
-> IRQ 18
[    4.824493] uhci_hcd 0000:00:1d.2: setting latency timer to 64
[    4.824496] uhci_hcd 0000:00:1d.2: UHCI Host Controller
[    4.824505] uhci_hcd 0000:00:1d.2: new USB bus registered, assigned 
bus number 4
[    4.824571] uhci_hcd 0000:00:1d.2: irq 18, io base 0x00004040
[    4.825081] hub 4-0:1.0: USB hub found
[    4.825094] hub 4-0:1.0: 2 ports detected
[    4.825402] uhci_hcd 0000:00:1d.3: PCI INT D -> GSI 16 (level, low) 
-> IRQ 16
[    4.825412] uhci_hcd 0000:00:1d.3: setting latency timer to 64
[    4.825415] uhci_hcd 0000:00:1d.3: UHCI Host Controller
[    4.825425] uhci_hcd 0000:00:1d.3: new USB bus registered, assigned 
bus number 5
[    4.825486] uhci_hcd 0000:00:1d.3: irq 16, io base 0x00004020
[    4.825981] hub 5-0:1.0: USB hub found
[    4.826012] hub 5-0:1.0: 2 ports detected
[    5.301983] ieee1394: raw1394: /dev/raw1394 device initialized
[    5.424309] alg: No test for cipher_null (cipher_null-generic)
[    5.467935] alg: No test for ecb(cipher_null) (ecb-cipher_null)
[    5.485377] alg: No test for digest_null (digest_null-generic)
[    5.502474] alg: No test for compress_null (compress_null-generic)
[    5.621281] usb 1-4: new high speed USB device using ehci_hcd and 
address 3
[    5.690593] SELinux: initialized (dev tmpfs, type tmpfs), uses 
transition SIDs
[    6.049678] udev: starting version 147
[    6.173282] usb 2-2: new full speed USB device using uhci_hcd and 
address 2
[    6.306815] i801_smbus 0000:00:1f.3: PCI INT B -> GSI 19 (level, low) 
-> IRQ 19
[    6.326425] ACPI: resource 0000:00:1f.3 [io  0xefa0-0xefbf] conflicts 
with ACPI region SMBI [io  0xefa0-0xefaf 64bit pref disabled]
[    6.366625] ACPI: If an ACPI driver is available for this device, you 
should use it instead of the native driver
[    6.405324] input: Apple Computer Apple Internal Keyboard / Trackpad 
as /devices/pci0000:00/0000:00:1d.0/usb2/2-2/2-2:1.0/input/input1
[    6.870487] HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) 
-> IRQ 22
[    6.999564] sky2: driver version 1.27
[    7.004258] input: Lid Switch as 
/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input2
[    7.004429] ACPI: Lid Switch [LID0]
[    7.004563] input: Power Button as 
/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input3
[    7.004569] ACPI: Power Button [PWRB]
[    7.004704] input: Sleep Button as 
/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0E:00/input/input4
[    7.004709] ACPI: Sleep Button [SLPB]
[    7.004859] input: Power Button as 
/devices/LNXSYSTM:00/LNXPWRBN:00/input/input5
[    7.004864] ACPI: Power Button [PWRF]
[    7.161650] power_supply ADP1: uevent
[    7.161652] power_supply ADP1: No power supply yet
[    7.161677] power_supply ADP1: power_supply_changed
[    7.161683] ACPI: AC Adapter [ADP1] (off-line)
[    7.161689] power_supply ADP1: power_supply_changed_work
[    7.161691] power_supply ADP1: power_supply_update_gen_leds 0
[    7.161709] power_supply ADP1: uevent
[    7.161710] power_supply ADP1: POWER_SUPPLY_NAME=ADP1
[    7.161714] power_supply ADP1: Static prop TYPE=Mains
[    7.161717] power_supply ADP1: 1 dynamic props
[    7.161720] power_supply ADP1: prop ONLINE=0
[    7.325149] ohci1394 0000:0c:03.0: PCI INT A -> GSI 19 (level, low) 
-> IRQ 19
[    7.479887] HDA Intel 0000:00:1b.0: irq 24 for MSI/MSI-X
[    7.480187] HDA Intel 0000:00:1b.0: setting latency timer to 64
[    7.486389] sky2 0000:02:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[    7.488203] apple 0003:05AC:021A.0001: input: USB HID v1.11 Keyboard 
[Apple Computer Apple Internal Keyboard / Trackpad] on 
usb-0000:00:1d.0-2/input0
[    7.492904] appletouch: Geyser mode initialized.
[    7.493143] input: appletouch as 
/devices/pci0000:00/0000:00:1d.0/usb2/2-2/2-2:1.1/input/input6
[    7.499054] input: Apple Computer Apple Internal Keyboard / Trackpad 
as /devices/pci0000:00/0000:00:1d.0/usb2/2-2/2-2:1.2/input/input7
[    7.499173] apple 0003:05AC:021A.0002: input: USB HID v1.11 Device 
[Apple Computer Apple Internal Keyboard / Trackpad] on 
usb-0000:00:1d.0-2/input2
[    7.722586] sky2 0000:02:00.0: setting latency timer to 64
[    7.722645] sky2 0000:02:00.0: Yukon-2 EC chip revision 2
[    7.724385] ohci1394: fw-host0: OHCI-1394 1.1 (PCI): IRQ=[19] 
MMIO=[4c004000-4c0047ff]  Max Packet=[4096]  IR/IT contexts=[4/8]
[    7.807126] sky2 0000:02:00.0: irq 25 for MSI/MSI-X
[    7.807751] sky2 0000:02:00.0: eth0: addr 00:17:f2:cb:e3:71
[    7.829429] power_supply BAT0: uevent
[    7.829432] power_supply BAT0: No power supply yet
[    7.829570] power_supply BAT0: power_supply_changed
[    7.829790] power_supply BAT0: power_supply_changed_work
[    7.854969] ACPI: Battery Slot [BAT0] (battery present)
[    7.910336] power_supply BAT0: power_supply_update_bat_leds 2
[    7.910360] power_supply BAT0: uevent
[    7.910362] power_supply BAT0: POWER_SUPPLY_NAME=BAT0
[    7.910366] power_supply BAT0: Static prop TYPE=Battery
[    7.910370] power_supply BAT0: 14 dynamic props
[    7.910373] power_supply BAT0: prop STATUS=Discharging
[    7.910378] power_supply BAT0: prop PRESENT=1
[    7.910383] power_supply BAT0: prop TECHNOLOGY=Unknown
[    7.910387] power_supply BAT0: prop CYCLE_COUNT=0
[    7.910391] power_supply BAT0: prop VOLTAGE_MIN_DESIGN=10800000
[    7.910395] power_supply BAT0: prop VOLTAGE_NOW=11732000
[    7.910399] power_supply BAT0: prop CURRENT_NOW=48464000
[    7.910402] power_supply BAT0: prop POWER_NOW=48464000
[    7.910406] power_supply BAT0: prop ENERGY_FULL_DESIGN=55000000
[    7.910411] power_supply BAT0: prop ENERGY_FULL=47710000
[    7.910414] power_supply BAT0: prop ENERGY_NOW=46820000
[    7.910418] power_supply BAT0: prop MODEL_NAME=ASMB012
[    7.910422] power_supply BAT0: prop MANUFACTURER=SMPN012
[    7.910426] power_supply BAT0: prop SERIAL_NUMBER=
[    7.910689] power_supply BAT0: uevent
[    7.910692] power_supply BAT0: POWER_SUPPLY_NAME=BAT0
[    7.910696] power_supply BAT0: Static prop TYPE=Battery
[    7.910699] power_supply BAT0: 14 dynamic props
[    7.910703] power_supply BAT0: prop STATUS=Discharging
[    7.910707] power_supply BAT0: prop PRESENT=1
[    7.910711] power_supply BAT0: prop TECHNOLOGY=Unknown
[    7.910715] power_supply BAT0: prop CYCLE_COUNT=0
[    7.910720] power_supply BAT0: prop VOLTAGE_MIN_DESIGN=10800000
[    7.910724] power_supply BAT0: prop VOLTAGE_NOW=11732000
[    7.910728] power_supply BAT0: prop CURRENT_NOW=48464000
[    7.910732] power_supply BAT0: prop POWER_NOW=48464000
[    7.910736] power_supply BAT0: prop ENERGY_FULL_DESIGN=55000000
[    7.910741] power_supply BAT0: prop ENERGY_FULL=47710000
[    7.910745] power_supply BAT0: prop ENERGY_NOW=46820000
[    7.910749] power_supply BAT0: prop MODEL_NAME=ASMB012
[    7.910753] power_supply BAT0: prop MANUFACTURER=SMPN012
[    7.910757] power_supply BAT0: prop SERIAL_NUMBER=
[    7.991294] usb 4-2: new full speed USB device using uhci_hcd and 
address 2
[    8.169312] hda_codec: STAC922x, Apple subsys_id=106b1e00
[    8.213851] generic-usb 0003:05AC:8240.0003: hiddev0: USB HID v1.11 
Device [Apple Computer, Inc. IR Receiver] on usb-0000:00:1d.2-2/input0
[    8.296212] usb 1-4: usbfs: USBDEVFS_CONTROL failed cmd ift-load rqt 
64 rq 160 len 1 ret -71
[    8.299726] usb 1-4: usbfs: USBDEVFS_CONTROL failed cmd ift-load rqt 
64 rq 160 len 1 ret -71
[    8.301350] ath9k 0000:03:00.0: PCI INT A -> GSI 17 (level, low) -> 
IRQ 17
[    8.330317] ath9k 0000:03:00.0: setting latency timer to 64
[    8.464861] ath: EEPROM regdomain: 0x64
[    8.464866] ath: EEPROM indicates we should expect a direct regpair map
[    8.464872] ath: Country alpha2 being used: 00
[    8.464876] ath: Regpair used: 0x64
[    8.493293] phy0: Selected rate control algorithm 'ath9k_rate_control'
[    8.493785] Registered led device: ath9k-phy0::radio
[    8.493852] Registered led device: ath9k-phy0::assoc
[    8.493907] Registered led device: ath9k-phy0::tx
[    8.493967] Registered led device: ath9k-phy0::rx
[    8.493972] phy0: Atheros AR5418 MAC/BB Rev:2 AR5133 RF Rev:81 
mem=0xffffc90000c40000, irq=17
[    8.522564] usb 5-1: new full speed USB device using uhci_hcd and 
address 2
[    8.765409] input: HID 05ac:1000 as 
/devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/input/input8
[    8.803719] generic-usb 0003:05AC:1000.0004: input: USB HID v1.11 
Keyboard [HID 05ac:1000] on usb-0000:00:1d.3-1/input0
[    8.848406] input: HID 05ac:1000 as 
/devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.1/input/input9
[    8.887164] generic-usb 0003:05AC:1000.0005: input: USB HID v1.11 
Mouse [HID 05ac:1000] on usb-0000:00:1d.3-1/input1
[    8.926346] usb 1-4: USB disconnect, address 3
[    8.940850] usb 5-1: usbfs: USBDEVFS_CONTROL failed cmd hid2hci rqt 
64 rq 0 len 0 ret -84
[    9.014552] ieee1394: Host added: ID:BUS[0-00:1023] 
GUID[0019e3fffe2ad87e]
[    9.182951] SELinux: initialized (dev tmpfs, type tmpfs), uses 
transition SIDs
[    9.251396] usb 5-1: USB disconnect, address 2
[    9.279223] Adding 390620k swap on /dev/sda4.  Priority:1 extents:1 
across:390620k
[    9.522117] usb 5-1: new full speed USB device using uhci_hcd and 
address 3
[    9.990077] usb 1-4: new high speed USB device using ehci_hcd and 
address 7
[   10.135474] uvcvideo: Found UVC 1.00 device Built-in iSight (05ac:8501)
[   10.137882] uvcvideo: UVC non compliance - GET_DEF(PROBE) not 
supported. Enabling workaround.
[   10.999320] type=1107 audit(1273772194.999:3): user pid=1920 uid=0 
auid=4294967295 ses=4294967295 subj=system_u:system_r:initrc_t:s0 
msg='avc:  denied  { getgrp } for 
scontext=system_u:system_r:syslogd_t:s0 
tcontext=system_u:system_r:initrc_t:s0 tclass=nscd
[   10.999328] : exe="/usr/sbin/nscd" sauid=0 hostname=? addr=? terminal=?'
[   11.355566] ip_tables: (C) 2000-2006 Netfilter Core Team
[   11.394361] nf_conntrack version 0.5.0 (7883 buckets, 31532 max)
[   11.395908] CONFIG_NF_CT_ACCT is deprecated and will be removed soon. 
Please use
[   11.395911] nf_conntrack.acct=1 kernel parameter, acct=1 nf_conntrack 
module option or
[   11.395913] sysctl net.netfilter.nf_conntrack_acct=1 to enable it.
[   11.754803] type=1107 audit(1273772195.754:4): user pid=1920 uid=0 
auid=4294967295 ses=4294967295 subj=system_u:system_r:initrc_t:s0 
msg='avc:  denied  { getgrp } for 
scontext=system_u:system_r:system_dbusd_t:s0-s0:c0.c255 
tcontext=system_u:system_r:initrc_t:s0 tclass=nscd
[   11.754812] : exe="/usr/sbin/nscd" sauid=0 hostname=? addr=? terminal=?'
[   13.602383] applesmc: light sensor data length set to 6
[   13.791855] type=1107 audit(1273772197.791:5): user pid=1920 uid=0 
auid=4294967295 ses=4294967295 subj=system_u:system_r:initrc_t:s0 
msg='avc:  denied  { getgrp } for 
scontext=system_u:system_r:crond_t:s0-s0:c0.c255 
tcontext=system_u:system_r:initrc_t:s0 tclass=nscd
[   13.791863] : exe="/usr/sbin/nscd" sauid=0 hostname=? addr=? terminal=?'
[   13.997828] sky2 0000:02:00.0: eth0: enabling interface
[   20.149711] type=1100 audit(1273772204.149:6): user pid=2024 uid=0 
auid=4294967295 ses=4294967295 
subj=system_u:system_r:local_login_t:s0-s0:c0.c255 
msg='op=PAM:authentication acct="name" exe="/bin/login" hostname=? 
addr=? terminal=/dev/tty1 res=success'
[   20.155131] type=1101 audit(1273772204.155:7): user pid=2024 uid=0 
auid=4294967295 ses=4294967295 
subj=system_u:system_r:local_login_t:s0-s0:c0.c255 
msg='op=PAM:accounting acct="name" exe="/bin/login" hostname=? addr=? 
terminal=/dev/tty1 res=success'
[   20.241945] type=1006 audit(1273772204.241:8): login pid=2024 uid=0 
old auid=4294967295 new auid=1000 old ses=4294967295 new ses=1
[   20.323652] type=2300 audit(1273772204.323:9): user pid=2024 uid=0 
auid=1000 ses=1 subj=system_u:system_r:local_login_t:s0-s0:c0.c255 
msg='pam: default-context=name:staff_r:staff_t:s0 
selected-context=name:staff_r:staff_t:s0: exe="/bin/login" hostname=? 
addr=? terminal=tty1 res=success'
[   20.429245] type=1105 audit(1273772204.429:10): user pid=2024 uid=0 
auid=1000 ses=1 subj=system_u:system_r:local_login_t:s0-s0:c0.c255 
msg='op=PAM:session_open acct="name" exe="/bin/login" hostname=? addr=? 
terminal=/dev/tty1 res=success'
[   20.433746] type=1107 audit(1273772204.433:11): user pid=1920 uid=0 
auid=4294967295 ses=4294967295 subj=system_u:system_r:initrc_t:s0 
msg='avc:  denied  { getgrp } for 
scontext=system_u:system_r:local_login_t:s0-s0:c0.c255 
tcontext=system_u:system_r:initrc_t:s0 tclass=nscd
[   20.433754] : exe="/usr/sbin/nscd" sauid=0 hostname=? addr=? terminal=?'
[   20.441801] type=1103 audit(1273772204.441:12): user pid=2024 uid=0 
auid=1000 ses=1 subj=system_u:system_r:local_login_t:s0-s0:c0.c255 
msg='op=PAM:setcred acct="name" exe="/bin/login" hostname=? addr=? 
terminal=/dev/tty1 res=success'
[   20.442096] type=1112 audit(1273772204.442:13): user pid=2024 uid=0 
auid=1000 ses=1 subj=system_u:system_r:local_login_t:s0-s0:c0.c255 
msg='op=login acct="name" exe="/bin/login" hostname=? addr=? 
terminal=/dev/tty1 res=success'
[   23.570733] [drm] Initialized drm 1.1.0 20060810
[   23.716956] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[   23.716962] Bluetooth: BNEP filters: protocol multicast
[   23.784568] [drm] radeon defaulting to userspace modesetting.
[   23.785565] pci 0000:01:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[   23.785573] pci 0000:01:00.0: setting latency timer to 64
[   23.788528] [drm] Initialized radeon 1.33.0 20080528 for 0000:01:00.0 
on minor 0
[   23.824131] Bluetooth: SCO (Voice Link) ver 0.6
[   23.824136] Bluetooth: SCO socket layer initialized
[   24.048660] [drm] Setting GART location based on new memory map
[   24.049986] [drm] Loading R500 Microcode
[   24.049993] platform radeon_cp.0: firmware: requesting radeon/R520_cp.bin
[   24.140479] [drm] Num pipes: 1
[   24.140492] [drm] writeback test succeeded in 1 usecs
[   70.715375] ath9k: Two wiphys trying to scan at the same time
[   96.380992] input: Apple Wireless Mouse as 
/devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/bluetooth/hci0/hci0:46/input10
[   96.381560] magicmouse 0005:05AC:030D.0006: input: BLUETOOTH HID 
v0.84 Mouse [Apple Wireless Mouse] on 00:17:F2:B4:BC:F5
[   96.392521] input: Apple Wireless Mouse as 
/devices/pci0000:00/0000:00:1d.3/usb5/5-1/5-1:1.0/bluetooth/hci0/hci0:46/input11
[  139.158731] wlan0: authenticate with 00:15:c7:fd:db:f0 (try 1)
[  139.160475] wlan0: authenticated
[  139.169204] wlan0: associate with 00:15:c7:fd:db:f0 (try 1)
[  139.172329] wlan0: RX AssocResp from 00:15:c7:fd:db:f0 (capab=0x1 
status=0 aid=4)
[  139.172332] wlan0: associated
[  142.735153] wlan0: deauthenticating from 00:15:c7:fd:db:f0 by local 
choice (reason=3)
[  142.746258] cfg80211: Calling CRDA to update world regulatory domain
[  247.410369] wlan0: deauthenticating from 00:15:c7:fd:db:f0 by local 
choice (reason=3)
[  247.414201] wlan0: deauthenticating from 00:15:c7:fd:db:f0 by local 
choice (reason=3)
[  247.422493] wlan0: authenticate with 00:14:1b:5a:81:70 (try 1)
[  247.424352] wlan0: authenticated
[  247.424417] wlan0: associate with 00:14:1b:5a:81:70 (try 1)
[  247.433408] wlan0: RX AssocResp from 00:14:1b:5a:81:70 (capab=0x1 
status=0 aid=3)
[  247.433412] wlan0: associated
[  252.656863] FIREWALL:INPUT IN=wlan0 OUT= 
MAC=ff:ff:ff:ff:ff:ff:00:1e:52:71:70:f3:08:00 SRC=10.34.29.143 
DST=255.255.255.255 LEN=35 TOS=0x00 PREC=0x00 TTL=64 ID=4854 PROTO=UDP 
SPT=63842 DPT=4445 LEN=15
[  265.326115] wlan0: deauthenticated from 00:14:1b:5a:81:70 (Reason: 1)
[  265.330662] cfg80211: Calling CRDA to update world regulatory domain
[  615.498762] 
=============================================================================
[  615.498771] BUG kmalloc-8192: Poison overwritten
[  615.498775] 
-----------------------------------------------------------------------------
[  615.498777]
[  615.498783] INFO: 0xffff880034e82100-0xffff880034e82157. First byte 
0x80 instead of 0x6b
[  615.498802] INFO: Allocated in ath_rxbuf_alloc+0x29/0x9c [ath] 
age=176071 cpu=0 pid=0
[  615.498814] INFO: Freed in skb_release_data+0xc4/0xc9 age=27 cpu=0 pid=0
[  615.498820] INFO: Slab 0xffffea0000b92c00 objects=3 used=2 
fp=0xffff880034e82048 flags=0x40000000000040c3
[  615.498826] INFO: Object 0xffff880034e82048 @offset=8264 fp=0x(null)
[  615.498829]
[  615.498833] Bytes b4 0xffff880034e82038:  5a d0 04 00 01 00 00 00 5a 
5a 5a 5a 5a 5a 5a 5a ZÐ......ZZZZZZZZ
[  615.498861]   Object 0xffff880034e82048:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.498888]   Object 0xffff880034e82058:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.498915]   Object 0xffff880034e82068:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.498943]   Object 0xffff880034e82078:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.498970]   Object 0xffff880034e82088:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.498997]   Object 0xffff880034e82098:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499024]   Object 0xffff880034e820a8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499051]   Object 0xffff880034e820b8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499078]   Object 0xffff880034e820c8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499105]   Object 0xffff880034e820d8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499133]   Object 0xffff880034e820e8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499160]   Object 0xffff880034e820f8:  6b 6b 6b 6b 6b 6b 6b 6b 80 
00 00 00 ff ff ff ff kkkkkkkk....ÿÿÿÿ
[  615.499187]   Object 0xffff880034e82108:  ff ff f8 1e df 0c 17 8d 8e 
ee b0 c7 e7 16 00 63 ÿÿø.ß....î°Çç..c
[  615.499214]   Object 0xffff880034e82118:  0a d4 88 ad 6e 08 00 00 0a 
00 02 00 00 10 46 72 .Ô.­n.........Fr
[  615.499241]   Object 0xffff880034e82128:  65 65 20 50 75 62 6c 69 63 
20 57 69 46 69 01 04 ee.Public.WiFi..
[  615.499269]   Object 0xffff880034e82138:  82 84 8b 96 03 01 02 06 02 
00 00 2a 01 00 2f 01 ...........*../.
[  615.499296]   Object 0xffff880034e82148:  00 dd 09 00 10 18 02 00 10 
00 00 00 9d d9 c9 ec .Ý...........ÙÉì
[  615.499323]   Object 0xffff880034e82158:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499350]   Object 0xffff880034e82168:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499378]   Object 0xffff880034e82178:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499405]   Object 0xffff880034e82188:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499432]   Object 0xffff880034e82198:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499459]   Object 0xffff880034e821a8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499486]   Object 0xffff880034e821b8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499513]   Object 0xffff880034e821c8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499540]   Object 0xffff880034e821d8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499568]   Object 0xffff880034e821e8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499595]   Object 0xffff880034e821f8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499622]   Object 0xffff880034e82208:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499649]   Object 0xffff880034e82218:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82228:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82238:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82248:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82258:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82268:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82278:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82288:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82298:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e822a8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e822b8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e822c8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e822d8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e822e8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e822f8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82308:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82318:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82328:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82338:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82348:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82358:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82368:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82378:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82388:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82398:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e823a8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e823b8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e823c8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e823d8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e823e8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e823f8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82408:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82418:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82428:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82438:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82448:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82458:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82468:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82478:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82488:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82498:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e824a8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e824b8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e824c8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e824d8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e824e8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e824f8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82508:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82518:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82528:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82538:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82548:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82558:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82568:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82578:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82588:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82598:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e825a8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e825b8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e825c8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e825d8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e825e8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e825f8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82608:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82618:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82628:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82638:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82648:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82658:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82668:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82678:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82688:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82698:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e826a8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e826b8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e826c8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e826d8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e826e8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e826f8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82708:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82718:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82728:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82738:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82748:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82758:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82768:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82778:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82788:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82798:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e827a8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e827b8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e827c8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e827d8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e827e8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e827f8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82808:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82818:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82828:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82838:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82848:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82858:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82868:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82878:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82888:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82898:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e828a8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e828b8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e828c8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e828d8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e828e8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e828f8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82908:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82918:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82928:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82938:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82948:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82958:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82968:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82978:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82988:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82998:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e829a8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e829b8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e829c8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e829d8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e829e8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e829f8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82a08:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82a18:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82a28:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82a38:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82a48:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82a58:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82a68:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82a78:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82a88:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82a98:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82aa8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82ab8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82ac8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82ad8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82ae8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82af8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82b08:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82b18:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82b28:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82b38:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82b48:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82b58:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82b68:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82b78:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82b88:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82b98:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82ba8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82bb8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82bc8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82bd8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82be8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82bf8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82c08:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82c18:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82c28:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82c38:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82c48:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82c58:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82c68:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82c78:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82c88:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82c98:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82ca8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82cb8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82cc8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82cd8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82ce8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82cf8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82d08:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82d18:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82d28:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82d38:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82d48:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82d58:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82d68:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82d78:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82d88:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82d98:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82da8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82db8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82dc8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82dd8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82de8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82df8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82e08:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82e18:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82e28:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82e38:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82e48:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82e58:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82e68:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82e78:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82e88:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82e98:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82ea8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82eb8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82ec8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82ed8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82ee8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82ef8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82f08:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82f18:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82f28:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82f38:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82f48:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82f58:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82f68:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82f78:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82f88:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82f98:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82fa8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82fb8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82fc8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82fd8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82fe8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e82ff8:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e83008:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e83018:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e83028:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]   Object 0xffff880034e83038:  6b 6b 6b 6b 6b 6b 6b 6b 6b 
6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
[  615.499668]  Redzone 0xffff880034e84048:  bb bb bb bb bb bb bb bb 
                      »»»»»»»»
[  615.499668]  Padding 0xffff880034e84088:  5a 5a 5a 5a 5a 5a 5a 5a 
                      ZZZZZZZZ
[  615.499668] Pid: 0, comm: swapper Not tainted 
2.6.34-rc7-00057-gcdfda35 #1
[  615.499668] Call Trace:
[  615.499668]  <IRQ>  [<ffffffff810e414c>] print_trailer+0x134/0x13d
[  615.499668]  [<ffffffff810e4679>] check_bytes_and_report+0xb5/0xe6
[  615.499668]  [<ffffffff810e4771>] check_object+0xc7/0x1ff
[  615.499668]  [<ffffffff810e62f0>] __slab_alloc+0x45b/0x568
[  615.499668]  [<ffffffffa024a029>] ? ath_rxbuf_alloc+0x29/0x9c [ath]
[  615.499668]  [<ffffffff810e6dea>] __kmalloc_track_caller+0xf8/0x17e
[  615.499668]  [<ffffffffa024a029>] ? ath_rxbuf_alloc+0x29/0x9c [ath]
[  615.499668]  [<ffffffff81324934>] __alloc_skb+0x69/0x155
[  615.499668]  [<ffffffffa024a029>] ath_rxbuf_alloc+0x29/0x9c [ath]
[  615.499668]  [<ffffffffa02dfa6c>] ath_rx_tasklet+0x214/0x591 [ath9k]
[  615.499668]  [<ffffffffa02dedd3>] ath9k_tasklet+0x55/0xc3 [ath9k]
[  615.499668]  [<ffffffff8105e0c5>] tasklet_action+0x80/0xdf
[  615.499668]  [<ffffffffa02df73e>] ? ath_isr+0x130/0x146 [ath9k]
[  615.499668]  [<ffffffff8105f31b>] __do_softirq+0xe0/0x1a1
[  615.499668]  [<ffffffff81027edc>] call_softirq+0x1c/0x28
[  615.499668]  [<ffffffff810295a5>] do_softirq+0x41/0x7e
[  615.499668]  [<ffffffff8105f196>] irq_exit+0x36/0x78
[  615.499668]  [<ffffffff81028c7b>] do_IRQ+0xa7/0xbe
[  615.499668]  [<ffffffff813e9c93>] ret_from_intr+0x0/0x11
[  615.499668]  <EOI>  [<ffffffffa002ec12>] ? 
acpi_idle_enter_bm+0x2de/0x312 [processor]
[  615.499668]  [<ffffffffa002ec0b>] ? acpi_idle_enter_bm+0x2d7/0x312 
[processor]
[  615.499668]  [<ffffffff81304f5f>] cpuidle_idle_call+0x94/0xf1
[  615.499668]  [<ffffffff810263d3>] cpu_idle+0x58/0x93
[  615.499668]  [<ffffffff813d49b0>] rest_init+0x74/0x76
[  615.499668]  [<ffffffff8167acfe>] start_kernel+0x385/0x390
[  615.499668]  [<ffffffff8167a2ac>] x86_64_start_reservations+0xb3/0xb7
[  615.499668]  [<ffffffff8167a3a8>] x86_64_start_kernel+0xf8/0x107
[  615.499668] FIX kmalloc-8192: Restoring 
0xffff880034e82100-0xffff880034e82157=0x6b
[  615.499668]
[  615.499668] FIX kmalloc-8192: Marking all objects used

^ permalink raw reply

* Re: [PATCH 0/2] iwlwifi fixes for 2.6.34
From: reinette chatre @ 2010-05-13 22:15 UTC (permalink / raw)
  To: sedat.dilek@gmail.com
  Cc: linville@tuxdriver.com, linux-wireless@vger.kernel.org,
	ipw3945-devel@lists.sourceforge.net
In-Reply-To: <AANLkTilm7VDQkXBMWUeRtH634oq9i9AdUIsv6V3woRH_@mail.gmail.com>

On Thu, 2010-05-13 at 14:54 -0700, Sedat Dilek wrote:
> Whats with "iwl3945: fix scan races"?

hmmm ... cryptic indeed ... I assume you are asking "Why is "iwl3945:
fix scan races" not part of a submission to 2.6.34?

If that is the case then yes, indeed , we did not submit "iwl3945: fix
scan races" to 2.6.34 since the scan races being fixed is between normal
(mac80211 initiated) and internal (as part of rf reset) scans. Like I
mention in the cover letter of the submission that includes that patch
(http://thread.gmane.org/gmane.linux.kernel.wireless.general/50651 ) we
introduce RF reset usage to 3945 through the new "plcp error checking"
patch and thus need the scan races fix for that. Before that patch
nothing in iwl3945 was using RF reset and thus no internal scanning that
could trigger a race.

Reinette





^ permalink raw reply

* Re: Possible issue with mac80211 and certain access points
From: Marcel Holtmann @ 2010-05-13 22:07 UTC (permalink / raw)
  To: Chad Koehler; +Cc: linux-wireless
In-Reply-To: <AANLkTim6GiiFR0zWVqlmIJr-sk1ThwO3GAA97aJwWg3U@mail.gmail.com>

Hi Chad,

> Recently purchased a Palm Pre and immediately found some issues with
> connecting to the Wifi Hotspot.  Connecting to other access points
> would work flawlessly.
> 
> Using the Palm Pre hotspot, I can get connected, but the connection
> will drop after a very short period of time.  There are messages in
> the system log whenever the connection drops:
> 
> No probe response from AP <address> after 500ms, disconnecting.
> 
> An internet search turned up several results for people with the same
> issue, different wireless drivers and different access point types.
> 
> I traced this message down to mac80211/mlme.c, to the
> ieee80211_sta_work() function, and was able to determine that for some
> reason this particular AP was not responding to probe requests.  This
> let me further on to the function ieee80211_mgd_probe_ap_send(), which
> sends a direct probe request to the AP -- this probe request was being
> sent and never responded to.
> 
> If I change this function to send a probe request to the broadcast
> address, in a similar manner to what is done in
> ieee80211_direct_probe(), then the access point responds and works
> without issue.
> 
> Due to the volume of issues on the internet that I see with the same
> underlying symptoms, I wonder if there are some small amount of access
> points that will not respond to a direct packet probe request even
> when associated.
> 
> I admittedly know very little about wireless networking internals, so
> I am hesitant to state that this fix is necessary or appropriate, but
> it does solve the issue for me and I am able to remain connected to
> the Palm Pre hotspot, as well as other access points that I have
> tried.
> 
> Please let me know if I can provide further information in this space.

actually I ran into the same issue two days ago and was going to post
it. So what I am seeing with the Palm Pre is that when we actually scan
while connected to the Palm Pre, a second later we end up disconnected.

Regards

Marcel



^ permalink raw reply

* Re: [PATCH 0/2] iwlwifi fixes for 2.6.34
From: Sedat Dilek @ 2010-05-13 21:54 UTC (permalink / raw)
  To: Reinette Chatre; +Cc: linville, linux-wireless, ipw3945-devel
In-Reply-To: <1273787385-9248-1-git-send-email-reinette.chatre@intel.com>

Whats with "iwl3945: fix scan races"?

- Sedat -

[1] https://patchwork.kernel.org/patch/98326/

On Thu, May 13, 2010 at 11:49 PM, Reinette Chatre
<reinette.chatre@intel.com> wrote:
> We include two late fixes hoping to make it into 2.6.34.
>
> "iwlwifi: fix internal scan race" fixes a kernel crash caused by
> accessing a NULL pointer. More can be read in
> https://bugzilla.kernel.org/show_bug.cgi?id=15824
>
> "iwlagn: work around rate scaling reset delay" is already in
> wireless-next-2.6 but has since been shown to be an issue in 2.6.34 also.
> This fixes spurious firmware restarts that has been documented in
> http://bugzilla.intellinuxwireless.org/show_bug.cgi?id=2173 , but it is the
> community report tracked in
> https://bugzilla.kernel.org/show_bug.cgi?id=15782 that prompted us sending
> this fix to wireless-2.6 also.
>
> These patches are also available from wireless-2.6 branch on
> git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi-2.6.git
>
> Reinette Chatre (2):
>  iwlwifi: fix internal scan race
>  iwlagn: work around rate scaling reset delay
>
>  drivers/net/wireless/iwlwifi/iwl-scan.c |   21 +++++++++++++++--
>  drivers/net/wireless/iwlwifi/iwl-sta.c  |   37 ++++++++++++++++++++++++++++++-
>  2 files changed, 54 insertions(+), 4 deletions(-)
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>

^ permalink raw reply

* [PATCH 11/17] iwlwifi: enable remaining 6000 Gen2 devices
From: Reinette Chatre @ 2010-05-13 21:49 UTC (permalink / raw)
  To: linville
  Cc: linux-wireless, ipw3945-devel, Shanyu Zhao, Jay Sternberg,
	Reinette Chatre
In-Reply-To: <1273787399-9280-1-git-send-email-reinette.chatre@intel.com>

From: Shanyu Zhao <shanyu.zhao@intel.com>

This patch enables all remaining 6000 series Gen2 devices.
To work-around a firmware crash problem, we disable sending
bt coex command for 6000g2b series devices.

Signed-off-by: Jay Sternberg <jay.e.sternberg@intel.com>
Signed-off-by: Shanyu Zhao <shanyu.zhao@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
---
 drivers/net/wireless/iwlwifi/iwl-6000.c     |  252 +++++++++++++++++++++++++++
 drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c |    4 +-
 drivers/net/wireless/iwlwifi/iwl-agn.c      |   17 ++
 drivers/net/wireless/iwlwifi/iwl-agn.h      |    4 +
 drivers/net/wireless/iwlwifi/iwl-dev.h      |    7 +
 5 files changed, 282 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/iwlwifi/iwl-6000.c b/drivers/net/wireless/iwlwifi/iwl-6000.c
index 9fbf54c..9247594 100644
--- a/drivers/net/wireless/iwlwifi/iwl-6000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-6000.c
@@ -71,6 +71,10 @@
 #define _IWL6000G2A_MODULE_FIRMWARE(api) IWL6000G2A_FW_PRE #api ".ucode"
 #define IWL6000G2A_MODULE_FIRMWARE(api) _IWL6000G2A_MODULE_FIRMWARE(api)
 
+#define IWL6000G2B_FW_PRE "iwlwifi-6000g2b-"
+#define _IWL6000G2B_MODULE_FIRMWARE(api) IWL6000G2B_FW_PRE #api ".ucode"
+#define IWL6000G2B_MODULE_FIRMWARE(api) _IWL6000G2B_MODULE_FIRMWARE(api)
+
 
 static void iwl6000_set_ct_threshold(struct iwl_priv *priv)
 {
@@ -335,6 +339,25 @@ static const struct iwl_ops iwl6000_ops = {
 	.led = &iwlagn_led_ops,
 };
 
+static void do_not_send_bt_config(struct iwl_priv *priv)
+{
+}
+
+static struct iwl_hcmd_ops iwl6000g2b_hcmd = {
+	.rxon_assoc = iwlagn_send_rxon_assoc,
+	.commit_rxon = iwl_commit_rxon,
+	.set_rxon_chain = iwl_set_rxon_chain,
+	.set_tx_ant = iwlagn_send_tx_ant_config,
+	.send_bt_config = do_not_send_bt_config,
+};
+
+static const struct iwl_ops iwl6000g2b_ops = {
+	.lib = &iwl6000_lib,
+	.hcmd = &iwl6000g2b_hcmd,
+	.utils = &iwlagn_hcmd_utils,
+	.led = &iwlagn_led_ops,
+};
+
 static struct iwl_lib_ops iwl6050_lib = {
 	.set_hw_params = iwl6050_hw_set_hw_params,
 	.txq_update_byte_cnt_tbl = iwlagn_txq_update_byte_cnt_tbl,
@@ -445,6 +468,234 @@ struct iwl_cfg iwl6000g2a_2agn_cfg = {
 	.chain_noise_calib_by_driver = true,
 };
 
+struct iwl_cfg iwl6000g2a_2abg_cfg = {
+	.name = "6000 Series 2x2 ABG Gen2a",
+	.fw_name_pre = IWL6000G2A_FW_PRE,
+	.ucode_api_max = IWL6000G2_UCODE_API_MAX,
+	.ucode_api_min = IWL6000G2_UCODE_API_MIN,
+	.sku = IWL_SKU_A|IWL_SKU_G,
+	.ops = &iwl6000_ops,
+	.eeprom_size = OTP_LOW_IMAGE_SIZE,
+	.eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
+	.eeprom_calib_ver = EEPROM_6000G2_TX_POWER_VERSION,
+	.num_of_queues = IWLAGN_NUM_QUEUES,
+	.num_of_ampdu_queues = IWLAGN_NUM_AMPDU_QUEUES,
+	.mod_params = &iwlagn_mod_params,
+	.valid_tx_ant = ANT_AB,
+	.valid_rx_ant = ANT_AB,
+	.pll_cfg_val = 0,
+	.set_l0s = true,
+	.use_bsm = false,
+	.pa_type = IWL_PA_SYSTEM,
+	.max_ll_items = OTP_MAX_LL_ITEMS_6x00,
+	.shadow_ram_support = true,
+	.led_compensation = 51,
+	.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
+	.supports_idle = true,
+	.adv_thermal_throttle = true,
+	.support_ct_kill_exit = true,
+	.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
+	.chain_noise_scale = 1000,
+	.monitor_recover_period = IWL_MONITORING_PERIOD,
+	.max_event_log_size = 512,
+};
+
+struct iwl_cfg iwl6000g2a_2bg_cfg = {
+	.name = "6000 Series 2x2 BG Gen2a",
+	.fw_name_pre = IWL6000G2A_FW_PRE,
+	.ucode_api_max = IWL6000G2_UCODE_API_MAX,
+	.ucode_api_min = IWL6000G2_UCODE_API_MIN,
+	.sku = IWL_SKU_G,
+	.ops = &iwl6000_ops,
+	.eeprom_size = OTP_LOW_IMAGE_SIZE,
+	.eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
+	.eeprom_calib_ver = EEPROM_6000G2_TX_POWER_VERSION,
+	.num_of_queues = IWLAGN_NUM_QUEUES,
+	.num_of_ampdu_queues = IWLAGN_NUM_AMPDU_QUEUES,
+	.mod_params = &iwlagn_mod_params,
+	.valid_tx_ant = ANT_AB,
+	.valid_rx_ant = ANT_AB,
+	.pll_cfg_val = 0,
+	.set_l0s = true,
+	.use_bsm = false,
+	.pa_type = IWL_PA_SYSTEM,
+	.max_ll_items = OTP_MAX_LL_ITEMS_6x00,
+	.shadow_ram_support = true,
+	.led_compensation = 51,
+	.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
+	.supports_idle = true,
+	.adv_thermal_throttle = true,
+	.support_ct_kill_exit = true,
+	.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
+	.chain_noise_scale = 1000,
+	.monitor_recover_period = IWL_MONITORING_PERIOD,
+	.max_event_log_size = 512,
+};
+
+struct iwl_cfg iwl6000g2b_2agn_cfg = {
+	.name = "6000 Series 2x2 AGN Gen2b",
+	.fw_name_pre = IWL6000G2B_FW_PRE,
+	.ucode_api_max = IWL6000G2_UCODE_API_MAX,
+	.ucode_api_min = IWL6000G2_UCODE_API_MIN,
+	.sku = IWL_SKU_A|IWL_SKU_G|IWL_SKU_N,
+	.ops = &iwl6000g2b_ops,
+	.eeprom_size = OTP_LOW_IMAGE_SIZE,
+	.eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
+	.eeprom_calib_ver = EEPROM_6000G2_TX_POWER_VERSION,
+	.num_of_queues = IWLAGN_NUM_QUEUES,
+	.num_of_ampdu_queues = IWLAGN_NUM_AMPDU_QUEUES,
+	.mod_params = &iwlagn_mod_params,
+	.valid_tx_ant = ANT_AB,
+	.valid_rx_ant = ANT_AB,
+	.pll_cfg_val = 0,
+	.set_l0s = true,
+	.use_bsm = false,
+	.pa_type = IWL_PA_SYSTEM,
+	.max_ll_items = OTP_MAX_LL_ITEMS_6x00,
+	.shadow_ram_support = true,
+	.ht_greenfield_support = true,
+	.led_compensation = 51,
+	.use_rts_for_ht = true, /* use rts/cts protection */
+	.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
+	.supports_idle = true,
+	.adv_thermal_throttle = true,
+	.support_ct_kill_exit = true,
+	.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
+	.chain_noise_scale = 1000,
+	.monitor_recover_period = IWL_MONITORING_PERIOD,
+	.max_event_log_size = 512,
+};
+
+struct iwl_cfg iwl6000g2b_2abg_cfg = {
+	.name = "6000 Series 2x2 ABG Gen2b",
+	.fw_name_pre = IWL6000G2B_FW_PRE,
+	.ucode_api_max = IWL6000G2_UCODE_API_MAX,
+	.ucode_api_min = IWL6000G2_UCODE_API_MIN,
+	.sku = IWL_SKU_A|IWL_SKU_G,
+	.ops = &iwl6000g2b_ops,
+	.eeprom_size = OTP_LOW_IMAGE_SIZE,
+	.eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
+	.eeprom_calib_ver = EEPROM_6000G2_TX_POWER_VERSION,
+	.num_of_queues = IWLAGN_NUM_QUEUES,
+	.num_of_ampdu_queues = IWLAGN_NUM_AMPDU_QUEUES,
+	.mod_params = &iwlagn_mod_params,
+	.valid_tx_ant = ANT_AB,
+	.valid_rx_ant = ANT_AB,
+	.pll_cfg_val = 0,
+	.set_l0s = true,
+	.use_bsm = false,
+	.pa_type = IWL_PA_SYSTEM,
+	.max_ll_items = OTP_MAX_LL_ITEMS_6x00,
+	.shadow_ram_support = true,
+	.led_compensation = 51,
+	.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
+	.supports_idle = true,
+	.adv_thermal_throttle = true,
+	.support_ct_kill_exit = true,
+	.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
+	.chain_noise_scale = 1000,
+	.monitor_recover_period = IWL_MONITORING_PERIOD,
+	.max_event_log_size = 512,
+};
+
+struct iwl_cfg iwl6000g2b_2bg_cfg = {
+	.name = "6000 Series 2x2 BG Gen2b",
+	.fw_name_pre = IWL6000G2B_FW_PRE,
+	.ucode_api_max = IWL6000G2_UCODE_API_MAX,
+	.ucode_api_min = IWL6000G2_UCODE_API_MIN,
+	.sku = IWL_SKU_G,
+	.ops = &iwl6000g2b_ops,
+	.eeprom_size = OTP_LOW_IMAGE_SIZE,
+	.eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
+	.eeprom_calib_ver = EEPROM_6000G2_TX_POWER_VERSION,
+	.num_of_queues = IWLAGN_NUM_QUEUES,
+	.num_of_ampdu_queues = IWLAGN_NUM_AMPDU_QUEUES,
+	.mod_params = &iwlagn_mod_params,
+	.valid_tx_ant = ANT_AB,
+	.valid_rx_ant = ANT_AB,
+	.pll_cfg_val = 0,
+	.set_l0s = true,
+	.use_bsm = false,
+	.pa_type = IWL_PA_SYSTEM,
+	.max_ll_items = OTP_MAX_LL_ITEMS_6x00,
+	.shadow_ram_support = true,
+	.led_compensation = 51,
+	.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
+	.supports_idle = true,
+	.adv_thermal_throttle = true,
+	.support_ct_kill_exit = true,
+	.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
+	.chain_noise_scale = 1000,
+	.monitor_recover_period = IWL_MONITORING_PERIOD,
+	.max_event_log_size = 512,
+};
+
+struct iwl_cfg iwl6000g2b_bgn_cfg = {
+	.name = "6000 Series 1x2 BGN Gen2b",
+	.fw_name_pre = IWL6000G2B_FW_PRE,
+	.ucode_api_max = IWL6000G2_UCODE_API_MAX,
+	.ucode_api_min = IWL6000G2_UCODE_API_MIN,
+	.sku = IWL_SKU_G|IWL_SKU_N,
+	.ops = &iwl6000g2b_ops,
+	.eeprom_size = OTP_LOW_IMAGE_SIZE,
+	.eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
+	.eeprom_calib_ver = EEPROM_6000G2_TX_POWER_VERSION,
+	.num_of_queues = IWLAGN_NUM_QUEUES,
+	.num_of_ampdu_queues = IWLAGN_NUM_AMPDU_QUEUES,
+	.mod_params = &iwlagn_mod_params,
+	.valid_tx_ant = ANT_A,
+	.valid_rx_ant = ANT_AB,
+	.pll_cfg_val = 0,
+	.set_l0s = true,
+	.use_bsm = false,
+	.pa_type = IWL_PA_SYSTEM,
+	.max_ll_items = OTP_MAX_LL_ITEMS_6x00,
+	.shadow_ram_support = true,
+	.ht_greenfield_support = true,
+	.led_compensation = 51,
+	.use_rts_for_ht = true, /* use rts/cts protection */
+	.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
+	.supports_idle = true,
+	.adv_thermal_throttle = true,
+	.support_ct_kill_exit = true,
+	.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
+	.chain_noise_scale = 1000,
+	.monitor_recover_period = IWL_MONITORING_PERIOD,
+	.max_event_log_size = 512,
+};
+
+struct iwl_cfg iwl6000g2b_bg_cfg = {
+	.name = "6000 Series 1x2 BG Gen2b",
+	.fw_name_pre = IWL6000G2B_FW_PRE,
+	.ucode_api_max = IWL6000G2_UCODE_API_MAX,
+	.ucode_api_min = IWL6000G2_UCODE_API_MIN,
+	.sku = IWL_SKU_G,
+	.ops = &iwl6000g2b_ops,
+	.eeprom_size = OTP_LOW_IMAGE_SIZE,
+	.eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
+	.eeprom_calib_ver = EEPROM_6000G2_TX_POWER_VERSION,
+	.num_of_queues = IWLAGN_NUM_QUEUES,
+	.num_of_ampdu_queues = IWLAGN_NUM_AMPDU_QUEUES,
+	.mod_params = &iwlagn_mod_params,
+	.valid_tx_ant = ANT_A,
+	.valid_rx_ant = ANT_AB,
+	.pll_cfg_val = 0,
+	.set_l0s = true,
+	.use_bsm = false,
+	.pa_type = IWL_PA_SYSTEM,
+	.max_ll_items = OTP_MAX_LL_ITEMS_6x00,
+	.shadow_ram_support = true,
+	.led_compensation = 51,
+	.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
+	.supports_idle = true,
+	.adv_thermal_throttle = true,
+	.support_ct_kill_exit = true,
+	.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
+	.chain_noise_scale = 1000,
+	.monitor_recover_period = IWL_MONITORING_PERIOD,
+	.max_event_log_size = 512,
+};
+
 /*
  * "i": Internal configuration, use internal Power Amplifier
  */
@@ -667,3 +918,4 @@ struct iwl_cfg iwl6000_3agn_cfg = {
 MODULE_FIRMWARE(IWL6000_MODULE_FIRMWARE(IWL6000_UCODE_API_MAX));
 MODULE_FIRMWARE(IWL6050_MODULE_FIRMWARE(IWL6050_UCODE_API_MAX));
 MODULE_FIRMWARE(IWL6000G2A_MODULE_FIRMWARE(IWL6000G2_UCODE_API_MAX));
+MODULE_FIRMWARE(IWL6000G2B_MODULE_FIRMWARE(IWL6000G2_UCODE_API_MAX));
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c b/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c
index 44ef5d9..25851ec 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c
@@ -37,7 +37,7 @@
 #include "iwl-io.h"
 #include "iwl-agn.h"
 
-static int iwlagn_send_rxon_assoc(struct iwl_priv *priv)
+int iwlagn_send_rxon_assoc(struct iwl_priv *priv)
 {
 	int ret = 0;
 	struct iwl5000_rxon_assoc_cmd rxon_assoc;
@@ -84,7 +84,7 @@ static int iwlagn_send_rxon_assoc(struct iwl_priv *priv)
 	return ret;
 }
 
-static int iwlagn_send_tx_ant_config(struct iwl_priv *priv, u8 valid_tx_ant)
+int iwlagn_send_tx_ant_config(struct iwl_priv *priv, u8 valid_tx_ant)
 {
 	struct iwl_tx_ant_config_cmd tx_ant_cmd = {
 	  .valid = cpu_to_le32(valid_tx_ant),
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index 845d0ee..f910246 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -4059,6 +4059,23 @@ static DEFINE_PCI_DEVICE_TABLE(iwl_hw_card_ids) = {
 	{IWL_PCI_DEVICE(0x0082, 0x1201, iwl6000g2a_2agn_cfg)},
 	{IWL_PCI_DEVICE(0x0085, 0x1211, iwl6000g2a_2agn_cfg)},
 	{IWL_PCI_DEVICE(0x0082, 0x1221, iwl6000g2a_2agn_cfg)},
+	{IWL_PCI_DEVICE(0x0082, 0x1206, iwl6000g2a_2abg_cfg)},
+	{IWL_PCI_DEVICE(0x0085, 0x1216, iwl6000g2a_2abg_cfg)},
+	{IWL_PCI_DEVICE(0x0082, 0x1226, iwl6000g2a_2abg_cfg)},
+	{IWL_PCI_DEVICE(0x0082, 0x1207, iwl6000g2a_2bg_cfg)},
+
+/* 6x00 Series Gen2b */
+	{IWL_PCI_DEVICE(0x008F, 0x5105, iwl6000g2b_bgn_cfg)},
+	{IWL_PCI_DEVICE(0x0090, 0x5115, iwl6000g2b_bgn_cfg)},
+	{IWL_PCI_DEVICE(0x008F, 0x5125, iwl6000g2b_bgn_cfg)},
+	{IWL_PCI_DEVICE(0x008F, 0x5107, iwl6000g2b_bg_cfg)},
+	{IWL_PCI_DEVICE(0x008F, 0x5201, iwl6000g2b_2agn_cfg)},
+	{IWL_PCI_DEVICE(0x0090, 0x5211, iwl6000g2b_2agn_cfg)},
+	{IWL_PCI_DEVICE(0x008F, 0x5221, iwl6000g2b_2agn_cfg)},
+	{IWL_PCI_DEVICE(0x008F, 0x5206, iwl6000g2b_2abg_cfg)},
+	{IWL_PCI_DEVICE(0x0090, 0x5216, iwl6000g2b_2abg_cfg)},
+	{IWL_PCI_DEVICE(0x008F, 0x5226, iwl6000g2b_2abg_cfg)},
+	{IWL_PCI_DEVICE(0x008F, 0x5207, iwl6000g2b_2bg_cfg)},
 
 /* 6x50 WiFi/WiMax Series */
 	{IWL_PCI_DEVICE(0x0087, 0x1301, iwl6050_2agn_cfg)},
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.h b/drivers/net/wireless/iwlwifi/iwl-agn.h
index fbbefe1..12c198f 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.h
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.h
@@ -180,4 +180,8 @@ void iwlagn_request_scan(struct iwl_priv *priv, struct ieee80211_vif *vif);
 int iwlagn_manage_ibss_station(struct iwl_priv *priv,
 			       struct ieee80211_vif *vif, bool add);
 
+/* hcmd */
+int iwlagn_send_rxon_assoc(struct iwl_priv *priv);
+int iwlagn_send_tx_ant_config(struct iwl_priv *priv, u8 valid_tx_ant);
+
 #endif /* __iwl_agn_h__ */
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h
index fdd0430..04296fd 100644
--- a/drivers/net/wireless/iwlwifi/iwl-dev.h
+++ b/drivers/net/wireless/iwlwifi/iwl-dev.h
@@ -58,6 +58,13 @@ extern struct iwl_cfg iwl5100_abg_cfg;
 extern struct iwl_cfg iwl5150_agn_cfg;
 extern struct iwl_cfg iwl5150_abg_cfg;
 extern struct iwl_cfg iwl6000g2a_2agn_cfg;
+extern struct iwl_cfg iwl6000g2a_2abg_cfg;
+extern struct iwl_cfg iwl6000g2a_2bg_cfg;
+extern struct iwl_cfg iwl6000g2b_bgn_cfg;
+extern struct iwl_cfg iwl6000g2b_bg_cfg;
+extern struct iwl_cfg iwl6000g2b_2agn_cfg;
+extern struct iwl_cfg iwl6000g2b_2abg_cfg;
+extern struct iwl_cfg iwl6000g2b_2bg_cfg;
 extern struct iwl_cfg iwl6000i_2agn_cfg;
 extern struct iwl_cfg iwl6000i_2abg_cfg;
 extern struct iwl_cfg iwl6000i_2bg_cfg;
-- 
1.6.3.3


^ permalink raw reply related

* [PATCH 12/17] iwlwifi: code cleanup for _agn devices
From: Reinette Chatre @ 2010-05-13 21:49 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, ipw3945-devel, Wey-Yi Guy, Reinette Chatre
In-Reply-To: <1273787399-9280-1-git-send-email-reinette.chatre@intel.com>

From: Wey-Yi Guy <wey-yi.w.guy@intel.com>

Move configuration structure for _agn devices from iwl-dev.h to
iwl-agn.h. Those data structures are for _agn devices and should be keep
for _agn devices only.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
---
 drivers/net/wireless/iwlwifi/iwl-agn.h |   26 ++++++++++++++++++++++++++
 drivers/net/wireless/iwlwifi/iwl-dev.h |   26 --------------------------
 2 files changed, 26 insertions(+), 26 deletions(-)

diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.h b/drivers/net/wireless/iwlwifi/iwl-agn.h
index 12c198f..2ebbe81 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.h
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.h
@@ -65,6 +65,32 @@
 
 #include "iwl-dev.h"
 
+/* configuration for the _agn devices */
+extern struct iwl_cfg iwl4965_agn_cfg;
+extern struct iwl_cfg iwl5300_agn_cfg;
+extern struct iwl_cfg iwl5100_agn_cfg;
+extern struct iwl_cfg iwl5350_agn_cfg;
+extern struct iwl_cfg iwl5100_bgn_cfg;
+extern struct iwl_cfg iwl5100_abg_cfg;
+extern struct iwl_cfg iwl5150_agn_cfg;
+extern struct iwl_cfg iwl5150_abg_cfg;
+extern struct iwl_cfg iwl6000g2a_2agn_cfg;
+extern struct iwl_cfg iwl6000g2a_2abg_cfg;
+extern struct iwl_cfg iwl6000g2a_2bg_cfg;
+extern struct iwl_cfg iwl6000g2b_bgn_cfg;
+extern struct iwl_cfg iwl6000g2b_bg_cfg;
+extern struct iwl_cfg iwl6000g2b_2agn_cfg;
+extern struct iwl_cfg iwl6000g2b_2abg_cfg;
+extern struct iwl_cfg iwl6000g2b_2bg_cfg;
+extern struct iwl_cfg iwl6000i_2agn_cfg;
+extern struct iwl_cfg iwl6000i_2abg_cfg;
+extern struct iwl_cfg iwl6000i_2bg_cfg;
+extern struct iwl_cfg iwl6000_3agn_cfg;
+extern struct iwl_cfg iwl6050_2agn_cfg;
+extern struct iwl_cfg iwl6050_2abg_cfg;
+extern struct iwl_cfg iwl1000_bgn_cfg;
+extern struct iwl_cfg iwl1000_bg_cfg;
+
 extern struct iwl_mod_params iwlagn_mod_params;
 extern struct iwl_hcmd_ops iwlagn_hcmd;
 extern struct iwl_hcmd_utils_ops iwlagn_hcmd_utils;
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h
index 04296fd..8b2d06c 100644
--- a/drivers/net/wireless/iwlwifi/iwl-dev.h
+++ b/drivers/net/wireless/iwlwifi/iwl-dev.h
@@ -48,32 +48,6 @@
 #include "iwl-power.h"
 #include "iwl-agn-rs.h"
 
-/* configuration for the iwl4965 */
-extern struct iwl_cfg iwl4965_agn_cfg;
-extern struct iwl_cfg iwl5300_agn_cfg;
-extern struct iwl_cfg iwl5100_agn_cfg;
-extern struct iwl_cfg iwl5350_agn_cfg;
-extern struct iwl_cfg iwl5100_bgn_cfg;
-extern struct iwl_cfg iwl5100_abg_cfg;
-extern struct iwl_cfg iwl5150_agn_cfg;
-extern struct iwl_cfg iwl5150_abg_cfg;
-extern struct iwl_cfg iwl6000g2a_2agn_cfg;
-extern struct iwl_cfg iwl6000g2a_2abg_cfg;
-extern struct iwl_cfg iwl6000g2a_2bg_cfg;
-extern struct iwl_cfg iwl6000g2b_bgn_cfg;
-extern struct iwl_cfg iwl6000g2b_bg_cfg;
-extern struct iwl_cfg iwl6000g2b_2agn_cfg;
-extern struct iwl_cfg iwl6000g2b_2abg_cfg;
-extern struct iwl_cfg iwl6000g2b_2bg_cfg;
-extern struct iwl_cfg iwl6000i_2agn_cfg;
-extern struct iwl_cfg iwl6000i_2abg_cfg;
-extern struct iwl_cfg iwl6000i_2bg_cfg;
-extern struct iwl_cfg iwl6000_3agn_cfg;
-extern struct iwl_cfg iwl6050_2agn_cfg;
-extern struct iwl_cfg iwl6050_2abg_cfg;
-extern struct iwl_cfg iwl1000_bgn_cfg;
-extern struct iwl_cfg iwl1000_bg_cfg;
-
 struct iwl_tx_queue;
 
 /* CT-KILL constants */
-- 
1.6.3.3


^ permalink raw reply related

* [PATCH 02/17] iwlwifi: move _agn statistics related structure
From: Reinette Chatre @ 2010-05-13 21:49 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, ipw3945-devel, Wey-Yi Guy, Reinette Chatre
In-Reply-To: <1273787399-9280-1-git-send-email-reinette.chatre@intel.com>

From: Wey-Yi Guy <wey-yi.w.guy@intel.com>

agn and 3945 has different statistics_notif data structure; since 3945
has it statistics_notif data structure inside the _3945 portion of
iwl_priv, it make sense to move the agn statistics_notif into _agn portion.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
---
 drivers/net/wireless/iwlwifi/iwl-4965.c        |    4 +-
 drivers/net/wireless/iwlwifi/iwl-5000.c        |    2 +-
 drivers/net/wireless/iwlwifi/iwl-agn-debugfs.c |   64 ++++++++++++------------
 drivers/net/wireless/iwlwifi/iwl-agn-lib.c     |    3 +-
 drivers/net/wireless/iwlwifi/iwl-agn.c         |   14 +++---
 drivers/net/wireless/iwlwifi/iwl-debugfs.c     |    9 ++--
 drivers/net/wireless/iwlwifi/iwl-dev.h         |   14 +++---
 drivers/net/wireless/iwlwifi/iwl-rx.c          |   57 +++++++++++----------
 8 files changed, 85 insertions(+), 82 deletions(-)

diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.c b/drivers/net/wireless/iwlwifi/iwl-4965.c
index d3afdda..03b066c 100644
--- a/drivers/net/wireless/iwlwifi/iwl-4965.c
+++ b/drivers/net/wireless/iwlwifi/iwl-4965.c
@@ -1542,7 +1542,7 @@ static int iwl4965_hw_get_temperature(struct iwl_priv *priv)
 	u32 R4;
 
 	if (test_bit(STATUS_TEMPERATURE, &priv->status) &&
-		(priv->statistics.flag & STATISTICS_REPLY_FLG_HT40_MODE_MSK)) {
+		(priv->_agn.statistics.flag & STATISTICS_REPLY_FLG_HT40_MODE_MSK)) {
 		IWL_DEBUG_TEMP(priv, "Running HT40 temperature calibration\n");
 		R1 = (s32)le32_to_cpu(priv->card_alive_init.therm_r1[1]);
 		R2 = (s32)le32_to_cpu(priv->card_alive_init.therm_r2[1]);
@@ -1567,7 +1567,7 @@ static int iwl4965_hw_get_temperature(struct iwl_priv *priv)
 		vt = sign_extend(R4, 23);
 	else
 		vt = sign_extend(
-			le32_to_cpu(priv->statistics.general.temperature), 23);
+			le32_to_cpu(priv->_agn.statistics.general.temperature), 23);
 
 	IWL_DEBUG_TEMP(priv, "Calib values R[1-3]: %d %d %d R4: %d\n", R1, R2, R3, vt);
 
diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c
index a28af7e..447ec48 100644
--- a/drivers/net/wireless/iwlwifi/iwl-5000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-5000.c
@@ -260,7 +260,7 @@ static void iwl5150_temperature(struct iwl_priv *priv)
 	u32 vt = 0;
 	s32 offset =  iwl_temp_calib_to_offset(priv);
 
-	vt = le32_to_cpu(priv->statistics.general.temperature);
+	vt = le32_to_cpu(priv->_agn.statistics.general.temperature);
 	vt = vt / IWL_5150_VOLTAGE_TO_TEMPERATURE_COEFF + offset;
 	/* now vt hold the temperature in Kelvin */
 	priv->temperature = KELVIN_TO_CELSIUS(vt);
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-debugfs.c b/drivers/net/wireless/iwlwifi/iwl-agn-debugfs.c
index 48c023b..90be033 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-debugfs.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-debugfs.c
@@ -58,22 +58,22 @@ ssize_t iwl_ucode_rx_stats_read(struct file *file, char __user *user_buf,
 	 * the last statistics notification from uCode
 	 * might not reflect the current uCode activity
 	 */
-	ofdm = &priv->statistics.rx.ofdm;
-	cck = &priv->statistics.rx.cck;
-	general = &priv->statistics.rx.general;
-	ht = &priv->statistics.rx.ofdm_ht;
-	accum_ofdm = &priv->accum_statistics.rx.ofdm;
-	accum_cck = &priv->accum_statistics.rx.cck;
-	accum_general = &priv->accum_statistics.rx.general;
-	accum_ht = &priv->accum_statistics.rx.ofdm_ht;
-	delta_ofdm = &priv->delta_statistics.rx.ofdm;
-	delta_cck = &priv->delta_statistics.rx.cck;
-	delta_general = &priv->delta_statistics.rx.general;
-	delta_ht = &priv->delta_statistics.rx.ofdm_ht;
-	max_ofdm = &priv->max_delta.rx.ofdm;
-	max_cck = &priv->max_delta.rx.cck;
-	max_general = &priv->max_delta.rx.general;
-	max_ht = &priv->max_delta.rx.ofdm_ht;
+	ofdm = &priv->_agn.statistics.rx.ofdm;
+	cck = &priv->_agn.statistics.rx.cck;
+	general = &priv->_agn.statistics.rx.general;
+	ht = &priv->_agn.statistics.rx.ofdm_ht;
+	accum_ofdm = &priv->_agn.accum_statistics.rx.ofdm;
+	accum_cck = &priv->_agn.accum_statistics.rx.cck;
+	accum_general = &priv->_agn.accum_statistics.rx.general;
+	accum_ht = &priv->_agn.accum_statistics.rx.ofdm_ht;
+	delta_ofdm = &priv->_agn.delta_statistics.rx.ofdm;
+	delta_cck = &priv->_agn.delta_statistics.rx.cck;
+	delta_general = &priv->_agn.delta_statistics.rx.general;
+	delta_ht = &priv->_agn.delta_statistics.rx.ofdm_ht;
+	max_ofdm = &priv->_agn.max_delta.rx.ofdm;
+	max_cck = &priv->_agn.max_delta.rx.cck;
+	max_general = &priv->_agn.max_delta.rx.general;
+	max_ht = &priv->_agn.max_delta.rx.ofdm_ht;
 
 	pos += iwl_dbgfs_statistics_flag(priv, buf, bufsz);
 	pos += scnprintf(buf + pos, bufsz - pos, "%-32s     current"
@@ -539,10 +539,10 @@ ssize_t iwl_ucode_tx_stats_read(struct file *file,
 	  * the last statistics notification from uCode
 	  * might not reflect the current uCode activity
 	  */
-	tx = &priv->statistics.tx;
-	accum_tx = &priv->accum_statistics.tx;
-	delta_tx = &priv->delta_statistics.tx;
-	max_tx = &priv->max_delta.tx;
+	tx = &priv->_agn.statistics.tx;
+	accum_tx = &priv->_agn.accum_statistics.tx;
+	delta_tx = &priv->_agn.delta_statistics.tx;
+	max_tx = &priv->_agn.max_delta.tx;
 	pos += iwl_dbgfs_statistics_flag(priv, buf, bufsz);
 	pos += scnprintf(buf + pos, bufsz - pos,  "%-32s     current"
 			 "acumulative       delta         max\n",
@@ -756,18 +756,18 @@ ssize_t iwl_ucode_general_stats_read(struct file *file, char __user *user_buf,
 	  * the last statistics notification from uCode
 	  * might not reflect the current uCode activity
 	  */
-	general = &priv->statistics.general;
-	dbg = &priv->statistics.general.dbg;
-	div = &priv->statistics.general.div;
-	accum_general = &priv->accum_statistics.general;
-	delta_general = &priv->delta_statistics.general;
-	max_general = &priv->max_delta.general;
-	accum_dbg = &priv->accum_statistics.general.dbg;
-	delta_dbg = &priv->delta_statistics.general.dbg;
-	max_dbg = &priv->max_delta.general.dbg;
-	accum_div = &priv->accum_statistics.general.div;
-	delta_div = &priv->delta_statistics.general.div;
-	max_div = &priv->max_delta.general.div;
+	general = &priv->_agn.statistics.general;
+	dbg = &priv->_agn.statistics.general.dbg;
+	div = &priv->_agn.statistics.general.div;
+	accum_general = &priv->_agn.accum_statistics.general;
+	delta_general = &priv->_agn.delta_statistics.general;
+	max_general = &priv->_agn.max_delta.general;
+	accum_dbg = &priv->_agn.accum_statistics.general.dbg;
+	delta_dbg = &priv->_agn.delta_statistics.general.dbg;
+	max_dbg = &priv->_agn.max_delta.general.dbg;
+	accum_div = &priv->_agn.accum_statistics.general.div;
+	delta_div = &priv->_agn.delta_statistics.general.div;
+	max_div = &priv->_agn.max_delta.general.div;
 	pos += iwl_dbgfs_statistics_flag(priv, buf, bufsz);
 	pos += scnprintf(buf + pos, bufsz - pos, "%-32s     current"
 			 "acumulative       delta         max\n",
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
index 637d7b6..c7ce632 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
@@ -319,7 +319,8 @@ int iwlagn_send_tx_power(struct iwl_priv *priv)
 void iwlagn_temperature(struct iwl_priv *priv)
 {
 	/* store temperature from statistics (in Celsius) */
-	priv->temperature = le32_to_cpu(priv->statistics.general.temperature);
+	priv->temperature =
+		le32_to_cpu(priv->_agn.statistics.general.temperature);
 	iwl_tt_handler(priv);
 }
 
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index d7a9aea..f62a345 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -1449,13 +1449,13 @@ bool iwl_good_ack_health(struct iwl_priv *priv,
 
 	actual_ack_cnt_delta =
 		le32_to_cpu(pkt->u.stats.tx.actual_ack_cnt) -
-		le32_to_cpu(priv->statistics.tx.actual_ack_cnt);
+		le32_to_cpu(priv->_agn.statistics.tx.actual_ack_cnt);
 	expected_ack_cnt_delta =
 		le32_to_cpu(pkt->u.stats.tx.expected_ack_cnt) -
-		le32_to_cpu(priv->statistics.tx.expected_ack_cnt);
+		le32_to_cpu(priv->_agn.statistics.tx.expected_ack_cnt);
 	ba_timeout_delta =
 		le32_to_cpu(pkt->u.stats.tx.agg.ba_timeout) -
-		le32_to_cpu(priv->statistics.tx.agg.ba_timeout);
+		le32_to_cpu(priv->_agn.statistics.tx.agg.ba_timeout);
 	if ((priv->_agn.agg_tids_count > 0) &&
 	    (expected_ack_cnt_delta > 0) &&
 	    (((actual_ack_cnt_delta * 100) / expected_ack_cnt_delta)
@@ -1467,10 +1467,10 @@ bool iwl_good_ack_health(struct iwl_priv *priv,
 
 #ifdef CONFIG_IWLWIFI_DEBUG
 		IWL_DEBUG_RADIO(priv, "rx_detected_cnt delta = %d\n",
-				priv->delta_statistics.tx.rx_detected_cnt);
+				priv->_agn.delta_statistics.tx.rx_detected_cnt);
 		IWL_DEBUG_RADIO(priv,
 				"ack_or_ba_timeout_collision delta = %d\n",
-				priv->delta_statistics.tx.
+				priv->_agn.delta_statistics.tx.
 				ack_or_ba_timeout_collision);
 #endif
 		IWL_DEBUG_RADIO(priv, "agg ba_timeout delta = %d\n",
@@ -2685,9 +2685,9 @@ static void iwl_bg_run_time_calib_work(struct work_struct *work)
 	}
 
 	if (priv->start_calib) {
-		iwl_chain_noise_calibration(priv, &priv->statistics);
+		iwl_chain_noise_calibration(priv, &priv->_agn.statistics);
 
-		iwl_sensitivity_calibration(priv, &priv->statistics);
+		iwl_sensitivity_calibration(priv, &priv->_agn.statistics);
 	}
 
 	mutex_unlock(&priv->mutex);
diff --git a/drivers/net/wireless/iwlwifi/iwl-debugfs.c b/drivers/net/wireless/iwlwifi/iwl-debugfs.c
index 4d6de2d..c248373 100644
--- a/drivers/net/wireless/iwlwifi/iwl-debugfs.c
+++ b/drivers/net/wireless/iwlwifi/iwl-debugfs.c
@@ -105,16 +105,17 @@ int iwl_dbgfs_statistics_flag(struct iwl_priv *priv, char *buf, int bufsz)
 	int p = 0;
 
 	p += scnprintf(buf + p, bufsz - p, "Statistics Flag(0x%X):\n",
-		       le32_to_cpu(priv->statistics.flag));
-	if (le32_to_cpu(priv->statistics.flag) & UCODE_STATISTICS_CLEAR_MSK)
+		       le32_to_cpu(priv->_agn.statistics.flag));
+	if (le32_to_cpu(priv->_agn.statistics.flag) &
+			UCODE_STATISTICS_CLEAR_MSK)
 		p += scnprintf(buf + p, bufsz - p,
 			       "\tStatistics have been cleared\n");
 	p += scnprintf(buf + p, bufsz - p, "\tOperational Frequency: %s\n",
-		       (le32_to_cpu(priv->statistics.flag) &
+		       (le32_to_cpu(priv->_agn.statistics.flag) &
 			UCODE_STATISTICS_FREQUENCY_MSK)
 			? "2.4 GHz" : "5.2 GHz");
 	p += scnprintf(buf + p, bufsz - p, "\tTGj Narrow Band: %s\n",
-		       (le32_to_cpu(priv->statistics.flag) &
+		       (le32_to_cpu(priv->_agn.statistics.flag) &
 			UCODE_STATISTICS_NARROW_BAND_MSK)
 			? "enabled" : "disabled");
 	return p;
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h
index f3f3473..858a548 100644
--- a/drivers/net/wireless/iwlwifi/iwl-dev.h
+++ b/drivers/net/wireless/iwlwifi/iwl-dev.h
@@ -1220,13 +1220,6 @@ struct iwl_priv {
 	struct iwl_power_mgr power_data;
 	struct iwl_tt_mgmt thermal_throttle;
 
-	struct iwl_notif_statistics statistics;
-#ifdef CONFIG_IWLWIFI_DEBUG
-	struct iwl_notif_statistics accum_statistics;
-	struct iwl_notif_statistics delta_statistics;
-	struct iwl_notif_statistics max_delta;
-#endif
-
 	/* context information */
 	u8 bssid[ETH_ALEN]; /* used only on 3945 but filled by core */
 	u8 mac_addr[ETH_ALEN];
@@ -1315,6 +1308,13 @@ struct iwl_priv {
 			bool last_phy_res_valid;
 
 			struct completion firmware_loading_complete;
+
+			struct iwl_notif_statistics statistics;
+#ifdef CONFIG_IWLWIFI_DEBUG
+			struct iwl_notif_statistics accum_statistics;
+			struct iwl_notif_statistics delta_statistics;
+			struct iwl_notif_statistics max_delta;
+#endif
 		} _agn;
 #endif
 	};
diff --git a/drivers/net/wireless/iwlwifi/iwl-rx.c b/drivers/net/wireless/iwlwifi/iwl-rx.c
index c7c8d8a..aea5cf4 100644
--- a/drivers/net/wireless/iwlwifi/iwl-rx.c
+++ b/drivers/net/wireless/iwlwifi/iwl-rx.c
@@ -250,7 +250,7 @@ EXPORT_SYMBOL(iwl_rx_spectrum_measure_notif);
 static void iwl_rx_calc_noise(struct iwl_priv *priv)
 {
 	struct statistics_rx_non_phy *rx_info
-				= &(priv->statistics.rx.general);
+				= &(priv->_agn.statistics.rx.general);
 	int num_active_rx = 0;
 	int total_silence = 0;
 	int bcn_silence_a =
@@ -299,10 +299,10 @@ static void iwl_accumulative_statistics(struct iwl_priv *priv,
 	u32 *accum_stats;
 	u32 *delta, *max_delta;
 
-	prev_stats = (__le32 *)&priv->statistics;
-	accum_stats = (u32 *)&priv->accum_statistics;
-	delta = (u32 *)&priv->delta_statistics;
-	max_delta = (u32 *)&priv->max_delta;
+	prev_stats = (__le32 *)&priv->_agn.statistics;
+	accum_stats = (u32 *)&priv->_agn.accum_statistics;
+	delta = (u32 *)&priv->_agn.delta_statistics;
+	max_delta = (u32 *)&priv->_agn.max_delta;
 
 	for (i = sizeof(__le32); i < sizeof(struct iwl_notif_statistics);
 	     i += sizeof(__le32), stats++, prev_stats++, delta++,
@@ -317,18 +317,18 @@ static void iwl_accumulative_statistics(struct iwl_priv *priv,
 	}
 
 	/* reset accumulative statistics for "no-counter" type statistics */
-	priv->accum_statistics.general.temperature =
-		priv->statistics.general.temperature;
-	priv->accum_statistics.general.temperature_m =
-		priv->statistics.general.temperature_m;
-	priv->accum_statistics.general.ttl_timestamp =
-		priv->statistics.general.ttl_timestamp;
-	priv->accum_statistics.tx.tx_power.ant_a =
-		priv->statistics.tx.tx_power.ant_a;
-	priv->accum_statistics.tx.tx_power.ant_b =
-		priv->statistics.tx.tx_power.ant_b;
-	priv->accum_statistics.tx.tx_power.ant_c =
-		priv->statistics.tx.tx_power.ant_c;
+	priv->_agn.accum_statistics.general.temperature =
+		priv->_agn.statistics.general.temperature;
+	priv->_agn.accum_statistics.general.temperature_m =
+		priv->_agn.statistics.general.temperature_m;
+	priv->_agn.accum_statistics.general.ttl_timestamp =
+		priv->_agn.statistics.general.ttl_timestamp;
+	priv->_agn.accum_statistics.tx.tx_power.ant_a =
+		priv->_agn.statistics.tx.tx_power.ant_a;
+	priv->_agn.accum_statistics.tx.tx_power.ant_b =
+		priv->_agn.statistics.tx.tx_power.ant_b;
+	priv->_agn.accum_statistics.tx.tx_power.ant_c =
+		priv->_agn.statistics.tx.tx_power.ant_c;
 }
 #endif
 
@@ -363,9 +363,9 @@ bool iwl_good_plcp_health(struct iwl_priv *priv,
 	if (plcp_msec) {
 		combined_plcp_delta =
 			(le32_to_cpu(pkt->u.stats.rx.ofdm.plcp_err) -
-			le32_to_cpu(priv->statistics.rx.ofdm.plcp_err)) +
+			le32_to_cpu(priv->_agn.statistics.rx.ofdm.plcp_err)) +
 			(le32_to_cpu(pkt->u.stats.rx.ofdm_ht.plcp_err) -
-			le32_to_cpu(priv->statistics.rx.ofdm_ht.plcp_err));
+			le32_to_cpu(priv->_agn.statistics.rx.ofdm_ht.plcp_err));
 
 		if ((combined_plcp_delta > 0) &&
 		    ((combined_plcp_delta * 100) / plcp_msec) >
@@ -385,10 +385,10 @@ bool iwl_good_plcp_health(struct iwl_priv *priv,
 				"%u, %u, %u, %u, %d, %u mSecs\n",
 				priv->cfg->plcp_delta_threshold,
 				le32_to_cpu(pkt->u.stats.rx.ofdm.plcp_err),
-				le32_to_cpu(priv->statistics.rx.ofdm.plcp_err),
+				le32_to_cpu(priv->_agn.statistics.rx.ofdm.plcp_err),
 				le32_to_cpu(pkt->u.stats.rx.ofdm_ht.plcp_err),
 				le32_to_cpu(
-				  priv->statistics.rx.ofdm_ht.plcp_err),
+				  priv->_agn.statistics.rx.ofdm_ht.plcp_err),
 				combined_plcp_delta, plcp_msec);
 			rc = false;
 		}
@@ -438,12 +438,12 @@ void iwl_rx_statistics(struct iwl_priv *priv,
 
 
 	IWL_DEBUG_RX(priv, "Statistics notification received (%d vs %d).\n",
-		     (int)sizeof(priv->statistics),
+		     (int)sizeof(priv->_agn.statistics),
 		     le32_to_cpu(pkt->len_n_flags) & FH_RSCSR_FRAME_SIZE_MSK);
 
-	change = ((priv->statistics.general.temperature !=
+	change = ((priv->_agn.statistics.general.temperature !=
 		   pkt->u.stats.general.temperature) ||
-		  ((priv->statistics.flag &
+		  ((priv->_agn.statistics.flag &
 		    STATISTICS_REPLY_FLG_HT40_MODE_MSK) !=
 		   (pkt->u.stats.flag & STATISTICS_REPLY_FLG_HT40_MODE_MSK)));
 
@@ -452,7 +452,8 @@ void iwl_rx_statistics(struct iwl_priv *priv,
 #endif
 	iwl_recover_from_statistics(priv, pkt);
 
-	memcpy(&priv->statistics, &pkt->u.stats, sizeof(priv->statistics));
+	memcpy(&priv->_agn.statistics, &pkt->u.stats,
+		sizeof(priv->_agn.statistics));
 
 	set_bit(STATUS_STATISTICS, &priv->status);
 
@@ -480,11 +481,11 @@ void iwl_reply_statistics(struct iwl_priv *priv,
 
 	if (le32_to_cpu(pkt->u.stats.flag) & UCODE_STATISTICS_CLEAR_MSK) {
 #ifdef CONFIG_IWLWIFI_DEBUG
-		memset(&priv->accum_statistics, 0,
+		memset(&priv->_agn.accum_statistics, 0,
 			sizeof(struct iwl_notif_statistics));
-		memset(&priv->delta_statistics, 0,
+		memset(&priv->_agn.delta_statistics, 0,
 			sizeof(struct iwl_notif_statistics));
-		memset(&priv->max_delta, 0,
+		memset(&priv->_agn.max_delta, 0,
 			sizeof(struct iwl_notif_statistics));
 #endif
 		IWL_DEBUG_RX(priv, "Statistics have been cleared\n");
-- 
1.6.3.3


^ permalink raw reply related

* [PATCH 17/17] iwlwifi: add new PCI IDs for 6000g2 devices
From: Reinette Chatre @ 2010-05-13 21:49 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, ipw3945-devel, Shanyu Zhao, Reinette Chatre
In-Reply-To: <1273787399-9280-1-git-send-email-reinette.chatre@intel.com>

From: Shanyu Zhao <shanyu.zhao@intel.com>

Add new PCI IDs for 6000 Series Gen2 devices
and also defines a new sku of device: 6000g2b 2x2 bgn.

Signed-off-by: Shanyu Zhao <shanyu.zhao@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
---
 drivers/net/wireless/iwlwifi/iwl-6000.c |   34 +++++++++++++++++++++++++++++++
 drivers/net/wireless/iwlwifi/iwl-agn.c  |   24 +++++++++++++++++++++
 drivers/net/wireless/iwlwifi/iwl-agn.h  |    1 +
 3 files changed, 59 insertions(+), 0 deletions(-)

diff --git a/drivers/net/wireless/iwlwifi/iwl-6000.c b/drivers/net/wireless/iwlwifi/iwl-6000.c
index 9247594..73713f6 100644
--- a/drivers/net/wireless/iwlwifi/iwl-6000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-6000.c
@@ -598,6 +598,40 @@ struct iwl_cfg iwl6000g2b_2abg_cfg = {
 	.max_event_log_size = 512,
 };
 
+struct iwl_cfg iwl6000g2b_2bgn_cfg = {
+	.name = "6000 Series 2x2 BGN Gen2b",
+	.fw_name_pre = IWL6000G2B_FW_PRE,
+	.ucode_api_max = IWL6000G2_UCODE_API_MAX,
+	.ucode_api_min = IWL6000G2_UCODE_API_MIN,
+	.sku = IWL_SKU_G|IWL_SKU_N,
+	.ops = &iwl6000g2b_ops,
+	.eeprom_size = OTP_LOW_IMAGE_SIZE,
+	.eeprom_ver = EEPROM_6000G2_EEPROM_VERSION,
+	.eeprom_calib_ver = EEPROM_6000G2_TX_POWER_VERSION,
+	.num_of_queues = IWLAGN_NUM_QUEUES,
+	.num_of_ampdu_queues = IWLAGN_NUM_AMPDU_QUEUES,
+	.mod_params = &iwlagn_mod_params,
+	.valid_tx_ant = ANT_AB,
+	.valid_rx_ant = ANT_AB,
+	.pll_cfg_val = 0,
+	.set_l0s = true,
+	.use_bsm = false,
+	.pa_type = IWL_PA_SYSTEM,
+	.max_ll_items = OTP_MAX_LL_ITEMS_6x00,
+	.shadow_ram_support = true,
+	.ht_greenfield_support = true,
+	.led_compensation = 51,
+	.use_rts_for_ht = true, /* use rts/cts protection */
+	.chain_noise_num_beacons = IWL_CAL_NUM_BEACONS,
+	.supports_idle = true,
+	.adv_thermal_throttle = true,
+	.support_ct_kill_exit = true,
+	.plcp_delta_threshold = IWL_MAX_PLCP_ERR_THRESHOLD_DEF,
+	.chain_noise_scale = 1000,
+	.monitor_recover_period = IWL_MONITORING_PERIOD,
+	.max_event_log_size = 512,
+};
+
 struct iwl_cfg iwl6000g2b_2bg_cfg = {
 	.name = "6000 Series 2x2 BG Gen2b",
 	.fw_name_pre = IWL6000G2B_FW_PRE,
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index eb74f28..84c1675 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -4058,6 +4058,13 @@ static DEFINE_PCI_DEVICE_TABLE(iwl_hw_card_ids) = {
 	{IWL_PCI_DEVICE(0x0085, 0x1216, iwl6000g2a_2abg_cfg)},
 	{IWL_PCI_DEVICE(0x0082, 0x1226, iwl6000g2a_2abg_cfg)},
 	{IWL_PCI_DEVICE(0x0082, 0x1207, iwl6000g2a_2bg_cfg)},
+	{IWL_PCI_DEVICE(0x0082, 0x1301, iwl6000g2a_2agn_cfg)},
+	{IWL_PCI_DEVICE(0x0082, 0x1306, iwl6000g2a_2abg_cfg)},
+	{IWL_PCI_DEVICE(0x0082, 0x1307, iwl6000g2a_2bg_cfg)},
+	{IWL_PCI_DEVICE(0x0082, 0x1321, iwl6000g2a_2agn_cfg)},
+	{IWL_PCI_DEVICE(0x0082, 0x1326, iwl6000g2a_2abg_cfg)},
+	{IWL_PCI_DEVICE(0x0085, 0x1311, iwl6000g2a_2agn_cfg)},
+	{IWL_PCI_DEVICE(0x0085, 0x1316, iwl6000g2a_2abg_cfg)},
 
 /* 6x00 Series Gen2b */
 	{IWL_PCI_DEVICE(0x008F, 0x5105, iwl6000g2b_bgn_cfg)},
@@ -4071,6 +4078,23 @@ static DEFINE_PCI_DEVICE_TABLE(iwl_hw_card_ids) = {
 	{IWL_PCI_DEVICE(0x0090, 0x5216, iwl6000g2b_2abg_cfg)},
 	{IWL_PCI_DEVICE(0x008F, 0x5226, iwl6000g2b_2abg_cfg)},
 	{IWL_PCI_DEVICE(0x008F, 0x5207, iwl6000g2b_2bg_cfg)},
+	{IWL_PCI_DEVICE(0x008A, 0x5301, iwl6000g2b_bgn_cfg)},
+	{IWL_PCI_DEVICE(0x008A, 0x5305, iwl6000g2b_bgn_cfg)},
+	{IWL_PCI_DEVICE(0x008A, 0x5307, iwl6000g2b_bg_cfg)},
+	{IWL_PCI_DEVICE(0x008A, 0x5321, iwl6000g2b_bgn_cfg)},
+	{IWL_PCI_DEVICE(0x008A, 0x5325, iwl6000g2b_bgn_cfg)},
+	{IWL_PCI_DEVICE(0x008B, 0x5311, iwl6000g2b_bgn_cfg)},
+	{IWL_PCI_DEVICE(0x008B, 0x5315, iwl6000g2b_bgn_cfg)},
+	{IWL_PCI_DEVICE(0x0090, 0x5211, iwl6000g2b_2agn_cfg)},
+	{IWL_PCI_DEVICE(0x0090, 0x5215, iwl6000g2b_2bgn_cfg)},
+	{IWL_PCI_DEVICE(0x0090, 0x5216, iwl6000g2b_2abg_cfg)},
+	{IWL_PCI_DEVICE(0x0091, 0x5201, iwl6000g2b_2agn_cfg)},
+	{IWL_PCI_DEVICE(0x0091, 0x5205, iwl6000g2b_2bgn_cfg)},
+	{IWL_PCI_DEVICE(0x0091, 0x5206, iwl6000g2b_2abg_cfg)},
+	{IWL_PCI_DEVICE(0x0091, 0x5207, iwl6000g2b_2bg_cfg)},
+	{IWL_PCI_DEVICE(0x0091, 0x5221, iwl6000g2b_2agn_cfg)},
+	{IWL_PCI_DEVICE(0x0091, 0x5225, iwl6000g2b_2bgn_cfg)},
+	{IWL_PCI_DEVICE(0x0091, 0x5226, iwl6000g2b_2abg_cfg)},
 
 /* 6x50 WiFi/WiMax Series */
 	{IWL_PCI_DEVICE(0x0087, 0x1301, iwl6050_2agn_cfg)},
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.h b/drivers/net/wireless/iwlwifi/iwl-agn.h
index f7ef893..5c32777 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.h
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.h
@@ -81,6 +81,7 @@ extern struct iwl_cfg iwl6000g2b_bgn_cfg;
 extern struct iwl_cfg iwl6000g2b_bg_cfg;
 extern struct iwl_cfg iwl6000g2b_2agn_cfg;
 extern struct iwl_cfg iwl6000g2b_2abg_cfg;
+extern struct iwl_cfg iwl6000g2b_2bgn_cfg;
 extern struct iwl_cfg iwl6000g2b_2bg_cfg;
 extern struct iwl_cfg iwl6000i_2agn_cfg;
 extern struct iwl_cfg iwl6000i_2abg_cfg;
-- 
1.6.3.3


^ permalink raw reply related

* [PATCH 16/17] iwlwifi: move ucode related function to iwl-agn-ucode.c
From: Reinette Chatre @ 2010-05-13 21:49 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, ipw3945-devel, Wey-Yi Guy, Reinette Chatre
In-Reply-To: <1273787399-9280-1-git-send-email-reinette.chatre@intel.com>

From: Wey-Yi Guy <wey-yi.w.guy@intel.com>

Cleanup the code and move all the uCode related functions specific to _agn
devices to iwl-agn-ucode.c

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
---
 drivers/net/wireless/iwlwifi/iwl-agn-ucode.c |  123 +++++++++++++++++++++++++
 drivers/net/wireless/iwlwifi/iwl-agn.h       |    1 +
 drivers/net/wireless/iwlwifi/iwl-core.c      |  124 --------------------------
 drivers/net/wireless/iwlwifi/iwl-core.h      |    1 -
 4 files changed, 124 insertions(+), 125 deletions(-)

diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-ucode.c b/drivers/net/wireless/iwlwifi/iwl-agn-ucode.c
index 637286c..6f77441 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-ucode.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-ucode.c
@@ -423,3 +423,126 @@ int iwlagn_alive_notify(struct iwl_priv *priv)
 
 	return 0;
 }
+
+
+/**
+ * iwl_verify_inst_sparse - verify runtime uCode image in card vs. host,
+ *   using sample data 100 bytes apart.  If these sample points are good,
+ *   it's a pretty good bet that everything between them is good, too.
+ */
+static int iwlcore_verify_inst_sparse(struct iwl_priv *priv, __le32 *image, u32 len)
+{
+	u32 val;
+	int ret = 0;
+	u32 errcnt = 0;
+	u32 i;
+
+	IWL_DEBUG_INFO(priv, "ucode inst image size is %u\n", len);
+
+	for (i = 0; i < len; i += 100, image += 100/sizeof(u32)) {
+		/* read data comes through single port, auto-incr addr */
+		/* NOTE: Use the debugless read so we don't flood kernel log
+		 * if IWL_DL_IO is set */
+		iwl_write_direct32(priv, HBUS_TARG_MEM_RADDR,
+			i + IWLAGN_RTC_INST_LOWER_BOUND);
+		val = _iwl_read_direct32(priv, HBUS_TARG_MEM_RDAT);
+		if (val != le32_to_cpu(*image)) {
+			ret = -EIO;
+			errcnt++;
+			if (errcnt >= 3)
+				break;
+		}
+	}
+
+	return ret;
+}
+
+/**
+ * iwlcore_verify_inst_full - verify runtime uCode image in card vs. host,
+ *     looking at all data.
+ */
+static int iwl_verify_inst_full(struct iwl_priv *priv, __le32 *image,
+				 u32 len)
+{
+	u32 val;
+	u32 save_len = len;
+	int ret = 0;
+	u32 errcnt;
+
+	IWL_DEBUG_INFO(priv, "ucode inst image size is %u\n", len);
+
+	iwl_write_direct32(priv, HBUS_TARG_MEM_RADDR,
+			   IWLAGN_RTC_INST_LOWER_BOUND);
+
+	errcnt = 0;
+	for (; len > 0; len -= sizeof(u32), image++) {
+		/* read data comes through single port, auto-incr addr */
+		/* NOTE: Use the debugless read so we don't flood kernel log
+		 * if IWL_DL_IO is set */
+		val = _iwl_read_direct32(priv, HBUS_TARG_MEM_RDAT);
+		if (val != le32_to_cpu(*image)) {
+			IWL_ERR(priv, "uCode INST section is invalid at "
+				  "offset 0x%x, is 0x%x, s/b 0x%x\n",
+				  save_len - len, val, le32_to_cpu(*image));
+			ret = -EIO;
+			errcnt++;
+			if (errcnt >= 20)
+				break;
+		}
+	}
+
+	if (!errcnt)
+		IWL_DEBUG_INFO(priv,
+		    "ucode image in INSTRUCTION memory is good\n");
+
+	return ret;
+}
+
+/**
+ * iwl_verify_ucode - determine which instruction image is in SRAM,
+ *    and verify its contents
+ */
+int iwl_verify_ucode(struct iwl_priv *priv)
+{
+	__le32 *image;
+	u32 len;
+	int ret;
+
+	/* Try bootstrap */
+	image = (__le32 *)priv->ucode_boot.v_addr;
+	len = priv->ucode_boot.len;
+	ret = iwlcore_verify_inst_sparse(priv, image, len);
+	if (!ret) {
+		IWL_DEBUG_INFO(priv, "Bootstrap uCode is good in inst SRAM\n");
+		return 0;
+	}
+
+	/* Try initialize */
+	image = (__le32 *)priv->ucode_init.v_addr;
+	len = priv->ucode_init.len;
+	ret = iwlcore_verify_inst_sparse(priv, image, len);
+	if (!ret) {
+		IWL_DEBUG_INFO(priv, "Initialize uCode is good in inst SRAM\n");
+		return 0;
+	}
+
+	/* Try runtime/protocol */
+	image = (__le32 *)priv->ucode_code.v_addr;
+	len = priv->ucode_code.len;
+	ret = iwlcore_verify_inst_sparse(priv, image, len);
+	if (!ret) {
+		IWL_DEBUG_INFO(priv, "Runtime uCode is good in inst SRAM\n");
+		return 0;
+	}
+
+	IWL_ERR(priv, "NO VALID UCODE IMAGE IN INSTRUCTION SRAM!!\n");
+
+	/* Since nothing seems to match, show first several data entries in
+	 * instruction SRAM, so maybe visual inspection will give a clue.
+	 * Selection of bootstrap image (vs. other images) is arbitrary. */
+	image = (__le32 *)priv->ucode_boot.v_addr;
+	len = priv->ucode_boot.len;
+	ret = iwl_verify_inst_full(priv, image, len);
+
+	return ret;
+}
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.h b/drivers/net/wireless/iwlwifi/iwl-agn.h
index 2ebbe81..f7ef893 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.h
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.h
@@ -130,6 +130,7 @@ void iwlagn_rx_calib_complete(struct iwl_priv *priv,
 			   struct iwl_rx_mem_buffer *rxb);
 void iwlagn_init_alive_start(struct iwl_priv *priv);
 int iwlagn_alive_notify(struct iwl_priv *priv);
+int iwl_verify_ucode(struct iwl_priv *priv);
 
 /* lib */
 void iwl_check_abort_status(struct iwl_priv *priv,
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.c b/drivers/net/wireless/iwlwifi/iwl-core.c
index 10ce008..4a50c04 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.c
+++ b/drivers/net/wireless/iwlwifi/iwl-core.c
@@ -1460,130 +1460,6 @@ int iwl_send_statistics_request(struct iwl_priv *priv, u8 flags, bool clear)
 }
 EXPORT_SYMBOL(iwl_send_statistics_request);
 
-/**
- * iwl_verify_inst_sparse - verify runtime uCode image in card vs. host,
- *   using sample data 100 bytes apart.  If these sample points are good,
- *   it's a pretty good bet that everything between them is good, too.
- */
-static int iwlcore_verify_inst_sparse(struct iwl_priv *priv, __le32 *image, u32 len)
-{
-	u32 val;
-	int ret = 0;
-	u32 errcnt = 0;
-	u32 i;
-
-	IWL_DEBUG_INFO(priv, "ucode inst image size is %u\n", len);
-
-	for (i = 0; i < len; i += 100, image += 100/sizeof(u32)) {
-		/* read data comes through single port, auto-incr addr */
-		/* NOTE: Use the debugless read so we don't flood kernel log
-		 * if IWL_DL_IO is set */
-		iwl_write_direct32(priv, HBUS_TARG_MEM_RADDR,
-			i + IWL49_RTC_INST_LOWER_BOUND);
-		val = _iwl_read_direct32(priv, HBUS_TARG_MEM_RDAT);
-		if (val != le32_to_cpu(*image)) {
-			ret = -EIO;
-			errcnt++;
-			if (errcnt >= 3)
-				break;
-		}
-	}
-
-	return ret;
-}
-
-/**
- * iwlcore_verify_inst_full - verify runtime uCode image in card vs. host,
- *     looking at all data.
- */
-static int iwl_verify_inst_full(struct iwl_priv *priv, __le32 *image,
-				 u32 len)
-{
-	u32 val;
-	u32 save_len = len;
-	int ret = 0;
-	u32 errcnt;
-
-	IWL_DEBUG_INFO(priv, "ucode inst image size is %u\n", len);
-
-	iwl_write_direct32(priv, HBUS_TARG_MEM_RADDR,
-			   IWL49_RTC_INST_LOWER_BOUND);
-
-	errcnt = 0;
-	for (; len > 0; len -= sizeof(u32), image++) {
-		/* read data comes through single port, auto-incr addr */
-		/* NOTE: Use the debugless read so we don't flood kernel log
-		 * if IWL_DL_IO is set */
-		val = _iwl_read_direct32(priv, HBUS_TARG_MEM_RDAT);
-		if (val != le32_to_cpu(*image)) {
-			IWL_ERR(priv, "uCode INST section is invalid at "
-				  "offset 0x%x, is 0x%x, s/b 0x%x\n",
-				  save_len - len, val, le32_to_cpu(*image));
-			ret = -EIO;
-			errcnt++;
-			if (errcnt >= 20)
-				break;
-		}
-	}
-
-	if (!errcnt)
-		IWL_DEBUG_INFO(priv,
-		    "ucode image in INSTRUCTION memory is good\n");
-
-	return ret;
-}
-
-/**
- * iwl_verify_ucode - determine which instruction image is in SRAM,
- *    and verify its contents
- */
-int iwl_verify_ucode(struct iwl_priv *priv)
-{
-	__le32 *image;
-	u32 len;
-	int ret;
-
-	/* Try bootstrap */
-	image = (__le32 *)priv->ucode_boot.v_addr;
-	len = priv->ucode_boot.len;
-	ret = iwlcore_verify_inst_sparse(priv, image, len);
-	if (!ret) {
-		IWL_DEBUG_INFO(priv, "Bootstrap uCode is good in inst SRAM\n");
-		return 0;
-	}
-
-	/* Try initialize */
-	image = (__le32 *)priv->ucode_init.v_addr;
-	len = priv->ucode_init.len;
-	ret = iwlcore_verify_inst_sparse(priv, image, len);
-	if (!ret) {
-		IWL_DEBUG_INFO(priv, "Initialize uCode is good in inst SRAM\n");
-		return 0;
-	}
-
-	/* Try runtime/protocol */
-	image = (__le32 *)priv->ucode_code.v_addr;
-	len = priv->ucode_code.len;
-	ret = iwlcore_verify_inst_sparse(priv, image, len);
-	if (!ret) {
-		IWL_DEBUG_INFO(priv, "Runtime uCode is good in inst SRAM\n");
-		return 0;
-	}
-
-	IWL_ERR(priv, "NO VALID UCODE IMAGE IN INSTRUCTION SRAM!!\n");
-
-	/* Since nothing seems to match, show first several data entries in
-	 * instruction SRAM, so maybe visual inspection will give a clue.
-	 * Selection of bootstrap image (vs. other images) is arbitrary. */
-	image = (__le32 *)priv->ucode_boot.v_addr;
-	len = priv->ucode_boot.len;
-	ret = iwl_verify_inst_full(priv, image, len);
-
-	return ret;
-}
-EXPORT_SYMBOL(iwl_verify_ucode);
-
-
 void iwl_rf_kill_ct_config(struct iwl_priv *priv)
 {
 	struct iwl_ct_kill_config cmd;
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.h b/drivers/net/wireless/iwlwifi/iwl-core.h
index 63229dc..d3b61dc 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.h
+++ b/drivers/net/wireless/iwlwifi/iwl-core.h
@@ -689,7 +689,6 @@ extern void iwl_rf_kill_ct_config(struct iwl_priv *priv);
 extern void iwl_send_bt_config(struct iwl_priv *priv);
 extern int iwl_send_statistics_request(struct iwl_priv *priv,
 				       u8 flags, bool clear);
-extern int iwl_verify_ucode(struct iwl_priv *priv);
 extern int iwl_send_lq_cmd(struct iwl_priv *priv,
 		struct iwl_link_quality_cmd *lq, u8 flags, bool init);
 void iwl_apm_stop(struct iwl_priv *priv);
-- 
1.6.3.3


^ permalink raw reply related

* [PATCH 09/17] iwlwifi: fix and add missing sta_lock usage
From: Reinette Chatre @ 2010-05-13 21:49 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, ipw3945-devel, Reinette Chatre, Johannes Berg
In-Reply-To: <1273787399-9280-1-git-send-email-reinette.chatre@intel.com>

From: Reinette Chatre <reinette.chatre@intel.com>

There are a few places where sta_lock is used, but the
station information protected by it is accessed outside
of the lock. Address this in two ways, if the access
won't sleep then just move the access into the lock, if
the access can sleep then copy the needed station
information to the stack to be accessed without risk of
it changing while access in progress.

Additionally, a number of other places access station
station information without holding the sta_lock, fix
those as well.

Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
 drivers/net/wireless/iwlwifi/iwl-3945.c     |    9 +---
 drivers/net/wireless/iwlwifi/iwl-4965.c     |    5 ++-
 drivers/net/wireless/iwlwifi/iwl-agn-lib.c  |    7 +++-
 drivers/net/wireless/iwlwifi/iwl-agn-tx.c   |   41 ++++++++++++++++---
 drivers/net/wireless/iwlwifi/iwl-dev.h      |    4 +-
 drivers/net/wireless/iwlwifi/iwl-sta.c      |   56 +++++++++++++++-----------
 drivers/net/wireless/iwlwifi/iwl3945-base.c |    5 +-
 7 files changed, 85 insertions(+), 42 deletions(-)

diff --git a/drivers/net/wireless/iwlwifi/iwl-3945.c b/drivers/net/wireless/iwlwifi/iwl-3945.c
index 0eb0faa..5ffbce8 100644
--- a/drivers/net/wireless/iwlwifi/iwl-3945.c
+++ b/drivers/net/wireless/iwlwifi/iwl-3945.c
@@ -946,8 +946,7 @@ void iwl3945_hw_build_tx_cmd_rate(struct iwl_priv *priv,
 		       tx_cmd->supp_rates[1], tx_cmd->supp_rates[0]);
 }
 
-static u8 iwl3945_sync_sta(struct iwl_priv *priv, int sta_id,
-			   u16 tx_rate, u8 flags)
+static u8 iwl3945_sync_sta(struct iwl_priv *priv, int sta_id, u16 tx_rate)
 {
 	unsigned long flags_spin;
 	struct iwl_station_entry *station;
@@ -961,10 +960,9 @@ static u8 iwl3945_sync_sta(struct iwl_priv *priv, int sta_id,
 	station->sta.sta.modify_mask = STA_MODIFY_TX_RATE_MSK;
 	station->sta.rate_n_flags = cpu_to_le16(tx_rate);
 	station->sta.mode = STA_CONTROL_MODIFY_MSK;
-
+	iwl_send_add_sta(priv, &station->sta, CMD_ASYNC);
 	spin_unlock_irqrestore(&priv->sta_lock, flags_spin);
 
-	iwl_send_add_sta(priv, &station->sta, flags);
 	IWL_DEBUG_RATE(priv, "SCALE sync station %d to rate %d\n",
 			sta_id, tx_rate);
 	return sta_id;
@@ -2472,8 +2470,7 @@ static int iwl3945_manage_ibss_station(struct iwl_priv *priv,
 
 		iwl3945_sync_sta(priv, vif_priv->ibss_bssid_sta_id,
 				 (priv->band == IEEE80211_BAND_5GHZ) ?
-				 IWL_RATE_6M_PLCP : IWL_RATE_1M_PLCP,
-				 CMD_ASYNC);
+				 IWL_RATE_6M_PLCP : IWL_RATE_1M_PLCP);
 		iwl3945_rate_scale_init(priv->hw, vif_priv->ibss_bssid_sta_id);
 
 		return 0;
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.c b/drivers/net/wireless/iwlwifi/iwl-4965.c
index 03b066c..ad4d7d1 100644
--- a/drivers/net/wireless/iwlwifi/iwl-4965.c
+++ b/drivers/net/wireless/iwlwifi/iwl-4965.c
@@ -2026,6 +2026,7 @@ static void iwl4965_rx_reply_tx(struct iwl_priv *priv,
 	int sta_id;
 	int freed;
 	u8 *qc = NULL;
+	unsigned long flags;
 
 	if ((index >= txq->q.n_bd) || (iwl_queue_used(&txq->q, index) == 0)) {
 		IWL_ERR(priv, "Read index for DMA queue txq_id (%d) index %d "
@@ -2050,10 +2051,10 @@ static void iwl4965_rx_reply_tx(struct iwl_priv *priv,
 		return;
 	}
 
+	spin_lock_irqsave(&priv->sta_lock, flags);
 	if (txq->sched_retry) {
 		const u32 scd_ssn = iwl4965_get_scd_ssn(tx_resp);
 		struct iwl_ht_agg *agg = NULL;
-
 		WARN_ON(!qc);
 
 		agg = &priv->stations[sta_id].tid[tid].agg;
@@ -2110,6 +2111,8 @@ static void iwl4965_rx_reply_tx(struct iwl_priv *priv,
 		iwlagn_txq_check_empty(priv, sta_id, tid, txq_id);
 
 	iwl_check_abort_status(priv, tx_resp->frame_count, status);
+
+	spin_unlock_irqrestore(&priv->sta_lock, flags);
 }
 
 static int iwl4965_calc_rssi(struct iwl_priv *priv,
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
index 5f07bc2..4857b5f 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
@@ -184,6 +184,7 @@ static void iwlagn_rx_reply_tx(struct iwl_priv *priv,
 	int tid;
 	int sta_id;
 	int freed;
+	unsigned long flags;
 
 	if ((index >= txq->q.n_bd) || (iwl_queue_used(&txq->q, index) == 0)) {
 		IWL_ERR(priv, "Read index for DMA queue txq_id (%d) index %d "
@@ -199,9 +200,10 @@ static void iwlagn_rx_reply_tx(struct iwl_priv *priv,
 	tid = (tx_resp->ra_tid & IWL50_TX_RES_TID_MSK) >> IWL50_TX_RES_TID_POS;
 	sta_id = (tx_resp->ra_tid & IWL50_TX_RES_RA_MSK) >> IWL50_TX_RES_RA_POS;
 
+	spin_lock_irqsave(&priv->sta_lock, flags);
 	if (txq->sched_retry) {
 		const u32 scd_ssn = iwlagn_get_scd_ssn(tx_resp);
-		struct iwl_ht_agg *agg = NULL;
+		struct iwl_ht_agg *agg;
 
 		agg = &priv->stations[sta_id].tid[tid].agg;
 
@@ -256,6 +258,7 @@ static void iwlagn_rx_reply_tx(struct iwl_priv *priv,
 	iwlagn_txq_check_empty(priv, sta_id, tid, txq_id);
 
 	iwl_check_abort_status(priv, tx_resp->frame_count, status);
+	spin_unlock_irqrestore(&priv->sta_lock, flags);
 }
 
 void iwlagn_rx_handler_setup(struct iwl_priv *priv)
@@ -1533,6 +1536,8 @@ int iwlagn_manage_ibss_station(struct iwl_priv *priv,
 void iwl_free_tfds_in_queue(struct iwl_priv *priv,
 			    int sta_id, int tid, int freed)
 {
+	WARN_ON(!spin_is_locked(&priv->sta_lock));
+
 	if (priv->stations[sta_id].tid[tid].tfds_in_queue >= freed)
 		priv->stations[sta_id].tid[tid].tfds_in_queue -= freed;
 	else {
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-tx.c b/drivers/net/wireless/iwlwifi/iwl-agn-tx.c
index 18b1546..52bec10 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-tx.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-tx.c
@@ -595,11 +595,17 @@ int iwlagn_tx_skb(struct iwl_priv *priv, struct sk_buff *skb)
 	}
 
 	txq_id = get_queue_from_ac(skb_get_queue_mapping(skb));
+
+	/* irqs already disabled/saved above when locking priv->lock */
+	spin_lock(&priv->sta_lock);
+
 	if (ieee80211_is_data_qos(fc)) {
 		qc = ieee80211_get_qos_ctl(hdr);
 		tid = qc[0] & IEEE80211_QOS_CTL_TID_MASK;
-		if (unlikely(tid >= MAX_TID_COUNT))
+		if (WARN_ON_ONCE(tid >= MAX_TID_COUNT)) {
+			spin_unlock(&priv->sta_lock);
 			goto drop_unlock;
+		}
 		seq_number = priv->stations[sta_id].tid[tid].seq_number;
 		seq_number &= IEEE80211_SCTL_SEQ;
 		hdr->seq_ctrl = hdr->seq_ctrl &
@@ -617,11 +623,18 @@ int iwlagn_tx_skb(struct iwl_priv *priv, struct sk_buff *skb)
 	swq_id = txq->swq_id;
 	q = &txq->q;
 
-	if (unlikely(iwl_queue_space(q) < q->high_mark))
+	if (unlikely(iwl_queue_space(q) < q->high_mark)) {
+		spin_unlock(&priv->sta_lock);
 		goto drop_unlock;
+	}
 
-	if (ieee80211_is_data_qos(fc))
+	if (ieee80211_is_data_qos(fc)) {
 		priv->stations[sta_id].tid[tid].tfds_in_queue++;
+		if (!ieee80211_has_morefrags(fc))
+			priv->stations[sta_id].tid[tid].seq_number = seq_number;
+	}
+
+	spin_unlock(&priv->sta_lock);
 
 	/* Set up driver data for this TFD */
 	memset(&(txq->txb[q->write_ptr]), 0, sizeof(struct iwl_tx_info));
@@ -700,8 +713,6 @@ int iwlagn_tx_skb(struct iwl_priv *priv, struct sk_buff *skb)
 
 	if (!ieee80211_has_morefrags(hdr->frame_control)) {
 		txq->need_update = 1;
-		if (qc)
-			priv->stations[sta_id].tid[tid].seq_number = seq_number;
 	} else {
 		wait_write_ptr = 1;
 		txq->need_update = 0;
@@ -1006,6 +1017,8 @@ int iwlagn_tx_agg_start(struct iwl_priv *priv, struct ieee80211_vif *vif,
 	if (ret)
 		return ret;
 
+	spin_lock_irqsave(&priv->sta_lock, flags);
+	tid_data = &priv->stations[sta_id].tid[tid];
 	if (tid_data->tfds_in_queue == 0) {
 		IWL_DEBUG_HT(priv, "HW queue is empty\n");
 		tid_data->agg.state = IWL_AGG_ON;
@@ -1015,6 +1028,7 @@ int iwlagn_tx_agg_start(struct iwl_priv *priv, struct ieee80211_vif *vif,
 			     tid_data->tfds_in_queue);
 		tid_data->agg.state = IWL_EMPTYING_HW_QUEUE_ADDBA;
 	}
+	spin_unlock_irqrestore(&priv->sta_lock, flags);
 	return ret;
 }
 
@@ -1037,11 +1051,14 @@ int iwlagn_tx_agg_stop(struct iwl_priv *priv, struct ieee80211_vif *vif,
 		return -ENXIO;
 	}
 
+	spin_lock_irqsave(&priv->sta_lock, flags);
+
 	if (priv->stations[sta_id].tid[tid].agg.state ==
 				IWL_EMPTYING_HW_QUEUE_ADDBA) {
 		IWL_DEBUG_HT(priv, "AGG stop before setup done\n");
 		ieee80211_stop_tx_ba_cb_irqsafe(vif, sta->addr, tid);
 		priv->stations[sta_id].tid[tid].agg.state = IWL_AGG_OFF;
+		spin_unlock_irqrestore(&priv->sta_lock, flags);
 		return 0;
 	}
 
@@ -1059,13 +1076,17 @@ int iwlagn_tx_agg_stop(struct iwl_priv *priv, struct ieee80211_vif *vif,
 		IWL_DEBUG_HT(priv, "Stopping a non empty AGG HW QUEUE\n");
 		priv->stations[sta_id].tid[tid].agg.state =
 				IWL_EMPTYING_HW_QUEUE_DELBA;
+		spin_unlock_irqrestore(&priv->sta_lock, flags);
 		return 0;
 	}
 
 	IWL_DEBUG_HT(priv, "HW queue is empty\n");
 	priv->stations[sta_id].tid[tid].agg.state = IWL_AGG_OFF;
 
-	spin_lock_irqsave(&priv->lock, flags);
+	/* do not restore/save irqs */
+	spin_unlock(&priv->sta_lock);
+	spin_lock(&priv->lock);
+
 	/*
 	 * the only reason this call can fail is queue number out of range,
 	 * which can happen if uCode is reloaded and all the station
@@ -1089,6 +1110,8 @@ int iwlagn_txq_check_empty(struct iwl_priv *priv,
 	u8 *addr = priv->stations[sta_id].sta.sta.addr;
 	struct iwl_tid_data *tid_data = &priv->stations[sta_id].tid[tid];
 
+	WARN_ON(!spin_is_locked(&priv->sta_lock));
+
 	switch (priv->stations[sta_id].tid[tid].agg.state) {
 	case IWL_EMPTYING_HW_QUEUE_DELBA:
 		/* We are reclaiming the last packet of the */
@@ -1113,6 +1136,7 @@ int iwlagn_txq_check_empty(struct iwl_priv *priv,
 		}
 		break;
 	}
+
 	return 0;
 }
 
@@ -1276,6 +1300,7 @@ void iwlagn_rx_reply_compressed_ba(struct iwl_priv *priv,
 	int index;
 	int sta_id;
 	int tid;
+	unsigned long flags;
 
 	/* "flow" corresponds to Tx queue */
 	u16 scd_flow = le16_to_cpu(ba_resp->scd_flow);
@@ -1298,7 +1323,7 @@ void iwlagn_rx_reply_compressed_ba(struct iwl_priv *priv,
 	/* Find index just before block-ack window */
 	index = iwl_queue_dec_wrap(ba_resp_scd_ssn & 0xff, txq->q.n_bd);
 
-	/* TODO: Need to get this copy more safely - now good for debug */
+	spin_lock_irqsave(&priv->sta_lock, flags);
 
 	IWL_DEBUG_TX_REPLY(priv, "REPLY_COMPRESSED_BA [%d] Received from %pM, "
 			   "sta_id = %d\n",
@@ -1334,4 +1359,6 @@ void iwlagn_rx_reply_compressed_ba(struct iwl_priv *priv,
 
 		iwlagn_txq_check_empty(priv, sta_id, tid, scd_flow);
 	}
+
+	spin_unlock_irqrestore(&priv->sta_lock, flags);
 }
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h
index 8538af7..5ac03f5 100644
--- a/drivers/net/wireless/iwlwifi/iwl-dev.h
+++ b/drivers/net/wireless/iwlwifi/iwl-dev.h
@@ -1224,7 +1224,9 @@ struct iwl_priv {
 	u8 bssid[ETH_ALEN]; /* used only on 3945 but filled by core */
 	u8 mac_addr[ETH_ALEN];
 
-	/*station table variables */
+	/* station table variables */
+
+	/* Note: if lock and sta_lock are needed, lock must be acquired first */
 	spinlock_t sta_lock;
 	int num_stations;
 	struct iwl_station_entry stations[IWL_STATION_COUNT];
diff --git a/drivers/net/wireless/iwlwifi/iwl-sta.c b/drivers/net/wireless/iwlwifi/iwl-sta.c
index 2eafba6..4d878d8 100644
--- a/drivers/net/wireless/iwlwifi/iwl-sta.c
+++ b/drivers/net/wireless/iwlwifi/iwl-sta.c
@@ -311,10 +311,10 @@ int iwl_add_station_common(struct iwl_priv *priv, const u8 *addr,
 				  struct ieee80211_sta_ht_cap *ht_info,
 				  u8 *sta_id_r)
 {
-	struct iwl_station_entry *station;
 	unsigned long flags_spin;
 	int ret = 0;
 	u8 sta_id;
+	struct iwl_addsta_cmd sta_cmd;
 
 	*sta_id_r = 0;
 	spin_lock_irqsave(&priv->sta_lock, flags_spin);
@@ -347,14 +347,15 @@ int iwl_add_station_common(struct iwl_priv *priv, const u8 *addr,
 	}
 
 	priv->stations[sta_id].used |= IWL_STA_UCODE_INPROGRESS;
-	station = &priv->stations[sta_id];
+	memcpy(&sta_cmd, &priv->stations[sta_id].sta, sizeof(struct iwl_addsta_cmd));
 	spin_unlock_irqrestore(&priv->sta_lock, flags_spin);
 
 	/* Add station to device's station table */
-	ret = iwl_send_add_sta(priv, &station->sta, CMD_SYNC);
+	ret = iwl_send_add_sta(priv, &sta_cmd, CMD_SYNC);
 	if (ret) {
-		IWL_ERR(priv, "Adding station %pM failed.\n", station->sta.sta.addr);
 		spin_lock_irqsave(&priv->sta_lock, flags_spin);
+		IWL_ERR(priv, "Adding station %pM failed.\n",
+			priv->stations[sta_id].sta.sta.addr);
 		priv->stations[sta_id].used &= ~IWL_STA_DRIVER_ACTIVE;
 		priv->stations[sta_id].used &= ~IWL_STA_UCODE_INPROGRESS;
 		spin_unlock_irqrestore(&priv->sta_lock, flags_spin);
@@ -488,7 +489,7 @@ static void iwl_sta_ucode_deactivate(struct iwl_priv *priv, u8 sta_id)
 }
 
 static int iwl_send_remove_station(struct iwl_priv *priv,
-				   struct iwl_station_entry *station)
+				   const u8 *addr, int sta_id)
 {
 	struct iwl_rx_packet *pkt;
 	int ret;
@@ -505,7 +506,7 @@ static int iwl_send_remove_station(struct iwl_priv *priv,
 
 	memset(&rm_sta_cmd, 0, sizeof(rm_sta_cmd));
 	rm_sta_cmd.num_sta = 1;
-	memcpy(&rm_sta_cmd.addr, &station->sta.sta.addr , ETH_ALEN);
+	memcpy(&rm_sta_cmd.addr, addr, ETH_ALEN);
 
 	cmd.flags |= CMD_WANT_SKB;
 
@@ -525,7 +526,7 @@ static int iwl_send_remove_station(struct iwl_priv *priv,
 		switch (pkt->u.rem_sta.status) {
 		case REM_STA_SUCCESS_MSK:
 			spin_lock_irqsave(&priv->sta_lock, flags_spin);
-			iwl_sta_ucode_deactivate(priv, station->sta.sta.sta_id);
+			iwl_sta_ucode_deactivate(priv, sta_id);
 			spin_unlock_irqrestore(&priv->sta_lock, flags_spin);
 			IWL_DEBUG_ASSOC(priv, "REPLY_REMOVE_STA PASSED\n");
 			break;
@@ -546,7 +547,6 @@ static int iwl_send_remove_station(struct iwl_priv *priv,
 int iwl_remove_station(struct iwl_priv *priv, const u8 sta_id,
 		       const u8 *addr)
 {
-	struct iwl_station_entry *station;
 	unsigned long flags;
 
 	if (!iwl_is_ready(priv)) {
@@ -592,10 +592,9 @@ int iwl_remove_station(struct iwl_priv *priv, const u8 sta_id,
 
 	BUG_ON(priv->num_stations < 0);
 
-	station = &priv->stations[sta_id];
 	spin_unlock_irqrestore(&priv->sta_lock, flags);
 
-	return iwl_send_remove_station(priv, station);
+	return iwl_send_remove_station(priv, addr, sta_id);
 out_err:
 	spin_unlock_irqrestore(&priv->sta_lock, flags);
 	return -EINVAL;
@@ -643,11 +642,13 @@ EXPORT_SYMBOL(iwl_clear_ucode_stations);
  */
 void iwl_restore_stations(struct iwl_priv *priv)
 {
-	struct iwl_station_entry *station;
+	struct iwl_addsta_cmd sta_cmd;
+	struct iwl_link_quality_cmd lq;
 	unsigned long flags_spin;
 	int i;
 	bool found = false;
 	int ret;
+	bool send_lq;
 
 	if (!iwl_is_ready(priv)) {
 		IWL_DEBUG_INFO(priv, "Not ready yet, not restoring any stations.\n");
@@ -669,13 +670,20 @@ void iwl_restore_stations(struct iwl_priv *priv)
 
 	for (i = 0; i < priv->hw_params.max_stations; i++) {
 		if ((priv->stations[i].used & IWL_STA_UCODE_INPROGRESS)) {
+			memcpy(&sta_cmd, &priv->stations[i].sta,
+			       sizeof(struct iwl_addsta_cmd));
+			send_lq = false;
+			if (priv->stations[i].lq) {
+				memcpy(&lq, priv->stations[i].lq,
+				       sizeof(struct iwl_link_quality_cmd));
+				send_lq = true;
+			}
 			spin_unlock_irqrestore(&priv->sta_lock, flags_spin);
-			station = &priv->stations[i];
-			ret = iwl_send_add_sta(priv, &priv->stations[i].sta, CMD_SYNC);
+			ret = iwl_send_add_sta(priv, &sta_cmd, CMD_SYNC);
 			if (ret) {
-				IWL_ERR(priv, "Adding station %pM failed.\n",
-					station->sta.sta.addr);
 				spin_lock_irqsave(&priv->sta_lock, flags_spin);
+				IWL_ERR(priv, "Adding station %pM failed.\n",
+					priv->stations[i].sta.sta.addr);
 				priv->stations[i].used &= ~IWL_STA_DRIVER_ACTIVE;
 				priv->stations[i].used &= ~IWL_STA_UCODE_INPROGRESS;
 				spin_unlock_irqrestore(&priv->sta_lock, flags_spin);
@@ -684,8 +692,8 @@ void iwl_restore_stations(struct iwl_priv *priv)
 			 * Rate scaling has already been initialized, send
 			 * current LQ command
 			 */
-			if (station->lq)
-				iwl_send_lq_cmd(priv, station->lq, CMD_SYNC, true);
+			if (send_lq)
+				iwl_send_lq_cmd(priv, &lq, CMD_SYNC, true);
 			spin_lock_irqsave(&priv->sta_lock, flags_spin);
 			priv->stations[i].used &= ~IWL_STA_UCODE_INPROGRESS;
 		}
@@ -1269,9 +1277,8 @@ void iwl_sta_tx_modify_enable_tid(struct iwl_priv *priv, int sta_id, int tid)
 	priv->stations[sta_id].sta.sta.modify_mask = STA_MODIFY_TID_DISABLE_TX;
 	priv->stations[sta_id].sta.tid_disable_tx &= cpu_to_le16(~(1 << tid));
 	priv->stations[sta_id].sta.mode = STA_CONTROL_MODIFY_MSK;
-	spin_unlock_irqrestore(&priv->sta_lock, flags);
-
 	iwl_send_add_sta(priv, &priv->stations[sta_id].sta, CMD_ASYNC);
+	spin_unlock_irqrestore(&priv->sta_lock, flags);
 }
 EXPORT_SYMBOL(iwl_sta_tx_modify_enable_tid);
 
@@ -1302,7 +1309,7 @@ int iwl_sta_rx_agg_stop(struct iwl_priv *priv, struct ieee80211_sta *sta,
 			int tid)
 {
 	unsigned long flags;
-	int sta_id;
+	int sta_id, ret;
 
 	sta_id = iwl_sta_id(sta);
 	if (sta_id == IWL_INVALID_STATION) {
@@ -1315,10 +1322,11 @@ int iwl_sta_rx_agg_stop(struct iwl_priv *priv, struct ieee80211_sta *sta,
 	priv->stations[sta_id].sta.sta.modify_mask = STA_MODIFY_DELBA_TID_MSK;
 	priv->stations[sta_id].sta.remove_immediate_ba_tid = (u8)tid;
 	priv->stations[sta_id].sta.mode = STA_CONTROL_MODIFY_MSK;
+	ret = iwl_send_add_sta(priv, &priv->stations[sta_id].sta, CMD_ASYNC);
 	spin_unlock_irqrestore(&priv->sta_lock, flags);
 
-	return iwl_send_add_sta(priv, &priv->stations[sta_id].sta,
-					CMD_ASYNC);
+	return ret;
+
 }
 EXPORT_SYMBOL(iwl_sta_rx_agg_stop);
 
@@ -1332,9 +1340,9 @@ void iwl_sta_modify_ps_wake(struct iwl_priv *priv, int sta_id)
 	priv->stations[sta_id].sta.sta.modify_mask = 0;
 	priv->stations[sta_id].sta.sleep_tx_count = 0;
 	priv->stations[sta_id].sta.mode = STA_CONTROL_MODIFY_MSK;
+	iwl_send_add_sta(priv, &priv->stations[sta_id].sta, CMD_ASYNC);
 	spin_unlock_irqrestore(&priv->sta_lock, flags);
 
-	iwl_send_add_sta(priv, &priv->stations[sta_id].sta, CMD_ASYNC);
 }
 EXPORT_SYMBOL(iwl_sta_modify_ps_wake);
 
@@ -1349,9 +1357,9 @@ void iwl_sta_modify_sleep_tx_count(struct iwl_priv *priv, int sta_id, int cnt)
 					STA_MODIFY_SLEEP_TX_COUNT_MSK;
 	priv->stations[sta_id].sta.sleep_tx_count = cpu_to_le16(cnt);
 	priv->stations[sta_id].sta.mode = STA_CONTROL_MODIFY_MSK;
+	iwl_send_add_sta(priv, &priv->stations[sta_id].sta, CMD_ASYNC);
 	spin_unlock_irqrestore(&priv->sta_lock, flags);
 
-	iwl_send_add_sta(priv, &priv->stations[sta_id].sta, CMD_ASYNC);
 }
 EXPORT_SYMBOL(iwl_sta_modify_sleep_tx_count);
 
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c
index 4454064..82beeb5 100644
--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
@@ -196,6 +196,7 @@ static int iwl3945_set_wep_dynamic_key_info(struct iwl_priv *priv,
 static int iwl3945_clear_sta_key_info(struct iwl_priv *priv, u8 sta_id)
 {
 	unsigned long flags;
+	struct iwl_addsta_cmd sta_cmd;
 
 	spin_lock_irqsave(&priv->sta_lock, flags);
 	memset(&priv->stations[sta_id].keyinfo, 0, sizeof(struct iwl_hw_key));
@@ -204,11 +205,11 @@ static int iwl3945_clear_sta_key_info(struct iwl_priv *priv, u8 sta_id)
 	priv->stations[sta_id].sta.key.key_flags = STA_KEY_FLG_NO_ENC;
 	priv->stations[sta_id].sta.sta.modify_mask = STA_MODIFY_KEY_MASK;
 	priv->stations[sta_id].sta.mode = STA_CONTROL_MODIFY_MSK;
+	memcpy(&sta_cmd, &priv->stations[sta_id].sta, sizeof(struct iwl_addsta_cmd));
 	spin_unlock_irqrestore(&priv->sta_lock, flags);
 
 	IWL_DEBUG_INFO(priv, "hwcrypto: clear ucode station key info\n");
-	iwl_send_add_sta(priv, &priv->stations[sta_id].sta, 0);
-	return 0;
+	return iwl_send_add_sta(priv, &sta_cmd, CMD_SYNC);
 }
 
 static int iwl3945_set_dynamic_key(struct iwl_priv *priv,
-- 
1.6.3.3


^ permalink raw reply related

* [PATCH 10/17] iwlagn: use firmware event/error log information
From: Reinette Chatre @ 2010-05-13 21:49 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, ipw3945-devel, Johannes Berg, Reinette Chatre
In-Reply-To: <1273787399-9280-1-git-send-email-reinette.chatre@intel.com>

From: Johannes Berg <johannes.berg@intel.com>

In order to debug problems before the ALIVE
notification is received, new firmware files
contain the event/error log information in
the file. Use that information.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
---
 drivers/net/wireless/iwlwifi/iwl-agn.c |  102 ++++++++++++++++++++++++++++----
 drivers/net/wireless/iwlwifi/iwl-dev.h |    9 +++
 2 files changed, 99 insertions(+), 12 deletions(-)

diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index f62a345..845d0ee 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -1543,6 +1543,9 @@ struct iwlagn_firmware_pieces {
 	size_t inst_size, data_size, init_size, init_data_size, boot_size;
 
 	u32 build;
+
+	u32 init_evtlog_ptr, init_evtlog_size, init_errlog_ptr;
+	u32 inst_evtlog_ptr, inst_evtlog_size, inst_errlog_ptr;
 };
 
 static int iwlagn_load_legacy_firmware(struct iwl_priv *priv,
@@ -1720,6 +1723,42 @@ static int iwlagn_load_firmware(struct iwl_priv *priv,
 			capa->max_probe_length =
 				le32_to_cpup((__le32 *)tlv_data);
 			break;
+		case IWL_UCODE_TLV_INIT_EVTLOG_PTR:
+			if (tlv_len != 4)
+				return -EINVAL;
+			pieces->init_evtlog_ptr =
+				le32_to_cpup((__le32 *)tlv_data);
+			break;
+		case IWL_UCODE_TLV_INIT_EVTLOG_SIZE:
+			if (tlv_len != 4)
+				return -EINVAL;
+			pieces->init_evtlog_size =
+				le32_to_cpup((__le32 *)tlv_data);
+			break;
+		case IWL_UCODE_TLV_INIT_ERRLOG_PTR:
+			if (tlv_len != 4)
+				return -EINVAL;
+			pieces->init_errlog_ptr =
+				le32_to_cpup((__le32 *)tlv_data);
+			break;
+		case IWL_UCODE_TLV_RUNT_EVTLOG_PTR:
+			if (tlv_len != 4)
+				return -EINVAL;
+			pieces->inst_evtlog_ptr =
+				le32_to_cpup((__le32 *)tlv_data);
+			break;
+		case IWL_UCODE_TLV_RUNT_EVTLOG_SIZE:
+			if (tlv_len != 4)
+				return -EINVAL;
+			pieces->inst_evtlog_size =
+				le32_to_cpup((__le32 *)tlv_data);
+			break;
+		case IWL_UCODE_TLV_RUNT_ERRLOG_PTR:
+			if (tlv_len != 4)
+				return -EINVAL;
+			pieces->inst_errlog_ptr =
+				le32_to_cpup((__le32 *)tlv_data);
+			break;
 		default:
 			break;
 		}
@@ -1912,6 +1951,26 @@ static void iwl_ucode_callback(const struct firmware *ucode_raw, void *context)
 			goto err_pci_alloc;
 	}
 
+	/* Now that we can no longer fail, copy information */
+
+	/*
+	 * The (size - 16) / 12 formula is based on the information recorded
+	 * for each event, which is of mode 1 (including timestamp) for all
+	 * new microcodes that include this information.
+	 */
+	priv->_agn.init_evtlog_ptr = pieces.init_evtlog_ptr;
+	if (pieces.init_evtlog_size)
+		priv->_agn.init_evtlog_size = (pieces.init_evtlog_size - 16)/12;
+	else
+		priv->_agn.init_evtlog_size = priv->cfg->max_event_log_size;
+	priv->_agn.init_errlog_ptr = pieces.init_errlog_ptr;
+	priv->_agn.inst_evtlog_ptr = pieces.inst_evtlog_ptr;
+	if (pieces.inst_evtlog_size)
+		priv->_agn.inst_evtlog_size = (pieces.inst_evtlog_size - 16)/12;
+	else
+		priv->_agn.inst_evtlog_size = priv->cfg->max_event_log_size;
+	priv->_agn.inst_errlog_ptr = pieces.inst_errlog_ptr;
+
 	/* Copy images into buffers for card's bus-master reads ... */
 
 	/* Runtime instructions (first block of data in file) */
@@ -2037,10 +2096,15 @@ void iwl_dump_nic_error_log(struct iwl_priv *priv)
 	u32 blink1, blink2, ilink1, ilink2;
 	u32 pc, hcmd;
 
-	if (priv->ucode_type == UCODE_INIT)
+	if (priv->ucode_type == UCODE_INIT) {
 		base = le32_to_cpu(priv->card_alive_init.error_event_table_ptr);
-	else
+		if (!base)
+			base = priv->_agn.init_errlog_ptr;
+	} else {
 		base = le32_to_cpu(priv->card_alive.error_event_table_ptr);
+		if (!base)
+			base = priv->_agn.inst_errlog_ptr;
+	}
 
 	if (!priv->cfg->ops->lib->is_valid_rtc_data_addr(base)) {
 		IWL_ERR(priv,
@@ -2100,10 +2164,16 @@ static int iwl_print_event_log(struct iwl_priv *priv, u32 start_idx,
 
 	if (num_events == 0)
 		return pos;
-	if (priv->ucode_type == UCODE_INIT)
+
+	if (priv->ucode_type == UCODE_INIT) {
 		base = le32_to_cpu(priv->card_alive_init.log_event_table_ptr);
-	else
+		if (!base)
+			base = priv->_agn.init_evtlog_ptr;
+	} else {
 		base = le32_to_cpu(priv->card_alive.log_event_table_ptr);
+		if (!base)
+			base = priv->_agn.inst_evtlog_ptr;
+	}
 
 	if (mode == 0)
 		event_size = 2 * sizeof(u32);
@@ -2205,13 +2275,21 @@ int iwl_dump_nic_event_log(struct iwl_priv *priv, bool full_log,
 	u32 num_wraps;  /* # times uCode wrapped to top of log */
 	u32 next_entry; /* index of next entry to be written by uCode */
 	u32 size;       /* # entries that we'll print */
+	u32 logsize;
 	int pos = 0;
 	size_t bufsz = 0;
 
-	if (priv->ucode_type == UCODE_INIT)
+	if (priv->ucode_type == UCODE_INIT) {
 		base = le32_to_cpu(priv->card_alive_init.log_event_table_ptr);
-	else
+		logsize = priv->_agn.init_evtlog_size;
+		if (!base)
+			base = priv->_agn.init_evtlog_ptr;
+	} else {
 		base = le32_to_cpu(priv->card_alive.log_event_table_ptr);
+		logsize = priv->_agn.inst_evtlog_size;
+		if (!base)
+			base = priv->_agn.inst_evtlog_ptr;
+	}
 
 	if (!priv->cfg->ops->lib->is_valid_rtc_data_addr(base)) {
 		IWL_ERR(priv,
@@ -2226,16 +2304,16 @@ int iwl_dump_nic_event_log(struct iwl_priv *priv, bool full_log,
 	num_wraps = iwl_read_targ_mem(priv, base + (2 * sizeof(u32)));
 	next_entry = iwl_read_targ_mem(priv, base + (3 * sizeof(u32)));
 
-	if (capacity > priv->cfg->max_event_log_size) {
+	if (capacity > logsize) {
 		IWL_ERR(priv, "Log capacity %d is bogus, limit to %d entries\n",
-			capacity, priv->cfg->max_event_log_size);
-		capacity = priv->cfg->max_event_log_size;
+			capacity, logsize);
+		capacity = logsize;
 	}
 
-	if (next_entry > priv->cfg->max_event_log_size) {
+	if (next_entry > logsize) {
 		IWL_ERR(priv, "Log write index %d is bogus, limit to %d\n",
-			next_entry, priv->cfg->max_event_log_size);
-		next_entry = priv->cfg->max_event_log_size;
+			next_entry, logsize);
+		next_entry = logsize;
 	}
 
 	size = num_wraps ? capacity : next_entry;
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h
index 5ac03f5..fdd0430 100644
--- a/drivers/net/wireless/iwlwifi/iwl-dev.h
+++ b/drivers/net/wireless/iwlwifi/iwl-dev.h
@@ -583,6 +583,12 @@ enum iwl_ucode_tlv_type {
 	IWL_UCODE_TLV_INIT_DATA		= 4,
 	IWL_UCODE_TLV_BOOT		= 5,
 	IWL_UCODE_TLV_PROBE_MAX_LEN	= 6, /* a u32 value */
+	IWL_UCODE_TLV_RUNT_EVTLOG_PTR	= 8,
+	IWL_UCODE_TLV_RUNT_EVTLOG_SIZE	= 9,
+	IWL_UCODE_TLV_RUNT_ERRLOG_PTR	= 10,
+	IWL_UCODE_TLV_INIT_EVTLOG_PTR	= 11,
+	IWL_UCODE_TLV_INIT_EVTLOG_SIZE	= 12,
+	IWL_UCODE_TLV_INIT_ERRLOG_PTR	= 13,
 };
 
 struct iwl_ucode_tlv {
@@ -1317,6 +1323,9 @@ struct iwl_priv {
 			struct iwl_notif_statistics delta_statistics;
 			struct iwl_notif_statistics max_delta;
 #endif
+
+			u32 init_evtlog_ptr, init_evtlog_size, init_errlog_ptr;
+			u32 inst_evtlog_ptr, inst_evtlog_size, inst_errlog_ptr;
 		} _agn;
 #endif
 	};
-- 
1.6.3.3


^ permalink raw reply related

* [PATCH 15/17] iwlwifi: use proper short slot/preamble settings
From: Reinette Chatre @ 2010-05-13 21:49 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, ipw3945-devel, Johannes Berg, Reinette Chatre
In-Reply-To: <1273787399-9280-1-git-send-email-reinette.chatre@intel.com>

From: Johannes Berg <johannes.berg@intel.com>

The short preamble setting might change on the
fly, and then we already use the right mac80211
variable. However, in other places we don't,
which is especially wrong in the AP code since
in that case the assoc_capability is invalid.
Also, the IBSS special case is not needed since
"use_short_slot" will be properly cleared, but
the "assoc_capability" might be invalid (which
must be the reason for the special case).

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
---
 drivers/net/wireless/iwlwifi/iwl-agn.c      |   18 ++++--------------
 drivers/net/wireless/iwlwifi/iwl-core.c     |    5 +----
 drivers/net/wireless/iwlwifi/iwl3945-base.c |   17 ++++-------------
 3 files changed, 9 insertions(+), 31 deletions(-)

diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index 5bfa7b3..eb74f28 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -2860,20 +2860,16 @@ void iwl_post_associate(struct iwl_priv *priv, struct ieee80211_vif *vif)
 	IWL_DEBUG_ASSOC(priv, "assoc id %d beacon interval %d\n",
 			vif->bss_conf.aid, vif->bss_conf.beacon_int);
 
-	if (vif->bss_conf.assoc_capability & WLAN_CAPABILITY_SHORT_PREAMBLE)
+	if (vif->bss_conf.use_short_preamble)
 		priv->staging_rxon.flags |= RXON_FLG_SHORT_PREAMBLE_MSK;
 	else
 		priv->staging_rxon.flags &= ~RXON_FLG_SHORT_PREAMBLE_MSK;
 
 	if (priv->staging_rxon.flags & RXON_FLG_BAND_24G_MSK) {
-		if (vif->bss_conf.assoc_capability &
-					WLAN_CAPABILITY_SHORT_SLOT_TIME)
+		if (vif->bss_conf.use_short_slot)
 			priv->staging_rxon.flags |= RXON_FLG_SHORT_SLOT_MSK;
 		else
 			priv->staging_rxon.flags &= ~RXON_FLG_SHORT_SLOT_MSK;
-
-		if (vif->type == NL80211_IFTYPE_ADHOC)
-			priv->staging_rxon.flags &= ~RXON_FLG_SHORT_SLOT_MSK;
 	}
 
 	iwlcore_commit_rxon(priv);
@@ -3099,8 +3095,7 @@ void iwl_config_ap(struct iwl_priv *priv, struct ieee80211_vif *vif)
 
 		priv->staging_rxon.assoc_id = 0;
 
-		if (vif->bss_conf.assoc_capability &
-						WLAN_CAPABILITY_SHORT_PREAMBLE)
+		if (vif->bss_conf.use_short_preamble)
 			priv->staging_rxon.flags |=
 				RXON_FLG_SHORT_PREAMBLE_MSK;
 		else
@@ -3108,17 +3103,12 @@ void iwl_config_ap(struct iwl_priv *priv, struct ieee80211_vif *vif)
 				~RXON_FLG_SHORT_PREAMBLE_MSK;
 
 		if (priv->staging_rxon.flags & RXON_FLG_BAND_24G_MSK) {
-			if (vif->bss_conf.assoc_capability &
-						WLAN_CAPABILITY_SHORT_SLOT_TIME)
+			if (vif->bss_conf.use_short_slot)
 				priv->staging_rxon.flags |=
 					RXON_FLG_SHORT_SLOT_MSK;
 			else
 				priv->staging_rxon.flags &=
 					~RXON_FLG_SHORT_SLOT_MSK;
-
-			if (vif->type == NL80211_IFTYPE_ADHOC)
-				priv->staging_rxon.flags &=
-					~RXON_FLG_SHORT_SLOT_MSK;
 		}
 		/* restore RXON assoc */
 		priv->staging_rxon.filter_flags |= RXON_FILTER_ASSOC_MSK;
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.c b/drivers/net/wireless/iwlwifi/iwl-core.c
index 5f56a0e..10ce008 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.c
+++ b/drivers/net/wireless/iwlwifi/iwl-core.c
@@ -904,14 +904,11 @@ static void iwl_set_flags_for_band(struct iwl_priv *priv,
 		priv->staging_rxon.flags |= RXON_FLG_SHORT_SLOT_MSK;
 	} else {
 		/* Copied from iwl_post_associate() */
-		if (vif && vif->bss_conf.assoc_capability & WLAN_CAPABILITY_SHORT_SLOT_TIME)
+		if (vif && vif->bss_conf.use_short_slot)
 			priv->staging_rxon.flags |= RXON_FLG_SHORT_SLOT_MSK;
 		else
 			priv->staging_rxon.flags &= ~RXON_FLG_SHORT_SLOT_MSK;
 
-		if (vif && vif->type == NL80211_IFTYPE_ADHOC)
-			priv->staging_rxon.flags &= ~RXON_FLG_SHORT_SLOT_MSK;
-
 		priv->staging_rxon.flags |= RXON_FLG_BAND_24G_MSK;
 		priv->staging_rxon.flags |= RXON_FLG_AUTO_DETECT_MSK;
 		priv->staging_rxon.flags &= ~RXON_FLG_CCK_MSK;
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c
index 82beeb5..09f8aca 100644
--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
@@ -3096,19 +3096,16 @@ void iwl3945_post_associate(struct iwl_priv *priv, struct ieee80211_vif *vif)
 	IWL_DEBUG_ASSOC(priv, "assoc id %d beacon interval %d\n",
 			vif->bss_conf.aid, vif->bss_conf.beacon_int);
 
-	if (vif->bss_conf.assoc_capability & WLAN_CAPABILITY_SHORT_PREAMBLE)
+	if (vif->bss_conf.use_short_preamble)
 		priv->staging_rxon.flags |= RXON_FLG_SHORT_PREAMBLE_MSK;
 	else
 		priv->staging_rxon.flags &= ~RXON_FLG_SHORT_PREAMBLE_MSK;
 
 	if (priv->staging_rxon.flags & RXON_FLG_BAND_24G_MSK) {
-		if (vif->bss_conf.assoc_capability & WLAN_CAPABILITY_SHORT_SLOT_TIME)
+		if (vif->bss_conf.use_short_slot)
 			priv->staging_rxon.flags |= RXON_FLG_SHORT_SLOT_MSK;
 		else
 			priv->staging_rxon.flags &= ~RXON_FLG_SHORT_SLOT_MSK;
-
-		if (vif->type == NL80211_IFTYPE_ADHOC)
-			priv->staging_rxon.flags &= ~RXON_FLG_SHORT_SLOT_MSK;
 	}
 
 	iwlcore_commit_rxon(priv);
@@ -3272,8 +3269,7 @@ void iwl3945_config_ap(struct iwl_priv *priv, struct ieee80211_vif *vif)
 
 		priv->staging_rxon.assoc_id = 0;
 
-		if (vif->bss_conf.assoc_capability &
-					WLAN_CAPABILITY_SHORT_PREAMBLE)
+		if (vif->bss_conf.use_short_preamble)
 			priv->staging_rxon.flags |=
 				RXON_FLG_SHORT_PREAMBLE_MSK;
 		else
@@ -3281,17 +3277,12 @@ void iwl3945_config_ap(struct iwl_priv *priv, struct ieee80211_vif *vif)
 				~RXON_FLG_SHORT_PREAMBLE_MSK;
 
 		if (priv->staging_rxon.flags & RXON_FLG_BAND_24G_MSK) {
-			if (vif->bss_conf.assoc_capability &
-					WLAN_CAPABILITY_SHORT_SLOT_TIME)
+			if (vif->bss_conf.use_short_slot)
 				priv->staging_rxon.flags |=
 					RXON_FLG_SHORT_SLOT_MSK;
 			else
 				priv->staging_rxon.flags &=
 					~RXON_FLG_SHORT_SLOT_MSK;
-
-			if (vif->type == NL80211_IFTYPE_ADHOC)
-				priv->staging_rxon.flags &=
-					~RXON_FLG_SHORT_SLOT_MSK;
 		}
 		/* restore RXON assoc */
 		priv->staging_rxon.filter_flags |= RXON_FILTER_ASSOC_MSK;
-- 
1.6.3.3


^ permalink raw reply related

* [PATCH 05/17] iwl3945: remove sequence number assignment
From: Reinette Chatre @ 2010-05-13 21:49 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, ipw3945-devel, Johannes Berg, Reinette Chatre
In-Reply-To: <1273787399-9280-1-git-send-email-reinette.chatre@intel.com>

From: Johannes Berg <johannes.berg@intel.com>

Unlike agn, where the sequence numbers must
match with the TFD index, the driver for 3945
devices can use the sequence numbers provided
by mac80211 for QoS frames.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
---
 drivers/net/wireless/iwlwifi/iwl-dev.h      |    2 +-
 drivers/net/wireless/iwlwifi/iwl3945-base.c |   12 +-----------
 2 files changed, 2 insertions(+), 12 deletions(-)

diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h
index 858a548..8538af7 100644
--- a/drivers/net/wireless/iwlwifi/iwl-dev.h
+++ b/drivers/net/wireless/iwlwifi/iwl-dev.h
@@ -433,7 +433,7 @@ struct iwl_ht_agg {
 
 
 struct iwl_tid_data {
-	u16 seq_number;
+	u16 seq_number; /* agn only */
 	u16 tfds_in_queue;
 	struct iwl_ht_agg agg;
 };
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c
index 68b8a1a..4454064 100644
--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
@@ -473,10 +473,8 @@ static int iwl3945_tx_skb(struct iwl_priv *priv, struct sk_buff *skb)
 	u8 unicast;
 	u8 sta_id;
 	u8 tid = 0;
-	u16 seq_number = 0;
 	__le16 fc;
 	u8 wait_write_ptr = 0;
-	u8 *qc = NULL;
 	unsigned long flags;
 
 	spin_lock_irqsave(&priv->lock, flags);
@@ -519,16 +517,10 @@ static int iwl3945_tx_skb(struct iwl_priv *priv, struct sk_buff *skb)
 	IWL_DEBUG_RATE(priv, "station Id %d\n", sta_id);
 
 	if (ieee80211_is_data_qos(fc)) {
-		qc = ieee80211_get_qos_ctl(hdr);
+		u8 *qc = ieee80211_get_qos_ctl(hdr);
 		tid = qc[0] & IEEE80211_QOS_CTL_TID_MASK;
 		if (unlikely(tid >= MAX_TID_COUNT))
 			goto drop;
-		seq_number = priv->stations[sta_id].tid[tid].seq_number &
-				IEEE80211_SCTL_SEQ;
-		hdr->seq_ctrl = cpu_to_le16(seq_number) |
-			(hdr->seq_ctrl &
-				cpu_to_le16(IEEE80211_SCTL_FRAG));
-		seq_number += 0x10;
 	}
 
 	/* Descriptor for chosen Tx queue */
@@ -587,8 +579,6 @@ static int iwl3945_tx_skb(struct iwl_priv *priv, struct sk_buff *skb)
 
 	if (!ieee80211_has_morefrags(hdr->frame_control)) {
 		txq->need_update = 1;
-		if (qc)
-			priv->stations[sta_id].tid[tid].seq_number = seq_number;
 	} else {
 		wait_write_ptr = 1;
 		txq->need_update = 0;
-- 
1.6.3.3


^ permalink raw reply related

* [PATCH 14/17] iwlwifi: split debug and debugfs options
From: Reinette Chatre @ 2010-05-13 21:49 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, ipw3945-devel, Johannes Berg, Reinette Chatre
In-Reply-To: <1273787399-9280-1-git-send-email-reinette.chatre@intel.com>

From: Johannes Berg <johannes.berg@intel.com>

It may be desirable in some systems to have
insight into the driver via debugfs, but not
affect its operation via the debug logging
code that is inserted everywhere when DEBUG
is configured.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
---
 drivers/net/wireless/iwlwifi/Kconfig    |    6 ++++--
 drivers/net/wireless/iwlwifi/iwl-3945.c |    6 +++---
 drivers/net/wireless/iwlwifi/iwl-agn.c  |    7 ++++++-
 drivers/net/wireless/iwlwifi/iwl-core.c |    2 +-
 drivers/net/wireless/iwlwifi/iwl-dev.h  |    8 ++++----
 drivers/net/wireless/iwlwifi/iwl-rx.c   |    6 +++---
 6 files changed, 21 insertions(+), 14 deletions(-)

diff --git a/drivers/net/wireless/iwlwifi/Kconfig b/drivers/net/wireless/iwlwifi/Kconfig
index dc8ed15..6491e27 100644
--- a/drivers/net/wireless/iwlwifi/Kconfig
+++ b/drivers/net/wireless/iwlwifi/Kconfig
@@ -30,9 +30,11 @@ config IWLWIFI_DEBUG
 
 config IWLWIFI_DEBUGFS
         bool "iwlagn debugfs support"
-        depends on IWLWIFI && IWLWIFI_DEBUG && MAC80211_DEBUGFS
+        depends on IWLWIFI && MAC80211_DEBUGFS
         ---help---
-	  Enable creation of debugfs files for the iwlwifi drivers.
+	  Enable creation of debugfs files for the iwlwifi drivers. This
+	  is a low-impact option that allows getting insight into the
+	  driver's state at runtime.
 
 config IWLWIFI_DEVICE_TRACING
 	bool "iwlwifi device access tracing"
diff --git a/drivers/net/wireless/iwlwifi/iwl-3945.c b/drivers/net/wireless/iwlwifi/iwl-3945.c
index 5ffbce8..f9b6e39 100644
--- a/drivers/net/wireless/iwlwifi/iwl-3945.c
+++ b/drivers/net/wireless/iwlwifi/iwl-3945.c
@@ -351,7 +351,7 @@ static void iwl3945_rx_reply_tx(struct iwl_priv *priv,
  *  RX handler implementations
  *
  *****************************************************************************/
-#ifdef CONFIG_IWLWIFI_DEBUG
+#ifdef CONFIG_IWLWIFI_DEBUGFS
 /*
  *  based on the assumption of all statistics counter are in DWORD
  *  FIXME: This function is for debugging, do not deal with
@@ -459,7 +459,7 @@ void iwl3945_hw_rx_statistics(struct iwl_priv *priv,
 	IWL_DEBUG_RX(priv, "Statistics notification received (%d vs %d).\n",
 		     (int)sizeof(struct iwl3945_notif_statistics),
 		     le32_to_cpu(pkt->len_n_flags) & FH_RSCSR_FRAME_SIZE_MSK);
-#ifdef CONFIG_IWLWIFI_DEBUG
+#ifdef CONFIG_IWLWIFI_DEBUGFS
 	iwl3945_accumulative_statistics(priv, (__le32 *)&pkt->u.raw);
 #endif
 	iwl_recover_from_statistics(priv, pkt);
@@ -474,7 +474,7 @@ void iwl3945_reply_statistics(struct iwl_priv *priv,
 	__le32 *flag = (__le32 *)&pkt->u.raw;
 
 	if (le32_to_cpu(*flag) & UCODE_STATISTICS_CLEAR_MSK) {
-#ifdef CONFIG_IWLWIFI_DEBUG
+#ifdef CONFIG_IWLWIFI_DEBUGFS
 		memset(&priv->_3945.accum_statistics, 0,
 			sizeof(struct iwl3945_notif_statistics));
 		memset(&priv->_3945.delta_statistics, 0,
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index f910246..5bfa7b3 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -1465,7 +1465,12 @@ bool iwl_good_ack_health(struct iwl_priv *priv,
 				" expected_ack_cnt = %d\n",
 				actual_ack_cnt_delta, expected_ack_cnt_delta);
 
-#ifdef CONFIG_IWLWIFI_DEBUG
+#ifdef CONFIG_IWLWIFI_DEBUGFS
+		/*
+		 * This is ifdef'ed on DEBUGFS because otherwise the
+		 * statistics aren't available. If DEBUGFS is set but
+		 * DEBUG is not, these will just compile out.
+		 */
 		IWL_DEBUG_RADIO(priv, "rx_detected_cnt delta = %d\n",
 				priv->_agn.delta_statistics.tx.rx_detected_cnt);
 		IWL_DEBUG_RADIO(priv,
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.c b/drivers/net/wireless/iwlwifi/iwl-core.c
index f007b36..5f56a0e 100644
--- a/drivers/net/wireless/iwlwifi/iwl-core.c
+++ b/drivers/net/wireless/iwlwifi/iwl-core.c
@@ -456,7 +456,7 @@ u8 iwl_is_ht40_tx_allowed(struct iwl_priv *priv,
 		if (!sta_ht_inf->ht_supported)
 			return 0;
 	}
-#ifdef CONFIG_IWLWIFI_DEBUG
+#ifdef CONFIG_IWLWIFI_DEBUGFS
 	if (priv->disable_ht40)
 		return 0;
 #endif
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h
index 05a7a0d..57a3c57 100644
--- a/drivers/net/wireless/iwlwifi/iwl-dev.h
+++ b/drivers/net/wireless/iwlwifi/iwl-dev.h
@@ -1255,7 +1255,7 @@ struct iwl_priv {
 			struct delayed_work rfkill_poll;
 
 			struct iwl3945_notif_statistics statistics;
-#ifdef CONFIG_IWLWIFI_DEBUG
+#ifdef CONFIG_IWLWIFI_DEBUGFS
 			struct iwl3945_notif_statistics accum_statistics;
 			struct iwl3945_notif_statistics delta_statistics;
 			struct iwl3945_notif_statistics max_delta;
@@ -1299,7 +1299,7 @@ struct iwl_priv {
 			struct completion firmware_loading_complete;
 
 			struct iwl_notif_statistics statistics;
-#ifdef CONFIG_IWLWIFI_DEBUG
+#ifdef CONFIG_IWLWIFI_DEBUGFS
 			struct iwl_notif_statistics accum_statistics;
 			struct iwl_notif_statistics delta_statistics;
 			struct iwl_notif_statistics max_delta;
@@ -1347,7 +1347,7 @@ struct iwl_priv {
 			    iwl_debug_level if set */
 	u32 framecnt_to_us;
 	atomic_t restrict_refcnt;
-	bool disable_ht40;
+#endif /* CONFIG_IWLWIFI_DEBUG */
 #ifdef CONFIG_IWLWIFI_DEBUGFS
 	/* debugfs */
 	u16 tx_traffic_idx;
@@ -1356,8 +1356,8 @@ struct iwl_priv {
 	u8 *rx_traffic;
 	struct dentry *debugfs_dir;
 	u32 dbgfs_sram_offset, dbgfs_sram_len;
+	bool disable_ht40;
 #endif /* CONFIG_IWLWIFI_DEBUGFS */
-#endif /* CONFIG_IWLWIFI_DEBUG */
 
 	struct work_struct txpower_work;
 	u32 disable_sens_cal;
diff --git a/drivers/net/wireless/iwlwifi/iwl-rx.c b/drivers/net/wireless/iwlwifi/iwl-rx.c
index aea5cf4..e118984 100644
--- a/drivers/net/wireless/iwlwifi/iwl-rx.c
+++ b/drivers/net/wireless/iwlwifi/iwl-rx.c
@@ -285,7 +285,7 @@ static void iwl_rx_calc_noise(struct iwl_priv *priv)
 			last_rx_noise);
 }
 
-#ifdef CONFIG_IWLWIFI_DEBUG
+#ifdef CONFIG_IWLWIFI_DEBUGFS
 /*
  *  based on the assumption of all statistics counter are in DWORD
  *  FIXME: This function is for debugging, do not deal with
@@ -447,7 +447,7 @@ void iwl_rx_statistics(struct iwl_priv *priv,
 		    STATISTICS_REPLY_FLG_HT40_MODE_MSK) !=
 		   (pkt->u.stats.flag & STATISTICS_REPLY_FLG_HT40_MODE_MSK)));
 
-#ifdef CONFIG_IWLWIFI_DEBUG
+#ifdef CONFIG_IWLWIFI_DEBUGFS
 	iwl_accumulative_statistics(priv, (__le32 *)&pkt->u.stats);
 #endif
 	iwl_recover_from_statistics(priv, pkt);
@@ -480,7 +480,7 @@ void iwl_reply_statistics(struct iwl_priv *priv,
 	struct iwl_rx_packet *pkt = rxb_addr(rxb);
 
 	if (le32_to_cpu(pkt->u.stats.flag) & UCODE_STATISTICS_CLEAR_MSK) {
-#ifdef CONFIG_IWLWIFI_DEBUG
+#ifdef CONFIG_IWLWIFI_DEBUGFS
 		memset(&priv->_agn.accum_statistics, 0,
 			sizeof(struct iwl_notif_statistics));
 		memset(&priv->_agn.delta_statistics, 0,
-- 
1.6.3.3


^ permalink raw reply related

* [PATCH 13/17] iwlwifi: modify out-dated comments
From: Reinette Chatre @ 2010-05-13 21:49 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, ipw3945-devel, Wey-Yi Guy, Reinette Chatre
In-Reply-To: <1273787399-9280-1-git-send-email-reinette.chatre@intel.com>

From: Wey-Yi Guy <wey-yi.w.guy@intel.com>

Some comments in iwl-dev.h still refer to 4965 but used by all the _agn
devices.

Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
---
 drivers/net/wireless/iwlwifi/iwl-dev.h |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h
index 8b2d06c..05a7a0d 100644
--- a/drivers/net/wireless/iwlwifi/iwl-dev.h
+++ b/drivers/net/wireless/iwlwifi/iwl-dev.h
@@ -1096,7 +1096,7 @@ struct iwl_priv {
 	/* force reset */
 	struct iwl_force_reset force_reset[IWL_MAX_FORCE_RESET];
 
-	/* we allocate array of iwl4965_channel_info for NIC's valid channels.
+	/* we allocate array of iwl_channel_info for NIC's valid channels.
 	 *    Access via channel # using indirect index array */
 	struct iwl_channel_info *channel_info;	/* channel info array */
 	u8 channel_count;	/* # of channels */
@@ -1161,7 +1161,7 @@ struct iwl_priv {
 	struct iwl_switch_rxon switch_rxon;
 
 	/* 1st responses from initialize and runtime uCode images.
-	 * 4965's initialize alive response contains some calibration data. */
+	 * _agn's initialize alive response contains some calibration data. */
 	struct iwl_init_alive_resp card_alive_init;
 	struct iwl_alive_resp card_alive;
 
-- 
1.6.3.3


^ permalink raw reply related

* [PATCH 08/17] iwlwifi: remove IWL_MULTICAST_ID
From: Reinette Chatre @ 2010-05-13 21:49 UTC (permalink / raw)
  To: linville; +Cc: linux-wireless, ipw3945-devel, Johannes Berg, Reinette Chatre
In-Reply-To: <1273787399-9280-1-git-send-email-reinette.chatre@intel.com>

From: Johannes Berg <johannes.berg@intel.com>

This constant is not used, and incorrect, since
the broadcast ID must be used for multicast too.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
---
 drivers/net/wireless/iwlwifi/iwl-commands.h |    1 -
 1 files changed, 0 insertions(+), 1 deletions(-)

diff --git a/drivers/net/wireless/iwlwifi/iwl-commands.h b/drivers/net/wireless/iwlwifi/iwl-commands.h
index 9aab020..4790571 100644
--- a/drivers/net/wireless/iwlwifi/iwl-commands.h
+++ b/drivers/net/wireless/iwlwifi/iwl-commands.h
@@ -952,7 +952,6 @@ struct iwl_qosparam_cmd {
 
 /* Special, dedicated locations within device's station table */
 #define	IWL_AP_ID		0
-#define IWL_MULTICAST_ID	1
 #define	IWL_STA_ID		2
 #define	IWL3945_BROADCAST_ID	24
 #define IWL3945_STATION_COUNT	25
-- 
1.6.3.3


^ permalink raw reply related


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