aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJouni Malinen <jouni@qca.qualcomm.com>2013-05-06 12:57:03 (GMT)
committerJouni Malinen <j@w1.fi>2013-05-06 12:57:03 (GMT)
commitf11b72c3e9ffa28cd7ba8ced160e43f8f6bf9fca (patch)
tree7fdfa0ee0a3404457f72fe81b626676ed434007f
parent785336998d793cd99821b08791ae42d6535b8ae6 (diff)
downloadhostap-f11b72c3e9ffa28cd7ba8ced160e43f8f6bf9fca.zip
hostap-f11b72c3e9ffa28cd7ba8ced160e43f8f6bf9fca.tar.gz
hostap-f11b72c3e9ffa28cd7ba8ced160e43f8f6bf9fca.tar.bz2
TDLS: Move AID=1 workaround into driver_nl80211.c
The use of AID=1 for the nl80211 dummy STA case is specific to the driver (cfg80211), so better move this into the driver wrapper instead of generic TDLS implementation. Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>
-rw-r--r--src/drivers/driver_nl80211.c14
-rw-r--r--wpa_supplicant/wpas_glue.c2
2 files changed, 13 insertions, 3 deletions
diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
index 654438c..48b0c2e 100644
--- a/src/drivers/driver_nl80211.c
+++ b/src/drivers/driver_nl80211.c
@@ -6070,8 +6070,18 @@ static int wpa_driver_nl80211_sta_add(void *priv,
wpa_hexdump(MSG_DEBUG, " * supported rates", params->supp_rates,
params->supp_rates_len);
if (!params->set) {
- wpa_printf(MSG_DEBUG, " * aid=%u", params->aid);
- NLA_PUT_U16(msg, NL80211_ATTR_STA_AID, params->aid);
+ if (params->aid) {
+ wpa_printf(MSG_DEBUG, " * aid=%u", params->aid);
+ NLA_PUT_U16(msg, NL80211_ATTR_STA_AID, params->aid);
+ } else {
+ /*
+ * cfg80211 validates that AID is non-zero, so we have
+ * to make this a non-zero value for the TDLS case where
+ * a dummy STA entry is used for now.
+ */
+ wpa_printf(MSG_DEBUG, " * aid=1 (TDLS workaround)");
+ NLA_PUT_U16(msg, NL80211_ATTR_STA_AID, 1);
+ }
wpa_printf(MSG_DEBUG, " * listen_interval=%u",
params->listen_interval);
NLA_PUT_U16(msg, NL80211_ATTR_STA_LISTEN_INTERVAL,
diff --git a/wpa_supplicant/wpas_glue.c b/wpa_supplicant/wpas_glue.c
index faaf492..1a64df3 100644
--- a/wpa_supplicant/wpas_glue.c
+++ b/wpa_supplicant/wpas_glue.c
@@ -563,7 +563,7 @@ static int wpa_supplicant_tdls_peer_addset(
os_memset(&params, 0, sizeof(params));
params.addr = peer;
- params.aid = add ? 1 : aid;
+ params.aid = aid;
params.capability = capability;
params.flags = WPA_STA_TDLS_PEER | WPA_STA_AUTHORIZED;