Ver Fonte

qcacld-3.0: Reduce the command timeout for Start/Stop BSS command to 10s

Currently the command timeout value in serialization for start_bss
and stop_bss commands for SAP are set to 30 seconds which is too high.

Reduce the command timeout value for SAP start_bss and stop_bss
commands in serialization to 10 seconds.

Change-Id: I1bcfe13de92a703ec55445b344a502f7843bbed8
CRs-Fixed: 2331830
Vignesh Viswanathan há 6 anos atrás
pai
commit
865daaaf85

+ 2 - 2
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!!");

+ 1 - 1
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!!");

+ 5 - 5
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)) {

+ 4 - 0
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
   ------------------------------------------------------------------------*/

+ 12 - 1
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;