staging: wfx: simplify wfx_remove_interface()
authorJérôme Pouiller <jerome.pouiller@silabs.com>
Mon, 20 Apr 2020 16:03:09 +0000 (18:03 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 23 Apr 2020 11:26:05 +0000 (13:26 +0200)
In wfx_remove_interface(), the current code differentiate AP and Station
cases. However, it is not necessary. In all cases, the only important
thing is the call to hif_reset(). We can use the same code to support
all cases.

Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
Link: https://lore.kernel.org/r/20200420160311.57323-15-Jerome.Pouiller@silabs.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/wfx/sta.c

index bc891b6..1732f3d 100644 (file)
@@ -785,24 +785,11 @@ void wfx_remove_interface(struct ieee80211_hw *hw,
 
        mutex_lock(&wdev->conf_mutex);
        WARN(wvif->link_id_map != 1, "corrupted state");
-       switch (wvif->state) {
-       case WFX_STATE_PRE_STA:
-       case WFX_STATE_STA:
-       case WFX_STATE_IBSS:
-               wfx_do_unjoin(wvif);
-               break;
-       case WFX_STATE_AP:
-               /* reset.link_id = 0; */
-               hif_reset(wvif, false);
-               break;
-       default:
-               break;
-       }
 
+       hif_reset(wvif, false);
        wvif->state = WFX_STATE_PASSIVE;
-
-       /* FIXME: In add to reset MAC address, try to reset interface */
        hif_set_macaddr(wvif, NULL);
+       wfx_tx_policy_init(wvif);
 
        cancel_delayed_work_sync(&wvif->beacon_loss_work);
        wdev->vif[wvif->id] = NULL;