|
|
@ -68,7 +68,7 @@ int ue_nr::process_pdu(srsran::unique_byte_buffer_t pdu)
|
|
|
|
if (logger.info.enabled()) {
|
|
|
|
if (logger.info.enabled()) {
|
|
|
|
fmt::memory_buffer str_buffer;
|
|
|
|
fmt::memory_buffer str_buffer;
|
|
|
|
mac_pdu_ul.to_string(str_buffer);
|
|
|
|
mac_pdu_ul.to_string(str_buffer);
|
|
|
|
logger.info("0x%x %s", rnti, srsran::to_c_str(str_buffer));
|
|
|
|
logger.info("Rx PDU: rnti=0x%x, %s", rnti, srsran::to_c_str(str_buffer));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
for (uint32_t i = 0; i < mac_pdu_ul.get_num_subpdus(); ++i) {
|
|
|
|
for (uint32_t i = 0; i < mac_pdu_ul.get_num_subpdus(); ++i) {
|
|
|
@ -86,7 +86,7 @@ int ue_nr::process_pdu(srsran::unique_byte_buffer_t pdu)
|
|
|
|
if (true /*sched->ue_exists(c_crnti)*/) {
|
|
|
|
if (true /*sched->ue_exists(c_crnti)*/) {
|
|
|
|
rrc->update_user(rnti, c_rnti);
|
|
|
|
rrc->update_user(rnti, c_rnti);
|
|
|
|
rnti = c_rnti;
|
|
|
|
rnti = c_rnti;
|
|
|
|
sched->ul_bsr(rnti, 0, 1); // provide UL grant regardless of other BSR content for UE to complete RA
|
|
|
|
sched->ul_sr_info(rnti); // provide UL grant regardless of other BSR content for UE to complete RA
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
logger.warning("Updating user C-RNTI: rnti=0x%x already released.", c_rnti);
|
|
|
|
logger.warning("Updating user C-RNTI: rnti=0x%x already released.", c_rnti);
|
|
|
|
// Disable scheduling for all bearers. The new rnti will be removed on msg3 timer expiry in the RRC
|
|
|
|
// Disable scheduling for all bearers. The new rnti will be removed on msg3 timer expiry in the RRC
|
|
|
@ -99,10 +99,6 @@ int ue_nr::process_pdu(srsran::unique_byte_buffer_t pdu)
|
|
|
|
case srsran::mac_sch_subpdu_nr::nr_lcid_sch_t::SHORT_TRUNC_BSR: {
|
|
|
|
case srsran::mac_sch_subpdu_nr::nr_lcid_sch_t::SHORT_TRUNC_BSR: {
|
|
|
|
srsran::mac_sch_subpdu_nr::lcg_bsr_t sbsr = subpdu.get_sbsr();
|
|
|
|
srsran::mac_sch_subpdu_nr::lcg_bsr_t sbsr = subpdu.get_sbsr();
|
|
|
|
uint32_t buffer_size_bytes = buff_size_field_to_bytes(sbsr.buffer_size, srsran::SHORT_BSR);
|
|
|
|
uint32_t buffer_size_bytes = buff_size_field_to_bytes(sbsr.buffer_size, srsran::SHORT_BSR);
|
|
|
|
// FIXME: a UE might send a zero BSR but still needs an UL grant to finish RA procedure
|
|
|
|
|
|
|
|
if (buffer_size_bytes == 0) {
|
|
|
|
|
|
|
|
buffer_size_bytes++;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
sched->ul_bsr(rnti, sbsr.lcg_id, buffer_size_bytes);
|
|
|
|
sched->ul_bsr(rnti, sbsr.lcg_id, buffer_size_bytes);
|
|
|
|
} break;
|
|
|
|
} break;
|
|
|
|
case srsran::mac_sch_subpdu_nr::nr_lcid_sch_t::LONG_BSR:
|
|
|
|
case srsran::mac_sch_subpdu_nr::nr_lcid_sch_t::LONG_BSR:
|
|
|
|