提交 247ae449 编写于 作者: J John W. Linville 提交者: David S. Miller

ath5k: reset key cache after resume

Otherwise it may be impossible to connected to an open network after a
resume.

This is a modified version of an original patch by
Alex Eskin <alexeskin@yahoo.com>:

	https://bugzilla.redhat.com/show_bug.cgi?id=425950#c8Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
上级 c65638a7
...@@ -604,7 +604,8 @@ ath5k_pci_resume(struct pci_dev *pdev) ...@@ -604,7 +604,8 @@ ath5k_pci_resume(struct pci_dev *pdev)
{ {
struct ieee80211_hw *hw = pci_get_drvdata(pdev); struct ieee80211_hw *hw = pci_get_drvdata(pdev);
struct ath5k_softc *sc = hw->priv; struct ath5k_softc *sc = hw->priv;
int err; struct ath5k_hw *ah = sc->ah;
int i, err;
err = pci_set_power_state(pdev, PCI_D0); err = pci_set_power_state(pdev, PCI_D0);
if (err) if (err)
...@@ -624,10 +625,20 @@ ath5k_pci_resume(struct pci_dev *pdev) ...@@ -624,10 +625,20 @@ ath5k_pci_resume(struct pci_dev *pdev)
ath5k_init(sc); ath5k_init(sc);
if (test_bit(ATH_STAT_LEDSOFT, sc->status)) { if (test_bit(ATH_STAT_LEDSOFT, sc->status)) {
ath5k_hw_set_gpio_output(sc->ah, sc->led_pin); ath5k_hw_set_gpio_output(ah, sc->led_pin);
ath5k_hw_set_gpio(sc->ah, sc->led_pin, 0); ath5k_hw_set_gpio(ah, sc->led_pin, 0);
} }
/*
* Reset the key cache since some parts do not
* reset the contents on initial power up or resume.
*
* FIXME: This may need to be revisited when mac80211 becomes
* aware of suspend/resume.
*/
for (i = 0; i < AR5K_KEYTABLE_SIZE; i++)
ath5k_hw_reset_key(ah, i);
return 0; return 0;
} }
#endif /* CONFIG_PM */ #endif /* CONFIG_PM */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册