diff mbox

rmmod rt2800pci broken since compat-wireless-2011-04-21 - CPU load is 1

Message ID 4DC50FDA.3020700@gmail.com (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Gertjan van Wingerde May 7, 2011, 9:24 a.m. UTC
Hi Andreas,

On 05/06/11 21:44, Andreas Hartmann wrote:
> Hello,
> 
> since compat-wireless-2011-04-21 (running with kernel 2.6.34.9),
> removing of rt2800pci is broken: rmmod hangs and system load goes up to
> 1 on one CPU.
> 
> Loading:
> 
> [ 5951.248390] Compat-wireless backport release:
> compat-wireless-2011-04-14-3-g77081fd
> [ 5951.248402] Backport based on linux-next.git next-20110421
> [ 5951.293158] cfg80211: Calling CRDA to update world regulatory domain
> [ 5951.316293] cfg80211: World regulatory domain updated:
> [ 5951.316300] cfg80211:     (start_freq - end_freq @ bandwidth),
> (max_antenna_gain, max_eirp)
> [ 5951.316307] cfg80211:     (2402000 KHz - 2472000 KHz @ 40000 KHz),
> (300 mBi, 2000 mBm)
> [ 5951.316313] cfg80211:     (2457000 KHz - 2482000 KHz @ 20000 KHz),
> (300 mBi, 2000 mBm)
> [ 5951.316319] cfg80211:     (2474000 KHz - 2494000 KHz @ 20000 KHz),
> (300 mBi, 2000 mBm)
> [ 5951.316324] cfg80211:     (5170000 KHz - 5250000 KHz @ 40000 KHz),
> (300 mBi, 2000 mBm)
> [ 5951.316330] cfg80211:     (5735000 KHz - 5835000 KHz @ 40000 KHz),
> (300 mBi, 2000 mBm)
> [ 5951.387120] rt2800pci 0000:03:07.0: PCI INT A -> GSI 21 (level, low)
> -> IRQ 21
> [ 5951.396951] ieee80211 phy0: Selected rate control algorithm 'minstrel_ht'
> [ 5951.399528] Registered led device: rt2800pci-phy0::radio
> [ 5951.399685] Registered led device: rt2800pci-phy0::assoc
> [ 5951.399831] Registered led device: rt2800pci-phy0::quality
> [ 5951.408153] wlan0 renamed to wlan1 by udevd [26800]
> [ 5951.411780] udev: renamed network interface wlan0 to wlan1
> ifup:     wlan1     device: RaLink RT2800 802.11n PCI
> ifup:               No configuration found for wlan1
> 
> 
> "Unloading" doesn't produce any logentries in /var/log/messages.
> 
> compat-wireless-2011-04-19 doesn't show this problem
> (compat-wireless-2011-04-20 doesn't exist).
> 
> 
> My hardware: Linksys WMP600N
> 
> 03:07.0 Network controller: RaLink RT2800 802.11n PCI
>         Subsystem: Linksys Device 0067
>         Control: I/O- Mem+ BusMaster- SpecCycle- MemWINV+ VGASnoop-
> ParErr- Stepping- SERR- FastB2B- DisINTx-
>         Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=slow >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
>         Interrupt: pin A routed to IRQ 21
>         Region 0: Memory at fdce0000 (32-bit, non-prefetchable) [size=64K]
>         Capabilities: [40] Power Management version 3
>                 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA
> PME(D0-,D1-,D2-,D3hot-,D3cold-)
>                 Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
> 
> 
> Could you please fix this problem?
> 

This is just a hunch and untested, but could you check if the attached patch
solves the problem?

---
Gertjan
diff mbox

Patch

diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c
index 7776d9f..ae61d24 100644
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
@@ -1071,9 +1071,9 @@  void rt2x00lib_remove_dev(struct rt2x00_dev *rt2x00dev)
 	/*
 	 * Stop all work.
 	 */
-	del_timer_sync(&rt2x00dev->txstatus_timer);
 	cancel_work_sync(&rt2x00dev->intf_work);
 	if (rt2x00_is_usb(rt2x00dev)) {
+		del_timer_sync(&rt2x00dev->txstatus_timer);
 		cancel_work_sync(&rt2x00dev->rxdone_work);
 		cancel_work_sync(&rt2x00dev->txdone_work);
 	}