Getting PDCP state on re-establishment.

master
Pedro Alvarez 4 years ago
parent 33567d81db
commit 217f16d137

@ -33,6 +33,7 @@ typedef enum {
RRC_STATE_WAIT_FOR_SECURITY_MODE_COMPLETE, RRC_STATE_WAIT_FOR_SECURITY_MODE_COMPLETE,
RRC_STATE_WAIT_FOR_UE_CAP_INFO, RRC_STATE_WAIT_FOR_UE_CAP_INFO,
RRC_STATE_WAIT_FOR_CON_RECONF_COMPLETE, RRC_STATE_WAIT_FOR_CON_RECONF_COMPLETE,
RRC_STATE_REESTABLISHMENT_COMPLETE,
RRC_STATE_REGISTERED, RRC_STATE_REGISTERED,
RRC_STATE_RELEASE_REQUEST, RRC_STATE_RELEASE_REQUEST,
RRC_STATE_N_ITEMS, RRC_STATE_N_ITEMS,

@ -367,6 +367,13 @@ void rrc::ue::handle_rrc_con_reest_req(rrc_conn_reest_request_s* msg)
// Get PDCP entity state (required when using RLC AM) // Get PDCP entity state (required when using RLC AM)
parent->pdcp->get_state(old_rnti, 3, &old_reest_pdcp_state); parent->pdcp->get_state(old_rnti, 3, &old_reest_pdcp_state);
parent->rrc_log->debug(
"Got PDCP state: TX COUNT %d, RX_HFN %d, NEXT_PDCP_RX_SN %d, LAST_SUBMITTED_PDCP_RX_SN %d\n",
old_reest_pdcp_state.tx_count,
old_reest_pdcp_state.rx_hfn,
old_reest_pdcp_state.next_pdcp_rx_sn,
old_reest_pdcp_state.last_submitted_pdcp_rx_sn);
old_reest_rnti = old_rnti; old_reest_rnti = old_rnti;
state = RRC_STATE_WAIT_FOR_CON_REEST_COMPLETE; state = RRC_STATE_WAIT_FOR_CON_REEST_COMPLETE;
set_activity_timeout(UE_RESPONSE_RX_TIMEOUT); set_activity_timeout(UE_RESPONSE_RX_TIMEOUT);
@ -445,7 +452,7 @@ void rrc::ue::handle_rrc_con_reest_complete(rrc_conn_reest_complete_s* msg, srsl
// remove old RNTI // remove old RNTI
parent->rem_user_thread(old_reest_rnti); parent->rem_user_thread(old_reest_rnti);
state = RRC_STATE_WAIT_FOR_CON_RECONF_COMPLETE; state = RRC_STATE_REESTABLISHMENT_COMPLETE;
send_connection_reconf(std::move(pdu)); send_connection_reconf(std::move(pdu));
} }
@ -549,6 +556,11 @@ void rrc::ue::send_connection_reconf(srslte::unique_byte_buffer_t pdu)
} }
last_rrc_conn_recfg = dl_dcch_msg.msg.c1().rrc_conn_recfg(); last_rrc_conn_recfg = dl_dcch_msg.msg.c1().rrc_conn_recfg();
// If reconf due to reestablishment, recover PDCP state
if (state == RRC_STATE_REESTABLISHMENT_COMPLETE) {
// parent->pdcp->set_state(rnti, 3, old_reest_pdcp_state);
}
// Reuse same PDU // Reuse same PDU
pdu->clear(); pdu->clear();

Loading…
Cancel
Save