From aeed623734133e5ffd9da2915126b69d072986a4 Mon Sep 17 00:00:00 2001 From: Francisco Paisana Date: Mon, 23 Mar 2020 15:05:52 +0000 Subject: [PATCH] removed pdu processing from the ue rrc cmd queue. Instead, now the rrc processes the incoming pdus right away. This is essential to fix the security cmd issue in the ue --- srsue/hdr/stack/rrc/rrc.h | 2 +- srsue/src/stack/rrc/rrc.cc | 27 +++------------------------ 2 files changed, 4 insertions(+), 25 deletions(-) diff --git a/srsue/hdr/stack/rrc/rrc.h b/srsue/hdr/stack/rrc/rrc.h index e5075c320..5874c63e6 100644 --- a/srsue/hdr/stack/rrc/rrc.h +++ b/srsue/hdr/stack/rrc/rrc.h @@ -350,7 +350,7 @@ protected: private: typedef struct { - enum { PDU, PCCH, PDU_MCH, RLF, PDU_BCCH_DLSCH, HO_COMPLETE, STOP } command; + enum { PCCH, RLF, HO_COMPLETE, STOP } command; srslte::unique_byte_buffer_t pdu; uint16_t lcid; } cmd_msg_t; diff --git a/srsue/src/stack/rrc/rrc.cc b/srsue/src/stack/rrc/rrc.cc index f3f67ef67..af3e4bb9b 100644 --- a/srsue/src/stack/rrc/rrc.cc +++ b/srsue/src/stack/rrc/rrc.cc @@ -266,21 +266,12 @@ void rrc::run_tti() cmd_msg_t msg; if (cmd_q.try_pop(&msg)) { switch (msg.command) { - case cmd_msg_t::PDU: - process_pdu(msg.lcid, std::move(msg.pdu)); - break; case cmd_msg_t::PCCH: process_pcch(std::move(msg.pdu)); break; - case cmd_msg_t::PDU_MCH: - parse_pdu_mch(msg.lcid, std::move(msg.pdu)); - break; case cmd_msg_t::RLF: radio_link_failure(); break; - case cmd_msg_t::PDU_BCCH_DLSCH: - parse_pdu_bcch_dlsch(std::move(msg.pdu)); - break; case cmd_msg_t::HO_COMPLETE: process_ho_ra_completed(msg.lcid > 0); break; @@ -1478,10 +1469,7 @@ void rrc::write_pdu_bcch_bch(unique_byte_buffer_t pdu) void rrc::write_pdu_bcch_dlsch(unique_byte_buffer_t pdu) { - cmd_msg_t msg; - msg.command = cmd_msg_t::PDU_BCCH_DLSCH; - msg.pdu = std::move(pdu); - cmd_q.push(std::move(msg)); + parse_pdu_bcch_dlsch(std::move(pdu)); } void rrc::parse_pdu_bcch_dlsch(unique_byte_buffer_t pdu) @@ -1730,11 +1718,7 @@ void rrc::write_pdu_mch(uint32_t lcid, srslte::unique_byte_buffer_t pdu) if (0 != lcid or serving_cell->has_mcch) { return; } - cmd_msg_t msg; - msg.command = cmd_msg_t::PDU_MCH; - msg.pdu = std::move(pdu); - msg.lcid = lcid; - cmd_q.push(std::move(msg)); + parse_pdu_mch(lcid, std::move(pdu)); } void rrc::parse_pdu_mch(uint32_t lcid, srslte::unique_byte_buffer_t pdu) @@ -1825,12 +1809,7 @@ void rrc::write_sdu(srslte::unique_byte_buffer_t sdu) void rrc::write_pdu(uint32_t lcid, unique_byte_buffer_t pdu) { - // add PDU to command queue - cmd_msg_t msg; - msg.pdu = std::move(pdu); - msg.command = cmd_msg_t::PDU; - msg.lcid = (uint16_t)lcid; - cmd_q.push(std::move(msg)); + process_pdu(lcid, std::move(pdu)); } void rrc::process_pdu(uint32_t lcid, srslte::unique_byte_buffer_t pdu)