wlan: Add support for updating multicast transmit rate.
Add support for updating multicast rate.
CRs-fixed: 549461
Change-Id: If7342207d6e828f078268d8b51f57fbcdcd94a7c
diff --git a/CORE/WDI/CP/src/wlan_qct_wdi.c b/CORE/WDI/CP/src/wlan_qct_wdi.c
index 04a4ff9..bbe4b13 100644
--- a/CORE/WDI/CP/src/wlan_qct_wdi.c
+++ b/CORE/WDI/CP/src/wlan_qct_wdi.c
@@ -422,6 +422,7 @@
NULL,
NULL,
#endif /* FEATURE_WLAN_BATCH_SCAN */
+ WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
};
@@ -22676,6 +22677,8 @@
case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
#endif
+ case WDI_RATE_UPDATE_IND:
+ return WLAN_HAL_RATE_UPDATE_IND;
default:
return WLAN_HAL_MSG_MAX;
@@ -28398,8 +28401,147 @@
} /*WDI_ProcessIbssPeerInactivityInd*/
-#ifdef FEATURE_WLAN_BATCH_SCAN
+/**
+*@brief WDI_RateUpdateInd will be called when the upper MAC
+ requests the device to set rates.
+
+ @param wdiRateUpdateIndParams:
+
+
+ @see
+ @return Result of the function call
+*/
+WDI_Status
+WDI_RateUpdateInd
+(
+ WDI_RateUpdateIndParams *wdiRateUpdateIndParams
+)
+{
+ 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_RATE_UPDATE_IND;
+ wdiEventData.pEventData = wdiRateUpdateIndParams;
+ wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
+ wdiEventData.pCBfnc = NULL;
+ wdiEventData.pUserData = NULL;
+
+ return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
+
+}/* WDI_RateUpdateInd */
+
+/**
+ @brief Process Rate Update Indication and post it to HAL
+
+ @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_ProcessRateUpdateInd
+(
+ WDI_ControlBlockType* pWDICtx,
+ WDI_EventInfoType* pEventData
+)
+{
+ wpt_uint8* pSendBuffer = NULL;
+ wpt_uint16 usDataOffset = 0;
+ wpt_uint16 usSendSize = 0;
+ WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
+ tHalRateUpdateInd *pRateUpdateInd;
+ WDI_Status wdiStatus;
+
+ /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+
+ WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
+ "%s", __func__);
+
+ /*-------------------------------------------------------------------------
+ Sanity check
+ -------------------------------------------------------------------------*/
+ if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
+ {
+ WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
+ "%s: Invalid parameters", __func__);
+ WDI_ASSERT(0);
+ return WDI_STATUS_E_FAILURE;
+ }
+ pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
+ /*-----------------------------------------------------------------------
+ Get message buffer
+ -----------------------------------------------------------------------*/
+
+ if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
+ WDI_RATE_UPDATE_IND,
+ sizeof(tHalRateUpdateParams),
+ &pSendBuffer, &usDataOffset, &usSendSize))||
+ ( usSendSize < (usDataOffset +
+ sizeof(tHalRateUpdateParams) )))
+ {
+ WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
+ "Unable to get send buffer in Rate Update Indication %p ",
+ pEventData);
+ WDI_ASSERT(0);
+ return WDI_STATUS_E_FAILURE;
+ }
+
+ pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
+
+ /* Copy the bssid */
+ wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
+ pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
+
+ /* Copy the tx flags */
+ pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
+ pwdiRateUpdateInd->ucastDataRateTxFlag;
+ pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
+ pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
+ pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
+ pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
+ pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
+ pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
+
+ /* Copy the tx rates */
+ pRateUpdateInd->halRateUpdateParams.ucastDataRate =
+ pwdiRateUpdateInd->ucastDataRate;
+ pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
+ pwdiRateUpdateInd->reliableMcastDataRate;
+ pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
+ pwdiRateUpdateInd->mcastDataRate24GHz;
+ pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
+ pwdiRateUpdateInd->mcastDataRate5GHz;
+
+ /*-------------------------------------------------------------------------
+ Send Rate Update Indication to HAL
+ -------------------------------------------------------------------------*/
+ pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
+ pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
+
+ wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
+
+ return (wdiStatus != WDI_STATUS_SUCCESS) ?
+ wdiStatus : WDI_STATUS_SUCCESS_SYNC;
+
+} /* WDI_ProcessRateUpdateInd */
+
+#ifdef FEATURE_WLAN_BATCH_SCAN
/**
@brief Process stop batch indication from WDA