* Re: [PATCH] mac80211: Fix BUG in pskb_expand_head when transmitting shared skbs
From: John W. Linville @ 2010-12-07 19:49 UTC (permalink / raw)
To: Helmut Schaa; +Cc: linux-wireless, Johannes Berg
In-Reply-To: <1291311849-13086-1-git-send-email-helmut.schaa@googlemail.com>
On Thu, Dec 02, 2010 at 06:44:09PM +0100, Helmut Schaa wrote:
> mac80211 doesn't handle shared skbs correctly at the moment. As a result
> a possible resize can trigger a BUG in pskb_expand_head.
>
> [ 676.030000] Kernel bug detected[#1]:
> [ 676.030000] Cpu 0
> [ 676.030000] $ 0 : 00000000 00000000 819662ff 00000002
> [ 676.030000] $ 4 : 81966200 00000020 00000000 00000020
> [ 676.030000] $ 8 : 819662e0 800043c0 00000002 00020000
> [ 676.030000] $12 : 3b9aca00 00000000 00000000 00470000
> [ 676.030000] $16 : 80ea2000 00000000 00000000 00000000
> [ 676.030000] $20 : 818aa200 80ea2018 80ea2000 00000008
> [ 676.030000] $24 : 00000002 800ace5c
> [ 676.030000] $28 : 8199a000 8199bd20 81938f88 80f180d4
> [ 676.030000] Hi : 0000026e
> [ 676.030000] Lo : 0000757e
> [ 676.030000] epc : 801245e4 pskb_expand_head+0x44/0x1d8
> [ 676.030000] Not tainted
> [ 676.030000] ra : 80f180d4 ieee80211_skb_resize+0xb0/0x114 [mac80211]
> [ 676.030000] Status: 1000a403 KERNEL EXL IE
> [ 676.030000] Cause : 10800024
> [ 676.030000] PrId : 0001964c (MIPS 24Kc)
> [ 676.030000] Modules linked in: mac80211_hwsim rt2800lib rt2x00soc rt2x00pci rt2x00lib mac80211 crc_itu_t crc_ccitt cfg80211 compat arc4 aes_generic deflate ecb cbc [last unloaded: rt2800pci]
> [ 676.030000] Process kpktgend_0 (pid: 97, threadinfo=8199a000, task=81879f48, tls=00000000)
> [ 676.030000] Stack : ffffffff 00000000 00000000 00000014 00000004 80ea2000 00000000 00000000
> [ 676.030000] 818aa200 80f180d4 ffffffff 0000000a 81879f78 81879f48 81879f48 00000018
> [ 676.030000] 81966246 80ea2000 818432e0 80f1a420 80203050 81814d98 00000001 81879f48
> [ 676.030000] 81879f48 00000018 81966246 818432e0 0000001a 8199bdd4 0000001c 80f1b72c
> [ 676.030000] 80203020 8001292c 80ef4aa2 7f10b55d 801ab5b8 81879f48 00000188 80005c90
> [ 676.030000] ...
> [ 676.030000] Call Trace:
> [ 676.030000] [<801245e4>] pskb_expand_head+0x44/0x1d8
> [ 676.030000] [<80f180d4>] ieee80211_skb_resize+0xb0/0x114 [mac80211]
> [ 676.030000] [<80f1a420>] ieee80211_xmit+0x150/0x22c [mac80211]
> [ 676.030000] [<80f1b72c>] ieee80211_subif_start_xmit+0x6f4/0x73c [mac80211]
> [ 676.030000] [<8014361c>] pktgen_thread_worker+0xfac/0x16f8
> [ 676.030000] [<8002ebe8>] kthread+0x7c/0x88
> [ 676.030000] [<80008e0c>] kernel_thread_helper+0x10/0x18
> [ 676.030000]
> [ 676.030000]
> [ 676.030000] Code: 24020001 10620005 2502001f <0200000d> 0804917a 00000000 2502001f 00441023 00531021
>
> Fix this by making a local copy of shared skbs prior to mangeling them.
> To avoid copying the skb unnecessarily move the skb_copy call below the
> checks that don't need write access to the skb.
>
> Also, move the assignment of nh_pos and h_pos below the skb_copy to point
> to the correct skb.
>
> It would be possible to avoid another resize of the copied skb by using
> skb_copy_expand instead of skb_copy but that would make the patch more
> complex. Also, shared skbs are a corner case right now, so the resize
> shouldn't matter much.
>
> Cc: Johannes Berg <johannes@sipsolutions.net>
> Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
Is this intended for 2.6.37? It looks like it would apply there.
John
--
John W. Linville Someday the world will need a hero, and you
linville@tuxdriver.com might be all we have. Be ready.
^ permalink raw reply
* Re: [PATCH 2/2] ath9k_htc: Fix suspend/resume
From: John W. Linville @ 2010-12-07 19:46 UTC (permalink / raw)
To: Sujith; +Cc: Luis R. Rodriguez, linux-wireless
In-Reply-To: <19709.45926.38551.25130@gargle.gargle.HOWL>
On Tue, Dec 07, 2010 at 09:39:10AM +0530, Sujith wrote:
> Luis R. Rodriguez wrote:
> > Just curious, if you revert this patch and apply the ones I just
> > posted, does it fix it, or is this patch required either way?
>
> Well, I don't see this patch in -testing, -next-2.6 or -2.6.
> Maybe Linville overlooked this patch.
Obviously I didn't overlook it, or I wouldn't have asked about whether
or not it should go to 2.6.37...
> Applying 4/5 and 5/5 from your series seems to fix the issue though.
> I am able to suspend/resume without hiccups with UB95.
But now this begs the question of whether this should be applied at all?
John
--
John W. Linville Someday the world will need a hero, and you
linville@tuxdriver.com might be all we have. Be ready.
^ permalink raw reply
* Re: [PATCH 1/4] b43: N-PHY: update init tables
From: Larry Finger @ 2010-12-07 20:00 UTC (permalink / raw)
To: ikorot; +Cc: Hauke Mehrtens, linux-wireless, b43-dev
In-Reply-To: <5001512.1291751372533.JavaMail.root@elwamui-cypress.atl.sa.earthlink.net>
On 12/07/2010 01:49 PM, ikorot@earthlink.net wrote:
>> One reason is that these tables changed from non-zero to zero values between
>> Broadcom driver 4.174.64.19 and 5.10.56.46. As they might change again, I think
>> we should retain the full version.
>
> Is there a way to check for version of the driver?
> This way whoever uses old one won't be screwed...
That will not be a problem as no older version of b43 works at all with b43. To
help you understand this change, when the 4.174.64.19 Broadcom driver was
reverse-engineered, the tables had non-zero values. Rafel later compared the
trace dumps of b43 with the latest version of wl and found that the values are
now zero. When I rechecked driver 5.10.56.46, I found them to be zero there as
well and changed the specs.
Larry
^ permalink raw reply
* Re: [PATCH] mac80211: Fix BUG in pskb_expand_head when transmitting shared skbs
From: Johannes Berg @ 2010-12-07 20:04 UTC (permalink / raw)
To: John W. Linville; +Cc: Helmut Schaa, linux-wireless
In-Reply-To: <20101207194920.GH2700@tuxdriver.com>
On Tue, 2010-12-07 at 14:49 -0500, John W. Linville wrote:
> > It would be possible to avoid another resize of the copied skb by using
> > skb_copy_expand instead of skb_copy but that would make the patch more
> > complex. Also, shared skbs are a corner case right now, so the resize
> > shouldn't matter much.
> >
> > Cc: Johannes Berg <johannes@sipsolutions.net>
> > Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
>
> Is this intended for 2.6.37? It looks like it would apply there.
Yeah, and probably older stable too.
johannes
^ permalink raw reply
* Compat-wireless release for 2010-12-07 is baked
From: Compat-wireless cronjob account @ 2010-12-07 20:04 UTC (permalink / raw)
To: linux-wireless
>From git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next
46f22e8..031b7ba history -> origin/history
+ 8856646...a0dd059 master -> origin/master (forced update)
11e8896..771f8bc stable -> origin/stable
* [new tag] next-20101207 -> next-20101207
compat-wireless code metrics
750712 - Total upstream lines of code being pulled
2201 - backport code changes
1939 - backport code additions
262 - backport code deletions
6637 - backport from compat module
8838 - total backport code
1.1773 - % of code consists of backport work
1532 - Crap changes not yet posted
1489 - Crap additions not yet posted
43 - Crap deletions not yet posted
0.2041 - % of crap code
Base tree: linux-next.git
Base tree version: next-20101207
compat-wireless release: compat-wireless-20010-12-03-pc
^ permalink raw reply
* Use-after-free in mac80211?
From: Ben Greear @ 2010-12-07 20:17 UTC (permalink / raw)
To: linux-wireless@vger.kernel.org
Here's another crash after removing interfaces. I had 64 STA associated, each running around 64kbps
TCP traffic. I deleted the interfaces in groups of 6-8, trying to better understand the crashes
that I am seeing. I deleted quite a few before I managed to hit the crash below.
As far as I can tell, it is a use-after-free of 'sdata'. Note that the NPE is accessing the
0xe25e1944 pointer, which is the thing that the slub debug logic is complaining about.
The ath9k traces in the NPE stack end with a spin-lock, which I think allowed
another bit of code up in mac80211 to start running (I am using a pre-empt kernel)
config on 2-core processor.
I'm wondering if a pkt was queued up in rx logic somewhere and was delivered after it's
netdevice was deleted?
Also, I tested some more with a kernel a few days old, and it reproduces the
problem too (it just also hits the ath9k txctl->an bug first, which is why I
was previously ignoring it.) Now that I have fixed the txctl->an NPE, this
corruption on deleting interfaces is more obvious.
[root@ath9k-dev1 ~]# =============================================================================
BUG kmalloc-4096: Poison overwritten
-----------------------------------------------------------------------------
INFO: 0xe25e1944-0xe25e194b. First byte 0x4 instead of 0x6b
INFO: Allocated in kzalloc.clone.0+0xd/0xf age=2421565 cpu=1 pid=2805
INFO: Freed in netdev_release+0x30/0x33 age=848 cpu=1 pid=31581
INFO: Slab 0xf73dac00 objects=7 used=0 fp=0xe25e6120 flags=0x40004080
INFO: Object 0xe25e1030 @offset=4144 fp=0xe25e0000
Bytes b4 0xe25e1020: 24 7b 00 00 d4 d6 20 00 5a 5a 5a 5a 5a 5a 5a 5a ${..��..ZZZZZZZZ
Object 0xe25e1030: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1040: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1050: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1060: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1070: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1080: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1090: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e10a0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e10b0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e10c0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e10d0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e10e0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e10f0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1100: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1110: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1120: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1130: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1140: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1150: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1160: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1170: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1180: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1190: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e11a0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e11b0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e11c0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e11d0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e11e0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e11f0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1200: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1210: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1220: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1230: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1240: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1250: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1260: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1270: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1280: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1290: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e12a0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e12b0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e12c0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e12d0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e12e0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e12f0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1300: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1310: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1320: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1330: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1340: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1350: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1360: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1370: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1380: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1390: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e13a0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e13b0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e13c0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e13d0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e13e0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e13f0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1400: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1410: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1420: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1430: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1440: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1450: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1460: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1470: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1480: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1490: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e14a0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e14b0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e14c0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e14d0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e14e0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e14f0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1500: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1510: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1520: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1530: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1540: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1550: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1560: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1570: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1580: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1590: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e15a0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e15b0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e15c0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e15d0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e15e0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e15f0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1600: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1610: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1620: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1630: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1640: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1650: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1660: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1670: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1680: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1690: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e16a0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e16b0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e16c0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e16d0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e16e0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e16f0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1700: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1710: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1720: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1730: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1740: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1750: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1760: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1770: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1780: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1790: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e17a0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e17b0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e17c0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e17d0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e17e0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e17f0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1800: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1810: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1820: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1830: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1840: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1850: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1860: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1870: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1880: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1890: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e18a0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e18b0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e18c0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e18d0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e18e0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e18f0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1900: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1910: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1920: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1930: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1940: 6b 6b 6b 6b 04 09 69 e2 c8 f9 67 f4 6b 6b 6b 6b kkkk..i���g�kkkk
Object 0xe25e1950: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1960: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1970: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1980: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1990: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e19a0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e19b0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e19c0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e19d0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e19e0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e19f0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1a00: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1a10: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1a20: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1a30: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1a40: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1a50: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1a60: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1a70: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1a80: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1a90: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1aa0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1ab0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1ac0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1ad0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1ae0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1af0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1b00: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1b10: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1b20: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1b30: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1b40: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1b50: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1b60: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1b70: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1b80: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1b90: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1ba0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1bb0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1bc0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1bd0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1be0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1bf0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1c00: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1c10: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1c20: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1c30: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1c40: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1c50: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1c60: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1c70: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1c80: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1c90: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1ca0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1cb0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1cc0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1cd0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1ce0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1cf0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1d00: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1d10: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1d20: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1d30: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1d40: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1d50: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1d60: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1d70: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1d80: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1d90: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1da0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1db0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1dc0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1dd0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1de0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1df0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1e00: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1e10: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1e20: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1e30: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1e40: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1e50: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1e60: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1e70: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1e80: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1e90: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1ea0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1eb0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1ec0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1ed0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1ee0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1ef0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1f00: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1f10: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1f20: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1f30: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1f40: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1f50: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1f60: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1f70: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1f80: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1f90: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1fa0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1fb0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1fc0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1fd0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1fe0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e1ff0: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e2000: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e2010: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b kkkkkkkkkkkkkkkk
Object 0xe25e2020: 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b a5 kkkkkkkkkkkkkkkԥ
Redzone 0xe25e2030: bb bb bb bb ����
Padding 0xe25e2058: 5a 5a 5a 5a 5a 5a 5a 5a ZZZZZZZZ
Pid: 31762, comm: iw Tainted: P 2.6.37-rc4-wl+ #57
Call Trace:
[<784b5220>] print_trailer+0xf8/0x100
[<784b569e>] check_bytes_and_report+0xaa/0xec
[<784b579f>] check_object+0xbf/0x185
[<784b58c2>] __free_slab+0x5d/0xdb
[<784b596d>] discard_slab+0x2d/0x30
[<784b663e>] __slab_free+0x8b/0xae
[<787032da>] ? netdev_release+0x30/0x33
[<784b6a78>] kfree+0xaf/0xde
[<787032da>] ? netdev_release+0x30/0x33
[<787032da>] ? netdev_release+0x30/0x33
[<787032da>] netdev_release+0x30/0x33
[<78634001>] device_release+0x38/0x71
[<78590d79>] kobject_release+0x40/0x50
[<78590d39>] ? kobject_release+0x0/0x50
[<78591b09>] kref_put+0x39/0x42
[<78590cb4>] kobject_put+0x46/0x4c
[<78633e05>] ? put_device+0xf/0x11
[<786f30cc>] ? free_netdev+0xb1/0xb6
[<786f5f24>] netdev_run_todo+0x1c6/0x1da
[<787001c1>] rtnl_unlock+0x8/0xa
[<f8d23ab1>] nl80211_post_doit+0x30/0x34 [cfg80211]
[<f8d23a81>] ? nl80211_post_doit+0x0/0x34 [cfg80211]
[<7870f95a>] genl_rcv_msg+0x202/0x221
[<7870f758>] ? genl_rcv_msg+0x0/0x221
[<7870e614>] netlink_rcv_skb+0x30/0x77
[<7870f751>] genl_rcv+0x1b/0x22
[<7870e433>] netlink_unicast+0xbe/0x11a
[<786ee900>] ? copy_from_user+0x8/0xa
[<7870f004>] netlink_sendmsg+0x23e/0x255
[<786e8e48>] ? rcu_read_lock+0x0/0x35
[<786e6304>] __sock_sendmsg+0x54/0x5b
[<786e67ce>] sock_sendmsg+0x95/0xac
[<784a02c8>] ? might_fault+0x90/0x96
[<784a0282>] ? might_fault+0x4a/0x96
[<78597858>] ? _copy_from_user+0x31/0x115
[<786ee900>] ? copy_from_user+0x8/0xa
[<786eec4b>] ? verify_iovec+0x3e/0x77
[<786e6bf7>] sys_sendmsg+0x14d/0x19a
[<784bd563>] ? mem_cgroup_update_file_mapped+0xda/0xe2
[<7848e1c6>] ? unlock_page+0x40/0x43
[<784a25ca>] ? __do_fault+0x32d/0x359
[<784a2ec1>] ? handle_mm_fault+0x322/0x825
[<784a02c8>] ? might_fault+0x90/0x96
[<786e7f76>] sys_socketcall+0x227/0x289
[<784c7fb5>] ? path_put+0x15/0x18
[<784030dc>] sysenter_do_call+0x12/0x38
FIX kmalloc-4096: Restoring 0xe25e1944-0xe25e194b=0x6b
BUG: unable to handle kernel paging request at e25e1944
IP: [<7844070c>] __mod_timer+0x34/0x101
*pde = 013a3067 *pte = 6a5e1160
Oops: 0002 [#1] SMP DEBUG_PAGEALLOC
last sysfs file: /sys/devices/system/cpu/cpu1/cache/index1/shared_cpu_map
Modules linked in: michael_mic aes_i586 aes_generic 8021q garp stp llc fuse macvlan pktgen nfs lockd fscache nfs_acl auth_rpcgss sunrpc ipv6 uinput ar]
Pid: 5, comm: kworker/u:0 Tainted: P 2.6.37-rc4-wl+ #57 PDSBM/PDSBM
EIP: 0060:[<7844070c>] EFLAGS: 00010082 CPU: 0
EIP is at __mod_timer+0x34/0x101
EAX: f3adb9a4 EBX: e2690904 ECX: 78a3b900 EDX: e25e1944
ESI: 78a3b980 EDI: e27ea218 EBP: f500bd54 ESP: f500bd38
DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068
Process kworker/u:0 (pid: 5, ti=f500a000 task=f506a9c0 task.ti=f507e000)
Stack:
df585000 00215b80 f500bd8c 00000286 e2690904 00215b87 e27ea218 f500bd6c
78440d36 00000000 0000007f e2690500 e270b1a6 f500bd78 f919dd6e e2690500
f500bd8c f919dfb7 df049801 df049890 e27ea200 f500be04 f91965c2 df5850f0
Call Trace:
[<78440d36>] ? mod_timer+0x70/0x76
[<f919dd6e>] ? ieee80211_sta_reset_conn_monitor+0x2e/0x3b [mac80211]
[<f919dfb7>] ? ieee80211_sta_tx_notify+0x25/0x6b [mac80211]
[<f91965c2>] ? ieee80211_tx_status+0x355/0x7cb [mac80211]
[<784b5834>] ? check_object+0x154/0x185
[<7843c2f4>] ? local_bh_enable_ip+0x8/0xa
[<f92a82ca>] ? ath_tx_complete_buf+0x204/0x25a [ath9k]
[<f92a93d8>] ? ath_tx_complete_aggr+0x408/0x6d2 [ath9k]
[<f92a9473>] ? ath_tx_complete_aggr+0x4a3/0x6d2 [ath9k]
[<f92aa3ca>] ? ath_tx_tasklet+0x21b/0x2b6 [ath9k]
[<f92a59da>] ? ath9k_tasklet+0xb9/0x127 [ath9k]
[<7843bba5>] ? tasklet_action+0x88/0xe3
[<7843c121>] ? __do_softirq+0x85/0x142
[<7843c09c>] ? __do_softirq+0x0/0x142
<IRQ>
[<f91ab6a8>] ? ieee80211_tx_skb+0x42/0x44 [mac80211]
[<7843c2d4>] ? _local_bh_enable_ip+0x8e/0xa6
[<7843c301>] ? local_bh_enable+0xb/0xe
[<f91ab6a8>] ? ieee80211_tx_skb+0x42/0x44 [mac80211]
[<f919e5be>] ? ieee80211_send_nullfunc+0x37/0x3b [mac80211]
[<f919e5fc>] ? ieee80211_mgd_probe_ap_send+0x3a/0x92 [mac80211]
[<f919f755>] ? ieee80211_mgd_probe_ap+0xdf/0xed [mac80211]
[<f919f83e>] ? ieee80211_beacon_connection_loss_work+0xca/0xd2 [mac80211]
[<78446f63>] ? process_one_work+0x13e/0x2bf
[<78446fd4>] ? process_one_work+0x1af/0x2bf
[<78446f63>] ? process_one_work+0x13e/0x2bf
[<f919f774>] ? ieee80211_beacon_connection_loss_work+0x0/0xd2 [mac80211]
[<78448722>] ? worker_thread+0xf9/0x1bf
[<78448629>] ? worker_thread+0x0/0x1bf
[<7844b252>] ? kthread+0x62/0x67
[<7844b1f0>] ? kthread+0x0/0x67
[<784036c6>] ? kernel_thread_helper+0x6/0x1a
Code: ec 10 89 55 e8 83 78 10 00 75 04 0f 0b eb fe 8d 55 f0 88 4d e4 e8 9d ff ff ff 8a 4d e4 89 c6 8b 03 85 c0 74 25 8b 53 04 89 50 04 <89> 02 8b 43 0
EIP: [<7844070c>] __mod_timer+0x34/0x101 SS:ESP 0068:f500bd38
CR2: 00000000e25e1944
CTRL-A Z for help |115200 8N1 | NOR | Minicom 2.2 | VT102 | Online 00:41
--
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc http://www.candelatech.com
^ permalink raw reply
* Re: [PATCH] mac80211: Fix BUG in pskb_expand_head when transmitting shared skbs
From: Helmut Schaa @ 2010-12-07 20:39 UTC (permalink / raw)
To: John W. Linville; +Cc: linux-wireless, Johannes Berg
In-Reply-To: <20101207194920.GH2700@tuxdriver.com>
Am Dienstag, 7. Dezember 2010 schrieb John W. Linville:
> On Thu, Dec 02, 2010 at 06:44:09PM +0100, Helmut Schaa wrote:
> > mac80211 doesn't handle shared skbs correctly at the moment. As a result
> > a possible resize can trigger a BUG in pskb_expand_head.
> >
> > [ 676.030000] Kernel bug detected[#1]:
> > [ 676.030000] Cpu 0
> > [ 676.030000] $ 0 : 00000000 00000000 819662ff 00000002
> > [ 676.030000] $ 4 : 81966200 00000020 00000000 00000020
> > [ 676.030000] $ 8 : 819662e0 800043c0 00000002 00020000
> > [ 676.030000] $12 : 3b9aca00 00000000 00000000 00470000
> > [ 676.030000] $16 : 80ea2000 00000000 00000000 00000000
> > [ 676.030000] $20 : 818aa200 80ea2018 80ea2000 00000008
> > [ 676.030000] $24 : 00000002 800ace5c
> > [ 676.030000] $28 : 8199a000 8199bd20 81938f88 80f180d4
> > [ 676.030000] Hi : 0000026e
> > [ 676.030000] Lo : 0000757e
> > [ 676.030000] epc : 801245e4 pskb_expand_head+0x44/0x1d8
> > [ 676.030000] Not tainted
> > [ 676.030000] ra : 80f180d4 ieee80211_skb_resize+0xb0/0x114 [mac80211]
> > [ 676.030000] Status: 1000a403 KERNEL EXL IE
> > [ 676.030000] Cause : 10800024
> > [ 676.030000] PrId : 0001964c (MIPS 24Kc)
> > [ 676.030000] Modules linked in: mac80211_hwsim rt2800lib rt2x00soc rt2x00pci rt2x00lib mac80211 crc_itu_t crc_ccitt cfg80211 compat arc4 aes_generic deflate ecb cbc [last unloaded: rt2800pci]
> > [ 676.030000] Process kpktgend_0 (pid: 97, threadinfo=8199a000, task=81879f48, tls=00000000)
> > [ 676.030000] Stack : ffffffff 00000000 00000000 00000014 00000004 80ea2000 00000000 00000000
> > [ 676.030000] 818aa200 80f180d4 ffffffff 0000000a 81879f78 81879f48 81879f48 00000018
> > [ 676.030000] 81966246 80ea2000 818432e0 80f1a420 80203050 81814d98 00000001 81879f48
> > [ 676.030000] 81879f48 00000018 81966246 818432e0 0000001a 8199bdd4 0000001c 80f1b72c
> > [ 676.030000] 80203020 8001292c 80ef4aa2 7f10b55d 801ab5b8 81879f48 00000188 80005c90
> > [ 676.030000] ...
> > [ 676.030000] Call Trace:
> > [ 676.030000] [<801245e4>] pskb_expand_head+0x44/0x1d8
> > [ 676.030000] [<80f180d4>] ieee80211_skb_resize+0xb0/0x114 [mac80211]
> > [ 676.030000] [<80f1a420>] ieee80211_xmit+0x150/0x22c [mac80211]
> > [ 676.030000] [<80f1b72c>] ieee80211_subif_start_xmit+0x6f4/0x73c [mac80211]
> > [ 676.030000] [<8014361c>] pktgen_thread_worker+0xfac/0x16f8
> > [ 676.030000] [<8002ebe8>] kthread+0x7c/0x88
> > [ 676.030000] [<80008e0c>] kernel_thread_helper+0x10/0x18
> > [ 676.030000]
> > [ 676.030000]
> > [ 676.030000] Code: 24020001 10620005 2502001f <0200000d> 0804917a 00000000 2502001f 00441023 00531021
> >
> > Fix this by making a local copy of shared skbs prior to mangeling them.
> > To avoid copying the skb unnecessarily move the skb_copy call below the
> > checks that don't need write access to the skb.
> >
> > Also, move the assignment of nh_pos and h_pos below the skb_copy to point
> > to the correct skb.
> >
> > It would be possible to avoid another resize of the copied skb by using
> > skb_copy_expand instead of skb_copy but that would make the patch more
> > complex. Also, shared skbs are a corner case right now, so the resize
> > shouldn't matter much.
> >
> > Cc: Johannes Berg <johannes@sipsolutions.net>
> > Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
>
> Is this intended for 2.6.37? It looks like it would apply there.
Fine with me, however, the patch is based on wireless-testing.
Thanks,
Helmut
^ permalink raw reply
* Re: [PATCH 5/5] mac80211: fix issuing idle calls when device open count is 0
From: Johannes Berg @ 2010-12-07 20:54 UTC (permalink / raw)
To: Luis R. Rodriguez
Cc: Luis Rodriguez, linville@tuxdriver.com,
linux-wireless@vger.kernel.org, Amod Bodas, pstew@google.com,
stable@kernel.org
In-Reply-To: <AANLkTimfLGj1=BnRGvJVkP_Ge6KYAtCLcDpBsVoj9o_T@mail.gmail.com>
On Tue, 2010-12-07 at 12:49 -0800, Luis R. Rodriguez wrote:
> > In what situation? When you just suspend while things are up&running, or
> > if you suspend with interfaces down?
>
> I believe Paul was suspending when the interface is up and running.
Ok.
> > It doesn't make sense anyway, so
> > something's going on in the rest of the scan code -- we should be
> > canceling scans properly when going down and when suspending, well
> > before any of this becomes relevant.
>
> The issue might be we race to stop the device prior to canceling a
> scan. Do you see that being possible?
Not really, since we do scan_cancel() within suspend()... I guess I'd
like to find out why that doesn't do what I think it does.
johannes
^ permalink raw reply
* Re: [PATCH 5/5] mac80211: fix issuing idle calls when device open count is 0
From: Luis R. Rodriguez @ 2010-12-07 20:49 UTC (permalink / raw)
To: Johannes Berg
Cc: Luis Rodriguez, linville@tuxdriver.com,
linux-wireless@vger.kernel.org, Amod Bodas, pstew@google.com,
stable@kernel.org
In-Reply-To: <1291745567.3607.52.camel@jlt3.sipsolutions.net>
On Tue, Dec 7, 2010 at 10:12 AM, Johannes Berg
<johannes@sipsolutions.net> wrote:
> On Tue, 2010-12-07 at 10:04 -0800, Luis R. Rodriguez wrote:
>> On Tue, Dec 7, 2010 at 9:32 AM, Johannes Berg <johannes@sipsolutions.net> wrote:
>> > On Tue, 2010-12-07 at 07:59 -0800, Luis R. Rodriguez wrote:
>> >
>> >> @@ -301,7 +301,7 @@ static void __ieee80211_scan_completed_finish(struct ieee80211_hw *hw,
>> >> }
>> >>
>> >> mutex_lock(&local->mtx);
>> >> - ieee80211_recalc_idle(local);
>> >> + ieee80211_recalc_idle_force(local);
>> >> mutex_unlock(&local->mtx);
>> >
>> > This is the change that I don't think is necessary.
>>
>> Without this resume fails.
>
> In what situation? When you just suspend while things are up&running, or
> if you suspend with interfaces down?
I believe Paul was suspending when the interface is up and running.
> It doesn't make sense anyway, so
> something's going on in the rest of the scan code -- we should be
> canceling scans properly when going down and when suspending, well
> before any of this becomes relevant.
The issue might be we race to stop the device prior to canceling a
scan. Do you see that being possible?
Luis
^ permalink raw reply
* [PATCH 0/4] Make N-PHY support experimental
From: Rafał Miłecki @ 2010-12-07 20:55 UTC (permalink / raw)
To: linux-wireless, John W. Linville; +Cc: b43-dev, Rafał Miłecki
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 903 bytes --]
Finally, thanks for Larry and Francesco I got b43 working with BCM4328 chipset!
It's not perfectly stable yet, but scanning and associating to open network
works! It has to be tested, improved, there are some PHY errors from time to
time, but generally it works :)
Rafał Miłecki (4):
b43: N-PHY: silence warnings
b43: set TMS to work with current band width for N-PHY
b43: fix split of N-PHY devices into supported and not (based on PHY
rev)
b43: rename config option for N-PHY, drop BROKEN
drivers/net/wireless/b43/Kconfig | 13 +++++++------
drivers/net/wireless/b43/Makefile | 8 ++++----
drivers/net/wireless/b43/main.c | 12 +++++++++---
drivers/net/wireless/b43/phy_common.c | 9 ++++++++-
drivers/net/wireless/b43/phy_common.h | 2 ++
drivers/net/wireless/b43/phy_n.c | 16 ++++++----------
6 files changed, 36 insertions(+), 24 deletions(-)
^ permalink raw reply
* [PATCH 1/4] b43: N-PHY: silence warnings
From: Rafał Miłecki @ 2010-12-07 20:55 UTC (permalink / raw)
To: linux-wireless, John W. Linville; +Cc: b43-dev, Rafał Miłecki
In-Reply-To: <1291755360-21570-1-git-send-email-zajec5@gmail.com>
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
---
drivers/net/wireless/b43/phy_n.c | 8 ++++++--
1 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/drivers/net/wireless/b43/phy_n.c b/drivers/net/wireless/b43/phy_n.c
index f78f4e9..d41da7f 100644
--- a/drivers/net/wireless/b43/phy_n.c
+++ b/drivers/net/wireless/b43/phy_n.c
@@ -258,7 +258,8 @@ static void b43_nphy_tx_power_fix(struct b43_wldev *dev)
for (i = 0; i < 2; i++) {
if (dev->phy.rev >= 3) {
- /* TODO */
+ /* FIXME: support 5GHz */
+ txgain = b43_ntab_tx_gain_rev3plus_2ghz[txpi[i]];
radio_gain = (txgain >> 16) & 0x1FFFF;
} else {
txgain = b43_ntab_tx_gain_rev0_1_2[txpi[i]];
@@ -613,6 +614,8 @@ static void b43_nphy_rx_iq_coeffs(struct b43_wldev *dev, bool write,
}
}
+#if 0
+/* Ready but not used anywhere */
/* http://bcm-v4.sipsolutions.net/802.11/PHY/N/RxCalPhyCleanup */
static void b43_nphy_rx_cal_phy_cleanup(struct b43_wldev *dev, u8 core)
{
@@ -694,6 +697,7 @@ static void b43_nphy_rx_cal_phy_setup(struct b43_wldev *dev, u8 core)
b43_nphy_rf_control_intc_override(dev, 1, rxval, (core + 1));
b43_nphy_rf_control_intc_override(dev, 1, txval, (2 - core));
}
+#endif
/* http://bcm-v4.sipsolutions.net/802.11/PHY/N/CalcRxIqComp */
static void b43_nphy_calc_rx_iq_comp(struct b43_wldev *dev, u8 mask)
@@ -3088,7 +3092,7 @@ static int b43_nphy_rev2_cal_rx_iq(struct b43_wldev *dev,
u8 rfctl[2];
u8 afectl_core;
u16 tmp[6];
- u16 cur_hpf1, cur_hpf2, cur_lna;
+ u16 uninitialized_var(cur_hpf1), uninitialized_var(cur_hpf2), cur_lna;
u32 real, imag;
enum ieee80211_band band;
--
1.6.3.3
^ permalink raw reply related
* [PATCH 2/4] b43: set TMS to work with current band width for N-PHY
From: Rafał Miłecki @ 2010-12-07 20:55 UTC (permalink / raw)
To: linux-wireless, John W. Linville; +Cc: b43-dev, Rafał Miłecki
In-Reply-To: <1291755360-21570-1-git-send-email-zajec5@gmail.com>
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
---
drivers/net/wireless/b43/main.c | 6 ++++++
drivers/net/wireless/b43/phy_common.c | 7 +++++++
drivers/net/wireless/b43/phy_common.h | 2 ++
drivers/net/wireless/b43/phy_n.c | 7 -------
4 files changed, 15 insertions(+), 7 deletions(-)
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c
index fa48803..670fd7b 100644
--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
@@ -1150,6 +1150,12 @@ void b43_wireless_core_reset(struct b43_wldev *dev, u32 flags)
flags |= B43_TMSLOW_PHYCLKEN;
flags |= B43_TMSLOW_PHYRESET;
+ if (dev->phy.type == B43_PHYTYPE_N) {
+ if (b43_channel_type_is_40mhz(dev->phy.channel_type))
+ flags |= B43_TMSLOW_PHYCLKSPEED_160MHZ;
+ else
+ flags |= B43_TMSLOW_PHYCLKSPEED_80MHZ;
+ }
ssb_device_enable(dev->dev, flags);
msleep(2); /* Wait for the PLL to turn on. */
diff --git a/drivers/net/wireless/b43/phy_common.c b/drivers/net/wireless/b43/phy_common.c
index 0a91fc3..412f1b6 100644
--- a/drivers/net/wireless/b43/phy_common.c
+++ b/drivers/net/wireless/b43/phy_common.c
@@ -429,6 +429,13 @@ void b43_phyop_switch_analog_generic(struct b43_wldev *dev, bool on)
b43_write16(dev, B43_MMIO_PHY0, on ? 0 : 0xF4);
}
+
+bool b43_channel_type_is_40mhz(enum nl80211_channel_type channel_type)
+{
+ return (channel_type == NL80211_CHAN_HT40MINUS ||
+ channel_type == NL80211_CHAN_HT40PLUS);
+}
+
/* http://bcm-v4.sipsolutions.net/802.11/PHY/Cordic */
struct b43_c32 b43_cordic(int theta)
{
diff --git a/drivers/net/wireless/b43/phy_common.h b/drivers/net/wireless/b43/phy_common.h
index 2ed60e5..2401bee 100644
--- a/drivers/net/wireless/b43/phy_common.h
+++ b/drivers/net/wireless/b43/phy_common.h
@@ -436,6 +436,8 @@ int b43_phy_shm_tssi_read(struct b43_wldev *dev, u16 shm_offset);
*/
void b43_phyop_switch_analog_generic(struct b43_wldev *dev, bool on);
+bool b43_channel_type_is_40mhz(enum nl80211_channel_type channel_type);
+
struct b43_c32 b43_cordic(int theta);
#endif /* LINUX_B43_PHY_COMMON_H_ */
diff --git a/drivers/net/wireless/b43/phy_n.c b/drivers/net/wireless/b43/phy_n.c
index d41da7f..3517341 100644
--- a/drivers/net/wireless/b43/phy_n.c
+++ b/drivers/net/wireless/b43/phy_n.c
@@ -88,13 +88,6 @@ static void b43_nphy_rf_control_override(struct b43_wldev *dev, u16 field,
static void b43_nphy_rf_control_intc_override(struct b43_wldev *dev, u8 field,
u16 value, u8 core);
-static inline bool b43_channel_type_is_40mhz(
- enum nl80211_channel_type channel_type)
-{
- return (channel_type == NL80211_CHAN_HT40MINUS ||
- channel_type == NL80211_CHAN_HT40PLUS);
-}
-
void b43_nphy_set_rxantenna(struct b43_wldev *dev, int antenna)
{//TODO
}
--
1.6.3.3
^ permalink raw reply related
* [PATCH 4/4] b43: rename config option for N-PHY, drop BROKEN
From: Rafał Miłecki @ 2010-12-07 20:56 UTC (permalink / raw)
To: linux-wireless, John W. Linville; +Cc: b43-dev, Rafał Miłecki
In-Reply-To: <1291755360-21570-1-git-send-email-zajec5@gmail.com>
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
---
drivers/net/wireless/b43/Kconfig | 13 +++++++------
drivers/net/wireless/b43/Makefile | 8 ++++----
drivers/net/wireless/b43/main.c | 4 ++--
drivers/net/wireless/b43/phy_common.c | 2 +-
4 files changed, 14 insertions(+), 13 deletions(-)
diff --git a/drivers/net/wireless/b43/Kconfig b/drivers/net/wireless/b43/Kconfig
index 0a00d42..47033f6 100644
--- a/drivers/net/wireless/b43/Kconfig
+++ b/drivers/net/wireless/b43/Kconfig
@@ -86,15 +86,16 @@ config B43_PIO
select SSB_BLOCKIO
default y
-config B43_NPHY
- bool "Pre IEEE 802.11n support (BROKEN)"
- depends on B43 && EXPERIMENTAL && BROKEN
+config B43_PHY_N
+ bool "Support for 802.11n (N-PHY) devices (EXPERIMENTAL)"
+ depends on B43 && EXPERIMENTAL
---help---
- Support for the IEEE 802.11n draft.
+ Support for the N-PHY.
- THIS IS BROKEN AND DOES NOT WORK YET.
+ This enables support for devices with N-PHY revision up to 2.
- SAY N.
+ Say N if you expect high stability and performance. Saying Y will not
+ affect other devices support and may provide support for basic needs.
config B43_PHY_LP
bool "Support for low-power (LP-PHY) devices (EXPERIMENTAL)"
diff --git a/drivers/net/wireless/b43/Makefile b/drivers/net/wireless/b43/Makefile
index 69d4af0..cef334a 100644
--- a/drivers/net/wireless/b43/Makefile
+++ b/drivers/net/wireless/b43/Makefile
@@ -1,12 +1,12 @@
b43-y += main.o
b43-y += tables.o
-b43-$(CONFIG_B43_NPHY) += tables_nphy.o
-b43-$(CONFIG_B43_NPHY) += radio_2055.o
-b43-$(CONFIG_B43_NPHY) += radio_2056.o
+b43-$(CONFIG_B43_PHY_N) += tables_nphy.o
+b43-$(CONFIG_B43_PHY_N) += radio_2055.o
+b43-$(CONFIG_B43_PHY_N) += radio_2056.o
b43-y += phy_common.o
b43-y += phy_g.o
b43-y += phy_a.o
-b43-$(CONFIG_B43_NPHY) += phy_n.o
+b43-$(CONFIG_B43_PHY_N) += phy_n.o
b43-$(CONFIG_B43_PHY_LP) += phy_lp.o
b43-$(CONFIG_B43_PHY_LP) += tables_lpphy.o
b43-y += sysfs.o
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c
index 4d97aac..9ae3f61 100644
--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
@@ -4052,7 +4052,7 @@ static int b43_phy_versioning(struct b43_wldev *dev)
if (phy_rev > 9)
unsupported = 1;
break;
-#ifdef CONFIG_B43_NPHY
+#ifdef CONFIG_B43_PHY_N
case B43_PHYTYPE_N:
if (phy_rev > 2)
unsupported = 1;
@@ -5097,7 +5097,7 @@ static void b43_print_driverinfo(void)
#ifdef CONFIG_B43_PCMCIA
feat_pcmcia = "M";
#endif
-#ifdef CONFIG_B43_NPHY
+#ifdef CONFIG_B43_PHY_N
feat_nphy = "N";
#endif
#ifdef CONFIG_B43_LEDS
diff --git a/drivers/net/wireless/b43/phy_common.c b/drivers/net/wireless/b43/phy_common.c
index 412f1b6..b5c5ce9 100644
--- a/drivers/net/wireless/b43/phy_common.c
+++ b/drivers/net/wireless/b43/phy_common.c
@@ -50,7 +50,7 @@ int b43_phy_allocate(struct b43_wldev *dev)
phy->ops = &b43_phyops_g;
break;
case B43_PHYTYPE_N:
-#ifdef CONFIG_B43_NPHY
+#ifdef CONFIG_B43_PHY_N
phy->ops = &b43_phyops_n;
#endif
break;
--
1.6.3.3
^ permalink raw reply related
* Re: [PATCH 5/5] mac80211: fix issuing idle calls when device open count is 0
From: Luis R. Rodriguez @ 2010-12-07 20:56 UTC (permalink / raw)
To: Johannes Berg
Cc: Luis Rodriguez, linville@tuxdriver.com,
linux-wireless@vger.kernel.org, Amod Bodas, pstew@google.com,
stable@kernel.org
In-Reply-To: <1291755274.3607.59.camel@jlt3.sipsolutions.net>
On Tue, Dec 7, 2010 at 12:54 PM, Johannes Berg
<johannes@sipsolutions.net> wrote:
> On Tue, 2010-12-07 at 12:49 -0800, Luis R. Rodriguez wrote:
>
>> > In what situation? When you just suspend while things are up&running, or
>> > if you suspend with interfaces down?
>>
>> I believe Paul was suspending when the interface is up and running.
>
> Ok.
>
>> > It doesn't make sense anyway, so
>> > something's going on in the rest of the scan code -- we should be
>> > canceling scans properly when going down and when suspending, well
>> > before any of this becomes relevant.
>>
>> The issue might be we race to stop the device prior to canceling a
>> scan. Do you see that being possible?
>
> Not really, since we do scan_cancel() within suspend()... I guess I'd
> like to find out why that doesn't do what I think it does.
Well lets see, this is only reproducible with the new DBUS APIs, and
frankly I am not sure what these things do. Is it possible we have a
race between how it brings down an interface for suspend and canceling
a scan?
Luis
^ permalink raw reply
* Re: [PATCH 5/5] mac80211: fix issuing idle calls when device open count is 0
From: Johannes Berg @ 2010-12-07 20:57 UTC (permalink / raw)
To: Luis R. Rodriguez
Cc: Luis Rodriguez, linville@tuxdriver.com,
linux-wireless@vger.kernel.org, Amod Bodas, pstew@google.com,
stable@kernel.org
In-Reply-To: <AANLkTik-H0WXWjGjMuc_pE1vvbxFSoD2BoXVG3Wqcorw@mail.gmail.com>
On Tue, 2010-12-07 at 12:56 -0800, Luis R. Rodriguez wrote:
> > Not really, since we do scan_cancel() within suspend()... I guess I'd
> > like to find out why that doesn't do what I think it does.
>
> Well lets see, this is only reproducible with the new DBUS APIs, and
> frankly I am not sure what these things do. Is it possible we have a
> race between how it brings down an interface for suspend and canceling
> a scan?
But both suspend and do_stop should run under RTNL.
johannes
^ permalink raw reply
* Re: [PATCH 1/3] ath5k: Fix beaconing in mesh mode
From: John W. Linville @ 2010-12-07 20:58 UTC (permalink / raw)
To: Javier Cardona
Cc: Steve Derosier, devel, linux-wireless, Jiri Slaby,
Nick Kossifidis, Luis R. Rodriguez, Bob Copeland
In-Reply-To: <1291169919-3867-2-git-send-email-javier@cozybit.com>
Missing Signed-off-by...
On Tue, Nov 30, 2010 at 06:18:37PM -0800, Javier Cardona wrote:
> This patch fixes the oops below when attempting to bring up a mesh
> interface on ath5k hardware.
>
> [ 128.933099] kernel BUG at drivers/net/wireless/ath/ath5k/base.c:197!
> [ 128.933099] invalid opcode: 0000 [#1]
> (...)
> [ 128.933099] Call Trace:
> [ 128.933099] [<c83b77fa>] ? ath5k_beacon_update+0x57/0x1f8 [ath5k]
> [ 128.933099] [<c02d9a40>] ? __sysfs_add_one+0x28/0x76
> [ 128.933099] [<c83b830e>] ? ath5k_bss_info_changed+0x13f/0x173
> [ath5k]
> [ 128.933099] [<c82ff629>] ? ieee80211_config_beacon+0xc0/0x17e
> [mac80211]
> [ 128.933099] [<c82f073e>] ?
> ieee80211_bss_info_change_notify+0x182/0x18b [mac80211]
> [ 128.933099] [<c83b81cf>] ? ath5k_bss_info_changed+0x0/0x173 [ath5k]
> [ 128.933099] [<c82ff6d6>] ? ieee80211_config_beacon+0x16d/0x17e
> [mac80211]
> [ 128.933099] [<c82ff753>] ? ieee80211_add_beacon+0x34/0x39 [mac80211]
> [ 128.933099] [<c830a4ed>] ? ieee80211s_init+0xf8/0x10f [mac80211]
> [ 128.933099] [<c830a5df>] ? ieee80211_mesh_init_sdata+0xdb/0x154 [mac80211]
> ---
> drivers/net/wireless/ath/ath5k/base.c | 8 +++++---
> 1 files changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c
> index a8d380a..73c7118 100644
> --- a/drivers/net/wireless/ath/ath5k/base.c
> +++ b/drivers/net/wireless/ath/ath5k/base.c
> @@ -1921,8 +1921,9 @@ ath5k_beacon_send(struct ath5k_softc *sc)
> /* NB: hw still stops DMA, so proceed */
> }
>
> - /* refresh the beacon for AP mode */
> - if (sc->opmode == NL80211_IFTYPE_AP)
> + /* refresh the beacon for AP or MESH mode */
> + if (sc->opmode == NL80211_IFTYPE_AP ||
> + sc->opmode == NL80211_IFTYPE_MESH_POINT)
> ath5k_beacon_update(sc->hw, vif);
>
> ath5k_hw_set_txdp(ah, sc->bhalq, bf->daddr);
> @@ -2826,7 +2827,8 @@ static int ath5k_add_interface(struct ieee80211_hw *hw,
>
> /* Assign the vap/adhoc to a beacon xmit slot. */
> if ((avf->opmode == NL80211_IFTYPE_AP) ||
> - (avf->opmode == NL80211_IFTYPE_ADHOC)) {
> + (avf->opmode == NL80211_IFTYPE_ADHOC) ||
> + (avf->opmode == NL80211_IFTYPE_MESH_POINT)) {
> int slot;
>
> WARN_ON(list_empty(&sc->bcbuf));
> --
> 1.7.1
>
> --
> 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
>
--
John W. Linville Someday the world will need a hero, and you
linville@tuxdriver.com might be all we have. Be ready.
^ permalink raw reply
* Re: [PATCH 3/3] ath5k: Put the right tsf value in mesh beacons
From: John W. Linville @ 2010-12-07 20:57 UTC (permalink / raw)
To: Javier Cardona
Cc: Steve Derosier, devel, linux-wireless, Jiri Slaby,
Nick Kossifidis, Luis R. Rodriguez, Bob Copeland
In-Reply-To: <1291169919-3867-4-git-send-email-javier@cozybit.com>
Missing Signed-off-by...
On Tue, Nov 30, 2010 at 06:18:39PM -0800, Javier Cardona wrote:
> ---
> drivers/net/wireless/ath/ath5k/base.c | 3 ++-
> 1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c
> index 44f3050..6b06754 100644
> --- a/drivers/net/wireless/ath/ath5k/base.c
> +++ b/drivers/net/wireless/ath/ath5k/base.c
> @@ -1889,7 +1889,8 @@ ath5k_beacon_send(struct ath5k_softc *sc)
> sc->bmisscount = 0;
> }
>
> - if (sc->opmode == NL80211_IFTYPE_AP && sc->num_ap_vifs > 1) {
> + if ((sc->opmode == NL80211_IFTYPE_AP && sc->num_ap_vifs > 1) ||
> + sc->opmode == NL80211_IFTYPE_MESH_POINT) {
> u64 tsf = ath5k_hw_get_tsf64(ah);
> u32 tsftu = TSF_TO_TU(tsf);
> int slot = ((tsftu % sc->bintval) * ATH_BCBUF) / sc->bintval;
> --
> 1.7.1
>
>
--
John W. Linville Someday the world will need a hero, and you
linville@tuxdriver.com might be all we have. Be ready.
^ permalink raw reply
* Re: ath5k: Fixes for mesh operation
From: John W. Linville @ 2010-12-07 20:57 UTC (permalink / raw)
To: Javier Cardona
Cc: Steve Derosier, devel, linux-wireless, Jiri Slaby,
Nick Kossifidis, Luis R. Rodriguez, Bob Copeland
In-Reply-To: <AANLkTik5bGXyWsz0CeVemZ-s9uWC+SOyJNzfxr1vcoGt@mail.gmail.com>
Waiting on davem to process my last pull request...
On Tue, Dec 07, 2010 at 11:12:55AM -0800, Javier Cardona wrote:
> John,
>
> Are you waiting for acks from ath5k maintainers to apply this series?
>
> https://patchwork.kernel.org/patch/369461/
> https://patchwork.kernel.org/patch/369471/
> https://patchwork.kernel.org/patch/369481/
>
> Thanks!
>
> Javier
>
> On Tue, Nov 30, 2010 at 6:18 PM, Javier Cardona <javier@cozybit.com> wrote:
> > After applying these fixes we were able to successfully bring up mesh
> > interfaces and establish peer links with ath9k devices.
> >
> > One issue still looms with both athX drivers: you have to issue a scan to get
> > mesh beaconing started. Keep that in mind if you try and test these fixes.
> >
> >
>
>
>
> --
> Javier Cardona
> cozybit Inc.
> http://www.cozybit.com
> --
> 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
>
--
John W. Linville Someday the world will need a hero, and you
linville@tuxdriver.com might be all we have. Be ready.
^ permalink raw reply
* Re: [PATCH 2/3] ath5k: Prevent mesh interfaces from being counted as ad-hoc
From: John W. Linville @ 2010-12-07 20:58 UTC (permalink / raw)
To: Javier Cardona
Cc: Steve Derosier, devel, linux-wireless, Jiri Slaby,
Nick Kossifidis, Luis R. Rodriguez, Bob Copeland
In-Reply-To: <1291169919-3867-3-git-send-email-javier@cozybit.com>
Missing Signed-off-by...
On Tue, Nov 30, 2010 at 06:18:38PM -0800, Javier Cardona wrote:
> This results in an erroneus num_adhoc_vifs count, as the this counter
> was incremented but not decremented for mesh interfaces.
> ---
> drivers/net/wireless/ath/ath5k/base.c | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c
> index 73c7118..44f3050 100644
> --- a/drivers/net/wireless/ath/ath5k/base.c
> +++ b/drivers/net/wireless/ath/ath5k/base.c
> @@ -2847,7 +2847,7 @@ static int ath5k_add_interface(struct ieee80211_hw *hw,
> sc->bslot[avf->bslot] = vif;
> if (avf->opmode == NL80211_IFTYPE_AP)
> sc->num_ap_vifs++;
> - else
> + else if (avf->opmode == NL80211_IFTYPE_ADHOC)
> sc->num_adhoc_vifs++;
> }
>
> --
> 1.7.1
>
> --
> 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
>
--
John W. Linville Someday the world will need a hero, and you
linville@tuxdriver.com might be all we have. Be ready.
^ permalink raw reply
* Re: [PATCH 0/4] Make N-PHY support experimental
From: Johannes Berg @ 2010-12-07 21:04 UTC (permalink / raw)
To: Rafał Miłecki; +Cc: linux-wireless, John W. Linville, b43-dev
In-Reply-To: <1291755360-21570-1-git-send-email-zajec5@gmail.com>
On Tue, 2010-12-07 at 21:55 +0100, Rafał Miłecki wrote:
> Finally, thanks for Larry and Francesco I got b43 working with BCM4328 chipset!
>
> It's not perfectly stable yet, but scanning and associating to open network
> works! It has to be tested, improved, there are some PHY errors from time to
> time, but generally it works :)
Wow! Congrats to all involved!!
johannes
^ permalink raw reply
* [PATCH 3/4] b43: fix split of N-PHY devices into supported and not (based on PHY rev)
From: Rafał Miłecki @ 2010-12-07 20:55 UTC (permalink / raw)
To: linux-wireless, John W. Linville; +Cc: b43-dev, Rafał Miłecki
In-Reply-To: <1291755360-21570-1-git-send-email-zajec5@gmail.com>
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
---
drivers/net/wireless/b43/main.c | 2 +-
drivers/net/wireless/b43/phy_n.c | 1 -
2 files changed, 1 insertions(+), 2 deletions(-)
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c
index 670fd7b..4d97aac 100644
--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
@@ -4054,7 +4054,7 @@ static int b43_phy_versioning(struct b43_wldev *dev)
break;
#ifdef CONFIG_B43_NPHY
case B43_PHYTYPE_N:
- if (phy_rev > 4)
+ if (phy_rev > 2)
unsupported = 1;
break;
#endif
diff --git a/drivers/net/wireless/b43/phy_n.c b/drivers/net/wireless/b43/phy_n.c
index 3517341..61875c8 100644
--- a/drivers/net/wireless/b43/phy_n.c
+++ b/drivers/net/wireless/b43/phy_n.c
@@ -3515,7 +3515,6 @@ int b43_phy_initn(struct b43_wldev *dev)
if (phy->rev >= 3)
b43_nphy_spur_workaround(dev);
- b43err(dev->wl, "IEEE 802.11n devices are not supported, yet.\n");
return 0;
}
--
1.6.3.3
^ permalink raw reply related
* Re: [PATCH 2/4] b43: set TMS to work with current band width for N-PHY
From: Michael Büsch @ 2010-12-07 21:08 UTC (permalink / raw)
To: Rafał Miłecki; +Cc: linux-wireless, John W. Linville, b43-dev
In-Reply-To: <1291755360-21570-3-git-send-email-zajec5@gmail.com>
On Tue, 2010-12-07 at 21:55 +0100, Rafał Miłecki wrote:
> Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
> ---
> drivers/net/wireless/b43/main.c | 6 ++++++
> drivers/net/wireless/b43/phy_common.c | 7 +++++++
> drivers/net/wireless/b43/phy_common.h | 2 ++
> drivers/net/wireless/b43/phy_n.c | 7 -------
> 4 files changed, 15 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c
> index fa48803..670fd7b 100644
> --- a/drivers/net/wireless/b43/main.c
> +++ b/drivers/net/wireless/b43/main.c
> @@ -1150,6 +1150,12 @@ void b43_wireless_core_reset(struct b43_wldev *dev, u32 flags)
>
> flags |= B43_TMSLOW_PHYCLKEN;
> flags |= B43_TMSLOW_PHYRESET;
> + if (dev->phy.type == B43_PHYTYPE_N) {
> + if (b43_channel_type_is_40mhz(dev->phy.channel_type))
Is channel_type already set at this time?
> + flags |= B43_TMSLOW_PHYCLKSPEED_160MHZ;
> + else
> + flags |= B43_TMSLOW_PHYCLKSPEED_80MHZ;
> + }
--
Greetings Michael.
^ permalink raw reply
* Re: [PATCH 2/3] ath9k: Fix power save count imbalance on ath_radio_enable()
From: John W. Linville @ 2010-12-07 21:01 UTC (permalink / raw)
To: Luis R. Rodriguez; +Cc: johannes, linux-wireless, amod.bodas, pstew, stable
In-Reply-To: <AANLkTimd5ZKCWjDaVQcqx9t=_zoJC+UC5_4nkRQ-Uq8R@mail.gmail.com>
On Fri, Dec 03, 2010 at 05:34:08PM -0800, Luis R. Rodriguez wrote:
> On Fri, Dec 3, 2010 at 5:20 PM, Luis R. Rodriguez
> <lrodriguez@atheros.com> wrote:
> > Upon a failure we never call ath9k_ps_restore() on ath_radio_enable(),
> > this will throw off the sc->ps_usecount. When the sc->ps_usecount
> > is > 0 we never put the chip to full sleep. This drains battery,
> > and will also make the chip fail upon resume with:
> >
> > ath: Starting driver with initial channel: 5745 MHz
> > ath: timeout (100000 us) on reg 0x7000: 0xdeadbeef & 0x00000003 != 0x00000000
> >
> > This would make the chip useless upon resume.
> >
> > I cannot prove this can happen but in theory it is so best to
> > avoid this race completely and not have users complain about
> > a broken device after resume.
> >
> > Cc: stable@kernel.org
> > Cc: Paul Stewart <pstew@google.com>
> > Cc: Amod Bodas <amod.bodas@atheros.com>
> > Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
>
> John, this one is for you, sorry I failed to send it to you. And
> Johannes, sorry, I forgot to remove you from my send script :)
So, this is for 2.6.37? FWIW, it was the only PATCH in a series
of RFCs...
John
--
John W. Linville Someday the world will need a hero, and you
linville@tuxdriver.com might be all we have. Be ready.
^ permalink raw reply
* Re: [PATCH 2/3] ath9k: Fix power save count imbalance on ath_radio_enable()
From: Luis R. Rodriguez @ 2010-12-07 21:24 UTC (permalink / raw)
To: John W. Linville
Cc: Luis Rodriguez, johannes@sipsolutions.net,
linux-wireless@vger.kernel.org, Amod Bodas, pstew@google.com,
stable@kernel.org
In-Reply-To: <20101207210130.GM2700@tuxdriver.com>
On Tue, Dec 07, 2010 at 01:01:30PM -0800, John W. Linville wrote:
> On Fri, Dec 03, 2010 at 05:34:08PM -0800, Luis R. Rodriguez wrote:
> > On Fri, Dec 3, 2010 at 5:20 PM, Luis R. Rodriguez
> > <lrodriguez@atheros.com> wrote:
> > > Upon a failure we never call ath9k_ps_restore() on ath_radio_enable(),
> > > this will throw off the sc->ps_usecount. When the sc->ps_usecount
> > > is > 0 we never put the chip to full sleep. This drains battery,
> > > and will also make the chip fail upon resume with:
> > >
> > > ath: Starting driver with initial channel: 5745 MHz
> > > ath: timeout (100000 us) on reg 0x7000: 0xdeadbeef & 0x00000003 != 0x00000000
> > >
> > > This would make the chip useless upon resume.
> > >
> > > I cannot prove this can happen but in theory it is so best to
> > > avoid this race completely and not have users complain about
> > > a broken device after resume.
> > >
> > > Cc: stable@kernel.org
> > > Cc: Paul Stewart <pstew@google.com>
> > > Cc: Amod Bodas <amod.bodas@atheros.com>
> > > Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
> >
> > John, this one is for you, sorry I failed to send it to you. And
> > Johannes, sorry, I forgot to remove you from my send script :)
>
> So, this is for 2.6.37?
Yes.
> FWIW, it was the only PATCH in a series of RFCs...
Thanks, yes, I noted this on my PATCH 0 cover letter. If you want
you can disrecard this though and just consider the PATCH I posted
in my new series. Its in that series as well, but let me just iron
out that series first, please ignore that series as well for now.
Luis
^ permalink raw reply
* Re: [PATCH 5/5] mac80211: fix issuing idle calls when device open count is 0
From: Luis R. Rodriguez @ 2010-12-07 21:28 UTC (permalink / raw)
To: Johannes Berg
Cc: Luis Rodriguez, linville@tuxdriver.com,
linux-wireless@vger.kernel.org, Amod Bodas, pstew@google.com,
stable@kernel.org
In-Reply-To: <1291755472.3607.60.camel@jlt3.sipsolutions.net>
On Tue, Dec 07, 2010 at 12:57:52PM -0800, Johannes Berg wrote:
> On Tue, 2010-12-07 at 12:56 -0800, Luis R. Rodriguez wrote:
>
> > > Not really, since we do scan_cancel() within suspend()... I guess I'd
> > > like to find out why that doesn't do what I think it does.
> >
> > Well lets see, this is only reproducible with the new DBUS APIs, and
> > frankly I am not sure what these things do. Is it possible we have a
> > race between how it brings down an interface for suspend and canceling
> > a scan?
>
> But both suspend and do_stop should run under RTNL.
Paul, can you try this instead of these two patches. What this
does is it assumes mac80211 will tell us that stop() implies
to disable the radio as explained in the documentation and that
any further operations will not happen, and that idle settings
prior to mac80211 issuing a start() callback are the responsibility
of the driver to ensure integrity on. Because of this we ensure
idle on stop() as no other interfaces are possible enabled and
we also ensure it to be idle on resume.
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
index 97ddb32..eb98f7f 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -1337,8 +1337,8 @@ static void ath9k_stop(struct ieee80211_hw *hw)
ath9k_ps_restore(sc);
- /* Finally, put the chip in FULL SLEEP mode */
- ath9k_setpower(sc, ATH9K_PM_FULL_SLEEP);
+ sc->ps_idle = true;
+ ath_radio_disable(sc, hw);
sc->sc_flags |= SC_OP_INVALID;
diff --git a/drivers/net/wireless/ath/ath9k/pci.c b/drivers/net/wireless/ath/ath9k/pci.c
index 09f69a9..47334f3 100644
--- a/drivers/net/wireless/ath/ath9k/pci.c
+++ b/drivers/net/wireless/ath/ath9k/pci.c
@@ -297,6 +297,9 @@ static int ath_pci_resume(struct device *device)
AR_GPIO_OUTPUT_MUX_AS_OUTPUT);
ath9k_hw_set_gpio(sc->sc_ah, sc->sc_ah->led_pin, 1);
+ sc->ps_idle = true;
+ ath_radio_disable(sc, hw);
+
return 0;
}
^ permalink raw reply related
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox