forked from Minki/linux
staging: wfx: fix coherency of hif_scan() prototype
The function hif_scan() return the timeout for the completion of the scan request. It is the only function from hif_tx.c that return another thing than just an error code. This behavior is not coherent with the rest of file. Worse, if value returned is positive, the caller can't make say if it is a timeout or the value returned by the hardware. Uniformize API with other HIF functions, only return the error code and pass timeout with parameters. Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com> Link: https://lore.kernel.org/r/20200529121256.1045521-1-Jerome.Pouiller@silabs.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
8cf5093450
commit
29de523a62
@ -240,7 +240,7 @@ int hif_write_mib(struct wfx_dev *wdev, int vif_id, u16 mib_id,
|
||||
}
|
||||
|
||||
int hif_scan(struct wfx_vif *wvif, struct cfg80211_scan_request *req,
|
||||
int chan_start_idx, int chan_num)
|
||||
int chan_start_idx, int chan_num, int *timeout)
|
||||
{
|
||||
int ret, i;
|
||||
struct hif_msg *hif;
|
||||
@ -289,11 +289,13 @@ int hif_scan(struct wfx_vif *wvif, struct cfg80211_scan_request *req,
|
||||
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) + 512 * USEC_PER_TU;
|
||||
if (timeout)
|
||||
*timeout = usecs_to_jiffies(tmo);
|
||||
|
||||
wfx_fill_header(hif, wvif->id, HIF_REQ_ID_START_SCAN, buf_len);
|
||||
ret = wfx_cmd_send(wvif->wdev, hif, NULL, 0, false);
|
||||
kfree(hif);
|
||||
return ret ? ret : usecs_to_jiffies(tmo);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int hif_stop_scan(struct wfx_vif *wvif)
|
||||
|
@ -42,7 +42,7 @@ int hif_read_mib(struct wfx_dev *wdev, int vif_id, u16 mib_id,
|
||||
int hif_write_mib(struct wfx_dev *wdev, int vif_id, u16 mib_id,
|
||||
void *buf, size_t buf_size);
|
||||
int hif_scan(struct wfx_vif *wvif, struct cfg80211_scan_request *req80211,
|
||||
int chan_start, int chan_num);
|
||||
int chan_start, int chan_num, int *timeout);
|
||||
int hif_stop_scan(struct wfx_vif *wvif);
|
||||
int hif_join(struct wfx_vif *wvif, const struct ieee80211_bss_conf *conf,
|
||||
struct ieee80211_channel *channel, const u8 *ssid, int ssidlen);
|
||||
|
@ -56,10 +56,10 @@ static int send_scan_req(struct wfx_vif *wvif,
|
||||
wfx_tx_lock_flush(wvif->wdev);
|
||||
wvif->scan_abort = false;
|
||||
reinit_completion(&wvif->scan_complete);
|
||||
timeout = hif_scan(wvif, req, start_idx, i - start_idx);
|
||||
if (timeout < 0) {
|
||||
ret = hif_scan(wvif, req, start_idx, i - start_idx, &timeout);
|
||||
if (ret) {
|
||||
wfx_tx_unlock(wvif->wdev);
|
||||
return timeout;
|
||||
return -EIO;
|
||||
}
|
||||
ret = wait_for_completion_timeout(&wvif->scan_complete, timeout);
|
||||
if (req->channels[start_idx]->max_power != wvif->vif->bss_conf.txpower)
|
||||
|
Loading…
Reference in New Issue
Block a user