Commit ffbec812 authored by aligungr's avatar aligungr

Performance improvements

parent 3d7d955c
......@@ -96,25 +96,6 @@ void UeL23Task::onLoop()
{
m_nas->handleSapMessage(std::move(msg));
}
else if (msg->msgType == NtsMessageType::UE_RRC_TO_RLS)
{
auto &w = dynamic_cast<NmUeRrcToRls &>(*msg);
switch (w.present)
{
case NmUeRrcToRls::ASSIGN_CURRENT_CELL: {
m_rlsCtl->assignCurrentCell(w.cellId);
break;
}
case NmUeRrcToRls::RRC_PDU_DELIVERY: {
m_rlsCtl->handleUplinkRrcDelivery(w.cellId, w.pduId, w.channel, std::move(w.pdu));
break;
}
case NmUeRrcToRls::RESET_STI: {
m_base->shCtx.sti = Random::Mixed(m_base->config->getNodeName()).nextL();
break;
}
}
}
else if (msg->msgType == NtsMessageType::UDP_SERVER_RECEIVE)
{
auto &w = dynamic_cast<udp::NwUdpServerReceive &>(*msg);
......
......@@ -40,28 +40,6 @@ struct NmUeTunToApp : NtsMessage
}
};
struct NmUeRrcToRls : NtsMessage
{
enum PR
{
ASSIGN_CURRENT_CELL,
RRC_PDU_DELIVERY,
RESET_STI,
} present;
// ASSIGN_CURRENT_CELL
int cellId{};
// RRC_PDU_DELIVERY
rrc::RrcChannel channel{};
uint32_t pduId{};
OctetString pdu{};
explicit NmUeRrcToRls(PR present) : NtsMessage(NtsMessageType::UE_RRC_TO_RLS), present(present)
{
}
};
struct NmUeNasToApp : NtsMessage
{
enum PR
......
......@@ -93,11 +93,7 @@ void UeRrcLayer::sendRrcMessage(int cellId, ASN_RRC_UL_CCCH_Message *msg)
return;
}
auto m = std::make_unique<NmUeRrcToRls>(NmUeRrcToRls::RRC_PDU_DELIVERY);
m->cellId = cellId;
m->channel = rrc::RrcChannel::UL_CCCH;
m->pdu = std::move(pdu);
m_base->l23Task->push(std::move(m));
m_base->l23Task->rlsCtl().handleUplinkRrcDelivery(cellId, 0, rrc::RrcChannel::UL_CCCH, std::move(pdu));
}
void UeRrcLayer::sendRrcMessage(int cellId, ASN_RRC_UL_CCCH1_Message *msg)
......@@ -109,11 +105,7 @@ void UeRrcLayer::sendRrcMessage(int cellId, ASN_RRC_UL_CCCH1_Message *msg)
return;
}
auto m = std::make_unique<NmUeRrcToRls>(NmUeRrcToRls::RRC_PDU_DELIVERY);
m->cellId = cellId;
m->channel = rrc::RrcChannel::UL_CCCH1;
m->pdu = std::move(pdu);
m_base->l23Task->push(std::move(m));
m_base->l23Task->rlsCtl().handleUplinkRrcDelivery(cellId, 0, rrc::RrcChannel::UL_CCCH1, std::move(pdu));
}
void UeRrcLayer::sendRrcMessage(ASN_RRC_UL_DCCH_Message *msg)
......@@ -125,11 +117,9 @@ void UeRrcLayer::sendRrcMessage(ASN_RRC_UL_DCCH_Message *msg)
return;
}
auto m = std::make_unique<NmUeRrcToRls>(NmUeRrcToRls::RRC_PDU_DELIVERY);
m->cellId = m_base->shCtx.currentCell.get<int>([](auto &value) { return value.cellId; });
m->channel = rrc::RrcChannel::UL_DCCH;
m->pdu = std::move(pdu);
m_base->l23Task->push(std::move(m));
m_base->l23Task->rlsCtl().handleUplinkRrcDelivery(
m_base->shCtx.currentCell.get<int>([](auto &value) { return value.cellId; }), 0, rrc::RrcChannel::UL_DCCH,
std::move(pdu));
}
void UeRrcLayer::receiveRrcMessage(int cellId, ASN_RRC_BCCH_BCH_Message *msg)
......
......@@ -162,7 +162,8 @@ void UeRrcLayer::performLocalRelease(bool treatBarred)
(void)treatBarred;
switchState(ERrcState::RRC_IDLE);
m_base->l23Task->push(std::make_unique<NmUeRrcToRls>(NmUeRrcToRls::RESET_STI));
m_base->shCtx.sti = Random::Mixed(m_base->config->getNodeName()).nextL();
m_base->l23Task->nas().handleRrcConnectionRelease();
}
......
......@@ -99,10 +99,7 @@ void UeRrcLayer::performCellSelection()
if (selectedCell != lastCell.cellId)
{
auto w1 = std::make_unique<NmUeRrcToRls>(NmUeRrcToRls::ASSIGN_CURRENT_CELL);
w1->cellId = selectedCell;
m_base->l23Task->push(std::move(w1));
m_base->l23Task->rlsCtl().assignCurrentCell(selectedCell);
m_base->l23Task->nas().handleActiveCellChange(Tai{lastCell.plmn, lastCell.tac});
}
}
......
......@@ -46,7 +46,6 @@ enum class NtsMessageType
GNB_SCTP,
UE_TUN_TO_APP,
UE_RRC_TO_RLS,
UE_RLS_TO_NAS,
UE_NAS_TO_APP,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment