diff --git a/core/hdd/src/wlan_hdd_hostapd.c b/core/hdd/src/wlan_hdd_hostapd.c index 5850cb5da629..ac60ac9a8082 100644 --- a/core/hdd/src/wlan_hdd_hostapd.c +++ b/core/hdd/src/wlan_hdd_hostapd.c @@ -5192,7 +5192,7 @@ int wlan_hdd_cfg80211_start_bss(struct hdd_adapter *adapter, hdd_debug("Waiting for Scan to complete(auto mode) and BSS to start"); qdf_status = qdf_wait_for_event_completion(&hostapd_state->qdf_event, - SME_CMD_TIMEOUT_VALUE); + SME_CMD_START_STOP_BSS_TIMEOUT); wlansap_reset_sap_config_add_ie(pConfig, eUPDATE_IE_ALL); @@ -5397,7 +5397,7 @@ static int __wlan_hdd_cfg80211_stop_ap(struct wiphy *wiphy, qdf_status = qdf_wait_for_event_completion(&hostapd_state-> qdf_stop_bss_event, - SME_CMD_TIMEOUT_VALUE); + SME_CMD_START_STOP_BSS_TIMEOUT); if (!QDF_IS_STATUS_SUCCESS(qdf_status)) { hdd_err("qdf wait for single_event failed!!"); diff --git a/core/hdd/src/wlan_hdd_hostapd_wext.c b/core/hdd/src/wlan_hdd_hostapd_wext.c index 52adec2ea355..9f29ad0ce36f 100644 --- a/core/hdd/src/wlan_hdd_hostapd_wext.c +++ b/core/hdd/src/wlan_hdd_hostapd_wext.c @@ -2146,7 +2146,7 @@ __iw_softap_stopbss(struct net_device *dev, status = qdf_wait_for_event_completion(&hostapd_state-> qdf_stop_bss_event, - SME_CMD_TIMEOUT_VALUE); + SME_CMD_START_STOP_BSS_TIMEOUT); if (!QDF_IS_STATUS_SUCCESS(status)) { hdd_err("wait for single_event failed!!"); diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index 9e66bc9d79dd..964c3b0c1d98 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/core/hdd/src/wlan_hdd_main.c @@ -5163,7 +5163,7 @@ QDF_STATUS hdd_stop_adapter_ext(struct hdd_context *hdd_ctx, qdf_status = qdf_wait_for_event_completion( &hostapd_state->qdf_stop_bss_event, - SME_CMD_TIMEOUT_VALUE); + SME_CMD_START_STOP_BSS_TIMEOUT); if (!QDF_IS_STATUS_SUCCESS(qdf_status)) { hdd_err("failure waiting for wlansap_stop_bss %d", @@ -12212,7 +12212,7 @@ void wlan_hdd_stop_sap(struct hdd_adapter *ap_adapter) sap_context)) { qdf_status = qdf_wait_for_event_completion(&hostapd_state-> qdf_stop_bss_event, - SME_CMD_TIMEOUT_VALUE); + SME_CMD_START_STOP_BSS_TIMEOUT); if (!QDF_IS_STATUS_SUCCESS(qdf_status)) { mutex_unlock(&hdd_ctx->sap_lock); hdd_err("SAP Stop Failed"); @@ -12284,7 +12284,7 @@ void wlan_hdd_start_sap(struct hdd_adapter *ap_adapter, bool reinit) hdd_debug("Waiting for SAP to start"); qdf_status = qdf_wait_for_event_completion(&hostapd_state->qdf_event, - SME_CMD_TIMEOUT_VALUE); + SME_CMD_START_STOP_BSS_TIMEOUT); if (!QDF_IS_STATUS_SUCCESS(qdf_status)) { hdd_err("SAP Start failed"); goto end; @@ -14198,7 +14198,7 @@ void hdd_restart_sap(struct hdd_adapter *ap_adapter) qdf_status = qdf_wait_for_event_completion(&hostapd_state-> qdf_stop_bss_event, - SME_CMD_TIMEOUT_VALUE); + SME_CMD_START_STOP_BSS_TIMEOUT); if (!QDF_IS_STATUS_SUCCESS(qdf_status)) { hdd_err("SAP Stop Failed"); @@ -14232,7 +14232,7 @@ void hdd_restart_sap(struct hdd_adapter *ap_adapter) hdd_info("Waiting for SAP to start"); qdf_status = qdf_wait_for_event_completion(&hostapd_state->qdf_event, - SME_CMD_TIMEOUT_VALUE); + SME_CMD_START_STOP_BSS_TIMEOUT); wlansap_reset_sap_config_add_ie(sap_config, eUPDATE_IE_ALL); if (!QDF_IS_STATUS_SUCCESS(qdf_status)) { diff --git a/core/sme/inc/sme_api.h b/core/sme/inc/sme_api.h index 17b691b53c5d..de3e57bd4de9 100644 --- a/core/sme/inc/sme_api.h +++ b/core/sme/inc/sme_api.h @@ -101,6 +101,10 @@ #define SME_ACTIVE_LIST_CMD_TIMEOUT_VALUE (30*1000) #define SME_CMD_TIMEOUT_VALUE (SME_ACTIVE_LIST_CMD_TIMEOUT_VALUE + 1000) + +/* SME timeout for Start/Stop BSS commands is set to 10 secs */ +#define SME_START_STOP_BSS_CMD_TIMEOUT (10 * 1000) +#define SME_CMD_START_STOP_BSS_TIMEOUT (SME_START_STOP_BSS_CMD_TIMEOUT + 1000) /*-------------------------------------------------------------------------- Type declarations ------------------------------------------------------------------------*/ diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index 859108596421..be22281fb372 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -20395,7 +20395,18 @@ QDF_STATUS csr_set_serialization_params_to_cmd(tpAniSirGlobal mac_ctx, return status; } cmd->umac_cmd = sme_cmd; - cmd->cmd_timeout_duration = SME_DEFAULT_CMD_TIMEOUT; + + /* + * For START BSS and STOP BSS commands for SAP, the command timeout + * is set to 10 seconds. For all other commands its 30 seconds + */ + if ((cmd->vdev->vdev_mlme.vdev_opmode == QDF_SAP_MODE) && + ((cmd->cmd_type == WLAN_SER_CMD_HDD_ISSUED) || + (cmd->cmd_type == WLAN_SER_CMD_VDEV_STOP_BSS))) + cmd->cmd_timeout_duration = SME_START_STOP_BSS_CMD_TIMEOUT; + else + cmd->cmd_timeout_duration = SME_DEFAULT_CMD_TIMEOUT; + cmd->cmd_cb = sme_ser_cmd_callback; cmd->is_high_priority = high_priority; cmd->is_blocking = true;