JIRA ID:[ODUHIGH-282]:UL REASSEMBLE SDU
[o-du/l2.git] / src / 5gnrrlc / kw_utl_ul.c
index f954e76..b8a56f4 100755 (executable)
@@ -120,7 +120,7 @@ uint8_t rlcUtlRcvFrmMac(RlcCb *gCb, KwDatIndInfo  *datIndInfo)
          {
             if(datIndInfo->lchData[i].pdu.mBuf[j])
             {
-               RLC_FREE_BUF_WC(datIndInfo->lchData[i].pdu.mBuf[j]);
+               ODU_PUT_MSG_BUF(datIndInfo->lchData[i].pdu.mBuf[j]);
             }
          }
       }
@@ -155,7 +155,7 @@ uint8_t rlcUtlRcvFrmMac(RlcCb *gCb, KwDatIndInfo  *datIndInfo)
          {
             if(pduInfo->mBuf[j])
             {
-               RLC_FREE_BUF_WC(pduInfo->mBuf[j]);
+               ODU_PUT_MSG_BUF(pduInfo->mBuf[j]);
             }
          }
          continue;
@@ -221,7 +221,7 @@ uint8_t rlcUtlSendUlDataToDu(RlcCb *gCb, RlcUlRbCb *rbCb, Buffer *sdu)
    {
       DU_LOG("\nRLC : rlcUtlSendUlDataToDu: Memory allocation failed UEID:%d \
          CELLID:%d", rbCb->rlcId.ueId, rbCb->rlcId.cellId);
-      RLC_FREE_BUF(sdu);
+      ODU_PUT_MSG_BUF(sdu);
       return RFAILED;
    }
 #endif /* ERRCLASS & ERRCLS_ADD_RES */
@@ -1010,7 +1010,7 @@ RlcAmRecBuf* rlcUtlGetRecBuf(CmLListCp *recBufLst, RlcSn sn)
       CM_LLIST_NEXT_NODE(recBufLstCp, node);
    }
    return NULLP;
-} /* rlcUtlStoreRecBuf */
+} /* rlcUtlGetRecBuf */
 /**
  *
  * @brief Delete the UL buffer from the list
@@ -1034,12 +1034,74 @@ void rlcUtlDelRecBuf(CmLListCp *recBufLst, RlcAmRecBuf *recBuf, RlcCb *gCb)
  
    recBufLstCp = &recBufLst[hashKey];
    cmLListDelFrm(recBufLstCp, &recBuf->lnk);
-   RLC_FREE_WC(gCb, recBuf, sizeof(RlcAmRecBuf));
+   RLC_FREE(gCb, recBuf, sizeof(RlcAmRecBuf));
 
    return;
 } /* rlcUtlDelRecBuf */
 
+#ifdef NR_RLC_UL
+/**
+ *
+ * @brief Store the UL buffer in hashList  
+ *
+ *
+ * @b Description
+ *
+ *   Use the SN % binSize as key and store the received UL buffer
+ *  @param[in] recBufLst       List CP array
+ *  @param[in] recBuf          received buffer
+ *  @param[in] sn              sn of the received buffer 
+ *
+ *
+ *  @return  Void
+ */
+void rlcUtlStoreUmRecBuf(CmLListCp *recBufLst, RlcUmRecBuf *recBuf, RlcSn sn)
+{
+   uint32_t    hashKey; 
+   
+   hashKey = (sn % RLC_RCV_BUF_BIN_SIZE ); 
+   recBuf->lnk.node = (PTR)recBuf;
+   cmLListAdd2Tail(&(recBufLst[hashKey]), &recBuf->lnk);
 
+   return;
+} /* rlcUtlStoreUmRecBuf */
+/**
+ *
+ * @brief Retrieve the UL buffer from the list
+ *
+ *
+ * @Description
+ *
+ *   Use the SN % binSize as key and retrieve the UL buffer
+ *  @param[in] recBufLst       List CP array
+ *  @param[in] sn              sn of the received buffer 
+ *
+ *
+ *  @return  Void
+ */
+RlcUmRecBuf* rlcUtlGetUmRecBuf(CmLListCp *recBufLst, RlcSn sn)
+{
+   uint32_t            hashKey; 
+   CmLListCp           *recBufLstCp;
+   RlcUmRecBuf         *recBuf;
+   CmLList             *node = NULLP;
+
+   hashKey = (sn % RLC_RCV_BUF_BIN_SIZE ); 
+   recBufLstCp = &recBufLst[hashKey];
+   CM_LLIST_FIRST_NODE(recBufLstCp, node);
+   while(node)
+   {
+      recBuf = (RlcUmRecBuf *) node->node;
+      if(recBuf->umHdr.sn == sn)
+      {
+         return recBuf;
+      }
+      CM_LLIST_NEXT_NODE(recBufLstCp, node);
+   }
+   return NULLP;
+} /* rlcUtlGetUmRecBuf */
+#endif
 
 
 /********************************************************************30**