Commit ad7e2ac3 authored by aligungr's avatar aligungr

Performance improvements

parent 5bef5620
......@@ -214,7 +214,7 @@ void UeCmdHandler::handleCmdImpl(NmUeCliCommand &msg)
}
case app::UeCliCommand::RLS_STATE: {
Json json = Json::Obj({
{"sti", OctetString::FromOctet8(m_base->rlsTask->m_shCtx->sti).toHexString()},
{"sti", OctetString::FromOctet8(m_base->shCtx.sti).toHexString()},
{"gnb-search-space", ::ToJson(m_base->config->gnbSearchList)},
});
sendResult(msg.address, json.dumpYaml());
......
......@@ -9,8 +9,8 @@ static constexpr const int MAX_PDU_TTL = 3000;
namespace nr::ue
{
RlsCtlLayer::RlsCtlLayer(TaskBase *base, RlsSharedContext *shCtx)
: m_base{base}, m_shCtx{shCtx}, m_servingCell{}, m_pduMap{}, m_pendingAck{}
RlsCtlLayer::RlsCtlLayer(TaskBase *base)
: m_base{base}, m_servingCell{}, m_pduMap{}, m_pendingAck{}
{
m_logger = base->logBase->makeUniqueLogger(base->config->getLoggerPrefix() + "rls-ctl");
}
......@@ -95,7 +95,7 @@ void RlsCtlLayer::handleUplinkRrcDelivery(int cellId, uint32_t pduId, rrc::RrcCh
m_pduMap[pduId].sentTime = utils::CurrentTimeMillis();
}
rls::RlsPduTransmission msg{m_shCtx->sti};
rls::RlsPduTransmission msg{m_base->shCtx.sti};
msg.pduType = rls::EPduType::RRC;
msg.pdu = std::move(data);
msg.payload = static_cast<uint32_t>(channel);
......@@ -106,7 +106,7 @@ void RlsCtlLayer::handleUplinkRrcDelivery(int cellId, uint32_t pduId, rrc::RrcCh
void RlsCtlLayer::handleUplinkDataDelivery(int psi, OctetString &&data)
{
rls::RlsPduTransmission msg{m_shCtx->sti};
rls::RlsPduTransmission msg{m_base->shCtx.sti};
msg.pduType = rls::EPduType::DATA;
msg.pdu = std::move(data);
msg.payload = static_cast<uint32_t>(psi);
......@@ -149,7 +149,7 @@ void RlsCtlLayer::onAckSendTimerExpired()
if (!item.second.empty())
continue;
rls::RlsPduTransmissionAck msg{m_shCtx->sti};
rls::RlsPduTransmissionAck msg{m_base->shCtx.sti};
msg.pduIds = std::move(item.second);
m_base->rlsTask->udp().send(item.first, msg);
......
......@@ -16,13 +16,12 @@ class RlsCtlLayer
private:
TaskBase *m_base;
std::unique_ptr<Logger> m_logger;
RlsSharedContext *m_shCtx;
int m_servingCell;
std::unordered_map<uint32_t, rls::PduInfo> m_pduMap;
std::unordered_map<int, std::vector<uint32_t>> m_pendingAck;
public:
explicit RlsCtlLayer(TaskBase *base, RlsSharedContext *shCtx);
explicit RlsCtlLayer(TaskBase *base);
~RlsCtlLayer() = default;
private:
......
......@@ -25,11 +25,10 @@ UeRlsTask::UeRlsTask(TaskBase *base) : m_base{base}
{
m_logger = m_base->logBase->makeUniqueLogger(m_base->config->getLoggerPrefix() + "rls");
m_shCtx = new RlsSharedContext();
m_shCtx->sti = Random::Mixed(base->config->getNodeName()).nextL();
base->shCtx.sti = Random::Mixed(base->config->getNodeName()).nextL();
m_udpLayer = std::make_unique<RlsUdpLayer>(base, m_shCtx);
m_ctlLayer = std::make_unique<RlsCtlLayer>(base, m_shCtx);
m_udpLayer = std::make_unique<RlsUdpLayer>(base);
m_ctlLayer = std::make_unique<RlsCtlLayer>(base);
}
void UeRlsTask::onStart()
......@@ -80,7 +79,7 @@ void UeRlsTask::onLoop()
break;
}
case NmUeRrcToRls::RESET_STI: {
m_shCtx->sti = Random::Mixed(m_base->config->getNodeName()).nextL();
m_base->shCtx.sti = Random::Mixed(m_base->config->getNodeName()).nextL();
break;
}
}
......@@ -116,8 +115,6 @@ void UeRlsTask::onQuit()
{
m_udpLayer->onQuit();
m_ctlLayer->onQuit();
delete m_shCtx;
}
RlsCtlLayer &UeRlsTask::ctl()
......
......@@ -34,8 +34,6 @@ class UeRlsTask : public NtsTask
TaskBase *m_base;
std::unique_ptr<Logger> m_logger;
RlsSharedContext* m_shCtx;
std::unique_ptr<RlsUdpLayer> m_udpLayer;
std::unique_ptr<RlsCtlLayer> m_ctlLayer;
......
......@@ -15,9 +15,8 @@ static constexpr const int HEARTBEAT_THRESHOLD = 2000; // (LOOP_PERIOD + RECEIVE
namespace nr::ue
{
RlsUdpLayer::RlsUdpLayer(TaskBase *base, RlsSharedContext *shCtx)
: m_base{base}, m_server{}, m_shCtx{shCtx}, m_searchSpace{}, m_cells{}, m_cellIdToSti{}, m_lastLoop{},
m_cellIdCounter{}
RlsUdpLayer::RlsUdpLayer(TaskBase *base)
: m_base{base}, m_server{}, m_searchSpace{}, m_cells{}, m_cellIdToSti{}, m_lastLoop{}, m_cellIdCounter{}
{
m_logger = base->logBase->makeUniqueLogger(base->config->getLoggerPrefix() + "rls-udp");
......@@ -136,7 +135,7 @@ void RlsUdpLayer::heartbeatCycle(uint64_t time, const Vector3 &simPos)
for (auto &address : m_searchSpace)
{
rls::RlsHeartBeat msg{m_shCtx->sti};
rls::RlsHeartBeat msg{m_base->shCtx.sti};
msg.simPos = simPos;
sendRlsPdu(address, msg);
}
......
......@@ -28,7 +28,6 @@ class RlsUdpLayer
TaskBase *m_base;
std::unique_ptr<Logger> m_logger;
std::unique_ptr<udp::UdpServerTask> m_server;
RlsSharedContext *m_shCtx;
std::vector<InetAddress> m_searchSpace;
std::unordered_map<uint64_t, CellInfo> m_cells;
std::unordered_map<int, uint64_t> m_cellIdToSti;
......@@ -39,7 +38,7 @@ class RlsUdpLayer
friend class UeCmdHandler;
public:
explicit RlsUdpLayer(TaskBase *base, RlsSharedContext *shCtx);
explicit RlsUdpLayer(TaskBase *base);
~RlsUdpLayer() = default;
private:
......
......@@ -180,16 +180,13 @@ struct UeSharedContext
Locked<std::optional<GutiMobileIdentity>> providedGuti;
Locked<std::optional<GutiMobileIdentity>> providedTmsi;
std::atomic<uint64_t> sti{};
Plmn getCurrentPlmn();
Tai getCurrentTai();
bool hasActiveCell();
};
struct RlsSharedContext
{
std::atomic<uint64_t> sti{};
};
struct TaskBase
{
UserEquipment *ue{};
......
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