store last RRC Connection Reconfig with transaction identifier
This commit is contained in:
parent
f999e256f9
commit
369592544c
|
@ -289,7 +289,7 @@ public:
|
|||
srslte::timer_handler::unique_timer activity_timer;
|
||||
|
||||
// cached for ease of context transfer
|
||||
asn1::rrc::rrc_conn_recfg_r8_ies_s last_rrc_conn_recfg;
|
||||
asn1::rrc::rrc_conn_recfg_s last_rrc_conn_recfg;
|
||||
asn1::rrc::security_algorithm_cfg_s last_security_mode_cmd;
|
||||
|
||||
asn1::rrc::establishment_cause_e establishment_cause;
|
||||
|
|
|
@ -1062,7 +1062,7 @@ void rrc::ue::set_activity_timeout(const activity_timeout_type_t type)
|
|||
|
||||
uint32_t deadline = deadline_s * 1e3 + deadline_ms;
|
||||
activity_timer.set(deadline, [this](uint32_t tid) { activity_timer_expired(); });
|
||||
parent->rrc_log->debug("Setting timer for %s for rnti=%x to %dms\n", to_string(type).c_str(), rnti, deadline);
|
||||
parent->rrc_log->debug("Setting timer for %s for rnti=0x%x to %dms\n", to_string(type).c_str(), rnti, deadline);
|
||||
|
||||
set_activity();
|
||||
}
|
||||
|
@ -1819,7 +1819,7 @@ void rrc::ue::send_connection_reconf(srslte::unique_byte_buffer_t pdu)
|
|||
if (mobility_handler != nullptr) {
|
||||
mobility_handler->fill_conn_recfg_msg(conn_reconf);
|
||||
}
|
||||
last_rrc_conn_recfg = *conn_reconf;
|
||||
last_rrc_conn_recfg = dl_dcch_msg.msg.c1().rrc_conn_recfg();
|
||||
|
||||
// Reuse same PDU
|
||||
pdu->clear();
|
||||
|
|
|
@ -810,14 +810,19 @@ bool rrc::ue::rrc_mobility::start_ho_preparation(uint32_t target_eci,
|
|||
empty_meascfg.compute_diff_meas_cfg(target_var_meas, &hoprep_r8.as_cfg.source_meas_cfg);
|
||||
// - fill source RR Config
|
||||
hoprep_r8.as_cfg.source_rr_cfg.sps_cfg_present = false; // TODO: CHECK
|
||||
hoprep_r8.as_cfg.source_rr_cfg.mac_main_cfg_present = rrc_ue->last_rrc_conn_recfg.rr_cfg_ded.mac_main_cfg_present;
|
||||
hoprep_r8.as_cfg.source_rr_cfg.mac_main_cfg = rrc_ue->last_rrc_conn_recfg.rr_cfg_ded.mac_main_cfg;
|
||||
hoprep_r8.as_cfg.source_rr_cfg.phys_cfg_ded_present = rrc_ue->last_rrc_conn_recfg.rr_cfg_ded.phys_cfg_ded_present;
|
||||
hoprep_r8.as_cfg.source_rr_cfg.phys_cfg_ded = rrc_ue->last_rrc_conn_recfg.rr_cfg_ded.phys_cfg_ded;
|
||||
hoprep_r8.as_cfg.source_rr_cfg.mac_main_cfg_present =
|
||||
rrc_ue->last_rrc_conn_recfg.crit_exts.c1().rrc_conn_recfg_r8().rr_cfg_ded.mac_main_cfg_present;
|
||||
hoprep_r8.as_cfg.source_rr_cfg.mac_main_cfg =
|
||||
rrc_ue->last_rrc_conn_recfg.crit_exts.c1().rrc_conn_recfg_r8().rr_cfg_ded.mac_main_cfg;
|
||||
hoprep_r8.as_cfg.source_rr_cfg.phys_cfg_ded_present =
|
||||
rrc_ue->last_rrc_conn_recfg.crit_exts.c1().rrc_conn_recfg_r8().rr_cfg_ded.phys_cfg_ded_present;
|
||||
hoprep_r8.as_cfg.source_rr_cfg.phys_cfg_ded =
|
||||
rrc_ue->last_rrc_conn_recfg.crit_exts.c1().rrc_conn_recfg_r8().rr_cfg_ded.phys_cfg_ded;
|
||||
// Add SRB2 to the message
|
||||
hoprep_r8.as_cfg.source_rr_cfg.srb_to_add_mod_list_present =
|
||||
rrc_ue->last_rrc_conn_recfg.rr_cfg_ded.srb_to_add_mod_list_present;
|
||||
hoprep_r8.as_cfg.source_rr_cfg.srb_to_add_mod_list = rrc_ue->last_rrc_conn_recfg.rr_cfg_ded.srb_to_add_mod_list;
|
||||
rrc_ue->last_rrc_conn_recfg.crit_exts.c1().rrc_conn_recfg_r8().rr_cfg_ded.srb_to_add_mod_list_present;
|
||||
hoprep_r8.as_cfg.source_rr_cfg.srb_to_add_mod_list =
|
||||
rrc_ue->last_rrc_conn_recfg.crit_exts.c1().rrc_conn_recfg_r8().rr_cfg_ded.srb_to_add_mod_list;
|
||||
// hoprep_r8.as_cfg.source_rr_cfg.srb_to_add_mod_list_present = true;
|
||||
// asn1::rrc::srb_to_add_mod_list_l& srb_list = hoprep_r8.as_cfg.source_rr_cfg.srb_to_add_mod_list;
|
||||
// srb_list.resize(1);
|
||||
|
@ -835,8 +840,9 @@ bool rrc::ue::rrc_mobility::start_ho_preparation(uint32_t target_eci,
|
|||
// am.dl_am_rlc.t_status_prohibit.value = asn1::rrc::t_status_prohibit_e::ms0;
|
||||
// Get DRB1 configuration
|
||||
hoprep_r8.as_cfg.source_rr_cfg.drb_to_add_mod_list_present =
|
||||
rrc_ue->last_rrc_conn_recfg.rr_cfg_ded.drb_to_add_mod_list_present;
|
||||
hoprep_r8.as_cfg.source_rr_cfg.drb_to_add_mod_list = rrc_ue->last_rrc_conn_recfg.rr_cfg_ded.drb_to_add_mod_list;
|
||||
rrc_ue->last_rrc_conn_recfg.crit_exts.c1().rrc_conn_recfg_r8().rr_cfg_ded.drb_to_add_mod_list_present;
|
||||
hoprep_r8.as_cfg.source_rr_cfg.drb_to_add_mod_list =
|
||||
rrc_ue->last_rrc_conn_recfg.crit_exts.c1().rrc_conn_recfg_r8().rr_cfg_ded.drb_to_add_mod_list;
|
||||
// hoprep_r8.as_cfg.source_rr_cfg.drb_to_add_mod_list_present = true;
|
||||
// asn1::rrc::drb_to_add_mod_list_l& drb_list = hoprep_r8.as_cfg.source_rr_cfg.drb_to_add_mod_list;
|
||||
// drb_list.resize(1);
|
||||
|
|
|
@ -200,13 +200,10 @@ void rlc::write_sdu(uint16_t rnti, uint32_t lcid, srslte::unique_byte_buffer_t s
|
|||
|
||||
void rlc::discard_sdu(uint16_t rnti, uint32_t lcid, uint32_t discard_sn)
|
||||
{
|
||||
|
||||
uint32_t tx_queue;
|
||||
|
||||
pthread_rwlock_rdlock(&rwlock);
|
||||
if (users.count(rnti)) {
|
||||
users[rnti].rlc->discard_sdu(lcid, discard_sn);
|
||||
tx_queue = users[rnti].rlc->get_buffer_state(lcid);
|
||||
uint32_t tx_queue = users[rnti].rlc->get_buffer_state(lcid);
|
||||
|
||||
// In the eNodeB, there is no polling for buffer state from the scheduler, thus
|
||||
// communicate buffer state every time a new SDU is discarded
|
||||
|
|
Loading…
Reference in New Issue