Procházet zdrojové kódy

qcacld-3.0: Remove oem data request passing over multiple layers

Remove oem data request passing over multiple layers.

This change set sends the OEM data request directly from
SME to WMA instead of going through LIM/MLM.

Change-Id: I151fa771544e9f74b1b69b18d689176752760621
CRs-Fixed: 1038872
Krishna Kumaar Natarajan před 8 roky
rodič
revize
c5e06accd6

+ 17 - 21
core/hdd/src/wlan_hdd_oemdata.c

@@ -353,52 +353,48 @@ void hdd_send_oem_data_rsp_msg(int length, uint8_t *oemDataRsp)
 
 /**
  * oem_process_data_req_msg() - process oem data request
- * @oemDataLen: Length to OEM Data buffer
- * @oemData: Pointer to OEM Data buffer
+ * @oem_data_len: Length to OEM Data buffer
+ * @oem_data: Pointer to OEM Data buffer
  *
  * This function sends oem message to SME
  *
  * Return: QDF_STATUS enumeration
  */
-static QDF_STATUS oem_process_data_req_msg(int oemDataLen, char *oemData)
+static QDF_STATUS oem_process_data_req_msg(int oem_data_len, char *oem_data)
 {
-	hdd_adapter_t *pAdapter = NULL;
-	tOemDataReqConfig oemDataReqConfig;
-	uint32_t oemDataReqID = 0;
+	hdd_adapter_t *adapter = NULL;
+	tSirOemDataReq oem_data_req;
 	QDF_STATUS status = QDF_STATUS_SUCCESS;
 
 	/* for now, STA interface only */
-	pAdapter = hdd_get_adapter(p_hdd_ctx, QDF_STA_MODE);
-	if (!pAdapter) {
+	adapter = hdd_get_adapter(p_hdd_ctx, QDF_STA_MODE);
+	if (!adapter) {
 		hdd_err("No adapter for STA mode");
 		return QDF_STATUS_E_FAILURE;
 	}
 
-	if (!oemData) {
-		hdd_err("oemData is null");
+	if (!oem_data) {
+		hdd_err("oem_data is null");
 		return QDF_STATUS_E_FAILURE;
 	}
 
-	qdf_mem_zero(&oemDataReqConfig, sizeof(tOemDataReqConfig));
+	qdf_mem_zero(&oem_data_req, sizeof(tSirOemDataReq));
 
-	oemDataReqConfig.data = qdf_mem_malloc(oemDataLen);
-	if (!oemDataReqConfig.data) {
+	oem_data_req.data = qdf_mem_malloc(oem_data_len);
+	if (!oem_data_req.data) {
 		hdd_err("malloc failed for data req buffer");
 		return QDF_STATUS_E_NOMEM;
 	}
 
-	oemDataReqConfig.data_len = oemDataLen;
-	qdf_mem_copy(oemDataReqConfig.data, oemData, oemDataLen);
+	oem_data_req.data_len = oem_data_len;
+	qdf_mem_copy(oem_data_req.data, oem_data, oem_data_len);
 
 	hdd_notice("calling sme_oem_data_req");
 
-	status = sme_oem_data_req(p_hdd_ctx->hHal,
-				  pAdapter->sessionId,
-				  &oemDataReqConfig,
-				  &oemDataReqID);
+	status = sme_oem_data_req(p_hdd_ctx->hHal, &oem_data_req);
 
-	qdf_mem_free(oemDataReqConfig.data);
-	oemDataReqConfig.data = NULL;
+	qdf_mem_free(oem_data_req.data);
+	oem_data_req.data = NULL;
 
 	return status;
 }

+ 0 - 3
core/mac/inc/sir_api.h

@@ -884,9 +884,6 @@ typedef struct sSirSmeScanChanReq {
 #ifdef FEATURE_OEM_DATA_SUPPORT
 
 typedef struct sSirOemDataReq {
-	uint16_t messageType;   /* eWNI_SME_OEM_DATA_REQ */
-	uint16_t messageLen;
-	struct qdf_mac_addr selfMacAddr;
 	uint32_t data_len;
 	uint8_t *data;
 } tSirOemDataReq, *tpSirOemDataReq;

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

@@ -56,7 +56,6 @@ enum eWniMsgTypes {
 	eWNI_SME_SCAN_ABORT_IND,
 	eWNI_SME_SCAN_RSP,
 #ifdef FEATURE_OEM_DATA_SUPPORT
-	eWNI_SME_OEM_DATA_REQ,
 	eWNI_SME_OEM_DATA_RSP,
 #endif
 	eWNI_SME_JOIN_REQ,

+ 0 - 3
core/mac/src/pe/lim/lim_process_message_queue.c

@@ -1387,9 +1387,6 @@ void lim_process_messages(tpAniSirGlobal mac_ctx, tpSirMsgQ msg)
 	case eWNI_SME_REMAIN_ON_CHANNEL_REQ:
 	case eWNI_SME_DISASSOC_REQ:
 	case eWNI_SME_DEAUTH_REQ:
-#ifdef FEATURE_OEM_DATA_SUPPORT
-	case eWNI_SME_OEM_DATA_REQ:
-#endif
 #ifdef FEATURE_WLAN_TDLS
 	case eWNI_SME_TDLS_SEND_MGMT_REQ:
 	case eWNI_SME_TDLS_ADD_STA_REQ:

+ 0 - 173
core/mac/src/pe/lim/lim_process_mlm_req_messages.c

@@ -48,9 +48,6 @@
 #include "wma_if.h"
 
 static void lim_process_mlm_start_req(tpAniSirGlobal, uint32_t *);
-#ifdef FEATURE_OEM_DATA_SUPPORT
-static void lim_process_mlm_oem_data_req(tpAniSirGlobal, uint32_t *);
-#endif
 static void lim_process_mlm_join_req(tpAniSirGlobal, uint32_t *);
 static void lim_process_mlm_auth_req(tpAniSirGlobal, uint32_t *);
 static void lim_process_mlm_assoc_req(tpAniSirGlobal, uint32_t *);
@@ -92,11 +89,6 @@ void lim_process_mlm_req_messages(tpAniSirGlobal mac_ctx, tpSirMsgQ msg)
 	case LIM_MLM_START_REQ:
 		lim_process_mlm_start_req(mac_ctx, msg->bodyptr);
 		break;
-#ifdef FEATURE_OEM_DATA_SUPPORT
-	case LIM_MLM_OEM_DATA_REQ:
-		lim_process_mlm_oem_data_req(mac_ctx, msg->bodyptr);
-		break;
-#endif
 	case LIM_MLM_JOIN_REQ:
 		lim_process_mlm_join_req(mac_ctx, msg->bodyptr);
 		break;
@@ -348,100 +340,6 @@ void lim_restore_pre_scan_state(tpAniSirGlobal mac_ctx)
 		(tx_time_get() - mac_ctx->lim.scanStartTime));
 }
 
-#ifdef FEATURE_OEM_DATA_SUPPORT
-/**
- * lim_send_hal_oem_data_req() - send oem data request
- * @mac_ctx: global MAC context
- *
- * This function is used to send OEM data request to HAL.
- *
- * Return: None
- */
-void lim_send_hal_oem_data_req(tpAniSirGlobal mac_ctx)
-{
-	tSirMsgQ msg;
-	tpStartOemDataReq start_oem_data_req = NULL;
-	tSirRetStatus rc = eSIR_SUCCESS;
-	tpLimMlmOemDataRsp mlm_oem_data_rsp;
-
-	if (NULL == mac_ctx->lim.gpLimMlmOemDataReq) {
-		lim_log(mac_ctx, LOGE, FL("Null pointer"));
-		goto error;
-	}
-
-	start_oem_data_req = qdf_mem_malloc(sizeof(*start_oem_data_req));
-	if (NULL == start_oem_data_req) {
-		lim_log(mac_ctx, LOGE, FL
-			("Could not allocate memory for start_oem_data_req"));
-		goto error;
-	}
-
-	start_oem_data_req->data =
-		qdf_mem_malloc(mac_ctx->lim.gpLimMlmOemDataReq->data_len);
-	if (!start_oem_data_req->data) {
-		lim_log(mac_ctx, LOGE, FL("memory allocation failed"));
-		qdf_mem_free(start_oem_data_req);
-		goto error;
-	}
-
-	/* Now copy over the information to the OEM DATA REQ to HAL */
-	qdf_copy_macaddr(&start_oem_data_req->selfMacAddr,
-			 &mac_ctx->lim.gpLimMlmOemDataReq->selfMacAddr);
-
-	start_oem_data_req->data_len =
-			mac_ctx->lim.gpLimMlmOemDataReq->data_len;
-	qdf_mem_copy(start_oem_data_req->data,
-		     mac_ctx->lim.gpLimMlmOemDataReq->data,
-		     mac_ctx->lim.gpLimMlmOemDataReq->data_len);
-
-	/* Create the message to be passed to HAL */
-	msg.type = WMA_START_OEM_DATA_REQ;
-	msg.bodyptr = start_oem_data_req;
-	msg.bodyval = 0;
-
-	SET_LIM_PROCESS_DEFD_MESGS(mac_ctx, false);
-	MTRACE(mac_trace_msg_tx(mac_ctx, NO_SESSION, msg.type));
-
-	rc = wma_post_ctrl_msg(mac_ctx, &msg);
-	if (rc == eSIR_SUCCESS)
-		return;
-
-	SET_LIM_PROCESS_DEFD_MESGS(mac_ctx, true);
-	qdf_mem_free(start_oem_data_req->data);
-	qdf_mem_free(start_oem_data_req);
-	lim_log(mac_ctx, LOGE,
-		FL("OEM_DATA: posting WMA_START_OEM_DATA_REQ to HAL failed"));
-
-error:
-	mac_ctx->lim.gLimMlmState = mac_ctx->lim.gLimPrevMlmState;
-	MTRACE(mac_trace(mac_ctx, TRACE_CODE_MLM_STATE, NO_SESSION,
-		       mac_ctx->lim.gLimMlmState));
-
-	mlm_oem_data_rsp = qdf_mem_malloc(sizeof(tLimMlmOemDataRsp));
-	if (NULL == mlm_oem_data_rsp) {
-		lim_log(mac_ctx->hHdd, LOGP, FL
-			("memory allocation for mlm_oem_data_rsp"));
-		return;
-	}
-	mlm_oem_data_rsp->target_rsp = false;
-
-	if (NULL != mac_ctx->lim.gpLimMlmOemDataReq) {
-		if (NULL != mac_ctx->lim.gpLimMlmOemDataReq->data) {
-			qdf_mem_free(
-				mac_ctx->lim.gpLimMlmOemDataReq->data);
-			mac_ctx->lim.gpLimMlmOemDataReq->data = NULL;
-		}
-		qdf_mem_free(mac_ctx->lim.gpLimMlmOemDataReq);
-		mac_ctx->lim.gpLimMlmOemDataReq = NULL;
-	}
-
-	lim_post_sme_message(mac_ctx, LIM_MLM_OEM_DATA_CNF,
-			     (uint32_t *) mlm_oem_data_rsp);
-
-	return;
-}
-#endif /* FEATURE_OEM_DATA_SUPPORT */
-
 /**
  * mlm_add_sta() - MLM add sta
  * @mac_ctx: global MAC context
@@ -791,77 +689,6 @@ end:
 				     (uint32_t *) &mlm_start_cnf);
 }
 
-#ifdef FEATURE_OEM_DATA_SUPPORT
-/**
- * lim_process_mlm_oem_data_req() - process MLM OEM_DATA_REQ message
- * @mac_ctx: global MAC context
- * @msg_buf: MLM message buffer
- *
- * This function process MLM OEM_DATA_REQ message.
- *
- * Return: None
- */
-static void lim_process_mlm_oem_data_req(tpAniSirGlobal mac_ctx,
-					 uint32_t *msg_buf)
-{
-	tLimMlmOemDataRsp *mlm_oem_data_rsp;
-	tLimMlmOemDataReq *data_req = (tLimMlmOemDataReq *) msg_buf;
-
-	if (((mac_ctx->lim.gLimMlmState == eLIM_MLM_IDLE_STATE) ||
-	     (mac_ctx->lim.gLimMlmState == eLIM_MLM_JOINED_STATE) ||
-	     (mac_ctx->lim.gLimMlmState == eLIM_MLM_AUTHENTICATED_STATE) ||
-	     (mac_ctx->lim.gLimMlmState == eLIM_MLM_BSS_STARTED_STATE) ||
-	     (mac_ctx->lim.gLimMlmState == eLIM_MLM_LINK_ESTABLISHED_STATE))) {
-		/*
-		 * Hold onto the oem data request criteria
-		 * Free gpLimMlmOemDataReq to avoid memory leak due to
-		 * second OEM data request
-		 */
-		if (mac_ctx->lim.gpLimMlmOemDataReq) {
-			if (mac_ctx->lim.gpLimMlmOemDataReq->data) {
-				qdf_mem_free(
-				 mac_ctx->lim.gpLimMlmOemDataReq->data);
-				mac_ctx->lim.gpLimMlmOemDataReq->data =
-				 NULL;
-			}
-			qdf_mem_free(mac_ctx->lim.gpLimMlmOemDataReq);
-			mac_ctx->lim.gpLimMlmOemDataReq = NULL;
-		}
-
-		mac_ctx->lim.gpLimMlmOemDataReq = data_req;
-		mac_ctx->lim.gpLimMlmOemDataReq->data =
-			data_req->data;
-		mac_ctx->lim.gLimPrevMlmState = mac_ctx->lim.gLimMlmState;
-
-		lim_log(mac_ctx, LOG2, FL("Calling lim_send_hal_oem_data_req"));
-		lim_send_hal_oem_data_req(mac_ctx);
-	} else {
-		/* Should not have received oem data req in other states */
-		lim_log(mac_ctx, LOGW, FL
-			("unexpected LIM_MLM_OEM_DATA_REQ in invalid state %X"),
-			mac_ctx->lim.gLimMlmState);
-		lim_print_mlm_state(mac_ctx, LOGW, mac_ctx->lim.gLimMlmState);
-
-		/* Free up buffer allocated */
-		qdf_mem_free(msg_buf);
-
-		/* Return Meas confirm with INVALID_PARAMETERS */
-		mlm_oem_data_rsp = qdf_mem_malloc(sizeof(tLimMlmOemDataRsp));
-		if (mlm_oem_data_rsp != NULL) {
-			mlm_oem_data_rsp->target_rsp = false;
-			lim_post_sme_message(mac_ctx, LIM_MLM_OEM_DATA_CNF,
-					     (uint32_t *) mlm_oem_data_rsp);
-			qdf_mem_free(mlm_oem_data_rsp);
-		} else {
-			lim_log(mac_ctx, LOGP, FL
-			    ("Could not allocate memory for mlm_oem_data_rsp"));
-			return;
-		}
-	}
-
-	return;
-}
-#endif /* FEATURE_OEM_DATA_SUPPORT */
 /**
  * lim_post_join_set_link_state_callback()- registered callback to perform post
  * peer creation operations

+ 0 - 51
core/mac/src/pe/lim/lim_process_sme_req_messages.c

@@ -1520,46 +1520,6 @@ static void __lim_process_sme_scan_req(tpAniSirGlobal mac_ctx,
 	}
 }
 
-#ifdef FEATURE_OEM_DATA_SUPPORT
-
-static void __lim_process_sme_oem_data_req(tpAniSirGlobal pMac, uint32_t *pMsgBuf)
-{
-	tpSirOemDataReq pOemDataReq;
-	tLimMlmOemDataReq *pMlmOemDataReq;
-
-	pOemDataReq = (tpSirOemDataReq) pMsgBuf;
-
-	/* post the lim mlm message now */
-	pMlmOemDataReq = qdf_mem_malloc(sizeof(*pMlmOemDataReq));
-	if (NULL == pMlmOemDataReq) {
-		lim_log(pMac, LOGP,
-			FL("AllocateMemory failed for mlmOemDataReq"));
-		return;
-	}
-	pMlmOemDataReq->data = qdf_mem_malloc(pOemDataReq->data_len);
-	if (!pMlmOemDataReq->data) {
-		lim_log(pMac, LOGP, FL("memory allocation failed"));
-		qdf_mem_free(pMlmOemDataReq);
-		return;
-	}
-
-	qdf_copy_macaddr(&pMlmOemDataReq->selfMacAddr,
-			 &pOemDataReq->selfMacAddr);
-	pMlmOemDataReq->data_len = pOemDataReq->data_len;
-	qdf_mem_copy(pMlmOemDataReq->data, pOemDataReq->data,
-		     pOemDataReq->data_len);
-	/* buffer from SME copied, free it now */
-	qdf_mem_free(pOemDataReq->data);
-	/* Issue LIM_MLM_OEM_DATA_REQ to MLM */
-	lim_post_mlm_message(pMac, LIM_MLM_OEM_DATA_REQ,
-			     (uint32_t *) pMlmOemDataReq);
-
-	return;
-
-} /*** end __lim_process_sme_oem_data_req() ***/
-
-#endif /* FEATURE_OEM_DATA_SUPPORT */
-
 /**
  * __lim_process_clear_dfs_channel_list()
  *
@@ -4677,12 +4637,6 @@ void lim_process_regd_defd_sme_req_after_noa_start(tpAniSirGlobal mac_ctx)
 		__lim_process_sme_scan_req(mac_ctx,
 				mac_ctx->lim.gpDefdSmeMsgForNOA);
 		break;
-#ifdef FEATURE_OEM_DATA_SUPPORT
-	case eWNI_SME_OEM_DATA_REQ:
-		__lim_process_sme_oem_data_req(mac_ctx,
-				mac_ctx->lim.gpDefdSmeMsgForNOA);
-		break;
-#endif
 	case eWNI_SME_REMAIN_ON_CHANNEL_REQ:
 		buf_consumed = lim_process_remain_on_chnl_req(mac_ctx,
 				mac_ctx->lim.gpDefdSmeMsgForNOA);
@@ -4997,11 +4951,6 @@ bool lim_process_sme_req_messages(tpAniSirGlobal pMac, tpSirMsgQ pMsg)
 		__lim_process_sme_scan_req(pMac, pMsgBuf);
 		break;
 
-#ifdef FEATURE_OEM_DATA_SUPPORT
-	case eWNI_SME_OEM_DATA_REQ:
-		__lim_process_sme_oem_data_req(pMac, pMsgBuf);
-		break;
-#endif
 	case eWNI_SME_REMAIN_ON_CHANNEL_REQ:
 		bufConsumed = lim_process_remain_on_chnl_req(pMac, pMsgBuf);
 		break;

+ 1 - 1
core/mac/src/pe/lim/lim_types.h

@@ -93,8 +93,8 @@
  * Values (LIM_MLM_MSG_START + 32) through
  * (LIM_MLM_MSG_START + 40) are unused.
  */
+
 #ifdef FEATURE_OEM_DATA_SUPPORT
-#define LIM_MLM_OEM_DATA_REQ            (LIM_MLM_MSG_START + 41)
 #define LIM_MLM_OEM_DATA_CNF            (LIM_MLM_MSG_START + 42)
 #endif
 

+ 0 - 2
core/mac/src/pe/lim/lim_utils.c

@@ -278,8 +278,6 @@ char *lim_msg_str(uint32_t msgType)
 	case eWNI_SME_SCAN_REQ:
 		return "eWNI_SME_SCAN_REQ";
 #ifdef FEATURE_OEM_DATA_SUPPORT
-	case eWNI_SME_OEM_DATA_REQ:
-		return "eWNI_SME_OEM_DATA_REQ";
 	case eWNI_SME_OEM_DATA_RSP:
 		return "eWNI_SME_OEM_DATA_RSP";
 #endif

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

@@ -234,7 +234,6 @@ uint8_t *mac_trace_get_sme_msg_string(uint16_t sme_msg)
 		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_REQ);
 		CASE_RETURN_STRING(eWNI_SME_OEM_DATA_RSP);
 #endif
 		CASE_RETURN_STRING(eWNI_SME_JOIN_REQ);
@@ -413,7 +412,6 @@ uint8_t *mac_trace_get_wma_msg_string(uint16_t wma_msg)
 		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_REQ);
 		CASE_RETURN_STRING(WMA_START_OEM_DATA_RSP);
 #endif /* SUPPORT_BEACON_FILTER */
 		CASE_RETURN_STRING(WMA_SET_MAX_TX_POWER_REQ);

