Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 32530729 authored by Lazar Alexei's avatar Lazar Alexei Committed by Gerrit - the friendly Code Review server
Browse files

wil6210: Fix driver down flow



Stations disconnection is executed as part of wil_reset so no
need to do it in wil_down.
Removal of the disconnect operation will also preserve the lock
of wil->mutex during the whole reset flow and prevent handling of
connect event while resetting.
Set wil_status_resetting in earlier stage in the flow to prevent
double resetting call in case communication with FW fails while
bringing the interface down.

Change-Id: Ifb92501aab14843309fed8e1214a867b2ccccfce
Signed-off-by: default avatarLazar Alexei <qca_ailizaro@qca.qualcomm.com>
Signed-off-by: default avatarMaya Erez <qca_merez@qca.qualcomm.com>
Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
Git-commit: b0c0e688e523eba14abf21ac246b7dd88f5574fa
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git


CRs-Fixed: 1063261
Signed-off-by: default avatarMaya Erez <merez@codeaurora.org>
parent 0fab98e4
Loading
Loading
Loading
Loading
+2 −14
Original line number Diff line number Diff line
@@ -1031,10 +1031,10 @@ int wil_up(struct wil6210_priv *wil)

int __wil_down(struct wil6210_priv *wil)
{
	int rc;

	WARN_ON(!mutex_is_locked(&wil->mutex));

	set_bit(wil_status_resetting, wil->status);

	if (wil->platform_ops.bus_request)
		wil->platform_ops.bus_request(wil->platform_handle, 0);

@@ -1056,18 +1056,6 @@ int __wil_down(struct wil6210_priv *wil)
		wil->scan_request = NULL;
	}

	if (test_bit(wil_status_fwconnected, wil->status) ||
	    test_bit(wil_status_fwconnecting, wil->status)) {

		mutex_unlock(&wil->mutex);
		rc = wmi_call(wil, WMI_DISCONNECT_CMDID, NULL, 0,
			      WMI_DISCONNECT_EVENTID, NULL, 0,
			      WIL6210_DISCONNECT_TO_MS);
		mutex_lock(&wil->mutex);
		if (rc)
			wil_err(wil, "timeout waiting for disconnect\n");
	}

	wil_reset(wil, false);

	return 0;