Browse Source

qcacld-3.0: Remove serialization for get link speed cmd

Currently, Host serialize get link speed command through
MC thread which is truly not required.Hence removing
serialization for get link speed cmd.

Change-Id: Ia2895394025056d4957856bb9bde0350b55d25ca
CRs-Fixed: 2042492
Mukul Sharma 8 years ago
parent
commit
c3886aad85

+ 0 - 1
core/mac/inc/wni_api.h

@@ -185,7 +185,6 @@ enum eWniMsgTypes {
 	eWNI_SME_DFS_CSAIE_TX_COMPLETE_IND,     /* To indicate completion of CSA IE */
 	/* update in beacons/probe rsp */
 	eWNI_SME_STATS_EXT_EVENT,
-	eWNI_SME_LINK_SPEED_IND,        /* Indicate linkspeed response from WMA */
 	eWNI_SME_CSA_OFFLOAD_EVENT,
 	eWNI_SME_UPDATE_ADDITIONAL_IES, /* indicates Additional IE from hdd to PE */
 	eWNI_SME_MODIFY_ADDITIONAL_IES, /* To indicate IE modify from hdd to PE */

+ 0 - 2
core/mac/src/sys/legacy/src/utils/src/mac_trace.c

@@ -321,7 +321,6 @@ uint8_t *mac_trace_get_sme_msg_string(uint16_t sme_msg)
 		CASE_RETURN_STRING(eWNI_SME_DFS_BEACON_CHAN_SW_IE_REQ);
 		CASE_RETURN_STRING(eWNI_SME_DFS_CSAIE_TX_COMPLETE_IND);
 		CASE_RETURN_STRING(eWNI_SME_STATS_EXT_EVENT);
-		CASE_RETURN_STRING(eWNI_SME_LINK_SPEED_IND);
 		CASE_RETURN_STRING(eWNI_SME_CSA_OFFLOAD_EVENT);
 		CASE_RETURN_STRING(eWNI_SME_UPDATE_ADDITIONAL_IES);
 		CASE_RETURN_STRING(eWNI_SME_MODIFY_ADDITIONAL_IES);
@@ -663,7 +662,6 @@ uint8_t *mac_trace_get_wma_msg_string(uint16_t wma_msg)
 		CASE_RETURN_STRING(WMA_DFS_BEACON_TX_SUCCESS_IND);
 		CASE_RETURN_STRING(WMA_DISASSOC_TX_COMP);
 		CASE_RETURN_STRING(WMA_DEAUTH_TX_COMP);
-		CASE_RETURN_STRING(WMA_GET_LINK_SPEED);
 		CASE_RETURN_STRING(WMA_MODEM_POWER_STATE_IND);
 #ifdef WLAN_FEATURE_STATS_EXT
 		CASE_RETURN_STRING(WMA_STATS_EXT_REQUEST);

+ 9 - 17
core/sme/src/common/sme_api.c

@@ -2439,13 +2439,6 @@ QDF_STATUS sme_process_msg(tHalHandle hHal, struct scheduler_msg *pMsg)
 		}
 		break;
 #endif