+ 0 - 3
core/sme/inc/oem_data_api.h

@@ -70,10 +70,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 oem_data_oem_data_req(tHalHandle, uint8_t, tOemDataReqConfig *,
-				 uint32_t *pOemDataReqID);
 QDF_STATUS sme_handle_oem_data_rsp(tHalHandle hHal, uint8_t *);
-QDF_STATUS oem_data_is_oem_data_req_allowed(tHalHandle hHal);
 typedef void (*sme_send_oem_data_rsp_msg)(int length, uint8_t *oem_data_rsp);
 #endif /* _OEM_DATA_API_H__ */
 

+ 1 - 4
core/sme/inc/sme_api.h

@@ -459,10 +459,7 @@ QDF_STATUS sme_scan_get_bkid_candidate_list(tHalHandle hHal, uint32_t sessionId,
 		uint32_t *pNumItems);
 #endif /* FEATURE_WLAN_WAPI */
 #ifdef FEATURE_OEM_DATA_SUPPORT
-QDF_STATUS sme_oem_data_req(tHalHandle hHal,
-		uint8_t sessionId,
-		tOemDataReqConfig *,
-		uint32_t *pOemDataReqID);
+QDF_STATUS sme_oem_data_req(tHalHandle hHal, tSirOemDataReq *);
 QDF_STATUS sme_oem_update_capability(tHalHandle hHal,
 				     struct sme_oem_capability *cap);
 QDF_STATUS sme_oem_get_capability(tHalHandle hHal,

+ 0 - 5
core/sme/inc/sme_inside.h

@@ -230,11 +230,6 @@ bool csr_roam_is_valid40_mhz_channel(tpAniSirGlobal pmac, uint8_t channel);
 QDF_STATUS sme_acquire_global_lock(tSmeStruct *psSme);
 QDF_STATUS sme_release_global_lock(tSmeStruct *psSme);
 
-#ifdef FEATURE_OEM_DATA_SUPPORT
-QDF_STATUS oem_data_process_oem_data_req_command(tpAniSirGlobal pMac,
-		tSmeCmd *pCommand);
-#endif
-
 QDF_STATUS csr_process_add_sta_session_command(tpAniSirGlobal pMac,
 		tSmeCmd *pCommand);
 QDF_STATUS csr_process_add_sta_session_rsp(tpAniSirGlobal pMac, uint8_t *pMsg);

+ 44 - 44
core/sme/src/common/sme_api.c

@@ -988,12 +988,6 @@ sme_process_cmd:
 		csr_ll_unlock(&pMac->sme.smeCmdActiveList);
 		csr_process_del_sta_session_command(pMac, pCommand);
 		break;
-#ifdef FEATURE_OEM_DATA_SUPPORT
-	case eSmeCommandOemDataReq:
-		csr_ll_unlock(&pMac->sme.smeCmdActiveList);
-		oem_data_process_oem_data_req_command(pMac, pCommand);
-		break;
-#endif
 	case eSmeCommandRemainOnChannel:
 		csr_ll_unlock(&pMac->sme.smeCmdActiveList);
 		p2p_process_remain_on_channel_cmd(pMac, pCommand);
@@ -5930,54 +5924,60 @@ QDF_STATUS sme_scan_get_bkid_candidate_list(tHalHandle hHal, uint32_t sessionId,
 #endif /* FEATURE_WLAN_WAPI */
 
 #ifdef FEATURE_OEM_DATA_SUPPORT
-
-/*****************************************************************************
-   OEM DATA related modifications and function additions
-*****************************************************************************/
-
-/* ---------------------------------------------------------------------------
-    \fn sme_oem_data_req
-    \brief a wrapper function for OEM DATA REQ
-    \param sessionId - session id to be used.
-    \param pOemDataReqId - pointer to an object to get back the request ID
-    \return QDF_STATUS
-   ---------------------------------------------------------------------------*/
-QDF_STATUS sme_oem_data_req(tHalHandle hHal,
-			    uint8_t sessionId,
-			    tOemDataReqConfig *pOemDataReqConfig,
-			    uint32_t *pOemDataReqID)
+/**
+ * sme_oem_data_req() - send oem data request to WMA
+ * @hal: HAL handle
+ * @hdd_oem_req: OEM data request from HDD
+ *
+ * Return: QDF_STATUS
+ */
+QDF_STATUS sme_oem_data_req(tHalHandle hal, tSirOemDataReq *hdd_oem_req)
 {
 	QDF_STATUS status = QDF_STATUS_SUCCESS;
-	tpAniSirGlobal pMac = PMAC_STRUCT(hHal);
+	tpAniSirGlobal mac_ctx = PMAC_STRUCT(hal);
+	tSirOemDataReq *oem_data_req;
+	void *wma_handle;
 
-	do {
-		/* acquire the lock for the sme object */
-		status = sme_acquire_global_lock(&pMac->sme);
-		if (QDF_IS_STATUS_SUCCESS(status)) {
-			uint32_t lOemDataReqId = pMac->oemData.oemDataReqID++;  /* let it wrap around */
+	sms_log(mac_ctx, LOG1, FL("enter"));
+	wma_handle = cds_get_context(QDF_MODULE_ID_WMA);
+	if (!wma_handle) {
+		sms_log(mac_ctx, LOGE, FL("wma_handle is NULL"));
+		return QDF_STATUS_E_FAILURE;
+	}
 
-			if (pOemDataReqID) {
-				*pOemDataReqID = lOemDataReqId;
-			} else {
-				sme_release_global_lock(&pMac->sme);
-				return QDF_STATUS_E_FAILURE;
-			}
+	oem_data_req = qdf_mem_malloc(sizeof(*oem_data_req));
+	if (!oem_data_req) {
+		sms_log(mac_ctx, LOGE, FL("mem alloc failed"));
+		return QDF_STATUS_E_NOMEM;
+	}
 
-			status =
-				oem_data_oem_data_req(hHal, sessionId,
-						      pOemDataReqConfig,
-						      pOemDataReqID);
+	oem_data_req->data_len = hdd_oem_req->data_len;
+	oem_data_req->data = qdf_mem_malloc(oem_data_req->data_len);
+	if (!oem_data_req->data) {
+		sms_log(mac_ctx, LOGE, FL("mem alloc failed"));
+		return QDF_STATUS_E_NOMEM;
+	}
 
-			/* release the lock for the sme object */
-			sme_release_global_lock(&pMac->sme);
-		}
-	} while (0);
+	qdf_mem_copy(oem_data_req->data, hdd_oem_req->data,
+		     oem_data_req->data_len);
 
-	sms_log(pMac, LOGW, "exiting function %s", __func__);
+	status = wma_start_oem_data_req(wma_handle, oem_data_req);
 
+	if (!QDF_IS_STATUS_SUCCESS(status)) {
+		sms_log(mac_ctx, LOGE, FL("Post oem data request msg fail"));
+	} else {
+		sms_log(mac_ctx, LOG1,
+			FL("OEM request(length: %d) sent to WMA"),
+			oem_data_req->data_len);
+	}
+
+	if (oem_data_req->data_len)
+		qdf_mem_free(oem_data_req->data);
+	qdf_mem_free(oem_data_req);
+
+	sms_log(mac_ctx, LOG1, FL("exit"));
 	return status;
 }
-
 #endif /*FEATURE_OEM_DATA_SUPPORT */
 
 /*--------------------------------------------------------------------------

+ 0 - 3
core/sme/src/common/sme_trace.c

@@ -192,9 +192,6 @@ static uint8_t *sme_trace_get_command_string(uint32_t command)
 		CASE_RETURN_STRING(eSmeQosCommandMask);
 		CASE_RETURN_STRING(eSmeCommandAddTs);
 		CASE_RETURN_STRING(eSmeCommandDelTs);
-#ifdef FEATURE_OEM_DATA_SUPPORT
-		CASE_RETURN_STRING(eSmeCommandOemDataReq);
-#endif
 		CASE_RETURN_STRING(eSmeCommandRemainOnChannel);
 	default:
 		return "UNKNOWN";

+ 0 - 227
core/sme/src/oem_data/oem_data_api.c

@@ -95,201 +95,6 @@ QDF_STATUS oem_data_oem_data_req_close(tHalHandle hHal)
 	return QDF_STATUS_SUCCESS;
 }
 
-/* ---------------------------------------------------------------------------
-    \fn oem_data_release_oem_data_req_command
-    \brief This function removes the oemDataCommand from the active list and
-    and frees up any memory occupied by this
-    \return QDF_STATUS
-   -------------------------------------------------------------------------------*/
-void oem_data_release_oem_data_req_command(tpAniSirGlobal pMac,
-					   tSmeCmd *pOemDataCmd,
-					   eOemDataReqStatus oemDataReqStatus)
-{
-
-	/* First take this command out of the active list */
-	if (csr_ll_remove_entry
-		    (&pMac->sme.smeCmdActiveList, &pOemDataCmd->Link, LL_ACCESS_LOCK)) {
-		if (pOemDataCmd->u.oemDataCmd.oemDataReq.data) {
-			qdf_mem_free(
-			    pOemDataCmd->u.oemDataCmd.oemDataReq.data);
-			pOemDataCmd->u.oemDataCmd.oemDataReq.data =
-			    NULL;
-		}
-		qdf_mem_zero(&(pOemDataCmd->u.oemDataCmd), sizeof(tOemDataCmd));
-
-		/* Now put this command back on the avilable command list */
-		sme_release_command(pMac, pOemDataCmd);
-	} else {
-		sms_log(pMac, LOGE,
-			"OEM_DATA: **************** oem_data_release_oem_data_req_command cannot release the command");
-	}
-}
-
-/* ---------------------------------------------------------------------------
-    \fn oem_data_oem_data_req
-    \brief Request an OEM DATA RSP
-    \param sessionId - Id of session to be used
-    \param pOemDataReqID - pointer to an object to get back the request ID
-    \return QDF_STATUS
-   -------------------------------------------------------------------------------*/
-QDF_STATUS oem_data_oem_data_req(tHalHandle hHal,
-				 uint8_t sessionId,
-				 tOemDataReqConfig *oemDataReqConfig,
-				 uint32_t *pOemDataReqID)
-{
-	QDF_STATUS status = QDF_STATUS_SUCCESS;
-	tpAniSirGlobal pMac = PMAC_STRUCT(hHal);
-	tSmeCmd *pOemDataCmd = NULL;
-	tOemDataReq *cmd_req;
-
-	do {
-		if (!CSR_IS_SESSION_VALID(pMac, sessionId)) {
-			status = QDF_STATUS_E_FAILURE;
-			break;
-		}
-
-		pMac->oemData.oemDataReqID = *(pOemDataReqID);
-
-		pMac->oemData.oemDataReqActive = false;
-
-		pOemDataCmd = sme_get_command_buffer(pMac);
-
-		/* fill up the command before posting it. */
-		if (pOemDataCmd) {
-			pOemDataCmd->command = eSmeCommandOemDataReq;
-			pOemDataCmd->u.oemDataCmd.oemDataReqID =
-				pMac->oemData.oemDataReqID;
-
-
-			cmd_req = &(pOemDataCmd->u.oemDataCmd.oemDataReq);
-			/* set the oem data request */
-			cmd_req->sessionId = sessionId;
-			cmd_req->data_len =  oemDataReqConfig->data_len;
-			cmd_req->data = qdf_mem_malloc(cmd_req->data_len);
-
-			if (!cmd_req->data) {
-				sms_log(pMac, LOGE, FL("memory alloc failed"));
-				status = QDF_STATUS_E_NOMEM;
-				break;
-			}
-
-			qdf_mem_copy((void *)(cmd_req->data),
-				     (void *)(oemDataReqConfig->data),
-				     cmd_req->data_len);
-		} else {
-			status = QDF_STATUS_E_FAILURE;
-			break;
-		}
-
-		/* now queue this command in the sme command queue */
-		/* Here since this is not interacting with the csr just push the command */
-		/* into the sme queue. Also push this command with the normal priority */
-		sme_push_command(pMac, pOemDataCmd, false);
-
-	} while (0);
-
-	if (!QDF_IS_STATUS_SUCCESS(status) && pOemDataCmd) {
-		oem_data_release_oem_data_req_command(pMac, pOemDataCmd,
-						      eOEM_DATA_REQ_FAILURE);
-		pMac->oemData.oemDataReqActive = false;
-	}
-
-	return status;
-}
-
-/* ---------------------------------------------------------------------------
-    \fn oem_data_send_mb_oem_data_req
-    \brief Request an OEM DATA REQ to be passed down to PE
-    \param pMac:
-    \param pOemDataReq: Pointer to the oem data request
-    \return QDF_STATUS
-   -------------------------------------------------------------------------------*/
-QDF_STATUS oem_data_send_mb_oem_data_req(tpAniSirGlobal pMac,
-					 tOemDataReq *pOemDataReq)
-{
-	QDF_STATUS status = QDF_STATUS_SUCCESS;
-	tSirOemDataReq *pMsg;
-	tCsrRoamSession *pSession;
-	uint16_t msgLen;
-
-	sms_log(pMac, LOGW, "OEM_DATA: entering Function %s", __func__);
-
-	if (!pOemDataReq) {
-		sms_log(pMac, LOGE, FL("oem data req is NULL"));
-		return QDF_STATUS_E_INVAL;
-	}
-
-	pSession = CSR_GET_SESSION(pMac, pOemDataReq->sessionId);
-	pMsg = qdf_mem_malloc(sizeof(*pMsg));
-	if (NULL == pMsg) {
-		sms_log(pMac, LOGP, FL("qdf_mem_malloc failed"));
-		return QDF_STATUS_E_NOMEM;
-	}
-
-	msgLen = (uint16_t) (sizeof(*pMsg) + pOemDataReq->data_len);
-	pMsg->messageType = eWNI_SME_OEM_DATA_REQ;
-	pMsg->messageLen = msgLen;
-	qdf_copy_macaddr(&pMsg->selfMacAddr, &pSession->selfMacAddr);
-	pMsg->data_len = pOemDataReq->data_len;
-	pMsg->data = pOemDataReq->data;
-	/* Incoming buffer ptr saved, set to null to avoid free by caller */
-	pOemDataReq->data = NULL;
-	sms_log(pMac, LOGW, "OEM_DATA: sending message to pe%s", __func__);
-	status = cds_send_mb_message_to_mac(pMsg);
-
-	sms_log(pMac, LOGW, "OEM_DATA: exiting Function %s", __func__);
-
-	return status;
-}
-
-/**
- * oem_data_process_oem_data_req_command() - process oem data request command
- * @pMac: Mac context
- * @pOemDataReqCmd: pointer to oem data request command
- *
- * This function is called by the sme_process_command when the case hits
- * eSmeCommandOemDataReq.
- *
- * Return: QDF_STATUS
- */
-QDF_STATUS oem_data_process_oem_data_req_command(tpAniSirGlobal pMac,
-						 tSmeCmd *pOemDataReqCmd)
-{
-	QDF_STATUS status = QDF_STATUS_SUCCESS;
-
-	/* check if the system is in proper mode of operation for
-	 * oem data req/rsp to be functional. Currently, concurrency is not
-	 * supported and the driver must be operational only as
-	 * STA for oem data req/rsp to be functional. We return an invalid
-	 * mode flag if it is operational as any one of the following
-	 * in any of the active sessions
-	 * 1. AP Mode
-	 * 2. IBSS Mode
-	 * 3. BTAMP Mode
-	 */
-
-	if (QDF_STATUS_SUCCESS == oem_data_is_oem_data_req_allowed(pMac)) {
-		sms_log(pMac, LOG1,
-			FL("OEM_DATA REQ allowed in the current mode"));
-		pMac->oemData.oemDataReqActive = true;
-		status = oem_data_send_mb_oem_data_req(pMac,
-				&(pOemDataReqCmd->u.oemDataCmd.oemDataReq));
-	} else {
-		sms_log(pMac, LOG1,
-			FL("OEM_DATA REQ not allowed in the current mode"));
-		status = QDF_STATUS_E_FAILURE;
-	}
-
-	if (!QDF_IS_STATUS_SUCCESS(status)) {
-		sms_log(pMac, LOG1, FL("OEM_DATA Failure, Release command"));
-		oem_data_release_oem_data_req_command(pMac, pOemDataReqCmd,
-				eOEM_DATA_REQ_INVALID_MODE);
-		pMac->oemData.oemDataReqActive = false;
-	}
-
-	return status;
-}
-
 /**
  * sme_handle_oem_data_rsp() - processes the oem data response
  * @hHal:                      Handle returned by mac_open.
@@ -363,36 +168,4 @@ QDF_STATUS sme_handle_oem_data_rsp(tHalHandle hHal, uint8_t *pMsg)
 	return status;
 }
 
-/* ---------------------------------------------------------------------------
-    \fn oem_data_is_oem_data_req_allowed
-    \brief This function checks if OEM DATA REQs can be performed in the
-    current driver state
-    \return QDF_STATUS
-   -------------------------------------------------------------------------------*/
-QDF_STATUS oem_data_is_oem_data_req_allowed(tHalHandle hHal)
-{
-	QDF_STATUS status = QDF_STATUS_SUCCESS;
-	uint32_t sessionId;
-
-	tpAniSirGlobal pMac = PMAC_STRUCT(hHal);
-
-	for (sessionId = 0; sessionId < CSR_ROAM_SESSION_MAX; sessionId++) {
-		if (CSR_IS_SESSION_VALID(pMac, sessionId)) {
-			/* co-exist with IBSS mode is not supported */
-			if (csr_is_conn_state_ibss(pMac, sessionId)) {
-				sms_log(pMac, LOGW,
-					"OEM DATA REQ is not allowed due to IBSS exist in session %d",
-					sessionId);
-				status = QDF_STATUS_CSR_WRONG_STATE;
-				break;
-			}
-		}
-	}
-
-	sms_log(pMac, LOG1, "Exiting oem_data_is_oem_data_req_allowed with status %d",
-		status);
-
-	return status;
-}
-
 #endif /*FEATURE_OEM_DATA_SUPPORT */

+ 5 - 0
core/wma/inc/wma.h

@@ -2146,3 +2146,8 @@ QDF_STATUS wma_create_peer(tp_wma_handle wma, ol_txrx_pdev_handle pdev,
 struct wma_ini_config *wma_get_ini_handle(tp_wma_handle wma_handle);
 WLAN_PHY_MODE wma_chan_phy_mode(u8 chan, enum phy_ch_width chan_width,
 	u8 dot11_mode);
+
+#ifdef FEATURE_OEM_DATA_SUPPORT
+QDF_STATUS wma_start_oem_data_req(tp_wma_handle wma_handle,
+				  tSirOemDataReq *startOemDataReq);
+#endif

+ 0 - 13
core/wma/inc/wma_if.h

@@ -669,19 +669,6 @@ typedef struct {
 #define OEM_DATA_RSP_SIZE 1724
 #endif
 
-/**
- * struct tStartOemDataReq - start OEM Data request
- * @selfMacAddr: self mac address
- * @status: return status
- * @oemDataReq: OEM Data request
- */
-typedef struct {
-	struct qdf_mac_addr selfMacAddr;
-	QDF_STATUS status;
-	uint32_t data_len;
-	uint8_t *data;
-} tStartOemDataReq, *tpStartOemDataReq;
-
 /**
  * struct tStartOemDataRsp - start OEM Data response
  * @target_rsp: Indicates if the rsp is from Target or WMA generated.

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

@@ -1002,11 +1002,6 @@ int wma_process_receive_filter_clear_filter_req(tp_wma_handle wma_handle,
 						       tSirRcvFltPktClearParam *
 						       rcv_clear_param);
 
-#ifdef FEATURE_OEM_DATA_SUPPORT
-void wma_start_oem_data_req(tp_wma_handle wma_handle,
-				   tStartOemDataReq * startOemDataReq);
-#endif
-
 #ifdef FEATURE_WLAN_ESE
 QDF_STATUS wma_process_tsm_stats_req(tp_wma_handle wma_handler,
 				     void *pTsmStatsMsg);

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

@@ -230,7 +230,6 @@
 
 #ifdef FEATURE_OEM_DATA_SUPPORT
 /* PE <-> HAL OEM_DATA RELATED MESSAGES */
-#define WMA_START_OEM_DATA_REQ         SIR_HAL_START_OEM_DATA_REQ
 #define WMA_START_OEM_DATA_RSP         SIR_HAL_START_OEM_DATA_RSP
 #endif
 

+ 14 - 44
core/wma/src/wma_features.c

@@ -1696,66 +1696,36 @@ int wma_oem_data_response_handler(void *handle,
 /**
  * wma_start_oem_data_req() - start OEM data request to target
  * @wma_handle: wma handle
- * @startOemDataReq: start request params
+ * @oem_data_req: start request params
  *
- * Return: none
+ * Return: QDF_STATUS
  */
-void wma_start_oem_data_req(tp_wma_handle wma_handle,
-			    tStartOemDataReq *startOemDataReq)
+QDF_STATUS wma_start_oem_data_req(tp_wma_handle wma_handle,
+			    tSirOemDataReq *oem_data_req)
 {
 	int ret = 0;
-	tStartOemDataRsp *pStartOemDataRsp;
 
 	WMA_LOGD(FL("Send OEM Data Request to target"));
 
-	if (!startOemDataReq || !startOemDataReq->data) {
-		WMA_LOGE(FL("startOemDataReq is null"));
-		goto out;
+	if (!oem_data_req || !oem_data_req->data) {
+		WMA_LOGE(FL("oem_data_req is null"));
+		return QDF_STATUS_E_INVAL;
 	}
 
 	if (!wma_handle || !wma_handle->wmi_handle) {
 		WMA_LOGE(FL("WMA - closed, can not send Oem data request cmd"));
-		return;
+		qdf_mem_free(oem_data_req->data);
+		return QDF_STATUS_E_INVAL;
 	}
 
 	ret = wmi_unified_start_oem_data_cmd(wma_handle->wmi_handle,
-				   startOemDataReq->data_len,
-				   startOemDataReq->data);
+				   oem_data_req->data_len,
+				   oem_data_req->data);
 
-	if (ret != EOK) {
-		WMA_LOGE(FL(":wmi cmd send failed"));
-	}
+	if (!QDF_IS_STATUS_SUCCESS(ret))
+		WMA_LOGE(FL("wmi cmd send failed"));
 
-out:
-	/* free oem data req buffer received from UMAC */
-	if (startOemDataReq) {
-		if (startOemDataReq->data)
-			qdf_mem_free(startOemDataReq->data);
-		qdf_mem_free(startOemDataReq);
-	}
-
-	/* Now send data resp back to PE/SME with message sub-type of
-	 * WMI_OEM_INTERNAL_RSP. This is required so that PE/SME clears
-	 * up pending active command. Later when desired oem response(s)
-	 * comes as wmi event from target then those shall be passed
-	 * to oem application
-	 */
-	pStartOemDataRsp = qdf_mem_malloc(sizeof(*pStartOemDataRsp));
-	if (!pStartOemDataRsp) {
-		WMA_LOGE("%s:failed to allocate memory for OEM Data Resp to PE",
-			 __func__);
-		return;
-	}
-	qdf_mem_zero(pStartOemDataRsp, sizeof(tStartOemDataRsp));
-	pStartOemDataRsp->target_rsp = false;
-
-	WMA_LOGI("%s: Sending WMA_START_OEM_DATA_RSP to clear up PE/SME pending cmd",
-		__func__);
-
-	wma_send_msg(wma_handle, WMA_START_OEM_DATA_RSP,
-		     (void *)pStartOemDataRsp, 0);
-
-	return;
+	return ret;
 }
 #endif /* FEATURE_OEM_DATA_SUPPORT */
 

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

@@ -5513,12 +5513,6 @@ QDF_STATUS wma_mc_process_msg(void *cds_context, cds_msg_t *msg)
 				(tpSirGtkOffloadGetInfoRspParams)msg->bodyptr);
 		break;
 #endif /* WLAN_FEATURE_GTK_OFFLOAD */
-#ifdef FEATURE_OEM_DATA_SUPPORT
-	case WMA_START_OEM_DATA_REQ:
-		wma_start_oem_data_req(wma_handle,
-				       (tStartOemDataReq *) msg->bodyptr);
-		break;
-#endif /* FEATURE_OEM_DATA_SUPPORT */
 	case WMA_SET_HOST_OFFLOAD:
 		wma_enable_arp_ns_offload(wma_handle,
 					  (tpSirHostOffloadReq) msg->bodyptr,