Changeset View
Changeset View
Standalone View
Standalone View
head/sys/net80211/ieee80211_scan_sw.c
Show First 20 Lines • Show All 623 Lines • ▼ Show 20 Lines | if (ss->ss_next == ss->ss_last) { | ||||
return; | return; | ||||
} | } | ||||
if (vap->iv_opmode == IEEE80211_M_STA && | if (vap->iv_opmode == IEEE80211_M_STA && | ||||
vap->iv_state == IEEE80211_S_RUN) { | vap->iv_state == IEEE80211_S_RUN) { | ||||
if ((vap->iv_bss->ni_flags & IEEE80211_NODE_PWR_MGT) == 0) { | if ((vap->iv_bss->ni_flags & IEEE80211_NODE_PWR_MGT) == 0) { | ||||
/* Enable station power save mode */ | /* Enable station power save mode */ | ||||
vap->iv_sta_ps(vap, 1); | vap->iv_sta_ps(vap, 1); | ||||
/* | /* Wait until null data frame will be ACK'ed */ | ||||
* Use an 1ms delay so the null data frame has a chance | |||||
* to go out. | |||||
* XXX Should use M_TXCB mechanism to eliminate this. | |||||
*/ | |||||
mtx_sleep(vap, IEEE80211_LOCK_OBJ(ic), PCATCH, | mtx_sleep(vap, IEEE80211_LOCK_OBJ(ic), PCATCH, | ||||
"sta_ps", msecs_to_ticks(1)); | "sta_ps", msecs_to_ticks(10)); | ||||
if (ss_priv->ss_iflags & ISCAN_ABORT) { | if (ss_priv->ss_iflags & ISCAN_ABORT) { | ||||
scan_done(ss, 0); | scan_done(ss, 0); | ||||
return; | return; | ||||
} | } | ||||
} | } | ||||
} | } | ||||
ss_priv->ss_scanend = ticks + ss_priv->ss_duration; | ss_priv->ss_scanend = ticks + ss_priv->ss_duration; | ||||
▲ Show 20 Lines • Show All 345 Lines • Show Last 20 Lines |