Stop Req and Stop Ind code changes
[o-du/l2.git] / src / du_app / du_msg_hdl.c
index 191c87d..305af8b 100644 (file)
@@ -1697,7 +1697,7 @@ uint16_t duBuildAndSendMacCellStartReq()
    DU_LOG("\nDU APP : Building and Sending cell start request to MAC");
 
    /* Send Cell Start Request to MAC */
-   DU_ALLOC(cellStartInfo, sizeof(MacCellStartInfo));
+   DU_ALLOC_SHRABL_BUF(cellStartInfo, sizeof(MacCellStartInfo));
    if(!cellStartInfo)
    {
       DU_LOG("\nDU APP : Memory alloc failed while building cell start request");
@@ -1745,7 +1745,7 @@ uint16_t duBuildAndSendMacCellStartReq()
  *         RFAILED - failure
  *
  * ****************************************************************/
-S16 duBuildAndSendMacCellStopReq()
+uint16_t duBuildAndSendMacCellStopReq()
 {
    Pst pst;
    MacCellStopInfo *cellStopInfo = NULL;
@@ -1753,7 +1753,7 @@ S16 duBuildAndSendMacCellStopReq()
    DU_LOG("\nDU APP : Building and Sending cell stop request to MAC");
 
    /* Send Cell Stop Request to MAC */
-   DU_ALLOC(cellStopInfo, sizeof(MacCellStopInfo));
+   DU_ALLOC_SHRABL_BUF(cellStopInfo, sizeof(MacCellStopInfo));
    if(!cellStopInfo)
    {
       DU_LOG("\nDU APP : Memory alloc failed while building cell stop request");
@@ -1776,7 +1776,46 @@ S16 duBuildAndSendMacCellStopReq()
    return (*packMacCellStopReqOpts[pst.selector])(&pst, cellStopInfo);
 }
 
+/*******************************************************************
+ *
+ * @brief Handles stop indication from MAC
+ *
+ * @details
+ *
+ *    Function : duHandleStopInd
+ *
+ *    Functionality:
+ *      Handles stop indication from MAC
+ *
+ * @params[in] Post structure pointer
+ * @return ROK     - success
+ *         RFAILED - failure
+ *
+ * ****************************************************************/
+uint16_t duHandleStopInd(Pst *pst, MacCellStopInfo *cellStopId)
+{
+   if(cellStopId->cellId <=0 || cellStopId->cellId > DU_MAX_CELLS)
+   {
+      DU_LOG("\nDU APP : Invalid Cell Id %d", cellStopId->cellId);
+   }
+       if(duCb.actvCellLst[cellStopId->cellId-1] != NULL)
+       {
+      if(duCb.actvCellLst[cellStopId->cellId-1]->firstSlotIndRcvd)
+      {
+         duCb.actvCellLst[cellStopId->cellId-1]->firstSlotIndRcvd = false;
+         if((duCb.actvCellLst[cellStopId->cellId-1]->cellStatus == \
+             ACTIVATED))
+         {
+            DU_LOG("\nDU APP : 5G-NR Cell %d is DOWN", cellStopId->cellId);
+            duCb.actvCellLst[cellStopId->cellId-1]->cellStatus = DELETION_IN_PROGRESS;
+         }
+      }
+       }
+   if((pst->selector == DU_SELECTOR_LWLC) || (pst->selector == DU_SELECTOR_TC))
+      DU_FREE_SHRABL_BUF(MAC_MEM_REGION, pst->pool, cellStopId, sizeof(MacCellStopInfo));
 
+   return ROK;
+}
 /**********************************************************************
   End of file
  **********************************************************************/