Thread (20 messages) 20 messages, 6 authors, 2011-12-01

Re: [3.2-rc3] 100% CPU usage while in del_timer_sync from iwl3945_rs_free_sta

From: Eliad Peller <hidden>
Date: 2011-12-01 14:30:46
Also in: lkml

On Thu, Dec 1, 2011 at 4:05 PM, Michal Hocko [off-list ref] wrote:
On Thu 01-12-11 13:44:40, Michal Hocko wrote:
quoted
On Thu 01-12-11 12:59:12, Stanislaw Gruszka wrote:
quoted
On Thu, Dec 01, 2011 at 11:55:38AM +0100, Michal Hocko wrote:
quoted
[  349.316070] iwl3945_rs_free_sta rs_sta f4be1ac0
[  349.316076] ------------[ cut here ]------------
[  349.316097] WARNING: at drivers/net/wireless/iwlegacy/iwl-3945-rs.c:438 iwl3945_rs_free_sta+0x33/0x42 [iwl3945]()
Johannes pointed on irc that this problem is most likely caused by:

commit f785d83a19bca326f79d127a413e35769afc0105
Author: Eliad Peller [off-list ref]
Date:   Mon Aug 8 16:50:22 2011 +0300

    mac80211: clear sta.drv_priv on reconfiguration

Michal, could you confirm that? If that is the root of the problem, we
need patch for iwlegacy (and iwlwifi) that allocate separate memory for
rc structures.
Should I just revert it?
Reverted and guess what ;)
Yeah, it works. So feel free to add
Reported-adn-Tested-by: Michal Hocko [off-list ref]
to the revert.
cool. after giving it a second look, i agree with Stanislaw - let's
continue with the revert.
Anyway, I have really no idea about the 80211 stack but the patch
doesn't seem to be correct from the layering POV. Why should generic
layer clear something that is driver private data (or at least the
naming suggests that it is driver specific data)?
the driver should "know" the station (and its private data) only
between the .sta_add() and .sta_remove() callbacks.
on suspend, we do call sta_remove(), so it's valid to clear the private data.

the problem is that the rate control also uses the same private data,
and is valid also after sta_remove() was called. i think the right
solution is to split the generic private data and the rate control
private data.

Eliad.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help