wlan: Setting Max Tx Power Limit for specific band
Added two commands to set Max Tx Power for a specific band
Change-Id: Ie79a3f28f99f04848b69acee4811b69e13e14ac3
CRs-Fixed: 517289
diff --git a/CORE/WDI/CP/src/wlan_qct_wdi.c b/CORE/WDI/CP/src/wlan_qct_wdi.c
index b034188..edc182f 100644
--- a/CORE/WDI/CP/src/wlan_qct_wdi.c
+++ b/CORE/WDI/CP/src/wlan_qct_wdi.c
@@ -394,6 +394,17 @@
#else
NULL,
#endif /* FEATURE_WLAN_LPHB */
+#if defined WLAN_FEATURE_RELIABLE_MCAST
+ WDI_ProcessLBPLeaderReq, /* WDI_LBP_LEADER_REQ */
+#else
+ NULL,
+#endif /* WLAN_FEATURE_RELIABLE_MCAST */
+
+#ifdef FEATURE_CESIUM_PROPRIETARY
+ WDI_ProcessIbssPeerInfoReq, /* WDI_HAL_IBSS_PEER_INFO_REQ */
+#else
+ NULL,
+#endif /* FEATURE_CESIUM_PROPRIETARY */
#ifdef FEATURE_WLAN_BATCH_SCAN
WDI_ProcessSetBatchScanReq, /* WDI_SET_BATCH_SCAN_REQ */
@@ -401,6 +412,7 @@
NULL,
#endif /* FEATURE_WLAN_BATCH_SCAN */
+ WDI_ProcessSetMaxTxPowerPerBandReq, /* WDI_SET_MAX_TX_POWER_PER_BAND_REQ*/
/*-------------------------------------------------------------------------
Indications
-------------------------------------------------------------------------*/
@@ -921,6 +933,7 @@
CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
+ CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
#ifdef FEATURE_WLAN_TDLS
CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
@@ -2932,6 +2945,55 @@
}
/**
+ @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
+ MAC wants to set Max Tx Power to HW for specific band.
+
+ @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
+
+ wdiReqStatusCb: callback for passing back the
+ response msg from the device
+
+ pUserData: user data will be passed back with the
+ callback
+
+ @see WDI_SetMaxTxPowerPerBandReq
+ @return Result of the function call
+*/
+WDI_Status
+WDI_SetMaxTxPowerPerBandReq
+(
+ WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
+ WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
+ void* pUserData
+)
+{
+ WDI_EventInfoType wdiEventData;
+ /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+
+ /*------------------------------------------------------------------------
+ Sanity Check
+ ------------------------------------------------------------------------*/
+ if ( eWLAN_PAL_FALSE == gWDIInitialized )
+ {
+ WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
+ "WDI API call before module is initialized - Fail request");
+
+ return WDI_STATUS_E_NOT_ALLOWED;
+ }
+
+ /*------------------------------------------------------------------------
+ Fill in Event data and post to the Main FSM
+ ------------------------------------------------------------------------*/
+ wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
+ wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
+ wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
+ wdiEventData.pCBfnc = wdiReqStatusCb;
+ wdiEventData.pUserData = pUserData;
+
+ return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
+}
+
+/**
@brief WDI_SetTxPowerReq will be called when the upper
MAC wants to set Tx Power to HW.
In state BUSY this request will be queued. Request won't
@@ -12613,6 +12675,88 @@
}
+/*
+ @brief Process Set Max Tx Power Per Band Request function (called when Main
+ FSM allows it)
+
+ @param pWDICtx: pointer to the WLAN DAL context
+ pEventData: pointer to the event information structure
+
+ @see
+ @return Result of the function call
+*/
+WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
+(
+ WDI_ControlBlockType* pWDICtx,
+ WDI_EventInfoType* pEventData
+)
+{
+ WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
+ WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
+ wpt_uint8* pSendBuffer = NULL;
+ wpt_uint16 usDataOffset = 0;
+ wpt_uint16 usSendSize = 0;
+ tpSetMaxTxPwrPerBandReq phalSetMxTxPwrPerBand = NULL;
+ WDI_Status rValue = WDI_STATUS_SUCCESS;
+ /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+
+ /*-------------------------------------------------------------------------
+ Sanity check
+ -------------------------------------------------------------------------*/
+ if (( NULL == pEventData ) ||
+ ( NULL == pEventData->pEventData ) ||
+ ( NULL == pEventData->pCBfnc ))
+ {
+ WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
+ "%s: Invalid parameters", __func__);
+ WDI_ASSERT(0);
+ return WDI_STATUS_E_FAILURE;
+ }
+ pwdiSetMaxTxPowerPerBandParams = \
+ (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
+
+ wdiSetMaxTxPowerPerBandRspCb = \
+ (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
+
+ /*-----------------------------------------------------------------------
+ Get message buffer
+ -----------------------------------------------------------------------*/
+
+ rValue = WDI_GetMessageBuffer(pWDICtx,
+ WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
+ sizeof(tSetMaxTxPwrPerBandParams),
+ &pSendBuffer, &usDataOffset, &usSendSize);
+
+ if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
+ (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
+ {
+ WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
+ "Unable to get Set Max Tx Power Per Band req %p %p %p",
+ pEventData, pwdiSetMaxTxPowerPerBandParams,
+ wdiSetMaxTxPowerPerBandRspCb);
+ WDI_ASSERT(0);
+ return WDI_STATUS_E_FAILURE;
+ }
+
+
+ phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandReq)(pSendBuffer + usDataOffset);
+ phalSetMxTxPwrPerBand->setMaxTxPwrPerBandParams.bandInfo = \
+ pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
+
+ phalSetMxTxPwrPerBand->setMaxTxPwrPerBandParams.power = \
+ pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
+
+ pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
+ pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
+
+ /*-------------------------------------------------------------------------
+ Send Set Max Tx Power Per Band Request to HAL
+ -------------------------------------------------------------------------*/
+ return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
+ wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
+ WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
+}
+
/**
@brief Process Set Tx Power Request function (called when Main
FSM allows it)
@@ -22562,6 +22706,8 @@
return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
case WDI_SET_MAX_TX_POWER_REQ:
return WLAN_HAL_SET_MAX_TX_POWER_REQ;
+ case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
+ return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
case WDI_SET_TX_POWER_REQ:
return WLAN_HAL_SET_TX_POWER_REQ;
case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
@@ -22819,6 +22965,8 @@
return WDI_HAL_TX_PER_HIT_IND;
case WLAN_HAL_SET_MAX_TX_POWER_RSP:
return WDI_SET_MAX_TX_POWER_RESP;
+ case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
+ return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
case WLAN_HAL_SET_TX_POWER_RSP:
return WDI_SET_TX_POWER_RESP;
case WLAN_HAL_SET_P2P_GONOA_RSP: