X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2F5gnrmac%2Fmac_mux.c;h=ddc2476ed9884c87c8cad175229a8e9fef5ee973;hb=0d34456980069864f19fe3090ed5a4c968fe2d45;hp=e5dda146460162dddb24387a836b1d58dec8e801;hpb=a2484c58e5beeb1ab9e1c86104cf9d9bc56750d1;p=o-du%2Fl2.git diff --git a/src/5gnrmac/mac_mux.c b/src/5gnrmac/mac_mux.c index e5dda1464..ddc2476ed 100644 --- a/src/5gnrmac/mac_mux.c +++ b/src/5gnrmac/mac_mux.c @@ -16,20 +16,9 @@ ################################################################################ *******************************************************************************/ -#include -#include /* header include files -- defines (.h) */ -#include "envopt.h" /* environment options */ -#include "envdep.h" /* environment dependent */ -#include "envind.h" /* environment independent */ -#include "gen.h" /* general layer */ -#include "ssi.h" /* system service interface */ -#include "cm_hash.h" /* common hash list */ -#include "cm_mblk.h" /* common memory link list library */ -#include "cm_llist.h" /* common linked list library */ -#include "cm_err.h" /* common error */ -#include "cm_lte.h" /* common LTE */ +#include "common_def.h" #include "lrg.h" /* Layer manager interface includes*/ #include "crg.h" /* CRG interface includes*/ #include "rgu.h" /* RGU interface includes*/ @@ -42,15 +31,6 @@ #include "du_log.h" /* header/extern include files (.x) */ -#include "gen.x" /* general layer typedefs */ -#include "ssi.x" /* system services typedefs */ -#include "cm5.x" /* common timers */ -#include "cm_hash.x" /* common hash list */ -#include "cm_lib.x" /* common library */ -#include "cm_llist.x" /* common linked list */ -#include "cm_mblk.x" /* memory management */ -#include "cm_tkns.x" /* common tokens */ -#include "cm_lte.x" /* common tokens */ #include "rgu.x" /* RGU types */ #include "tfu.x" /* RGU types */ #include "lrg.x" /* layer management typedefs for MAC */ @@ -238,20 +218,24 @@ void createMacRaCb(uint16_t cellId, uint16_t crnti) * @details * * Function : fillMsg4DlData - * This function is a stub which sends Dl Data + * This function sends Dl Data * to form MAC SDUs * * @param[in] MacDlData *dlData + * msg4Pdu pointer ************************************************/ -void fillMsg4DlData(MacDlData *dlData) +void fillMsg4DlData(MacDlData *dlData, uint8_t *msg4Pdu) { uint8_t idx = 0; + uint16_t idx2; dlData->numPdu = 1; dlData->pduInfo[idx].lcId = MAC_LCID_CCCH; - dlData->pduInfo[idx].pduLen = macCb.macCell->macRaCb[0].msg4PduLen; - memcpy(dlData->pduInfo[idx].dlPdu, macCb.macCell->macRaCb[0].msg4Pdu,\ - macCb.macCell->macRaCb[0].msg4PduLen); + dlData->pduInfo[idx].pduLen = macCb.macCell->macRaCb[idx].msg4PduLen; + for(idx2 = 0; idx2 < dlData->pduInfo[idx].pduLen; idx2++) + { + dlData->pduInfo[idx].dlPdu[idx2] = msg4Pdu[idx2]; + } } /************************************************* @@ -263,17 +247,18 @@ void fillMsg4DlData(MacDlData *dlData) * This function fills Mac ce identities * * @param[in] RlcMacData *dlData + * Msg3Pdu Data ************************************************/ -void fillMacCe(MacCeInfo *macCeInfo) +void fillMacCe(MacCeInfo *macCeInfo, uint8_t *msg3Pdu) { uint8_t idx; macCeInfo->numCes = 1; for(idx = 0; idx < macCeInfo->numCes; idx++) { macCeInfo->macCe[idx].macCeLcid = MAC_LCID_CRI; - memcpy(&macCeInfo->macCe[idx].macCeValue, \ - &macCb.macCell->macRaCb[idx].msg3Pdu, MAX_CRI_SIZE); + memcpy(macCeInfo->macCe[idx].macCeValue, \ + msg3Pdu, MAX_CRI_SIZE); } } @@ -283,17 +268,16 @@ void fillMacCe(MacCeInfo *macCeInfo) * * @details * - * Function : buildMacPdu + * Function : macMuxPdu * * Functionality: * The MAC PDU will be MUXed and formed * - * @params[in] MacDlData *, MacCeInfo *, tbSize + * @params[in] MacDlData *, MacCeInfo *, msg4TxPdu *, tbSize * @return void - * * ****************************************************************/ -void macMuxPdu(MacDlData *dlData, MacCeInfo *macCeData, uint16_t tbSize) +void macMuxPdu(MacDlData *dlData, MacCeInfo *macCeData, uint8_t *msg4TxPdu, uint16_t tbSize) { uint8_t bytePos = 0; uint8_t bitPos = 7; @@ -305,14 +289,13 @@ void macMuxPdu(MacDlData *dlData, MacCeInfo *macCeData, uint16_t tbSize) uint8_t RBit = 0; /* Reserved bit */ uint8_t FBit; /* Format Indicator */ uint8_t lcid; /* LCID */ - uint8_t lenField = 0; /* Length field */ + uint16_t lenField = 0; /* Length field */ /* subheader field size (in bits) */ uint8_t RBitSize = 1; uint8_t FBitSize = 1; uint8_t lcidSize = 6; - uint8_t lenFieldSize = 0; /* 8-bit or 16-bit L field */ - uint8_t criSize = 8; + uint8_t lenFieldSize = 0; /* 8-bit or 16-bit L field */ /* PACK ALL MAC CE */ for(idx = 0; idx < macCeData->numCes; idx++) @@ -323,11 +306,11 @@ void macMuxPdu(MacDlData *dlData, MacCeInfo *macCeData, uint16_t tbSize) case MAC_LCID_CRI: { /* Packing fields into MAC PDU R/R/LCID */ - packBytes(macPdu, &bytePos, &bitPos, RBit, RBitSize); - packBytes(macPdu, &bytePos, &bitPos, RBit, RBitSize); + packBytes(macPdu, &bytePos, &bitPos, RBit, (RBitSize * 2)); packBytes(macPdu, &bytePos, &bitPos, lcid, lcidSize); memcpy(&macPdu[bytePos], macCeData->macCe[idx].macCeValue,\ MAX_CRI_SIZE); + bytePos += MAX_CRI_SIZE; break; } default: @@ -340,11 +323,11 @@ void macMuxPdu(MacDlData *dlData, MacCeInfo *macCeData, uint16_t tbSize) for(idx = 0; idx < dlData->numPdu; idx++) { lcid = dlData->pduInfo[idx].lcId; - lenField = dlData->pduInfo[idx].pduLen; switch(lcid) { case MAC_LCID_CCCH: { + lenField = dlData->pduInfo[idx].pduLen; if(dlData->pduInfo[idx].pduLen > 255) { FBit = 1; @@ -361,7 +344,8 @@ void macMuxPdu(MacDlData *dlData, MacCeInfo *macCeData, uint16_t tbSize) packBytes(macPdu, &bytePos, &bitPos, FBit, FBitSize); packBytes(macPdu, &bytePos, &bitPos, lcid, lcidSize); packBytes(macPdu, &bytePos, &bitPos, lenField, lenFieldSize); - memcpy(&macPdu[bytePos], dlData->pduInfo[idx].dlPdu, lenField); + memcpy(&macPdu[bytePos], dlData->pduInfo[idx].dlPdu, lenField); + bytePos += lenField; break; } @@ -380,11 +364,10 @@ void macMuxPdu(MacDlData *dlData, MacCeInfo *macCeData, uint16_t tbSize) packBytes(macPdu, &bytePos, &bitPos, lcid, lcidSize); } - MAC_ALLOC(macCb.macCell->macRaCb[0].msg4TxPdu, macCb.macCell->macRaCb[0].msg4TbSize); - if(macCb.macCell->macRaCb[0].msg4TxPdu != NULLP) + /*Storing the muxed pdu in macRaCb */ + if(msg4TxPdu != NULLP) { - memcpy(macCb.macCell->macRaCb[0].msg4TxPdu, macPdu,\ - macCb.macCell->macRaCb[0].msg4TbSize); + memcpy(msg4TxPdu, macPdu, tbSize); } }