Commit 0711d638 authored by Ilan Peer's avatar Ilan Peer Committed by Johannes Berg

cfg80211: allow aborting in-progress connection atttempts

On a disconnect request from userspace, cfg80211 currently calls
called rdev_disconnect() only in case that 'current_bss' was set,
i.e. connection had been established.

Change this to allow the userspace call to succeed and call the
driver's disconnect() method also while the connection attempt is
in progress, to be able to abort attempts.
Signed-off-by: default avatarIlan Peer <ilan.peer@intel.com>
Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
[change commit subject/message]
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent f438ceb8
...@@ -2564,9 +2564,10 @@ struct cfg80211_nan_func { ...@@ -2564,9 +2564,10 @@ struct cfg80211_nan_func {
* cases, the result of roaming is indicated with a call to * cases, the result of roaming is indicated with a call to
* cfg80211_roamed() or cfg80211_roamed_bss(). * cfg80211_roamed() or cfg80211_roamed_bss().
* (invoked with the wireless_dev mutex held) * (invoked with the wireless_dev mutex held)
* @disconnect: Disconnect from the BSS/ESS. Once done, call * @disconnect: Disconnect from the BSS/ESS or stop connection attempts if
* cfg80211_disconnected(). * connection is in progress. Once done, call cfg80211_disconnected() in
* (invoked with the wireless_dev mutex held) * case connection was already established (invoked with the
* wireless_dev mutex held), otherwise call cfg80211_connect_timeout().
* *
* @join_ibss: Join the specified IBSS (or create if necessary). Once done, call * @join_ibss: Join the specified IBSS (or create if necessary). Once done, call
* cfg80211_ibss_joined(), also call that function when changing BSSID due * cfg80211_ibss_joined(), also call that function when changing BSSID due
......
...@@ -1088,7 +1088,7 @@ int cfg80211_disconnect(struct cfg80211_registered_device *rdev, ...@@ -1088,7 +1088,7 @@ int cfg80211_disconnect(struct cfg80211_registered_device *rdev,
err = cfg80211_sme_disconnect(wdev, reason); err = cfg80211_sme_disconnect(wdev, reason);
else if (!rdev->ops->disconnect) else if (!rdev->ops->disconnect)
cfg80211_mlme_down(rdev, dev); cfg80211_mlme_down(rdev, dev);
else if (wdev->current_bss) else if (wdev->ssid_len)
err = rdev_disconnect(rdev, dev, reason); err = rdev_disconnect(rdev, dev, reason);
return err; return err;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment