MLK-19517-15 brcmfmac: reduce timeout for action frame scan
authorChung-Hsien Hsu <stanley.hsu@cypress.com>
Fri, 8 Jun 2018 09:34:33 +0000 (17:34 +0800)
committerLeonard Crestez <leonard.crestez@nxp.com>
Wed, 17 Apr 2019 23:51:34 +0000 (02:51 +0300)
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.

Signed-off-by: Chung-Hsien Hsu <stanley.hsu@cypress.com>
Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
(cherry picked from commit:4435f37332bd39026028a81b6e442bbe3105e790)
Signed-off-by: Vipul Kumar <vipul_kumar@mentor.com>
drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c

index 9b20acb..e48dc39 100644 (file)
@@ -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 */
@@ -1148,7 +1148,6 @@ static s32 brcmf_p2p_af_searching_channel(struct brcmf_p2p_info *p2p)
 {
        struct afx_hdl *afx_hdl = &p2p->afx_hdl;
        struct brcmf_cfg80211_vif *pri_vif;
-       unsigned long duration;
        s32 retry;
 
        brcmf_dbg(TRACE, "Enter\n");
@@ -1164,7 +1163,6 @@ static s32 brcmf_p2p_af_searching_channel(struct brcmf_p2p_info *p2p)
         * 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;
@@ -1172,7 +1170,8 @@ static s32 brcmf_p2p_af_searching_channel(struct brcmf_p2p_info *p2p)
                          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)))
@@ -1185,7 +1184,7 @@ static s32 brcmf_p2p_af_searching_channel(struct brcmf_p2p_info *p2p)
                        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,