1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-19 10:53:58 +00:00

Convert ath(4) to just use ieee80211_suspend_all() and ieee80211_resume_all().

The existing code tries to use the beacon miss timer to signal that the AP
has gone away.  Unfortunately this doesn't seem to be behaving itself.
I'll try to investigate why this is for the sake of completeness.

The result is the STA will stay "associated" to the AP it was associated
with when it suspended.  It never receives a bmiss notification so it
never tries reassociating.

PR:		kern/169084
This commit is contained in:
Adrian Chadd 2012-06-15 01:15:59 +00:00
parent 70254ea2cb
commit 021a0db52e
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=237108

View File

@ -1310,8 +1310,13 @@ ath_suspend(struct ath_softc *sc)
sc->sc_resume_up = (ifp->if_flags & IFF_UP) != 0;
if (ic->ic_opmode == IEEE80211_M_STA)
/*
* This has been disabled - see PR kern/169084.
*/
#if 0
ath_stop(ifp);
else
#endif
ieee80211_suspend_all(ic);
/*
* NB: don't worry about putting the chip in low power
@ -1379,6 +1384,15 @@ ath_resume(struct ath_softc *sc)
ath_hal_setledstate(ah, HAL_LED_INIT);
if (sc->sc_resume_up) {
/*
* This particular feature doesn't work at the present,
* at least on the 802.11n chips. It's quite possible
* that the STA Beacon timers aren't being configured
* properly.
*
* See PR kern/169084.
*/
#if 0
if (ic->ic_opmode == IEEE80211_M_STA) {
ath_init(sc);
ath_hal_setledstate(ah, HAL_LED_RUN);
@ -1392,7 +1406,9 @@ ath_resume(struct ath_softc *sc)
*/
ath_beacon_config(sc, NULL);
sc->sc_syncbeacon = 1;
ieee80211_resume_all(ic);
} else
#endif
ieee80211_resume_all(ic);
}