2017-08-09 23:41:51

by Pradeep Kumar Chitrapu

[permalink] [raw]
Subject: [PATCH 1/2] cfg80211: enable setting cqm config for AP mode

Enable connection monitoring for AP mode which makes it possible to track
signal strength of connected stations.

Signed-off-by: Pradeep Kumar Chitrapu <[email protected]>
---
net/wireless/nl80211.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index bafab07530d6..beda9c62f74a 100644
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -9784,7 +9784,8 @@ static int nl80211_set_cqm_rssi(struct genl_info *info,
}

if (wdev->iftype != NL80211_IFTYPE_STATION &&
- wdev->iftype != NL80211_IFTYPE_P2P_CLIENT)
+ wdev->iftype != NL80211_IFTYPE_P2P_CLIENT &&
+ wdev->iftype != NL80211_IFTYPE_AP)
return -EOPNOTSUPP;

wdev_lock(wdev);
--
1.9.1


2017-08-09 23:41:51

by Pradeep Kumar Chitrapu

[permalink] [raw]
Subject: [PATCH 2/2] mac80211: enable setting cqm config for AP mode

Enable connection monitoring for AP mode which makes it possible to track
signal strength of connected stations.

Signed-off-by: Pradeep Kumar Chitrapu <[email protected]>
---
net/mac80211/cfg.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c
index a354f1939e49..1548fd34961c 100644
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -2682,9 +2682,11 @@ static int ieee80211_set_cqm_rssi_config(struct wiphy *wiphy,
bss_conf->cqm_rssi_high = 0;
sdata->u.mgd.last_cqm_event_signal = 0;

- /* tell the driver upon association, unless already associated */
- if (sdata->u.mgd.associated &&
- sdata->vif.driver_flags & IEEE80211_VIF_SUPPORTS_CQM_RSSI)
+ /* if STA, tell the driver upon association, unless already associated.
+ * if AP, always tell the driver.
+ */
+ if ((sdata->u.mgd.associated || vif->type == NL80211_IFTYPE_AP) &&
+ (sdata->vif.driver_flags & IEEE80211_VIF_SUPPORTS_CQM_RSSI))
ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_CQM);

return 0;
@@ -2708,7 +2710,7 @@ static int ieee80211_set_cqm_rssi_range_config(struct wiphy *wiphy,
sdata->u.mgd.last_cqm_event_signal = 0;

/* tell the driver upon association, unless already associated */
- if (sdata->u.mgd.associated &&
+ if ((sdata->u.mgd.associated || vif->type == NL80211_IFTYPE_AP) &&
sdata->vif.driver_flags & IEEE80211_VIF_SUPPORTS_CQM_RSSI)
ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_CQM);

--
1.9.1