fixing RAR PDU information in the TX data request 72/13772/3
authorpborla <pborla@radisys.com>
Mon, 25 Nov 2024 08:38:57 +0000 (14:08 +0530)
committerpborla <pborla@radisys.com>
Mon, 25 Nov 2024 10:15:16 +0000 (15:45 +0530)
Change-Id: I3f4d5d2352824a20e5fca79967b14ac672b042ee
Signed-off-by: pborla <pborla@radisys.com>
build/config/tdd_odu_config.xml
src/5gnrmac/lwr_mac_fsm.c
src/5gnrsch/sch_rach.c

index 1b8b30d..b8a1d4c 100644 (file)
             </SCS_SPEC_CARRIER>
             <RACH_CFG_COMMON>
                <PRESENT>2</PRESENT>
-               <PRACH_CONFIG_IDX>88</PRACH_CONFIG_IDX>
+               <PRACH_CONFIG_IDX>66</PRACH_CONFIG_IDX>
                <MSG_1_FDM>0</MSG_1_FDM>
                <MAX_NUM_RB>273</MAX_NUM_RB>
                <PRACH_MAX_PRB>24</PRACH_MAX_PRB>
       <PRACH_CFG>
          <PRACH_SEQ_LEN>1</PRACH_SEQ_LEN>
          <NR_SCS>30</NR_SCS>
-         <PRACH_CONFIG_IDX>88</PRACH_CONFIG_IDX>
+         <PRACH_CONFIG_IDX>66</PRACH_CONFIG_IDX>
          <NUM_PRACH_FDM>1</NUM_PRACH_FDM>
          <FDM_LIST>
             <FDM_INFO>
index ecade95..96e6d77 100644 (file)
@@ -4178,12 +4178,8 @@ uint8_t fillPageTxDataReq(fapi_tx_pdu_desc_t *pduDesc, uint16_t pduIndex, DlPage
 uint8_t fillRarTxDataReq(fapi_tx_pdu_desc_t *pduDesc, uint16_t pduIndex, RarInfo *rarInfo, PdschCfg *pdschCfg)
 {
 
-#ifndef OAI_TESTING 
 #ifndef OAI_TESTING 
    uint32_t payloadSize = 0;
-#else
-   uint16_t payloadSize = 0;
-#endif
 
    uint8_t  *rarPayload = NULLP;
    fapi_api_queue_elem_t *payloadElem = NULLP;
@@ -4193,19 +4189,11 @@ uint8_t fillRarTxDataReq(fapi_tx_pdu_desc_t *pduDesc, uint16_t pduIndex, RarInfo
 
    payloadSize = pdschCfg->codeword[0].tbSize;
 
-#ifndef OAI_TESTING
    pduDesc[pduIndex].pdu_index = pduIndex;
    pduDesc[pduIndex].num_tlvs = 1;
    /* fill the TLV */
    pduDesc[pduIndex].tlvs[0].tl.tag = FAPI_TX_DATA_PTR_TO_PAYLOAD_64;
    pduDesc[pduIndex].tlvs[0].tl.length = payloadSize;
-#else
-   pduDesc[pduIndex].pdu_index = reverseBytes16(pduIndex);
-   pduDesc[pduIndex].num_tlvs = reverseBytes32(1);
-   /* fill the TLV */
-   pduDesc[pduIndex].tlvs[0].tl.tag = reverseBytes16(FAPI_TX_DATA_PTR_TO_PAYLOAD_32);
-   pduDesc[pduIndex].tlvs[0].tl.length = reverseBytes16(payloadSize);
-#endif
 
    LWR_MAC_ALLOC(rarPayload, payloadSize);
    if(rarPayload == NULLP)
@@ -4223,15 +4211,28 @@ uint8_t fillRarTxDataReq(fapi_tx_pdu_desc_t *pduDesc, uint16_t pduIndex, RarInfo
 #endif
 
    pduDesc[pduIndex].pdu_length = payloadSize;
-#ifdef OAI_TESTING
-   pduDesc[pduIndex].pdu_length = reverseBytes16(pduDesc[pduIndex].pdu_length);
-#endif
 
 #ifdef INTEL_WLS_MEM
    addWlsBlockToFree(rarPayload, payloadSize, (lwrMacCb.phySlotIndCntr-1));
 #else
    LWR_MAC_FREE(rarPayload, payloadSize);
 #endif
+
+#else
+
+   uint8_t tlvPaddingLen =get_tlv_padding(rarInfo->rarPduLen);
+   uint16_t totalLen= rarInfo->rarPduLen +tlvPaddingLen;
+   pduDesc[pduIndex].pdu_length = totalLen;
+   pduDesc[pduIndex].pdu_length = reverseBytes16(pduDesc[pduIndex].pdu_length);
+
+   pduDesc[pduIndex].pdu_index = reverseBytes16(pduIndex);
+   pduDesc[pduIndex].num_tlvs = reverseBytes32(1);
+   /* fill the TLV */
+   pduDesc[pduIndex].tlvs[0].tag = reverseBytes16(FAPI_TX_DATA_PAYLOAD);
+   pduDesc[pduIndex].tlvs[0].length = reverseBytes16(rarInfo->rarPduLen);
+
+   memcpy(pduDesc[pduIndex].tlvs[0].value.direct, rarInfo->rarPdu, rarInfo->rarPduLen);
+
 #endif /* FAPI */
    return ROK;
 }
index 50b4281..4c5d8f5 100644 (file)
@@ -162,8 +162,16 @@ void schPrachResAlloc(SchCellCb *cell, UlSchedInfo *ulSchedInfo, SlotTimingInfo
    prachCfgIdx      = cell->cellCfg.ulCfgCommon.schInitialUlBwp.schRachCfg.prachCfgGeneric.prachCfgIdx;
    prachFormat      = prachCfgIdxTable[prachCfgIdx][0];
    prachStartSymbol = prachCfgIdxTable[prachCfgIdx][4];
-   prachOcas        = prachCfgIdxTable[prachCfgIdx][6];
    prachDuration    = prachCfgIdxTable[prachCfgIdx][7];
+   if(prachFormat>3)
+   {
+      prachOcas        = prachCfgIdxTable[prachCfgIdx][6];
+   }
+   else
+   {
+      /* Note - as per spec 38.211 sec 5.3.2, N(ra,slot) is fixed to 1 for L_RA = 839 (long seq format)*/
+      prachOcas        = 1;
+   }
 
    /* numRa determined as 𝑛 belonging {0,1,.., M − 1},
     * where M is given by msg1Fdm */