浏览代码

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>
Xinming Hu 9 年之前
父节点
当前提交
de651ce3d7
共有 1 个文件被更改,包括 7 次插入0 次删除
  1. 7 0
      drivers/net/wireless/marvell/mwifiex/tdls.c

+ 7 - 0
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);
 	__net_timestamp(skb);
 	mwifiex_queue_tx_pkt(priv, 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;
 	return 0;
 }
 }