Skip to content

Commit

Permalink
rt2x00: Don't free register information on suspend
Browse files Browse the repository at this point in the history
After suspend & resume the rt2x00 devices won't wakeup
anymore due to a broken register information setup.
The most important problem is the release of the EEPROM
buffer which is completely cleared and never read again
after the suspend.

Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
  • Loading branch information
Ivo van Doorn authored and John W. Linville committed Apr 20, 2009
1 parent c40af84 commit 499a214
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 34 deletions.
18 changes: 1 addition & 17 deletions drivers/net/wireless/rt2x00/rt2x00pci.c
Original file line number Diff line number Diff line change
Expand Up @@ -369,8 +369,6 @@ int rt2x00pci_suspend(struct pci_dev *pci_dev, pm_message_t state)
if (retval)
return retval;

rt2x00pci_free_reg(rt2x00dev);

pci_save_state(pci_dev);
pci_disable_device(pci_dev);
return pci_set_power_state(pci_dev, pci_choose_state(pci_dev, state));
Expand All @@ -381,7 +379,6 @@ int rt2x00pci_resume(struct pci_dev *pci_dev)
{
struct ieee80211_hw *hw = pci_get_drvdata(pci_dev);
struct rt2x00_dev *rt2x00dev = hw->priv;
int retval;

if (pci_set_power_state(pci_dev, PCI_D0) ||
pci_enable_device(pci_dev) ||
Expand All @@ -390,20 +387,7 @@ int rt2x00pci_resume(struct pci_dev *pci_dev)
return -EIO;
}

retval = rt2x00pci_alloc_reg(rt2x00dev);
if (retval)
return retval;

retval = rt2x00lib_resume(rt2x00dev);
if (retval)
goto exit_free_reg;

return 0;

exit_free_reg:
rt2x00pci_free_reg(rt2x00dev);

return retval;
return rt2x00lib_resume(rt2x00dev);
}
EXPORT_SYMBOL_GPL(rt2x00pci_resume);
#endif /* CONFIG_PM */
Expand Down
18 changes: 1 addition & 17 deletions drivers/net/wireless/rt2x00/rt2x00usb.c
Original file line number Diff line number Diff line change
Expand Up @@ -702,8 +702,6 @@ int rt2x00usb_suspend(struct usb_interface *usb_intf, pm_message_t state)
if (retval)
return retval;

rt2x00usb_free_reg(rt2x00dev);

/*
* Decrease usbdev refcount.
*/
Expand All @@ -717,24 +715,10 @@ int rt2x00usb_resume(struct usb_interface *usb_intf)
{
struct ieee80211_hw *hw = usb_get_intfdata(usb_intf);
struct rt2x00_dev *rt2x00dev = hw->priv;
int retval;

usb_get_dev(interface_to_usbdev(usb_intf));

retval = rt2x00usb_alloc_reg(rt2x00dev);
if (retval)
return retval;

retval = rt2x00lib_resume(rt2x00dev);
if (retval)
goto exit_free_reg;

return 0;

exit_free_reg:
rt2x00usb_free_reg(rt2x00dev);

return retval;
return rt2x00lib_resume(rt2x00dev);
}
EXPORT_SYMBOL_GPL(rt2x00usb_resume);
#endif /* CONFIG_PM */
Expand Down

0 comments on commit 499a214

Please sign in to comment.