for(tbIdx = 0; tbIdx < raCb->msg4HqInfo.numTb; tbIdx++)
{
MAC_FREE(raCb->msg4HqInfo.tbInfo[tbIdx].tb, \
- raCb->msg4HqInfo.tbInfo[tbIdx].tbSize);
+ raCb->msg4HqInfo.tbInfo[tbIdx].tbSize - TX_PAYLOAD_HDR_LEN);
}
memset(raCb, 0, sizeof(MacRaCbInfo));
}
*
* @details
*
-* Function : MacProcSchUeCfgRsp
+* Function : MacProcSchUeDeleteRsp
*
* Functionality:
-* Processes UE create delete from scheduler
+* Processes UE delete from scheduler
*
* @params[in] Pst : Post structure
* schUeDelRsp : Scheduler UE delete respons
uint8_t MacProcSchUeDeleteRsp(Pst *pst, SchUeDeleteRsp *schUeDelRsp)
{
- uint8_t ueId =0, isCrntiValid = 0;
+ uint8_t ueId =0, isCrntiValid = 0, tbIdx =0, idx=0;
uint16_t cellIdx=0;
uint8_t ret = RFAILED;
UeDeleteStatus result;
+ DlHarqEnt *dlHarqEnt;
#ifdef CALL_FLOW_DEBUG_LOG
DU_LOG("\nCall Flow: ENTSCH -> ENTMAC : EVENT_UE_DELETE_RSP_TO_MAC\n");
MAC_FREE(macCb.macCell[cellIdx]->ueCb[ueId -1].dlInfo.lcCb[lcIdx].snssai, sizeof(Snssai));
}
#endif
+ dlHarqEnt = &macCb.macCell[cellIdx]->ueCb[ueId -1].dlInfo.dlHarqEnt;
+ for(idx =0 ; idx<MAX_NUM_HARQ_PROC; idx++)
+ {
+ tbIdx = 0;
+ while(dlHarqEnt->harqProcCb[idx].numTb)
+ {
+
+ MAC_FREE(dlHarqEnt->harqProcCb[idx].tbInfo[tbIdx].tb, dlHarqEnt->harqProcCb[idx].tbInfo[tbIdx].tbSize);
+ dlHarqEnt->harqProcCb[idx].numTb--;
+ tbIdx++;
+ }
+ }
memset(&macCb.macCell[cellIdx]->ueCb[ueId -1], 0, sizeof(MacUeCb));
macCb.macCell[cellIdx]->numActvUe--;
result = SUCCESS;
SchCellCb *cell = NULLP;
CmLList *node;
uint8_t* ueNode;
- SchDlHqProcCb *hqP = NULLP, *ulHqP = NULLP;
+ SchDlHqProcCb *hqP = NULLP;
+ SchUlHqProcCb *ulHqP = NULLP;
memset(&dlSchedInfo, 0, sizeof(DlSchedInfo));
schCalcSlotValues(*slotInd, &dlSchedInfo.schSlotValue);
* ****************************************************************/
void deleteSchUeCb(SchUeCb *ueCb)
{
- uint8_t timeDomRsrcIdx = 0, ueLcIdx = 0;
+ uint8_t timeDomRsrcIdx = 0, ueLcIdx = 0, idx =0;
SchPucchCfg *pucchCfg = NULLP;
SchPdschConfig *pdschCfg = NULLP;
+ CmLList *node = NULLP, *next = NULLP;
if(ueCb)
{
+ if(ueCb->hqDlmap)
+ {
+ for (idx = 0; idx<ueCb->cellCb->numSlots; idx++)
+ {
+ if(ueCb->hqDlmap[idx])
+ {
+ cmLListDeleteLList(&ueCb->hqDlmap[idx]->hqList);
+ SCH_FREE(ueCb->hqDlmap[idx], sizeof(SchHqDlMap));
+ }
+ }
+ SCH_FREE(ueCb->hqDlmap, sizeof(SchHqDlMap*)*(ueCb->cellCb->numSlots));
+ }
+
+ if(ueCb->hqUlmap)
+ {
+ for (idx = 0; idx<ueCb->cellCb->numSlots; idx++)
+ {
+ if(ueCb->hqUlmap[idx])
+ {
+ cmLListDeleteLList(&ueCb->hqUlmap[idx]->hqList);
+ SCH_FREE(ueCb->hqUlmap[idx], sizeof(SchHqUlMap));
+ }
+ }
+ SCH_FREE(ueCb->hqUlmap, sizeof(SchHqUlMap*)*(ueCb->cellCb->numSlots));
+ }
+
SCH_FREE(ueCb->ueCfg.ambrCfg, sizeof(SchAmbrCfg));
if(ueCb->ueCfg.spCellCfgPres)
{