summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/mwifiex/sta_event.c
diff options
context:
space:
mode:
authorAvinash Patil <patila@marvell.com>2014-11-13 19:24:16 +0300
committerJohn W. Linville <linville@tuxdriver.com>2014-11-17 23:32:14 +0300
commit9927baa3c7244b1f80582fc7360a7662bcb648ba (patch)
tree83cf97d5dfa4cf33c6a86389f780602ac87789d9 /drivers/net/wireless/mwifiex/sta_event.c
parent16fa5e659f3c3b2a5edfd0a40fc8d0116d9cd52b (diff)
downloadlinux-9927baa3c7244b1f80582fc7360a7662bcb648ba.tar.xz
mwifiex: add auto TDLS support
This patch adds auto TDLS support to mwifiex. Auto TDLS functionality works as follows: 1. Whenever userspace application has triggered TDLS connection with any peer, driver would store this peer mac address details in its database. 2. After this driver whenever driver receives packet on direct link, it would store rssi and timestamp in peer information. 3. Whenever a packet is to be transmitted to non-AP peer in station mode, driver would check if TDLS link can be established by looking at peer RSSI information. Driver would initiate TDLS setup in such cases. 4. Periodic timer is used for updating peer information. 5. Auto TDLS peer list & timer are cleared during disconnection or driver unload. Signed-off-by: Avinash Patil <patila@marvell.com> Signed-off-by: Cathy Luo <cluo@marvell.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/mwifiex/sta_event.c')
-rw-r--r--drivers/net/wireless/mwifiex/sta_event.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/net/wireless/mwifiex/sta_event.c b/drivers/net/wireless/mwifiex/sta_event.c
index 0efd6f0ffd38..204ecc8faa5b 100644
--- a/drivers/net/wireless/mwifiex/sta_event.c
+++ b/drivers/net/wireless/mwifiex/sta_event.c
@@ -55,9 +55,13 @@ mwifiex_reset_connect_state(struct mwifiex_private *priv, u16 reason_code)
priv->scan_block = false;
if ((GET_BSS_ROLE(priv) == MWIFIEX_BSS_ROLE_STA) &&
- ISSUPP_TDLS_ENABLED(priv->adapter->fw_cap_info))
+ ISSUPP_TDLS_ENABLED(priv->adapter->fw_cap_info)) {
mwifiex_disable_all_tdls_links(priv);
+ if (priv->adapter->auto_tdls)
+ mwifiex_clean_auto_tdls(priv);
+ }
+
/* Free Tx and Rx packets, report disconnect to upper layer */
mwifiex_clean_txrx(priv);