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

Commit 2430816b authored by Johannes Berg's avatar Johannes Berg
Browse files

cfg80211: fix interface down/disconnect state handling



When the interface goes down, there's no need to call
cfg80211_mlme_down() after __cfg80211_disconnect() as
the latter will call the former (if appropriate.)

Also, in __cfg80211_disconnect(), if the cfg80211 SME
isn't used, __cfg80211_disconnected() may still need
to be called (depending on the current state) so that
the SME state gets cleared.

Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 2b9ccd4e
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -870,7 +870,6 @@ void cfg80211_leave(struct cfg80211_registered_device *rdev,
#endif
		__cfg80211_disconnect(rdev, dev,
				      WLAN_REASON_DEAUTH_LEAVING, true);
		cfg80211_mlme_down(rdev, dev);
		wdev_unlock(wdev);
		break;
	case NL80211_IFTYPE_MESH_POINT:
+2 −1
Original line number Diff line number Diff line
@@ -961,7 +961,7 @@ int __cfg80211_disconnect(struct cfg80211_registered_device *rdev,
		/* was it connected by userspace SME? */
		if (!wdev->conn) {
			cfg80211_mlme_down(rdev, dev);
			return 0;
			goto disconnect;
		}

		if (wdev->sme_state == CFG80211_SME_CONNECTING &&
@@ -987,6 +987,7 @@ int __cfg80211_disconnect(struct cfg80211_registered_device *rdev,
			return err;
	}

 disconnect:
	if (wdev->sme_state == CFG80211_SME_CONNECTED)
		__cfg80211_disconnected(dev, NULL, 0, 0, false);
	else if (wdev->sme_state == CFG80211_SME_CONNECTING)