aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/cfg.c
diff options
context:
space:
mode:
authorJouni Malinen <j@w1.fi>2010-03-30 02:28:30 -0400
committerJohn W. Linville <linville@tuxdriver.com>2010-03-31 14:46:42 -0400
commit17e4ec147f4939ca8c81b41b4261ec7974531381 (patch)
tree8066952a1dbef6656ac1f6d6a869326576b5006e /net/mac80211/cfg.c
parent32fbccafed7e935432b601f0453c2b702a385a25 (diff)
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>
Diffstat (limited to 'net/mac80211/cfg.c')
-rw-r--r--net/mac80211/cfg.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c
index a4ca425e4f3f..4edd73cbf052 100644
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -1415,9 +1415,6 @@ static int ieee80211_set_cqm_rssi_config(struct wiphy *wiphy,
1415 struct ieee80211_vif *vif = &sdata->vif; 1415 struct ieee80211_vif *vif = &sdata->vif;
1416 struct ieee80211_bss_conf *bss_conf = &vif->bss_conf; 1416 struct ieee80211_bss_conf *bss_conf = &vif->bss_conf;
1417 1417
1418 if (!(local->hw.flags & IEEE80211_HW_SUPPORTS_CQM_RSSI))
1419 return -EOPNOTSUPP;
1420
1421 if (rssi_thold == bss_conf->cqm_rssi_thold && 1418 if (rssi_thold == bss_conf->cqm_rssi_thold &&
1422 rssi_hyst == bss_conf->cqm_rssi_hyst) 1419 rssi_hyst == bss_conf->cqm_rssi_hyst)
1423 return 0; 1420 return 0;
@@ -1425,6 +1422,12 @@ static int ieee80211_set_cqm_rssi_config(struct wiphy *wiphy,
1425 bss_conf->cqm_rssi_thold = rssi_thold; 1422 bss_conf->cqm_rssi_thold = rssi_thold;
1426 bss_conf->cqm_rssi_hyst = rssi_hyst; 1423 bss_conf->cqm_rssi_hyst = rssi_hyst;
1427 1424
1425 if (!(local->hw.flags & IEEE80211_HW_SUPPORTS_CQM_RSSI)) {
1426 if (sdata->vif.type != NL80211_IFTYPE_STATION)
1427 return -EOPNOTSUPP;
1428 return 0;
1429 }
1430
1428 /* tell the driver upon association, unless already associated */ 1431 /* tell the driver upon association, unless already associated */
1429 if (sdata->u.mgd.associated) 1432 if (sdata->u.mgd.associated)
1430 ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_CQM); 1433 ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_CQM);