Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 247ae449 authored by John W. Linville's avatar John W. Linville Committed by David S. Miller
Browse files

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#c8



Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent c65638a7
Loading
Loading
Loading
Loading
+14 −3
Original line number Diff line number Diff line
@@ -604,7 +604,8 @@ ath5k_pci_resume(struct pci_dev *pdev)
{
	struct ieee80211_hw *hw = pci_get_drvdata(pdev);
	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);
	if (err)
@@ -624,10 +625,20 @@ ath5k_pci_resume(struct pci_dev *pdev)

	ath5k_init(sc);
	if (test_bit(ATH_STAT_LEDSOFT, sc->status)) {
		ath5k_hw_set_gpio_output(sc->ah, sc->led_pin);
		ath5k_hw_set_gpio(sc->ah, sc->led_pin, 0);
		ath5k_hw_set_gpio_output(ah, sc->led_pin);
		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;
}
#endif /* CONFIG_PM */