staging: wfx: delayed_unjoin cannot happen

Original code allows to detect an unjoin request during a scan and
delaying the unjoin request. However, it is far easier to just block the
unjoin request until the end of the scan request.

In fact, it is already the case since scan and unjoin are protected by
conf_mutex. So, currently, the handling of delayed_unjoin is just dead
code.

Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
Link: https://lore.kernel.org/r/20191217161318.31402-53-Jerome.Pouiller@silabs.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Jérôme Pouiller 2019-12-17 16:15:38 +00:00 committed by Greg Kroah-Hartman
parent 3827e33d37
commit 9699c88a44
3 changed files with 1 additions and 21 deletions

View File

@ -95,12 +95,7 @@ void wfx_hw_scan_work(struct work_struct *work)
mutex_unlock(&wvif->wdev->conf_mutex);
mutex_unlock(&wvif->scan_lock);
__ieee80211_scan_completed_compat(wvif->wdev->hw, ret < 0);
if (wvif->delayed_unjoin) {
wvif->delayed_unjoin = false;
wfx_tx_lock(wvif->wdev);
if (!schedule_work(&wvif->unjoin_work))
wfx_tx_unlock(wvif->wdev);
} else if (wvif->delayed_link_loss) {
if (wvif->delayed_link_loss) {
wvif->delayed_link_loss = false;
wfx_cqm_bssloss_sm(wvif, 1, 0, 0);
}

View File

@ -66,10 +66,6 @@ void wfx_cqm_bssloss_sm(struct wfx_vif *wvif, int init, int good, int bad)
wvif->delayed_link_loss = 0;
cancel_work_sync(&wvif->bss_params_work);
/* If we have a pending unjoin */
if (wvif->delayed_unjoin)
goto end;
if (init) {
schedule_delayed_work(&wvif->bss_loss_work, HZ);
wvif->bss_loss_state = 0;
@ -501,16 +497,6 @@ static void wfx_do_unjoin(struct wfx_vif *wvif)
{
mutex_lock(&wvif->wdev->conf_mutex);
if (!mutex_trylock(&wvif->scan_lock)) {
if (wvif->delayed_unjoin)
dev_dbg(wvif->wdev->dev,
"delayed unjoin is already scheduled\n");
else
wvif->delayed_unjoin = true;
goto done;
}
mutex_unlock(&wvif->scan_lock);
wvif->delayed_link_loss = false;
if (!wvif->state)

View File

@ -122,7 +122,6 @@ struct wfx_vif {
struct work_struct set_cts_work;
int join_complete_status;
bool delayed_unjoin;
struct work_struct unjoin_work;
/* avoid some operations in parallel with scan */