Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
U
UERANSIM
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Libraries
UERANSIM
Commits
43a22ffc
Commit
43a22ffc
authored
Jan 04, 2022
by
aligungr
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Performance improvements
parent
b642f476
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
4 additions
and
175 deletions
+4
-175
src/ue/app/cmd_handler.cpp
src/ue/app/cmd_handler.cpp
+0
-1
src/ue/app/task.hpp
src/ue/app/task.hpp
+1
-3
src/ue/nts.hpp
src/ue/nts.hpp
+0
-16
src/ue/tun/task.cpp
src/ue/tun/task.cpp
+0
-111
src/ue/tun/task.hpp
src/ue/tun/task.hpp
+0
-43
src/ue/types.hpp
src/ue/types.hpp
+2
-0
src/ue/ue.cpp
src/ue/ue.cpp
+1
-0
src/utils/nts.hpp
src/utils/nts.hpp
+0
-1
No files found.
src/ue/app/cmd_handler.cpp
View file @
43a22ffc
...
...
@@ -11,7 +11,6 @@
#include <ue/app/task.hpp>
#include <ue/l3/task.hpp>
#include <ue/rls/task.hpp>
#include <ue/tun/task.hpp>
#include <utils/common.hpp>
#include <utils/printer.hpp>
...
...
src/ue/app/task.hpp
View file @
43a22ffc
...
...
@@ -11,7 +11,7 @@
#include <memory>
#include <thread>
#include <ue/nts.hpp>
#include <ue/tun/
task
.hpp>
#include <ue/tun/
layer
.hpp>
#include <ue/types.hpp>
#include <unordered_map>
#include <utils/logger.hpp>
...
...
@@ -26,8 +26,6 @@ class UeAppTask : public NtsTask
private:
TaskBase
*
m_base
;
std
::
unique_ptr
<
Logger
>
m_logger
;
std
::
array
<
TunTask
*
,
16
>
m_tunTasks
{};
ECmState
m_cmState
{};
friend
class
UeCmdHandler
;
...
...
src/ue/nts.hpp
View file @
43a22ffc
...
...
@@ -24,22 +24,6 @@
namespace
nr
::
ue
{
struct
NmAppToTun
:
NtsMessage
{
enum
PR
{
DATA_PDU_DELIVERY
}
present
;
// DATA_PDU_DELIVERY
int
psi
{};
OctetString
data
{};
explicit
NmAppToTun
(
PR
present
)
:
NtsMessage
(
NtsMessageType
::
UE_APP_TO_TUN
),
present
(
present
)
{
}
};
struct
NmUeTunToApp
:
NtsMessage
{
enum
PR
...
...
src/ue/tun/task.cpp
deleted
100644 → 0
View file @
b642f476
//
// This file is a part of UERANSIM open source project.
// Copyright (c) 2021 ALİ GÜNGÖR.
//
// The software and all associated files are licensed under GPL-3.0
// and subject to the terms and conditions defined in LICENSE file.
//
#include "task.hpp"
#include <cstring>
#include <unistd.h>
#include <ue/l3/task.hpp>
#include <ue/nts.hpp>
#include <utils/libc_error.hpp>
#include <utils/scoped_thread.hpp>
// TODO: May be reduced to MTU 1500
#define RECEIVER_BUFFER_SIZE 8000
struct
ReceiverArgs
{
int
fd
{};
int
psi
{};
NtsTask
*
targetTask
{};
};
static
std
::
string
GetErrorMessage
(
const
std
::
string
&
cause
)
{
std
::
string
what
=
cause
;
int
errNo
=
errno
;
if
(
errNo
!=
0
)
what
+=
" ("
+
std
::
string
{
strerror
(
errNo
)}
+
")"
;
return
what
;
}
static
void
ReceiverThread
(
ReceiverArgs
*
args
)
{
int
fd
=
args
->
fd
;
int
psi
=
args
->
psi
;
NtsTask
*
targetTask
=
args
->
targetTask
;
delete
args
;
uint8_t
buffer
[
RECEIVER_BUFFER_SIZE
];
while
(
true
)
{
ssize_t
n
=
::
read
(
fd
,
buffer
,
RECEIVER_BUFFER_SIZE
);
if
(
n
<
0
)
throw
std
::
runtime_error
(
GetErrorMessage
(
"TUN device could not read"
));
if
(
n
>
0
)
{
auto
m
=
std
::
make_unique
<
nr
::
ue
::
NmUeTunToApp
>
(
nr
::
ue
::
NmUeTunToApp
::
DATA_PDU_DELIVERY
);
m
->
psi
=
psi
;
m
->
data
=
OctetString
::
FromArray
(
buffer
,
static_cast
<
size_t
>
(
n
));
targetTask
->
push
(
std
::
move
(
m
));
}
}
}
namespace
nr
::
ue
{
ue
::
TunTask
::
TunTask
(
TaskBase
*
base
,
int
psi
,
int
fd
)
:
m_base
{
base
},
m_psi
{
psi
},
m_fd
{
fd
},
m_receiver
{}
{
}
void
TunTask
::
onStart
()
{
auto
*
receiverArgs
=
new
ReceiverArgs
();
receiverArgs
->
fd
=
m_fd
;
receiverArgs
->
targetTask
=
m_base
->
l3Task
;
receiverArgs
->
psi
=
m_psi
;
m_receiver
=
new
ScopedThread
([](
void
*
args
)
{
ReceiverThread
(
reinterpret_cast
<
ReceiverArgs
*>
(
args
));
},
receiverArgs
);
}
void
TunTask
::
onQuit
()
{
delete
m_receiver
;
::
close
(
m_fd
);
}
void
TunTask
::
onLoop
()
{
auto
msg
=
take
();
if
(
!
msg
)
return
;
switch
(
msg
->
msgType
)
{
case
NtsMessageType
:
:
UE_APP_TO_TUN
:
{
auto
&
w
=
dynamic_cast
<
NmAppToTun
&>
(
*
msg
);
ssize_t
res
=
::
write
(
m_fd
,
w
.
data
.
data
(),
w
.
data
.
length
());
if
(
res
<
0
)
throw
std
::
runtime_error
(
GetErrorMessage
(
"TUN device could not write"
));
if
(
res
!=
w
.
data
.
length
())
throw
std
::
runtime_error
(
GetErrorMessage
(
"TUN device partially written"
));
break
;
}
default:
break
;
}
}
}
// namespace nr::ue
\ No newline at end of file
src/ue/tun/task.hpp
deleted
100644 → 0
View file @
b642f476
//
// This file is a part of UERANSIM open source project.
// Copyright (c) 2021 ALİ GÜNGÖR.
//
// The software and all associated files are licensed under GPL-3.0
// and subject to the terms and conditions defined in LICENSE file.
//
#pragma once
#include <memory>
#include <thread>
#include <ue/nts.hpp>
#include <ue/types.hpp>
#include <unordered_map>
#include <utils/logger.hpp>
#include <utils/nts.hpp>
#include <vector>
namespace
nr
::
ue
{
class
TunTask
:
public
NtsTask
{
private:
TaskBase
*
m_base
;
int
m_psi
;
int
m_fd
;
ScopedThread
*
m_receiver
;
friend
class
UeCmdHandler
;
public:
explicit
TunTask
(
TaskBase
*
taskBase
,
int
psi
,
int
fd
);
~
TunTask
()
override
=
default
;
protected:
void
onStart
()
override
;
void
onLoop
()
override
;
void
onQuit
()
override
;
};
}
// namespace nr::ue
src/ue/types.hpp
View file @
43a22ffc
...
...
@@ -35,6 +35,7 @@ class UeAppTask;
class
UeL3Task
;
class
UeRlsTask
;
class
UserEquipment
;
class
TunLayer
;
struct
UeCellDesc
{
...
...
@@ -201,6 +202,7 @@ struct TaskBase
UeAppTask
*
appTask
{};
UeL3Task
*
l3Task
{};
UeRlsTask
*
rlsTask
{};
TunLayer
*
tunLayer
{};
};
struct
RrcTimers
...
...
src/ue/ue.cpp
View file @
43a22ffc
...
...
@@ -29,6 +29,7 @@ UserEquipment::UserEquipment(UeConfig *config, app::IUeController *ueController,
base
->
l3Task
=
new
UeL3Task
(
base
);
base
->
appTask
=
new
UeAppTask
(
base
);
base
->
rlsTask
=
new
UeRlsTask
(
base
);
base
->
tunLayer
=
new
TunLayer
(
base
);
taskBase
=
base
;
}
...
...
src/utils/nts.hpp
View file @
43a22ffc
...
...
@@ -46,7 +46,6 @@ enum class NtsMessageType
GNB_NGAP_TO_GTP
,
GNB_SCTP
,
UE_APP_TO_TUN
,
UE_TUN_TO_APP
,
UE_RRC_TO_RLS
,
UE_RLS_TO_RRC
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment