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
Michael Black
OpenXG-RAN
Commits
b2bdf7eb
Commit
b2bdf7eb
authored
Sep 11, 2019
by
Raymond Knopp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
temporary commit
parent
adf76a5f
Changes
9
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
342 additions
and
61 deletions
+342
-61
cmake_targets/CMakeLists.txt
cmake_targets/CMakeLists.txt
+2
-1
executables/nr-gnb.c
executables/nr-gnb.c
+8
-5
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_cnProc.h
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_cnProc.h
+10
-4
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
+1
-1
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_mPass.h
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_mPass.h
+257
-46
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_types.h
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_types.h
+1
-0
openair2/RRC/NR/nr_rrc_defs.h
openair2/RRC/NR/nr_rrc_defs.h
+4
-0
openair2/RRC/NR/nr_rrc_proto.h
openair2/RRC/NR/nr_rrc_proto.h
+32
-1
openair2/RRC/NR/rrc_gNB_nsa.c
openair2/RRC/NR/rrc_gNB_nsa.c
+27
-3
No files found.
cmake_targets/CMakeLists.txt
View file @
b2bdf7eb
...
@@ -185,7 +185,7 @@ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath -Wl,${CMAKE_CU
...
@@ -185,7 +185,7 @@ set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath -Wl,${CMAKE_CU
# set a flag for changes in the source code
# set a flag for changes in the source code
# these changes are related to hardcoded path to include .h files
# these changes are related to hardcoded path to include .h files
set
(
CMAKE_C_FLAGS_DEBUG
"
${
CMAKE_C_FLAGS
}
-g -DMALLOC_CHECK_=3"
)
set
(
CMAKE_C_FLAGS_DEBUG
"
${
CMAKE_C_FLAGS
}
-g -DMALLOC_CHECK_=3"
)
set
(
CMAKE_C_FLAGS_RELWITHDEBINFO
"
${
CMAKE_C_FLAGS
}
-g -DMALLOC_CHECK_=3 -O
2
"
)
set
(
CMAKE_C_FLAGS_RELWITHDEBINFO
"
${
CMAKE_C_FLAGS
}
-g -DMALLOC_CHECK_=3 -O
3
"
)
set
(
GIT_BRANCH
"UNKNOWN"
)
set
(
GIT_BRANCH
"UNKNOWN"
)
...
@@ -1590,6 +1590,7 @@ set(L2_NR_SRC
...
@@ -1590,6 +1590,7 @@ set(L2_NR_SRC
${
NR_RRC_DIR
}
/L2_nr_interface.c
${
NR_RRC_DIR
}
/L2_nr_interface.c
${
NR_RRC_DIR
}
/nr_rrc_config.c
${
NR_RRC_DIR
}
/nr_rrc_config.c
${
NR_RRC_DIR
}
/rrc_gNB_nsa.c
${
NR_RRC_DIR
}
/rrc_gNB_nsa.c
${
NR_RRC_DIR
}
/rrc_gNB_internode.c
${
NR_RRC_DIR
}
/rrc_gNB_reconfig.c
${
NR_RRC_DIR
}
/rrc_gNB_reconfig.c
${
NR_RRC_DIR
}
/rrc_gNB_UE_context.c
${
NR_RRC_DIR
}
/rrc_gNB_UE_context.c
)
)
...
...
executables/nr-gnb.c
View file @
b2bdf7eb
...
@@ -886,15 +886,18 @@ void init_gNB(int single_thread_flag,int wait_for_sync) {
...
@@ -886,15 +886,18 @@ void init_gNB(int single_thread_flag,int wait_for_sync) {
PHY_VARS_gNB
*
gNB
;
PHY_VARS_gNB
*
gNB
;
LOG_I
(
PHY
,
"[nr-softmodem.c] gNB (%p) structure about to allocated RC.nb_nr_L1_inst:%d
\n
"
,
RC
.
gNB
,
RC
.
nb_nr_L1_inst
);
LOG_I
(
PHY
,
"[nr-softmodem.c] gNB (%p) structure about to allocated RC.nb_nr_L1_inst:%d
\n
"
,
RC
.
gNB
,
RC
.
nb_nr_L1_inst
);
if
(
RC
.
gNB
==
NULL
)
RC
.
gNB
=
(
PHY_VARS_gNB
**
)
malloc
((
1
+
RC
.
nb_nr_L1_inst
)
*
sizeof
(
PHY_VARS_gNB
*
));
if
(
RC
.
gNB
==
NULL
)
{
RC
.
gNB
=
(
PHY_VARS_gNB
**
)
malloc
((
1
+
RC
.
nb_nr_L1_inst
)
*
sizeof
(
PHY_VARS_gNB
*
));
LOG_I
(
PHY
,
"gNB L1 structure RC.gNB allocated @ %p
\n
"
,
RC
.
gNB
);
for
(
inst
=
0
;
inst
<
RC
.
nb_nr_L1_inst
;
inst
++
)
{
for
(
inst
=
0
;
inst
<
RC
.
nb_nr_L1_inst
;
inst
++
)
{
if
(
RC
.
gNB
[
inst
]
==
NULL
)
{
RC
.
gNB
[
inst
]
=
(
PHY_VARS_gNB
*
)
malloc
(
sizeof
(
PHY_VARS_gNB
));
RC
.
gNB
[
inst
]
=
(
PHY_VARS_gNB
*
)
malloc
(
sizeof
(
PHY_VARS_gNB
));
memset
((
void
*
)
RC
.
gNB
[
inst
],
0
,
sizeof
(
PHY_VARS_gNB
));
memset
((
void
*
)
RC
.
gNB
[
inst
],
0
,
sizeof
(
PHY_VARS_gNB
));
}
}
}
LOG_I
(
PHY
,
"gNB L1 structure RC.gNB allocated @ %p
\n
"
,
RC
.
gNB
);
for
(
inst
=
0
;
inst
<
RC
.
nb_nr_L1_inst
;
inst
++
)
{
LOG_I
(
PHY
,
"[lte-softmodem.c] gNB structure RC.gNB[%d] allocated @ %p
\n
"
,
inst
,
RC
.
gNB
[
inst
]);
LOG_I
(
PHY
,
"[lte-softmodem.c] gNB structure RC.gNB[%d] allocated @ %p
\n
"
,
inst
,
RC
.
gNB
[
inst
]);
gNB
=
RC
.
gNB
[
inst
];
gNB
=
RC
.
gNB
[
inst
];
gNB
->
abstraction_flag
=
0
;
gNB
->
abstraction_flag
=
0
;
...
...
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_cnProc.h
View file @
b2bdf7eb
...
@@ -87,23 +87,29 @@ static inline void nrLDPC_cnProc_BG2(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf* p_pr
...
@@ -87,23 +87,29 @@ static inline void nrLDPC_cnProc_BG2(t_nrLDPC_lut* p_lut, t_nrLDPC_procBuf* p_pr
// Set of results pointer to correct BN address
// Set of results pointer to correct BN address
p_cnProcBufResBit
=
p_cnProcBufRes
+
(
j
*
bitOffsetInGroup
);
p_cnProcBufResBit
=
p_cnProcBufRes
+
(
j
*
bitOffsetInGroup
);
__m256i
*
pj0
=
&
p_cnProcBuf
[
lut_idxCnProcG3
[
j
][
0
]];
__m256i
*
pj1
=
&
p_cnProcBuf
[
lut_idxCnProcG3
[
j
][
1
]];
// Loop over CNs
// Loop over CNs
for
(
i
=
0
;
i
<
M
;
i
++
)
for
(
i
=
0
;
i
<
M
;
i
++
)
{
{
// Abs and sign of 32 CNs (first BN)
// Abs and sign of 32 CNs (first BN)
ymm0
=
p_cnProcBuf
[
lut_idxCnProcG3
[
j
][
0
]
+
i
];
// ymm0 = p_cnProcBuf[lut_idxCnProcG3[j][0] + i];
ymm0
=
pj0
[
i
];
sgn
=
_mm256_sign_epi8
(
*
p_ones
,
ymm0
);
sgn
=
_mm256_sign_epi8
(
*
p_ones
,
ymm0
);
min
=
_mm256_abs_epi8
(
ymm0
);
min
=
_mm256_abs_epi8
(
ymm0
);
// 32 CNs of second BN
// 32 CNs of second BN
ymm0
=
p_cnProcBuf
[
lut_idxCnProcG3
[
j
][
1
]
+
i
];
// ymm0 = p_cnProcBuf[lut_idxCnProcG3[j][1] + i];
ymm0
=
pj1
[
i
];
min
=
_mm256_min_epu8
(
min
,
_mm256_abs_epi8
(
ymm0
));
min
=
_mm256_min_epu8
(
min
,
_mm256_abs_epi8
(
ymm0
));
sgn
=
_mm256_sign_epi8
(
sgn
,
ymm0
);
sgn
=
_mm256_sign_epi8
(
sgn
,
ymm0
);
// Store result
// Store result
min
=
_mm256_min_epu8
(
min
,
*
p_maxLLR
);
// 128 in epi8 is -127
min
=
_mm256_min_epu8
(
min
,
*
p_maxLLR
);
// 128 in epi8 is -127
*
p_cnProcBufResBit
=
_mm256_sign_epi8
(
min
,
sgn
);
//*p_cnProcBufResBit = _mm256_sign_epi8(min, sgn);
p_cnProcBufResBit
++
;
//p_cnProcBufResBit++;
p_cnProcBufResBit
[
i
]
=
_mm256_sign_epi8
(
min
,
sgn
);
}
}
}
}
}
}
...
...
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
View file @
b2bdf7eb
...
@@ -39,7 +39,7 @@
...
@@ -39,7 +39,7 @@
#include "nrLDPC_bnProc.h"
#include "nrLDPC_bnProc.h"
#define NR_LDPC_ENABLE_PARITY_CHECK
#define NR_LDPC_ENABLE_PARITY_CHECK
//
#define NR_LDPC_PROFILER_DETAIL
#define NR_LDPC_PROFILER_DETAIL
#ifdef NR_LDPC_DEBUG_MODE
#ifdef NR_LDPC_DEBUG_MODE
#include "nrLDPC_tools/nrLDPC_debug.h"
#include "nrLDPC_tools/nrLDPC_debug.h"
...
...
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_mPass.h
View file @
b2bdf7eb
This diff is collapsed.
Click to expand it.
openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_types.h
View file @
b2bdf7eb
...
@@ -48,6 +48,7 @@ typedef struct nrLDPC_lut {
...
@@ -48,6 +48,7 @@ typedef struct nrLDPC_lut {
const
uint32_t
*
llr2CnProcBuf
;
/**< LUT for input LLRs to CN processing buffer */
const
uint32_t
*
llr2CnProcBuf
;
/**< LUT for input LLRs to CN processing buffer */
const
uint8_t
*
numEdgesPerBn
;
/**< LUT with number of edges per BN */
const
uint8_t
*
numEdgesPerBn
;
/**< LUT with number of edges per BN */
const
uint32_t
*
cn2bnProcBuf
;
/**< LUT for transferring CN processing results to BN processing buffer */
const
uint32_t
*
cn2bnProcBuf
;
/**< LUT for transferring CN processing results to BN processing buffer */
const
uint32_t
*
cn2bnProcBuf2
;
/**< LUT for transferring CN processing results to BN processing buffer */
const
uint16_t
*
llr2llrProcBuf
;
/**< LUT for transferring input LLRs to LLR processing buffer */
const
uint16_t
*
llr2llrProcBuf
;
/**< LUT for transferring input LLRs to LLR processing buffer */
}
t_nrLDPC_lut
;
}
t_nrLDPC_lut
;
...
...
openair2/RRC/NR/nr_rrc_defs.h
View file @
b2bdf7eb
...
@@ -377,10 +377,14 @@ typedef struct {
...
@@ -377,10 +377,14 @@ typedef struct {
NR_ServingCellConfigCommon_t
*
servingcellconfigcommon
;
NR_ServingCellConfigCommon_t
*
servingcellconfigcommon
;
NR_RRCReconfiguration_t
*
reconfig
[
MAX_NR_RRC_UE_CONTEXTS
];
NR_RRCReconfiguration_t
*
reconfig
[
MAX_NR_RRC_UE_CONTEXTS
];
NR_RadioBearerConfig_t
*
rb_config
[
MAX_NR_RRC_UE_CONTEXTS
];
NR_CellGroupConfig_t
*
secondaryCellGroup
[
MAX_NR_RRC_UE_CONTEXTS
];
NR_CellGroupConfig_t
*
secondaryCellGroup
[
MAX_NR_RRC_UE_CONTEXTS
];
NR_SRB_INFO
SI
;
NR_SRB_INFO
SI
;
NR_SRB_INFO
Srb0
;
NR_SRB_INFO
Srb0
;
int
initial_csi_index
[
MAX_NR_RRC_UE_CONTEXTS
];
int
n_physical_antenna_ports
;
}
rrc_gNB_carrier_data_t
;
}
rrc_gNB_carrier_data_t
;
//---------------------------------------------------
//---------------------------------------------------
...
...
openair2/RRC/NR/nr_rrc_proto.h
View file @
b2bdf7eb
...
@@ -33,6 +33,11 @@
...
@@ -33,6 +33,11 @@
#include "RRC/NR/nr_rrc_defs.h"
#include "RRC/NR/nr_rrc_defs.h"
#include "flexran_agent_extern.h"
#include "flexran_agent_extern.h"
#include "NR_RRCReconfiguration.h"
#include "NR_UE-NR-Capability.h"
#include "NR_UE-CapabilityRAT-ContainerList.h"
#include "NR_CG-Config.h"
#include "NR_CG-ConfigInfo.h"
int
rrc_init_nr_global_param
(
void
);
int
rrc_init_nr_global_param
(
void
);
...
@@ -57,6 +62,32 @@ void rrc_gNB_generate_SgNBAdditionRequestAcknowledge(
...
@@ -57,6 +62,32 @@ void rrc_gNB_generate_SgNBAdditionRequestAcknowledge(
rrc_gNB_ue_context_t
*
const
ue_context_pP
rrc_gNB_ue_context_t
*
const
ue_context_pP
);
);
void
rrc_parse_ue_capabilities
(
gNB_RRC_INST
*
rrc
,
NR_UE_CapabilityRAT_ContainerList_t
*
UE_CapabilityRAT_ContainerList
);
void
rrc_add_nsa_user
(
gNB_RRC_INST
*
rrc
,
struct
rrc_gNB_ue_context_s
*
ue_context_p
);
void
fill_default_secondaryCellGroup
(
NR_ServingCellConfigCommon_t
*
servingcellconfigcommon
,
NR_RRCReconfiguration_IEs_t
*
reconfig
,
NR_CellGroupConfig_t
*
secondaryCellGroup
,
int
scg_id
,
int
servCellIndex
,
int
n_physical_antenna_ports
,
int
initial_csi_index
);
void
fill_default_reconfig
(
NR_ServingCellConfigCommon_t
*
servingcellconfigcommon
,
NR_RRCReconfiguration_IEs_t
*
reconfig
,
NR_CellGroupConfig_t
*
secondaryCellGroup
,
int
n_physical_antenna_ports
,
int
initial_csi_index
);
int
generate_CG_Config
(
gNB_RRC_INST
*
rrc
,
NR_CG_Config_t
*
cg_Config
,
NR_RRCReconfiguration_t
*
reconfig
,
NR_RadioBearerConfig_t
*
rbconfig
);
int
parse_CG_ConfigInfo
(
gNB_RRC_INST
*
rrc
,
NR_CG_ConfigInfo_t
*
CG_ConfigInfo
);
#if defined(ENABLE_ITTI)
#if defined(ENABLE_ITTI)
/**\brief RRC eNB task.
/**\brief RRC eNB task.
...
...
openair2/RRC/NR/rrc_gNB_nsa.c
View file @
b2bdf7eb
...
@@ -33,11 +33,24 @@
...
@@ -33,11 +33,24 @@
#include "nr_rrc_defs.h"
#include "nr_rrc_defs.h"
#include "NR_RRCReconfiguration.h"
#include "NR_RRCReconfiguration.h"
#include "NR_UE-NR-Capability.h"
#include "NR_UE-NR-Capability.h"
#include "NR_UE-CapabilityRAT-ContainerList.h"
#include "NR_CG-Config.h"
void
rrc_parse_ue_capabilities
(
gNB_RRC_INST
*
rrc
,
BIT_STRING_t
*
ueCapabilityRAT_Container_nr
,
BIT_STRING_t
*
ueCapabilityRAT_Container_MRDC
)
{
void
rrc_parse_ue_capabilities
(
gNB_RRC_INST
*
rrc
,
NR_UE_CapabilityRAT_ContainerList_t
*
UE_CapabilityRAT_ContainerList
)
{
struct
rrc_gNB_ue_context_s
*
ue_context_p
=
NULL
;
struct
rrc_gNB_ue_context_s
*
ue_context_p
=
NULL
;
int
rnti
=
taus
()
&
65535
;
int
rnti
=
taus
()
&
65535
;
OCTET_STRING_t
*
ueCapabilityRAT_Container_nr
;
OCTET_STRING_t
*
ueCapabilityRAT_Container_MRDC
;
AssertFatal
(
UE_CapabilityRAT_ContainerList
!=
NULL
,
"UE_CapabilityRAT_ContainerList is null
\n
"
);
AssertFatal
(
UE_CapabilityRAT_ContainerList
->
list
.
size
!=
2
,
"UE_CapabilityRAT_ContainerList->list.size %d != 2
\n
"
,
UE_CapabilityRAT_ContainerList
->
list
.
size
);
if
(
UE_CapabilityRAT_ContainerList
->
list
.
array
[
0
]
->
rat_Type
==
NR_RAT_Type_nr
)
ueCapabilityRAT_Container_nr
=
&
UE_CapabilityRAT_ContainerList
->
list
.
array
[
0
]
->
ue_CapabilityRAT_Container
;
else
if
(
UE_CapabilityRAT_ContainerList
->
list
.
array
[
0
]
->
rat_Type
==
NR_RAT_Type_eutra_nr
)
ueCapabilityRAT_Container_MRDC
=
&
UE_CapabilityRAT_ContainerList
->
list
.
array
[
0
]
->
ue_CapabilityRAT_Container
;
if
(
UE_CapabilityRAT_ContainerList
->
list
.
array
[
1
]
->
rat_Type
==
NR_RAT_Type_nr
)
ueCapabilityRAT_Container_nr
=
&
UE_CapabilityRAT_ContainerList
->
list
.
array
[
1
]
->
ue_CapabilityRAT_Container
;
else
if
(
UE_CapabilityRAT_ContainerList
->
list
.
array
[
1
]
->
rat_Type
==
NR_RAT_Type_eutra_nr
)
ueCapabilityRAT_Container_MRDC
=
&
UE_CapabilityRAT_ContainerList
->
list
.
array
[
1
]
->
ue_CapabilityRAT_Container
;
AssertFatal
(
ueCapabilityRAT_Container_nr
!=
NULL
,
"ueCapabilityRAT_Container_nr is NULL
\n
"
);
AssertFatal
(
ueCapabilityRAT_Container_nr
!=
NULL
,
"ueCapabilityRAT_Container_nr is NULL
\n
"
);
AssertFatal
(
ueCapabilityRAT_Container_MRDC
!=
NULL
,
"ueCapabilityRAT_Container_MRDC is NULL
\n
"
);
AssertFatal
(
ueCapabilityRAT_Container_MRDC
!=
NULL
,
"ueCapabilityRAT_Container_MRDC is NULL
\n
"
);
...
@@ -83,9 +96,10 @@ void rrc_parse_ue_capabilities(gNB_RRC_INST *rrc,BIT_STRING_t *ueCapabilityRAT_C
...
@@ -83,9 +96,10 @@ void rrc_parse_ue_capabilities(gNB_RRC_INST *rrc,BIT_STRING_t *ueCapabilityRAT_C
xer_fprint
(
stdout
,
&
asn_DEF_NR_UE_MRDC_Capability
,
ue_context_p
->
ue_context
.
UE_Capability_MRDC
);
xer_fprint
(
stdout
,
&
asn_DEF_NR_UE_MRDC_Capability
,
ue_context_p
->
ue_context
.
UE_Capability_MRDC
);
}
}
rrc_add_nsa_user
(
rrc
,
ue_context_p
);
}
}
void
rrc_add_nsa_user
(
gNB_RRC_INST
*
rrc
)
{
void
rrc_add_nsa_user
(
gNB_RRC_INST
*
rrc
,
struct
rrc_gNB_ue_context_s
*
ue_context_p
)
{
// generate nr-Config-r15 containers for LTE RRC : inside message for X2 EN-DC (CG-Config Message from 38.331)
// generate nr-Config-r15 containers for LTE RRC : inside message for X2 EN-DC (CG-Config Message from 38.331)
...
@@ -104,7 +118,17 @@ void rrc_add_nsa_user(gNB_RRC_INST *rrc) {
...
@@ -104,7 +118,17 @@ void rrc_add_nsa_user(gNB_RRC_INST *rrc) {
carrier
->
reconfig
[
rrc
->
Nb_ue
]
->
criticalExtensions
.
present
=
NR_RRCReconfiguration__criticalExtensions_PR_rrcReconfiguration
;
carrier
->
reconfig
[
rrc
->
Nb_ue
]
->
criticalExtensions
.
present
=
NR_RRCReconfiguration__criticalExtensions_PR_rrcReconfiguration
;
NR_RRCReconfiguration_IEs_t
*
reconfig_ies
=
calloc
(
1
,
sizeof
(
NR_RRCReconfiguration_IEs_t
));
NR_RRCReconfiguration_IEs_t
*
reconfig_ies
=
calloc
(
1
,
sizeof
(
NR_RRCReconfiguration_IEs_t
));
carrier
->
reconfig
[
rrc
->
Nb_ue
]
->
criticalExtensions
.
choice
.
rrcReconfiguration
=
reconfig_ies
;
carrier
->
reconfig
[
rrc
->
Nb_ue
]
->
criticalExtensions
.
choice
.
rrcReconfiguration
=
reconfig_ies
;
fill_default_reconfig
(
carrier
->
ServingCellConfigCommon
,
reconfig_ies
);
fill_default_reconfig
(
carrier
->
ServingCellConfigCommon
,
reconfig_ies
,
carrier
->
secondaryCellGroup
[
rrc
->
Nb_ue
],
carrier
->
n_physical_antenna_ports
,
carrier
->
initial_csi_index
[
rrc
->
Nb_ue
]);
carrier
->
rb_config
[
rrc
->
Nb_ue
]
=
calloc
(
1
,
sizeof
(
NR_RadioBearerConfig_t
));
fill_default_rbconfig
(
rrc
,
carrier
->
rb_config
[
rrc
->
Nb_ue
]);
NR_CG_Config_t
*
CG_Config
=
calloc
(
1
,
sizeof
(
*
CG_Config
));
memset
((
void
*
)
CG_Config
,
0
,
sizeof
(
*
CG_Config
));
generate_CG_Config
(
rrc
,
CG_Config
,
carrier
->
reconfig
[
rrc
->
Nb_ue
],
carrier
->
rb_config
[
rrc
->
Nb_ue
]);
// Send to X2 entity to transport to MeNB
rrc
->
Nb_ue
++
;
rrc
->
Nb_ue
++
;
}
}
...
...
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