|
@@ -8306,6 +8306,7 @@ static int __wlan_hdd_cfg80211_stop_ap(struct wiphy *wiphy,
|
|
|
struct net_device *dev)
|
|
|
{
|
|
|
struct hdd_adapter *adapter = WLAN_HDD_GET_PRIV_PTR(dev);
|
|
|
+ struct hdd_adapter *sta_adapter;
|
|
|
struct hdd_context *hdd_ctx = wiphy_priv(wiphy);
|
|
|
QDF_STATUS status = QDF_STATUS_E_FAILURE;
|
|
|
QDF_STATUS qdf_status = QDF_STATUS_E_FAILURE;
|
|
@@ -8353,6 +8354,18 @@ static int __wlan_hdd_cfg80211_stop_ap(struct wiphy *wiphy,
|
|
|
if (0 != ret)
|
|
|
return ret;
|
|
|
|
|
|
+
|
|
|
+ * If a STA connection is in progress in another adapter, disconnect
|
|
|
+ * the STA and complete the SAP operation. STA will reconnect
|
|
|
+ * after SAP stop is done.
|
|
|
+ */
|
|
|
+ sta_adapter = hdd_get_sta_connection_in_progress(hdd_ctx);
|
|
|
+ if (sta_adapter) {
|
|
|
+ hdd_debug("Disconnecting STA with session id: %d",
|
|
|
+ sta_adapter->session_id);
|
|
|
+ wlan_hdd_disconnect(sta_adapter, eCSR_DISCONNECT_REASON_DEAUTH);
|
|
|
+ }
|
|
|
+
|
|
|
if (adapter->device_mode == QDF_SAP_MODE) {
|
|
|
uint8_t num_sessions;
|
|
|
|