nl80211: Support setting sched scan RSSI threshold

Allow the user to configure an RSSI threshold in dBm below which the
nl80211 driver won't report scan results. Currently only supported
during scheduled (PNO) scans.

Signed-off-by: Thomas Pedersen <c_tpeder@qca.qualcomm.com>
Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
Thomas Pedersen 2012-07-25 16:56:43 +03:00 committed by Jouni Malinen
parent cae2119c86
commit bf8d6d2430
5 changed files with 37 additions and 2 deletions

View file

@ -3612,6 +3612,7 @@ static int wpa_driver_nl80211_sched_scan(void *priv,
struct wpa_driver_nl80211_data *drv = bss->drv;
int ret = 0;
struct nl_msg *msg, *ssids, *freqs, *match_set_ssid, *match_sets;
struct nl_msg *match_set_rssi;
size_t i;
#ifdef ANDROID
@ -3640,8 +3641,9 @@ static int wpa_driver_nl80211_sched_scan(void *priv,
NLA_PUT_U32(msg, NL80211_ATTR_SCHED_SCAN_INTERVAL, interval);
if (drv->num_filter_ssids &&
(int) drv->num_filter_ssids <= drv->capa.max_match_sets) {
if ((drv->num_filter_ssids &&
(int) drv->num_filter_ssids <= drv->capa.max_match_sets) ||
params->filter_rssi) {
match_sets = nlmsg_alloc();
for (i = 0; i < drv->num_filter_ssids; i++) {
@ -3661,6 +3663,18 @@ static int wpa_driver_nl80211_sched_scan(void *priv,
nlmsg_free(match_set_ssid);
}
if (params->filter_rssi) {
match_set_rssi = nlmsg_alloc();
NLA_PUT_U32(match_set_rssi,
NL80211_SCHED_SCAN_MATCH_ATTR_RSSI,
params->filter_rssi);
wpa_printf(MSG_MSGDUMP,
"nl80211: Sched scan RSSI filter %d dBm",
params->filter_rssi);
nla_put_nested(match_sets, 0, match_set_rssi);
nlmsg_free(match_set_rssi);
}
nla_put_nested(msg, NL80211_ATTR_SCHED_SCAN_MATCH,
match_sets);
nlmsg_free(match_sets);