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
littleBu
OpenXG-RAN
Commits
5130eb4c
Commit
5130eb4c
authored
Jul 21, 2023
by
Robert Schmidt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Move MIB to MAC
- change type because MIB_PDU_t is 4G type - simplified schedule_nr_mib()
parent
720d46cf
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
45 additions
and
57 deletions
+45
-57
doc/SW_archi.md
doc/SW_archi.md
+1
-1
openair1/SIMULATION/NR_PHY/ulsim.c
openair1/SIMULATION/NR_PHY/ulsim.c
+0
-1
openair2/GNB_APP/gnb_config.c
openair2/GNB_APP/gnb_config.c
+8
-6
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
+1
-1
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
+1
-1
openair2/LAYER2/NR_MAC_gNB/config.c
openair2/LAYER2/NR_MAC_gNB/config.c
+0
-12
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c
+17
-9
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
+0
-1
openair2/LAYER2/NR_MAC_gNB/main.c
openair2/LAYER2/NR_MAC_gNB/main.c
+1
-0
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
+1
-1
openair2/RRC/NR/L2_nr_interface.c
openair2/RRC/NR/L2_nr_interface.c
+1
-7
openair2/RRC/NR/nr_rrc_defs.h
openair2/RRC/NR/nr_rrc_defs.h
+0
-1
openair2/RRC/NR/rrc_gNB.c
openair2/RRC/NR/rrc_gNB.c
+14
-16
No files found.
doc/SW_archi.md
View file @
5130eb4c
...
...
@@ -211,7 +211,7 @@ The scheduler also calls "run_pdcp()", as this is not a autonomous thread, it ne
After calling run_pdcp, it updates "rlc" time data but it doesn't actually process rlc
it sends a iiti message to activate the thread for RRC, the answer will be asynchronous in ????
Calls schedule_nr_mib() that
calls mac_rrc_nr_data_req() to fill MIB,
Calls schedule_nr_mib() that
fills MIB,
Calls schedule_nr_prach() which schedules the (fixed) PRACH region one frame in
advance.
...
...
openair1/SIMULATION/NR_PHY/ulsim.c
View file @
5130eb4c
...
...
@@ -652,7 +652,6 @@ int main(int argc, char **argv)
gNB
->
if_inst
->
NR_PHY_config_req
=
nr_phy_config_request
;
// common configuration
nr_mac_config_scc
(
RC
.
nrmac
[
0
],
conf
.
pdsch_AntennaPorts
,
n_tx
,
0
,
6
);
nr_mac_config_mib
(
RC
.
nrmac
[
0
],
mib
);
// UE dedicated configuration
nr_mac_add_test_ue
(
RC
.
nrmac
[
0
],
secondaryCellGroup
->
spCellConfig
->
reconfigurationWithSync
->
newUE_Identity
,
secondaryCellGroup
);
frame_parms
->
nb_antennas_tx
=
1
;
...
...
openair2/GNB_APP/gnb_config.c
View file @
5130eb4c
...
...
@@ -1985,9 +1985,10 @@ int RC_config_trigger_F1Setup()
req
->
cell
[
0
].
info
.
plmn
.
mnc_digit_length
,
req
->
cell
[
0
].
info
.
nr_cellid
);
gNB_RRC_INST
*
rrc
=
RC
.
nrrrc
[
0
];
DevAssert
(
rrc
);
const
NR_ServingCellConfigCommon_t
*
scc
=
RC
.
nrmac
[
0
]
->
common_channels
[
0
].
ServingCellConfigCommon
;
gNB_MAC_INST
*
mac
=
RC
.
nrmac
[
0
];
DevAssert
(
mac
);
const
NR_ServingCellConfigCommon_t
*
scc
=
mac
->
common_channels
[
0
].
ServingCellConfigCommon
;
DevAssert
(
scc
!=
NULL
);
req
->
cell
[
0
].
info
.
nr_pci
=
*
scc
->
physCellId
;
LOG_W
(
GNB_APP
,
"no slices transported via F1 Setup Request!
\n
"
);
...
...
@@ -2017,16 +2018,18 @@ int RC_config_trigger_F1Setup()
req
->
cell
[
0
].
info
.
measurement_timing_information
=
"0"
;
DevAssert
(
rrc
->
carrier
.
mib
!=
NULL
);
DevAssert
(
mac
->
common_channels
[
0
]
.
mib
!=
NULL
);
int
buf_len
=
3
;
// this is what we assume in monolithic
req
->
cell
[
0
].
sys_info
=
calloc
(
1
,
sizeof
(
*
req
->
cell
[
0
].
sys_info
));
AssertFatal
(
req
->
cell
[
0
].
sys_info
!=
NULL
,
"out of memory
\n
"
);
f1ap_gnb_du_system_info_t
*
sys_info
=
req
->
cell
[
0
].
sys_info
;
sys_info
->
mib
=
calloc
(
buf_len
,
sizeof
(
*
sys_info
->
mib
));
DevAssert
(
sys_info
->
mib
!=
NULL
);
sys_info
->
mib_length
=
encode_MIB_NR
(
rrc
->
carrier
.
mib
,
0
,
sys_info
->
mib
,
buf_len
);
sys_info
->
mib_length
=
encode_MIB_NR
(
mac
->
common_channels
[
0
]
.
mib
,
0
,
sys_info
->
mib
,
buf_len
);
DevAssert
(
sys_info
->
mib_length
==
buf_len
);
gNB_RRC_INST
*
rrc
=
RC
.
nrrrc
[
0
];
DevAssert
(
rrc
);
NR_BCCH_DL_SCH_Message_t
*
bcch_message
=
NULL
;
asn_codec_ctx_t
st
=
{
100
*
1000
};
asn_dec_rval_t
dec_rval
=
uper_decode_complete
(
&
st
,
...
...
@@ -2051,7 +2054,6 @@ int RC_config_trigger_F1Setup()
if
(
LOG_DEBUGFLAG
(
DEBUG_ASN1
))
xer_fprint
(
stdout
,
&
asn_DEF_NR_SIB1
,
(
void
*
)
bcch_message
->
message
.
choice
.
c1
->
choice
.
systemInformationBlockType1
);
gNB_MAC_INST
*
mac
=
RC
.
nrmac
[
0
];
mac
->
mac_rrc
.
f1_setup_request
(
req
);
mac
->
f1_config
.
setup_req
=
req
;
...
...
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.c
View file @
5130eb4c
...
...
@@ -4102,7 +4102,7 @@ uint32_t get_Y(const NR_SearchSpace_t *ss, int slot, rnti_t rnti) {
void
get_type0_PDCCH_CSS_config_parameters
(
NR_Type0_PDCCH_CSS_config_t
*
type0_PDCCH_CSS_config
,
frame_t
frameP
,
NR_MIB_t
*
mib
,
const
NR_MIB_t
*
mib
,
uint8_t
num_slot_per_frame
,
uint8_t
ssb_subcarrier_offset
,
uint16_t
ssb_start_symbol
,
...
...
openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
View file @
5130eb4c
...
...
@@ -207,7 +207,7 @@ uint32_t nr_compute_tbslbrm(uint16_t table,
void
get_type0_PDCCH_CSS_config_parameters
(
NR_Type0_PDCCH_CSS_config_t
*
type0_PDCCH_CSS_config
,
frame_t
frameP
,
NR_MIB_t
*
mib
,
const
NR_MIB_t
*
mib
,
uint8_t
num_slot_per_frame
,
uint8_t
ssb_subcarrier_offset
,
uint16_t
ssb_start_symbol
,
...
...
openair2/LAYER2/NR_MAC_gNB/config.c
View file @
5130eb4c
...
...
@@ -537,18 +537,6 @@ void nr_mac_config_scc(gNB_MAC_INST *nrmac,
NR_SCHED_UNLOCK
(
&
nrmac
->
sched_lock
);
}
void
nr_mac_config_mib
(
gNB_MAC_INST
*
nrmac
,
NR_BCCH_BCH_Message_t
*
mib
)
{
DevAssert
(
nrmac
!=
NULL
);
DevAssert
(
mib
!=
NULL
);
NR_SCHED_LOCK
(
&
nrmac
->
sched_lock
);
NR_COMMON_channels_t
*
cc
=
&
nrmac
->
common_channels
[
0
];
AssertFatal
(
cc
->
mib
==
NULL
,
"logic bug: updated MIB multiple times
\n
"
);
cc
->
mib
=
mib
;
NR_SCHED_UNLOCK
(
&
nrmac
->
sched_lock
);
}
void
nr_mac_config_sib1
(
gNB_MAC_INST
*
nrmac
,
NR_BCCH_DL_SCH_Message_t
*
sib1
)
{
DevAssert
(
nrmac
!=
NULL
);
...
...
openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c
View file @
5130eb4c
...
...
@@ -105,19 +105,26 @@ static void fill_ssb_vrb_map(NR_COMMON_channels_t *cc, int rbStart, int ssb_subc
vrb_map
[
rbStart
+
rb
]
=
SL_to_bitmap
(
symStart
%
NR_SYMBOLS_PER_SLOT
,
4
);
}
static
int
encode_mib
(
NR_BCCH_BCH_Message_t
*
mib
,
frame_t
frame
,
uint8_t
*
buffer
,
int
buf_size
)
{
int
encode_size
=
3
;
AssertFatal
(
buf_size
>=
encode_size
,
"buffer of size %d too small, need 3 bytes
\n
"
,
buf_size
);
int
encoded
=
encode_MIB_NR
(
mib
,
frame
,
buffer
,
encode_size
);
DevAssert
(
encoded
==
encode_size
);
return
encode_size
;
}
void
schedule_nr_mib
(
module_id_t
module_idP
,
frame_t
frameP
,
sub_frame_t
slotP
,
nfapi_nr_dl_tti_request_t
*
DL_req
)
{
gNB_MAC_INST
*
gNB
=
RC
.
nrmac
[
module_idP
];
/* already mutex protected: held in gNB_dlsch_ulsch_scheduler() */
NR_COMMON_channels_t
*
cc
;
nfapi_nr_dl_tti_request_body_t
*
dl_req
;
NR_MIB_t
*
mib
=
RC
.
nrrrc
[
module_idP
]
->
carrier
.
mib
->
message
.
choice
.
mib
;
uint8_t
num_tdd_period
,
num_ssb
;
int
mib_sdu_length
;
int
CC_id
;
for
(
CC_id
=
0
;
CC_id
<
MAX_NUM_CCs
;
CC_id
++
)
{
cc
=
&
gNB
->
common_channels
[
CC_id
];
NR_COMMON_channels_t
*
cc
=
&
gNB
->
common_channels
[
CC_id
];
const
NR_MIB_t
*
mib
=
cc
->
mib
->
message
.
choice
.
mib
;
NR_ServingCellConfigCommon_t
*
scc
=
cc
->
ServingCellConfigCommon
;
const
int
slots_per_frame
=
nr_slots_per_frame
[
*
scc
->
ssbSubcarrierSpacing
];
dl_req
=
&
DL_req
->
dl_tti_request_body
;
...
...
@@ -125,8 +132,7 @@ void schedule_nr_mib(module_id_t module_idP, frame_t frameP, sub_frame_t slotP,
// get MIB every 8 frames
if
(((
slotP
==
0
)
&&
(
frameP
&
7
)
==
0
)
||
gNB
->
first_MIB
)
{
mib_sdu_length
=
mac_rrc_nr_data_req
(
module_idP
,
CC_id
,
frameP
,
MIBCH
,
0
,
1
,
&
cc
->
MIB_pdu
.
payload
[
0
]);
int
mib_sdu_length
=
encode_mib
(
cc
->
mib
,
frameP
,
cc
->
MIB_pdu
,
sizeof
(
cc
->
MIB_pdu
));
// flag to avoid sending an empty MIB in the first frames of execution since gNB doesn't get at the beginning in frame 0 slot 0
gNB
->
first_MIB
=
false
;
...
...
@@ -139,6 +145,8 @@ void schedule_nr_mib(module_id_t module_idP, frame_t frameP, sub_frame_t slotP,
mib_sdu_length
);
}
uint32_t
mib_pdu
=
(
*
(
uint32_t
*
)
cc
->
MIB_pdu
)
&
((
1
<<
24
)
-
1
);
int8_t
ssb_period
=
*
scc
->
ssb_periodicityServingCell
;
uint8_t
ssb_frame_periodicity
=
1
;
// every how many frames SSB are generated
...
...
@@ -175,7 +183,7 @@ void schedule_nr_mib(module_id_t module_idP, frame_t frameP, sub_frame_t slotP,
// if start symbol is in current slot, schedule current SSB, fill VRB map and call get_type0_PDCCH_CSS_config_parameters
if
((
ssb_start_symbol
/
14
)
==
rel_slot
){
const
int
prb_offset
=
offset_pointa
>>
scs
;
schedule_ssb
(
frameP
,
slotP
,
scc
,
dl_req
,
i_ssb
,
ssbSubcarrierOffset
,
offset_pointa
,
(
*
(
uint32_t
*
)
cc
->
MIB_pdu
.
payload
)
&
((
1
<<
24
)
-
1
)
);
schedule_ssb
(
frameP
,
slotP
,
scc
,
dl_req
,
i_ssb
,
ssbSubcarrierOffset
,
offset_pointa
,
mib_pdu
);
fill_ssb_vrb_map
(
cc
,
prb_offset
,
ssbSubcarrierOffset
,
ssb_start_symbol
,
CC_id
);
if
(
get_softmodem_params
()
->
sa
==
1
)
{
get_type0_PDCCH_CSS_config_parameters
(
&
gNB
->
type0_PDCCH_CSS_config
[
i_ssb
],
...
...
@@ -204,7 +212,7 @@ void schedule_nr_mib(module_id_t module_idP, frame_t frameP, sub_frame_t slotP,
// if start symbol is in current slot, schedule current SSB, fill VRB map and call get_type0_PDCCH_CSS_config_parameters
if
((
ssb_start_symbol
/
14
)
==
rel_slot
){
const
int
prb_offset
=
offset_pointa
>>
scs
;
schedule_ssb
(
frameP
,
slotP
,
scc
,
dl_req
,
i_ssb
,
ssbSubcarrierOffset
,
offset_pointa
,
(
*
(
uint32_t
*
)
cc
->
MIB_pdu
.
payload
)
&
((
1
<<
24
)
-
1
)
);
schedule_ssb
(
frameP
,
slotP
,
scc
,
dl_req
,
i_ssb
,
ssbSubcarrierOffset
,
offset_pointa
,
mib_pdu
);
fill_ssb_vrb_map
(
cc
,
prb_offset
,
ssbSubcarrierOffset
,
ssb_start_symbol
,
CC_id
);
if
(
get_softmodem_params
()
->
sa
==
1
)
{
get_type0_PDCCH_CSS_config_parameters
(
&
gNB
->
type0_PDCCH_CSS_config
[
i_ssb
],
...
...
@@ -234,7 +242,7 @@ void schedule_nr_mib(module_id_t module_idP, frame_t frameP, sub_frame_t slotP,
// if start symbol is in current slot, schedule current SSB, fill VRB map and call get_type0_PDCCH_CSS_config_parameters
if
((
ssb_start_symbol
/
14
)
==
rel_slot
){
const
int
prb_offset
=
offset_pointa
>>
(
scs
-
2
);
// reference 60kHz
schedule_ssb
(
frameP
,
slotP
,
scc
,
dl_req
,
i_ssb
,
ssbSubcarrierOffset
,
offset_pointa
,
(
*
(
uint32_t
*
)
cc
->
MIB_pdu
.
payload
)
&
((
1
<<
24
)
-
1
)
);
schedule_ssb
(
frameP
,
slotP
,
scc
,
dl_req
,
i_ssb
,
ssbSubcarrierOffset
,
offset_pointa
,
mib_pdu
);
fill_ssb_vrb_map
(
cc
,
prb_offset
,
ssbSubcarrierOffset
>>
(
scs
-
2
),
ssb_start_symbol
,
CC_id
);
const
NR_TDD_UL_DL_Pattern_t
*
tdd
=
&
scc
->
tdd_UL_DL_ConfigurationCommon
->
pattern1
;
const
int
n_slots_frame
=
nr_slots_per_frame
[
*
scc
->
ssbSubcarrierSpacing
];
...
...
openair2/LAYER2/NR_MAC_gNB/mac_proto.h
View file @
5130eb4c
...
...
@@ -50,7 +50,6 @@ void nr_mac_config_scc(gNB_MAC_INST *nrmac,
int
pusch_AntennaPorts
,
int
sib1_tda
,
int
minRXTXTIMEpdsch
);
void
nr_mac_config_mib
(
gNB_MAC_INST
*
nrmac
,
NR_BCCH_BCH_Message_t
*
mib
);
void
nr_mac_config_sib1
(
gNB_MAC_INST
*
nrmac
,
NR_BCCH_DL_SCH_Message_t
*
sib1
);
bool
nr_mac_add_test_ue
(
gNB_MAC_INST
*
nrmac
,
uint32_t
rnti
,
NR_CellGroupConfig_t
*
CellGroup
);
bool
nr_mac_prepare_ra_ue
(
gNB_MAC_INST
*
nrmac
,
uint32_t
rnti
,
NR_CellGroupConfig_t
*
CellGroup
);
...
...
openair2/LAYER2/NR_MAC_gNB/main.c
View file @
5130eb4c
...
...
@@ -245,6 +245,7 @@ void mac_top_init_gNB(ngran_node_t node_type, NR_ServingCellConfigCommon_t *scc,
RC
.
nrmac
[
i
]
->
common_channels
[
0
].
pre_ServingCellConfig
=
scd
;
RC
.
nrmac
[
i
]
->
first_MIB
=
true
;
RC
.
nrmac
[
i
]
->
common_channels
[
0
].
mib
=
get_new_MIB_NR
(
scc
);
RC
.
nrmac
[
i
]
->
cset0_bwp_start
=
0
;
RC
.
nrmac
[
i
]
->
cset0_bwp_size
=
0
;
...
...
openair2/LAYER2/NR_MAC_gNB/nr_mac_gNB.h
View file @
5130eb4c
...
...
@@ -227,7 +227,7 @@ typedef struct {
NR_ARFCN_ValueEUTRA_t
ul_CarrierFreq
;
long
ul_Bandwidth
;
/// Outgoing MIB PDU for PHY
MIB_PDU
MIB_pdu
;
uint8_t
MIB_pdu
[
3
]
;
/// Outgoing BCCH pdu for PHY
BCCH_PDU
BCCH_pdu
;
/// Outgoing BCCH DCI allocation
...
...
openair2/RRC/NR/L2_nr_interface.c
View file @
5130eb4c
...
...
@@ -74,13 +74,7 @@ uint16_t mac_rrc_nr_data_req(const module_id_t Mod_idP,
// MIBCH
if
((
Srb_id
&
RAB_OFFSET
)
==
MIBCH
)
{
int
encode_size
=
3
;
rrc_gNB_carrier_data_t
*
carrier
=
&
RC
.
nrrrc
[
Mod_idP
]
->
carrier
;
int
encoded
=
encode_MIB_NR
(
carrier
->
mib
,
frameP
,
buffer_pP
,
encode_size
);
DevAssert
(
encoded
==
encode_size
);
LOG_D
(
NR_RRC
,
"MIB PDU buffer_pP[0]=%x , buffer_pP[1]=%x, buffer_pP[2]=%x
\n
"
,
buffer_pP
[
0
],
buffer_pP
[
1
],
buffer_pP
[
2
]);
return
encode_size
;
DevAssert
(
false
);
}
if
((
Srb_id
&
RAB_OFFSET
)
==
BCCH
)
{
...
...
openair2/RRC/NR/nr_rrc_defs.h
View file @
5130eb4c
...
...
@@ -331,7 +331,6 @@ typedef struct {
uint8_t
*
SIB23
;
uint8_t
sizeof_SIB23
;
NR_BCCH_BCH_Message_t
*
mib
;
NR_SIB1_t
*
siblock1_DU
;
NR_SIB1_t
*
sib1
;
NR_SIB2_t
*
sib2
;
...
...
openair2/RRC/NR/rrc_gNB.c
View file @
5130eb4c
...
...
@@ -259,11 +259,6 @@ static void init_NR_SI(gNB_RRC_INST *rrc, gNB_RrcConfigurationReq *configuration
{
const
NR_ServingCellConfigCommon_t
*
scc
=
RC
.
nrmac
[
0
]
->
common_channels
[
0
].
ServingCellConfigCommon
;
LOG_D
(
RRC
,
"%s()
\n\n\n\n
"
,
__FUNCTION__
);
if
(
NODE_IS_DU
(
rrc
->
node_type
)
||
NODE_IS_MONOLITHIC
(
rrc
->
node_type
))
{
rrc
->
carrier
.
mib
=
get_new_MIB_NR
(
scc
);
}
if
((
get_softmodem_params
()
->
sa
)
&&
(
(
NODE_IS_DU
(
rrc
->
node_type
)
||
NODE_IS_MONOLITHIC
(
rrc
->
node_type
))))
{
NR_BCCH_DL_SCH_Message_t
*
sib1
=
get_SIB1_NR
(
configuration
,
scc
);
//xer_fprint(stdout, &asn_DEF_NR_BCCH_DL_SCH_Message, sib1);
...
...
@@ -292,7 +287,6 @@ static void init_NR_SI(gNB_RRC_INST *rrc, gNB_RrcConfigurationReq *configuration
rrc
->
configuration
.
pusch_AntennaPorts
,
rrc
->
configuration
.
sib1_tda
,
rrc
->
configuration
.
minRXTXTIME
);
nr_mac_config_mib
(
RC
.
nrmac
[
rrc
->
module_id
],
rrc
->
carrier
.
mib
);
}
if
(
get_softmodem_params
()
->
phy_test
>
0
||
get_softmodem_params
()
->
do_ra
>
0
)
{
...
...
@@ -1957,6 +1951,20 @@ static void rrc_gNB_process_f1_setup_req(f1ap_setup_req_t *req)
return
;
}
const
f1ap_gnb_du_system_info_t
*
sys_info
=
req
->
cell
[
0
].
sys_info
;
/* do we need the MIB? */
NR_BCCH_BCH_Message_t
*
mib
=
NULL
;
asn_dec_rval_t
dec_rval
=
uper_decode_complete
(
NULL
,
&
asn_DEF_NR_BCCH_BCH_Message
,
(
void
**
)
&
mib
,
sys_info
->
mib
,
sys_info
->
mib_length
);
if
(
dec_rval
.
code
!=
RC_OK
)
{
LOG_E
(
RRC
,
"Failed to decode NR_BCCH_BCH_MESSAGE (%zu bits) of DU, rejecting DU
\n
"
,
dec_rval
.
consumed
);
rrc
->
mac_rrc
.
f1_setup_failure
(
&
fail
);
ASN_STRUCT_FREE
(
asn_DEF_NR_BCCH_BCH_Message
,
mib
);
return
;
}
ASN_STRUCT_FREE
(
asn_DEF_NR_BCCH_BCH_Message
,
mib
);
// we accept the DU
rrc
->
du
=
calloc
(
1
,
sizeof
(
*
rrc
->
du
));
AssertFatal
(
rrc
->
du
!=
NULL
,
"out of memory
\n
"
);
...
...
@@ -1968,16 +1976,6 @@ static void rrc_gNB_process_f1_setup_req(f1ap_setup_req_t *req)
AssertFatal
(
rrc
->
du
->
setup_req
!=
NULL
,
"out of memory
\n
"
);
*
rrc
->
du
->
setup_req
=
*
req
;
const
f1ap_gnb_du_system_info_t
*
sys_info
=
req
->
cell
[
0
].
sys_info
;
if
(
rrc
->
carrier
.
mib
!=
NULL
)
{
LOG_E
(
NR_RRC
,
"CU MIB is already initialized: double F1 setup request?
\n
"
);
}
else
{
asn_dec_rval_t
dec_rval
=
uper_decode_complete
(
NULL
,
&
asn_DEF_NR_BCCH_BCH_Message
,
(
void
**
)
&
rrc
->
carrier
.
mib
,
sys_info
->
mib
,
sys_info
->
mib_length
);
AssertFatal
(
dec_rval
.
code
==
RC_OK
,
"Failed to decode NR_BCCH_BCH_MESSAGE (%zu bits)
\n
"
,
dec_rval
.
consumed
);
}
if
(
rrc
->
carrier
.
sib1
!=
NULL
)
{
LOG_E
(
NR_RRC
,
"CU SIB1 is already initiaized: double F1 setup request?
\n
"
);
}
else
{
...
...
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