Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
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
lizhongxiao
OpenXG-RAN
Commits
b5f30017
Commit
b5f30017
authored
3 years ago
by
Laurent Thomas
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
change instance id to 3GPP length
parent
7b2f3440
Changes
17
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
165 additions
and
206 deletions
+165
-206
common/utils/assertions.h
common/utils/assertions.h
+1
-2
common/utils/system.c
common/utils/system.c
+7
-43
executables/nr-softmodem.c
executables/nr-softmodem.c
+17
-32
executables/softmodem-common.c
executables/softmodem-common.c
+2
-0
openair2/F1AP/f1ap_common.c
openair2/F1AP/f1ap_common.c
+49
-49
openair2/F1AP/f1ap_common.h
openair2/F1AP/f1ap_common.h
+28
-28
openair2/F1AP/f1ap_cu_interface_management.c
openair2/F1AP/f1ap_cu_interface_management.c
+6
-6
openair2/F1AP/f1ap_cu_rrc_message_transfer.c
openair2/F1AP/f1ap_cu_rrc_message_transfer.c
+3
-3
openair2/F1AP/f1ap_cu_task.c
openair2/F1AP/f1ap_cu_task.c
+28
-15
openair2/F1AP/f1ap_cu_task.h
openair2/F1AP/f1ap_cu_task.h
+0
-5
openair2/F1AP/f1ap_cu_ue_context_management.c
openair2/F1AP/f1ap_cu_ue_context_management.c
+1
-1
openair2/F1AP/f1ap_du_interface_management.c
openair2/F1AP/f1ap_du_interface_management.c
+2
-2
openair2/F1AP/f1ap_du_rrc_message_transfer.c
openair2/F1AP/f1ap_du_rrc_message_transfer.c
+14
-14
openair2/F1AP/f1ap_du_rrc_message_transfer.h
openair2/F1AP/f1ap_du_rrc_message_transfer.h
+1
-1
openair2/F1AP/f1ap_du_ue_context_management.c
openair2/F1AP/f1ap_du_ue_context_management.c
+3
-4
openair2/F1AP/f1ap_du_ue_context_management.h
openair2/F1AP/f1ap_du_ue_context_management.h
+2
-0
openair2/RRC/NR/MESSAGES/asn1_msg.c
openair2/RRC/NR/MESSAGES/asn1_msg.c
+1
-1
No files found.
common/utils/assertions.h
View file @
b5f30017
...
...
@@ -26,11 +26,10 @@
#include <stdlib.h>
#include <inttypes.h>
#include <platform_types.h>
#include
<common/utils/backtrace.h>
#include
"backtrace.h"
#define _Assert_Exit_ \
fprintf(stderr, "\nExiting execution\n"); \
display_backtrace(); \
fflush(stdout); \
fflush(stderr); \
abort();
...
...
This diff is collapsed.
Click to expand it.
common/utils/system.c
View file @
b5f30017
...
...
@@ -96,39 +96,6 @@ static void read_pipe(int p, char *b, int size) {
}
}
static
int
baseRunTimeCommand
(
char
*
cmd
)
{
return
system
(
cmd
);
}
int
checkIfFedoraDistribution
(
void
)
{
char
cmd
[
200
];
memset
(
cmd
,
0
,
200
);
sprintf
(
cmd
,
"cat /etc/os-release | grep ID_LIKE | grep -ic fedora"
);
return
baseRunTimeCommand
(
cmd
);
}
int
checkIfGenericKernelOnFedora
(
void
)
{
char
cmd
[
200
];
memset
(
cmd
,
0
,
200
);
sprintf
(
cmd
,
"uname -a | grep -c rt"
);
return
(
1
-
baseRunTimeCommand
(
cmd
));
}
int
checkIfInsideContainer
(
void
)
{
char
cmd
[
200
];
int
res
=
0
;
memset
(
cmd
,
0
,
200
);
sprintf
(
cmd
,
"cat /proc/self/cgroup | egrep -c 'libpod|podman|kubepods'"
);
res
=
baseRunTimeCommand
(
cmd
);
if
(
res
>
0
)
return
1
;
else
return
0
;
}
/********************************************************************/
/* background process */
/********************************************************************/
...
...
@@ -242,16 +209,13 @@ void threadCreate(pthread_t* t, void * (*func)(void*), void * param, char* name,
AssertFatal
(
ret
==
0
,
"ret: %d, errno: %d
\n
"
,
ret
,
errno
);
ret
=
pthread_attr_setdetachstate
(
&
attr
,
PTHREAD_CREATE_DETACHED
);
AssertFatal
(
ret
==
0
,
"ret: %d, errno: %d
\n
"
,
ret
,
errno
);
ret
=
pthread_attr_setinheritsched
(
&
attr
,
PTHREAD_EXPLICIT_SCHED
);
AssertFatal
(
ret
==
0
,
"ret: %d, errno: %d
\n
"
,
ret
,
errno
);
if
(
checkIfFedoraDistribution
())
if
(
checkIfGenericKernelOnFedora
())
if
(
checkIfInsideContainer
())
settingPriority
=
0
;
/*
if (system("grep -iq 'ID_LIKE.*fedora' /etc/os-release && uname -a | grep -c rt")==0)
if (system("cat /proc/self/cgroup | egrep -c 'libpod|podman|kubepods'")==0)
settingPriority = 0;
if (settingPriority) {
ret=pthread_attr_setinheritsched(&attr, PTHREAD_EXPLICIT_SCHED);
AssertFatal(ret==0,"ret: %d, errno: %d\n",ret, errno);
ret=pthread_attr_setschedpolicy(&attr, SCHED_OAI);
AssertFatal(ret==0,"ret: %d, errno: %d\n",ret, errno);
if(priority<sched_get_priority_min(SCHED_OAI) || priority>sched_get_priority_max(SCHED_OAI)) {
...
...
@@ -270,7 +234,7 @@ void threadCreate(pthread_t* t, void * (*func)(void*), void * param, char* name,
ret=pthread_attr_setschedparam(&attr, &sparam);
AssertFatal(ret==0,"ret: %d, errno: %d\n",ret, errno);
}
*/
ret
=
pthread_create
(
t
,
&
attr
,
func
,
param
);
AssertFatal
(
ret
==
0
,
"ret: %d, errno: %d
\n
"
,
ret
,
errno
);
...
...
This diff is collapsed.
Click to expand it.
executables/nr-softmodem.c
View file @
b5f30017
...
...
@@ -328,48 +328,32 @@ int create_gNB_tasks(uint32_t gnb_nb) {
}
}
paramdef_t
NETParams
[]
=
GNBNETPARAMS_DESC
;
char
aprefix
[
MAX_OPTNAME_SIZE
*
2
+
8
];
sprintf
(
aprefix
,
"%s.[%i].%s"
,
GNB_CONFIG_STRING_GNB_LIST
,
0
,
GNB_CONFIG_STRING_NETWORK_INTERFACES_CONFIG
);
config_get
(
NETParams
,
sizeof
(
NETParams
)
/
sizeof
(
paramdef_t
),
aprefix
);
for
(
int
i
=
GNB_INTERFACE_NAME_FOR_NG_AMF_IDX
;
i
<=
GNB_IPV4_ADDRESS_FOR_NG_AMF_IDX
;
i
++
)
{
if
(
NETParams
[
i
].
strptr
==
NULL
)
{
LOG_E
(
NGAP
,
"No configuration in the file.
\n
"
);
NGAP_CONF_MODE
=
0
;
}
else
{
LOG_D
(
NGAP
,
"Configuration in the file: %s.
\n
"
,
*
NETParams
[
i
].
strptr
);
if
(
AMF_MODE_ENABLED
)
{
paramdef_t
NETParams
[]
=
GNBNETPARAMS_DESC
;
char
aprefix
[
MAX_OPTNAME_SIZE
*
2
+
8
];
sprintf
(
aprefix
,
"%s.[%i].%s"
,
GNB_CONFIG_STRING_GNB_LIST
,
0
,
GNB_CONFIG_STRING_NETWORK_INTERFACES_CONFIG
);
config_get
(
NETParams
,
sizeof
(
NETParams
)
/
sizeof
(
paramdef_t
),
aprefix
);
for
(
int
i
=
GNB_INTERFACE_NAME_FOR_NG_AMF_IDX
;
i
<=
GNB_IPV4_ADDRESS_FOR_NG_AMF_IDX
;
i
++
)
{
if
(
NETParams
[
i
].
strptr
==
NULL
)
{
LOG_E
(
NGAP
,
"No configuration in the file.
\n
"
);
NGAP_CONF_MODE
=
0
;
}
else
{
LOG_D
(
NGAP
,
"Configuration in the file: %s.
\n
"
,
*
NETParams
[
i
].
strptr
);
}
}
}
if
(
AMF_MODE_ENABLED
)
{
if
(
gnb_nb
>
0
)
{
/*
if (itti_create_task (TASK_SCTP, sctp_eNB_task, NULL) < 0) {
LOG_E(SCTP, "Create task for SCTP failed\n");
return -1;
}
*/
if
(
NGAP_CONF_MODE
)
{
if
(
itti_create_task
(
TASK_NGAP
,
ngap_gNB_task
,
NULL
)
<
0
)
{
LOG_E
(
NGAP
,
"Create task for NGAP failed
\n
"
);
return
-
1
;
}
}
else
{
LOG_
E
(
NGAP
,
"Ngap task not created
\n
"
);
LOG_
I
(
NGAP
,
"Ngap task not created
\n
"
);
}
if
(
!
emulate_rf
)
{
if
(
itti_create_task
(
TASK_UDP
,
udp_eNB_task
,
NULL
)
<
0
)
{
LOG_E
(
UDP_
,
"Create task for UDP failed
\n
"
);
return
-
1
;
}
}
/*if (itti_create_task (TASK_GTPV1_U, &nr_gtpv1u_gNB_task, NULL) < 0) {
LOG_E(GTPU, "Create task for GTPV1U failed\n");
return -1;
}*/
}
}
...
...
@@ -710,7 +694,8 @@ int main( int argc, char **argv ) {
RCconfig_NR_L1
();
// don't create if node doesn't connect to RRC/S1/GTP
AssertFatal
(
create_gNB_tasks
(
1
)
==
0
,
"cannot create ITTI tasks
\n
"
);
int
ret
=
create_gNB_tasks
(
1
);
AssertFatal
(
ret
==
0
,
"cannot create ITTI tasks
\n
"
);
/* Start the agent. If it is turned off in the configuration, it won't start */
/*
RCconfig_nr_flexran();
...
...
This diff is collapsed.
Click to expand it.
executables/softmodem-common.c
View file @
b5f30017
...
...
@@ -185,10 +185,12 @@ void signal_handler(int sig) {
if
(
sig
==
SIGSEGV
)
{
// get void*'s for all entries on the stack
/*
size = backtrace(array, 10);
// print out all the frames to stderr
fprintf(stderr, "Error: signal %d:\n", sig);
backtrace_symbols_fd(array, size, 2);
*/
exit
(
-
1
);
}
else
{
if
(
sig
==
SIGINT
||
sig
==
SOFTMODEM_RTSIGNAL
)
...
...
This diff is collapsed.
Click to expand it.
openair2/F1AP/f1ap_common.c
View file @
b5f30017
...
...
@@ -56,7 +56,7 @@ inline void ASN_DEBUG(const char *fmt, ...) {
}
#endif
uint8_t
F1AP_get_next_transaction_identifier
(
module_id_t
enb_mod_idP
,
module_id
_t
cu_mod_idP
)
{
uint8_t
F1AP_get_next_transaction_identifier
(
instance_t
enb_mod_idP
,
instance
_t
cu_mod_idP
)
{
static
uint8_t
transaction_identifier
[
NUMBER_OF_eNB_MAX
];
transaction_identifier
[
enb_mod_idP
+
cu_mod_idP
]
=
(
transaction_identifier
[
enb_mod_idP
+
cu_mod_idP
]
+
1
)
%
F1AP_TRANSACTION_IDENTIFIER_NUMBER
;
...
...
@@ -64,36 +64,36 @@ uint8_t F1AP_get_next_transaction_identifier(module_id_t enb_mod_idP, module_id_
return
transaction_identifier
[
enb_mod_idP
+
cu_mod_idP
];
}
f1ap_cudu_inst_t
*
getCxt
(
bool
isCU
,
module_id_t
module_id
P
)
{
f1ap_cudu_inst_t
*
getCxt
(
bool
isCU
,
instance_t
instance
P
)
{
static
pid_t
t
=-
1
;
pid_t
tNew
=
gettid
();
AssertFatal
(
t
==-
1
||
t
==
tNew
,
"This is not thread safe
\n
"
);
t
=
tNew
;
AssertFatal
(
module_id
P
<
sizeofArray
(
f1_cu_inst
),
""
);
return
isCU
?
f1_cu_inst
[
module_idP
]
:
f1_du_inst
[
module_id
P
];
AssertFatal
(
instance
P
<
sizeofArray
(
f1_cu_inst
),
""
);
return
isCU
?
f1_cu_inst
[
instanceP
]
:
f1_du_inst
[
instance
P
];
}
void
createF1inst
(
bool
isCU
,
module_id_t
module_id
P
,
f1ap_setup_req_t
*
req
)
{
void
createF1inst
(
bool
isCU
,
instance_t
instance
P
,
f1ap_setup_req_t
*
req
)
{
if
(
isCU
)
{
AssertFatal
(
f1_cu_inst
[
module_id
P
]
==
NULL
,
"Double call to F1 CU init
\n
"
);
f1_cu_inst
[
module_id
P
]
=
(
f1ap_cudu_inst_t
*
)
calloc
(
1
,
sizeof
(
f1ap_cudu_inst_t
));
//memcpy(f1_cu_inst[
module_id
P]->setupReq, req, sizeof(f1ap_setup_req_t) );
AssertFatal
(
f1_cu_inst
[
instance
P
]
==
NULL
,
"Double call to F1 CU init
\n
"
);
f1_cu_inst
[
instance
P
]
=
(
f1ap_cudu_inst_t
*
)
calloc
(
1
,
sizeof
(
f1ap_cudu_inst_t
));
//memcpy(f1_cu_inst[
instance
P]->setupReq, req, sizeof(f1ap_setup_req_t) );
}
else
{
AssertFatal
(
f1_du_inst
[
module_id
P
]
==
NULL
,
"Double call to F1 DU init
\n
"
);
f1_du_inst
[
module_id
P
]
=
(
f1ap_cudu_inst_t
*
)
calloc
(
1
,
sizeof
(
f1ap_cudu_inst_t
));
memcpy
(
&
f1_du_inst
[
module_id
P
]
->
setupReq
,
req
,
sizeof
(
f1ap_setup_req_t
)
);
AssertFatal
(
f1_du_inst
[
instance
P
]
==
NULL
,
"Double call to F1 DU init
\n
"
);
f1_du_inst
[
instance
P
]
=
(
f1ap_cudu_inst_t
*
)
calloc
(
1
,
sizeof
(
f1ap_cudu_inst_t
));
memcpy
(
&
f1_du_inst
[
instance
P
]
->
setupReq
,
req
,
sizeof
(
f1ap_setup_req_t
)
);
}
}
int
f1ap_add_ue
(
bool
isCu
,
module_id_t
module_id
P
,
instance_t
instance
P
,
rnti_t
rntiP
)
{
f1ap_cudu_inst_t
*
f1_inst
=
getCxt
(
isCu
,
module_id
P
);
f1ap_cudu_inst_t
*
f1_inst
=
getCxt
(
isCu
,
instance
P
);
for
(
int
i
=
0
;
i
<
MAX_MOBILES_PER_ENB
;
i
++
)
{
if
(
f1_inst
->
f1ap_ue
[
i
].
rnti
==
rntiP
)
{
f1_inst
->
f1ap_ue
[
i
].
f1ap_uid
=
i
;
LOG_I
(
F1AP
,
"Updating the index of UE with RNTI %x and du_ue_f1ap_id %d
\n
"
,
f1_inst
->
f1ap_ue
[
i
].
rnti
,
f1_inst
->
f1ap_ue
[
i
].
du_ue_f1ap_id
);
LOG_I
(
F1AP
,
"Updating the index of UE with RNTI %x and du_ue_f1ap_id %
l
d
\n
"
,
f1_inst
->
f1ap_ue
[
i
].
rnti
,
f1_inst
->
f1ap_ue
[
i
].
du_ue_f1ap_id
);
return
i
;
}
}
...
...
@@ -105,7 +105,7 @@ int f1ap_add_ue(bool isCu,
f1_inst
->
f1ap_ue
[
i
].
du_ue_f1ap_id
=
rntiP
;
f1_inst
->
f1ap_ue
[
i
].
cu_ue_f1ap_id
=
rntiP
;
f1_inst
->
num_ues
++
;
LOG_I
(
F1AP
,
"Adding a new UE with RNTI %x and cu/du ue_f1ap_id %d
\n
"
,
f1_inst
->
f1ap_ue
[
i
].
rnti
,
f1_inst
->
f1ap_ue
[
i
].
du_ue_f1ap_id
);
LOG_I
(
F1AP
,
"Adding a new UE with RNTI %x and cu/du ue_f1ap_id %
l
d
\n
"
,
f1_inst
->
f1ap_ue
[
i
].
rnti
,
f1_inst
->
f1ap_ue
[
i
].
du_ue_f1ap_id
);
return
i
;
}
}
...
...
@@ -114,9 +114,9 @@ int f1ap_add_ue(bool isCu,
}
int
f1ap_remove_ue
(
bool
isCu
,
module_id_t
module_id
P
,
int
f1ap_remove_ue
(
bool
isCu
,
instance_t
instance
P
,
rnti_t
rntiP
)
{
f1ap_cudu_inst_t
*
f1_inst
=
getCxt
(
isCu
,
module_id
P
);
f1ap_cudu_inst_t
*
f1_inst
=
getCxt
(
isCu
,
instance
P
);
for
(
int
i
=
0
;
i
<
MAX_MOBILES_PER_ENB
;
i
++
)
{
if
(
f1_inst
->
f1ap_ue
[
i
].
rnti
==
rntiP
)
{
...
...
@@ -129,9 +129,9 @@ int f1ap_remove_ue(bool isCu, module_id_t module_idP,
return
0
;
}
int
f1ap_get_du_ue_f1ap_id
(
bool
isCu
,
module_id_t
module_id
P
,
int
f1ap_get_du_ue_f1ap_id
(
bool
isCu
,
instance_t
instance
P
,
rnti_t
rntiP
)
{
f1ap_cudu_inst_t
*
f1_inst
=
getCxt
(
isCu
,
module_id
P
);
f1ap_cudu_inst_t
*
f1_inst
=
getCxt
(
isCu
,
instance
P
);
for
(
int
i
=
0
;
i
<
MAX_MOBILES_PER_ENB
;
i
++
)
{
if
(
f1_inst
->
f1ap_ue
[
i
].
rnti
==
rntiP
)
{
...
...
@@ -142,9 +142,9 @@ int f1ap_get_du_ue_f1ap_id(bool isCu, module_id_t module_idP,
return
-
1
;
}
int
f1ap_get_cu_ue_f1ap_id
(
bool
isCu
,
module_id_t
module_id
P
,
int
f1ap_get_cu_ue_f1ap_id
(
bool
isCu
,
instance_t
instance
P
,
rnti_t
rntiP
)
{
f1ap_cudu_inst_t
*
f1_inst
=
getCxt
(
isCu
,
module_id
P
);
f1ap_cudu_inst_t
*
f1_inst
=
getCxt
(
isCu
,
instance
P
);
for
(
int
i
=
0
;
i
<
MAX_MOBILES_PER_ENB
;
i
++
)
{
if
(
f1_inst
->
f1ap_ue
[
i
].
rnti
==
rntiP
)
{
...
...
@@ -155,9 +155,9 @@ int f1ap_get_cu_ue_f1ap_id(bool isCu, module_id_t module_idP,
return
-
1
;
}
int
f1ap_get_rnti_by_du_id
(
bool
isCu
,
module_id_t
module_id
P
,
module_id
_t
du_ue_f1ap_id
)
{
f1ap_cudu_inst_t
*
f1_inst
=
getCxt
(
isCu
,
module_id
P
);
int
f1ap_get_rnti_by_du_id
(
bool
isCu
,
instance_t
instance
P
,
instance
_t
du_ue_f1ap_id
)
{
f1ap_cudu_inst_t
*
f1_inst
=
getCxt
(
isCu
,
instance
P
);
for
(
int
i
=
0
;
i
<
MAX_MOBILES_PER_ENB
;
i
++
)
{
if
(
f1_inst
->
f1ap_ue
[
i
].
du_ue_f1ap_id
==
du_ue_f1ap_id
)
{
...
...
@@ -168,9 +168,9 @@ int f1ap_get_rnti_by_du_id(bool isCu, module_id_t module_idP,
return
-
1
;
}
int
f1ap_get_rnti_by_cu_id
(
bool
isCu
,
module_id_t
module_id
P
,
module_id
_t
cu_ue_f1ap_id
)
{
f1ap_cudu_inst_t
*
f1_inst
=
getCxt
(
isCu
,
module_id
P
);
int
f1ap_get_rnti_by_cu_id
(
bool
isCu
,
instance_t
instance
P
,
instance
_t
cu_ue_f1ap_id
)
{
f1ap_cudu_inst_t
*
f1_inst
=
getCxt
(
isCu
,
instance
P
);
for
(
int
i
=
0
;
i
<
MAX_MOBILES_PER_ENB
;
i
++
)
{
if
(
f1_inst
->
f1ap_ue
[
i
].
cu_ue_f1ap_id
==
cu_ue_f1ap_id
)
{
...
...
@@ -181,9 +181,9 @@ int f1ap_get_rnti_by_cu_id(bool isCu, module_id_t module_idP,
return
-
1
;
}
int
f1ap_get_du_uid
(
bool
isCu
,
module_id_t
module_id
P
,
module_id
_t
du_ue_f1ap_id
)
{
f1ap_cudu_inst_t
*
f1_inst
=
getCxt
(
isCu
,
module_id
P
);
int
f1ap_get_du_uid
(
bool
isCu
,
instance_t
instance
P
,
instance
_t
du_ue_f1ap_id
)
{
f1ap_cudu_inst_t
*
f1_inst
=
getCxt
(
isCu
,
instance
P
);
for
(
int
i
=
0
;
i
<
MAX_MOBILES_PER_ENB
;
i
++
)
{
if
(
f1_inst
->
f1ap_ue
[
i
].
du_ue_f1ap_id
==
du_ue_f1ap_id
)
{
...
...
@@ -194,9 +194,9 @@ int f1ap_get_du_uid(bool isCu, module_id_t module_idP,
return
-
1
;
}
int
f1ap_get_cu_uid
(
bool
isCu
,
module_id_t
module_id
P
,
module_id
_t
cu_ue_f1ap_id
)
{
f1ap_cudu_inst_t
*
f1_inst
=
getCxt
(
isCu
,
module_id
P
);
int
f1ap_get_cu_uid
(
bool
isCu
,
instance_t
instance
P
,
instance
_t
cu_ue_f1ap_id
)
{
f1ap_cudu_inst_t
*
f1_inst
=
getCxt
(
isCu
,
instance
P
);
for
(
int
i
=
0
;
i
<
MAX_MOBILES_PER_ENB
;
i
++
)
{
if
(
f1_inst
->
f1ap_ue
[
i
].
cu_ue_f1ap_id
==
cu_ue_f1ap_id
)
{
...
...
@@ -207,9 +207,9 @@ int f1ap_get_cu_uid(bool isCu, module_id_t module_idP,
return
-
1
;
}
int
f1ap_get_uid_by_rnti
(
bool
isCu
,
module_id_t
module_id
P
,
int
f1ap_get_uid_by_rnti
(
bool
isCu
,
instance_t
instance
P
,
rnti_t
rntiP
)
{
f1ap_cudu_inst_t
*
f1_inst
=
getCxt
(
isCu
,
module_id
P
);
f1ap_cudu_inst_t
*
f1_inst
=
getCxt
(
isCu
,
instance
P
);
for
(
int
i
=
0
;
i
<
MAX_MOBILES_PER_ENB
;
i
++
)
{
if
(
f1_inst
->
f1ap_ue
[
i
].
rnti
==
rntiP
)
{
...
...
@@ -220,35 +220,35 @@ int f1ap_get_uid_by_rnti(bool isCu, module_id_t module_idP,
return
-
1
;
}
int
f1ap_du_add_cu_ue_id
(
bool
isCu
,
module_id_t
module_id
P
,
module_id
_t
du_ue_f1ap_id
,
module_id
_t
cu_ue_f1ap_id
)
{
f1ap_cudu_inst_t
*
f1_inst
=
getCxt
(
isCu
,
module_id
P
);
module_id_t
f1ap_uid
=
f1ap_get_du_uid
(
isCu
,
module_id
P
,
du_ue_f1ap_id
);
int
f1ap_du_add_cu_ue_id
(
bool
isCu
,
instance_t
instance
P
,
instance
_t
du_ue_f1ap_id
,
instance
_t
cu_ue_f1ap_id
)
{
f1ap_cudu_inst_t
*
f1_inst
=
getCxt
(
isCu
,
instance
P
);
instance_t
f1ap_uid
=
f1ap_get_du_uid
(
isCu
,
instance
P
,
du_ue_f1ap_id
);
if
(
f1ap_uid
<
0
||
f1ap_uid
>=
MAX_MOBILES_PER_ENB
)
return
-
1
;
f1_inst
->
f1ap_ue
[
f1ap_uid
].
cu_ue_f1ap_id
=
cu_ue_f1ap_id
;
LOG_I
(
F1AP
,
"Adding cu_ue_f1ap_id %d for UE with RNTI %x
\n
"
,
cu_ue_f1ap_id
,
f1_inst
->
f1ap_ue
[
f1ap_uid
].
rnti
);
LOG_I
(
F1AP
,
"Adding cu_ue_f1ap_id %
l
d for UE with RNTI %x
\n
"
,
cu_ue_f1ap_id
,
f1_inst
->
f1ap_ue
[
f1ap_uid
].
rnti
);
return
0
;
}
int
f1ap_cu_add_du_ue_id
(
bool
isCu
,
module_id_t
module_id
P
,
module_id
_t
cu_ue_f1ap_id
,
module_id
_t
du_ue_f1ap_id
)
{
f1ap_cudu_inst_t
*
f1_inst
=
getCxt
(
isCu
,
module_id
P
);
module_id_t
f1ap_uid
=
f1ap_get_cu_uid
(
isCu
,
module_id
P
,
cu_ue_f1ap_id
);
int
f1ap_cu_add_du_ue_id
(
bool
isCu
,
instance_t
instance
P
,
instance
_t
cu_ue_f1ap_id
,
instance
_t
du_ue_f1ap_id
)
{
f1ap_cudu_inst_t
*
f1_inst
=
getCxt
(
isCu
,
instance
P
);
instance_t
f1ap_uid
=
f1ap_get_cu_uid
(
isCu
,
instance
P
,
cu_ue_f1ap_id
);
if
(
f1ap_uid
<
0
||
f1ap_uid
>=
MAX_MOBILES_PER_ENB
)
return
-
1
;
f1_inst
->
f1ap_ue
[
f1ap_uid
].
du_ue_f1ap_id
=
du_ue_f1ap_id
;
LOG_I
(
F1AP
,
"Adding du_ue_f1ap_id %d for UE with RNTI %x
\n
"
,
du_ue_f1ap_id
,
f1_inst
->
f1ap_ue
[
f1ap_uid
].
rnti
);
LOG_I
(
F1AP
,
"Adding du_ue_f1ap_id %
l
d for UE with RNTI %x
\n
"
,
du_ue_f1ap_id
,
f1_inst
->
f1ap_ue
[
f1ap_uid
].
rnti
);
return
0
;
}
int
f1ap_assoc_id
(
bool
isCu
,
module_id_t
module_id
P
)
{
f1ap_setup_req_t
*
f1_inst
=
f1ap_req
(
isCu
,
module_id
P
);
int
f1ap_assoc_id
(
bool
isCu
,
instance_t
instance
P
)
{
f1ap_setup_req_t
*
f1_inst
=
f1ap_req
(
isCu
,
instance
P
);
return
f1_inst
->
assoc_id
;
}
This diff is collapsed.
Click to expand it.
openair2/F1AP/f1ap_common.h
View file @
b5f30017
...
...
@@ -421,9 +421,9 @@ int f1ap_handle_message(instance_t instance, uint32_t assoc_id, int32_t stream,
typedef
struct
f1ap_cudu_ue_inst_s
{
// used for eNB stats generation
rnti_t
rnti
;
module_id
_t
f1ap_uid
;
module_id
_t
du_ue_f1ap_id
;
module_id
_t
cu_ue_f1ap_id
;
instance
_t
f1ap_uid
;
instance
_t
du_ue_f1ap_id
;
instance
_t
cu_ue_f1ap_id
;
}
f1ap_cudu_ue_t
;
typedef
struct
f1ap_cudu_inst_s
{
...
...
@@ -438,54 +438,54 @@ typedef struct f1ap_cudu_inst_s {
uint8_t
F1AP_get_next_transaction_identifier
(
module_id_t
enb_mod_idP
,
module_id
_t
cu_mod_idP
);
uint8_t
F1AP_get_next_transaction_identifier
(
instance_t
enb_mod_idP
,
instance
_t
cu_mod_idP
);
f1ap_cudu_inst_t
*
getCxt
(
bool
isCU
,
module_id_t
module_id
P
);
f1ap_cudu_inst_t
*
getCxt
(
bool
isCU
,
instance_t
instance
P
);
void
createF1inst
(
bool
isCU
,
module_id_t
module_id
P
,
f1ap_setup_req_t
*
req
);
void
createF1inst
(
bool
isCU
,
instance_t
instance
P
,
f1ap_setup_req_t
*
req
);
int
f1ap_add_ue
(
bool
isCu
,
module_id_t
module_id
P
,
instance_t
instance
P
,
rnti_t
rntiP
);
int
f1ap_remove_ue
(
bool
isCu
,
module_id_t
module_id
P
,
int
f1ap_remove_ue
(
bool
isCu
,
instance_t
instance
P
,
rnti_t
rntiP
);
int
f1ap_get_du_ue_f1ap_id
(
bool
isCu
,
module_id_t
module_id
P
,
int
f1ap_get_du_ue_f1ap_id
(
bool
isCu
,
instance_t
instance
P
,
rnti_t
rntiP
);
int
f1ap_get_cu_ue_f1ap_id
(
bool
isCu
,
module_id_t
module_id
P
,
int
f1ap_get_cu_ue_f1ap_id
(
bool
isCu
,
instance_t
instance
P
,
rnti_t
rntiP
);
int
f1ap_get_rnti_by_du_id
(
bool
isCu
,
module_id_t
module_id
P
,
module_id
_t
du_ue_f1ap_id
);
int
f1ap_get_rnti_by_du_id
(
bool
isCu
,
instance_t
instance
P
,
instance
_t
du_ue_f1ap_id
);
int
f1ap_get_rnti_by_cu_id
(
bool
isCu
,
module_id_t
module_id
P
,
module_id
_t
cu_ue_f1ap_id
);
int
f1ap_get_rnti_by_cu_id
(
bool
isCu
,
instance_t
instance
P
,
instance
_t
cu_ue_f1ap_id
);
int
f1ap_get_du_uid
(
bool
isCu
,
module_id_t
module_id
P
,
module_id
_t
du_ue_f1ap_id
);
int
f1ap_get_du_uid
(
bool
isCu
,
instance_t
instance
P
,
instance
_t
du_ue_f1ap_id
);
int
f1ap_get_cu_uid
(
bool
isCu
,
module_id_t
module_id
P
,
module_id
_t
cu_ue_f1ap_id
);
int
f1ap_get_cu_uid
(
bool
isCu
,
instance_t
instance
P
,
instance
_t
cu_ue_f1ap_id
);
int
f1ap_get_uid_by_rnti
(
bool
isCu
,
module_id_t
module_id
P
,
int
f1ap_get_uid_by_rnti
(
bool
isCu
,
instance_t
instance
P
,
rnti_t
rntiP
);
int
f1ap_du_add_cu_ue_id
(
bool
isCu
,
module_id_t
module_id
P
,
module_id
_t
du_ue_f1ap_id
,
module_id
_t
cu_ue_f1ap_id
);
int
f1ap_du_add_cu_ue_id
(
bool
isCu
,
instance_t
instance
P
,
instance
_t
du_ue_f1ap_id
,
instance
_t
cu_ue_f1ap_id
);
int
f1ap_cu_add_du_ue_id
(
bool
isCu
,
module_id_t
module_id
P
,
module_id
_t
cu_ue_f1ap_id
,
module_id
_t
du_ue_f1ap_id
);
int
f1ap_cu_add_du_ue_id
(
bool
isCu
,
instance_t
instance
P
,
instance
_t
cu_ue_f1ap_id
,
instance
_t
du_ue_f1ap_id
);
int
f1ap_assoc_id
(
bool
isCu
,
module_id_t
module_id
P
);
int
f1ap_assoc_id
(
bool
isCu
,
instance_t
instance
P
);
static
inline
f1ap_setup_req_t
*
f1ap_req
(
bool
isCu
,
module_id_t
module_id
P
)
{
return
&
getCxt
(
isCu
,
module_id
P
)
->
setupReq
;
static
inline
f1ap_setup_req_t
*
f1ap_req
(
bool
isCu
,
instance_t
instance
P
)
{
return
&
getCxt
(
isCu
,
instance
P
)
->
setupReq
;
}
#define asn1cCalloc(VaR, TyPe, lOcPtr) TyPe *lOcPtr=VaR=(TyPe*) calloc(1,sizeof(TyPe));
...
...
This diff is collapsed.
Click to expand it.
openair2/F1AP/f1ap_cu_interface_management.c
View file @
b5f30017
...
...
@@ -228,11 +228,11 @@ int CU_handle_F1_SETUP_REQUEST(instance_t instance,
int
CU_send_F1_SETUP_RESPONSE
(
instance_t
instance
,
f1ap_setup_resp_t
*
f1ap_setup_resp
)
{
module_id
_t
enb_mod_idP
;
module_id
_t
cu_mod_idP
;
instance
_t
enb_mod_idP
;
instance
_t
cu_mod_idP
;
// This should be fixed
enb_mod_idP
=
(
module_id
_t
)
0
;
cu_mod_idP
=
(
module_id
_t
)
0
;
enb_mod_idP
=
(
instance
_t
)
0
;
cu_mod_idP
=
(
instance
_t
)
0
;
F1AP_F1AP_PDU_t
pdu
=
{
0
};
uint8_t
*
buffer
=
NULL
;
uint32_t
len
=
0
;
...
...
@@ -335,8 +335,8 @@ int CU_send_F1_SETUP_RESPONSE(instance_t instance,
int
CU_send_F1_SETUP_FAILURE
(
instance_t
instance
)
{
LOG_D
(
F1AP
,
"CU_send_F1_SETUP_FAILURE
\n
"
);
module_id
_t
enb_mod_idP
=
0
;
module_id
_t
cu_mod_idP
=
0
;
instance
_t
enb_mod_idP
=
0
;
instance
_t
cu_mod_idP
=
0
;
// This should be fixed
F1AP_F1AP_PDU_t
pdu
=
{
0
};
uint8_t
*
buffer
=
NULL
;
...
...
This diff is collapsed.
Click to expand it.
openair2/F1AP/f1ap_cu_rrc_message_transfer.c
View file @
b5f30017
...
...
@@ -68,7 +68,7 @@ int CU_handle_INITIAL_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
/* GNB_DU_UE_F1AP_ID */
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_InitialULRRCMessageTransferIEs_t
,
ie
,
container
,
F1AP_ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID
,
true
);
module_id
_t
du_ue_f1ap_id
=
ie
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
;
instance
_t
du_ue_f1ap_id
=
ie
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
;
/* NRCGI
* Fixme: process NRCGI
*/
...
...
@@ -308,13 +308,13 @@ int CU_handle_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
RRC_DCCH_DATA_IND (message_p).dcch_index = srb_id;
RRC_DCCH_DATA_IND (message_p).rnti = f1ap_get_rnti_by_cu_id(true, instance, cu_ue_f1ap_id);
RRC_DCCH_DATA_IND (message_p).
module_id
= instance;
RRC_DCCH_DATA_IND (message_p).
instance
= instance;
RRC_DCCH_DATA_IND (message_p).eNB_index = instance; // not needed for CU
itti_send_msg_to_task(TASK_RRC_ENB, instance, message_p);
*/
protocol_ctxt_t
ctxt
;
ctxt
.
module_id
=
instance
;
ctxt
.
instance
=
instance
;
ctxt
.
instance
=
instance
;
ctxt
.
rnti
=
f1ap_get_rnti_by_cu_id
(
true
,
instance
,
cu_ue_f1ap_id
);
ctxt
.
enb_flag
=
1
;
...
...
This diff is collapsed.
Click to expand it.
openair2/F1AP/f1ap_cu_task.c
View file @
b5f30017
...
...
@@ -36,8 +36,9 @@
#include "f1ap_cu_ue_context_management.h"
#include "f1ap_cu_task.h"
#include "proto_agent.h"
#include <openair3/ocp-gtpu/gtp_itf.h>
void
cu_task_handle_sctp_association_ind
(
instance_t
i
nstance
,
sctp_new_association_ind_t
*
sctp_new_association_ind
)
{
static
void
cu_task_handle_sctp_association_ind
(
instance_t
instance
,
instance_t
gtpuI
nstance
,
sctp_new_association_ind_t
*
sctp_new_association_ind
)
{
createF1inst
(
true
,
instance
,
NULL
);
// save the assoc id
f1ap_setup_req_t
*
f1ap_cu_data
=
f1ap_req
(
true
,
instance
);
...
...
@@ -48,7 +49,7 @@ void cu_task_handle_sctp_association_ind(instance_t instance, sctp_new_associati
// Nothing
}
void
cu_task_handle_sctp_association_resp
(
instance_t
instance
,
sctp_new_association_resp_t
*
sctp_new_association_resp
)
{
static
void
cu_task_handle_sctp_association_resp
(
instance_t
instance
,
sctp_new_association_resp_t
*
sctp_new_association_resp
)
{
DevAssert
(
sctp_new_association_resp
!=
NULL
);
if
(
sctp_new_association_resp
->
sctp_state
!=
SCTP_STATE_ESTABLISHED
)
{
...
...
@@ -63,7 +64,7 @@ void cu_task_handle_sctp_association_resp(instance_t instance, sctp_new_associat
}
}
void
cu_task_handle_sctp_data_ind
(
instance_t
instance
,
sctp_data_ind_t
*
sctp_data_ind
)
{
static
void
cu_task_handle_sctp_data_ind
(
instance_t
instance
,
sctp_data_ind_t
*
sctp_data_ind
)
{
int
result
;
DevAssert
(
sctp_data_ind
!=
NULL
);
f1ap_handle_message
(
instance
,
sctp_data_ind
->
assoc_id
,
sctp_data_ind
->
stream
,
...
...
@@ -72,7 +73,7 @@ void cu_task_handle_sctp_data_ind(instance_t instance, sctp_data_ind_t *sctp_dat
AssertFatal
(
result
==
EXIT_SUCCESS
,
"Failed to free memory (%d)!
\n
"
,
result
);
}
void
cu_task_send_sctp_init_req
(
instance_t
enb_id
)
{
static
void
cu_task_send_sctp_init_req
(
instance_t
instance
,
char
*
my_addr
)
{
// 1. get the itti msg, and retrive the enb_id from the message
// 2. use RC.rrc[enb_id] to fill the sctp_init_t with the ip, port
// 3. creat an itti message to init
...
...
@@ -84,12 +85,7 @@ void cu_task_send_sctp_init_req(instance_t enb_id) {
message_p
->
ittiMsg
.
sctp_init
.
ipv4
=
1
;
message_p
->
ittiMsg
.
sctp_init
.
ipv6
=
0
;
message_p
->
ittiMsg
.
sctp_init
.
nb_ipv4_addr
=
1
;
if
(
RC
.
nrrrc
[
0
]
->
node_type
==
ngran_gNB_CU
)
{
message_p
->
ittiMsg
.
sctp_init
.
ipv4_address
[
0
]
=
inet_addr
(
RC
.
nrrrc
[
enb_id
]
->
eth_params_s
.
my_addr
);
}
else
{
message_p
->
ittiMsg
.
sctp_init
.
ipv4_address
[
0
]
=
inet_addr
(
RC
.
rrc
[
enb_id
]
->
eth_params_s
.
my_addr
);
}
message_p
->
ittiMsg
.
sctp_init
.
ipv4_address
[
0
]
=
inet_addr
(
my_addr
);
/*
* SR WARNING: ipv6 multi-homing fails sometimes for localhost.
...
...
@@ -97,19 +93,35 @@ void cu_task_send_sctp_init_req(instance_t enb_id) {
*/
message_p
->
ittiMsg
.
sctp_init
.
nb_ipv6_addr
=
0
;
message_p
->
ittiMsg
.
sctp_init
.
ipv6_address
[
0
]
=
"0:0:0:0:0:0:0:1"
;
itti_send_msg_to_task
(
TASK_SCTP
,
enb_id
,
message_p
);
itti_send_msg_to_task
(
TASK_SCTP
,
instance
,
message_p
);
}
void
*
F1AP_CU_task
(
void
*
arg
)
{
instance_t
cu_task_create_gtpu_instance_to_du
(
eth_params_t
*
IPaddrs
)
{
openAddr_t
tmp
=
{
0
};
strncpy
(
tmp
.
originHost
,
IPaddrs
->
my_addr
,
sizeof
(
tmp
.
originHost
)
-
1
);
strncpy
(
tmp
.
destinationHost
,
IPaddrs
->
remote_addr
,
sizeof
(
tmp
.
destinationHost
)
-
1
);
sprintf
(
tmp
.
originService
,
"%d"
,
GTPV1U_UDP_PORT
);
sprintf
(
tmp
.
destinationService
,
"%d"
,
GTPV1U_UDP_PORT
);
return
ocp_gtpv1Init
(
tmp
);
}
void
*
F1AP_CU_task
(
void
*
arg
)
{
MessageDef
*
received_msg
=
NULL
;
int
result
;
LOG_I
(
F1AP
,
"Starting F1AP at CU
\n
"
);
// no RLC in CU, initialize mem pool for PDCP
pool_buffer_init
();
itti_mark_task_ready
(
TASK_CU_F1
);
cu_task_send_sctp_init_req
(
0
);
eth_params_t
*
IPaddrs
;
// Hardcoded instance id!
if
(
RC
.
nrrrc
[
0
]
->
node_type
==
ngran_gNB_CU
)
IPaddrs
=&
RC
.
nrrrc
[
0
]
->
eth_params_s
;
else
IPaddrs
=&
RC
.
rrc
[
0
]
->
eth_params_s
;
cu_task_send_sctp_init_req
(
0
,
IPaddrs
->
my_addr
);
instance_t
gtpInstance
=
cu_task_create_gtpu_instance_to_du
(
IPaddrs
);
AssertFatal
(
gtpInstance
>
0
,
"Failed to create CU F1-U UDP listener"
);
while
(
1
)
{
itti_receive_msg
(
TASK_CU_F1
,
&
received_msg
);
...
...
@@ -118,6 +130,7 @@ F1AP_CU_task(void *arg) {
LOG_I
(
F1AP
,
"CU Task Received SCTP_NEW_ASSOCIATION_IND for instance %ld
\n
"
,
ITTI_MSG_DESTINATION_INSTANCE
(
received_msg
));
cu_task_handle_sctp_association_ind
(
ITTI_MSG_ORIGIN_INSTANCE
(
received_msg
),
gtpInstance
,
&
received_msg
->
ittiMsg
.
sctp_new_association_ind
);
break
;
...
...
This diff is collapsed.
Click to expand it.
openair2/F1AP/f1ap_cu_task.h
View file @
b5f30017
...
...
@@ -22,11 +22,6 @@
#ifndef F1AP_CU_TASK_H_
#define F1AP_CU_TASK_H_
void
cu_task_handle_sctp_association_ind
(
instance_t
instance
,
sctp_new_association_ind_t
*
sctp_new_association_ind
);
void
cu_task_handle_sctp_association_resp
(
instance_t
instance
,
sctp_new_association_resp_t
*
sctp_new_association_resp
);
void
cu_task_handle_sctp_data_ind
(
instance_t
instance
,
sctp_data_ind_t
*
sctp_data_ind
);
void
cu_task_send_sctp_init_req
(
instance_t
enb_id
);
void
*
F1AP_CU_task
(
void
*
arg
);
#endif
/* F1AP_CU_TASK_H_ */
This diff is collapsed.
Click to expand it.
openair2/F1AP/f1ap_cu_ue_context_management.c
View file @
b5f30017
...
...
@@ -631,7 +631,7 @@ int CU_handle_UE_CONTEXT_SETUP_RESPONSE(instance_t instance,
F1AP_UEContextSetupResponseIEs_t
*
ie
;
DevAssert
(
pdu
);
msg_p
=
itti_alloc_new_message
(
TASK_DU_F1
,
0
,
F1AP_UE_CONTEXT_SETUP_RESP
);
f1ap_ue_context_setup_re
sp
_t
*
f1ap_ue_context_setup_resp
=
&
F1AP_UE_CONTEXT_SETUP_RESP
(
msg_p
);
f1ap_ue_context_setup_re
q
_t
*
f1ap_ue_context_setup_resp
=
&
F1AP_UE_CONTEXT_SETUP_RESP
(
msg_p
);
container
=
&
pdu
->
choice
.
successfulOutcome
->
value
.
choice
.
UEContextSetupResponse
;
int
i
;
...
...
This diff is collapsed.
Click to expand it.
openair2/F1AP/f1ap_du_interface_management.c
View file @
b5f30017
...
...
@@ -93,8 +93,8 @@ int DU_handle_ERROR_INDICATION(instance_t instance,
// SETUP REQUEST
int
DU_send_F1_SETUP_REQUEST
(
instance_t
instance
)
{
module_id
_t
enb_mod_idP
=
0
;
module_id
_t
du_mod_idP
=
0
;
instance
_t
enb_mod_idP
=
0
;
instance
_t
du_mod_idP
=
0
;
F1AP_F1AP_PDU_t
pdu
=
{
0
};
uint8_t
*
buffer
;
uint32_t
len
;
...
...
This diff is collapsed.
Click to expand it.
openair2/F1AP/f1ap_du_rrc_message_transfer.c
View file @
b5f30017
...
...
@@ -165,11 +165,11 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
AssertFatal
(
srb_id
<
3
,
"illegal srb_id
\n
"
);
protocol_ctxt_t
ctxt
;
ctxt
.
rnti
=
f1ap_get_rnti_by_du_id
(
false
,
instance
,
du_ue_f1ap_id
);
ctxt
.
module_id
=
instance
;
ctxt
.
instance
=
instance
;
ctxt
.
instance
=
instance
;
ctxt
.
enb_flag
=
1
;
struct
rrc_eNB_ue_context_s
*
ue_context_p
=
rrc_eNB_get_ue_context
(
RC
.
rrc
[
ctxt
.
module_id
],
RC
.
rrc
[
ctxt
.
instance
],
ctxt
.
rnti
);
if
(
srb_id
==
0
)
{
...
...
@@ -260,7 +260,7 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
mac_MainConfig
=
&
radioResourceConfigDedicated
->
mac_MainConfig
->
choice
.
explicitValue
;
rrc_mac_config_req_eNB
(
ctxt
.
module_id
,
ctxt
.
instance
,
0
,
//primaryCC_id,
0
,
0
,
0
,
0
,
0
,
0
,
ctxt
.
rnti
,
...
...
@@ -387,7 +387,7 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
message_p
=
itti_alloc_new_message
(
TASK_DU_F1
,
0
,
RRC_MAC_DRX_CONFIG_REQ
);
RRC_MAC_DRX_CONFIG_REQ
(
message_p
).
rnti
=
ctxt
.
rnti
;
RRC_MAC_DRX_CONFIG_REQ
(
message_p
).
drx_Configuration
=
mac_MainConfig
->
drx_Config
;
itti_send_msg_to_task
(
TASK_MAC_ENB
,
ctxt
.
module_id
,
message_p
);
itti_send_msg_to_task
(
TASK_MAC_ENB
,
ctxt
.
instance
,
message_p
);
LOG_D
(
F1AP
,
"DRX configured in MAC Main Configuration for RRC Connection Reconfiguration
\n
"
);
}
...
...
@@ -410,9 +410,9 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
}
else
if
(
SRB_configList
->
list
.
array
[
i
]
->
srb_Identity
==
2
)
{
ue_context_p
->
ue_context
.
Srb2
.
Active
=
1
;
ue_context_p
->
ue_context
.
Srb2
.
Srb_info
.
Srb_id
=
2
;
LOG_I
(
F1AP
,
"[DU %
d] SRB2 is now active
\n
"
,
ctxt
.
module_id
);
LOG_I
(
F1AP
,
"[DU %
ld] SRB2 is now active
\n
"
,
ctxt
.
instance
);
}
else
{
LOG_W
(
F1AP
,
"[DU %
d] invalide SRB identity %ld
\n
"
,
ctxt
.
module_id
,
LOG_W
(
F1AP
,
"[DU %
ld] invalide SRB identity %ld
\n
"
,
ctxt
.
instance
,
SRB_configList
->
list
.
array
[
i
]
->
srb_Identity
);
}
}
...
...
@@ -423,8 +423,8 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
if
(
DRB_configList
->
list
.
array
[
i
])
{
drb_id
=
(
int
)
DRB_configList
->
list
.
array
[
i
]
->
drb_Identity
;
LOG_I
(
F1AP
,
"[DU %d] Logical Channel UL-DCCH, Received RRCConnectionReconfiguration for UE rnti %x, reconfiguring DRB %d/LCID %d
\n
"
,
ctxt
.
module_id
,
"[DU %
l
d] Logical Channel UL-DCCH, Received RRCConnectionReconfiguration for UE rnti %x, reconfiguring DRB %d/LCID %d
\n
"
,
ctxt
.
instance
,
ctxt
.
rnti
,
(
int
)
DRB_configList
->
list
.
array
[
i
]
->
drb_Identity
,
(
int
)
*
DRB_configList
->
list
.
array
[
i
]
->
logicalChannelIdentity
);
...
...
@@ -437,7 +437,7 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
}
rrc_mac_config_req_eNB
(
ctxt
.
module_id
,
ctxt
.
instance
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
ue_context_p
->
ue_context
.
rnti
,
...
...
@@ -746,7 +746,7 @@ int DU_send_UL_RRC_MESSAGE_TRANSFER(instance_t instance,
/* UL RRC Message Transfer */
int
DU_send_INITIAL_UL_RRC_MESSAGE_TRANSFER
(
module_id_t
module_id
P
,
int
DU_send_INITIAL_UL_RRC_MESSAGE_TRANSFER
(
instance_t
instance
P
,
int
CC_idP
,
int
UE_id
,
rnti_t
rntiP
,
...
...
@@ -758,7 +758,7 @@ int DU_send_INITIAL_UL_RRC_MESSAGE_TRANSFER(module_id_t module_idP,
F1AP_InitialULRRCMessageTransfer_t
*
out
;
uint8_t
*
buffer
=
NULL
;
uint32_t
len
=
0
;
int
f1ap_uid
=
f1ap_add_ue
(
false
,
module_id
P
,
rntiP
);
int
f1ap_uid
=
f1ap_add_ue
(
false
,
instance
P
,
rntiP
);
if
(
f1ap_uid
<
0
)
{
LOG_E
(
F1AP
,
"Failed to add UE
\n
"
);
...
...
@@ -779,7 +779,7 @@ int DU_send_INITIAL_UL_RRC_MESSAGE_TRANSFER(module_id_t module_idP,
ie1
->
id
=
F1AP_ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID
;
ie1
->
criticality
=
F1AP_Criticality_reject
;
ie1
->
value
.
present
=
F1AP_InitialULRRCMessageTransferIEs__value_PR_GNB_DU_UE_F1AP_ID
;
ie1
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
=
getCxt
(
false
,
module_id
P
)
->
f1ap_ue
[
f1ap_uid
].
du_ue_f1ap_id
;
ie1
->
value
.
choice
.
GNB_DU_UE_F1AP_ID
=
getCxt
(
false
,
instance
P
)
->
f1ap_ue
[
f1ap_uid
].
du_ue_f1ap_id
;
/* mandatory */
/* c2. NRCGI */
asn1cSequenceAdd
(
out
->
protocolIEs
.
list
,
F1AP_InitialULRRCMessageTransferIEs_t
,
ie2
);
...
...
@@ -787,7 +787,7 @@ int DU_send_INITIAL_UL_RRC_MESSAGE_TRANSFER(module_id_t module_idP,
ie2
->
criticality
=
F1AP_Criticality_reject
;
ie2
->
value
.
present
=
F1AP_InitialULRRCMessageTransferIEs__value_PR_NRCGI
;
//Fixme: takes always the first cell
addnRCGI
(
ie2
->
value
.
choice
.
NRCGI
,
getCxt
(
false
,
module_id
P
)
->
setupReq
.
cell
);
addnRCGI
(
ie2
->
value
.
choice
.
NRCGI
,
getCxt
(
false
,
instance
P
)
->
setupReq
.
cell
);
/* mandatory */
/* c3. C_RNTI */
// 16
asn1cSequenceAdd
(
out
->
protocolIEs
.
list
,
F1AP_InitialULRRCMessageTransferIEs_t
,
ie3
);
...
...
@@ -821,7 +821,7 @@ int DU_send_INITIAL_UL_RRC_MESSAGE_TRANSFER(module_id_t module_idP,
return
-
1
;
}
f1ap_itti_send_sctp_data_req
(
false
,
module_idP
,
buffer
,
len
,
getCxt
(
false
,
module_id
P
)
->
default_sctp_stream_id
);
f1ap_itti_send_sctp_data_req
(
false
,
instanceP
,
buffer
,
len
,
getCxt
(
false
,
instance
P
)
->
default_sctp_stream_id
);
return
0
;
}
...
...
This diff is collapsed.
Click to expand it.
openair2/F1AP/f1ap_du_rrc_message_transfer.h
View file @
b5f30017
...
...
@@ -44,7 +44,7 @@ int DU_handle_DL_RRC_MESSAGE_TRANSFER(instance_t instance,
int
DU_send_UL_RRC_MESSAGE_TRANSFER
(
instance_t
instance
,
const
f1ap_ul_rrc_message_t
*
msg
);
int
DU_send_UL_NR_RRC_MESSAGE_TRANSFER
(
instance_t
instance
,
const
f1ap_ul_rrc_message_t
*
msg
);
int
DU_send_INITIAL_UL_RRC_MESSAGE_TRANSFER
(
module_id_t
module_id
P
,
int
DU_send_INITIAL_UL_RRC_MESSAGE_TRANSFER
(
instance_t
instance
P
,
int
CC_idP
,
int
UE_id
,
rnti_t
rntiP
,
...
...
This diff is collapsed.
Click to expand it.
openair2/F1AP/f1ap_du_ue_context_management.c
View file @
b5f30017
...
...
@@ -43,7 +43,6 @@
#include <openair3/ocp-gtpu/gtp_itf.h>
int
DU_send_UE_CONTEXT_SETUP_RESPONSE
(
instance_t
instance
,
f1ap_ue_context_setup_req_t
*
req
);
int
DU_handle_UE_CONTEXT_SETUP_REQUEST
(
instance_t
instance
,
uint32_t
assoc_id
,
uint32_t
stream
,
...
...
@@ -200,7 +199,7 @@ int DU_handle_UE_CONTEXT_SETUP_REQUEST(instance_t instance,
// decode RRC Container and act on the message type
//FIXME
//rnti_t rnti = f1ap_get_rnti_by_du_id(false, instance, du_ue_f1ap_id);
ctxt
.
module_id
=
instance
;
ctxt
.
instance
=
instance
;
ctxt
.
instance
=
instance
;
ctxt
.
enb_flag
=
1
;
mem_block_t
*
pdcp_pdu_p
=
get_free_mem_block
(
ieRRC
->
value
.
choice
.
RRCContainer
.
size
,
__func__
);
...
...
@@ -648,7 +647,7 @@ int DU_handle_UE_CONTEXT_RELEASE_COMMAND(instance_t instance,
F1AP_FIND_PROTOCOLIE_BY_ID
(
F1AP_UEContextReleaseCommandIEs_t
,
ie
,
container
,
F1AP_ProtocolIE_ID_id_gNB_CU_UE_F1AP_ID
,
true
);
ctxt
.
rnti
=
f1ap_get_rnti_by_cu_id
(
false
,
instance
,
ie
->
value
.
choice
.
GNB_CU_UE_F1AP_ID
);
ctxt
.
module_id
=
instance
;
ctxt
.
instance
=
instance
;
ctxt
.
instance
=
instance
;
ctxt
.
enb_flag
=
1
;
/* GNB_DU_UE_F1AP_ID */
...
...
@@ -735,7 +734,7 @@ int DU_handle_UE_CONTEXT_RELEASE_COMMAND(instance_t instance,
struct
rrc_eNB_ue_context_s
*
ue_context_p
;
ue_context_p
=
rrc_eNB_get_ue_context
(
RC
.
rrc
[
ctxt
.
module_id
],
ctxt
.
rnti
);
ue_context_p
=
rrc_eNB_get_ue_context
(
RC
.
rrc
[
ctxt
.
instance
],
ctxt
.
rnti
);
if
(
ue_context_p
&&
!
UE_out_of_sync
)
{
/* UE exists and is in sync so we start a timer before releasing the
...
...
This diff is collapsed.
Click to expand it.
openair2/F1AP/f1ap_du_ue_context_management.h
View file @
b5f30017
...
...
@@ -85,6 +85,8 @@ int DU_handle_UE_CONTEXT_MODIFICATION_CONFIRM(instance_t instance,
uint32_t
stream
,
F1AP_F1AP_PDU_t
*
pdu
);
int
DU_send_UE_CONTEXT_SETUP_RESPONSE
(
instance_t
instance
,
f1ap_ue_context_setup_req_t
*
req
);
/*
* UE Inactivity Notification
*/
...
...
This diff is collapsed.
Click to expand it.
openair2/RRC/NR/MESSAGES/asn1_msg.c
View file @
b5f30017
...
...
@@ -418,7 +418,7 @@ uint8_t do_SIB1_NR(rrc_gNB_carrier_data_t *carrier,
//sib1->ServCellCom->downlinkConfigCommon.frequencyInfoDL.offsetToPointA = configuration->scc->downlinkConfigCommon->frequencyInfoDL->scs_SpecificCarrierList.list.array[0]->offsetToCarrier;
ServCellCom
->
downlinkConfigCommon
.
frequencyInfoDL
.
offsetToPointA
=
86
;
int
ref_scs
;
int
ref_scs
=
0
;
if
(
configuration
->
scc
->
downlinkConfigCommon
->
frequencyInfoDL
->
absoluteFrequencyPointA
<
600000
)
ref_scs
=
0
;
// 15 khz
if
(
configuration
->
scc
->
downlinkConfigCommon
->
frequencyInfoDL
->
absoluteFrequencyPointA
>
2016666
)
...
...
This diff is collapsed.
Click to expand it.
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