summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorXinming Hu <huxm@marvell.com>2016-02-23 14:16:16 +0100
committerKalle Valo <kvalo@codeaurora.org>2016-03-07 13:26:27 +0100
commitde651ce3d750c19a7b8b7cef22407ecc496619f4 (patch)
treeb5ab29dedd36d0581704b4c2fc4146e484fd4364 /drivers
parentrtlwifi: pass struct rtl_stats by reference as it is more efficient (diff)
downloadlinux-de651ce3d750c19a7b8b7cef22407ecc496619f4.tar.xz
linux-de651ce3d750c19a7b8b7cef22407ecc496619f4.zip
mwifiex: add delay when tdls confirm frame is queued
It is observed that driver may send the data packet to tdls peer before tdls peer receives tdls setup confirm frame. Similar race condition exists during tdls teardown procedure also. This patch adds 10 milliseconds delay to resolve the race. Signed-off-by: Xinming Hu <huxm@marvell.com> Signed-off-by: Cathy Luo <cluo@marvell.com> Signed-off-by: Amitkumar Karwar <akarwar@marvell.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/marvell/mwifiex/tdls.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/net/wireless/marvell/mwifiex/tdls.c b/drivers/net/wireless/marvell/mwifiex/tdls.c
index 9275f9c3f869..150649602e98 100644
--- a/drivers/net/wireless/marvell/mwifiex/tdls.c
+++ b/drivers/net/wireless/marvell/mwifiex/tdls.c
@@ -680,6 +680,13 @@ int mwifiex_send_tdls_data_frame(struct mwifiex_private *priv, const u8 *peer,
__net_timestamp(skb);
mwifiex_queue_tx_pkt(priv, skb);
+ /* Delay 10ms to make sure tdls setup confirm/teardown frame
+ * is received by peer
+ */
+ if (action_code == WLAN_TDLS_SETUP_CONFIRM ||
+ action_code == WLAN_TDLS_TEARDOWN)
+ msleep_interruptible(10);
+
return 0;
}