From 897a46ba59d2173dd4b4118a3c567c4cdb4e778d Mon Sep 17 00:00:00 2001 From: Ashish Kumar Dhanotiya Date: Mon, 10 Jun 2019 21:02:19 +0530 Subject: [PATCH] qcacld-3.0: Remove legacy implementation of get station api Driver has a stats infrastructure and all the stats related commands are using this infrastructure. Remove legacy implementation for get station stats api as part of cleanup. Change-Id: Iadc7fceccec32e7a27c29872fb13c03f79208965 CRs-Fixed: 2480770 --- core/hdd/src/wlan_hdd_stats.c | 116 --- core/hdd/src/wlan_hdd_wext.c | 103 --- core/mac/inc/sir_api.h | 17 - core/mac/inc/wni_api.h | 6 +- core/mac/src/include/sir_params.h | 5 +- .../src/pe/lim/lim_process_message_queue.c | 5 - .../src/pe/lim/lim_process_sme_req_messages.c | 46 -- .../src/pe/lim/lim_send_sme_rsp_messages.c | 60 -- .../src/pe/lim/lim_send_sme_rsp_messages.h | 8 - .../src/sys/legacy/src/utils/src/mac_trace.c | 4 - core/sme/inc/csr_api.h | 8 - core/sme/inc/csr_internal.h | 37 - core/sme/inc/sme_api.h | 11 - core/sme/src/common/sme_api.c | 40 -- core/sme/src/csr/csr_api_roam.c | 675 ------------------ core/sme/src/csr/csr_cmd_process.c | 6 - core/sme/src/csr/csr_inside_api.h | 7 - core/wma/inc/wma_internal.h | 7 - core/wma/inc/wma_types.h | 3 - core/wma/src/wma_main.c | 4 - core/wma/src/wma_utils.c | 144 ---- 21 files changed, 3 insertions(+), 1309 deletions(-) diff --git a/core/hdd/src/wlan_hdd_stats.c b/core/hdd/src/wlan_hdd_stats.c index e68e618bca33..fac15c4f1691 100644 --- a/core/hdd/src/wlan_hdd_stats.c +++ b/core/hdd/src/wlan_hdd_stats.c @@ -5583,7 +5583,6 @@ int wlan_hdd_get_peer_info(struct hdd_adapter *adapter, return ret; } -#ifdef QCA_SUPPORT_CP_STATS int wlan_hdd_get_station_stats(struct hdd_adapter *adapter) { int ret = 0; @@ -5662,121 +5661,6 @@ int wlan_hdd_get_station_stats(struct hdd_adapter *adapter) return 0; } -#else /* QCA_SUPPORT_CP_STATS */ -struct station_stats { - tCsrSummaryStatsInfo summary_stats; - tCsrGlobalClassAStatsInfo class_a_stats; - struct csr_per_chain_rssi_stats_info per_chain_rssi_stats; -}; - -/** - * hdd_get_station_statistics_cb() - Get stats callback function - * @stats: pointer to combined station stats - * @context: user context originally registered with SME (always the - * cookie from the request context) - * - * Return: None - */ -static void hdd_get_station_statistics_cb(void *stats, void *context) -{ - struct osif_request *request; - struct station_stats *priv; - tCsrSummaryStatsInfo *summary_stats; - tCsrGlobalClassAStatsInfo *class_a_stats; - struct csr_per_chain_rssi_stats_info *per_chain_rssi_stats; - - if ((!stats) || (!context)) { - hdd_err("Bad param, stats [%pK] context [%pK]", - stats, context); - return; - } - - request = osif_request_get(context); - if (!request) { - hdd_err("Obsolete request"); - return; - } - - summary_stats = (tCsrSummaryStatsInfo *) stats; - class_a_stats = (tCsrGlobalClassAStatsInfo *) (summary_stats + 1); - per_chain_rssi_stats = (struct csr_per_chain_rssi_stats_info *) - (class_a_stats + 1); - priv = osif_request_priv(request); - - /* copy over the stats. do so as a struct copy */ - priv->summary_stats = *summary_stats; - priv->class_a_stats = *class_a_stats; - priv->per_chain_rssi_stats = *per_chain_rssi_stats; - - osif_request_complete(request); - osif_request_put(request); -} - -int wlan_hdd_get_station_stats(struct hdd_adapter *adapter) -{ - struct hdd_station_ctx *sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(adapter); - QDF_STATUS status; - int errno; - void *cookie; - struct osif_request *request; - struct station_stats *priv; - static const struct osif_request_params params = { - .priv_size = sizeof(*priv), - .timeout_ms = WLAN_WAIT_TIME_STATS, - }; - - if (!adapter) { - hdd_err("adapter is NULL"); - return 0; - } - - request = osif_request_alloc(¶ms); - if (!request) { - hdd_err("Request allocation failure"); - return -ENOMEM; - } - cookie = osif_request_cookie(request); - - /* query only for Summary & Class A statistics */ - status = sme_get_statistics(adapter->hdd_ctx->mac_handle, - eCSR_HDD, - SME_SUMMARY_STATS | - SME_GLOBAL_CLASSA_STATS | - SME_PER_CHAIN_RSSI_STATS, - hdd_get_station_statistics_cb, - sta_ctx->conn_info.sta_id[0], - cookie, - adapter->vdev_id); - if (QDF_IS_STATUS_ERROR(status)) { - hdd_err("Failed to retrieve statistics, status %d", status); - goto put_request; - } - - /* request was sent -- wait for the response */ - errno = osif_request_wait_for_response(request); - if (errno) { - hdd_err("Failed to wait for statistics, errno %d", errno); - goto put_request; - } - - /* update the adapter with the fresh results */ - priv = osif_request_priv(request); - adapter->hdd_stats.summary_stat = priv->summary_stats; - adapter->hdd_stats.class_a_stat = priv->class_a_stats; - adapter->hdd_stats.per_chain_rssi_stats = priv->per_chain_rssi_stats; - -put_request: - /* - * either we never sent a request, we sent a request and - * received a response or we sent a request and timed out. - * regardless we are done with the request. - */ - osif_request_put(request); - - /* either callback updated adapter stats or it has cached data */ - return 0; -} -#endif /* QCA_SUPPORT_CP_STATS */ struct temperature_priv { int temperature; diff --git a/core/hdd/src/wlan_hdd_wext.c b/core/hdd/src/wlan_hdd_wext.c index fa253c9e83b4..ac061395f878 100644 --- a/core/hdd/src/wlan_hdd_wext.c +++ b/core/hdd/src/wlan_hdd_wext.c @@ -9040,113 +9040,10 @@ static int iw_set_packet_filter_params(struct net_device *dev, } #endif -#ifdef QCA_SUPPORT_CP_STATS static int hdd_get_wlan_stats(struct hdd_adapter *adapter) { return wlan_hdd_get_station_stats(adapter); } -#else /* QCA_SUPPORT_CP_STATS */ -struct hdd_statistics_priv { - tCsrSummaryStatsInfo summary_stats; - tCsrGlobalClassAStatsInfo class_a_stats; - tCsrGlobalClassDStatsInfo class_d_stats; -}; - -/** - * hdd_statistics_cb() - "Get statistics" callback function - * @stats: statistics payload - * @context: opaque context originally passed to SME. HDD always passes - * a cookie for the request context - * - * Return: None - */ -static void hdd_statistics_cb(void *stats, void *context) -{ - struct osif_request *request; - struct hdd_statistics_priv *priv; - tCsrSummaryStatsInfo *summary_stats; - tCsrGlobalClassAStatsInfo *class_a_stats; - tCsrGlobalClassDStatsInfo *class_d_stats; - - request = osif_request_get(context); - if (!request) { - hdd_err("Obsolete request"); - return; - } - - priv = osif_request_priv(request); - - summary_stats = (tCsrSummaryStatsInfo *)stats; - priv->summary_stats = *summary_stats; - - class_a_stats = (tCsrGlobalClassAStatsInfo *)(summary_stats + 1); - priv->class_a_stats = *class_a_stats; - - class_d_stats = (tCsrGlobalClassDStatsInfo *)(class_a_stats + 1); - priv->class_d_stats = *class_d_stats; - - osif_request_complete(request); - osif_request_put(request); -} - -static int hdd_get_wlan_stats(struct hdd_adapter *adapter) -{ - int ret = 0; - void *cookie; - QDF_STATUS status; - struct osif_request *request; - struct hdd_station_ctx *sta_ctx; - struct hdd_statistics_priv *priv; - struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter); - static const struct osif_request_params params = { - .priv_size = sizeof(*priv), - .timeout_ms = WLAN_WAIT_TIME_STATS, - }; - - sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(adapter); - request = osif_request_alloc(¶ms); - if (!request) { - hdd_warn("request allocation failed"); - return -EINVAL; - } - - cookie = osif_request_cookie(request); - status = sme_get_statistics(hdd_ctx->mac_handle, eCSR_HDD, - SME_SUMMARY_STATS | - SME_GLOBAL_CLASSA_STATS | - SME_GLOBAL_CLASSD_STATS, - hdd_statistics_cb, - sta_ctx->conn_info.sta_id[0], - cookie, adapter->vdev_id); - - if (QDF_STATUS_SUCCESS != status) { - hdd_warn("Unable to retrieve SME statistics"); - goto put_request; - } - - /* request was sent -- wait for the response */ - ret = osif_request_wait_for_response(request); - if (ret) { - hdd_err("Failed to wait for statistics, errno %d", ret); - goto put_request; - } - - /* update the adapter cache with the fresh results */ - priv = osif_request_priv(request); - adapter->hdd_stats.summary_stat = priv->summary_stats; - adapter->hdd_stats.class_a_stat = priv->class_a_stats; - adapter->hdd_stats.class_d_stat = priv->class_d_stats; - -put_request: - /* - * either we never sent a request, we sent a request and - * received a response or we sent a request and timed out. - * regardless we are done with the request. - */ - osif_request_put(request); - return ret; -} -#endif /* QCA_SUPPORT_CP_STATS */ static int __iw_get_statistics(struct net_device *dev, struct iw_request_info *info, diff --git a/core/mac/inc/sir_api.h b/core/mac/inc/sir_api.h index 92099e1f30d8..5d2d14ec0ad1 100644 --- a/core/mac/inc/sir_api.h +++ b/core/mac/inc/sir_api.h @@ -1381,23 +1381,6 @@ struct set_context_rsp { struct qdf_mac_addr peer_macaddr; }; -/*******************PE Statistics*************************/ - -/* - * tpAniGetPEStatsReq is tied to - * for SME ==> PE eWNI_SME_GET_STATISTICS_REQ msgId and - * for PE ==> HAL SIR_HAL_GET_STATISTICS_REQ msgId - */ -typedef struct sAniGetPEStatsReq { - /* Common for all types are requests */ - uint16_t msgType; /* message type is same as the request type */ - uint16_t msgLen; /* length of the entire request */ - uint32_t staId; /* Per STA stats request must contain valid */ - /* categories of stats requested. look at ePEStatsMask */ - uint32_t statsMask; - uint8_t sessionId; -} tAniGetPEStatsReq, *tpAniGetPEStatsReq; - /* * tpAniGetPEStatsRsp is tied to * for PE ==> SME eWNI_SME_GET_STATISTICS_RSP msgId and diff --git a/core/mac/inc/wni_api.h b/core/mac/inc/wni_api.h index 7d5f2aa7d35e..1ebe51d21d80 100644 --- a/core/mac/inc/wni_api.h +++ b/core/mac/inc/wni_api.h @@ -70,11 +70,9 @@ enum eWniMsgTypes { eWNI_SME_DELTS_REQ = SIR_SME_MSG_TYPES_BEGIN + 30, eWNI_SME_DELTS_RSP = SIR_SME_MSG_TYPES_BEGIN + 31, eWNI_SME_DELTS_IND = SIR_SME_MSG_TYPES_BEGIN + 32, - eWNI_SME_GET_STATISTICS_REQ = SIR_SME_MSG_TYPES_BEGIN + 33, - eWNI_SME_GET_STATISTICS_RSP = SIR_SME_MSG_TYPES_BEGIN + 34, /* - * unused SIR_SME_MSG_TYPES_BEGIN + 35 - * and SIR_SME_MSG_TYPES_BEGIN + 36 + * unused SIR_SME_MSG_TYPES_BEGIN + 33 to + * to SIR_SME_MSG_TYPES_BEGIN + 36 */ eWNI_SME_WPS_PBC_PROBE_REQ_IND = SIR_SME_MSG_TYPES_BEGIN + 37, eWNI_SME_UPPER_LAYER_ASSOC_CNF = SIR_SME_MSG_TYPES_BEGIN + 38, diff --git a/core/mac/src/include/sir_params.h b/core/mac/src/include/sir_params.h index f42850fe9988..f836e1b6e677 100644 --- a/core/mac/src/include/sir_params.h +++ b/core/mac/src/include/sir_params.h @@ -275,12 +275,9 @@ struct sir_cfg_action_frm_tb_ppdu { #define SIR_HAL_GET_TX_POWER_REQ (SIR_HAL_ITC_MSG_TYPES_BEGIN + 72) /* * (SIR_HAL_ITC_MSG_TYPES_BEGIN + 73) thru - * (SIR_HAL_ITC_MSG_TYPES_BEGIN + 87) are unused + * (SIR_HAL_ITC_MSG_TYPES_BEGIN + 89) are unused */ -/* / PE <-> HAL statistics messages */ -#define SIR_HAL_GET_STATISTICS_REQ (SIR_HAL_ITC_MSG_TYPES_BEGIN + 88) -#define SIR_HAL_GET_STATISTICS_RSP (SIR_HAL_ITC_MSG_TYPES_BEGIN + 89) #define SIR_HAL_SET_KEY_DONE (SIR_HAL_ITC_MSG_TYPES_BEGIN + 90) /* / PE <-> HAL BTC messages */ diff --git a/core/mac/src/pe/lim/lim_process_message_queue.c b/core/mac/src/pe/lim/lim_process_message_queue.c index 23d00a01301f..3673c28003cc 100644 --- a/core/mac/src/pe/lim/lim_process_message_queue.c +++ b/core/mac/src/pe/lim/lim_process_message_queue.c @@ -1722,7 +1722,6 @@ static void lim_process_messages(struct mac_context *mac_ctx, case eWNI_SME_FT_PRE_AUTH_REQ: case eWNI_SME_FT_AGGR_QOS_REQ: case eWNI_SME_REGISTER_MGMT_FRAME_REQ: - case eWNI_SME_GET_STATISTICS_REQ: #ifdef FEATURE_WLAN_ESE case eWNI_SME_GET_TSM_STATS_REQ: #endif /* FEATURE_WLAN_ESE */ @@ -1880,10 +1879,6 @@ static void lim_process_messages(struct mac_context *mac_ctx, case WMA_SET_STAKEY_RSP: lim_process_mlm_set_sta_key_rsp(mac_ctx, msg); break; - case WMA_GET_STATISTICS_RSP: - lim_send_sme_pe_statistics_rsp(mac_ctx, msg->type, - (void *)msg->bodyptr); - break; case WMA_SET_MIMOPS_RSP: case WMA_SET_TX_POWER_RSP: qdf_mem_free((void *)msg->bodyptr); diff --git a/core/mac/src/pe/lim/lim_process_sme_req_messages.c b/core/mac/src/pe/lim/lim_process_sme_req_messages.c index e713b89dfcb7..f245830c6e7d 100644 --- a/core/mac/src/pe/lim/lim_process_sme_req_messages.c +++ b/core/mac/src/pe/lim/lim_process_sme_req_messages.c @@ -3448,44 +3448,6 @@ void lim_process_sme_addts_rsp_timeout(struct mac_context *mac, uint32_t param) pe_session->smeSessionId); } -#ifndef QCA_SUPPORT_CP_STATS -/** - * __lim_process_sme_get_statistics_request() - Post WMA_GET_STATISTICS_REQ to - * wma - * @mac Pointer to Global MAC structure - * @msg_buf A pointer to the SME message buffer - * - * @Return None - */ -static void __lim_process_sme_get_statistics_request(struct mac_context *mac, - uint32_t *msg_buf) -{ - tpAniGetPEStatsReq pPEStatsReq; - struct scheduler_msg msgQ = {0}; - - pPEStatsReq = (tpAniGetPEStatsReq)msg_buf; - - msgQ.type = WMA_GET_STATISTICS_REQ; - - msgQ.reserved = 0; - msgQ.bodyptr = msg_buf; - msgQ.bodyval = 0; - MTRACE(mac_trace_msg_tx(mac, NO_SESSION, msgQ.type)); - - if (QDF_STATUS_SUCCESS != (wma_post_ctrl_msg(mac, &msgQ))) { - qdf_mem_free(msg_buf); - msg_buf = NULL; - pe_err("Unable to forward request"); - return; - } - - return; -} -#else -static void __lim_process_sme_get_statistics_request( - struct mac_context *mac_ctx, uint32_t *msg_buf) {} -#endif - #ifdef FEATURE_WLAN_ESE /** * __lim_process_sme_get_tsm_stats_request() - get tsm stats request @@ -4784,14 +4746,6 @@ bool lim_process_sme_req_messages(struct mac_context *mac, lim_process_sme_addts_rsp_timeout(mac, pMsg->bodyval); break; - case eWNI_SME_GET_STATISTICS_REQ: - __lim_process_sme_get_statistics_request(mac, msg_buf); - /* - * HAL consumes msg_buf. It will be freed there. - * Set bufConsumed to false. - */ - bufConsumed = false; - break; #ifdef FEATURE_WLAN_ESE case eWNI_SME_GET_TSM_STATS_REQ: __lim_process_sme_get_tsm_stats_request(mac, msg_buf); diff --git a/core/mac/src/pe/lim/lim_send_sme_rsp_messages.c b/core/mac/src/pe/lim/lim_send_sme_rsp_messages.c index 193625853daf..453e539efea8 100644 --- a/core/mac/src/pe/lim/lim_send_sme_rsp_messages.c +++ b/core/mac/src/pe/lim/lim_send_sme_rsp_messages.c @@ -1345,66 +1345,6 @@ lim_send_sme_delts_ind(struct mac_context *mac, struct delts_req_info *delts, lim_sys_process_mmh_msg_api(mac, &mmhMsg); } -#ifndef QCA_SUPPORT_CP_STATS -/** - * lim_send_sme_pe_statistics_rsp() - * - ***FUNCTION: - * This function is called to send 802.11 statistics response to HDD. - * This function posts the result back to HDD. This is a response to - * HDD's request for statistics. - * - ***PARAMS: - * - ***LOGIC: - * - ***ASSUMPTIONS: - * NA - * - ***NOTE: - * NA - * - * @param mac Pointer to Global MAC structure - * @param p80211Stats Statistics sent in response - * @param resultCode TODO: - * - * - * @return none - */ - -void -lim_send_sme_pe_statistics_rsp(struct mac_context *mac, uint16_t msgType, void *stats) -{ - struct scheduler_msg mmhMsg = {0}; - uint8_t sessionId; - tAniGetPEStatsRsp *pPeStats = (tAniGetPEStatsRsp *) stats; - struct pe_session *pPeSessionEntry; - - /* Get the Session Id based on Sta Id */ - pPeSessionEntry = - pe_find_session_by_sta_id(mac, pPeStats->staId, &sessionId); - - /* Fill the Session Id */ - if (pPeSessionEntry) { - /* Fill the Session Id */ - pPeStats->sessionId = pPeSessionEntry->smeSessionId; - } - - pPeStats->msgType = eWNI_SME_GET_STATISTICS_RSP; - - /* msgType should be WMA_GET_STATISTICS_RSP */ - mmhMsg.type = eWNI_SME_GET_STATISTICS_RSP; - - mmhMsg.bodyptr = stats; - mmhMsg.bodyval = 0; - MTRACE(mac_trace(mac, TRACE_CODE_TX_SME_MSG, NO_SESSION, mmhMsg.type)); - lim_sys_process_mmh_msg_api(mac, &mmhMsg); - - return; - -} /*** end lim_send_sme_pe_statistics_rsp() ***/ -#endif - #ifdef FEATURE_WLAN_ESE /** * lim_send_sme_pe_ese_tsm_rsp() - send tsm response diff --git a/core/mac/src/pe/lim/lim_send_sme_rsp_messages.h b/core/mac/src/pe/lim/lim_send_sme_rsp_messages.h index c291ab368ff0..4fbab9f1f3da 100644 --- a/core/mac/src/pe/lim/lim_send_sme_rsp_messages.h +++ b/core/mac/src/pe/lim/lim_send_sme_rsp_messages.h @@ -215,14 +215,6 @@ void lim_send_sme_delts_ind(struct mac_context *mac, struct delts_req_info *delts, uint16_t aid, struct pe_session *); -#ifdef QCA_SUPPORT_CP_STATS -static inline void lim_send_sme_pe_statistics_rsp(struct mac_context *mac, - uint16_t msgtype, void *stats) {} -#else -void lim_send_sme_pe_statistics_rsp(struct mac_context *mac, uint16_t msgtype, - void *stats); -#endif /* QCA_SUPPORT_CP_STATS */ - #ifdef FEATURE_WLAN_ESE void lim_send_sme_pe_ese_tsm_rsp(struct mac_context *mac, tAniGetTsmStatsRsp *pStats); #endif 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 7440a3b85c72..5db4fcecea06 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 @@ -245,8 +245,6 @@ uint8_t *mac_trace_get_sme_msg_string(uint16_t sme_msg) CASE_RETURN_STRING(eWNI_SME_DELTS_REQ); CASE_RETURN_STRING(eWNI_SME_DELTS_RSP); CASE_RETURN_STRING(eWNI_SME_DELTS_IND); - CASE_RETURN_STRING(eWNI_SME_GET_STATISTICS_REQ); - CASE_RETURN_STRING(eWNI_SME_GET_STATISTICS_RSP); CASE_RETURN_STRING(eWNI_SME_WPS_PBC_PROBE_REQ_IND); CASE_RETURN_STRING(eWNI_SME_UPPER_LAYER_ASSOC_CNF); CASE_RETURN_STRING(eWNI_SME_SESSION_UPDATE_PARAM); @@ -445,8 +443,6 @@ uint8_t *mac_trace_get_wma_msg_string(uint16_t wma_msg) CASE_RETURN_STRING(WMA_ENABLE_UAPSD_REQ); CASE_RETURN_STRING(WMA_DISABLE_UAPSD_REQ); - CASE_RETURN_STRING(WMA_GET_STATISTICS_REQ); - CASE_RETURN_STRING(WMA_GET_STATISTICS_RSP); CASE_RETURN_STRING(WMA_SET_KEY_DONE); CASE_RETURN_STRING(WMA_BTC_SET_CFG); diff --git a/core/sme/inc/csr_api.h b/core/sme/inc/csr_api.h index a17bde952945..bc45f5de0081 100644 --- a/core/sme/inc/csr_api.h +++ b/core/sme/inc/csr_api.h @@ -682,13 +682,6 @@ typedef enum { } eCsrRoamWmmUserModeType; -typedef enum { - eCSR_REQUESTER_MIN = 0, - eCSR_DIAG, - eCSR_UMA_GAN, - eCSR_HDD -} eCsrStatsRequesterType; - typedef struct tagPmkidCandidateInfo { struct qdf_mac_addr BSSID; bool preAuthSupported; @@ -1426,7 +1419,6 @@ QDF_STATUS csr_set_channels(struct mac_context *mac, const char *get_e_roam_cmd_status_str(eRoamCmdStatus val); const char *get_e_csr_roam_result_str(eCsrRoamResult val); const char *csr_phy_mode_str(eCsrPhyMode phy_mode); -typedef void (*tCsrStatsCallback)(void *stats, void *pContext); typedef void (*tCsrRssiCallback)(int8_t rssi, uint32_t staId, void *pContext); #ifdef FEATURE_WLAN_ESE diff --git a/core/sme/inc/csr_internal.h b/core/sme/inc/csr_internal.h index fb0f23652b95..c763a5d367bb 100644 --- a/core/sme/inc/csr_internal.h +++ b/core/sme/inc/csr_internal.h @@ -479,36 +479,6 @@ struct csr_roam_connectedinfo { uint8_t staId; }; -#ifndef QCA_SUPPORT_CP_STATS -struct csr_pestats_reqinfo { - tListElem link; /* list links */ - uint32_t statsMask; - bool rspPending; - uint8_t staId; - uint8_t numClient; - struct mac_context *mac; - uint8_t sessionId; -}; - -struct csr_statsclient_reqinfo { - tListElem link; /* list links */ - eCsrStatsRequesterType requesterId; - tCsrStatsCallback callback; - void *pContext; - uint32_t statsMask; - struct csr_pestats_reqinfo *pPeStaEntry; - uint8_t staId; - qdf_mc_timer_t timer; - bool timerExpired; - struct mac_context *mac; /* TODO: Confirm this change BTAMP */ - uint8_t sessionId; -}; - -struct csr_tlstats_reqinfo { - uint8_t numClient; -}; -#endif /* QCA_SUPPORT_CP_STATS */ - #ifdef WLAN_FEATURE_ROAM_OFFLOAD enum csr_roamoffload_authstatus { /* reassociation is done but couldn't finish security handshake */ @@ -721,9 +691,6 @@ struct csr_roamstruct { tCsrGlobalClassAStatsInfo classAStatsInfo; tCsrGlobalClassDStatsInfo classDStatsInfo; struct csr_per_chain_rssi_stats_info per_chain_rssi_stats; - tDblLinkList statsClientReqList; - tDblLinkList peStatsReqList; - struct csr_tlstats_reqinfo tlStatsReqInfo; #endif struct csr_timer_info WaitForKeyTimerInfo; struct csr_roam_session *roamSession; @@ -944,10 +911,6 @@ bool csr_is_valid_mc_concurrent_session(struct mac_context *mac, struct bss_description *bss_desc); bool csr_is_conn_state_connected_infra_ap(struct mac_context *mac, uint32_t sessionId); -QDF_STATUS csr_get_statistics(struct mac_context *mac, - eCsrStatsRequesterType requesterId, - uint32_t statsMask, tCsrStatsCallback callback, - uint8_t staId, void *pContext, uint8_t sessionId); QDF_STATUS csr_get_snr(struct mac_context *mac, tCsrSnrCallback callback, uint8_t staId, struct qdf_mac_addr bssId, void *pContext); QDF_STATUS csr_get_config_param(struct mac_context *mac, diff --git a/core/sme/inc/sme_api.h b/core/sme/inc/sme_api.h index c13ae7e6d5bb..3d89090b4ee7 100644 --- a/core/sme/inc/sme_api.h +++ b/core/sme/inc/sme_api.h @@ -49,11 +49,6 @@ Preprocessor definitions and constants ------------------------------------------------------------------------*/ -#define SME_SUMMARY_STATS (1 << eCsrSummaryStats) -#define SME_GLOBAL_CLASSA_STATS (1 << eCsrGlobalClassAStats) -#define SME_GLOBAL_CLASSD_STATS (1 << eCsrGlobalClassDStats) -#define SME_PER_CHAIN_RSSI_STATS (1 << csr_per_chain_rssi_stats) - #define sme_alert(params...) QDF_TRACE_FATAL(QDF_MODULE_ID_SME, params) #define sme_err(params...) QDF_TRACE_ERROR(QDF_MODULE_ID_SME, params) #define sme_warn(params...) QDF_TRACE_WARN(QDF_MODULE_ID_SME, params) @@ -593,12 +588,6 @@ QDF_STATUS sme_roam_get_wpa_rsn_rsp_ie(mac_handle_t mac_handle, QDF_STATUS sme_get_config_param(mac_handle_t mac_handle, struct sme_config_params *pParam); -#ifndef QCA_SUPPORT_CP_STATS -QDF_STATUS sme_get_statistics(mac_handle_t mac_handle, - eCsrStatsRequesterType requesterId, - uint32_t statsMask, tCsrStatsCallback callback, - uint8_t staId, void *pContext, uint8_t sessionId); -#endif QDF_STATUS sme_get_snr(mac_handle_t mac_handle, tCsrSnrCallback callback, uint8_t staId, struct qdf_mac_addr bssId, void *pContext); diff --git a/core/sme/src/common/sme_api.c b/core/sme/src/common/sme_api.c index f18a7acd2d73..69772a6b6d78 100644 --- a/core/sme/src/common/sme_api.c +++ b/core/sme/src/common/sme_api.c @@ -3509,46 +3509,6 @@ QDF_STATUS sme_get_snr(mac_handle_t mac_handle, return status; } -#ifndef QCA_SUPPORT_CP_STATS -/* - * sme_get_statistics() - - * A wrapper function that client calls to register a callback to get - * different PHY level statistics from CSR. - * - * requesterId - different client requesting for statistics, - * HDD, UMA/GAN etc - * statsMask - The different category/categories of stats requester - * is looking for - * callback - SME sends back the requested stats using the callback - * periodicity - If requester needs periodic update in millisec, 0 means - * it's an one time request - * cache - If requester is happy with cached stats - * staId - The station ID for which the stats is requested for - * pContext - user context to be passed back along with the callback - * sessionId - sme session interface - * Return QDF_STATUS - */ -QDF_STATUS sme_get_statistics(mac_handle_t mac_handle, - eCsrStatsRequesterType requesterId, - uint32_t statsMask, tCsrStatsCallback callback, - uint8_t staId, void *pContext, uint8_t sessionId) -{ - QDF_STATUS status = QDF_STATUS_E_FAILURE; - struct mac_context *mac = MAC_CONTEXT(mac_handle); - - status = sme_acquire_global_lock(&mac->sme); - if (QDF_IS_STATUS_SUCCESS(status)) { - status = csr_get_statistics(mac, requesterId, statsMask, - callback, staId, pContext, - sessionId); - sme_release_global_lock(&mac->sme); - } - - return status; - -} -#endif - QDF_STATUS sme_get_link_status(mac_handle_t mac_handle, csr_link_status_callback callback, void *context, uint8_t session_id) diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index 602997fdfba9..b84f7db36c84 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -436,34 +436,6 @@ static QDF_STATUS csr_send_mb_set_context_req_msg(struct mac_context *mac, uint8_t *pKeyRsc); static void csr_roam_link_up(struct mac_context *mac, struct qdf_mac_addr bssid); static void csr_roam_link_down(struct mac_context *mac, uint32_t sessionId); -#ifndef QCA_SUPPORT_CP_STATS -static QDF_STATUS csr_send_mb_stats_req_msg(struct mac_context *mac, - uint32_t statsMask, uint8_t staId, - uint8_t sessionId); -/* pStaEntry is no longer invalid upon the return of this function. */ -static void csr_roam_remove_stat_list_entry(struct mac_context *mac, - tListElem *pEntry); -struct csr_statsclient_reqinfo *csr_roam_insert_entry_into_list( - struct mac_context *mac, tDblLinkList *pStaList, - struct csr_statsclient_reqinfo * - pStaEntry); -static void csr_roam_report_statistics(struct mac_context *mac, - uint32_t statsMask, tCsrStatsCallback callback, uint8_t staId, - void *pContext); -tListElem *csr_roam_check_client_req_list( - struct mac_context *mac, uint32_t statsMask); -static void csr_roam_remove_entry_from_pe_stats_req_list( - struct mac_context *mac, struct csr_pestats_reqinfo *pPeStaEntry); -tListElem *csr_roam_find_in_pe_stats_req_list( - struct mac_context *mac, - uint32_t statsMask); -static QDF_STATUS csr_roam_dereg_statistics_req(struct mac_context *mac); -#else -static QDF_STATUS csr_roam_dereg_statistics_req(struct mac_context *mac) -{ - return QDF_STATUS_SUCCESS; -} -#endif static enum csr_cfgdot11mode csr_roam_get_phy_mode_band_for_bss(struct mac_context *mac, struct csr_roam_profile *pProfile, @@ -564,32 +536,6 @@ static void csr_roam_de_init_globals(struct mac_context *mac) mac->roam.roamSession = NULL; } -#ifdef QCA_SUPPORT_CP_STATS -static QDF_STATUS csr_open_stats_ll(struct mac_context *mac_ctx) -{ - return QDF_STATUS_SUCCESS; -} - -static void csr_close_stats_ll(struct mac_context *mac_ctx) {} -#else -static QDF_STATUS csr_open_stats_ll(struct mac_context *mac_ctx) -{ - QDF_STATUS status; - - status = csr_ll_open(&mac_ctx->roam.statsClientReqList); - if (QDF_IS_STATUS_ERROR(status)) - return status; - - return csr_ll_open(&mac_ctx->roam.peStatsReqList); -} - -static void csr_close_stats_ll(struct mac_context *mac_ctx) -{ - csr_ll_close(&mac_ctx->roam.statsClientReqList); - csr_ll_close(&mac_ctx->roam.peStatsReqList); -} -#endif - QDF_STATUS csr_open(struct mac_context *mac) { QDF_STATUS status = QDF_STATUS_SUCCESS; @@ -616,11 +562,6 @@ QDF_STATUS csr_open(struct mac_context *mac) break; } mac->roam.nextRoamId = 1; /* Must not be 0 */ - status = csr_open_stats_ll(mac); - if (QDF_IS_STATUS_ERROR(status)) { - csr_roam_free_globals(); - break; - } } while (0); return status; @@ -678,7 +619,6 @@ QDF_STATUS csr_close(struct mac_context *mac) csr_roam_close(mac); csr_scan_close(mac); - csr_close_stats_ll(mac); /* DeInit Globals */ csr_roam_de_init_globals(mac); return status; @@ -1407,10 +1347,6 @@ QDF_STATUS csr_roam_start(struct mac_context *mac) void csr_roam_stop(struct mac_context *mac, uint32_t sessionId) { csr_roam_stop_roaming_timer(mac, sessionId); - /* deregister the clients requesting stats from PE/TL & also stop - * the corresponding timers - */ - csr_roam_dereg_statistics_req(mac); } QDF_STATUS csr_roam_copy_connect_profile(struct mac_context *mac, @@ -9970,10 +9906,6 @@ void csr_roam_joined_state_msg_processor(struct mac_context *mac, void *msg_buf) tSirSmeRsp *pSirMsg = (tSirSmeRsp *)msg_buf; switch (pSirMsg->messageType) { - case eWNI_SME_GET_STATISTICS_RSP: - sme_debug("Stats rsp from PE"); - csr_roam_stats_rsp_processor(mac, pSirMsg); - break; case eWNI_SME_UPPER_LAYER_ASSOC_CNF: { struct csr_roam_session *pSession; @@ -12377,10 +12309,6 @@ void csr_roam_check_for_link_status_change(struct mac_context *mac, case eWNI_SME_SETCONTEXT_RSP: csr_roam_chk_lnk_set_ctx_rsp(mac, pSirMsg); break; - case eWNI_SME_GET_STATISTICS_RSP: - sme_debug("Stats rsp from PE"); - csr_roam_stats_rsp_processor(mac, pSirMsg); - break; #ifdef FEATURE_WLAN_ESE case eWNI_SME_GET_TSM_STATS_RSP: sme_debug("TSM Stats rsp from PE"); @@ -17349,10 +17277,6 @@ static void csr_roam_link_down(struct mac_context *mac, uint32_t sessionId) eCSR_ROAM_LOSTLINK, eCSR_ROAM_RESULT_LOSTLINK); } - /* deregister the clients requesting stats from PE/TL & also stop the - * corresponding timers - */ - csr_roam_dereg_statistics_req(mac); /* Indicate the neighbor roal algorithm about the disconnect * indication */ @@ -17368,288 +17292,6 @@ static void csr_roam_link_down(struct mac_context *mac, uint32_t sessionId) } -#ifndef QCA_SUPPORT_CP_STATS -QDF_STATUS csr_send_mb_stats_req_msg(struct mac_context *mac, uint32_t statsMask, - uint8_t staId, uint8_t sessionId) -{ - tAniGetPEStatsReq *pMsg; - QDF_STATUS status = QDF_STATUS_SUCCESS; - - pMsg = qdf_mem_malloc(sizeof(tAniGetPEStatsReq)); - if (!pMsg) - return QDF_STATUS_E_NOMEM; - - /* need to initiate a stats request to PE */ - pMsg->msgType = eWNI_SME_GET_STATISTICS_REQ; - pMsg->msgLen = (uint16_t) sizeof(tAniGetPEStatsReq); - pMsg->staId = staId; - pMsg->statsMask = statsMask; - pMsg->sessionId = sessionId; - status = umac_send_mb_message_to_mac(pMsg); - if (!QDF_IS_STATUS_SUCCESS(status)) - sme_debug("Failed to send down the stats req "); - - return status; -} - -/** - * csr_update_stats() - updates correct stats struct in mac_ctx - * @mac: mac global context - * @stats_type: stats type - * @sme_stats_rsp: stats rsp msg packet - * @stats: input stats data buffer to fill in mac_ctx struct - * @length: out param - stats length - * - * This function fills corresponding stats struct in mac_cts based on stats type - * passed - * - * Return: void - */ -static void -csr_update_stats(struct mac_context *mac, uint8_t stats_type, - tAniGetPEStatsRsp *sme_stats_rsp, - uint8_t **stats, uint32_t *length) -{ - switch (stats_type) { - case eCsrSummaryStats: - sme_debug("summary stats"); - qdf_mem_copy((uint8_t *) &mac->roam.summaryStatsInfo, *stats, - sizeof(tCsrSummaryStatsInfo)); - *stats += sizeof(tCsrSummaryStatsInfo); - *length -= sizeof(tCsrSummaryStatsInfo); - break; - case eCsrGlobalClassAStats: - sme_debug("ClassA stats"); - qdf_mem_copy((uint8_t *) &mac->roam.classAStatsInfo, *stats, - sizeof(tCsrGlobalClassAStatsInfo)); - *stats += sizeof(tCsrGlobalClassAStatsInfo); - *length -= sizeof(tCsrGlobalClassAStatsInfo); - break; - case csr_per_chain_rssi_stats: - sme_debug("csrRoamStatsRspProcessor:Per Chain RSSI stats"); - qdf_mem_copy((uint8_t *)&mac->roam.per_chain_rssi_stats, - *stats, sizeof(struct csr_per_chain_rssi_stats_info)); - *stats += sizeof(struct csr_per_chain_rssi_stats_info); - *length -= sizeof(struct csr_per_chain_rssi_stats_info); - break; - default: - sme_warn("unknown stats type"); - break; - } -} - -/** - * csr_roam_stats_rsp_processor() - processes stats rsp msg - * @mac mac global context - * @pSirMsg: incoming message - * - * Return: void - */ -void csr_roam_stats_rsp_processor(struct mac_context *mac, tSirSmeRsp *pSirMsg) -{ - tAniGetPEStatsRsp *pSmeStatsRsp; - tListElem *pEntry = NULL; - struct csr_statsclient_reqinfo *pTempStaEntry = NULL; - struct csr_pestats_reqinfo *pPeStaEntry = NULL; - uint32_t tempMask = 0; - uint8_t counter = 0; - uint8_t *pStats = NULL; - uint32_t length = 0; - int8_t rssi = 0, snr = 0; - uint32_t *pRssi = NULL, *pSnr = NULL; - uint32_t linkCapacity; - - pSmeStatsRsp = (tAniGetPEStatsRsp *) pSirMsg; - if (pSmeStatsRsp->rc) { - sme_warn("stats rsp from PE shows failure"); - goto post_update; - } - tempMask = pSmeStatsRsp->statsMask; - pStats = ((uint8_t *) &pSmeStatsRsp->statsMask) + - sizeof(pSmeStatsRsp->statsMask); - /* - * subtract all statistics from this length, and after processing the - * entire 'stat' part of the message, if the length is not zero, then - * rssi is piggy packed in this 'stats' message. - */ - length = pSmeStatsRsp->msgLen - sizeof(tAniGetPEStatsRsp); - /* new stats info from PE, fill up the stats strucutres in PMAC */ - while (tempMask) { - if (tempMask & 1) - csr_update_stats(mac, counter, pSmeStatsRsp, - &pStats, &length); - tempMask >>= 1; - counter++; - } - if (length != 0) { - pRssi = (uint32_t *) pStats; - rssi = (int8_t) *pRssi; - pStats += sizeof(uint32_t); - length -= sizeof(uint32_t); - } else - /* If riva is not sending rssi, continue to use the hack */ - rssi = RSSI_HACK_BMPS; - - if (length != 0) { - linkCapacity = *(uint32_t *) pStats; - pStats += sizeof(uint32_t); - length -= sizeof(uint32_t); - } else - linkCapacity = 0; - - if (length != 0) { - pSnr = (uint32_t *) pStats; - snr = (int8_t) *pSnr; - } else - snr = SNR_HACK_BMPS; - -post_update: - /* make sure to update the pe stats req list */ - pEntry = csr_roam_find_in_pe_stats_req_list(mac, - pSmeStatsRsp->statsMask); - if (pEntry) { - pPeStaEntry = GET_BASE_ADDR(pEntry, - struct csr_pestats_reqinfo, link); - pPeStaEntry->rspPending = false; - - } - /* check the one timer cases */ - pEntry = csr_roam_check_client_req_list(mac, pSmeStatsRsp->statsMask); - if (pEntry) { - pTempStaEntry = - GET_BASE_ADDR(pEntry, - struct csr_statsclient_reqinfo, link); - if (pTempStaEntry->timerExpired) { - /* send up the stats report */ - csr_roam_report_statistics(mac, - pTempStaEntry->statsMask, - pTempStaEntry->callback, - pTempStaEntry->staId, - pTempStaEntry->pContext); - /* also remove from the client list */ - csr_roam_remove_stat_list_entry(mac, pEntry); - pTempStaEntry = NULL; - } - } -} - -tListElem *csr_roam_find_in_pe_stats_req_list( - struct mac_context *mac, uint32_t statsMask) -{ - tListElem *pEntry = NULL; - struct csr_pestats_reqinfo *pTempStaEntry = NULL; - - pEntry = csr_ll_peek_head(&mac->roam.peStatsReqList, LL_ACCESS_LOCK); - if (!pEntry) { - sme_debug("List empty, no request to PE"); - return NULL; - } - while (pEntry) { - pTempStaEntry = GET_BASE_ADDR(pEntry, struct csr_pestats_reqinfo, link); - if (pTempStaEntry->statsMask == statsMask) - break; - pEntry = - csr_ll_next(&mac->roam.peStatsReqList, pEntry, - LL_ACCESS_NOLOCK); - } - return pEntry; -} - -static -tListElem *csr_roam_checkn_update_client_req_list( -struct mac_context *mac, struct csr_statsclient_reqinfo *pStaEntry, - bool update) -{ - tListElem *pEntry; - struct csr_statsclient_reqinfo *pTempStaEntry; - - pEntry = csr_ll_peek_head(&mac->roam.statsClientReqList, - LL_ACCESS_LOCK); - if (!pEntry) { - /* list empty */ - sme_debug("List empty, no request from upper layer client(s)"); - return NULL; - } - while (pEntry) { - pTempStaEntry = - GET_BASE_ADDR(pEntry, - struct csr_statsclient_reqinfo, link); - if ((pTempStaEntry->requesterId == pStaEntry->requesterId) - && (pTempStaEntry->statsMask == pStaEntry->statsMask)) { - if (update) { - pTempStaEntry->callback = pStaEntry->callback; - pTempStaEntry->pContext = pStaEntry->pContext; - } - break; - } - pEntry = - csr_ll_next(&mac->roam.statsClientReqList, pEntry, - LL_ACCESS_NOLOCK); - } - return pEntry; -} - -tListElem *csr_roam_check_client_req_list(struct mac_context *mac, - uint32_t statsMask) -{ - tListElem *pEntry; - struct csr_statsclient_reqinfo *pTempStaEntry; - - pEntry = csr_ll_peek_head(&mac->roam.statsClientReqList, - LL_ACCESS_LOCK); - if (!pEntry) { - /* list empty */ - sme_debug("List empty, no request from upper layer client(s)"); - return NULL; - } - while (pEntry) { - pTempStaEntry = - GET_BASE_ADDR(pEntry, - struct csr_statsclient_reqinfo, link); - if ((pTempStaEntry-> - statsMask & ~(1 << eCsrGlobalClassDStats)) == statsMask) { - break; - } - pEntry = - csr_ll_next(&mac->roam.statsClientReqList, pEntry, - LL_ACCESS_NOLOCK); - } - return pEntry; -} - -struct csr_statsclient_reqinfo *csr_roam_insert_entry_into_list( - struct mac_context *mac, tDblLinkList *pStaList, - struct csr_statsclient_reqinfo * - pStaEntry) -{ - struct csr_statsclient_reqinfo *pNewStaEntry = NULL; - /* - * if same entity requested for same set of stats with different - * callback update it - */ - if (!csr_roam_checkn_update_client_req_list(mac, pStaEntry, - true)) { - - pNewStaEntry = qdf_mem_malloc(sizeof(struct csr_statsclient_reqinfo)); - if (!pNewStaEntry) - return NULL; - - pNewStaEntry->callback = pStaEntry->callback; - pNewStaEntry->pContext = pStaEntry->pContext; - pNewStaEntry->requesterId = pStaEntry->requesterId; - pNewStaEntry->statsMask = pStaEntry->statsMask; - pNewStaEntry->pPeStaEntry = pStaEntry->pPeStaEntry; - pNewStaEntry->mac = pStaEntry->mac; - pNewStaEntry->staId = pStaEntry->staId; - pNewStaEntry->timerExpired = pStaEntry->timerExpired; - - csr_ll_insert_tail(pStaList, &pNewStaEntry->link, - LL_ACCESS_LOCK); - } - return pNewStaEntry; -} -#endif /* QCA_SUPPORT_CP_STATS */ - QDF_STATUS csr_get_snr(struct mac_context *mac, tCsrSnrCallback callback, uint8_t staId, struct qdf_mac_addr bssId, void *pContext) @@ -17691,141 +17333,6 @@ QDF_STATUS csr_get_snr(struct mac_context *mac, return status; } -#ifndef QCA_SUPPORT_CP_STATS -/** - * csr_deregister_client_request() - deregisters a get stats request - * @mac_ctx: mac global context - * @sta_entry: stats request entry - * - * Return: status of operation - */ -static QDF_STATUS -csr_deregister_client_request(struct mac_context *mac_ctx, - struct csr_statsclient_reqinfo *sta_entry) -{ - QDF_STATUS status; - tListElem *entry = NULL; - struct csr_statsclient_reqinfo *ptr_sta_entry = NULL; - - entry = csr_roam_checkn_update_client_req_list(mac_ctx, sta_entry, - false); - if (!entry) { - sme_err("callback is empty in the request & couldn't find any existing request in statsClientReqList"); - return QDF_STATUS_E_FAILURE; - } - /* clean up & return */ - ptr_sta_entry = GET_BASE_ADDR(entry, - struct csr_statsclient_reqinfo, link); - if (ptr_sta_entry->pPeStaEntry) { - ptr_sta_entry->pPeStaEntry->numClient--; - /* check if we need to delete the entry from peStatsReqList */ - if (!ptr_sta_entry->pPeStaEntry->numClient) - csr_roam_remove_entry_from_pe_stats_req_list(mac_ctx, - ptr_sta_entry->pPeStaEntry); - } - /* check if we need to stop the tl stats timer too */ - mac_ctx->roam.tlStatsReqInfo.numClient--; - qdf_mc_timer_stop(&ptr_sta_entry->timer); - /* Destroy the qdf timer... */ - status = qdf_mc_timer_destroy(&ptr_sta_entry->timer); - if (!QDF_IS_STATUS_SUCCESS(status)) - sme_err( - "failed to destroy Client req timer"); - - csr_roam_remove_stat_list_entry(mac_ctx, entry); - return QDF_STATUS_SUCCESS; -} - -/** - * csr_insert_stats_request_to_list() - inserts request to existing list - * @mac_ctx: mac global context - * @sta_entry: stats request entry - * - * Return: status of operation - */ -static QDF_STATUS -csr_insert_stats_request_to_list(struct mac_context *mac_ctx, - struct csr_statsclient_reqinfo *sta_entry) -{ -struct csr_statsclient_reqinfo *ptr_sta_entry = csr_roam_insert_entry_into_list( - mac_ctx, &mac_ctx->roam.statsClientReqList, - sta_entry); - if (!ptr_sta_entry) { - sme_err("Failed to insert req in statsClientReqList"); - return QDF_STATUS_E_FAILURE; - } - return QDF_STATUS_SUCCESS; -} - -QDF_STATUS csr_get_statistics(struct mac_context *mac, - eCsrStatsRequesterType requesterId, - uint32_t statsMask, - tCsrStatsCallback callback, - uint8_t staId, - void *pContext, - uint8_t sessionId) -{ - struct csr_statsclient_reqinfo staEntry; - QDF_STATUS status = QDF_STATUS_SUCCESS; - bool insertInClientList = false; - uint32_t temp_mask = 0; - - if (csr_is_all_session_disconnected(mac)) - return QDF_STATUS_E_FAILURE; - - if (csr_neighbor_middle_of_roaming(mac, sessionId)) { - sme_debug("in the middle of roaming states"); - return QDF_STATUS_E_FAILURE; - } - - if ((!statsMask) && (!callback)) { - sme_err("statsMask & callback empty in the request"); - return QDF_STATUS_E_FAILURE; - } - /* for the search list method for deregister */ - staEntry.requesterId = requesterId; - staEntry.statsMask = statsMask; - /* requester wants to deregister or just an error */ - if ((statsMask) && (!callback)) - return csr_deregister_client_request(mac, &staEntry); - - /* add the request in the client req list */ - staEntry.callback = callback; - staEntry.pContext = pContext; - staEntry.pPeStaEntry = NULL; - staEntry.staId = staId; - staEntry.mac = mac; - staEntry.timerExpired = false; - staEntry.sessionId = sessionId; - - temp_mask = statsMask & ~(1 << eCsrGlobalClassDStats); - if (temp_mask) { - /* send down a req */ - status = csr_send_mb_stats_req_msg(mac, - temp_mask, staId, sessionId); - if (!QDF_IS_STATUS_SUCCESS(status)) - sme_err("failed to send down stats req"); - /* - * so that when the stats rsp comes back from PE we - * respond to upper layer right away - */ - staEntry.timerExpired = true; - insertInClientList = true; - } - /* if looking for stats from TL only */ - if (!insertInClientList) { - /* return the stats */ - csr_roam_report_statistics(mac, statsMask, callback, - staId, pContext); - return QDF_STATUS_SUCCESS; - } - if (insertInClientList) - return csr_insert_stats_request_to_list(mac, &staEntry); - - return QDF_STATUS_SUCCESS; -} -#endif /* QCA_SUPPORT_CP_STATS */ - #ifdef WLAN_FEATURE_ROAM_OFFLOAD /** * csr_roam_set_key_mgmt_offload() - enable/disable key mgmt offload @@ -19857,188 +19364,6 @@ csr_roam_offload_scan_rsp_hdlr(struct mac_context *mac, } #endif -#ifndef QCA_SUPPORT_CP_STATS -/* pStaEntry is no longer invalid upon the return of this function. */ -static void csr_roam_remove_stat_list_entry(struct mac_context *mac, - tListElem *pEntry) -{ - if (pEntry) { - if (csr_ll_remove_entry(&mac->roam.statsClientReqList, - pEntry, LL_ACCESS_LOCK)) - qdf_mem_free(GET_BASE_ADDR(pEntry, - struct csr_statsclient_reqinfo, link)); - } -} - -static void csr_roam_remove_entry_from_pe_stats_req_list( -struct mac_context *mac, struct csr_pestats_reqinfo *pPeStaEntry) -{ - tListElem *pEntry; - struct csr_pestats_reqinfo *pTempStaEntry; - - pEntry = csr_ll_peek_head(&mac->roam.peStatsReqList, LL_ACCESS_LOCK); - if (!pEntry) { - sme_err("List empty, no stats req for PE"); - return; - } - while (pEntry) { - pTempStaEntry = GET_BASE_ADDR(pEntry, - struct csr_pestats_reqinfo, link); - if (!pTempStaEntry - || (pTempStaEntry->statsMask != - pPeStaEntry->statsMask)) { - pEntry = csr_ll_next(&mac->roam.peStatsReqList, pEntry, - LL_ACCESS_NOLOCK); - continue; - } - sme_debug("Match found"); - if (csr_ll_remove_entry(&mac->roam.peStatsReqList, pEntry, - LL_ACCESS_LOCK)) { - qdf_mem_free(pTempStaEntry); - pTempStaEntry = NULL; - break; - } - pEntry = csr_ll_next(&mac->roam.peStatsReqList, pEntry, - LL_ACCESS_NOLOCK); - } /* end of while loop */ -} - -static void csr_roam_report_statistics(struct mac_context *mac, - uint32_t statsMask, - tCsrStatsCallback callback, uint8_t staId, - void *pContext) -{ - uint8_t stats[500]; - uint8_t *pStats = NULL; - uint32_t tempMask = 0; - uint8_t counter = 0; - - if (!callback) { - sme_err("Cannot report callback NULL"); - return; - } - if (!statsMask) { - sme_err("Cannot report statsMask is 0"); - return; - } - pStats = stats; - tempMask = statsMask; - while (tempMask) { - if (tempMask & 1) { - /* new stats info from PE, fill up the stats - * strucutres in PMAC - */ - switch (counter) { - case eCsrSummaryStats: - sme_debug("Summary stats"); - qdf_mem_copy(pStats, - (uint8_t *) &mac->roam. - summaryStatsInfo, - sizeof(tCsrSummaryStatsInfo)); - pStats += sizeof(tCsrSummaryStatsInfo); - break; - case eCsrGlobalClassAStats: - sme_debug("ClassA stats"); - qdf_mem_copy(pStats, - (uint8_t *) &mac->roam. - classAStatsInfo, - sizeof(tCsrGlobalClassAStatsInfo)); - pStats += sizeof(tCsrGlobalClassAStatsInfo); - break; - case eCsrGlobalClassDStats: - sme_debug("ClassD stats"); - qdf_mem_copy(pStats, - (uint8_t *) &mac->roam. - classDStatsInfo, - sizeof(tCsrGlobalClassDStatsInfo)); - pStats += sizeof(tCsrGlobalClassDStatsInfo); - break; - case csr_per_chain_rssi_stats: - sme_debug("Per Chain RSSI stats"); - qdf_mem_copy(pStats, - (uint8_t *)&mac->roam.per_chain_rssi_stats, - sizeof(struct csr_per_chain_rssi_stats_info)); - pStats += sizeof( - struct csr_per_chain_rssi_stats_info); - break; - default: - sme_err( - "Unknown stats type and counter %d", - counter); - break; - } - } - tempMask >>= 1; - counter++; - } - callback(stats, pContext); -} - -static QDF_STATUS csr_roam_dereg_statistics_req( - struct mac_context *mac) -{ - tListElem *pEntry = NULL; - tListElem *pPrevEntry = NULL; - struct csr_statsclient_reqinfo *pTempStaEntry = NULL; - QDF_STATUS status = QDF_STATUS_SUCCESS; - - pEntry = csr_ll_peek_head(&mac->roam.statsClientReqList, - LL_ACCESS_LOCK); - if (!pEntry) { - /* list empty */ - sme_debug("List empty, no request from upper layer client(s)"); - return status; - } - while (pEntry) { - if (pPrevEntry) { - pTempStaEntry = - GET_BASE_ADDR(pPrevEntry, - struct csr_statsclient_reqinfo, link); - /* send up the stats report */ - csr_roam_report_statistics(mac, - pTempStaEntry->statsMask, - pTempStaEntry->callback, - pTempStaEntry->staId, - pTempStaEntry->pContext); - csr_roam_remove_stat_list_entry(mac, pPrevEntry); - } - pTempStaEntry = - GET_BASE_ADDR(pEntry, struct csr_statsclient_reqinfo, link); - if (pTempStaEntry->pPeStaEntry) { - /* pPeStaEntry can be NULL */ - pTempStaEntry->pPeStaEntry->numClient--; - /* check if we need to delete the entry from - * peStatsReqList too - */ - if (!pTempStaEntry->pPeStaEntry->numClient) { - csr_roam_remove_entry_from_pe_stats_req_list( - mac, - pTempStaEntry-> - pPeStaEntry); - } - } - /* check if we need to stop the tl stats timer too */ - mac->roam.tlStatsReqInfo.numClient--; - pPrevEntry = pEntry; - pEntry = csr_ll_next(&mac->roam.statsClientReqList, pEntry, - LL_ACCESS_NOLOCK); - } - /* the last one */ - if (pPrevEntry) { - pTempStaEntry = - GET_BASE_ADDR(pPrevEntry, struct csr_statsclient_reqinfo, link); - /* send up the stats report */ - csr_roam_report_statistics(mac, pTempStaEntry->statsMask, - pTempStaEntry->callback, - pTempStaEntry->staId, - pTempStaEntry->pContext); - csr_roam_remove_stat_list_entry(mac, pPrevEntry); - } - return status; - -} -#endif /* QCA_SUPPORT_CP_STATS */ - tSmeCmd *csr_get_command_buffer(struct mac_context *mac) { tSmeCmd *pCmd = sme_get_command_buffer(mac); diff --git a/core/sme/src/csr/csr_cmd_process.c b/core/sme/src/csr/csr_cmd_process.c index 11ae301e5317..b662d0f0be31 100644 --- a/core/sme/src/csr/csr_cmd_process.c +++ b/core/sme/src/csr/csr_cmd_process.c @@ -62,12 +62,6 @@ QDF_STATUS csr_msg_processor(struct mac_context *mac_ctx, void *msg_buf) break; default: - if (sme_rsp->messageType == - eWNI_SME_GET_STATISTICS_RSP) { - csr_roam_joined_state_msg_processor(mac_ctx, - msg_buf); - break; - } if (sme_rsp->messageType == eWNI_SME_UPPER_LAYER_ASSOC_CNF) { diff --git a/core/sme/src/csr/csr_inside_api.h b/core/sme/src/csr/csr_inside_api.h index 1e35582a59ca..643aa705b0bc 100644 --- a/core/sme/src/csr/csr_inside_api.h +++ b/core/sme/src/csr/csr_inside_api.h @@ -248,13 +248,6 @@ csr_roam_save_connected_information(struct mac_context *mac, void csr_roam_check_for_link_status_change(struct mac_context *mac, tSirSmeRsp *pSirMsg); -#ifndef QCA_SUPPORT_CP_STATS -void csr_roam_stats_rsp_processor(struct mac_context *mac, tSirSmeRsp *pSirMsg); -#else -static inline void csr_roam_stats_rsp_processor(struct mac_context *mac, - tSirSmeRsp *pSirMsg) {} -#endif /* QCA_SUPPORT_CP_STATS */ - QDF_STATUS csr_roam_issue_start_bss(struct mac_context *mac, uint32_t sessionId, struct csr_roamstart_bssparams *pParam, struct csr_roam_profile *pProfile, diff --git a/core/wma/inc/wma_internal.h b/core/wma/inc/wma_internal.h index 8eddad7f1557..9e7ab02e67fe 100644 --- a/core/wma/inc/wma_internal.h +++ b/core/wma/inc/wma_internal.h @@ -1019,13 +1019,6 @@ int32_t wma_txrx_fw_stats_reset(tp_wma_handle wma_handle, int32_t wma_set_txrx_fw_stats_level(tp_wma_handle wma_handle, uint8_t vdev_id, uint32_t value); -#ifdef QCA_SUPPORT_CP_STATS -static inline void wma_get_stats_req(WMA_HANDLE handle, - struct sAniGetPEStatsReq *get_stats_param) {} -#else -void wma_get_stats_req(WMA_HANDLE handle, - struct sAniGetPEStatsReq *get_stats_param); -#endif /* * wma_features.c functions declarations */ diff --git a/core/wma/inc/wma_types.h b/core/wma/inc/wma_types.h index 08fde319441c..415a554139c9 100644 --- a/core/wma/inc/wma_types.h +++ b/core/wma/inc/wma_types.h @@ -186,9 +186,6 @@ #define WMA_ENABLE_UAPSD_REQ SIR_HAL_ENABLE_UAPSD_REQ #define WMA_DISABLE_UAPSD_REQ SIR_HAL_DISABLE_UAPSD_REQ -/* / PE <-> HAL statistics messages */ -#define WMA_GET_STATISTICS_REQ SIR_HAL_GET_STATISTICS_REQ -#define WMA_GET_STATISTICS_RSP SIR_HAL_GET_STATISTICS_RSP #define WMA_SET_KEY_DONE SIR_HAL_SET_KEY_DONE /* / PE <-> HAL BTC messages */ diff --git a/core/wma/src/wma_main.c b/core/wma/src/wma_main.c index cf7fc3090de3..b8dd2b6dac5b 100644 --- a/core/wma/src/wma_main.c +++ b/core/wma/src/wma_main.c @@ -8636,10 +8636,6 @@ static QDF_STATUS wma_mc_process_msg(struct scheduler_msg *msg) qdf_mem_free(msg->bodyptr); break; #endif - case WMA_GET_STATISTICS_REQ: - wma_get_stats_req(wma_handle, - (tAniGetPEStatsReq *) msg->bodyptr); - break; case WMA_UPDATE_OP_MODE: wma_process_update_opmode(wma_handle, diff --git a/core/wma/src/wma_utils.c b/core/wma/src/wma_utils.c index 655edfa57af3..a084e497714d 100644 --- a/core/wma/src/wma_utils.c +++ b/core/wma/src/wma_utils.c @@ -2648,21 +2648,6 @@ static void wma_update_vdev_stats(tp_wma_handle wma, wma_vdev_stats_lost_link_helper(wma, vdev_stats); } -/** - * wma_post_stats() - update stats to PE - * @wma: wma handle - * @node: txrx node - * - * Return: none - */ -static void wma_post_stats(tp_wma_handle wma, struct wma_txrx_node *node) -{ - /* send response to UMAC */ - wma_send_msg(wma, WMA_GET_STATISTICS_RSP, node->stats_rsp, 0); - node->stats_rsp = NULL; - node->fw_stats_set = 0; -} - /** * wma_update_peer_stats() - update peer stats * @wma: wma handle @@ -3222,12 +3207,6 @@ int wma_stats_event_handler(void *handle, uint8_t *cmd_param_info, } } - for (i = 0; i < wma->max_bssid; i++) { - node = &wma->interfaces[i]; - if (node->fw_stats_set & FW_PEER_STATS_SET) - wma_post_stats(wma, node); - } - return 0; } #endif /* QCA_SUPPORT_CP_STATS */ @@ -3754,129 +3733,6 @@ int32_t wma_set_txrx_fw_stats_level(tp_wma_handle wma_handle, return 0; } -#ifndef QCA_SUPPORT_CP_STATS -/** - * wma_get_stats_rsp_buf() - fill get stats response buffer - * @get_stats_param: get stats parameters - * - * Return: stats response buffer - */ -static tAniGetPEStatsRsp *wma_get_stats_rsp_buf - (tAniGetPEStatsReq *get_stats_param) -{ - tAniGetPEStatsRsp *stats_rsp_params; - uint32_t len, temp_mask; - - len = sizeof(tAniGetPEStatsRsp); - temp_mask = get_stats_param->statsMask; - - if (temp_mask & (1 << eCsrSummaryStats)) - len += sizeof(tCsrSummaryStatsInfo); - - if (temp_mask & (1 << eCsrGlobalClassAStats)) - len += sizeof(tCsrGlobalClassAStatsInfo); - - if (temp_mask & (1 << eCsrGlobalClassDStats)) - len += sizeof(tCsrGlobalClassDStatsInfo); - - if (temp_mask & (1 << csr_per_chain_rssi_stats)) - len += sizeof(struct csr_per_chain_rssi_stats_info); - - stats_rsp_params = qdf_mem_malloc(len); - if (!stats_rsp_params) { - QDF_ASSERT(0); - return NULL; - } - - stats_rsp_params->staId = get_stats_param->staId; - stats_rsp_params->statsMask = get_stats_param->statsMask; - stats_rsp_params->msgType = WMA_GET_STATISTICS_RSP; - stats_rsp_params->msgLen = len - sizeof(tAniGetPEStatsRsp); - stats_rsp_params->rc = QDF_STATUS_SUCCESS; - return stats_rsp_params; -} - -/** - * wma_get_stats_req() - get stats request - * @handle: wma handle - * @get_stats_param: stats params - * - * Return: none - */ -void wma_get_stats_req(WMA_HANDLE handle, - tAniGetPEStatsReq *get_stats_param) -{ - tp_wma_handle wma_handle = (tp_wma_handle) handle; - struct wma_txrx_node *node; - struct stats_request_params cmd = {0}; - tAniGetPEStatsRsp *pGetPEStatsRspParams; - - - WMA_LOGD("%s: Enter", __func__); - node = &wma_handle->interfaces[get_stats_param->sessionId]; - if (node->stats_rsp) { - pGetPEStatsRspParams = node->stats_rsp; - if (pGetPEStatsRspParams->staId == get_stats_param->staId && - pGetPEStatsRspParams->statsMask == - get_stats_param->statsMask) { - WMA_LOGD("Stats for staId %d with stats mask %d is pending.. ignore new request", - get_stats_param->staId, - get_stats_param->statsMask); - pGetPEStatsRspParams = - wma_get_stats_rsp_buf(get_stats_param); - if (!pGetPEStatsRspParams) { - WMA_LOGE("failed to allocate memory for stats response"); - goto end; - } - goto req_pending; - } else { - qdf_mem_free(node->stats_rsp); - node->stats_rsp = NULL; - node->fw_stats_set = 0; - } - } - - pGetPEStatsRspParams = wma_get_stats_rsp_buf(get_stats_param); - if (!pGetPEStatsRspParams) - goto end; - - node->fw_stats_set = 0; - if (node->stats_rsp) { - WMA_LOGD(FL("stats_rsp is not null, prev_value: %pK"), - node->stats_rsp); - qdf_mem_free(node->stats_rsp); - node->stats_rsp = NULL; - } - node->stats_rsp = pGetPEStatsRspParams; - wma_handle->get_sta_peer_info = false; - WMA_LOGD("stats_rsp allocated: %pK, sta_id: %d, mask: %d, vdev_id: %d", - node->stats_rsp, node->stats_rsp->staId, - node->stats_rsp->statsMask, get_stats_param->sessionId); - - cmd.vdev_id = get_stats_param->sessionId; - cmd.stats_id = get_stats_param->statsMask; - if (wmi_unified_stats_request_send(wma_handle->wmi_handle, - node->bssid, - &cmd)) { - WMA_LOGE("%s: Failed to send WMI_REQUEST_STATS_CMDID", - __func__); - goto failed; - } - - goto end; -failed: - node->stats_rsp = NULL; -req_pending: - pGetPEStatsRspParams->rc = QDF_STATUS_E_FAILURE; - /* send response to UMAC */ - wma_send_msg(wma_handle, WMA_GET_STATISTICS_RSP, pGetPEStatsRspParams, - 0); -end: - qdf_mem_free(get_stats_param); - WMA_LOGD("%s: Exit", __func__); -} -#endif /* QCA_SUPPORT_CP_STATS */ - /** * wma_get_cca_stats() - send request to fw to get CCA * @wma_handle: wma handle