- macCb.macCell[cellIdx]->macRaCb[ueIdx].msg4TbSize);
- memset(&macCb.macCell[cellIdx]->macRaCb[ueIdx], 0, sizeof(MacRaCbInfo));
- }
-
- /* Send UL Data to RLC */
- ret = macProcUlData(cellId, rxDataIndPdu->rnti, slotInfo, lcId, length, pdu);
-
- break;
- }
- case MAC_LCID_RESERVED_MIN ... MAC_LCID_RESERVED_MAX :
- break;
-
- case MAC_LCID_CCCH_48BIT :
- break;
-
- case MAC_LCID_BIT_RATE_QUERY :
- break;
-
- case MAC_LCID_MULT_PHR_FOUR_OCT :
- break;
-
- case MAC_LCID_CFG_GRANT_CFM :
- break;
-
- case MAC_LCID_MULT_PHR_ONE_OCT:
- break;
-
- case MAC_LCID_SINGLE_PHR :
- break;
-
- case MAC_LCID_CRNTI :
- break;
-
- case MAC_LCID_SHORT_TRUNC_BSR :
- break;
-
- case MAC_LCID_LONG_TRUNC_BSR :
- break;
-
- case MAC_LCID_SHORT_BSR :
- {
- uint8_t lcgId = 0;
- uint8_t bufferSizeIdx = 0;
- uint8_t crnti = 0;
- uint32_t bufferSize = 0;
-
- pduLen--;
-
- idx++;
- crnti = rxDataIndPdu->rnti;
- /* 5 LSB bits in pdu represent buffer size */
- bufferSizeIdx = (~((~0) << 5)) & rxDataPdu[idx];
- /* first 3 MSB bits in pdu represent LCGID */
- lcgId = (rxDataPdu[idx]) >> 5;
- /* determine actual number of bytes requested */
- bufferSize = shortBsrBytesTable[bufferSizeIdx];
- ret = macProcShortBsr(macCb.macCell[cellIdx]->cellId, crnti, lcgId, bufferSize);
- pduLen--;
- idx++;
-
- break;
- }
-
- case MAC_LCID_LONG_BSR :
- break;
-
- case MAC_LCID_PADDING :
- break;
-
- default:
- {
- DU_LOG("\nMAC : Invalid LC Id %d", lcId);
- return RFAILED;
- }
+ macCb.macCell[cellIdx]->macRaCb[ueIdx].msg4TbSize - TX_PAYLOAD_HDR_LEN);
+ memset(&macCb.macCell[cellIdx]->macRaCb[ueIdx], 0, sizeof(MacRaCbInfo));
+ }
+
+ /* Send UL Data to RLC */
+ ret = macProcUlData(cellId, rxDataIndPdu->rnti, slotInfo, lcId, length, pdu);
+
+ break;
+ }
+ case MAC_LCID_RESERVED_MIN ... MAC_LCID_RESERVED_MAX :
+ break;
+
+ case MAC_LCID_CCCH_48BIT :
+ break;
+
+ case MAC_LCID_BIT_RATE_QUERY :
+ break;
+
+ case MAC_LCID_MULT_PHR_FOUR_OCT :
+ break;
+
+ case MAC_LCID_CFG_GRANT_CFM :
+ break;
+
+ case MAC_LCID_MULT_PHR_ONE_OCT:
+ break;
+
+ case MAC_LCID_SINGLE_PHR :
+ break;
+
+ case MAC_LCID_CRNTI :
+ break;
+
+ case MAC_LCID_SHORT_TRUNC_BSR :
+ break;
+
+ case MAC_LCID_LONG_TRUNC_BSR :
+ break;
+
+ case MAC_LCID_SHORT_BSR :
+ {
+ uint8_t lcgId = 0;
+ uint8_t bufferSizeIdx = 0;
+ uint8_t crnti = 0;
+ uint32_t bufferSize = 0;
+
+ pduLen--;
+
+ rxPduIdx++;
+ crnti = rxDataIndPdu->rnti;
+ /* 5 LSB bits in pdu represent buffer size */
+ bufferSizeIdx = (~((~0) << 5)) & rxDataPdu[rxPduIdx];
+ /* first 3 MSB bits in pdu represent LCGID */
+ lcgId = (rxDataPdu[rxPduIdx]) >> 5;
+ /* determine actual number of bytes requested */
+ bufferSize = shortBsrBytesTable[bufferSizeIdx];
+ ret = macProcShortBsr(macCb.macCell[cellIdx]->cellId, crnti, lcgId, bufferSize);
+ pduLen--;
+ rxPduIdx++;
+
+ break;
+ }
+
+ case MAC_LCID_LONG_BSR :
+ {
+ DataVolInfo dataVolInfo[MAX_NUM_LOGICAL_CHANNEL_GROUPS];
+ memset(dataVolInfo, 0,MAX_NUM_LOGICAL_CHANNEL_GROUPS * sizeof(DataVolInfo));
+ uint8_t lcgIdx = 0;
+ uint8_t crnti = 0;
+ uint8_t numLcg = 0;
+ uint8_t lcgIdxPos = 0;
+ pduLen--;
+
+ rxPduIdx++;/*To reach the Octet where lcgIdx will be present*/
+ crnti = rxDataIndPdu->rnti;
+
+ lcgIdxPos = rxPduIdx;
+
+ pduLen--;
+ rxPduIdx++;/*To reach the Octet where bsrIdx starts*/
+ for(lcgIdx = 0; lcgIdx < MAX_NUM_LOGICAL_CHANNEL_GROUPS; lcgIdx++)
+ {
+ if(rxDataPdu[lcgIdxPos] & (1 << lcgIdx))
+ {
+ if(rxDataPdu[rxPduIdx] > 0 && rxDataPdu[rxPduIdx] < MAX_LONG_BSR_TABLE_ENTRIES)
+ {
+ dataVolInfo[numLcg].dataVol = longBsrBytesTable[rxDataPdu[rxPduIdx]];
+ dataVolInfo[numLcg].lcgId = lcgIdx;
+ numLcg++;
+ }
+ else
+ {
+ DU_LOG("\nERROR --> MAC: Invalid BsrIdx:%d rcvd for lcgIdx:%d",lcgIdx,rxDataPdu[rxPduIdx]);
+ }
+ /*next byte in PDU*/
+ pduLen--;
+ rxPduIdx++;
+ }
+ }
+
+ ret = macProcLongBsr(macCb.macCell[cellIdx]->cellId, crnti, numLcg, dataVolInfo);
+
+ break;
+ }
+
+ case MAC_LCID_PADDING :
+ break;
+
+ default:
+ {
+ DU_LOG("\nERROR --> MAC : Invalid LC Id %d", lcId);
+ return RFAILED;
+ }