Page MenuHomeFreeBSD

D8262.1794250008.diff
No OneTemporary

Authored By
Unknown
Size
2 KB
Referenced Files
None
Subscribers
None

D8262.1794250008.diff

Index: head/sys/net80211/ieee80211_scan_sw.c
===================================================================
--- head/sys/net80211/ieee80211_scan_sw.c
+++ head/sys/net80211/ieee80211_scan_sw.c
@@ -412,6 +412,12 @@
return (ic->ic_flags & IEEE80211_F_SCAN);
}
+/*
+ * Taskqueue work to cancel a scan.
+ *
+ * Note: for offload scan devices, we may want to call into the
+ * driver to try and cancel scanning, however it may not be cancelable.
+ */
static void
cancel_scan(struct ieee80211vap *vap, int any, const char *func)
{
@@ -512,6 +518,12 @@
int i;
/*
+ * Full-offload scan devices don't require this.
+ */
+ if (vap->iv_flags_ext & IEEE80211_FEXT_SCAN_OFFLOAD)
+ return;
+
+ /*
* Send directed probe requests followed by any
* broadcast probe request.
* XXX remove dependence on ic/vap->iv_bss
@@ -617,7 +629,14 @@
return;
}
- if (vap->iv_opmode == IEEE80211_M_STA &&
+ /*
+ * Put the station into power save mode.
+ *
+ * This is only required if we're not a full-offload devices;
+ * those devices manage scan/traffic differently.
+ */
+ if (((vap->iv_flags_ext & IEEE80211_FEXT_SCAN_OFFLOAD) == 0) &&
+ vap->iv_opmode == IEEE80211_M_STA &&
vap->iv_state == IEEE80211_S_RUN) {
if ((vap->iv_bss->ni_flags & IEEE80211_NODE_PWR_MGT) == 0) {
/* Enable station power save mode */
@@ -870,7 +889,12 @@
* waiting for us.
*/
if (scandone) {
- vap->iv_sta_ps(vap, 0);
+ /*
+ * If we're not a scan offload device, come back out of
+ * station powersave. Offload devices handle this themselves.
+ */
+ if ((vap->iv_flags_ext & IEEE80211_FEXT_SCAN_OFFLOAD) == 0)
+ vap->iv_sta_ps(vap, 0);
if (ss->ss_next >= ss->ss_last)
ic->ic_flags_ext &= ~IEEE80211_FEXT_BGSCAN;
Index: head/sys/net80211/ieee80211_var.h
===================================================================
--- head/sys/net80211/ieee80211_var.h
+++ head/sys/net80211/ieee80211_var.h
@@ -601,11 +601,12 @@
#define IEEE80211_FEXT_WDSLEGACY 0x00010000 /* CONF: legacy WDS operation */
#define IEEE80211_FEXT_PROBECHAN 0x00020000 /* CONF: probe passive channel*/
#define IEEE80211_FEXT_UNIQMAC 0x00040000 /* CONF: user or computed mac */
+#define IEEE80211_FEXT_SCAN_OFFLOAD 0x00080000 /* CONF: scan is fully offloaded */
#define IEEE80211_FEXT_BITS \
"\20\2INACT\3SCANWAIT\4BGSCAN\5WPS\6TSN\7SCANREQ\10RESUME" \
"\0114ADDR\12NONEPR_PR\13SWBMISS\14DFS\15DOTD\16STATEWAIT\17REINIT" \
- "\20BPF\21WDSLEGACY\22PROBECHAN\23UNIQMAC"
+ "\20BPF\21WDSLEGACY\22PROBECHAN\23UNIQMAC\24SCAN_OFFLOAD"
/* ic_flags_ht/iv_flags_ht */
#define IEEE80211_FHT_NONHT_PR 0x00000001 /* STATUS: non-HT sta present */

File Metadata

Mime Type
text/plain
Expires
Mon, Nov 9, 6:46 PM (7 h, 49 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
41609346
Default Alt Text
D8262.1794250008.diff (2 KB)

Event Timeline