Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG UE
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
OpenXG
OpenXG UE
Commits
83bb2ba9
Commit
83bb2ba9
authored
Dec 09, 2020
by
Thomas Schlichter
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/develop'
parents
14fcad87
8126d47d
Changes
17
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
129 additions
and
103 deletions
+129
-103
ci-scripts/cls_oaicitest.py
ci-scripts/cls_oaicitest.py
+1
-1
ci-scripts/xml_files/enb_ue_usrp210_band7_ue_build.xml
ci-scripts/xml_files/enb_ue_usrp210_band7_ue_build.xml
+1
-1
ci-scripts/xml_files/ue_band20_build.xml
ci-scripts/xml_files/ue_band20_build.xml
+1
-1
openair1/SCHED_NR/phy_procedures_nr_gNB.c
openair1/SCHED_NR/phy_procedures_nr_gNB.c
+1
-1
openair1/SIMULATION/NR_PHY/ulschsim.c
openair1/SIMULATION/NR_PHY/ulschsim.c
+1
-1
openair2/COMMON/x2ap_messages_types.h
openair2/COMMON/x2ap_messages_types.h
+2
-0
openair2/GNB_APP/gnb_config.c
openair2/GNB_APP/gnb_config.c
+31
-17
openair2/GNB_APP/gnb_paramdef.h
openair2/GNB_APP/gnb_paramdef.h
+0
-24
openair2/LAYER2/MAC/eNB_scheduler.c
openair2/LAYER2/MAC/eNB_scheduler.c
+2
-0
openair2/LAYER2/MAC/ue_procedures.c
openair2/LAYER2/MAC/ue_procedures.c
+3
-0
openair2/LAYER2/nr_pdcp/nr_pdcp_entity_drb_am.c
openair2/LAYER2/nr_pdcp/nr_pdcp_entity_drb_am.c
+1
-1
openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c
openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c
+10
-0
openair2/LAYER2/rlc_v2/rlc_oai_api.c
openair2/LAYER2/rlc_v2/rlc_oai_api.c
+24
-16
openair2/X2AP/x2ap_eNB.c
openair2/X2AP/x2ap_eNB.c
+11
-4
openair2/X2AP/x2ap_eNB_defs.h
openair2/X2AP/x2ap_eNB_defs.h
+1
-0
openair2/X2AP/x2ap_eNB_generate_messages.c
openair2/X2AP/x2ap_eNB_generate_messages.c
+37
-36
targets/RT/USER/lte-ru.c
targets/RT/USER/lte-ru.c
+2
-0
No files found.
ci-scripts/cls_oaicitest.py
View file @
83bb2ba9
...
@@ -185,7 +185,7 @@ class OaiCiTest():
...
@@ -185,7 +185,7 @@ class OaiCiTest():
SSH
.
command
(
'mkdir -p log'
,
'\$'
,
5
)
SSH
.
command
(
'mkdir -p log'
,
'\$'
,
5
)
SSH
.
command
(
'chmod 777 log'
,
'\$'
,
5
)
SSH
.
command
(
'chmod 777 log'
,
'\$'
,
5
)
# no need to remove in log (git clean did the trick)
# no need to remove in log (git clean did the trick)
SSH
.
command
(
'stdbuf -o0 ./build_oai '
+
self
.
Build_OAI_UE_args
+
' 2>&1 | stdbuf -o0 tee compile_oai_ue.log'
,
'Bypassing the Tests|build have failed'
,
9
00
)
SSH
.
command
(
'stdbuf -o0 ./build_oai '
+
self
.
Build_OAI_UE_args
+
' 2>&1 | stdbuf -o0 tee compile_oai_ue.log'
,
'Bypassing the Tests|build have failed'
,
12
00
)
SSH
.
command
(
'ls ran_build/build'
,
'\$'
,
3
)
SSH
.
command
(
'ls ran_build/build'
,
'\$'
,
3
)
SSH
.
command
(
'ls ran_build/build'
,
'\$'
,
3
)
SSH
.
command
(
'ls ran_build/build'
,
'\$'
,
3
)
buildStatus
=
True
buildStatus
=
True
...
...
ci-scripts/xml_files/enb_ue_usrp210_band7_ue_build.xml
View file @
83bb2ba9
...
@@ -32,7 +32,7 @@
...
@@ -32,7 +32,7 @@
<testCase
id=
"090101"
>
<testCase
id=
"090101"
>
<class>
Build_OAI_UE
</class>
<class>
Build_OAI_UE
</class>
<desc>
Build OAI UE
</desc>
<desc>
Build OAI UE
</desc>
<Build_OAI_UE_args>
-w USRP --UE
</Build_OAI_UE_args>
<Build_OAI_UE_args>
-w USRP --UE
--ninja
</Build_OAI_UE_args>
</testCase>
</testCase>
</testCaseList>
</testCaseList>
ci-scripts/xml_files/ue_band20_build.xml
View file @
83bb2ba9
...
@@ -32,7 +32,7 @@
...
@@ -32,7 +32,7 @@
<testCase
id=
"090101"
>
<testCase
id=
"090101"
>
<class>
Build_OAI_UE
</class>
<class>
Build_OAI_UE
</class>
<desc>
Build OAI UE
</desc>
<desc>
Build OAI UE
</desc>
<Build_OAI_UE_args>
-w USRP --UE
</Build_OAI_UE_args>
<Build_OAI_UE_args>
-w USRP --UE
--ninja
</Build_OAI_UE_args>
</testCase>
</testCase>
</testCaseList>
</testCaseList>
openair1/SCHED_NR/phy_procedures_nr_gNB.c
View file @
83bb2ba9
...
@@ -239,7 +239,7 @@ void nr_postDecode(PHY_VARS_gNB *gNB, notifiedFIFO_elt_t *req) {
...
@@ -239,7 +239,7 @@ void nr_postDecode(PHY_VARS_gNB *gNB, notifiedFIFO_elt_t *req) {
if
(
decodeSuccess
)
{
if
(
decodeSuccess
)
{
memcpy
(
ulsch_harq
->
b
+
rdata
->
offset
,
memcpy
(
ulsch_harq
->
b
+
rdata
->
offset
,
ulsch_harq
->
c
[
r
],
ulsch_harq
->
c
[
r
],
rdata
->
Kr_bytes
-
-
(
ulsch_harq
->
F
>>
3
)
-
((
ulsch_harq
->
C
>
1
)
?
3
:
0
));
rdata
->
Kr_bytes
-
(
ulsch_harq
->
F
>>
3
)
-
((
ulsch_harq
->
C
>
1
)
?
3
:
0
));
}
else
{
}
else
{
if
(
rdata
->
nbSegments
!=
ulsch_harq
->
processedSegments
)
{
if
(
rdata
->
nbSegments
!=
ulsch_harq
->
processedSegments
)
{
...
...
openair1/SIMULATION/NR_PHY/ulschsim.c
View file @
83bb2ba9
...
@@ -81,7 +81,7 @@ int nr_postDecode_sim(PHY_VARS_gNB *gNB, notifiedFIFO_elt_t *req) {
...
@@ -81,7 +81,7 @@ int nr_postDecode_sim(PHY_VARS_gNB *gNB, notifiedFIFO_elt_t *req) {
if
(
decodeSuccess
)
{
if
(
decodeSuccess
)
{
memcpy
(
ulsch_harq
->
b
+
rdata
->
offset
,
memcpy
(
ulsch_harq
->
b
+
rdata
->
offset
,
ulsch_harq
->
c
[
r
],
ulsch_harq
->
c
[
r
],
rdata
->
Kr_bytes
-
-
(
ulsch_harq
->
F
>>
3
)
-
((
ulsch_harq
->
C
>
1
)
?
3
:
0
));
rdata
->
Kr_bytes
-
(
ulsch_harq
->
F
>>
3
)
-
((
ulsch_harq
->
C
>
1
)
?
3
:
0
));
}
else
{
}
else
{
if
(
rdata
->
nbSegments
!=
ulsch_harq
->
processedSegments
)
{
if
(
rdata
->
nbSegments
!=
ulsch_harq
->
processedSegments
)
{
int
nb
=
abortTpool
(
gNB
->
threadPool
,
req
->
key
);
int
nb
=
abortTpool
(
gNB
->
threadPool
,
req
->
key
);
...
...
openair2/COMMON/x2ap_messages_types.h
View file @
83bb2ba9
...
@@ -122,6 +122,8 @@ typedef struct x2ap_register_enb_req_s {
...
@@ -122,6 +122,8 @@ typedef struct x2ap_register_enb_req_s {
* CC Params
* CC Params
*/
*/
int16_t
eutra_band
[
MAX_NUM_CCs
];
int16_t
eutra_band
[
MAX_NUM_CCs
];
int32_t
nr_band
[
MAX_NUM_CCs
];
int32_t
nrARFCN
[
MAX_NUM_CCs
];
uint32_t
downlink_frequency
[
MAX_NUM_CCs
];
uint32_t
downlink_frequency
[
MAX_NUM_CCs
];
int32_t
uplink_frequency_offset
[
MAX_NUM_CCs
];
int32_t
uplink_frequency_offset
[
MAX_NUM_CCs
];
uint32_t
Nid_cell
[
MAX_NUM_CCs
];
uint32_t
Nid_cell
[
MAX_NUM_CCs
];
...
...
openair2/GNB_APP/gnb_config.c
View file @
83bb2ba9
...
@@ -34,6 +34,7 @@
...
@@ -34,6 +34,7 @@
#include "common/utils/LOG/log_extern.h"
#include "common/utils/LOG/log_extern.h"
#include "assertions.h"
#include "assertions.h"
#include "gnb_config.h"
#include "gnb_config.h"
#include "gnb_paramdef.h"
#include "UTIL/OTG/otg.h"
#include "UTIL/OTG/otg.h"
#include "UTIL/OTG/otg_externs.h"
#include "UTIL/OTG/otg_externs.h"
#include "intertask_interface.h"
#include "intertask_interface.h"
...
@@ -1031,27 +1032,32 @@ void NRRCConfig(void) {
...
@@ -1031,27 +1032,32 @@ void NRRCConfig(void) {
}
}
int
RCconfig_NR_X2
(
MessageDef
*
msg_p
,
uint32_t
i
)
{
int
RCconfig_NR_X2
(
MessageDef
*
msg_p
,
uint32_t
i
)
{
int
J
,
l
;
int
J
,
l
;
char
*
address
=
NULL
;
char
*
address
=
NULL
;
char
*
cidr
=
NULL
;
char
*
cidr
=
NULL
;
//int num_gnbs = 0;
//int num_gnbs = 0;
//int num_component_carriers = 0;
//int num_component_carriers = 0;
int
j
,
k
=
0
;
int
j
,
k
=
0
;
int32_t
gnb_id
=
0
;
int32_t
gnb_id
=
0
;
paramdef_t
GNBSParams
[]
=
GNBSPARAMS_DESC
;
paramdef_t
GNBSParams
[]
=
GNBSPARAMS_DESC
;
////////// Identification parameters
paramdef_t
GNBParams
[]
=
GNBPARAMS_DESC
;
paramdef_t
GNBParams
[]
=
GNBPARAMS_DESC
;
paramlist_def_t
GNBParamList
=
{
GNB_CONFIG_STRING_GNB_LIST
,
NULL
,
0
};
paramlist_def_t
GNBParamList
=
{
GNB_CONFIG_STRING_GNB_LIST
,
NULL
,
0
};
/* get global parameters, defined outside any section in the config file */
/* get global parameters, defined outside any section in the config file */
config_get
(
GNBSParams
,
sizeof
(
GNBSParams
)
/
sizeof
(
paramdef_t
),
NULL
);
config_get
(
GNBSParams
,
sizeof
(
GNBSParams
)
/
sizeof
(
paramdef_t
),
NULL
);
NR_ServingCellConfigCommon_t
*
scc
=
calloc
(
1
,
sizeof
(
NR_ServingCellConfigCommon_t
));
//paramlist_def_t SCCsParamList = {GNB_CONFIG_STRING_SERVINGCELLCONFIGCOMMON, NULL, 0};
uint64_t
ssb_bitmap
=
0xff
;
memset
((
void
*
)
scc
,
0
,
sizeof
(
NR_ServingCellConfigCommon_t
));
prepare_scc
(
scc
);
paramdef_t
SCCsParams
[]
=
SCCPARAMS_DESC
(
scc
);
paramlist_def_t
SCCsParamList
=
{
GNB_CONFIG_STRING_SERVINGCELLCONFIGCOMMON
,
NULL
,
0
};
AssertFatal
(
i
<
GNBSParams
[
GNB_ACTIVE_GNBS_IDX
].
numelt
,
AssertFatal
(
i
<
GNBSParams
[
GNB_ACTIVE_GNBS_IDX
].
numelt
,
"Failed to parse config file %s, %uth attribute %s
\n
"
,
"Failed to parse config file %s, %uth attribute %s
\n
"
,
RC
.
config_file_name
,
i
,
ENB_CONFIG_STRING_ACTIVE_E
NBS
);
RC
.
config_file_name
,
i
,
GNB_CONFIG_STRING_ACTIVE_G
NBS
);
if
(
GNBSParams
[
GNB_ACTIVE_GNBS_IDX
].
numelt
>
0
)
{
if
(
GNBSParams
[
GNB_ACTIVE_GNBS_IDX
].
numelt
>
0
)
{
// Output a list of all gNBs.
// Output a list of all gNBs.
...
@@ -1121,19 +1127,28 @@ int RCconfig_NR_X2(MessageDef *msg_p, uint32_t i) {
...
@@ -1121,19 +1127,28 @@ int RCconfig_NR_X2(MessageDef *msg_p, uint32_t i) {
"MNC %d cannot be encoded in two digits as requested (change mnc_digit_length to 3)
\n
"
,
"MNC %d cannot be encoded in two digits as requested (change mnc_digit_length to 3)
\n
"
,
X2AP_REGISTER_ENB_REQ
(
msg_p
).
mnc
);
X2AP_REGISTER_ENB_REQ
(
msg_p
).
mnc
);
X2AP_REGISTER_ENB_REQ
(
msg_p
).
num_cc
=
1
;
sprintf
(
aprefix
,
"%s.[%i]"
,
GNB_CONFIG_STRING_GNB_LIST
,
0
);
J
=
0
;
X2AP_REGISTER_ENB_REQ
(
msg_p
).
eutra_band
[
J
]
=
78
;
//ccparams_nr_x2.nr_band; //78
X2AP_REGISTER_ENB_REQ
(
msg_p
).
downlink_frequency
[
J
]
=
3600000000
;
//ccparams_nr_x2.downlink_frequency; //3600000000
X2AP_REGISTER_ENB_REQ
(
msg_p
).
uplink_frequency_offset
[
J
]
=
0
;
//(unsigned int) ccparams_nr_x2.uplink_frequency_offset; //0
X2AP_REGISTER_ENB_REQ
(
msg_p
).
Nid_cell
[
J
]
=
0
;
//ccparams_nr_x2.Nid_cell; //0
X2AP_REGISTER_ENB_REQ
(
msg_p
).
N_RB_DL
[
J
]
=
106
;
//ccparams_nr_x2.N_RB_DL; //106
X2AP_REGISTER_ENB_REQ
(
msg_p
).
frame_type
[
J
]
=
TDD
;
//Temp out
config_getlist
(
&
SCCsParamList
,
NULL
,
0
,
aprefix
);
/*X2AP_REGISTER_ENB_REQ (msg_p).fdd_earfcn_DL[J] = to_earfcn_DL(ccparams_lte.eutra_band, ccparams_lte.downlink_frequency, ccparams_lte.N_RB_DL);
if
(
SCCsParamList
.
numelt
>
0
)
{
X2AP_REGISTER_ENB_REQ (msg_p).fdd_earfcn_UL[J] = to_earfcn_UL(ccparams_lte.eutra_band, ccparams_lte.downlink_frequency + ccparams_lte.uplink_frequency_offset, ccparams_lte.N_RB_DL);*/
sprintf
(
aprefix
,
"%s.[%i].%s.[%i]"
,
GNB_CONFIG_STRING_GNB_LIST
,
0
,
GNB_CONFIG_STRING_SERVINGCELLCONFIGCOMMON
,
0
);
config_get
(
SCCsParams
,
sizeof
(
SCCsParams
)
/
sizeof
(
paramdef_t
),
aprefix
);
fix_scc
(
scc
,
ssb_bitmap
);
}
X2AP_REGISTER_ENB_REQ
(
msg_p
).
num_cc
=
SCCsParamList
.
numelt
;
for
(
J
=
0
;
J
<
SCCsParamList
.
numelt
;
J
++
)
{
X2AP_REGISTER_ENB_REQ
(
msg_p
).
nr_band
[
J
]
=
*
scc
->
downlinkConfigCommon
->
frequencyInfoDL
->
frequencyBandList
.
list
.
array
[
0
];
//nr_band; //78
X2AP_REGISTER_ENB_REQ
(
msg_p
).
nrARFCN
[
J
]
=
scc
->
downlinkConfigCommon
->
frequencyInfoDL
->
absoluteFrequencyPointA
;
X2AP_REGISTER_ENB_REQ
(
msg_p
).
uplink_frequency_offset
[
J
]
=
scc
->
uplinkConfigCommon
->
frequencyInfoUL
->
scs_SpecificCarrierList
.
list
.
array
[
0
]
->
offsetToCarrier
;
//0
X2AP_REGISTER_ENB_REQ
(
msg_p
).
Nid_cell
[
J
]
=
*
scc
->
physCellId
;
//0
X2AP_REGISTER_ENB_REQ
(
msg_p
).
N_RB_DL
[
J
]
=
scc
->
downlinkConfigCommon
->
frequencyInfoDL
->
scs_SpecificCarrierList
.
list
.
array
[
0
]
->
carrierBandwidth
;
//106
X2AP_REGISTER_ENB_REQ
(
msg_p
).
frame_type
[
J
]
=
TDD
;
LOG_I
(
X2AP
,
"gNB configuration parameters: nr_band: %d, nr_ARFCN: %d, DL_RBs: %d, num_cc: %d
\n
"
,
X2AP_REGISTER_ENB_REQ
(
msg_p
).
nr_band
[
J
],
X2AP_REGISTER_ENB_REQ
(
msg_p
).
nrARFCN
[
J
],
X2AP_REGISTER_ENB_REQ
(
msg_p
).
N_RB_DL
[
J
],
X2AP_REGISTER_ENB_REQ
(
msg_p
).
num_cc
);
}
sprintf
(
aprefix
,
"%s.[%i]"
,
GNB_CONFIG_STRING_GNB_LIST
,
k
);
sprintf
(
aprefix
,
"%s.[%i]"
,
GNB_CONFIG_STRING_GNB_LIST
,
k
);
config_getlist
(
&
X2ParamList
,
X2Params
,
sizeof
(
X2Params
)
/
sizeof
(
paramdef_t
),
aprefix
);
config_getlist
(
&
X2ParamList
,
X2Params
,
sizeof
(
X2Params
)
/
sizeof
(
paramdef_t
),
aprefix
);
...
@@ -1222,4 +1237,3 @@ int RCconfig_NR_X2(MessageDef *msg_p, uint32_t i) {
...
@@ -1222,4 +1237,3 @@ int RCconfig_NR_X2(MessageDef *msg_p, uint32_t i) {
return
0
;
return
0
;
}
}
openair2/GNB_APP/gnb_paramdef.h
View file @
83bb2ba9
...
@@ -118,30 +118,6 @@ typedef enum {
...
@@ -118,30 +118,6 @@ typedef enum {
#define GNB_CONFIG_STRING_PUSCHTARGETPOWX10 "pusch_TargetSNRx10"
#define GNB_CONFIG_STRING_PUSCHTARGETPOWX10 "pusch_TargetSNRx10"
#define GNB_CONFIG_STRING_PUCCHTARGETPOWX10 "pucch_TargetSNRx10"
#define GNB_CONFIG_STRING_PUCCHTARGETPOWX10 "pucch_TargetSNRx10"
typedef
struct
ccparams_nr_x2
{
char
*
frame_type
;
int32_t
tdd_config
;
int32_t
tdd_config_s
;
int32_t
nr_band
;
long
long
int
downlink_frequency
;
int32_t
uplink_frequency_offset
;
int32_t
Nid_cell
;
int32_t
N_RB_DL
;
}
ccparams_nr_x2_t
;
#define CCPARAMS_NR_X2_DESC(ccparams) { \
{ENB_CONFIG_STRING_FRAME_TYPE, NULL, 0, strptr:&ccparams.frame_type, defstrval:"TDD", TYPE_STRING, 0}, \
{ENB_CONFIG_STRING_TDD_CONFIG, NULL, 0, iptr:&ccparams.tdd_config, defintval:3, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_TDD_CONFIG_S, NULL, 0, iptr:&ccparams.tdd_config_s, defintval:0, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_EUTRA_BAND, NULL, 0, iptr:&ccparams.nr_band, defintval:78, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_DOWNLINK_FREQUENCY, NULL, 0, i64ptr:(int64_t *)&ccparams.downlink_frequency, defint64val:3600000000, TYPE_UINT64, 0}, \
{ENB_CONFIG_STRING_UPLINK_FREQUENCY_OFFSET, NULL, 0, iptr:&ccparams.uplink_frequency_offset, defintval:0, TYPE_INT, 0}, \
{ENB_CONFIG_STRING_NID_CELL, NULL, 0, iptr:&ccparams.Nid_cell, defintval:0, TYPE_UINT, 0}, \
{ENB_CONFIG_STRING_N_RB_DL, NULL, 0, iptr:&ccparams.N_RB_DL, defintval:106, TYPE_UINT, 0} \
}
/*-----------------------------------------------------------------------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------------------------------------------------------------------*/
/* cell configuration parameters */
/* cell configuration parameters */
/* optname helpstr paramflags XXXptr defXXXval type numelt */
/* optname helpstr paramflags XXXptr defXXXval type numelt */
...
...
openair2/LAYER2/MAC/eNB_scheduler.c
View file @
83bb2ba9
...
@@ -914,7 +914,9 @@ eNB_dlsch_ulsch_scheduler(module_id_t module_idP,
...
@@ -914,7 +914,9 @@ eNB_dlsch_ulsch_scheduler(module_id_t module_idP,
#if (!defined(PRE_SCD_THREAD))
#if (!defined(PRE_SCD_THREAD))
if
(
!
NODE_IS_DU
(
RC
.
rrc
[
module_idP
]
->
node_type
))
{
if
(
!
NODE_IS_DU
(
RC
.
rrc
[
module_idP
]
->
node_type
))
{
void
rlc_tick
(
int
,
int
);
PROTOCOL_CTXT_SET_BY_MODULE_ID
(
&
ctxt
,
module_idP
,
ENB_FLAG_YES
,
NOT_A_RNTI
,
frameP
,
subframeP
,
module_idP
);
PROTOCOL_CTXT_SET_BY_MODULE_ID
(
&
ctxt
,
module_idP
,
ENB_FLAG_YES
,
NOT_A_RNTI
,
frameP
,
subframeP
,
module_idP
);
rlc_tick
(
frameP
,
subframeP
);
pdcp_run
(
&
ctxt
);
pdcp_run
(
&
ctxt
);
pdcp_mbms_run
(
&
ctxt
);
pdcp_mbms_run
(
&
ctxt
);
rrc_rx_tx
(
&
ctxt
,
CC_id
);
rrc_rx_tx
(
&
ctxt
,
CC_id
);
...
...
openair2/LAYER2/MAC/ue_procedures.c
View file @
83bb2ba9
...
@@ -3099,6 +3099,9 @@ ue_scheduler(const module_id_t module_idP,
...
@@ -3099,6 +3099,9 @@ ue_scheduler(const module_id_t module_idP,
}
}
}
}
void
rlc_tick
(
int
,
int
);
rlc_tick
(
rxFrameP
%
1024
,
rxSubframeP
);
//#endif
//#endif
UE_mac_inst
[
module_idP
].
txFrame
=
txFrameP
;
UE_mac_inst
[
module_idP
].
txFrame
=
txFrameP
;
UE_mac_inst
[
module_idP
].
txSubframe
=
txSubframeP
;
UE_mac_inst
[
module_idP
].
txSubframe
=
txSubframeP
;
...
...
openair2/LAYER2/nr_pdcp/nr_pdcp_entity_drb_am.c
View file @
83bb2ba9
...
@@ -40,7 +40,7 @@ void nr_pdcp_entity_drb_am_recv_sdu(nr_pdcp_entity_t *_entity, char *buffer, int
...
@@ -40,7 +40,7 @@ void nr_pdcp_entity_drb_am_recv_sdu(nr_pdcp_entity_t *_entity, char *buffer, int
{
{
nr_pdcp_entity_drb_am_t
*
entity
=
(
nr_pdcp_entity_drb_am_t
*
)
_entity
;
nr_pdcp_entity_drb_am_t
*
entity
=
(
nr_pdcp_entity_drb_am_t
*
)
_entity
;
int
sn
;
int
sn
;
char
buf
[
size
+
2
];
char
buf
[
size
+
3
];
sn
=
entity
->
common
.
next_nr_pdcp_tx_sn
;
sn
=
entity
->
common
.
next_nr_pdcp_tx_sn
;
...
...
openair2/LAYER2/nr_rlc/nr_rlc_oai_api.c
View file @
83bb2ba9
...
@@ -923,3 +923,13 @@ void nr_rlc_tick(int frame, int subframe)
...
@@ -923,3 +923,13 @@ void nr_rlc_tick(int frame, int subframe)
nr_rlc_current_time
++
;
nr_rlc_current_time
++
;
}
}
}
}
/* This is a hack, to compile the gNB.
* TODO: remove it. The solution is to cleanup cmake_targets/CMakeLists.txt
*/
void
rlc_tick
(
int
a
,
int
b
)
{
LOG_E
(
RLC
,
"%s:%d:%s: this code should not be reached
\n
"
,
__FILE__
,
__LINE__
,
__FUNCTION__
);
exit
(
1
);
}
openair2/LAYER2/rlc_v2/rlc_oai_api.c
View file @
83bb2ba9
...
@@ -177,14 +177,6 @@ mac_rlc_status_resp_t mac_rlc_status_ind(
...
@@ -177,14 +177,6 @@ mac_rlc_status_resp_t mac_rlc_status_ind(
mac_rlc_status_resp_t
ret
;
mac_rlc_status_resp_t
ret
;
rlc_entity_t
*
rb
;
rlc_entity_t
*
rb
;
/* TODO: handle time a bit more properly */
if
(
rlc_current_time_last_frame
!=
frameP
||
rlc_current_time_last_subframe
!=
subframeP
)
{
rlc_current_time
++
;
rlc_current_time_last_frame
=
frameP
;
rlc_current_time_last_subframe
=
subframeP
;
}
rlc_manager_lock
(
rlc_ue_manager
);
rlc_manager_lock
(
rlc_ue_manager
);
ue
=
rlc_manager_get_ue
(
rlc_ue_manager
,
rntiP
);
ue
=
rlc_manager_get_ue
(
rlc_ue_manager
,
rntiP
);
...
@@ -244,14 +236,6 @@ rlc_buffer_occupancy_t mac_rlc_get_buffer_occupancy_ind(
...
@@ -244,14 +236,6 @@ rlc_buffer_occupancy_t mac_rlc_get_buffer_occupancy_ind(
exit
(
1
);
exit
(
1
);
}
}
/* TODO: handle time a bit more properly */
if
(
rlc_current_time_last_frame
!=
frameP
||
rlc_current_time_last_subframe
!=
subframeP
)
{
rlc_current_time
++
;
rlc_current_time_last_frame
=
frameP
;
rlc_current_time_last_subframe
=
subframeP
;
}
rlc_manager_lock
(
rlc_ue_manager
);
rlc_manager_lock
(
rlc_ue_manager
);
ue
=
rlc_manager_get_ue
(
rlc_ue_manager
,
rntiP
);
ue
=
rlc_manager_get_ue
(
rlc_ue_manager
,
rntiP
);
...
@@ -1028,3 +1012,27 @@ rlc_op_status_t rrc_rlc_remove_ue (const protocol_ctxt_t* const x)
...
@@ -1028,3 +1012,27 @@ rlc_op_status_t rrc_rlc_remove_ue (const protocol_ctxt_t* const x)
return
RLC_OP_STATUS_OK
;
return
RLC_OP_STATUS_OK
;
}
}
void
rlc_tick
(
int
frame
,
int
subframe
)
{
int
expected_next_frame
;
int
expected_next_subframe
;
if
(
frame
!=
rlc_current_time_last_frame
||
subframe
!=
rlc_current_time_last_subframe
)
{
/* warn if discontinuity in ticks */
expected_next_subframe
=
(
rlc_current_time_last_subframe
+
1
)
%
10
;
if
(
expected_next_subframe
==
0
)
expected_next_frame
=
(
rlc_current_time_last_frame
+
1
)
%
1024
;
else
expected_next_frame
=
rlc_current_time_last_frame
;
if
(
expected_next_frame
!=
frame
||
expected_next_subframe
!=
subframe
)
LOG_W
(
RLC
,
"rlc_tick: discontinuity (expected %d.%d, got %d.%d)
\n
"
,
expected_next_frame
,
expected_next_subframe
,
frame
,
subframe
);
rlc_current_time
++
;
rlc_current_time_last_frame
=
frame
;
rlc_current_time_last_subframe
=
subframe
;
}
}
openair2/X2AP/x2ap_eNB.c
View file @
83bb2ba9
...
@@ -310,14 +310,21 @@ void x2ap_eNB_handle_register_eNB(instance_t instance,
...
@@ -310,14 +310,21 @@ void x2ap_eNB_handle_register_eNB(instance_t instance,
x2ap_register_eNB
->
t_dc_overall
);
x2ap_register_eNB
->
t_dc_overall
);
for
(
int
i
=
0
;
i
<
x2ap_register_eNB
->
num_cc
;
i
++
)
{
for
(
int
i
=
0
;
i
<
x2ap_register_eNB
->
num_cc
;
i
++
)
{
new_instance
->
eutra_band
[
i
]
=
x2ap_register_eNB
->
eutra_band
[
i
];
if
(
new_instance
->
cell_type
==
CELL_MACRO_GNB
){
new_instance
->
downlink_frequency
[
i
]
=
x2ap_register_eNB
->
downlink_frequency
[
i
];
new_instance
->
nr_band
[
i
]
=
x2ap_register_eNB
->
nr_band
[
i
];
new_instance
->
tdd_nRARFCN
[
i
]
=
x2ap_register_eNB
->
nrARFCN
[
i
];
}
else
{
new_instance
->
eutra_band
[
i
]
=
x2ap_register_eNB
->
eutra_band
[
i
];
new_instance
->
downlink_frequency
[
i
]
=
x2ap_register_eNB
->
downlink_frequency
[
i
];
new_instance
->
fdd_earfcn_DL
[
i
]
=
x2ap_register_eNB
->
fdd_earfcn_DL
[
i
];
new_instance
->
fdd_earfcn_UL
[
i
]
=
x2ap_register_eNB
->
fdd_earfcn_UL
[
i
];
}
new_instance
->
uplink_frequency_offset
[
i
]
=
x2ap_register_eNB
->
uplink_frequency_offset
[
i
];
new_instance
->
uplink_frequency_offset
[
i
]
=
x2ap_register_eNB
->
uplink_frequency_offset
[
i
];
new_instance
->
Nid_cell
[
i
]
=
x2ap_register_eNB
->
Nid_cell
[
i
];
new_instance
->
Nid_cell
[
i
]
=
x2ap_register_eNB
->
Nid_cell
[
i
];
new_instance
->
N_RB_DL
[
i
]
=
x2ap_register_eNB
->
N_RB_DL
[
i
];
new_instance
->
N_RB_DL
[
i
]
=
x2ap_register_eNB
->
N_RB_DL
[
i
];
new_instance
->
frame_type
[
i
]
=
x2ap_register_eNB
->
frame_type
[
i
];
new_instance
->
frame_type
[
i
]
=
x2ap_register_eNB
->
frame_type
[
i
];
new_instance
->
fdd_earfcn_DL
[
i
]
=
x2ap_register_eNB
->
fdd_earfcn_DL
[
i
];
new_instance
->
fdd_earfcn_UL
[
i
]
=
x2ap_register_eNB
->
fdd_earfcn_UL
[
i
];
}
}
DevCheck
(
x2ap_register_eNB
->
nb_x2
<=
X2AP_MAX_NB_ENB_IP_ADDRESS
,
DevCheck
(
x2ap_register_eNB
->
nb_x2
<=
X2AP_MAX_NB_ENB_IP_ADDRESS
,
...
...
openair2/X2AP/x2ap_eNB_defs.h
View file @
83bb2ba9
...
@@ -179,6 +179,7 @@ typedef struct x2ap_eNB_instance_s {
...
@@ -179,6 +179,7 @@ typedef struct x2ap_eNB_instance_s {
uint32_t
specialSubframe
[
MAX_NUM_CCs
];
uint32_t
specialSubframe
[
MAX_NUM_CCs
];
//#ifdef Rel15
//#ifdef Rel15
int32_t
nr_band
[
MAX_NUM_CCs
];
uint32_t
tdd_nRARFCN
[
MAX_NUM_CCs
];
uint32_t
tdd_nRARFCN
[
MAX_NUM_CCs
];
int16_t
nr_SCS
[
MAX_NUM_CCs
];
int16_t
nr_SCS
[
MAX_NUM_CCs
];
//#endif
//#endif
...
...
openair2/X2AP/x2ap_eNB_generate_messages.c
View file @
83bb2ba9
...
@@ -39,7 +39,6 @@
...
@@ -39,7 +39,6 @@
#include "x2ap_ids.h"
#include "x2ap_ids.h"
#include "x2ap_eNB_itti_messaging.h"
#include "x2ap_eNB_itti_messaging.h"
#include "X2AP_SupportedSULFreqBandItem.h"
#include "msc.h"
#include "msc.h"
#include "assertions.h"
#include "assertions.h"
...
@@ -1236,7 +1235,6 @@ int x2ap_gNB_generate_ENDC_x2_setup_request(
...
@@ -1236,7 +1235,6 @@ int x2ap_gNB_generate_ENDC_x2_setup_request(
X2AP_En_gNB_ENDCX2SetupReqIEs_t
*
ie_GNB_ENDC
;
X2AP_En_gNB_ENDCX2SetupReqIEs_t
*
ie_GNB_ENDC
;
X2AP_PLMN_Identity_t
*
plmn
;
X2AP_PLMN_Identity_t
*
plmn
;
ServedNRcellsENDCX2ManagementList__Member
*
servedCellMember
;
ServedNRcellsENDCX2ManagementList__Member
*
servedCellMember
;
X2AP_SupportedSULFreqBandItem_t
*
SULFreqBandItem
;
uint8_t
*
buffer
;
uint8_t
*
buffer
;
uint32_t
len
;
uint32_t
len
;
...
@@ -1284,8 +1282,8 @@ MCC_MNC_TO_PLMNID(instance_p->mcc, instance_p->mnc, instance_p->mnc_digit_length
...
@@ -1284,8 +1282,8 @@ MCC_MNC_TO_PLMNID(instance_p->mcc, instance_p->mnc, instance_p->mnc_digit_length
ie_GNB_ENDC
->
value
.
present
=
X2AP_En_gNB_ENDCX2SetupReqIEs__value_PR_ServedNRcellsENDCX2ManagementList
;
ie_GNB_ENDC
->
value
.
present
=
X2AP_En_gNB_ENDCX2SetupReqIEs__value_PR_ServedNRcellsENDCX2ManagementList
;
{
{
for
(
int
i
=
0
;
i
<
instance_p
->
num_cc
;
i
++
){
for
(
int
i
=
0
;
i
<
instance_p
->
num_cc
;
i
++
){
servedCellMember
=
(
ServedNRcellsENDCX2ManagementList__Member
*
)
calloc
(
1
,
sizeof
(
ServedNRcellsENDCX2ManagementList__Member
));
servedCellMember
=
(
ServedNRcellsENDCX2ManagementList__Member
*
)
calloc
(
1
,
sizeof
(
ServedNRcellsENDCX2ManagementList__Member
));
{
{
servedCellMember
->
servedNRCellInfo
.
nrpCI
=
instance_p
->
Nid_cell
[
i
];
servedCellMember
->
servedNRCellInfo
.
nrpCI
=
instance_p
->
Nid_cell
[
i
];
...
@@ -1299,60 +1297,63 @@ MCC_MNC_TO_PLMNID(instance_p->mcc, instance_p->mnc, instance_p->mnc_digit_length
...
@@ -1299,60 +1297,63 @@ MCC_MNC_TO_PLMNID(instance_p->mcc, instance_p->mnc, instance_p->mnc_digit_length
NR_FIVEGS_TAC_ID_TO_BIT_STRING
(
instance_p
->
tac
,
servedCellMember
->
servedNRCellInfo
.
fiveGS_TAC
);
NR_FIVEGS_TAC_ID_TO_BIT_STRING
(
instance_p
->
tac
,
servedCellMember
->
servedNRCellInfo
.
fiveGS_TAC
);
X2AP_INFO
(
"TAC: %d -> %02x%02x%02x
\n
"
,
instance_p
->
tac
,
X2AP_INFO
(
"TAC: %d -> %02x%02x%02x
\n
"
,
instance_p
->
tac
,
servedCellMember
->
servedNRCellInfo
.
fiveGS_TAC
->
buf
[
0
],
servedCellMember
->
servedNRCellInfo
.
fiveGS_TAC
->
buf
[
0
],
servedCellMember
->
servedNRCellInfo
.
fiveGS_TAC
->
buf
[
1
],
servedCellMember
->
servedNRCellInfo
.
fiveGS_TAC
->
buf
[
1
],
servedCellMember
->
servedNRCellInfo
.
fiveGS_TAC
->
buf
[
2
]);
servedCellMember
->
servedNRCellInfo
.
fiveGS_TAC
->
buf
[
2
]);
plmn
=
(
X2AP_PLMN_Identity_t
*
)
calloc
(
1
,
sizeof
(
X2AP_PLMN_Identity_t
));
plmn
=
(
X2AP_PLMN_Identity_t
*
)
calloc
(
1
,
sizeof
(
X2AP_PLMN_Identity_t
));
{
{
MCC_MNC_TO_PLMNID
(
instance_p
->
mcc
,
instance_p
->
mnc
,
instance_p
->
mnc_digit_length
,
plmn
);
MCC_MNC_TO_PLMNID
(
instance_p
->
mcc
,
instance_p
->
mnc
,
instance_p
->
mnc_digit_length
,
plmn
);
ASN_SEQUENCE_ADD
(
&
servedCellMember
->
servedNRCellInfo
.
broadcastPLMNs
.
list
,
plmn
);
ASN_SEQUENCE_ADD
(
&
servedCellMember
->
servedNRCellInfo
.
broadcastPLMNs
.
list
,
plmn
);
}
}
if
(
instance_p
->
frame_type
[
i
]
==
TDD
)
{
if
(
instance_p
->
frame_type
[
i
]
==
TDD
)
{
X2AP_FreqBandNrItem_t
*
freq_band
;
X2AP_FreqBandNrItem_t
*
freq_band
;
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
present
=
X2AP_ServedNRCell_Information__nrModeInfo_PR_tdd
;
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
present
=
X2AP_ServedNRCell_Information__nrModeInfo_PR_tdd
;
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nRFreqInfo
.
nRARFCN
=
0
;
//
instance_p->tdd_nRARFCN[i];
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nRFreqInfo
.
nRARFCN
=
instance_p
->
tdd_nRARFCN
[
i
];
/* addition of Frequency Band List */
/* addition of Frequency Band List */
freq_band
=
calloc
(
1
,
sizeof
(
X2AP_FreqBandNrItem_t
));
freq_band
=
calloc
(
1
,
sizeof
(
X2AP_FreqBandNrItem_t
));
if
(
freq_band
==
NULL
)
if
(
freq_band
==
NULL
)
exit
(
1
);
exit
(
1
);
freq_band
->
freqBandIndicatorNr
=
instance_p
->
eutra_band
[
0
];
freq_band
->
freqBandIndicatorNr
=
instance_p
->
nr_band
[
i
];
SULFreqBandItem
=
calloc
(
1
,
sizeof
(
X2AP_SupportedSULFreqBandItem_t
));
SULFreqBandItem
->
freqBandIndicatorNr
=
80
;
/* TODO: put correct value */
ASN_SEQUENCE_ADD
(
&
freq_band
->
supportedSULBandList
.
list
,
SULFreqBandItem
);
ASN_SEQUENCE_ADD
(
&
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nRFreqInfo
.
freqBandListNr
,
freq_band
);
ASN_SEQUENCE_ADD
(
&
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nRFreqInfo
.
freqBandListNr
,
freq_band
);
switch
(
instance_p
->
N_RB_DL
[
i
])
{
switch
(
instance_p
->
N_RB_DL
[
i
])
{
case
50
:
case
32
:
//This is not correct. Just to be able to test X2 only using an eNB instead of gNB
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nR_TxBW
.
nRNRB
=
X2AP_NRNRB_nrb32
;
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nR_TxBW
.
nRNRB
=
X2AP_NRNRB_nrb51
;
break
;
break
;
case
66
:
case
93
:
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nR_TxBW
.
nRNRB
=
X2AP_NRNRB_nrb66
;
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nR_TxBW
.
nRNRB
=
X2AP_NRNRB_nrb93
;
break
;
break
;
case
93
:
case
106
:
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nR_TxBW
.
nRNRB
=
X2AP_NRNRB_nrb93
;
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nR_TxBW
.
nRNRB
=
X2AP_NRNRB_nrb106
;
break
;
break
;
case
106
:
case
121
:
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nR_TxBW
.
nRNRB
=
X2AP_NRNRB_nrb106
;
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nR_TxBW
.
nRNRB
=
X2AP_NRNRB_nrb121
;
break
;
break
;
case
121
:
/*More cases to be added */
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nR_TxBW
.
nRNRB
=
X2AP_NRNRB_nrb121
;
default:
break
;
AssertFatal
(
0
,
"Failed: Check value for N_RB_DL/N_RB_UL"
);
case
217
:
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nR_TxBW
.
nRNRB
=
X2AP_NRNRB_nrb217
;
break
;
case
273
:
servedCellMember
->
servedNRCellInfo
.
nrModeInfo
.
choice
.
tdd
.
nR_TxBW
.
nRNRB
=
X2AP_NRNRB_nrb273
;
break
;
/*More cases to be added */
default:
AssertFatal
(
0
,
"Failed: Check value for N_RB_DL/N_RB_UL"
);
break
;
break
;
}
}
}
}
else
{
else
{
AssertFatal
(
0
,
"ENDC_X2Setuprequest not supported for FDD!"
);
AssertFatal
(
0
,
"ENDC_X2Setuprequest not supported for FDD!"
);
}
}
/*Don't know where to extract the value of measurementTimingConfiguration from. Set it to 0 for now */
/*Don't know where to extract the value of measurementTimingConfiguration from. Set it to 0 for now */
INT8_TO_OCTET_STRING
(
0
,
&
servedCellMember
->
servedNRCellInfo
.
measurementTimingConfiguration
);
INT8_TO_OCTET_STRING
(
0
,
&
servedCellMember
->
servedNRCellInfo
.
measurementTimingConfiguration
);
}
}
ASN_SEQUENCE_ADD
(
&
ie_GNB_ENDC
->
value
.
choice
.
ServedNRcellsENDCX2ManagementList
.
list
,
servedCellMember
);
ASN_SEQUENCE_ADD
(
&
ie_GNB_ENDC
->
value
.
choice
.
ServedNRcellsENDCX2ManagementList
.
list
,
servedCellMember
);
}
}
}
}
ASN_SEQUENCE_ADD
(
&
ie
->
value
.
choice
.
InitiatingNodeType_EndcX2Setup
.
choice
.
init_en_gNB
.
list
,
ie_GNB_ENDC
);
ASN_SEQUENCE_ADD
(
&
ie
->
value
.
choice
.
InitiatingNodeType_EndcX2Setup
.
choice
.
init_en_gNB
.
list
,
ie_GNB_ENDC
);
...
...
targets/RT/USER/lte-ru.c
View file @
83bb2ba9
...
@@ -2017,6 +2017,7 @@ void *ru_thread_synch(void *arg) {
...
@@ -2017,6 +2017,7 @@ void *ru_thread_synch(void *arg) {
#if defined(PRE_SCD_THREAD)
#if defined(PRE_SCD_THREAD)
void
*
pre_scd_thread
(
void
*
param
)
{
void
*
pre_scd_thread
(
void
*
param
)
{
void
rlc_tick
(
int
,
int
);
static
int
eNB_pre_scd_status
;
static
int
eNB_pre_scd_status
;
protocol_ctxt_t
ctxt
;
protocol_ctxt_t
ctxt
;
int
frame
;
int
frame
;
...
@@ -2051,6 +2052,7 @@ void *pre_scd_thread( void *param ) {
...
@@ -2051,6 +2052,7 @@ void *pre_scd_thread( void *param ) {
AssertFatal
((
ret
=
pthread_mutex_unlock
(
&
ru
->
proc
.
mutex_pre_scd
))
==
0
,
"mutex_unlock returns %d
\n
"
,
ret
);
AssertFatal
((
ret
=
pthread_mutex_unlock
(
&
ru
->
proc
.
mutex_pre_scd
))
==
0
,
"mutex_unlock returns %d
\n
"
,
ret
);
PROTOCOL_CTXT_SET_BY_MODULE_ID
(
&
ctxt
,
Mod_id
,
ENB_FLAG_YES
,
PROTOCOL_CTXT_SET_BY_MODULE_ID
(
&
ctxt
,
Mod_id
,
ENB_FLAG_YES
,
NOT_A_RNTI
,
frame
,
subframe
,
Mod_id
);
NOT_A_RNTI
,
frame
,
subframe
,
Mod_id
);
rlc_tick
(
frame
,
subframe
);
pdcp_run
(
&
ctxt
);
pdcp_run
(
&
ctxt
);
for
(
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
for
(
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
...
...
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