Search Linux Wireless

Re: v3.1 - WARNING: at net/mac80211/util.c:540 ieee80211_can_queue_work

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 2011-11-04 at 20:49 +0100, Thomas Meyer wrote:
> Am Freitag, den 04.11.2011, 20:25 +0100 schrieb Johannes Berg:
> > A little more ... anything really ... would be helpful.
> > 
> 
> First time that I ever saw this WARNING. happened after 9 days uptime,
> while suspending the machine to ram.

I don't suppose you can reproduce, can you? :-)

> > > [281558.898592] Pid: 0, comm: swapper Tainted: G        W   3.1.0 #3
> > > [281558.898595] Call Trace:
> > > [281558.898597]  <IRQ>  [<ffffffff8103024a>] warn_slowpath_common+0x7a/0xb0
> > > [281558.898610]  [<ffffffff8105731d>] ? clockevents_program_event+0x5d/0xa0
> > > [281558.898614]  [<ffffffff81030321>] warn_slowpath_fmt+0x41/0x50
> > > [281558.898619]  [<ffffffff81058259>] ? tick_program_event+0x19/0x20
> > > [281558.898624]  [<ffffffff8104d46e>] ? hrtimer_interrupt+0xfe/0x1f0
> > > [281558.898633]  [<ffffffffa017fe45>] ieee80211_can_queue_work+0x35/0x40 [mac80211]
> > > [281558.898642]  [<ffffffffa017ff9b>] ieee80211_queue_work+0x1b/0x40 [mac80211]
> > > [281558.898651]  [<ffffffffa016bfdf>] ieee80211_sta_timer+0x2f/0x40 [mac80211]
> > > [281558.898657]  [<ffffffff8103bb8f>] run_timer_softirq+0xef/0x210
> > > [281558.898666]  [<ffffffffa016bfb0>] ? ieee80211_sta_bcn_mon_timer+0x40/0x40 [mac80211]

Interestingly, sta_bcn_mon_timer was there -- but I don't see how *that*
caused it. I do, however, see how conn_mon_timer could cause it:

conn_mon_timer fired and queued monitor_work
you suspended, invoking sta_quiesce, which *first* disables the timer
and *then* cancels monitor_work synchronously -- that will run
monitor_work and re-enable the timer ...

Mostly theoretical, if you can reproduce it (which I very much doubt)
you could try the patch below.

johannes

--- wireless-testing.orig/net/mac80211/mlme.c	2011-11-09 12:05:44.000000000 +0100
+++ wireless-testing/net/mac80211/mlme.c	2011-11-09 12:07:11.000000000 +0100
@@ -2288,6 +2288,7 @@ void ieee80211_sta_quiesce(struct ieee80
 
 	cancel_work_sync(&ifmgd->request_smps_work);
 
+	cancel_work_sync(&ifmgd->monitor_work);
 	cancel_work_sync(&ifmgd->beacon_connection_loss_work);
 	if (del_timer_sync(&ifmgd->timer))
 		set_bit(TMR_RUNNING_TIMER, &ifmgd->timers_running);
@@ -2296,7 +2297,6 @@ void ieee80211_sta_quiesce(struct ieee80
 	if (del_timer_sync(&ifmgd->chswitch_timer))
 		set_bit(TMR_RUNNING_CHANSW, &ifmgd->timers_running);
 
-	cancel_work_sync(&ifmgd->monitor_work);
 	/* these will just be re-established on connection */
 	del_timer_sync(&ifmgd->conn_mon_timer);
 	del_timer_sync(&ifmgd->bcn_mon_timer);


--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux