PERFORCE change 142356 for review
Sam Leffler
sam at FreeBSD.org
Tue May 27 04:07:51 UTC 2008
http://perforce.freebsd.org/chv.cgi?CH=142356
Change 142356 by sam at sam_ebb on 2008/05/27 04:07:19
add ieee80211_suspend_all and ieee80211_resume_all for
brute force suspend/resume handling of vaps
Affected files ...
.. //depot/projects/vap/sys/net80211/ieee80211_ddb.c#17 edit
.. //depot/projects/vap/sys/net80211/ieee80211_proto.c#33 edit
.. //depot/projects/vap/sys/net80211/ieee80211_proto.h#23 edit
.. //depot/projects/vap/sys/net80211/ieee80211_var.h#44 edit
Differences ...
==== //depot/projects/vap/sys/net80211/ieee80211_ddb.c#17 (text+ko) ====
@@ -63,10 +63,10 @@
"\37DOTH\40DWDS"
#define IEEE80211_FEXT_BITS \
- "\20\1NONHT_PR\2INACT\3SCANWAIT\4BGSCAN\5WPS\6TSN\7SCANREQ\12NONEPR_PR"\
- "\13SWBMISS\14DFS\15DOTD\22WDSLEGACY\23PROBECHAN\24HT\25AMDPU_TX" \
- "\26AMPDU_TX\27AMSDU_TX\30AMSDU_RX\31USEHT40\32PUREN\33SHORTGI20" \
- "\34SHORTGI40\35HTCOMPAT"
+ "\20\1NONHT_PR\2INACT\3SCANWAIT\4BGSCAN\5WPS\6TSN\7SCANREQ\10RESUME" \
+ "\12NONEPR_PR\13SWBMISS\14DFS\15DOTD\22WDSLEGACY\23PROBECHAN\24HT" \
+ "\25AMDPU_TX\26AMPDU_TX\27AMSDU_TX\30AMSDU_RX\31USEHT40\32PUREN" \
+ "\33SHORTGI20\34SHORTGI40\35HTCOMPAT"
#define IEEE80211_FVEN_BITS "\20"
==== //depot/projects/vap/sys/net80211/ieee80211_proto.c#33 (text+ko) ====
@@ -1261,6 +1261,46 @@
}
/*
+ * 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
* channel, update 802.11 state, and then call back into
==== //depot/projects/vap/sys/net80211/ieee80211_proto.h#23 (text+ko) ====
@@ -265,6 +265,8 @@
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 *);
==== //depot/projects/vap/sys/net80211/ieee80211_var.h#44 (text+ko) ====
@@ -473,6 +473,7 @@
#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 */
More information about the p4-projects
mailing list