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

Commit 07e98b53 authored by Dedy Lansky's avatar Dedy Lansky Committed by Maya Erez
Browse files

wil6210: correctly report locally generated disconnect in STA mode



Driver always invoke cfg80211_disconnected() with locally_generated as
false.
Fix this by reporting true whenever the disconnect is triggered from
upper layers (cfg80211) or from within the driver itself (reset,
deinit).

Change-Id: I367797e0eeb1e71a28674415121a054daee04cbc
Signed-off-by: default avatarDedy Lansky <qca_dlansky@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: 3b56c15fa3315942b4cb02e57ff842f2f9b14ef7
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git


Signed-off-by: default avatarMaya Erez <merez@codeaurora.org>
parent efa8de6b
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -795,6 +795,7 @@ static int wil_cfg80211_disconnect(struct wiphy *wiphy,
		return 0;
	}

	wil->locally_generated_disc = true;
	rc = wmi_call(wil, WMI_DISCONNECT_CMDID, NULL, 0,
		      WMI_DISCONNECT_EVENTID, NULL, 0,
		      WIL6210_DISCONNECT_TO_MS);
+4 −1
Original line number Diff line number Diff line
@@ -276,7 +276,10 @@ static void _wil6210_disconnect(struct wil6210_priv *wil, const u8 *bssid,
		if (test_bit(wil_status_fwconnected, wil->status)) {
			clear_bit(wil_status_fwconnected, wil->status);
			cfg80211_disconnected(ndev, reason_code,
					      NULL, 0, false, GFP_KERNEL);
					      NULL, 0,
					      wil->locally_generated_disc,
					      GFP_KERNEL);
			wil->locally_generated_disc = false;
		} else if (test_bit(wil_status_fwconnecting, wil->status)) {
			cfg80211_connect_result(ndev, bssid, NULL, 0, NULL, 0,
						WLAN_STATUS_UNSPECIFIED_FAILURE,
+1 −0
Original line number Diff line number Diff line
@@ -622,6 +622,7 @@ struct wil6210_priv {
	int sinfo_gen;
	u32 ap_isolate; /* no intra-BSS communication */
	struct cfg80211_bss *bss; /* connected bss, relevant in STA mode */
	int locally_generated_disc; /* relevant in STA mode */
	/* interrupt moderation */
	u32 tx_max_burst_duration;
	u32 tx_interframe_timeout;
+1 −0
Original line number Diff line number Diff line
@@ -1528,6 +1528,7 @@ int wmi_disconnect_sta(struct wil6210_priv *wil, const u8 *mac,

	wil_dbg_wmi(wil, "disconnect_sta: (%pM, reason %d)\n", mac, reason);

	wil->locally_generated_disc = true;
	if (del_sta) {
		ether_addr_copy(del_sta_cmd.dst_mac, mac);
		rc = wmi_call(wil, WMI_DEL_STA_CMDID, &del_sta_cmd,