diff --git a/core/hdd/inc/wlan_hdd_oemdata.h b/core/hdd/inc/wlan_hdd_oemdata.h index fcfc4f148a..33dd4527d5 100644 --- a/core/hdd/inc/wlan_hdd_oemdata.h +++ b/core/hdd/inc/wlan_hdd_oemdata.h @@ -186,7 +186,7 @@ int iw_get_oem_data_cap(struct net_device *dev, struct iw_request_info *info, int oem_activate_service(struct hdd_context_s *hdd_ctx); -void hdd_send_oem_data_rsp_msg(int length, uint8_t *oemDataRsp); +void hdd_send_oem_data_rsp_msg(tSirOemDataRsp *oem_rsp); #else static inline int oem_activate_service(struct hdd_context_s *hdd_ctx) { diff --git a/core/hdd/src/wlan_hdd_oemdata.c b/core/hdd/src/wlan_hdd_oemdata.c index c69c13b2ca..5e46a72b3f 100644 --- a/core/hdd/src/wlan_hdd_oemdata.c +++ b/core/hdd/src/wlan_hdd_oemdata.c @@ -295,28 +295,29 @@ static void send_oem_err_rsp_nlink_msg(int32_t app_pid, uint8_t error_code) /** * hdd_send_oem_data_rsp_msg() - send oem data response - * @length: length of the OEM Data Response message - * @oemDataRsp: the actual OEM Data Response message + * @oem_data_rsp: the actual OEM Data Response message * * This function sends an OEM Data Response message to a registered * application process over the netlink socket. * * Return: 0 for success, non zero for failure */ -void hdd_send_oem_data_rsp_msg(int length, uint8_t *oemDataRsp) +void hdd_send_oem_data_rsp_msg(tSirOemDataRsp *oem_data_rsp) { struct sk_buff *skb; struct nlmsghdr *nlh; - tAniMsgHdr *aniHdr; - uint8_t *oemData; + tAniMsgHdr *ani_hdr; + uint8_t *oem_data; - /* OEM message is always to a specific process and cannot be a broadcast */ + /* + * OEM message is always to a specific process and cannot be a broadcast + */ if (p_hdd_ctx->oem_pid == 0) { hdd_err("invalid dest pid"); return; } - if (length > OEM_DATA_RSP_SIZE) { + if (oem_data_rsp->rsp_len > OEM_DATA_RSP_SIZE) { hdd_err("invalid length of Oem Data response"); return; } @@ -333,18 +334,18 @@ void hdd_send_oem_data_rsp_msg(int length, uint8_t *oemDataRsp) nlh->nlmsg_flags = 0; nlh->nlmsg_seq = 0; nlh->nlmsg_type = WLAN_NL_MSG_OEM; - aniHdr = NLMSG_DATA(nlh); - aniHdr->type = ANI_MSG_OEM_DATA_RSP; + ani_hdr = NLMSG_DATA(nlh); + ani_hdr->type = ANI_MSG_OEM_DATA_RSP; - aniHdr->length = length; - nlh->nlmsg_len = NLMSG_LENGTH((sizeof(tAniMsgHdr) + aniHdr->length)); - oemData = (uint8_t *) ((char *)aniHdr + sizeof(tAniMsgHdr)); - qdf_mem_copy(oemData, oemDataRsp, length); + ani_hdr->length = oem_data_rsp->rsp_len; + nlh->nlmsg_len = NLMSG_LENGTH((sizeof(tAniMsgHdr) + ani_hdr->length)); + oem_data = (uint8_t *) ((char *)ani_hdr + sizeof(tAniMsgHdr)); + qdf_mem_copy(oem_data, oem_data_rsp->data, oem_data_rsp->rsp_len); - skb_put(skb, NLMSG_SPACE((sizeof(tAniMsgHdr) + aniHdr->length))); + skb_put(skb, NLMSG_SPACE((sizeof(tAniMsgHdr) + ani_hdr->length))); hdd_notice("sending Oem Data Response of len (%d) to process pid (%d)", - length, p_hdd_ctx->oem_pid); + oem_data_rsp->rsp_len, p_hdd_ctx->oem_pid); (void)nl_srv_ucast(skb, p_hdd_ctx->oem_pid, MSG_DONTWAIT); diff --git a/core/mac/inc/sir_api.h b/core/mac/inc/sir_api.h index 8443a177f6..d5ae056eb3 100644 --- a/core/mac/inc/sir_api.h +++ b/core/mac/inc/sir_api.h @@ -889,11 +889,8 @@ typedef struct sSirOemDataReq { } tSirOemDataReq, *tpSirOemDataReq; typedef struct sSirOemDataRsp { - uint16_t messageType; - uint16_t length; - bool target_rsp; uint32_t rsp_len; - uint8_t *oem_data_rsp; + uint8_t *data; } tSirOemDataRsp, *tpSirOemDataRsp; #endif /* FEATURE_OEM_DATA_SUPPORT */ diff --git a/core/mac/inc/wni_api.h b/core/mac/inc/wni_api.h index 1772a427fb..c338a648db 100644 --- a/core/mac/inc/wni_api.h +++ b/core/mac/inc/wni_api.h @@ -55,9 +55,6 @@ enum eWniMsgTypes { eWNI_SME_SCAN_REQ, eWNI_SME_SCAN_ABORT_IND, eWNI_SME_SCAN_RSP, -#ifdef FEATURE_OEM_DATA_SUPPORT - eWNI_SME_OEM_DATA_RSP, -#endif eWNI_SME_JOIN_REQ, eWNI_SME_JOIN_RSP, eWNI_SME_SETCONTEXT_REQ, 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 8b9135feef..c07ee89dec 100644 --- a/core/mac/src/pe/lim/lim_process_message_queue.c +++ b/core/mac/src/pe/lim/lim_process_message_queue.c @@ -332,9 +332,6 @@ uint8_t static def_msg_decision(tpAniSirGlobal pMac, tpSirMsgQ limMsg) && (limMsg->type != WMA_SWITCH_CHANNEL_RSP) && (limMsg->type != WMA_P2P_NOA_ATTR_IND) && (limMsg->type != WMA_P2P_NOA_START_IND) && -#ifdef FEATURE_OEM_DATA_SUPPORT - (limMsg->type != WMA_START_OEM_DATA_RSP) && -#endif (limMsg->type != WMA_ADD_TS_RSP) && /* * LIM won't process any defer queue commands if gLimAddtsSent is @@ -1163,52 +1160,6 @@ void lim_message_processor(tpAniSirGlobal mac_ctx, tpSirMsgQ msg) } } -#ifdef FEATURE_OEM_DATA_SUPPORT - -void lim_oem_data_rsp_handle_resume_link_rsp(tpAniSirGlobal pMac, QDF_STATUS status, - uint32_t *mlmOemDataRsp) -{ - if (status != QDF_STATUS_SUCCESS) { - lim_log(pMac, LOGE, - FL - ("OEM Data Rsp failed to get the response for resume link")); - } - - if (NULL != pMac->lim.gpLimMlmOemDataReq) { - qdf_mem_free(pMac->lim.gpLimMlmOemDataReq); - pMac->lim.gpLimMlmOemDataReq = NULL; - } - /* "Failure" status doesn't mean that Oem Data Rsp did not happen */ - /* and hence we need to respond to upper layers. Only Resume link is failed, but */ - /* we got the oem data response already. */ - /* Post the meessage to MLM */ - lim_post_sme_message(pMac, LIM_MLM_OEM_DATA_CNF, - (uint32_t *) (mlmOemDataRsp)); - - return; -} - -void lim_process_oem_data_rsp(tpAniSirGlobal pMac, uint32_t *body) -{ - tpLimMlmOemDataRsp mlmOemDataRsp = NULL; - - /* Process all the messages for the lim queue */ - SET_LIM_PROCESS_DEFD_MESGS(pMac, true); - - mlmOemDataRsp = (tpLimMlmOemDataRsp) body; - - PELOG1(lim_log - (pMac, LOG1, FL("%s: sending oem data response msg to sme"), - __func__); - ) - lim_post_sme_message(pMac, LIM_MLM_OEM_DATA_CNF, - (uint32_t *) (mlmOemDataRsp)); - - return; -} - -#endif - static void lim_process_sme_obss_scan_ind(tpAniSirGlobal mac_ctx, struct sSirMsgQ *msg) { @@ -1311,12 +1262,6 @@ void lim_process_messages(tpAniSirGlobal mac_ctx, tpSirMsgQ msg) lim_print_msg_name(mac_ctx, LOGE, msg->type); } break; -#ifdef FEATURE_OEM_DATA_SUPPORT - case WMA_START_OEM_DATA_RSP: - lim_process_oem_data_rsp(mac_ctx, msg->bodyptr); - msg->bodyptr = NULL; - break; -#endif case WMA_SWITCH_CHANNEL_RSP: lim_process_switch_channel_rsp(mac_ctx, msg->bodyptr); msg->bodyptr = NULL; diff --git a/core/mac/src/pe/lim/lim_process_mlm_rsp_messages.c b/core/mac/src/pe/lim/lim_process_mlm_rsp_messages.c index 5637496c25..95cb2e245f 100644 --- a/core/mac/src/pe/lim/lim_process_mlm_rsp_messages.c +++ b/core/mac/src/pe/lim/lim_process_mlm_rsp_messages.c @@ -55,9 +55,6 @@ static void lim_handle_sme_join_result(tpAniSirGlobal, tSirResultCodes, uint16_t, tpPESession); -#ifdef FEATURE_OEM_DATA_SUPPORT -void lim_process_mlm_oem_data_req_cnf(tpAniSirGlobal, uint32_t *); -#endif void lim_process_mlm_join_cnf(tpAniSirGlobal, uint32_t *); void lim_process_mlm_auth_cnf(tpAniSirGlobal, uint32_t *); void lim_process_mlm_start_cnf(tpAniSirGlobal, uint32_t *); @@ -102,14 +99,6 @@ lim_process_mlm_rsp_messages(tpAniSirGlobal pMac, uint32_t msgType, } MTRACE(mac_trace(pMac, TRACE_CODE_TX_LIM_MSG, 0, msgType)); switch (msgType) { - -#ifdef FEATURE_OEM_DATA_SUPPORT - case LIM_MLM_OEM_DATA_CNF: - lim_process_mlm_oem_data_req_cnf(pMac, pMsgBuf); - pMsgBuf = NULL; - break; -#endif - case LIM_MLM_AUTH_CNF: lim_process_mlm_auth_cnf(pMac, pMsgBuf); break; @@ -154,44 +143,6 @@ lim_process_mlm_rsp_messages(tpAniSirGlobal pMac, uint32_t msgType, return; } /*** end lim_process_mlm_rsp_messages() ***/ -#ifdef FEATURE_OEM_DATA_SUPPORT - -/** - * lim_process_mlm_oem_data_req_cnf() - * - ***FUNCTION: - * This function is called to processes LIM_MLM_OEM_DATA_REQ_CNF - * message from MLM State machine. - * - ***LOGIC: - * - ***ASSUMPTIONS: - * - ***NOTE: - * - * @param pMac Pointer to Global MAC structure - * @param pMsgBuf A pointer to the MLM message buffer - * - * @return None - */ - -void lim_process_mlm_oem_data_req_cnf(tpAniSirGlobal pMac, uint32_t *pMsgBuf) -{ - tLimMlmOemDataRsp *measRsp; - - tSirResultCodes resultCode = eSIR_SME_SUCCESS; - - measRsp = (tLimMlmOemDataRsp *) (pMsgBuf); - - /* Now send the meas confirm message to the sme */ - lim_send_sme_oem_data_rsp(pMac, (uint32_t *) measRsp, resultCode); - - /* Dont free the memory here. It will be freed up by the callee */ - - return; -} -#endif - /** * lim_process_mlm_start_cnf() * 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 9f6413fdec..7ba373852d 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 @@ -785,99 +785,6 @@ lim_post_sme_scan_rsp_message(tpAniSirGlobal pMac, } /*** lim_post_sme_scan_rsp_message ***/ -#ifdef FEATURE_OEM_DATA_SUPPORT - -/** - * lim_send_sme_oem_data_rsp() - * - ***FUNCTION: - * This function is called by lim_process_sme_req_messages() to send - * eWNI_SME_OEM_DATA_RSP message to applications above MAC - * Software. - * - ***PARAMS: - * - ***LOGIC: - * - ***ASSUMPTIONS: - * NA - * - ***NOTE: - * NA - * - * @param pMac Pointer to Global MAC structure - * @param pMsgBuf Indicates the mlm message - * @param resultCode Indicates the result of previously issued - * eWNI_SME_OEM_DATA_RSP message - * - * @return None - */ - -void lim_send_sme_oem_data_rsp(tpAniSirGlobal pMac, uint32_t *pMsgBuf, - tSirResultCodes resultCode) -{ - tSirMsgQ mmhMsg; - tSirOemDataRsp *pSirSmeOemDataRsp = NULL; - tLimMlmOemDataRsp *pMlmOemDataRsp = NULL; - uint16_t msgLength; - - /* get the pointer to the mlm message */ - pMlmOemDataRsp = (tLimMlmOemDataRsp *) (pMsgBuf); - - msgLength = sizeof(*pSirSmeOemDataRsp); - /* now allocate memory for the char buffer */ - pSirSmeOemDataRsp = qdf_mem_malloc(sizeof(*pSirSmeOemDataRsp)); - if (NULL == pSirSmeOemDataRsp) { - lim_log(pMac, LOGP, - FL("malloc failed for pSirSmeOemDataRsp")); - qdf_mem_free(pMlmOemDataRsp->oem_data_rsp); - qdf_mem_free(pMlmOemDataRsp); - return; - } - - if (pMlmOemDataRsp->rsp_len) { - pSirSmeOemDataRsp->oem_data_rsp = - qdf_mem_malloc(pMlmOemDataRsp->rsp_len); - if (!pSirSmeOemDataRsp->oem_data_rsp) { - lim_log(pMac, LOGE, - FL("malloc failed for oem_data_rsp")); - qdf_mem_free(pSirSmeOemDataRsp); - qdf_mem_free(pMlmOemDataRsp->oem_data_rsp); - qdf_mem_free(pMlmOemDataRsp); - return; - } - } - -#if defined (ANI_LITTLE_BYTE_ENDIAN) - sir_store_u16_n((uint8_t *) &pSirSmeOemDataRsp->length, msgLength); - sir_store_u16_n((uint8_t *) &pSirSmeOemDataRsp->messageType, - eWNI_SME_OEM_DATA_RSP); -#else - pSirSmeOemDataRsp->length = msgLength; - pSirSmeOemDataRsp->messageType = eWNI_SME_OEM_DATA_RSP; -#endif - pSirSmeOemDataRsp->target_rsp = pMlmOemDataRsp->target_rsp; - pSirSmeOemDataRsp->rsp_len = pMlmOemDataRsp->rsp_len; - if (pSirSmeOemDataRsp->rsp_len) - qdf_mem_copy(pSirSmeOemDataRsp->oem_data_rsp, - pMlmOemDataRsp->oem_data_rsp, - pSirSmeOemDataRsp->rsp_len); - - /* Now free the memory from MLM Rsp Message */ - qdf_mem_free(pMlmOemDataRsp->oem_data_rsp); - qdf_mem_free(pMlmOemDataRsp); - - mmhMsg.type = eWNI_SME_OEM_DATA_RSP; - mmhMsg.bodyptr = pSirSmeOemDataRsp; - mmhMsg.bodyval = 0; - - lim_sys_process_mmh_msg_api(pMac, &mmhMsg, ePROT); - - return; -} /*** lim_send_sme_oem_data_rsp ***/ - -#endif - void lim_send_sme_disassoc_deauth_ntf(tpAniSirGlobal pMac, QDF_STATUS status, uint32_t *pCtx) { 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 f8997d19bc..55a58ff0ee 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 @@ -98,11 +98,6 @@ void lim_send_sme_ibss_peer_ind(tpAniSirGlobal pMac, tSirMacAddr peerMacAddr, uint8_t bcastIdx, uint8_t *beacon, uint16_t beaconLen, uint16_t msgType, uint8_t sessionId); -#ifdef FEATURE_OEM_DATA_SUPPORT -void lim_send_sme_oem_data_rsp(tpAniSirGlobal pMac, uint32_t *pMsgBuf, - tSirResultCodes resultCode); -#endif - void lim_send_sme_max_assoc_exceeded_ntf(tpAniSirGlobal pMac, tSirMacAddr peerMacAddr, uint8_t smesessionId); #ifdef FEATURE_WLAN_TDLS diff --git a/core/mac/src/pe/lim/lim_types.h b/core/mac/src/pe/lim/lim_types.h index f78a3604aa..04c01e51c3 100644 --- a/core/mac/src/pe/lim/lim_types.h +++ b/core/mac/src/pe/lim/lim_types.h @@ -94,10 +94,6 @@ * (LIM_MLM_MSG_START + 40) are unused. */ -#ifdef FEATURE_OEM_DATA_SUPPORT -#define LIM_MLM_OEM_DATA_CNF (LIM_MLM_MSG_START + 42) -#endif - #define LIM_HASH_ADD 0 #define LIM_HASH_UPDATE 1 diff --git a/core/mac/src/pe/lim/lim_utils.c b/core/mac/src/pe/lim/lim_utils.c index ce3cf16618..01bdfb67ff 100644 --- a/core/mac/src/pe/lim/lim_utils.c +++ b/core/mac/src/pe/lim/lim_utils.c @@ -277,10 +277,6 @@ char *lim_msg_str(uint32_t msgType) return "eWNI_SME_SYS_READY_IND"; case eWNI_SME_SCAN_REQ: return "eWNI_SME_SCAN_REQ"; -#ifdef FEATURE_OEM_DATA_SUPPORT - case eWNI_SME_OEM_DATA_RSP: - return "eWNI_SME_OEM_DATA_RSP"; -#endif case eWNI_SME_SCAN_RSP: return "eWNI_SME_SCAN_RSP"; case eWNI_SME_JOIN_REQ: 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 5ae1f318d1..85504c6094 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 @@ -233,9 +233,6 @@ uint8_t *mac_trace_get_sme_msg_string(uint16_t sme_msg) CASE_RETURN_STRING(eWNI_SME_SCAN_REQ); CASE_RETURN_STRING(eWNI_SME_SCAN_ABORT_IND); CASE_RETURN_STRING(eWNI_SME_SCAN_RSP); -#ifdef FEATURE_OEM_DATA_SUPPORT - CASE_RETURN_STRING(eWNI_SME_OEM_DATA_RSP); -#endif CASE_RETURN_STRING(eWNI_SME_JOIN_REQ); CASE_RETURN_STRING(eWNI_SME_JOIN_RSP); CASE_RETURN_STRING(eWNI_SME_SETCONTEXT_REQ); @@ -411,9 +408,6 @@ uint8_t *mac_trace_get_wma_msg_string(uint16_t wma_msg) CASE_RETURN_STRING(WMA_BTC_SET_CFG); CASE_RETURN_STRING(WMA_HANDLE_FW_MBOX_RSP); CASE_RETURN_STRING(WMA_SEND_PROBE_RSP_TMPL); -#ifdef FEATURE_OEM_DATA_SUPPORT - CASE_RETURN_STRING(WMA_START_OEM_DATA_RSP); -#endif /* SUPPORT_BEACON_FILTER */ CASE_RETURN_STRING(WMA_SET_MAX_TX_POWER_REQ); CASE_RETURN_STRING(WMA_SET_HOST_OFFLOAD); CASE_RETURN_STRING(WMA_SET_KEEP_ALIVE); diff --git a/core/sme/inc/oem_data_api.h b/core/sme/inc/oem_data_api.h index 14f35d572a..c8cd1a38ac 100644 --- a/core/sme/inc/oem_data_api.h +++ b/core/sme/inc/oem_data_api.h @@ -60,6 +60,7 @@ typedef enum { eOEM_DATA_REQ_FAILURE, eOEM_DATA_REQ_INVALID_MODE, } eOemDataReqStatus; + QDF_STATUS oem_data_oem_data_req_open(tHalHandle hHal); QDF_STATUS oem_data_oem_data_req_close(tHalHandle hHal); @@ -70,8 +71,7 @@ QDF_STATUS oem_data_oem_data_req_close(tHalHandle hHal); typedef QDF_STATUS (*oem_data_oem_data_reqCompleteCallback)(tHalHandle, void *p2, uint32_t oemDataReqID, eOemDataReqStatus status); -QDF_STATUS sme_handle_oem_data_rsp(tHalHandle hHal, uint8_t *); -typedef void (*sme_send_oem_data_rsp_msg)(int length, uint8_t *oem_data_rsp); +typedef void (*sme_send_oem_data_rsp_msg)(tSirOemDataRsp *); #endif /* _OEM_DATA_API_H__ */ #endif /* FEATURE_OEM_DATA_SUPPORT */ diff --git a/core/sme/src/common/sme_api.c b/core/sme/src/common/sme_api.c index a058e8df51..d02a3c7e2b 100644 --- a/core/sme/src/common/sme_api.c +++ b/core/sme/src/common/sme_api.c @@ -2531,19 +2531,6 @@ QDF_STATUS sme_process_msg(tHalHandle hHal, cds_msg_t *pMsg) pMsg->type); } break; -#ifdef FEATURE_OEM_DATA_SUPPORT - /* Handle the eWNI_SME_OEM_DATA_RSP: */ - case eWNI_SME_OEM_DATA_RSP: - if (pMsg->bodyptr) { - status = sme_handle_oem_data_rsp(pMac, pMsg->bodyptr); - qdf_mem_free(pMsg->bodyptr); - } else { - sms_log(pMac, LOGE, FL("Empty message for %d"), - pMsg->type); - } - sme_process_pending_queue(pMac); - break; -#endif case eWNI_SME_ADD_STA_SELF_RSP: if (pMsg->bodyptr) { status = csr_process_add_sta_session_rsp(pMac, diff --git a/core/sme/src/oem_data/oem_data_api.c b/core/sme/src/oem_data/oem_data_api.c index fe36a2e563..71a6bd0ed1 100644 --- a/core/sme/src/oem_data/oem_data_api.c +++ b/core/sme/src/oem_data/oem_data_api.c @@ -94,78 +94,4 @@ QDF_STATUS oem_data_oem_data_req_close(tHalHandle hHal) return QDF_STATUS_SUCCESS; } - -/** - * sme_handle_oem_data_rsp() - processes the oem data response - * @hHal: Handle returned by mac_open. - * @pMsg: Pointer to the pSirOemDataRsp - * - * This function processes the oem data response obtained from the PE - * - * Return: QDF_STATUS. - */ -QDF_STATUS sme_handle_oem_data_rsp(tHalHandle hHal, uint8_t *pMsg) -{ - QDF_STATUS status = QDF_STATUS_SUCCESS; - tpAniSirGlobal pMac; - tListElem *pEntry = NULL; - tSmeCmd *pCommand = NULL; - tSirOemDataRsp *pOemDataRsp = NULL; - tOemDataReq *req; - - pMac = PMAC_STRUCT(hHal); - - sms_log(pMac, LOG1, "%s: OEM_DATA Entering", __func__); - - do { - if (pMsg == NULL) { - sms_log(pMac, LOGE, "in %s msg ptr is NULL", __func__); - status = QDF_STATUS_E_FAILURE; - break; - } - - /* In this case, there can be multiple OEM Data Responses for one - * OEM Data request, SME does not peek into data response so SME - * can not know which response is the last one. So SME clears active - * request command on receiving first response and thereafter SME - * passes each sunsequent response to upper user layer. - */ - pEntry = - csr_ll_peek_head(&pMac->sme.smeCmdActiveList, LL_ACCESS_LOCK); - if (pEntry) { - pCommand = GET_BASE_ADDR(pEntry, tSmeCmd, Link); - if (eSmeCommandOemDataReq == pCommand->command) { - if (csr_ll_remove_entry - (&pMac->sme.smeCmdActiveList, - &pCommand->Link, LL_ACCESS_LOCK)) { - qdf_mem_set(&(pCommand->u.oemDataCmd), - sizeof(tOemDataCmd), 0); - req = - &(pCommand->u.oemDataCmd.oemDataReq); - qdf_mem_free(req->data); - sme_release_command(pMac, pCommand); - } - } - } - - pOemDataRsp = (tSirOemDataRsp *) pMsg; - - /* Send to upper layer only if rsp is from target */ - if (pOemDataRsp->target_rsp) { - sms_log(pMac, LOG1, - FL("received target oem data resp")); - if (pMac->oemData.oem_data_rsp_callback != NULL) - pMac->oemData.oem_data_rsp_callback( - pOemDataRsp->rsp_len, - pOemDataRsp->oem_data_rsp); - } else { - sms_log(pMac, LOG1, - FL("received internal oem data resp")); - } - qdf_mem_free(pOemDataRsp->oem_data_rsp); - } while (0); - - return status; -} - -#endif /*FEATURE_OEM_DATA_SUPPORT */ +#endif diff --git a/core/wma/inc/wma_types.h b/core/wma/inc/wma_types.h index 328fc0f5f0..7bb5ecaa9a 100644 --- a/core/wma/inc/wma_types.h +++ b/core/wma/inc/wma_types.h @@ -228,11 +228,6 @@ #define WMA_BTC_SET_CFG SIR_HAL_BTC_SET_CFG #define WMA_HANDLE_FW_MBOX_RSP SIR_HAL_HANDLE_FW_MBOX_RSP -#ifdef FEATURE_OEM_DATA_SUPPORT -/* PE <-> HAL OEM_DATA RELATED MESSAGES */ -#define WMA_START_OEM_DATA_RSP SIR_HAL_START_OEM_DATA_RSP -#endif - #define WMA_SET_MAX_TX_POWER_REQ SIR_HAL_SET_MAX_TX_POWER_REQ #define WMA_SET_MAX_TX_POWER_RSP SIR_HAL_SET_MAX_TX_POWER_RSP #define WMA_SET_TX_POWER_REQ SIR_HAL_SET_TX_POWER_REQ diff --git a/core/wma/src/wma_features.c b/core/wma/src/wma_features.c index 4a8c07ce2c..abd8848ee4 100644 --- a/core/wma/src/wma_features.c +++ b/core/wma/src/wma_features.c @@ -1638,11 +1638,21 @@ int wma_csa_offload_handler(void *handle, uint8_t *event, uint32_t len) int wma_oem_data_response_handler(void *handle, uint8_t *datap, uint32_t len) { - tp_wma_handle wma = (tp_wma_handle) handle; WMI_OEM_RESPONSE_EVENTID_param_tlvs *param_buf; uint8_t *data; uint32_t datalen; - tStartOemDataRsp *oem_rsp; + tSirOemDataRsp *oem_rsp; + tpAniSirGlobal pmac = cds_get_context(QDF_MODULE_ID_PE); + + if (!pmac) { + WMA_LOGE(FL("Invalid pmac")); + return -EINVAL; + } + + if (!pmac->oemData.oem_data_rsp_callback) { + WMA_LOGE(FL("Callback not registered")); + return -EINVAL; + } param_buf = (WMI_OEM_RESPONSE_EVENTID_param_tlvs *) datap; if (!param_buf) { @@ -1671,9 +1681,9 @@ int wma_oem_data_response_handler(void *handle, } oem_rsp->rsp_len = datalen; if (oem_rsp->rsp_len) { - oem_rsp->oem_data_rsp = qdf_mem_malloc(oem_rsp->rsp_len); - if (!oem_rsp->oem_data_rsp) { - WMA_LOGE(FL("malloc failed for oem_data_rsp")); + oem_rsp->data = qdf_mem_malloc(oem_rsp->rsp_len); + if (!oem_rsp->data) { + WMA_LOGE(FL("malloc failed for data")); qdf_mem_free(oem_rsp); return -ENOMEM; } @@ -1684,12 +1694,16 @@ int wma_oem_data_response_handler(void *handle, return -EINVAL; } - oem_rsp->target_rsp = true; - qdf_mem_copy(oem_rsp->oem_data_rsp, data, datalen); + qdf_mem_copy(oem_rsp->data, data, datalen); - WMA_LOGI(FL("Sending WMA_START_OEM_DATA_RSP, data len %d"), datalen); + WMA_LOGI(FL("Sending OEM_DATA_RSP(len: %d) to upper layer"), datalen); + + pmac->oemData.oem_data_rsp_callback(oem_rsp); + + if (oem_rsp->data) + qdf_mem_free(oem_rsp->data); + qdf_mem_free(oem_rsp); - wma_send_msg(wma, WMA_START_OEM_DATA_RSP, (void *)oem_rsp, 0); return 0; }