uint8_t UnrestrictedSetNcsTable[MAX_ZERO_CORR_CFG_IDX];
void fapiMacConfigRsp(uint16_t cellId);
-uint16_t sendTxDataReq(SlotIndInfo currTimingInfo, DlSchedInfo *dlInfo, p_fapi_api_queue_elem_t headerElem);
-uint16_t fillUlTtiReq(SlotIndInfo currTimingInfo, p_fapi_api_queue_elem_t headerElem);
+uint16_t sendTxDataReq(SlotIndInfo currTimingInfo, DlSchedInfo *dlInfo, p_fapi_api_queue_elem_t prevElem);
+uint16_t fillUlTtiReq(SlotIndInfo currTimingInfo, p_fapi_api_queue_elem_t prevElem);
void lwrMacLayerInit(Region region, Pool pool)
{
* @return ROK
*
* ********************************************************************/
-uint8_t fillSib1TxDataReq(fapi_tx_pdu_desc_t *pduDesc,MacCellCfg *macCellCfg,
- uint16_t pduIndex)
+uint8_t fillSib1TxDataReq(fapi_tx_pdu_desc_t *pduDesc, uint16_t pduIndex, MacCellCfg *macCellCfg,
+ PdschCfg pdschCfg)
{
- uint32_t pduLen = 0;
- uint8_t *sib1TxdataValue = NULLP;
+ uint16_t payloadSize = 0;
+ uint8_t *sib1Payload = NULLP;
+ fapi_api_queue_elem_t *payloadElem = NULLP;
+#ifdef INTEL_WLS_MEM
+ void * wlsHdlr = NULLP;
+#endif
pduDesc[pduIndex].pdu_index = pduIndex;
pduDesc[pduIndex].num_tlvs = 1;
/* fill the TLV */
- /* as of now, memory is allocated from SSI, later WLS memory needs to be taken */
+ payloadSize = pdschCfg.codeword[0].tbSize;
pduDesc[pduIndex].tlvs[0].tl.tag = FAPI_TX_DATA_PTR_TO_PAYLOAD_64;
- pduDesc[pduIndex].tlvs[0].tl.length = macCellCfg->sib1Cfg.sib1PduLen;
- LWR_MAC_ALLOC(sib1TxdataValue,macCellCfg->sib1Cfg.sib1PduLen);
- if(sib1TxdataValue == NULLP)
+ pduDesc[pduIndex].tlvs[0].tl.length = payloadSize;
+ LWR_MAC_ALLOC(sib1Payload, payloadSize);
+ if(sib1Payload == NULLP)
{
return RFAILED;
}
- memcpy(sib1TxdataValue,macCellCfg->sib1Cfg.sib1Pdu,
- macCellCfg->sib1Cfg.sib1PduLen);
- pduDesc[pduIndex].tlvs[0].value = sib1TxdataValue;
+ payloadElem = (fapi_api_queue_elem_t *)sib1Payload;
+ FILL_FAPI_LIST_ELEM(payloadElem, NULLP, FAPI_VENDOR_MSG_PHY_ZBC_BLOCK_REQ, 1, \
+ macCellCfg->sib1Cfg.sib1PduLen);
+ memcpy(sib1Payload + TX_PAYLOAD_HDR_LEN, macCellCfg->sib1Cfg.sib1Pdu, macCellCfg->sib1Cfg.sib1PduLen);
- /* The total length of the PDU description and PDU data */
- pduLen += 8; /* size of PDU length 2 bytes, PDU index 2 bytes, numTLV 4 bytes */
- pduLen += sizeof(fapi_uint8_ptr_tlv_t); /* only 1 TLV is present */
- pduDesc[pduIndex].pdu_length = pduLen;
+#ifdef INTEL_WLS_MEM
+ mtGetWlsHdl(&wlsHdlr);
+ pduDesc[pduIndex].tlvs[0].value = WLS_VA2PA(wlsHdlr, sib1Payload);
+#else
+ pduDesc[pduIndex].tlvs[0].value = sib1Payload;
+#endif
+ pduDesc[pduIndex].pdu_length = payloadSize;
#ifdef INTEL_WLS_MEM
- addWlsBlockToFree(sib1TxdataValue, macCellCfg->sib1Cfg.sib1PduLen, (lwrMacCb.phySlotIndCntr-1));
+ addWlsBlockToFree(sib1Payload, payloadSize, (lwrMacCb.phySlotIndCntr-1));
#else
- LWR_MAC_FREE(sib1TxdataValue, macCellCfg->sib1Cfg.sib1PduLen);
+ LWR_MAC_FREE(sib1Payload, payloadSize);
#endif
return ROK;
* @return ROK
*
* ********************************************************************/
-uint8_t fillRarTxDataReq(fapi_tx_pdu_desc_t *pduDesc, RarInfo *rarInfo,
- uint16_t pduIndex)
+uint8_t fillRarTxDataReq(fapi_tx_pdu_desc_t *pduDesc, uint16_t pduIndex, RarInfo *rarInfo, PdschCfg pdschCfg)
{
- uint32_t pduLen = 0;
- uint8_t *rarTxdataValue = NULLP;
+ uint16_t payloadSize;
+ uint8_t *rarPayload = NULLP;
+ fapi_api_queue_elem_t *payloadElem = NULLP;
+#ifdef INTEL_WLS_MEM
+ void * wlsHdlr = NULLP;
+#endif
pduDesc[pduIndex].pdu_index = pduIndex;
pduDesc[pduIndex].num_tlvs = 1;
/* fill the TLV */
- /* as of now, memory is allocated from SSI, later WLS memory needs to be taken */
+ payloadSize = pdschCfg.codeword[0].tbSize;
pduDesc[pduIndex].tlvs[0].tl.tag = FAPI_TX_DATA_PTR_TO_PAYLOAD_64;
- pduDesc[pduIndex].tlvs[0].tl.length = rarInfo->rarPduLen;
- LWR_MAC_ALLOC(rarTxdataValue,rarInfo->rarPduLen);
- if(rarTxdataValue == NULLP)
+ pduDesc[pduIndex].tlvs[0].tl.length = payloadSize;
+ LWR_MAC_ALLOC(rarPayload, payloadSize);
+ if(rarPayload == NULLP)
{
return RFAILED;
}
- memcpy(rarTxdataValue,rarInfo->rarPdu,rarInfo->rarPduLen);
- pduDesc[pduIndex].tlvs[0].value = rarTxdataValue;
-
- /* The total length of the PDU description and PDU data */
- pduLen += 8; /* size of PDU length 2 bytes, PDU index 2 bytes, numTLV 4 bytes */
- pduLen += sizeof(fapi_uint8_ptr_tlv_t); /* only 1 TLV is present */
- pduDesc[pduIndex].pdu_length = pduLen;
+ payloadElem = (fapi_api_queue_elem_t *)rarPayload;
+ FILL_FAPI_LIST_ELEM(payloadElem, NULLP, FAPI_VENDOR_MSG_PHY_ZBC_BLOCK_REQ, 1, rarInfo->rarPduLen);
+ memcpy(rarPayload + TX_PAYLOAD_HDR_LEN, rarInfo->rarPdu, rarInfo->rarPduLen);
- /* TODO: The pointer value which was stored, needs to be free-ed at PHY *
- * But since we did not implement WLS, this has to be done here
- */
-#ifdef INTEL_WLS_MEM
- addWlsBlockToFree(rarTxdataValue, rarInfo->rarPduLen, (lwrMacCb.phySlotIndCntr-1));
+#ifdef INTEL_WLS_MEM
+ mtGetWlsHdl(&wlsHdlr);
+ pduDesc[pduIndex].tlvs[0].value = WLS_VA2PA(wlsHdlr, rarPayload);
#else
- LWR_MAC_FREE(rarTxdataValue, rarInfo->rarPduLen);
+ pduDesc[pduIndex].tlvs[0].value = rarPayload;
#endif
+ pduDesc[pduIndex].pdu_length = payloadSize;
+#ifdef INTEL_WLS_MEM
+ addWlsBlockToFree(rarPayload, payloadSize, (lwrMacCb.phySlotIndCntr-1));
+#else
+ LWR_MAC_FREE(rarPayload, payloadSize);
+#endif
return ROK;
}
* @return ROK
*
* ********************************************************************/
-uint8_t fillDlMsgTxDataReq(fapi_tx_pdu_desc_t *pduDesc, DlMsgInfo *dlMsgInfo,
- uint16_t pduIndex)
+uint8_t fillDlMsgTxDataReq(fapi_tx_pdu_desc_t *pduDesc, uint16_t pduIndex, DlMsgInfo *dlMsgInfo, PdschCfg pdschCfg)
{
- uint32_t pduLen = 0;
- uint8_t *dedMsgTxDataValue = NULLP;
+ uint16_t payloadSize;
+ uint8_t *dlMsgPayload = NULLP;
+ fapi_api_queue_elem_t *payloadElem = NULLP;
+#ifdef INTEL_WLS_MEM
+ void * wlsHdlr = NULLP;
+#endif
pduDesc[pduIndex].pdu_index = pduIndex;
pduDesc[pduIndex].num_tlvs = 1;
/* fill the TLV */
- /* as of now, memory is allocated from SSI, later WLS memory needs to be taken */
+ payloadSize = pdschCfg.codeword[0].tbSize;
pduDesc[pduIndex].tlvs[0].tl.tag = FAPI_TX_DATA_PTR_TO_PAYLOAD_64;
- pduDesc[pduIndex].tlvs[0].tl.length = dlMsgInfo->dlMsgPduLen;
- LWR_MAC_ALLOC(dedMsgTxDataValue, dlMsgInfo->dlMsgPduLen);
- if(dedMsgTxDataValue == NULLP)
+ pduDesc[pduIndex].tlvs[0].tl.length = payloadSize;
+ LWR_MAC_ALLOC(dlMsgPayload, payloadSize);
+ if(dlMsgPayload == NULLP)
{
return RFAILED;
}
- memcpy(dedMsgTxDataValue, dlMsgInfo->dlMsgPdu, dlMsgInfo->dlMsgPduLen);
- pduDesc[pduIndex].tlvs[0].value = dedMsgTxDataValue;
+ payloadElem = (fapi_api_queue_elem_t *)dlMsgPayload;
+ FILL_FAPI_LIST_ELEM(payloadElem, NULLP, FAPI_VENDOR_MSG_PHY_ZBC_BLOCK_REQ, 1, dlMsgInfo->dlMsgPduLen);
+ memcpy(dlMsgPayload + TX_PAYLOAD_HDR_LEN, dlMsgInfo->dlMsgPdu, dlMsgInfo->dlMsgPduLen);
- /* The total length of the PDU description and PDU data */
- pduLen += 8; /* size of PDU length 2 bytes, PDU index 2 bytes, numTLV 4 bytes */
- pduLen += sizeof(fapi_uint8_ptr_tlv_t); /* only 1 TLV is present */
- pduDesc[pduIndex].pdu_length = pduLen;
-
- /* TODO: The pointer value which was stored, needs to be free-ed at PHY *
- * But since we did not implement WLS, this has to be done here
- */
-#ifdef INTEL_WLS_MEM
- addWlsBlockToFree(dedMsgTxDataValue, dlMsgInfo->dlMsgPduLen, (lwrMacCb.phySlotIndCntr-1));
+#ifdef INTEL_WLS_MEM
+ mtGetWlsHdl(&wlsHdlr);
+ pduDesc[pduIndex].tlvs[0].value = WLS_VA2PA(wlsHdlr, dlMsgPayload);
#else
- LWR_MAC_FREE(dedMsgTxDataValue, dlMsgInfo->dlMsgPduLen);
+ pduDesc[pduIndex].tlvs[0].value = dlMsgPayload;
#endif
+ pduDesc[pduIndex].pdu_length = payloadSize;
+#ifdef INTEL_WLS_MEM
+ addWlsBlockToFree(dlMsgPayload, payloadSize, (lwrMacCb.phySlotIndCntr-1));
+#else
+ LWR_MAC_FREE(dlMsgPayload, payloadSize);
+#endif
return ROK;
}
-
#endif /* FAPI */
+
/*******************************************************************
*
* @brief Sends DL TTI Request to PHY
DU_LOG("\nDEBUG --> LWR_MAC: Sending DL TTI Request");
#endif
/* Intel L1 expects UL_TTI.request following DL_TTI.request */
- fillUlTtiReq(currTimingInfo, headerElem);
+ msgHeader->num_msg++;
+ fillUlTtiReq(currTimingInfo, dlTtiElem);
/* send Tx-DATA req message */
- sendTxDataReq(dlTtiReqTimingInfo, &currDlSlot->dlInfo, headerElem);
+ msgHeader->num_msg++;
+ sendTxDataReq(dlTtiReqTimingInfo, &currDlSlot->dlInfo, dlTtiElem->p_next);
LwrMacSendToL1(headerElem);
}
else
#endif
/* Intel L1 expects UL_TTI.request following DL_TTI.request */
- fillUlTtiReq(currTimingInfo, headerElem);
+ msgHeader->num_msg++;
+ fillUlTtiReq(currTimingInfo, dlTtiElem);
LwrMacSendToL1(headerElem);
}
memset(currDlSlot, 0, sizeof(MacDlSlot));
* RFAILED - failure
*
* ****************************************************************/
-uint16_t sendTxDataReq(SlotIndInfo currTimingInfo, DlSchedInfo *dlInfo, p_fapi_api_queue_elem_t headerElem)
+uint16_t sendTxDataReq(SlotIndInfo currTimingInfo, DlSchedInfo *dlInfo, p_fapi_api_queue_elem_t prevElem)
{
#ifdef INTEL_FAPI
uint8_t nPdu = 0;
uint16_t cellIdx;
uint16_t pduIndex = 0;
fapi_tx_data_req_t *txDataReq =NULLP;
- fapi_msg_header_t *msgHeader =NULLP;
p_fapi_api_queue_elem_t txDataElem = 0;
GET_CELL_IDX(currTimingInfo.cellId, cellIdx);
txDataReq->slot = currTimingInfo.slot;
if(dlInfo->brdcstAlloc.sib1Trans)
{
- fillSib1TxDataReq(txDataReq->pdu_desc,
- &macCb.macCell[cellIdx]->macCellCfg, pduIndex);
+ fillSib1TxDataReq(txDataReq->pdu_desc, pduIndex, &macCb.macCell[cellIdx]->macCellCfg, \
+ dlInfo->brdcstAlloc.sib1Alloc.sib1PdschCfg);
pduIndex++;
txDataReq->num_pdus++;
}
if(dlInfo->rarAlloc != NULLP)
{
- fillRarTxDataReq(txDataReq->pdu_desc, &dlInfo->rarAlloc->rarInfo, pduIndex);
+ fillRarTxDataReq(txDataReq->pdu_desc, pduIndex, &dlInfo->rarAlloc->rarInfo,\
+ dlInfo->rarAlloc->rarPdschCfg);
pduIndex++;
txDataReq->num_pdus++;
}
if(dlInfo->dlMsgAlloc != NULLP)
{
- fillDlMsgTxDataReq(txDataReq->pdu_desc, \
- &dlInfo->dlMsgAlloc->dlMsgInfo, pduIndex);
+ fillDlMsgTxDataReq(txDataReq->pdu_desc, pduIndex, &dlInfo->dlMsgAlloc->dlMsgInfo,\
+ dlInfo->dlMsgAlloc->dlMsgPdschCfg);
pduIndex++;
txDataReq->num_pdus++;
/* Fill message header */
DU_LOG("\nDEBUG --> LWR_MAC: Sending TX DATA Request");
- msgHeader = (fapi_msg_header_t *)(headerElem + 1);
- msgHeader->num_msg++;
- headerElem->p_next->p_next->p_next = txDataElem;
+ prevElem->p_next = txDataElem;
}
#endif
return ROK;
* RFAILED - failure
*
******************************************************************/
-uint16_t fillUlTtiReq(SlotIndInfo currTimingInfo, p_fapi_api_queue_elem_t headerElem)
+uint16_t fillUlTtiReq(SlotIndInfo currTimingInfo, p_fapi_api_queue_elem_t prevElem)
{
#ifdef INTEL_FAPI
uint16_t cellIdx =0;
MacUlSlot *currUlSlot = NULLP;
MacCellCfg macCellCfg;
fapi_ul_tti_req_t *ulTtiReq = NULLP;
- fapi_msg_header_t *msgHeader = NULLP;
p_fapi_api_queue_elem_t ulTtiElem;
if(lwrMacCb.phyState == PHY_STATE_RUNNING)
#ifdef ODU_SLOT_IND_DEBUG_LOG
DU_LOG("\nDEBUG --> LWR_MAC: Sending UL TTI Request");
#endif
-
- /* Fill message header */
- msgHeader = (fapi_msg_header_t *)(headerElem + 1);
- msgHeader->num_msg++;
- headerElem->p_next->p_next = ulTtiElem;
+ prevElem->p_next = ulTtiElem;
memset(currUlSlot, 0, sizeof(MacUlSlot));
return ROK;
{ 139, 120, 120, 12, 2 }, /* index 15 */
};
+#ifdef NR_TDD
+
+/* prach config index Table 6.3.3.2-3 spec 38.211
+ * PRACH format given as follows:
+ * 0 = 0
+ * 1 = 1
+ * 2 = 2
+ * 3 = 3
+ * 4 = A1
+ * 5 = A2
+ * 6 = A3
+ * 7 = B1
+ * 8 = B4
+ * 9 = C0
+ * 10 = C2
+ * 11 = A1/B1
+ * 12 = A2/B2
+ * 13 = A3/B3
+ * Subframe num is represented considering 0-9 bits and
+ * value 1 corresponds to the subframe that is valid
+ */
+
+uint16_t prachCfgIdxTable[MAX_PRACH_CONFIG_IDX][8] = {
+{ 0, 16, 1, 512, 0, 0, 0, 0 }, /* index 0 */
+{ 0, 8, 1, 512, 0, 0, 0, 0 }, /* index 1 */
+{ 0, 4, 1, 512, 0, 0, 0, 0 }, /* index 2 */
+{ 0, 2, 0, 512, 0, 0, 0, 0 }, /* index 3 */
+{ 0, 2, 1, 512, 0, 0, 0, 0 }, /* index 4 */
+{ 0, 2, 0, 16, 0, 0, 0, 0 }, /* index 5 */
+{ 0, 2, 1, 16, 0, 0, 0, 0 }, /* index 6 */
+{ 0, 1, 0, 512, 0, 0, 0, 0 }, /* index 7 */
+{ 0, 1, 0, 256, 0, 0, 0, 0 }, /* index 8 */
+{ 0, 1, 0, 128, 0, 0, 0, 0 }, /* index 9 */
+{ 0, 1, 0, 64, 0, 0, 0, 0 }, /* index 10 */
+{ 0, 1, 0, 32, 0, 0, 0, 0 }, /* index 11 */
+{ 0, 1, 0, 16, 0, 0, 0, 0 }, /* index 12 */
+{ 0, 1, 0, 8, 0, 0, 0, 0 }, /* index 13 */
+{ 0, 1, 0, 4, 0, 0, 0, 0 }, /* index 14 */
+{ 0, 1, 0, 66, 0, 0, 0, 0 }, /* index 15 */
+{ 0, 1, 0, 66, 7, 0, 0, 0 }, /* index 16 */
+{ 0, 1, 0, 528, 0, 0, 0, 0 }, /* index 17 */
+{ 0, 1, 0, 264, 0, 0, 0, 0 }, /* index 18 */
+{ 0, 1, 0, 132, 0, 0, 0, 0 }, /* index 19 */
+{ 0, 1, 0, 768, 0, 0, 0, 0 }, /* index 20 */
+{ 0, 1, 0, 784, 0, 0, 0, 0 }, /* index 21 */
+{ 0, 1, 0, 536, 0, 0, 0, 0 }, /* index 22 */
+{ 0, 1, 0, 896, 0, 0, 0, 0 }, /* index 23 */
+{ 0, 1, 0, 792, 0, 0, 0, 0 }, /* index 24 */
+{ 0, 1, 0, 960, 0, 0, 0, 0 }, /* index 25 */
+{ 0, 1, 0, 594, 0, 0, 0, 0 }, /* index 26 */
+{ 0, 1, 0, 682, 0, 0, 0, 0 }, /* index 27 */
+{ 1, 16, 1, 128, 0, 0, 0, 0 }, /* index 28 */
+{ 1, 8, 1, 128, 0, 0, 0, 0 }, /* index 29 */
+{ 1, 4, 1, 128, 0, 0, 0, 0 }, /* index 30 */
+{ 1, 2, 0, 128, 0, 0, 0, 0 }, /* index 31 */
+{ 1, 2, 1, 128, 0, 0, 0, 0 }, /* index 32 */
+{ 1, 1, 0, 128, 0, 0, 0, 0 }, /* index 33 */
+{ 2, 16, 1, 64, 0, 0, 0, 0 }, /* index 34 */
+{ 2, 8, 1, 64, 0, 0, 0, 0 }, /* index 35 */
+{ 2, 4, 1, 64, 0, 0, 0, 0 }, /* index 36 */
+{ 2, 2, 0, 64, 7, 0, 0, 0 }, /* index 37 */
+{ 2, 2, 1, 64, 7, 0, 0, 0 }, /* index 38 */
+{ 2, 1, 0, 64, 7, 0, 0, 0 }, /* index 39 */
+{ 3, 16, 1, 512, 0, 0, 0, 0 }, /* index 40 */
+{ 3, 8, 1, 512, 0, 0, 0, 0 }, /* index 41 */
+{ 3, 4, 1, 512, 0, 0, 0, 0 }, /* index 42 */
+{ 3, 2, 0, 512, 0, 0, 0, 0 }, /* index 43 */
+{ 3, 2, 1, 512, 0, 0, 0, 0 }, /* index 44 */
+{ 3, 2, 0, 16, 0, 0, 0, 0 }, /* index 45 */
+{ 3, 2, 1, 16, 0, 0, 0, 0 }, /* index 46 */
+{ 3, 1, 0, 512, 0, 0, 0, 0 }, /* index 47 */
+{ 3, 1, 0, 256, 0, 0, 0, 0 }, /* index 48 */
+{ 3, 1, 0, 128, 0, 0, 0, 0 }, /* index 49 */
+{ 3, 1, 0, 64, 0, 0, 0, 0 }, /* index 50 */
+{ 3, 1, 0, 32, 0, 0, 0, 0 }, /* index 51 */
+{ 3, 1, 0, 16, 0, 0, 0, 0 }, /* index 52 */
+{ 3, 1, 0, 8, 0, 0, 0, 0 }, /* index 53 */
+{ 3, 1, 0, 4, 0, 0, 0, 0 }, /* index 54 */
+{ 3, 1, 0, 66, 0, 0, 0, 0 }, /* index 55 */
+{ 3, 1, 0, 66, 7, 0, 0, 0 }, /* index 56 */
+{ 3, 1, 0, 528, 0, 0, 0, 0 }, /* index 57 */
+{ 3, 1, 0, 264, 0, 0, 0, 0 }, /* index 58 */
+{ 3, 1, 0, 132, 0, 0, 0, 0 }, /* index 59 */
+{ 3, 1, 0, 768, 0, 0, 0, 0 }, /* index 60 */
+{ 3, 1, 0, 784, 0, 0, 0, 0 }, /* index 61 */
+{ 3, 1, 0, 536, 0, 0, 0, 0 }, /* index 62 */
+{ 3, 1, 0, 896, 0, 0, 0, 0 }, /* index 63 */
+{ 3, 1, 0, 792, 0, 0, 0, 0 }, /* index 64 */
+{ 3, 1, 0, 594, 0, 0, 0, 0 }, /* index 65 */
+{ 3, 1, 0, 682, 0, 0, 0, 0 }, /* index 66 */
+{ 4, 16, 1, 512, 0, 2, 6, 2 }, /* index 67 */
+{ 4, 8, 1, 512, 0, 2, 6, 2 }, /* index 68 */
+{ 4, 4, 1, 512, 0, 1, 6, 2 }, /* index 69 */
+{ 4, 2, 1, 512, 0, 1, 6, 2 }, /* index 70 */
+{ 4, 2, 1, 528, 7, 1, 3, 2 }, /* index 71 */
+{ 4, 2, 1, 640, 7, 1, 3, 2 }, /* index 72 */
+{ 4, 2, 1, 640, 0, 1, 6, 2 }, /* index 73 */
+{ 4, 2, 1, 768, 0, 2, 6, 2 }, /* index 74 */
+{ 4, 2, 1, 528, 0, 2, 6, 2 }, /* index 75 */
+{ 4, 2, 1, 924, 0, 1, 6, 2 }, /* index 76 */
+{ 4, 1, 0, 512, 0, 2, 6, 2 }, /* index 77 */
+{ 4, 1, 0, 512, 7, 1, 3, 2 }, /* index 78 */
+{ 4, 1, 0, 512, 0, 1, 6, 2 }, /* index 79 */
+{ 4, 1, 0, 768, 0, 2, 6, 2 }, /* index 80 */
+{ 4, 1, 0, 528, 0, 1, 6, 2 }, /* index 81 */
+{ 4, 1, 0, 640, 7, 1, 3, 2 }, /* index 82 */
+{ 4, 1, 0, 792, 0, 1, 6, 2 }, /* index 83 */
+{ 4, 1, 0, 792, 0, 2, 6, 2 }, /* index 84 */
+{ 4, 1, 0, 682, 0, 1, 6, 2 }, /* index 85 */
+{ 4, 1, 0, 1023, 7, 1, 3, 2 }, /* index 86 */
+{ 5, 16, 1, 512, 0, 2, 3, 4 }, /* index 87 */
+{ 5, 8, 1, 512, 0, 2, 3, 4 }, /* index 88 */
+{ 5, 4, 1, 512, 0, 1, 3, 4 }, /* index 89 */
+{ 5, 2, 1, 640, 0, 1, 3, 4 }, /* index 90 */
+{ 5, 2, 1, 768, 0, 2, 3, 4 }, /* index 91 */
+{ 5, 2, 1, 640, 9, 1, 1, 4 }, /* index 92 */
+{ 5, 2, 1, 528, 9, 1, 1, 4 }, /* index 93 */
+{ 5, 2, 1, 528, 0, 2, 3, 4 }, /* index 94 */
+{ 5, 2, 1, 924, 0, 1, 3, 4 }, /* index 95 */
+{ 5, 1, 0, 4, 0, 1, 3, 4 }, /* index 96 */
+{ 5, 1, 0, 128, 0, 1, 3, 4 }, /* index 97 */
+{ 5, 2, 1, 512, 0, 1, 3, 4 }, /* index 98 */
+{ 5, 1, 0, 512, 0, 2, 3, 4 }, /* index 99 */
+{ 5, 1, 0, 512, 9, 1, 1, 4 }, /* index 100 */
+{ 5, 1, 0, 512, 0, 1, 3, 4 }, /* index 101 */
+{ 5, 1, 0, 132, 0, 1, 3, 4 }, /* index 102 */
+{ 5, 1, 0, 768, 0, 2, 3, 4 }, /* index 103 */
+{ 5, 1, 0, 528, 0, 1, 3, 4 }, /* index 104 */
+{ 5, 1, 0, 640, 9, 1, 1, 4 }, /* index 105 */
+{ 5, 1, 0, 792, 0, 1, 3, 4 }, /* index 106 */
+{ 5, 1, 0, 792, 0, 2, 3, 4 }, /* index 107 */
+{ 5, 1, 0, 682, 0, 1, 3, 4 }, /* index 108 */
+{ 5, 1, 0, 1023, 9, 1, 1, 4 }, /* index 109 */
+{ 6, 16, 1, 512, 0, 2, 2, 6 }, /* index 110 */
+{ 6, 8, 1, 512, 0, 2, 2, 6 }, /* index 111 */
+{ 6, 4, 1, 512, 0, 1, 2, 6 }, /* index 112 */
+{ 6, 2, 1, 528, 7, 1, 1, 6 }, /* index 113 */
+{ 6, 2, 1, 640, 7, 1, 1, 6 }, /* index 114 */
+{ 6, 2, 1, 640, 0, 1, 2, 6 }, /* index 115 */
+{ 6, 2, 1, 528, 0, 2, 2, 6 }, /* index 116 */
+{ 6, 2, 1, 768, 0, 2, 2, 6 }, /* index 117 */
+{ 6, 2, 1, 924, 0, 1, 2, 6 }, /* index 118 */
+{ 6, 1, 0, 4, 0, 1, 2, 6 }, /* index 119 */
+{ 6, 1, 0, 128, 0, 1, 2, 6 }, /* index 120 */
+{ 6, 2, 1, 512, 0, 1, 2, 6 }, /* index 121 */
+{ 6, 1, 0, 512, 0, 2, 2, 6 }, /* index 122 */
+{ 6, 1, 0, 512, 7, 1, 1, 6 }, /* index 123 */
+{ 6, 1, 0, 512, 0, 1, 2, 6 }, /* index 124 */
+{ 6, 1, 0, 132, 0, 1, 2, 6 }, /* index 125 */
+{ 6, 1, 0, 768, 0, 2, 2, 6 }, /* index 126 */
+{ 6, 1, 0, 528, 0, 1, 2, 6 }, /* index 127 */
+{ 6, 1, 0, 640, 7, 1, 1, 6 }, /* index 128 */
+{ 6, 1, 0, 792, 0, 1, 2, 6 }, /* index 129 */
+{ 6, 1, 0, 792, 0, 2, 2, 6 }, /* index 130 */
+{ 6, 1, 0, 682, 0, 1, 2, 6 }, /* index 131 */
+{ 6, 1, 0, 1023, 7, 1, 1, 6 }, /* index 132 */
+{ 7, 4, 1, 512, 2, 1, 6, 2 }, /* index 133 */
+{ 7, 2, 1, 512, 2, 1, 6, 2 }, /* index 134 */
+{ 7, 2, 1, 640, 2, 1, 6, 2 }, /* index 135 */
+{ 7, 2, 1, 528, 8, 1, 3, 2 }, /* index 136 */
+{ 7, 2, 1, 528, 2, 2, 6, 2 }, /* index 137 */
+{ 7, 1, 0, 512, 2, 2, 6, 2 }, /* index 138 */
+{ 7, 1, 0, 512, 8, 1, 3, 2 }, /* index 139 */
+{ 7, 1, 0, 512, 2, 1, 6, 2 }, /* index 140 */
+{ 7, 1, 0, 768, 2, 2, 6, 2 }, /* index 141 */
+{ 7, 1, 0, 528, 2, 1, 6, 2 }, /* index 142 */
+{ 7, 1, 0, 640, 8, 1, 3, 2 }, /* index 143 */
+{ 7, 1, 0, 682, 2, 1, 6, 2 }, /* index 144 */
+{ 8, 16, 1, 512, 0, 2, 1, 12 }, /* index 145 */
+{ 8, 8, 1, 512, 0, 2, 1, 12 }, /* index 146 */
+{ 8, 4, 1, 512, 2, 1, 1, 12 }, /* index 147 */
+{ 8, 2, 1, 512, 0, 1, 1, 12 }, /* index 148 */
+{ 8, 2, 1, 512, 2, 1, 1, 12 }, /* index 149 */
+{ 8, 2, 1, 640, 2, 1, 1, 12 }, /* index 150 */
+{ 8, 2, 1, 528, 2, 1, 1, 12 }, /* index 151 */
+{ 8, 2, 1, 528, 0, 2, 1, 12 }, /* index 152 */
+{ 8, 2, 1, 768, 0, 2, 1, 12 }, /* index 153 */
+{ 8, 2, 1, 924, 0, 1, 1, 12 }, /* index 154 */
+{ 8, 1, 0, 2, 0, 1, 1, 12 }, /* index 155 */
+{ 8, 1, 0, 4, 0, 1, 1, 12 }, /* index 156 */
+{ 8, 1, 0, 16, 0, 1, 1, 12 }, /* index 157 */
+{ 8, 1, 0, 128, 0, 1, 1, 12 }, /* index 158 */
+{ 8, 1, 0, 512, 0, 1, 1, 12 }, /* index 159 */
+{ 8, 1, 0, 512, 2, 1, 1, 12 }, /* index 160 */
+{ 8, 1, 0, 512, 0, 2, 1, 12 }, /* index 161 */
+{ 8, 1, 0, 528, 2, 1, 1, 12 }, /* index 162 */
+{ 8, 1, 0, 640, 2, 1, 1, 12 }, /* index 163 */
+{ 8, 1, 0, 768, 0, 2, 1, 12 }, /* index 164 */
+{ 8, 1, 0, 792, 2, 1, 1, 12 }, /* index 165 */
+{ 8, 1, 0, 682, 2, 1, 1, 12 }, /* index 166 */
+{ 8, 1, 0, 1023, 0, 2, 1, 12 }, /* index 167 */
+{ 8, 1, 0, 1023, 2, 1, 1, 12 }, /* index 168 */
+{ 9, 16, 1, 512, 2, 2, 6, 2 }, /* index 169 */
+{ 9, 8, 1, 512, 2, 2, 6, 2 }, /* index 170 */
+{ 9, 4, 1, 512, 2, 1, 6, 2 }, /* index 171 */
+{ 9, 2, 1, 512, 2, 1, 6, 2 }, /* index 172 */
+{ 9, 2, 1, 768, 2, 2, 6, 2 }, /* index 173 */
+{ 9, 2, 1, 640, 2, 1, 6, 2 }, /* index 174 */
+{ 9, 2, 1, 640, 8, 1, 3, 2 }, /* index 175 */
+{ 9, 2, 1, 528, 8, 1, 3, 2 }, /* index 176 */
+{ 9, 2, 1, 528, 2, 2, 6, 2 }, /* index 177 */
+{ 9, 2, 1, 924, 2, 1, 6, 2 }, /* index 178 */
+{ 9, 1, 0, 512, 2, 2, 6, 2 }, /* index 179 */
+{ 9, 1, 0, 512, 8, 1, 3, 2 }, /* index 180 */
+{ 9, 1, 0, 512, 2, 1, 6, 2 }, /* index 181 */
+{ 9, 1, 0, 768, 2, 2, 6, 2 }, /* index 182 */
+{ 9, 1, 0, 528, 2, 1, 6, 2 }, /* index 183 */
+{ 9, 1, 0, 640, 8, 1, 3, 2 }, /* index 184 */
+{ 9, 1, 0, 792, 2, 1, 6, 2 }, /* index 185 */
+{ 9, 1, 0, 792, 2, 2, 6, 2 }, /* index 186 */
+{ 9, 1, 0, 682, 2, 1, 6, 2 }, /* index 187 */
+{ 9, 1, 0, 1023, 8, 1, 3, 2 }, /* index 188 */
+{10, 16, 1, 512, 2, 2, 2, 6 }, /* index 189 */
+{10, 8, 1, 512, 2, 2, 2, 6 }, /* index 190 */
+{10, 4, 1, 512, 2, 1, 2, 6 }, /* index 191 */
+{10, 2, 1, 512, 2, 1, 2, 6 }, /* index 192 */
+{10, 2, 1, 768, 2, 2, 2, 6 }, /* index 193 */
+{10, 2, 1, 640, 2, 1, 2, 6 }, /* index 194 */
+{10, 2, 1, 640, 8, 1, 1, 6 }, /* index 195 */
+{10, 2, 1, 528, 8, 1, 1, 6 }, /* index 196 */
+{10, 2, 1, 528, 2, 2, 2, 6 }, /* index 197 */
+{10, 2, 1, 924, 2, 1, 2, 6 }, /* index 198 */
+{10, 8, 1, 512, 8, 2, 1, 6 }, /* index 199 */
+{10, 4, 1, 512, 8, 1, 1, 6 }, /* index 200 */
+{10, 1, 0, 512, 2, 2, 2, 6 }, /* index 201 */
+{10, 1, 0, 512, 8, 1, 1, 6 }, /* index 202 */
+{10, 1, 0, 512, 2, 1, 2, 6 }, /* index 203 */
+{10, 1, 0, 768, 2, 2, 2, 6 }, /* index 204 */
+{10, 1, 0, 528, 2, 1, 2, 6 }, /* index 205 */
+{10, 1, 0, 640, 8, 1, 1, 6 }, /* index 206 */
+{10, 1, 0, 792, 2, 1, 2, 6 }, /* index 207 */
+{10, 1, 0, 792, 2, 2, 2, 6 }, /* index 208 */
+{10, 1, 0, 682, 2, 1, 2, 6 }, /* index 209 */
+{10, 1, 0, 1023, 8, 1, 1, 6 }, /* index 210 */
+{11, 2, 1, 512, 2, 1, 6, 2 }, /* index 211 */
+{11, 2, 1, 528, 8, 1, 3, 2 }, /* index 212 */
+{11, 2, 1, 640, 8, 1, 3, 2 }, /* index 213 */
+{11, 2, 1, 640, 2, 1, 6, 2 }, /* index 214 */
+{11, 2, 1, 528, 2, 2, 6, 2 }, /* index 215 */
+{11, 2, 1, 768, 2, 2, 6, 2 }, /* index 216 */
+{11, 1, 0, 512, 2, 2, 6, 2 }, /* index 217 */
+{11, 1, 0, 512, 8, 1, 3, 2 }, /* index 218 */
+{11, 1, 0, 512, 2, 1, 6, 2 }, /* index 219 */
+{11, 1, 0, 768, 2, 2, 6, 2 }, /* index 220 */
+{11, 1, 0, 528, 2, 1, 6, 2 }, /* index 221 */
+{11, 1, 0, 640, 8, 1, 3, 2 }, /* index 222 */
+{11, 1, 0, 792, 2, 2, 6, 2 }, /* index 223 */
+{11, 1, 0, 682, 2, 1, 6, 2 }, /* index 224 */
+{11, 1, 0, 1023, 8, 1, 3, 2 }, /* index 225 */
+{12, 2, 1, 512, 0, 1, 3, 4 }, /* index 226 */
+{12, 2, 1, 528, 6, 1, 2, 4 }, /* index 227 */
+{12, 2, 1, 640, 6, 1, 2, 4 }, /* index 228 */
+{12, 2, 1, 528, 0, 2, 3, 4 }, /* index 229 */
+{12, 2, 1, 768, 0, 2, 3, 4 }, /* index 230 */
+{12, 1, 0, 512, 0, 2, 3, 4 }, /* index 231 */
+{12, 1, 0, 512, 6, 1, 2, 4 }, /* index 232 */
+{12, 1, 0, 512, 0, 1, 3, 4 }, /* index 233 */
+{12, 1, 0, 768, 0, 2, 3, 4 }, /* index 234 */
+{12, 1, 0, 528, 0, 1, 3, 4 }, /* index 235 */
+{12, 1, 0, 640, 6, 1, 2, 4 }, /* index 236 */
+{12, 1, 0, 792, 0, 1, 3, 4 }, /* index 237 */
+{12, 1, 0, 792, 0, 2, 3, 4 }, /* index 238 */
+{12, 1, 0, 682, 0, 1, 3, 4 }, /* index 239 */
+{12, 1, 0, 1023, 6, 1, 2, 4 }, /* index 240 */
+{13, 2, 1, 512, 0, 1, 2, 6 }, /* index 241 */
+{13, 2, 1, 528, 2, 1, 2, 6 }, /* index 242 */
+{13, 2, 1, 640, 0, 1, 2, 6 }, /* index 243 */
+{13, 2, 1, 640, 2, 1, 2, 6 }, /* index 244 */
+{13, 2, 1, 528, 0, 2, 2, 6 }, /* index 245 */
+{13, 2, 1, 768, 0, 2, 2, 6 }, /* index 246 */
+{13, 1, 0, 512, 0, 2, 2, 6 }, /* index 247 */
+{13, 1, 0, 512, 2, 1, 2, 6 }, /* index 248 */
+{13, 1, 0, 512, 0, 1, 2, 6 }, /* index 249 */
+{13, 1, 0, 768, 0, 2, 2, 6 }, /* index 250 */
+{13, 1, 0, 528, 0, 1, 2, 6 }, /* index 251 */
+{13, 1, 0, 640, 2, 1, 2, 6 }, /* index 252 */
+{13, 1, 0, 792, 0, 2, 2, 6 }, /* index 253 */
+{13, 1, 0, 682, 0, 1, 2, 6 }, /* index 254 */
+{13, 1, 0, 1023, 2, 1, 2, 6 } /* index 255 */
+};
+
+#else
/* prach config index Table 6.3.3.2-2 spec 38.211
* PRACH format given as follows:
* 0 = 0
{10, 1, 0, 1023, 0, 2, 2, 6 }, /* index 254 */
{10, 1, 0, 682, 0, 2, 2, 6 } /* index 255 */
};
+#endif
/* Defintion of delta value Table 6.1.2.1.1-5 spec 38.214 */
uint8_t puschDeltaTable[MAX_MU_PUSCH] = { 2, 3, 4, 6 };
uint8_t qm = mcsTable[mcs][1];
uint16_t rValue = mcsTable[mcs][2];
uint8_t numLayer = 1; /* v value */
+ uint8_t numDmrsRePerPrb = 12;
tbSize = tbSize * 8; //Calculate tbSize in bits
nre = ceil( (float)tbSize * 1024 / (qm * rValue * numLayer));
- nreDash = ceil( (12 * numSymbols) - NUM_DMRS_SYMBOLS - 0);
+ nreDash = ceil( (12 * numSymbols) - numDmrsRePerPrb - 0);
if (nreDash > 156)
nre = 156;
#ifdef NR_TDD
/**
- * @brief determines slot format
+ * @brief determines slot/symbol format
*
* @details
*