staging: wfx: fix value of scan timeout
authorJérôme Pouiller <jerome.pouiller@silabs.com>
Fri, 15 May 2020 08:33:10 +0000 (10:33 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 24 Jun 2020 15:48:46 +0000 (17:48 +0200)
[ Upstream commit 6598b12d6635e8e3060863b84c04e472546ee126 ]

Before to start the scan request, the firmware signals (with a null
frame) to the AP it won't be able to receive data. This frame can be
long to send: up to 512TU. The current calculus of the scan timeout does
not take into account this delay.

Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
Link: https://lore.kernel.org/r/20200515083325.378539-5-Jerome.Pouiller@silabs.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/staging/wfx/hif_tx.c

index 77bca43aca4280692fc4f499c0e4d835b07f9cc1..20b3045d766741050908d1ce780f2ef2c61f9ef1 100644 (file)
@@ -268,7 +268,7 @@ int hif_scan(struct wfx_vif *wvif, struct cfg80211_scan_request *req,
        tmo_chan_bg = le32_to_cpu(body->max_channel_time) * USEC_PER_TU;
        tmo_chan_fg = 512 * USEC_PER_TU + body->probe_delay;
        tmo_chan_fg *= body->num_of_probe_requests;
-       tmo = chan_num * max(tmo_chan_bg, tmo_chan_fg);
+       tmo = chan_num * max(tmo_chan_bg, tmo_chan_fg) + 512 * USEC_PER_TU;
 
        wfx_fill_header(hif, wvif->id, HIF_REQ_ID_START_SCAN, buf_len);
        ret = wfx_cmd_send(wvif->wdev, hif, NULL, 0, false);