68 lines
2.7 KiB
Diff
68 lines
2.7 KiB
Diff
|
From edb6d6885bef82d1eac432dbeca9fbf4ec349d7e Mon Sep 17 00:00:00 2001
|
||
|
From: Chung-Hsien Hsu <stanley.hsu@cypress.com>
|
||
|
Date: Thu, 27 Sep 2018 14:59:44 +0000
|
||
|
Subject: [PATCH] brcmfmac: reduce timeout for action frame scan
|
||
|
|
||
|
Finding a common channel to send an action frame out is required for
|
||
|
some action types. Since a loop with several scan retry is used to find
|
||
|
the channel, a short wait time could be considered for each attempt.
|
||
|
This patch reduces the wait time from 1500 to 450 msec for each action
|
||
|
frame scan.
|
||
|
|
||
|
This patch fixes the WFA p2p certification 5.1.20 failure caused by the
|
||
|
long action frame send time.
|
||
|
|
||
|
Signed-off-by: Chung-Hsien Hsu <stanley.hsu@cypress.com>
|
||
|
Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
|
||
|
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||
|
---
|
||
|
drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c | 9 ++++-----
|
||
|
1 file changed, 4 insertions(+), 5 deletions(-)
|
||
|
|
||
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c
|
||
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c
|
||
|
@@ -74,7 +74,7 @@
|
||
|
#define P2P_AF_MAX_WAIT_TIME msecs_to_jiffies(2000)
|
||
|
#define P2P_INVALID_CHANNEL -1
|
||
|
#define P2P_CHANNEL_SYNC_RETRY 5
|
||
|
-#define P2P_AF_FRM_SCAN_MAX_WAIT msecs_to_jiffies(1500)
|
||
|
+#define P2P_AF_FRM_SCAN_MAX_WAIT msecs_to_jiffies(450)
|
||
|
#define P2P_DEFAULT_SLEEP_TIME_VSDB 200
|
||
|
|
||
|
/* WiFi P2P Public Action Frame OUI Subtypes */
|
||
|
@@ -1134,7 +1134,6 @@ static s32 brcmf_p2p_af_searching_channe
|
||
|
{
|
||
|
struct afx_hdl *afx_hdl = &p2p->afx_hdl;
|
||
|
struct brcmf_cfg80211_vif *pri_vif;
|
||
|
- unsigned long duration;
|
||
|
s32 retry;
|
||
|
|
||
|
brcmf_dbg(TRACE, "Enter\n");
|
||
|
@@ -1150,7 +1149,6 @@ static s32 brcmf_p2p_af_searching_channe
|
||
|
* pending action frame tx is cancelled.
|
||
|
*/
|
||
|
retry = 0;
|
||
|
- duration = msecs_to_jiffies(P2P_AF_FRM_SCAN_MAX_WAIT);
|
||
|
while ((retry < P2P_CHANNEL_SYNC_RETRY) &&
|
||
|
(afx_hdl->peer_chan == P2P_INVALID_CHANNEL)) {
|
||
|
afx_hdl->is_listen = false;
|
||
|
@@ -1158,7 +1156,8 @@ static s32 brcmf_p2p_af_searching_channe
|
||
|
retry);
|
||
|
/* search peer on peer's listen channel */
|
||
|
schedule_work(&afx_hdl->afx_work);
|
||
|
- wait_for_completion_timeout(&afx_hdl->act_frm_scan, duration);
|
||
|
+ wait_for_completion_timeout(&afx_hdl->act_frm_scan,
|
||
|
+ P2P_AF_FRM_SCAN_MAX_WAIT);
|
||
|
if ((afx_hdl->peer_chan != P2P_INVALID_CHANNEL) ||
|
||
|
(!test_bit(BRCMF_P2P_STATUS_FINDING_COMMON_CHANNEL,
|
||
|
&p2p->status)))
|
||
|
@@ -1171,7 +1170,7 @@ static s32 brcmf_p2p_af_searching_channe
|
||
|
afx_hdl->is_listen = true;
|
||
|
schedule_work(&afx_hdl->afx_work);
|
||
|
wait_for_completion_timeout(&afx_hdl->act_frm_scan,
|
||
|
- duration);
|
||
|
+ P2P_AF_FRM_SCAN_MAX_WAIT);
|
||
|
}
|
||
|
if ((afx_hdl->peer_chan != P2P_INVALID_CHANNEL) ||
|
||
|
(!test_bit(BRCMF_P2P_STATUS_FINDING_COMMON_CHANNEL,
|