Proper separation of handling DCCH SRB1 and DTCH LCIDs at MAC gNB
-Remove redundant calls to mac_rlc_data_ind for DTCH case
This commit is contained in:
@@ -179,6 +179,29 @@ void nr_process_mac_pdu(
|
|||||||
// end of MAC PDU, can ignore the rest.
|
// end of MAC PDU, can ignore the rest.
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case UL_SCH_LCID_SRB1:
|
||||||
|
if(((NR_MAC_SUBHEADER_SHORT *)pdu_ptr)->F){
|
||||||
|
//mac_sdu_len |= (uint16_t)(((NR_MAC_SUBHEADER_LONG *)pdu_ptr)->L2)<<8;
|
||||||
|
mac_subheader_len = 3;
|
||||||
|
mac_sdu_len = ((uint16_t)(((NR_MAC_SUBHEADER_LONG *) pdu_ptr)->L1 & 0x7f) << 8)
|
||||||
|
| ((uint16_t)((NR_MAC_SUBHEADER_LONG *) pdu_ptr)->L2 & 0xff);
|
||||||
|
} else {
|
||||||
|
mac_sdu_len = (uint16_t)((NR_MAC_SUBHEADER_SHORT *)pdu_ptr)->L;
|
||||||
|
mac_subheader_len = 2;
|
||||||
|
}
|
||||||
|
LOG_I(MAC, "[UE %d] Frame %d : ULSCH -> UL-DCCH %d (gNB %d, %d bytes), rnti: %d \n", module_idP, frameP, rx_lcid, module_idP, mac_sdu_len, rnti);
|
||||||
|
mac_rlc_data_ind(module_idP,
|
||||||
|
rnti,
|
||||||
|
module_idP,
|
||||||
|
frameP,
|
||||||
|
ENB_FLAG_YES,
|
||||||
|
MBMS_FLAG_NO,
|
||||||
|
rx_lcid,
|
||||||
|
(char *) (pdu_ptr + mac_subheader_len),
|
||||||
|
mac_sdu_len,
|
||||||
|
1,
|
||||||
|
NULL);
|
||||||
|
break;
|
||||||
case UL_SCH_LCID_SRB2:
|
case UL_SCH_LCID_SRB2:
|
||||||
// todo
|
// todo
|
||||||
break;
|
break;
|
||||||
@@ -192,70 +215,38 @@ void nr_process_mac_pdu(
|
|||||||
// todo
|
// todo
|
||||||
mac_subheader_len = 2;
|
mac_subheader_len = 2;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// MAC SDUs
|
|
||||||
case UL_SCH_LCID_SRB1:
|
|
||||||
//break;
|
|
||||||
case UL_SCH_LCID_DTCH:
|
case UL_SCH_LCID_DTCH:
|
||||||
// check if LCID is valid at current time.
|
// check if LCID is valid at current time.
|
||||||
if(((NR_MAC_SUBHEADER_SHORT *)pdu_ptr)->F){
|
if(((NR_MAC_SUBHEADER_SHORT *)pdu_ptr)->F){
|
||||||
//mac_sdu_len |= (uint16_t)(((NR_MAC_SUBHEADER_LONG *)pdu_ptr)->L2)<<8;
|
//mac_sdu_len |= (uint16_t)(((NR_MAC_SUBHEADER_LONG *)pdu_ptr)->L2)<<8;
|
||||||
mac_subheader_len = 3;
|
mac_subheader_len = 3;
|
||||||
mac_sdu_len = ((uint16_t)(((NR_MAC_SUBHEADER_LONG *) pdu_ptr)->L1 & 0x7f) << 8)
|
mac_sdu_len = ((uint16_t)(((NR_MAC_SUBHEADER_LONG *) pdu_ptr)->L1 & 0x7f) << 8)
|
||||||
| ((uint16_t)((NR_MAC_SUBHEADER_LONG *) pdu_ptr)->L2 & 0xff);
|
| ((uint16_t)((NR_MAC_SUBHEADER_LONG *) pdu_ptr)->L2 & 0xff);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
mac_sdu_len = (uint16_t)((NR_MAC_SUBHEADER_SHORT *)pdu_ptr)->L;
|
mac_sdu_len = (uint16_t)((NR_MAC_SUBHEADER_SHORT *)pdu_ptr)->L;
|
||||||
mac_subheader_len = 2;
|
mac_subheader_len = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_I(MAC, "[UE %d] Frame %d : ULSCH -> UL-DTCH %d (gNB %d, %d bytes)\n", module_idP, frameP, rx_lcid, module_idP, mac_sdu_len);
|
LOG_I(MAC, "[UE %d] Frame %d : ULSCH -> UL-DTCH %d (gNB %d, %d bytes)\n", module_idP, frameP, rx_lcid, module_idP, mac_sdu_len);
|
||||||
int UE_id = find_nr_UE_id(module_idP, rnti);
|
int UE_id = find_nr_UE_id(module_idP, rnti);
|
||||||
RC.nrmac[module_idP]->UE_info.mac_stats[UE_id].lc_bytes_rx[rx_lcid] += mac_sdu_len;
|
RC.nrmac[module_idP]->UE_info.mac_stats[UE_id].lc_bytes_rx[rx_lcid] += mac_sdu_len;
|
||||||
#if defined(ENABLE_MAC_PAYLOAD_DEBUG)
|
#if defined(ENABLE_MAC_PAYLOAD_DEBUG)
|
||||||
log_dump(MAC, pdu_ptr + mac_subheader_len, 32, LOG_DUMP_CHAR, "\n");
|
log_dump(MAC, pdu_ptr + mac_subheader_len, 32, LOG_DUMP_CHAR, "\n");
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
if(IS_SOFTMODEM_NOS1){
|
mac_rlc_data_ind(module_idP,
|
||||||
mac_rlc_data_ind(module_idP,
|
rnti,
|
||||||
0x1234,
|
module_idP,
|
||||||
module_idP,
|
frameP,
|
||||||
frameP,
|
ENB_FLAG_YES,
|
||||||
ENB_FLAG_YES,
|
MBMS_FLAG_NO,
|
||||||
MBMS_FLAG_NO,
|
rx_lcid,
|
||||||
rx_lcid,
|
(char *) (pdu_ptr + mac_subheader_len),
|
||||||
(char *) (pdu_ptr + mac_subheader_len),
|
mac_sdu_len,
|
||||||
mac_sdu_len,
|
1,
|
||||||
1,
|
NULL);
|
||||||
NULL);
|
break;
|
||||||
}
|
|
||||||
else{
|
|
||||||
mac_rlc_data_ind(module_idP,
|
|
||||||
0x1234,
|
|
||||||
module_idP,
|
|
||||||
frameP,
|
|
||||||
ENB_FLAG_YES,
|
|
||||||
MBMS_FLAG_NO,
|
|
||||||
rx_lcid,
|
|
||||||
(char *) (pdu_ptr + mac_subheader_len),
|
|
||||||
mac_sdu_len,
|
|
||||||
1,
|
|
||||||
NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
mac_rlc_data_ind(module_idP,
|
|
||||||
rnti,
|
|
||||||
module_idP,
|
|
||||||
frameP,
|
|
||||||
ENB_FLAG_YES,
|
|
||||||
MBMS_FLAG_NO,
|
|
||||||
rx_lcid,
|
|
||||||
(char *) (pdu_ptr + mac_subheader_len),
|
|
||||||
mac_sdu_len,
|
|
||||||
1,
|
|
||||||
NULL);
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user