mac80211: Track Beacon signal strength and implement cqm events
Calculate a running average of the signal strength reported for Beacon frames and indicate cqm events if the average value moves below or above the configured threshold value (and filter out repetitive events with by using the configured hysteresis). Signed-off-by: Jouni Malinen <j@w1.fi> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
committed by
John W. Linville
parent
32fbccafed
commit
17e4ec147f
@ -1415,9 +1415,6 @@ static int ieee80211_set_cqm_rssi_config(struct wiphy *wiphy,
|
||||
struct ieee80211_vif *vif = &sdata->vif;
|
||||
struct ieee80211_bss_conf *bss_conf = &vif->bss_conf;
|
||||
|
||||
if (!(local->hw.flags & IEEE80211_HW_SUPPORTS_CQM_RSSI))
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if (rssi_thold == bss_conf->cqm_rssi_thold &&
|
||||
rssi_hyst == bss_conf->cqm_rssi_hyst)
|
||||
return 0;
|
||||
@ -1425,6 +1422,12 @@ static int ieee80211_set_cqm_rssi_config(struct wiphy *wiphy,
|
||||
bss_conf->cqm_rssi_thold = rssi_thold;
|
||||
bss_conf->cqm_rssi_hyst = rssi_hyst;
|
||||
|
||||
if (!(local->hw.flags & IEEE80211_HW_SUPPORTS_CQM_RSSI)) {
|
||||
if (sdata->vif.type != NL80211_IFTYPE_STATION)
|
||||
return -EOPNOTSUPP;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* tell the driver upon association, unless already associated */
|
||||
if (sdata->u.mgd.associated)
|
||||
ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_CQM);
|
||||
|
Reference in New Issue
Block a user