Commit 9699c88a authored by Jérôme Pouiller's avatar Jérôme Pouiller Committed by Greg Kroah-Hartman
Browse files

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: default avatarJérôme Pouiller <jerome.pouiller@silabs.com>
Link: https://lore.kernel.org/r/20191217161318.31402-53-Jerome.Pouiller@silabs.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 3827e33d
Loading
Loading
Loading
Loading
+1 −6
Original line number Diff line number Diff line
@@ -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);
	}
+0 −14
Original line number Diff line number Diff line
@@ -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)
+0 −1
Original line number Diff line number Diff line
@@ -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 */