diff options
author | Andrew Zaborowski <andrew.zaborowski@intel.com> | 2017-02-09 22:50:22 -0500 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2017-03-06 03:21:38 -0500 |
commit | 2c3c5f8c0cfa8e88a4c34d7651b5712c558ab9b7 (patch) | |
tree | 6447679da45f6515369ec382311af2050fa033ad /net/mac80211/mlme.c | |
parent | 4a4b8169501b18c3450ac735a7e277b24886a651 (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.c | 24 |
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"); |