-	case eWNI_SME_LINK_SPEED_IND:
-		if (pMac->sme.pLinkSpeedIndCb)
-			pMac->sme.pLinkSpeedIndCb(pMsg->bodyptr,
-						pMac->sme.pLinkSpeedCbContext);
-		if (pMsg->bodyptr)
-			qdf_mem_free(pMsg->bodyptr);
-		break;
 	case eWNI_SME_CSA_OFFLOAD_EVENT:
 		if (pMsg->bodyptr) {
 			csr_scan_flush_bss_entry(pMac, pMsg->bodyptr);
@@ -9791,7 +9784,7 @@ QDF_STATUS sme_get_link_speed(tHalHandle hHal, tSirLinkSpeedInfo *lsReq,
 	QDF_STATUS status = QDF_STATUS_SUCCESS;
 	tpAniSirGlobal pMac;
 	tSirLinkSpeedInfo *req;
-	struct scheduler_msg message = {0};
+	void *wma_handle;
 
 	if (!hHal || !pCallbackfn || !lsReq) {
 		QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_ERROR,
@@ -9799,6 +9792,13 @@ QDF_STATUS sme_get_link_speed(tHalHandle hHal, tSirLinkSpeedInfo *lsReq,
 		return QDF_STATUS_E_FAILURE;
 	}
 
+	wma_handle = cds_get_context(QDF_MODULE_ID_WMA);
+	if (!wma_handle) {
+		QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_ERROR,
+				"wma handle is NULL");
+		return QDF_STATUS_E_FAILURE;
+	}
+
 	pMac = PMAC_STRUCT(hHal);
 	req = qdf_mem_malloc(sizeof(*req));
 	if (!req) {
@@ -9816,16 +9816,8 @@ QDF_STATUS sme_get_link_speed(tHalHandle hHal, tSirLinkSpeedInfo *lsReq,
 
 	pMac->sme.pLinkSpeedCbContext = plsContext;
 	pMac->sme.pLinkSpeedIndCb = pCallbackfn;
-
-	/* serialize the req through MC thread */
-	message.bodyptr = req;
-	message.type = WMA_GET_LINK_SPEED;
-	status = scheduler_post_msg(QDF_MODULE_ID_WMA, &message);
+	status = wma_get_link_speed(wma_handle, req);
 	sme_release_global_lock(&pMac->sme);
-	if (!QDF_IS_STATUS_SUCCESS(status)) {
-		sme_err("%s: Post Link Speed msg fail", __func__);
-		qdf_mem_free(req);
-	}
 
 	return status;
 }

+ 1 - 0
core/wma/inc/wma_api.h

@@ -140,6 +140,7 @@ void wma_set_peer_authorized_cb(void *wma_ctx, wma_peer_authorized_fp auth_cb);
 QDF_STATUS wma_set_peer_param(void *wma_ctx, uint8_t *peer_addr,
 		  uint32_t param_id,
 		  uint32_t param_value, uint32_t vdev_id);
+QDF_STATUS wma_get_link_speed(WMA_HANDLE handle, tSirLinkSpeedInfo *pLinkSpeed);
 #ifdef NOT_YET
 QDF_STATUS wma_update_channel_list(WMA_HANDLE handle, void *scan_chan_info);
 #endif

+ 0 - 2
core/wma/inc/wma_internal.h

@@ -892,8 +892,6 @@ void wma_process_link_status_req(tp_wma_handle wma,
 QDF_STATUS wma_process_dhcp_ind(tp_wma_handle wma_handle,
 				tAniDHCPInd *ta_dhcp_ind);
 
-QDF_STATUS wma_get_link_speed(WMA_HANDLE handle, tSirLinkSpeedInfo *pLinkSpeed);
-
 int wma_profile_data_report_event_handler(void *handle, uint8_t *event_buf,
 				       uint32_t len);
 

+ 0 - 1
core/wma/inc/wma_types.h

@@ -378,7 +378,6 @@
 #define WMA_DFS_BEACON_TX_SUCCESS_IND   SIR_HAL_BEACON_TX_SUCCESS_IND
 #define WMA_DISASSOC_TX_COMP       SIR_HAL_DISASSOC_TX_COMP
 #define WMA_DEAUTH_TX_COMP         SIR_HAL_DEAUTH_TX_COMP
-#define WMA_GET_LINK_SPEED         SIR_HAL_GET_LINK_SPEED
 
 #define WMA_MODEM_POWER_STATE_IND SIR_HAL_MODEM_POWER_STATE_IND
 

+ 0 - 4
core/wma/src/wma_main.c

@@ -6653,10 +6653,6 @@ QDF_STATUS wma_mc_process_msg(void *cds_context, struct scheduler_msg *msg)
 					  (tDisableIntraBssFwd *) msg->bodyptr);
 		qdf_mem_free(msg->bodyptr);
 		break;
-	case WMA_GET_LINK_SPEED:
-		wma_get_link_speed(wma_handle, msg->bodyptr);
-		qdf_mem_free(msg->bodyptr);
-		break;
 	case WMA_MODEM_POWER_STATE_IND:
 		wma_notify_modem_power_state(wma_handle,
 				(tSirModemPowerStateInd *) msg->bodyptr);

+ 16 - 12
core/wma/src/wma_utils.c

@@ -2784,24 +2784,28 @@ int wma_stats_event_handler(void *handle, uint8_t *cmd_param_info,
 QDF_STATUS wma_send_link_speed(uint32_t link_speed)
 {
 	QDF_STATUS qdf_status = QDF_STATUS_SUCCESS;
-	struct scheduler_msg sme_msg = { 0 };
-	tSirLinkSpeedInfo *ls_ind =
-		(tSirLinkSpeedInfo *) qdf_mem_malloc(sizeof(tSirLinkSpeedInfo));
+	tpAniSirGlobal mac_ctx;
+	tSirLinkSpeedInfo *ls_ind;
+
+	mac_ctx = cds_get_context(QDF_MODULE_ID_PE);
+	if (!mac_ctx) {
+		WMA_LOGD("%s: NULL pMac ptr. Exiting", __func__);
+		return QDF_STATUS_E_INVAL;
+	}
+
+	ls_ind = (tSirLinkSpeedInfo *)qdf_mem_malloc(sizeof(tSirLinkSpeedInfo));
 	if (!ls_ind) {
 		WMA_LOGE("%s: Memory allocation failed.", __func__);
 		qdf_status = QDF_STATUS_E_NOMEM;
 	} else {
 		ls_ind->estLinkSpeed = link_speed;
-		sme_msg.type = eWNI_SME_LINK_SPEED_IND;
-		sme_msg.bodyptr = ls_ind;
-		sme_msg.bodyval = 0;
+		if (mac_ctx->sme.pLinkSpeedIndCb)
+			mac_ctx->sme.pLinkSpeedIndCb(ls_ind,
+					mac_ctx->sme.pLinkSpeedCbContext);
+		else
+			WMA_LOGD("%s: pLinkSpeedIndCb is null", __func__);
+		qdf_mem_free(ls_ind);
 
-		qdf_status = scheduler_post_msg(QDF_MODULE_ID_SME, &sme_msg);
-		if (!QDF_IS_STATUS_SUCCESS(qdf_status)) {
-			WMA_LOGE("%s: Fail to post linkspeed ind  msg",
-				 __func__);
-			qdf_mem_free(ls_ind);
-		}
 	}
 	return qdf_status;
 }