svn commit: r343696 - head/sys/net80211
Andriy Voskoboinyk
avos at FreeBSD.org
Sun Feb 3 01:32:04 UTC 2019
Author: avos
Date: Sun Feb 3 01:32:02 2019
New Revision: 343696
URL: https://svnweb.freebsd.org/changeset/base/343696
Log:
net80211(4): do not setup roaming parameters for unsupported modes.
ifconfig(8) prints per-mode parameters if they are non-zero; since
we have 13 possible modes with 3...5 typically supported this change
should greatly reduce amount of information for 'ifconfig <wlan> list roam'
command.
While here ensure that sta_roam_check() will not use roaming parameters
for unsupported modes (it should not).
This change effectively reverts r188776.
MFC after: 2 weeks
Modified:
head/sys/net80211/ieee80211_scan.c
head/sys/net80211/ieee80211_scan_sta.c
Modified: head/sys/net80211/ieee80211_scan.c
==============================================================================
--- head/sys/net80211/ieee80211_scan.c Sun Feb 3 00:45:52 2019 (r343695)
+++ head/sys/net80211/ieee80211_scan.c Sun Feb 3 01:32:02 2019 (r343696)
@@ -130,13 +130,21 @@ void
ieee80211_scan_vattach(struct ieee80211vap *vap)
{
struct ieee80211com *ic = vap->iv_ic;
+ int m;
vap->iv_bgscanidle = (IEEE80211_BGSCAN_IDLE_DEFAULT*1000)/hz;
vap->iv_bgscanintvl = IEEE80211_BGSCAN_INTVAL_DEFAULT*hz;
vap->iv_scanvalid = IEEE80211_SCAN_VALID_DEFAULT*hz;
vap->iv_roaming = IEEE80211_ROAMING_AUTO;
- memcpy(vap->iv_roamparms, defroam, sizeof(defroam));
+
+ memset(vap->iv_roamparms, 0, sizeof(vap->iv_roamparms));
+ for (m = IEEE80211_MODE_AUTO + 1; m < IEEE80211_MODE_MAX; m++) {
+ if (isclr(ic->ic_modecaps, m))
+ continue;
+
+ memcpy(&vap->iv_roamparms[m], &defroam[m], sizeof(defroam[m]));
+ }
ic->ic_scan_methods->sc_vattach(vap);
}
Modified: head/sys/net80211/ieee80211_scan_sta.c
==============================================================================
--- head/sys/net80211/ieee80211_scan_sta.c Sun Feb 3 00:45:52 2019 (r343695)
+++ head/sys/net80211/ieee80211_scan_sta.c Sun Feb 3 01:32:02 2019 (r343696)
@@ -1354,6 +1354,9 @@ sta_roam_check(struct ieee80211_scan_state *ss, struct
mode = ieee80211_chan2mode(ic->ic_bsschan);
roamRate = vap->iv_roamparms[mode].rate;
roamRssi = vap->iv_roamparms[mode].rssi;
+ KASSERT(roamRate != 0 && roamRssi != 0, ("iv_roamparms are not"
+ "initialized for %s mode!", ieee80211_phymode_name[mode]));
+
ucastRate = vap->iv_txparms[mode].ucastrate;
/* NB: the most up to date rssi is in the node, not the scan cache */
curRssi = ic->ic_node_getrssi(ni);
More information about the svn-src-head
mailing list