]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
staging: wfx: delayed_unjoin cannot happen
authorJérôme Pouiller <jerome.pouiller@silabs.com>
Tue, 17 Dec 2019 16:15:38 +0000 (16:15 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 18 Dec 2019 14:56:32 +0000 (15:56 +0100)
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>
drivers/staging/wfx/scan.c
drivers/staging/wfx/sta.c
drivers/staging/wfx/wfx.h

index 540009b72240558685dc60e5f2b1938325de915a..bdbce6926e915bb9ed4cc9190f90c1ba5b28714c 100644 (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);
        }
index 4354bb8081c55edd14fdd2a671e4cab73061d681..7ae763e964550c6dba5cc017e5cf389c085a7708 100644 (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)
index b5f763c3fac786071b33428fc08565fdbfd8eeb7..5e7c911db0245cb415592f2298f5898b74d29ae3 100644 (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 */