aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLior David <qca_liord@qca.qualcomm.com>2016-02-08 12:16:45 +0200
committerHamad Kadmany <hkadmany@codeaurora.org>2016-04-15 01:42:10 +0300
commit99aceafee577f4d53d98bd918a60f9920154b985 (patch)
tree38b76d903b1dbb8bf83841a8ea4fcaf035f2f93d
parent280e62d7a7f4d738e2c21e58c3812fb9f6397b8f (diff)
downloadandroid_external_wpa_supplicant_8-99aceafee577f4d53d98bd918a60f9920154b985.tar.gz
android_external_wpa_supplicant_8-99aceafee577f4d53d98bd918a60f9920154b985.tar.bz2
android_external_wpa_supplicant_8-99aceafee577f4d53d98bd918a60f9920154b985.zip
nl80211: Basic support for PBSS/PCP
PBSS (Personal Basic Service Set) is a new BSS type for DMG networks. It is similar to infrastructure BSS, having an AP-like entity called PCP (PBSS Control Point), but it has few differences. PBSS support is mandatory for IEEE 802.11ad devices. Add a pbss flag to the relevant structures to support starting a PCP and connecting to a PCP. Implement support in the nl80211 driver by using the new PBSS flag attribute. Change-Id: I35638f0d8e6d1b58190d53e90ffd386fc573ab12 Signed-off-by: Lior David <qca_liord@qca.qualcomm.com> Git-commit: 86b5c400a0fe2567e40119c31657076b87cd5f18 Git-repo: git://w1.fi/srv/git/hostap.git CRs-Fixed: 985990
-rw-r--r--src/drivers/driver.h12
-rw-r--r--src/drivers/driver_nl80211.c12
2 files changed, 24 insertions, 0 deletions
diff --git a/src/drivers/driver.h b/src/drivers/driver.h
index 0b75b963..9cea60ca 100644
--- a/src/drivers/driver.h
+++ b/src/drivers/driver.h
@@ -837,6 +837,12 @@ struct wpa_driver_associate_params {
* RRM (Radio Resource Measurements)
*/
int rrm_used;
+
+ /**
+ * pbss - If set, connect to a PCP in a PBSS. Otherwise, connect to an
+ * AP as usual. Valid for DMG network only.
+ */
+ int pbss;
};
enum hide_ssid {
@@ -1064,6 +1070,12 @@ struct wpa_driver_ap_params {
* reenable - Whether this is to re-enable beaconing
*/
int reenable;
+
+ /**
+ * pbss - Whether to start a PCP (in PBSS) instead of an AP in
+ * infrastructure BSS. Valid only for DMG network.
+ */
+ int pbss;
};
struct wpa_driver_mesh_bss_params {
diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
index ded7950f..46d457d9 100644
--- a/src/drivers/driver_nl80211.c
+++ b/src/drivers/driver_nl80211.c
@@ -3508,6 +3508,12 @@ static int wpa_driver_nl80211_set_ap(void *priv,
}
#endif /* CONFIG_P2P */
+ if (params->pbss) {
+ wpa_printf(MSG_DEBUG, "nl80211: PBSS");
+ if (nla_put_flag(msg, NL80211_ATTR_PBSS))
+ goto fail;
+ }
+
ret = send_and_recv_msgs(drv, msg, NULL, NULL);
if (ret) {
wpa_printf(MSG_DEBUG, "nl80211: Beacon set failed: %d (%s)",
@@ -4666,6 +4672,12 @@ static int nl80211_connect_common(struct wpa_driver_nl80211_data *drv,
if (params->p2p)
wpa_printf(MSG_DEBUG, " * P2P group");
+ if (params->pbss) {
+ wpa_printf(MSG_DEBUG, " * PBSS");
+ if (nla_put_flag(msg, NL80211_ATTR_PBSS))
+ return -1;
+ }
+
return 0;
}