Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F177379986
D8262.1794250008.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Authored By
Unknown
Size
2 KB
Referenced Files
None
Subscribers
None
D8262.1794250008.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D8262: [net80211] begin teaching the scan layer about full offload.
Attached
Detach File
Event Timeline