mirror of https://github.com/hak5/openwrt.git
96 lines
2.5 KiB
Diff
96 lines
2.5 KiB
Diff
|
From 76b0fa91af8ca33cd68f52f2d02a05c488777f58 Mon Sep 17 00:00:00 2001
|
||
|
From: Ivo van Doorn <IvDoorn@gmail.com>
|
||
|
Date: Sat, 28 Mar 2009 20:32:07 +0100
|
||
|
Subject: [PATCH 3/9] rt2x00: Don't free register information on suspend
|
||
|
|
||
|
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>
|
||
|
---
|
||
|
drivers/net/wireless/rt2x00/rt2x00pci.c | 18 +-----------------
|
||
|
drivers/net/wireless/rt2x00/rt2x00usb.c | 18 +-----------------
|
||
|
2 files changed, 2 insertions(+), 34 deletions(-)
|
||
|
|
||
|
--- a/drivers/net/wireless/rt2x00/rt2x00pci.c
|
||
|
+++ b/drivers/net/wireless/rt2x00/rt2x00pci.c
|
||
|
@@ -377,8 +377,6 @@ int rt2x00pci_suspend(struct pci_dev *pc
|
||
|
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));
|
||
|
@@ -389,7 +387,6 @@ int rt2x00pci_resume(struct pci_dev *pci
|
||
|
{
|
||
|
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) ||
|
||
|
@@ -398,20 +395,7 @@ int rt2x00pci_resume(struct pci_dev *pci
|
||
|
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 */
|
||
|
--- a/drivers/net/wireless/rt2x00/rt2x00usb.c
|
||
|
+++ b/drivers/net/wireless/rt2x00/rt2x00usb.c
|
||
|
@@ -702,8 +702,6 @@ int rt2x00usb_suspend(struct usb_interfa
|
||
|
if (retval)
|
||
|
return retval;
|
||
|
|
||
|
- rt2x00usb_free_reg(rt2x00dev);
|
||
|
-
|
||
|
/*
|
||
|
* Decrease usbdev refcount.
|
||
|
*/
|
||
|
@@ -717,24 +715,10 @@ int rt2x00usb_resume(struct usb_interfac
|
||
|
{
|
||
|
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 */
|