Add ieee80211_suspend_all and ieee80211_resume_all for
brute force suspend/resume handling of vaps.
This commit is contained in:
parent
34c9a6c7f0
commit
6076cbacea
@ -1260,6 +1260,46 @@ ieee80211_stop_all(struct ieee80211com *ic)
|
||||
IEEE80211_UNLOCK(ic);
|
||||
}
|
||||
|
||||
/*
|
||||
* Stop all vap's running on a device and arrange
|
||||
* for those that were running to be resumed.
|
||||
*/
|
||||
void
|
||||
ieee80211_suspend_all(struct ieee80211com *ic)
|
||||
{
|
||||
struct ieee80211vap *vap;
|
||||
|
||||
IEEE80211_LOCK(ic);
|
||||
TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) {
|
||||
struct ifnet *ifp = vap->iv_ifp;
|
||||
if (IFNET_IS_UP_RUNNING(ifp)) { /* NB: avoid recursion */
|
||||
vap->iv_flags_ext |= IEEE80211_FEXT_RESUME;
|
||||
ieee80211_stop_locked(vap);
|
||||
}
|
||||
}
|
||||
IEEE80211_UNLOCK(ic);
|
||||
}
|
||||
|
||||
/*
|
||||
* Start all vap's marked for resume.
|
||||
*/
|
||||
void
|
||||
ieee80211_resume_all(struct ieee80211com *ic)
|
||||
{
|
||||
struct ieee80211vap *vap;
|
||||
|
||||
IEEE80211_LOCK(ic);
|
||||
TAILQ_FOREACH(vap, &ic->ic_vaps, iv_next) {
|
||||
struct ifnet *ifp = vap->iv_ifp;
|
||||
if (!IFNET_IS_UP_RUNNING(ifp) &&
|
||||
(vap->iv_flags_ext & IEEE80211_FEXT_RESUME)) {
|
||||
vap->iv_flags_ext &= ~IEEE80211_FEXT_RESUME;
|
||||
ieee80211_start_locked(vap);
|
||||
}
|
||||
}
|
||||
IEEE80211_UNLOCK(ic);
|
||||
}
|
||||
|
||||
/*
|
||||
* Switch between turbo and non-turbo operating modes.
|
||||
* Use the specified channel flags to locate the new
|
||||
|
@ -265,6 +265,8 @@ void ieee80211_start_all(struct ieee80211com *);
|
||||
void ieee80211_stop_locked(struct ieee80211vap *);
|
||||
void ieee80211_stop(struct ieee80211vap *);
|
||||
void ieee80211_stop_all(struct ieee80211com *);
|
||||
void ieee80211_suspend_all(struct ieee80211com *);
|
||||
void ieee80211_resume_all(struct ieee80211com *);
|
||||
void ieee80211_dturbo_switch(struct ieee80211vap *, int newflags);
|
||||
void ieee80211_swbmiss(void *arg);
|
||||
void ieee80211_beacon_miss(struct ieee80211com *);
|
||||
|
@ -473,6 +473,7 @@ MALLOC_DECLARE(M_80211_VAP);
|
||||
#define IEEE80211_FEXT_WPS 0x00000010 /* CONF: WPS enabled */
|
||||
#define IEEE80211_FEXT_TSN 0x00000020 /* CONF: TSN enabled */
|
||||
#define IEEE80211_FEXT_SCANREQ 0x00000040 /* STATUS: scan req params */
|
||||
#define IEEE80211_FEXT_RESUME 0x00000080 /* STATUS: start on resume */
|
||||
#define IEEE80211_FEXT_DFS 0x00000800 /* CONF: DFS enabled */
|
||||
#define IEEE80211_FEXT_NONERP_PR 0x00000200 /* STATUS: non-ERP sta present*/
|
||||
#define IEEE80211_FEXT_SWBMISS 0x00000400 /* CONF: do bmiss in s/w */
|
||||
|
Loading…
x
Reference in New Issue
Block a user