wlan: MCC Adaptive Scheduler
MCC Adaptive Scheduler. By default this feature is disabled and can be
enabled using gEnableMCCAdaptiveScheduler=1 in INI file.
CR-Fixed: 434878
Change-Id: I9e5c41f2f2bf8318b4a4ce2bbd11fb1a04e69837
(cherry picked from commit 01cba04ef6dd5690c9eb7a45d422472a8a496ac8)
diff --git a/CORE/WDI/CP/src/wlan_qct_wdi.c b/CORE/WDI/CP/src/wlan_qct_wdi.c
index 6436104..75f647d 100644
--- a/CORE/WDI/CP/src/wlan_qct_wdi.c
+++ b/CORE/WDI/CP/src/wlan_qct_wdi.c
@@ -355,6 +355,7 @@
Indications
-------------------------------------------------------------------------*/
WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
+ WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
};
@@ -861,6 +862,7 @@
CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
+ CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
default:
return "Unknown WDI MessageId";
}
@@ -5562,6 +5564,51 @@
}/*WDI_HostSuspendInd*/
/**
+ @brief WDI_TrafficStatsInd
+ Traffic Stats from the upper layer will be sent
+ down to HAL
+
+ @param WDI_TrafficStatsIndType
+
+ @see
+
+ @return Status of the request
+*/
+WDI_Status
+WDI_TrafficStatsInd
+(
+ WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
+)
+{
+
+ 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_TRAFFIC_STATS_IND;
+ wdiEventData.pEventData = pWdiTrafficStatsIndParams;
+ wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
+ wdiEventData.pCBfnc = NULL;
+ wdiEventData.pUserData = NULL;
+
+ return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
+
+}/*WDI_TrafficStatsInd*/
+
+/**
@brief WDI_HALDumpCmdReq
Post HAL DUMP Command Event
@@ -10307,6 +10354,86 @@
return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
}/*WDI_ProcessHostSuspendInd*/
+
+
+/**
+ @brief Process Traffic Stats Indications 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_ProcessTrafficStatsInd
+(
+ WDI_ControlBlockType* pWDICtx,
+ WDI_EventInfoType* pEventData
+)
+{
+ WDI_TrafficStatsIndType* pTrafficStatsIndParams;
+ wpt_uint8* pSendBuffer = NULL;
+ wpt_uint16 usDataOffset = 0;
+ wpt_uint16 usSendSize = 0;
+ WDI_Status wdiStatus;
+ tStatsClassBIndParams* pStatsClassBIndParams;
+ /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+
+ /*-------------------------------------------------------------------------
+ Sanity check
+ -------------------------------------------------------------------------*/
+ if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
+ {
+ WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
+ "%s: Invalid parameters in Traffic Stats ind",__func__);
+ WDI_ASSERT(0);
+ return WDI_STATUS_E_FAILURE;
+ }
+
+ pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
+
+ if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
+ {
+ WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
+ "%s: Invalid parameters in Traffic Stats ind",__func__);
+ WDI_ASSERT(0);
+ return WDI_STATUS_E_FAILURE;
+ }
+
+ /*-----------------------------------------------------------------------
+ Get message buffer
+ -----------------------------------------------------------------------*/
+ if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
+ WDI_TRAFFIC_STATS_IND,
+ sizeof(tStatsClassBIndParams),
+ &pSendBuffer, &usDataOffset, &usSendSize))||
+ (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
+ {
+ WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
+ "Unable to get send buffer in Traffic Stats Ind ");
+ WDI_ASSERT(0);
+ return WDI_STATUS_E_FAILURE;
+ }
+
+ pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
+
+ pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
+
+ wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
+ pTrafficStatsIndParams->pTrafficStats,
+ pTrafficStatsIndParams->length);
+
+ /*-------------------------------------------------------------------------
+ Send Suspend Request to HAL
+ -------------------------------------------------------------------------*/
+ pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
+ pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
+
+ wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
+ return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
+}/*WDI_ProcessTrafficStatsInd*/
+
/*==========================================================================
MISC CONTROL PROCESSING REQUEST API
==========================================================================*/
@@ -20999,6 +21126,8 @@
return WLAN_HAL_HOST_RESUME_REQ;
case WDI_HOST_SUSPEND_IND:
return WLAN_HAL_HOST_SUSPEND_IND;
+ case WDI_TRAFFIC_STATS_IND:
+ return WLAN_HAL_CLASS_B_STATS_IND;
case WDI_KEEP_ALIVE_REQ:
return WLAN_HAL_KEEP_ALIVE_REQ;