rt61pci: fix module reloading
authorPavel Roskin <proski@gnu.org>
Sun, 2 Aug 2009 18:30:02 +0000 (14:30 -0400)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 4 Aug 2009 20:44:24 +0000 (16:44 -0400)
Unloading rt61pci can leave the device in such state that reloading
rt61pci would fail to reinitialize it.  Bogus data would be read from
the EEPROM and the RF version won't be recognized.

It appears that unloading rt61pci with power saving enabled would have
such effect.  To initialize the device properly, SOFT_RESET_CSR should
be set to the same value as rt61pci_config_ps() uses to wake up the
device.

Signed-off-by: Pavel Roskin <proski@gnu.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/rt2x00/rt61pci.c

index fb95b8cc4fe9a03c71329b2c4fed60a2838b74cb..e20dd7431f211f2e0b6ce47c29a5eabbf104d15f 100644 (file)
@@ -2600,6 +2600,11 @@ static int rt61pci_probe_hw(struct rt2x00_dev *rt2x00dev)
 {
        int retval;
 
+       /*
+        * Disable power saving.
+        */
+       rt2x00pci_register_write(rt2x00dev, SOFT_RESET_CSR, 0x00000007);
+
        /*
         * Allocate eeprom data.
         */