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,
 | 
