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
diff --git a/core/mac/inc/wni_api.h b/core/mac/inc/wni_api.h
index d263196..a714777 100644
--- a/core/mac/inc/wni_api.h
+++ b/core/mac/inc/wni_api.h
@@ -185,7 +185,6 @@
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 */
diff --git a/core/mac/src/sys/legacy/src/utils/src/mac_trace.c b/core/mac/src/sys/legacy/src/utils/src/mac_trace.c
index 8a7290d..e0c1423 100644
--- a/core/mac/src/sys/legacy/src/utils/src/mac_trace.c
+++ b/core/mac/src/sys/legacy/src/utils/src/mac_trace.c
@@ -321,7 +321,6 @@
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 @@
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);
diff --git a/core/sme/src/common/sme_api.c b/core/sme/src/common/sme_api.c
index 1f3911d..57821d0 100644
--- a/core/sme/src/common/sme_api.c
+++ b/core/sme/src/common/sme_api.c
@@ -2439,13 +2439,6 @@
}
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 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 @@
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 @@
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;
}
diff --git a/core/wma/inc/wma_api.h b/core/wma/inc/wma_api.h
index d18b622..23ddd79 100644
--- a/core/wma/inc/wma_api.h
+++ b/core/wma/inc/wma_api.h
@@ -140,6 +140,7 @@
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
diff --git a/core/wma/inc/wma_internal.h b/core/wma/inc/wma_internal.h
index 541502b..cbb758d 100644
--- a/core/wma/inc/wma_internal.h
+++ b/core/wma/inc/wma_internal.h
@@ -892,8 +892,6 @@
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);
diff --git a/core/wma/inc/wma_types.h b/core/wma/inc/wma_types.h
index 78b4013..1190b73 100644
--- a/core/wma/inc/wma_types.h
+++ b/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
diff --git a/core/wma/src/wma_main.c b/core/wma/src/wma_main.c
index c3f7e1a..cba0adc 100644
--- a/core/wma/src/wma_main.c
+++ b/core/wma/src/wma_main.c
@@ -6653,10 +6653,6 @@
(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);
diff --git a/core/wma/src/wma_utils.c b/core/wma/src/wma_utils.c
index a2c40b3..3b5130d 100644
--- a/core/wma/src/wma_utils.c
+++ b/core/wma/src/wma_utils.c
@@ -2784,24 +2784,28 @@
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;
}