+ if( (*packMacStatsReqOpts[pst.selector])(&pst, macStatsReq) == ROK)
+ return ROK;
+
+ DU_LOG("\nERROR --> DU_APP: Failed to send Statistics Request to MAC");
+ }
+
+ DU_LOG("\nERROR --> DU_APP: No Statistics group found valid. Hence statistics request is not sent to MAC");
+ DU_FREE_SHRABL_BUF(DU_APP_MEM_REGION, DU_POOL, macStatsReq, sizeof(MacStatsReq));
+ return RFAILED;
+}
+
+/*******************************************************************
+ *
+ * @brief Send Statistics request to DU layers
+ *
+ * @details
+ *
+ * Function : BuildAndSendStatsReq()
+ *
+ * Functionality: Check if there is an update in statistics
+ * reporting configuration. If so, send the update to
+ * respective layer.
+ *
+ * @params[in] Subscription Info
+ *
+ * @return ROK - success
+ * RFAILED - failure
+ *
+ * ****************************************************************/
+uint8_t BuildAndSendStatsReq(RicSubscription *ricSubscriptionInfo)
+{
+ /* Build and sent subscription information to MAC in Statistics Request */
+ if(BuildAndSendStatsReqToMac(ricSubscriptionInfo) != ROK)
+ {
+ DU_LOG("\nERROR --> DU_APP : Failed at BuildAndSendStatsReqToMac()");
+ return RFAILED;
+ }
+
+/* TODO : When KPI collection from RLC will be supported, this function will be
+ * called to configure KPIs to be colled */
+#if 0
+ if(BuildAndSendStatsReqToRlc() != ROK)
+ {
+ DU_LOG("\nERROR --> DU_APP : Failed at BuildAndSendStatsReqToRlc()");
+ return RFAILED;
+ }
+#endif
+
+ return ROK;
+}
+
+/*******************************************************************
+ *
+ * @brief Process statistics response from MAC
+ *
+ * @details
+ *
+ * Function : DuProcMacStatsRsp
+ *
+ * Functionality: Processes statistics configuration response
+ * from MAC. If configuration is succsessful, DUAPP starts
+ * reporting period timer for this subscription request
+ * from RIC
+ *
+ * @params[in]
+ *
+ * @return ROK - success
+ * RFAILED - failure
+ *
+ * ****************************************************************/
+uint8_t DuProcMacStatsRsp(Pst *pst, MacStatsRsp *statsRsp)
+{
+ uint8_t ret = RFAILED;
+ DU_LOG("\nINFO --> DU_APP : DuProcMacStatsRsp: Received Statistics Response from MAC");
+
+ if(statsRsp)
+ {
+#ifdef DEBUG_PRINT
+ uint8_t idx = 0;
+ DU_LOG("\n Subscription Id [%ld]", statsRsp->subscriptionId);
+
+ DU_LOG("\n Number of Accepted Groups [%d]", statsRsp->numGrpAccepted);
+ for(idx=0; idx<statsRsp->numGrpAccepted; idx++)