Message ID | 20090802183002.16766.4142.stgit@ct.roinet.com (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
On Sunday 02 August 2009, Pavel Roskin wrote: > 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> I'm not really happy with the patch, but if it works, it works. I got no better alternative to fix this correctly so we might as well merge this into wireless-testing now. :) Thanks. Acked-by: Ivo van Doorn <IvDoorn@gmail.com> > --- > drivers/net/wireless/rt2x00/rt61pci.c | 5 +++++ > 1 files changed, 5 insertions(+), 0 deletions(-) > > diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c > index fb95b8c..e20dd74 100644 > --- a/drivers/net/wireless/rt2x00/rt61pci.c > +++ b/drivers/net/wireless/rt2x00/rt61pci.c > @@ -2601,6 +2601,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. > */ > retval = rt61pci_validate_eeprom(rt2x00dev); > -- > 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 > -- 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
diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c index fb95b8c..e20dd74 100644 --- a/drivers/net/wireless/rt2x00/rt61pci.c +++ b/drivers/net/wireless/rt2x00/rt61pci.c @@ -2601,6 +2601,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. */ retval = rt61pci_validate_eeprom(rt2x00dev);
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> --- drivers/net/wireless/rt2x00/rt61pci.c | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) -- 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