aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAhmad Kholaif <akholaif@qca.qualcomm.com>2015-07-24 00:01:17 +0000
committerAnjaneedevi Kapparapu <akappa@codeaurora.org>2016-04-01 16:43:43 +0530
commitd8b6aff1de2a3560a15f7a2bdc3661d5b5b19394 (patch)
tree46515880ceb5c8f97b9a9cdb636bfdf22fe33204 /src
parent419af13363d54d8f6715e1fd28052ef4cc1538a6 (diff)
downloadandroid_external_wpa_supplicant_8-d8b6aff1de2a3560a15f7a2bdc3661d5b5b19394.tar.gz
android_external_wpa_supplicant_8-d8b6aff1de2a3560a15f7a2bdc3661d5b5b19394.tar.bz2
android_external_wpa_supplicant_8-d8b6aff1de2a3560a15f7a2bdc3661d5b5b19394.zip
nl80211: Add concurrency capabilities to driver status
Extend the nl80211 interface command "driver status" to retrieve the concurrency capabilities from the driver using the QCA vendor extensions. Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com> Git-commit: 079a28f7b88bef62249872f0d7b7947ba1d77ac9 Git-repo : git://w1.fi/srv/git/hostap.git Change-Id: Iade4acbe723b7c1c36c886f305b476172535e850 CRs-Fixed: 842468
Diffstat (limited to 'src')
-rw-r--r--src/drivers/driver.h7
-rw-r--r--src/drivers/driver_nl80211.c10
-rw-r--r--src/drivers/driver_nl80211_capa.c15
3 files changed, 30 insertions, 2 deletions
diff --git a/src/drivers/driver.h b/src/drivers/driver.h
index b637570f..40b8cad2 100644
--- a/src/drivers/driver.h
+++ b/src/drivers/driver.h
@@ -1297,6 +1297,13 @@ struct wpa_driver_capa {
*/
#define WPA_DRIVER_FLAGS_TX_POWER_INSERTION 0x00000008
u32 rrm_flags;
+
+ /* Driver concurrency capabilities */
+ unsigned int conc_capab;
+ /* Maximum number of concurrent channels on 2.4 GHz */
+ unsigned int max_conc_chan_2_4;
+ /* Maximum number of concurrent channels on 5 GHz */
+ unsigned int max_conc_chan_5_0;
};
diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
index 09c4054d..eba066ff 100644
--- a/src/drivers/driver_nl80211.c
+++ b/src/drivers/driver_nl80211.c
@@ -7527,7 +7527,10 @@ static int wpa_driver_nl80211_status(void *priv, char *buf, size_t buflen)
"capa.max_acl_mac_addrs=%u\n"
"capa.num_multichan_concurrent=%u\n"
"capa.mac_addr_rand_sched_scan_supported=%d\n"
- "capa.mac_addr_rand_scan_supported=%d\n",
+ "capa.mac_addr_rand_scan_supported=%d\n"
+ "capa.conc_capab=%u\n"
+ "capa.max_conc_chan_2_4=%u\n"
+ "capa.max_conc_chan_5_0=%u\n",
drv->capa.key_mgmt,
drv->capa.enc,
drv->capa.auth,
@@ -7543,7 +7546,10 @@ static int wpa_driver_nl80211_status(void *priv, char *buf, size_t buflen)
drv->capa.max_acl_mac_addrs,
drv->capa.num_multichan_concurrent,
drv->capa.mac_addr_rand_sched_scan_supported,
- drv->capa.mac_addr_rand_scan_supported);
+ drv->capa.mac_addr_rand_scan_supported,
+ drv->capa.conc_capab,
+ drv->capa.max_conc_chan_2_4,
+ drv->capa.max_conc_chan_5_0);
if (os_snprintf_error(end - pos, res))
return pos - buf;
pos += res;
diff --git a/src/drivers/driver_nl80211_capa.c b/src/drivers/driver_nl80211_capa.c
index 4929cea2..926c1154 100644
--- a/src/drivers/driver_nl80211_capa.c
+++ b/src/drivers/driver_nl80211_capa.c
@@ -751,6 +751,7 @@ static void qca_nl80211_check_dfs_capa(struct wpa_driver_nl80211_data *drv)
struct features_info {
u8 *flags;
size_t flags_len;
+ struct wpa_driver_capa *capa;
};
@@ -776,6 +777,19 @@ static int features_info_handler(struct nl_msg *msg, void *arg)
info->flags = nla_data(attr);
info->flags_len = nla_len(attr);
}
+ attr = tb_vendor[QCA_WLAN_VENDOR_ATTR_CONCURRENCY_CAPA];
+ if (attr)
+ info->capa->conc_capab = nla_get_u32(attr);
+
+ attr = tb_vendor[
+ QCA_WLAN_VENDOR_ATTR_MAX_CONCURRENT_CHANNELS_2_4_BAND];
+ if (attr)
+ info->capa->max_conc_chan_2_4 = nla_get_u32(attr);
+
+ attr = tb_vendor[
+ QCA_WLAN_VENDOR_ATTR_MAX_CONCURRENT_CHANNELS_5_0_BAND];
+ if (attr)
+ info->capa->max_conc_chan_5_0 = nla_get_u32(attr);
}
return NL_SKIP;
@@ -810,6 +824,7 @@ static void qca_nl80211_get_features(struct wpa_driver_nl80211_data *drv)
}
os_memset(&info, 0, sizeof(info));
+ info.capa = &drv->capa;
ret = send_and_recv_msgs(drv, msg, features_info_handler, &info);
if (ret || !info.flags)
return;