TDLS: Remember initiator/reponder role and use this for teardown.
Passing tdls requestor type i.e. initiator/responder correctly to fill
the teardown frame with proper LinkIdentifier element.
CRs-Fixed: 448441
Change-Id: I29e96a1da50e94447c568fb7095217ff2718c1e6
diff --git a/CORE/HDD/src/wlan_hdd_tdls.c b/CORE/HDD/src/wlan_hdd_tdls.c
index 431768e..77e70e8 100644
--- a/CORE/HDD/src/wlan_hdd_tdls.c
+++ b/CORE/HDD/src/wlan_hdd_tdls.c
@@ -255,7 +255,8 @@
cfg80211_tdls_oper_request(pHddTdlsCtx->dev,
curr_peer->peerMac,
- NL80211_TDLS_TEARDOWN, FALSE,
+ NL80211_TDLS_TEARDOWN,
+ eSIR_MAC_TDLS_TEARDOWN_UNSPEC_REASON,
GFP_KERNEL);
#endif
}
@@ -440,6 +441,35 @@
return 0;
}
+int wlan_hdd_tdls_set_responder(u8 *mac, tANI_U8 responder)
+{
+ hddTdlsPeer_t *curr_peer;
+
+ if (NULL == pHddTdlsCtx) return -1;
+
+ curr_peer = wlan_hdd_tdls_get_peer(mac);
+ if(curr_peer == NULL)
+ return -1;
+
+ curr_peer->is_responder = responder;
+
+ return 0;
+}
+
+int wlan_hdd_tdls_get_responder(u8 *mac)
+{
+ hddTdlsPeer_t *curr_peer;
+
+ if (NULL == pHddTdlsCtx) return -1;
+
+ curr_peer = wlan_hdd_tdls_find_peer(mac);
+ if(curr_peer == NULL)
+ return -1;
+
+ return (curr_peer->is_responder);
+}
+
+
void wlan_hdd_tdls_extract_da(struct sk_buff *skb, u8 *mac)
{
memcpy(mac, skb->data, 6);