From f11b72c3e9ffa28cd7ba8ced160e43f8f6bf9fca Mon Sep 17 00:00:00 2001 From: Jouni Malinen Date: Mon, 6 May 2013 15:57:03 +0300 Subject: [PATCH] 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 --- src/drivers/driver_nl80211.c | 14 ++++++++++++-- wpa_supplicant/wpas_glue.c | 2 +- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c index 654438cec..48b0c2efb 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 faaf4926e..1a64df38c 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(¶ms, 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;