summaryrefslogtreecommitdiffstats
path: root/net/mac80211/mlme.c
diff options
context:
space:
mode:
authorAndrew Zaborowski <andrew.zaborowski@intel.com>2017-02-09 22:50:22 -0500
committerJohannes Berg <johannes.berg@intel.com>2017-03-06 03:21:38 -0500
commit2c3c5f8c0cfa8e88a4c34d7651b5712c558ab9b7 (patch)
tree6447679da45f6515369ec382311af2050fa033ad /net/mac80211/mlme.c
parent4a4b8169501b18c3450ac735a7e277b24886a651 (diff)
mac80211: Add set_cqm_rssi_range_config
Support .set_cqm_rssi_range_config if the beacons are available for processing in mac80211. There's no reason that this couldn't be offloaded by mac80211-based drivers but there's no driver method for that added in this patch. Signed-off-by: Andrew Zaborowski <andrew.zaborowski@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/mlme.c')
-rw-r--r--net/mac80211/mlme.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index 6e90301154d5..23986934d7af 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -3430,6 +3430,30 @@ static void ieee80211_rx_mgmt_beacon(struct ieee80211_sub_if_data *sdata,
3430 } 3430 }
3431 } 3431 }
3432 3432
3433 if (bss_conf->cqm_rssi_low &&
3434 ifmgd->count_beacon_signal >= IEEE80211_SIGNAL_AVE_MIN_COUNT) {
3435 int sig = -ewma_beacon_signal_read(&ifmgd->ave_beacon_signal);
3436 int last_event = ifmgd->last_cqm_event_signal;
3437 int low = bss_conf->cqm_rssi_low;
3438 int high = bss_conf->cqm_rssi_high;
3439
3440 if (sig < low &&
3441 (last_event == 0 || last_event >= low)) {
3442 ifmgd->last_cqm_event_signal = sig;
3443 ieee80211_cqm_rssi_notify(
3444 &sdata->vif,
3445 NL80211_CQM_RSSI_THRESHOLD_EVENT_LOW,
3446 sig, GFP_KERNEL);
3447 } else if (sig > high &&
3448 (last_event == 0 || last_event <= high)) {
3449 ifmgd->last_cqm_event_signal = sig;
3450 ieee80211_cqm_rssi_notify(
3451 &sdata->vif,
3452 NL80211_CQM_RSSI_THRESHOLD_EVENT_HIGH,
3453 sig, GFP_KERNEL);
3454 }
3455 }
3456
3433 if (ifmgd->flags & IEEE80211_STA_CONNECTION_POLL) { 3457 if (ifmgd->flags & IEEE80211_STA_CONNECTION_POLL) {
3434 mlme_dbg_ratelimited(sdata, 3458 mlme_dbg_ratelimited(sdata,
3435 "cancelling AP probe due to a received beacon\n"); 3459 "cancelling AP probe due to a received beacon\n");