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
bac6dc54
Commit
bac6dc54
authored
Apr 09, 2019
by
Louis Adrien Dufrene
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Cleanup of rrc_eNB.c
parent
3a7bbc67
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
168 additions
and
227 deletions
+168
-227
openair2/ENB_APP/enb_config.c
openair2/ENB_APP/enb_config.c
+1
-1
openair2/RRC/LTE/rrc_eNB.c
openair2/RRC/LTE/rrc_eNB.c
+167
-226
No files found.
openair2/ENB_APP/enb_config.c
View file @
bac6dc54
openair2/RRC/LTE/rrc_eNB.c
View file @
bac6dc54
...
@@ -2737,18 +2737,21 @@ rrc_eNB_generate_dedicatedRRCConnectionReconfiguration_release( const protocol_
...
@@ -2737,18 +2737,21 @@ rrc_eNB_generate_dedicatedRRCConnectionReconfiguration_release( const protocol_
buffer
,
buffer
,
PDCP_TRANSMISSION_MODE_CONTROL
);
PDCP_TRANSMISSION_MODE_CONTROL
);
}
}
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
void
/*
rrc_eNB_generate_defaultRRCConnectionReconfiguration
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
* Generate the basic (first) RRC Connection Reconfiguration (non BR UE)
*/
void
rrc_eNB_generate_defaultRRCConnectionReconfiguration
(
const
protocol_ctxt_t
*
const
ctxt_pP
,
rrc_eNB_ue_context_t
*
const
ue_context_pP
,
rrc_eNB_ue_context_t
*
const
ue_context_pP
,
const
uint8_t
ho_state
const
uint8_t
ho_state
)
)
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
{
{
uint8_t
buffer
[
RRC_BUF_SIZE
];
uint8_t
buffer
[
RRC_BUF_SIZE
];
uint16_t
size
;
uint16_t
size
;
int
i
;
int
i
;
// configure SRB1/SRB2, PhysicalConfigDedicated, LTE_MAC_MainConfig for UE
/* Configure SRB1/SRB2, PhysicalConfigDedicated, LTE_MAC_MainConfig for UE */
eNB_RRC_INST
*
rrc_inst
=
RC
.
rrc
[
ctxt_pP
->
module_id
];
eNB_RRC_INST
*
rrc_inst
=
RC
.
rrc
[
ctxt_pP
->
module_id
];
struct
LTE_PhysicalConfigDedicated
**
physicalConfigDedicated
=
&
ue_context_pP
->
ue_context
.
physicalConfigDedicated
;
struct
LTE_PhysicalConfigDedicated
**
physicalConfigDedicated
=
&
ue_context_pP
->
ue_context
.
physicalConfigDedicated
;
struct
LTE_SRB_ToAddMod
*
SRB2_config
=
NULL
;
struct
LTE_SRB_ToAddMod
*
SRB2_config
=
NULL
;
...
@@ -2776,29 +2779,31 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t *cons
...
@@ -2776,29 +2779,31 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t *cons
*
ReportConfig_A2
,
*
ReportConfig_A3
,
*
ReportConfig_A4
,
*
ReportConfig_A5
;
*
ReportConfig_A2
,
*
ReportConfig_A3
,
*
ReportConfig_A4
,
*
ReportConfig_A5
;
LTE_MeasIdToAddModList_t
*
MeasId_list
=
NULL
;
LTE_MeasIdToAddModList_t
*
MeasId_list
=
NULL
;
LTE_MeasIdToAddMod_t
*
MeasId0
,
*
MeasId1
,
*
MeasId2
,
*
MeasId3
,
*
MeasId4
,
*
MeasId5
;
LTE_MeasIdToAddMod_t
*
MeasId0
,
*
MeasId1
,
*
MeasId2
,
*
MeasId3
,
*
MeasId4
,
*
MeasId5
;
#if (LTE_RRC_VERSION >= MAKE_VERSION(9, 0, 0))
#if (LTE_RRC_VERSION >= MAKE_VERSION(9, 0, 0))
long
*
sr_ProhibitTimer_r9
=
NULL
;
long
*
sr_ProhibitTimer_r9
=
NULL
;
// uint8_t sCellIndexToAdd = rrc_find_free_SCell_index(enb_mod_idP, ue_mod_idP, 1);
//uint8_t sCellIndexToAdd = 0;
#endif
#endif
long
*
logicalchannelgroup
,
*
logicalchannelgroup_drb
;
long
*
maxHARQ_Tx
,
*
periodicBSR_Timer
;
long
*
logicalchannelgroup
=
NULL
;
long
*
logicalchannelgroup_drb
=
NULL
;
long
*
maxHARQ_Tx
=
NULL
;
long
*
periodicBSR_Timer
=
NULL
;
LTE_RSRP_Range_t
*
rsrp
=
NULL
;
LTE_RSRP_Range_t
*
rsrp
=
NULL
;
struct
LTE_MeasConfig__speedStatePars
*
Sparams
=
NULL
;
struct
LTE_MeasConfig__speedStatePars
*
Sparams
=
NULL
;
LTE_QuantityConfig_t
*
quantityConfig
=
NULL
;
LTE_QuantityConfig_t
*
quantityConfig
=
NULL
;
//LTE_CellsToAddMod_t *CellToAdd = NULL;
struct
LTE_RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList
//LTE_CellsToAddModList_t *CellsToAddModList = NULL;
*
dedicatedInfoNASList
=
NULL
;
struct
LTE_RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList
*
dedicatedInfoNASList
=
NULL
;
LTE_DedicatedInfoNAS_t
*
dedicatedInfoNas
=
NULL
;
LTE_DedicatedInfoNAS_t
*
dedicatedInfoNas
=
NULL
;
/* for no gcc warnings */
(
void
)
dedicatedInfoNas
;
/* For no gcc warnings */
(
void
)
dedicatedInfoNas
;
LTE_C_RNTI_t
*
cba_RNTI
=
NULL
;
LTE_C_RNTI_t
*
cba_RNTI
=
NULL
;
int
x2_enabled
;
int
x2_enabled
;
uint8_t
xid
=
rrc_eNB_get_next_transaction_identifier
(
ctxt_pP
->
module_id
);
//Transaction_id,
uint8_t
xid
=
rrc_eNB_get_next_transaction_identifier
(
ctxt_pP
->
module_id
);
//Transaction_id,
uint8_t
cc_id
=
ue_context_pP
->
ue_context
.
primaryCC_id
;
uint8_t
cc_id
=
ue_context_pP
->
ue_context
.
primaryCC_id
;
LTE_UE_EUTRA_Capability_t
*
UEcap
=
ue_context_pP
->
ue_context
.
UE_Capability
;
LTE_UE_EUTRA_Capability_t
*
UEcap
=
ue_context_pP
->
ue_context
.
UE_Capability
;
#ifdef CBA
//struct PUSCH_CBAConfigDedicated_vlola *pusch_CBAConfigDedicated_vlola;
#ifdef CBA // Contention Based Access
uint8_t
*
cba_RNTI_buf
;
uint8_t
*
cba_RNTI_buf
;
cba_RNTI
=
CALLOC
(
1
,
sizeof
(
LTE_C_RNTI_t
));
cba_RNTI
=
CALLOC
(
1
,
sizeof
(
LTE_C_RNTI_t
));
cba_RNTI_buf
=
CALLOC
(
1
,
2
*
sizeof
(
uint8_t
));
cba_RNTI_buf
=
CALLOC
(
1
,
2
*
sizeof
(
uint8_t
));
...
@@ -2806,27 +2811,33 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t *cons
...
@@ -2806,27 +2811,33 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t *cons
cba_RNTI
->
size
=
2
;
cba_RNTI
->
size
=
2
;
cba_RNTI
->
bits_unused
=
0
;
cba_RNTI
->
bits_unused
=
0
;
/
/ associate UEs to the CBa groups as a function of their UE id
/
* Associate UEs to the CBA groups as a function of their UE id */
if
(
rrc_inst
->
num_active_cba_groups
)
{
if
(
rrc_inst
->
num_active_cba_groups
)
{
cba_RNTI
->
buf
[
0
]
=
rrc_inst
->
cba_rnti
[
ue_mod_idP
%
rrc_inst
->
num_active_cba_groups
]
&
0xff
;
cba_RNTI
->
buf
[
0
]
=
rrc_inst
->
cba_rnti
[
ue_mod_idP
%
rrc_inst
->
num_active_cba_groups
]
&
0xff
;
cba_RNTI
->
buf
[
1
]
=
0xff
;
cba_RNTI
->
buf
[
1
]
=
0xff
;
LOG_D
(
RRC
,
LOG_D
(
RRC
,
"[eNB %d] Frame %d: cba_RNTI = %x in group %d is attribued to UE %d
\n
"
,
"[eNB %d] Frame %d: cba_RNTI = %x in group %d is attribued to UE %d
\n
"
,
enb_mod_idP
,
enb_mod_idP
,
frameP
,
frameP
,
rrc_inst
->
cba_rnti
[
ue_mod_idP
%
rrc_inst
->
num_active_cba_groups
],
rrc_inst
->
cba_rnti
[
ue_mod_idP
%
rrc_inst
->
num_active_cba_groups
],
ue_mod_idP
%
rrc_inst
->
num_active_cba_groups
,
ue_mod_idP
);
ue_mod_idP
%
rrc_inst
->
num_active_cba_groups
,
ue_mod_idP
);
}
else
{
}
else
{
cba_RNTI
->
buf
[
0
]
=
0x0
;
cba_RNTI
->
buf
[
0
]
=
0x0
;
cba_RNTI
->
buf
[
1
]
=
0x0
;
cba_RNTI
->
buf
[
1
]
=
0x0
;
LOG_D
(
RRC
,
"[eNB %d] Frame %d: no cba_RNTI is configured for UE %d
\n
"
,
enb_mod_idP
,
frameP
,
ue_mod_idP
);
LOG_D
(
RRC
,
"[eNB %d] Frame %d: no cba_RNTI is configured for UE %d
\n
"
,
enb_mod_idP
,
frameP
,
ue_mod_idP
);
}
}
#endif
#endif
T
(
T_ENB_RRC_CONNECTION_RECONFIGURATION
,
T_INT
(
ctxt_pP
->
module_id
),
T_INT
(
ctxt_pP
->
frame
),
T_INT
(
ctxt_pP
->
subframe
),
T_INT
(
ctxt_pP
->
rnti
));
T
(
T_ENB_RRC_CONNECTION_RECONFIGURATION
,
// Configure SRB2
T_INT
(
ctxt_pP
->
module_id
),
/// SRB2
T_INT
(
ctxt_pP
->
frame
),
SRB_configList2
=&
ue_context_pP
->
ue_context
.
SRB_configList2
[
xid
];
T_INT
(
ctxt_pP
->
subframe
),
T_INT
(
ctxt_pP
->
rnti
));
/* Configure SRB2 */
SRB_configList2
=
&
(
ue_context_pP
->
ue_context
.
SRB_configList2
[
xid
]);
if
(
*
SRB_configList2
)
{
if
(
*
SRB_configList2
)
{
free
(
*
SRB_configList2
);
free
(
*
SRB_configList2
);
...
@@ -2851,22 +2862,19 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t *cons
...
@@ -2851,22 +2862,19 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t *cons
SRB2_lchan_config
->
present
=
LTE_SRB_ToAddMod__logicalChannelConfig_PR_explicitValue
;
SRB2_lchan_config
->
present
=
LTE_SRB_ToAddMod__logicalChannelConfig_PR_explicitValue
;
SRB2_ul_SpecificParameters
=
CALLOC
(
1
,
sizeof
(
*
SRB2_ul_SpecificParameters
));
SRB2_ul_SpecificParameters
=
CALLOC
(
1
,
sizeof
(
*
SRB2_ul_SpecificParameters
));
SRB2_ul_SpecificParameters
->
priority
=
3
;
// let some priority for SRB1 and dedicated DRBs
SRB2_ul_SpecificParameters
->
priority
=
3
;
// let some priority for SRB1 and dedicated DRBs
SRB2_ul_SpecificParameters
->
prioritisedBitRate
=
SRB2_ul_SpecificParameters
->
prioritisedBitRate
=
LTE_LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_infinity
;
LTE_LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_infinity
;
SRB2_ul_SpecificParameters
->
bucketSizeDuration
=
LTE_LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms50
;
SRB2_ul_SpecificParameters
->
bucketSizeDuration
=
LTE_LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms50
;
/* LCG for CCCH and DCCH is 0 as defined in 36331 */
// LCG for CCCH and DCCH is 0 as defined in 36331
logicalchannelgroup
=
CALLOC
(
1
,
sizeof
(
long
));
logicalchannelgroup
=
CALLOC
(
1
,
sizeof
(
long
));
*
logicalchannelgroup
=
0
;
*
logicalchannelgroup
=
0
;
SRB2_ul_SpecificParameters
->
logicalChannelGroup
=
logicalchannelgroup
;
SRB2_ul_SpecificParameters
->
logicalChannelGroup
=
logicalchannelgroup
;
SRB2_lchan_config
->
choice
.
explicitValue
.
ul_SpecificParameters
=
SRB2_ul_SpecificParameters
;
SRB2_lchan_config
->
choice
.
explicitValue
.
ul_SpecificParameters
=
SRB2_ul_SpecificParameters
;
// this list has the configuration for SRB1 and SRB2
ASN_SEQUENCE_ADD
(
&
SRB_configList
->
list
,
SRB2_config
);
// this list has only the configuration for SRB2
ASN_SEQUENCE_ADD
(
&
(
*
SRB_configList2
)
->
list
,
SRB2_config
);
// Configure DRB
ASN_SEQUENCE_ADD
(
&
SRB_configList
->
list
,
SRB2_config
);
// this list has the configuration for SRB1 and SRB2
//*DRB_configList = CALLOC(1, sizeof(*DRB_configList));
ASN_SEQUENCE_ADD
(
&
(
*
SRB_configList2
)
->
list
,
SRB2_config
);
// this list has only the configuration for SRB2
/* Configure DRB */
// list for all the configured DRB
// list for all the configured DRB
if
(
*
DRB_configList
)
{
if
(
*
DRB_configList
)
{
free
(
*
DRB_configList
);
free
(
*
DRB_configList
);
...
@@ -2874,8 +2882,8 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t *cons
...
@@ -2874,8 +2882,8 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t *cons
*
DRB_configList
=
CALLOC
(
1
,
sizeof
(
**
DRB_configList
));
*
DRB_configList
=
CALLOC
(
1
,
sizeof
(
**
DRB_configList
));
memset
(
*
DRB_configList
,
0
,
sizeof
(
**
DRB_configList
));
memset
(
*
DRB_configList
,
0
,
sizeof
(
**
DRB_configList
));
// list for the configured DRB for a this xid
DRB_configList2
=&
ue_context_pP
->
ue_context
.
DRB_configList2
[
xid
];
DRB_configList2
=&
ue_context_pP
->
ue_context
.
DRB_configList2
[
xid
];
// list for the configured DRB for a this xid
if
(
*
DRB_configList2
)
{
if
(
*
DRB_configList2
)
{
free
(
*
DRB_configList2
);
free
(
*
DRB_configList2
);
...
@@ -2883,17 +2891,17 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t *cons
...
@@ -2883,17 +2891,17 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t *cons
*
DRB_configList2
=
CALLOC
(
1
,
sizeof
(
**
DRB_configList2
));
*
DRB_configList2
=
CALLOC
(
1
,
sizeof
(
**
DRB_configList2
));
memset
(
*
DRB_configList2
,
0
,
sizeof
(
**
DRB_configList2
));
memset
(
*
DRB_configList2
,
0
,
sizeof
(
**
DRB_configList2
));
/// DRB
DRB_config
=
CALLOC
(
1
,
sizeof
(
*
DRB_config
));
DRB_config
=
CALLOC
(
1
,
sizeof
(
*
DRB_config
));
DRB_config
->
eps_BearerIdentity
=
CALLOC
(
1
,
sizeof
(
long
));
DRB_config
->
eps_BearerIdentity
=
CALLOC
(
1
,
sizeof
(
long
));
*
(
DRB_config
->
eps_BearerIdentity
)
=
5L
;
// LW set to first value, allowed value 5..15, value : x+4
*
(
DRB_config
->
eps_BearerIdentity
)
=
5L
;
// LW set to first value, allowed value 5..15, value : x+4
// DRB_config->drb_Identity = (LTE_DRB_Identity_t) 1; //allowed values 1..32
// NN: this is the 1st DRB for this ue, so set it to 1
// NN: this is the 1st DRB for this ue, so set it to 1
DRB_config
->
drb_Identity
=
(
LTE_DRB_Identity_t
)
1
;
// (ue_mod_idP+1); //allowed values 1..32, value: x
DRB_config
->
drb_Identity
=
(
LTE_DRB_Identity_t
)
1
;
// (ue_mod_idP+1); //allowed values 1..32, value: x
DRB_config
->
logicalChannelIdentity
=
CALLOC
(
1
,
sizeof
(
long
));
DRB_config
->
logicalChannelIdentity
=
CALLOC
(
1
,
sizeof
(
long
));
*
(
DRB_config
->
logicalChannelIdentity
)
=
(
long
)
3
;
// value : x+2
*
(
DRB_config
->
logicalChannelIdentity
)
=
(
long
)
3
;
// value : x+2
DRB_rlc_config
=
CALLOC
(
1
,
sizeof
(
*
DRB_rlc_config
));
DRB_rlc_config
=
CALLOC
(
1
,
sizeof
(
*
DRB_rlc_config
));
DRB_config
->
rlc_Config
=
DRB_rlc_config
;
DRB_config
->
rlc_Config
=
DRB_rlc_config
;
#ifdef RRC_DEFAULT_RAB_IS_AM
#ifdef RRC_DEFAULT_RAB_IS_AM
DRB_rlc_config
->
present
=
LTE_RLC_Config_PR_am
;
DRB_rlc_config
->
present
=
LTE_RLC_Config_PR_am
;
DRB_rlc_config
->
choice
.
am
.
ul_AM_RLC
.
t_PollRetransmit
=
LTE_T_PollRetransmit_ms50
;
DRB_rlc_config
->
choice
.
am
.
ul_AM_RLC
.
t_PollRetransmit
=
LTE_T_PollRetransmit_ms50
;
...
@@ -2906,21 +2914,25 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t *cons
...
@@ -2906,21 +2914,25 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t *cons
DRB_rlc_config
->
present
=
LTE_RLC_Config_PR_um_Bi_Directional
;
DRB_rlc_config
->
present
=
LTE_RLC_Config_PR_um_Bi_Directional
;
DRB_rlc_config
->
choice
.
um_Bi_Directional
.
ul_UM_RLC
.
sn_FieldLength
=
LTE_SN_FieldLength_size10
;
DRB_rlc_config
->
choice
.
um_Bi_Directional
.
ul_UM_RLC
.
sn_FieldLength
=
LTE_SN_FieldLength_size10
;
DRB_rlc_config
->
choice
.
um_Bi_Directional
.
dl_UM_RLC
.
sn_FieldLength
=
LTE_SN_FieldLength_size10
;
DRB_rlc_config
->
choice
.
um_Bi_Directional
.
dl_UM_RLC
.
sn_FieldLength
=
LTE_SN_FieldLength_size10
;
#ifdef CBA
#ifdef CBA
DRB_rlc_config
->
choice
.
um_Bi_Directional
.
dl_UM_RLC
.
t_Reordering
=
LTE_T_Reordering_ms5
;
//T_Reordering_ms25;
DRB_rlc_config
->
choice
.
um_Bi_Directional
.
dl_UM_RLC
.
t_Reordering
=
LTE_T_Reordering_ms5
;
//T_Reordering_ms25;
#else
#else
DRB_rlc_config
->
choice
.
um_Bi_Directional
.
dl_UM_RLC
.
t_Reordering
=
LTE_T_Reordering_ms35
;
DRB_rlc_config
->
choice
.
um_Bi_Directional
.
dl_UM_RLC
.
t_Reordering
=
LTE_T_Reordering_ms35
;
#endif
#endif
#endif
#endif
DRB_pdcp_config
=
CALLOC
(
1
,
sizeof
(
*
DRB_pdcp_config
));
DRB_pdcp_config
=
CALLOC
(
1
,
sizeof
(
*
DRB_pdcp_config
));
DRB_config
->
pdcp_Config
=
DRB_pdcp_config
;
DRB_config
->
pdcp_Config
=
DRB_pdcp_config
;
DRB_pdcp_config
->
discardTimer
=
CALLOC
(
1
,
sizeof
(
long
));
DRB_pdcp_config
->
discardTimer
=
CALLOC
(
1
,
sizeof
(
long
));
*
DRB_pdcp_config
->
discardTimer
=
LTE_PDCP_Config__discardTimer_infinity
;
*
DRB_pdcp_config
->
discardTimer
=
LTE_PDCP_Config__discardTimer_infinity
;
DRB_pdcp_config
->
rlc_AM
=
NULL
;
DRB_pdcp_config
->
rlc_AM
=
NULL
;
DRB_pdcp_config
->
rlc_UM
=
NULL
;
DRB_pdcp_config
->
rlc_UM
=
NULL
;
/*
a
void gcc warnings */
/*
A
void gcc warnings */
(
void
)
PDCP_rlc_AM
;
(
void
)
PDCP_rlc_AM
;
(
void
)
PDCP_rlc_UM
;
(
void
)
PDCP_rlc_UM
;
#ifdef RRC_DEFAULT_RAB_IS_AM // EXMIMO_IOT
#ifdef RRC_DEFAULT_RAB_IS_AM // EXMIMO_IOT
PDCP_rlc_AM
=
CALLOC
(
1
,
sizeof
(
*
PDCP_rlc_AM
));
PDCP_rlc_AM
=
CALLOC
(
1
,
sizeof
(
*
PDCP_rlc_AM
));
DRB_pdcp_config
->
rlc_AM
=
PDCP_rlc_AM
;
DRB_pdcp_config
->
rlc_AM
=
PDCP_rlc_AM
;
...
@@ -2930,23 +2942,25 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t *cons
...
@@ -2930,23 +2942,25 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t *cons
DRB_pdcp_config
->
rlc_UM
=
PDCP_rlc_UM
;
DRB_pdcp_config
->
rlc_UM
=
PDCP_rlc_UM
;
PDCP_rlc_UM
->
pdcp_SN_Size
=
LTE_PDCP_Config__rlc_UM__pdcp_SN_Size_len12bits
;
PDCP_rlc_UM
->
pdcp_SN_Size
=
LTE_PDCP_Config__rlc_UM__pdcp_SN_Size_len12bits
;
#endif
#endif
DRB_pdcp_config
->
headerCompression
.
present
=
LTE_PDCP_Config__headerCompression_PR_notUsed
;
DRB_pdcp_config
->
headerCompression
.
present
=
LTE_PDCP_Config__headerCompression_PR_notUsed
;
DRB_lchan_config
=
CALLOC
(
1
,
sizeof
(
*
DRB_lchan_config
));
DRB_lchan_config
=
CALLOC
(
1
,
sizeof
(
*
DRB_lchan_config
));
DRB_config
->
logicalChannelConfig
=
DRB_lchan_config
;
DRB_config
->
logicalChannelConfig
=
DRB_lchan_config
;
DRB_ul_SpecificParameters
=
CALLOC
(
1
,
sizeof
(
*
DRB_ul_SpecificParameters
));
DRB_ul_SpecificParameters
=
CALLOC
(
1
,
sizeof
(
*
DRB_ul_SpecificParameters
));
DRB_lchan_config
->
ul_SpecificParameters
=
DRB_ul_SpecificParameters
;
DRB_lchan_config
->
ul_SpecificParameters
=
DRB_ul_SpecificParameters
;
DRB_ul_SpecificParameters
->
priority
=
12
;
// lower priority than srb1, srb2 and other dedicated bearer
DRB_ul_SpecificParameters
->
priority
=
12
;
// lower priority than srb1, srb2 and other dedicated bearer
DRB_ul_SpecificParameters
->
prioritisedBitRate
=
LTE_LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_kBps8
;
DRB_ul_SpecificParameters
->
prioritisedBitRate
=
LTE_LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_kBps8
;
// LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_infinity;
//LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_infinity;
DRB_ul_SpecificParameters
->
bucketSizeDuration
=
LTE_LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms50
;
DRB_ul_SpecificParameters
->
bucketSizeDuration
=
LTE_LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms50
;
// LCG for DTCH can take the value from 1 to 3 as defined in 36331: normally controlled by upper layers (like RRM)
// LCG for DTCH can take the value from 1 to 3 as defined in 36331: normally controlled by upper layers (like RRM)
logicalchannelgroup_drb
=
CALLOC
(
1
,
sizeof
(
long
));
logicalchannelgroup_drb
=
CALLOC
(
1
,
sizeof
(
long
));
*
logicalchannelgroup_drb
=
1
;
*
logicalchannelgroup_drb
=
1
;
DRB_ul_SpecificParameters
->
logicalChannelGroup
=
logicalchannelgroup_drb
;
DRB_ul_SpecificParameters
->
logicalChannelGroup
=
logicalchannelgroup_drb
;
ASN_SEQUENCE_ADD
(
&
(
*
DRB_configList
)
->
list
,
DRB_config
);
ASN_SEQUENCE_ADD
(
&
(
*
DRB_configList
)
->
list
,
DRB_config
);
ASN_SEQUENCE_ADD
(
&
(
*
DRB_configList2
)
->
list
,
DRB_config
);
ASN_SEQUENCE_ADD
(
&
(
*
DRB_configList2
)
->
list
,
DRB_config
);
//ue_context_pP->ue_context.DRB_configList2[0] = &(*DRB_configList);
/* MAC Main Config */
// The different parts of MAC main config are set below
mac_MainConfig
=
CALLOC
(
1
,
sizeof
(
*
mac_MainConfig
));
mac_MainConfig
=
CALLOC
(
1
,
sizeof
(
*
mac_MainConfig
));
ue_context_pP
->
ue_context
.
mac_MainConfig
=
mac_MainConfig
;
ue_context_pP
->
ue_context
.
mac_MainConfig
=
mac_MainConfig
;
mac_MainConfig
->
ul_SCH_Config
=
CALLOC
(
1
,
sizeof
(
*
mac_MainConfig
->
ul_SCH_Config
));
mac_MainConfig
->
ul_SCH_Config
=
CALLOC
(
1
,
sizeof
(
*
mac_MainConfig
->
ul_SCH_Config
));
...
@@ -2969,7 +2983,7 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t *cons
...
@@ -2969,7 +2983,7 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t *cons
mac_MainConfig
->
phr_Config
->
choice
.
setup
.
prohibitPHR_Timer
=
LTE_MAC_MainConfig__phr_Config__setup__prohibitPHR_Timer_sf200
;
// sf20 = 20 subframes // LTE_MAC_MainConfig__phr_Config__setup__prohibitPHR_Timer_sf1000
mac_MainConfig
->
phr_Config
->
choice
.
setup
.
prohibitPHR_Timer
=
LTE_MAC_MainConfig__phr_Config__setup__prohibitPHR_Timer_sf200
;
// sf20 = 20 subframes // LTE_MAC_MainConfig__phr_Config__setup__prohibitPHR_Timer_sf1000
mac_MainConfig
->
phr_Config
->
choice
.
setup
.
dl_PathlossChange
=
LTE_MAC_MainConfig__phr_Config__setup__dl_PathlossChange_dB3
;
// Value dB1 =1 dB, dB3 = 3 dB
mac_MainConfig
->
phr_Config
->
choice
.
setup
.
dl_PathlossChange
=
LTE_MAC_MainConfig__phr_Config__setup__dl_PathlossChange_dB3
;
// Value dB1 =1 dB, dB3 = 3 dB
if
(
rrc_inst
->
carrier
[
cc_id
].
sib1
->
tdd_Config
==
NULL
)
{
// CDRX c
onfigured in case of FDD
if
(
rrc_inst
->
carrier
[
cc_id
].
sib1
->
tdd_Config
==
NULL
)
{
// CDRX c
an be only configured in case of FDD (09/04/19)
LOG_D
(
RRC
,
"Processing the DRX configuration in RRC Connection Reconfiguration
\n
"
);
LOG_D
(
RRC
,
"Processing the DRX configuration in RRC Connection Reconfiguration
\n
"
);
/* Process the IE drx_Config */
/* Process the IE drx_Config */
...
@@ -2982,50 +2996,9 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t *cons
...
@@ -2982,50 +2996,9 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t *cons
/* Set timers and thresholds values in local MAC context of UE */
/* Set timers and thresholds values in local MAC context of UE */
eNB_Config_Local_DRX
(
ctxt_pP
->
module_id
,
ue_context_pP
->
ue_id_rnti
,
mac_MainConfig
->
drx_Config
);
eNB_Config_Local_DRX
(
ctxt_pP
->
module_id
,
ue_context_pP
->
ue_id_rnti
,
mac_MainConfig
->
drx_Config
);
/* BEGIN DEBUG LAD*/
LOG_D
(
RRC
,
"DRX configured in mac main config for RRC Connection Reconfiguration
\n
"
);
eNB_MAC_INST
*
eNB_mac
=
NULL
;
UE_list_t
*
UE_list_mac
=
NULL
;
}
else
{
// CDRX not implemented for TDD (09/04/19)
int
UE_id
=
-
1
;
UE_sched_ctrl
*
UE_scheduling_control
=
NULL
;
eNB_mac
=
RC
.
mac
[
ctxt_pP
->
module_id
];
UE_list_mac
=
&
eNB_mac
->
UE_list
;
UE_id
=
find_UE_id
(
ctxt_pP
->
module_id
,
ue_context_pP
->
ue_id_rnti
);
UE_scheduling_control
=
&
(
UE_list_mac
->
UE_sched_ctrl
[
UE_id
]);
LOG_W
(
MAC
,
"Values to check: on_duration_timer = %d ; on_duration_timer_thres = %d
\n
\
drx_inactivity_timer = %d ; drx_inactivity_timer_thres = %d
\n
\
drx_shortCycle_timer = %d ; drx_shortCycle_timer_thres = %d
\n
\
short_drx_cycle_duration = %d ; drx_shortCycle_timer_value = %d
\n
\
drx_long_timer = %d ; drx_long_timer_thres = %d
\n
\
drx_start_offset = %d ;
\n
\
drx_retransmission_timer0 = %d ; drx_retransmission_timer2 = %d ; drx_retransmission_timer4 = %d ; drx_retransmission_timer7 = %d ;
\n
\
drx_retransmission_timer_thres0 = %d ; drx_retransmission_timer_thres2 = %d ; drx_retransmission_timer_thres4 = %d ; drx_retransmission_timer_thres7 = %d;
\n
\
cqi_mask_boolean = %d ; cdrx_configured = %d
\n
"
,
UE_scheduling_control
->
on_duration_timer
,
UE_scheduling_control
->
on_duration_timer_thres
,
UE_scheduling_control
->
drx_inactivity_timer
,
UE_scheduling_control
->
drx_inactivity_timer_thres
,
UE_scheduling_control
->
drx_shortCycle_timer
,
UE_scheduling_control
->
drx_shortCycle_timer_thres
,
UE_scheduling_control
->
short_drx_cycle_duration
,
UE_scheduling_control
->
drx_shortCycle_timer_value
,
UE_scheduling_control
->
drx_longCycle_timer
,
UE_scheduling_control
->
drx_longCycle_timer_thres
,
UE_scheduling_control
->
drx_start_offset
,
UE_scheduling_control
->
drx_retransmission_timer
[
0
],
UE_scheduling_control
->
drx_retransmission_timer
[
2
],
UE_scheduling_control
->
drx_retransmission_timer
[
4
],
UE_scheduling_control
->
drx_retransmission_timer
[
7
],
UE_scheduling_control
->
drx_retransmission_timer_thres
[
0
],
UE_scheduling_control
->
drx_retransmission_timer_thres
[
2
],
UE_scheduling_control
->
drx_retransmission_timer_thres
[
4
],
UE_scheduling_control
->
drx_retransmission_timer_thres
[
7
],
UE_scheduling_control
->
cqi_mask_boolean
,
UE_scheduling_control
->
cdrx_configured
);
/* END DEBUG LAD */
}
else
{
// CDRX not ready for TDD
mac_MainConfig
->
drx_Config
=
NULL
;
mac_MainConfig
->
drx_Config
=
NULL
;
}
}
...
@@ -3034,12 +3007,11 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t *cons
...
@@ -3034,12 +3007,11 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t *cons
*
sr_ProhibitTimer_r9
=
0
;
// SR tx on PUCCH, Value in number of SR period(s). Value 0 = no timer for SR, Value 2 = 2*SR
*
sr_ProhibitTimer_r9
=
0
;
// SR tx on PUCCH, Value in number of SR period(s). Value 0 = no timer for SR, Value 2 = 2*SR
mac_MainConfig
->
ext1
=
CALLOC
(
1
,
sizeof
(
struct
LTE_MAC_MainConfig__ext1
));
mac_MainConfig
->
ext1
=
CALLOC
(
1
,
sizeof
(
struct
LTE_MAC_MainConfig__ext1
));
mac_MainConfig
->
ext1
->
sr_ProhibitTimer_r9
=
sr_ProhibitTimer_r9
;
mac_MainConfig
->
ext1
->
sr_ProhibitTimer_r9
=
sr_ProhibitTimer_r9
;
//sps_RA_ConfigList_rlola = NULL;
#endif
#endif
//change the transmission mode for the primary component carrier
//
change the transmission mode for the primary component carrier
//TODO: add codebook subset restriction here
//
TODO: add codebook subset restriction here
//TODO: change TM for secondary CC in SCelltoaddmodlist
//
TODO: change TM for secondary CC in SCelltoaddmodlist
if
(
*
physicalConfigDedicated
)
{
if
(
*
physicalConfigDedicated
)
{
if
((
*
physicalConfigDedicated
)
->
antennaInfo
)
{
if
((
*
physicalConfigDedicated
)
->
antennaInfo
)
{
(
*
physicalConfigDedicated
)
->
antennaInfo
->
choice
.
explicitValue
.
transmissionMode
=
rrc_inst
->
configuration
.
radioresourceconfig
[
0
].
ue_TransmissionMode
;
(
*
physicalConfigDedicated
)
->
antennaInfo
->
choice
.
explicitValue
.
transmissionMode
=
rrc_inst
->
configuration
.
radioresourceconfig
[
0
].
ue_TransmissionMode
;
...
@@ -3101,19 +3073,6 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t *cons
...
@@ -3101,19 +3073,6 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t *cons
#else
#else
*
((
*
physicalConfigDedicated
)
->
cqi_ReportConfig
->
cqi_ReportModeAperiodic
)
=
LTE_CQI_ReportConfig__cqi_ReportModeAperiodic_rm31
;
// HLC CQI, single PMI
*
((
*
physicalConfigDedicated
)
->
cqi_ReportConfig
->
cqi_ReportModeAperiodic
)
=
LTE_CQI_ReportConfig__cqi_ReportModeAperiodic_rm31
;
// HLC CQI, single PMI
#endif
#endif
/* For testing with CDRX */
/* Periodic report can't work because NFAPI_UL_CONFIG_UCI_CQI_PDU_TYPE is not supported yet! */
/*
(*physicalConfigDedicated)->cqi_ReportConfig->nomPDSCH_RS_EPRE_Offset = 0; // 0 dB
(*physicalConfigDedicated)->cqi_ReportConfig->cqi_ReportPeriodic = CALLOC(1, sizeof((*(*physicalConfigDedicated)).cqi_ReportConfig->cqi_ReportPeriodic));
(*physicalConfigDedicated)->cqi_ReportConfig->cqi_ReportPeriodic->present = LTE_CQI_ReportPeriodic_PR_setup;
(*physicalConfigDedicated)->cqi_ReportConfig->cqi_ReportPeriodic->choice.setup.cqi_PUCCH_ResourceIndex = 0; // n2_pucch
(*physicalConfigDedicated)->cqi_ReportConfig->cqi_ReportPeriodic->choice.setup.cqi_pmi_ConfigIndex = 17; // I_cqi/pmi: 17 => 20ms
(*physicalConfigDedicated)->cqi_ReportConfig->cqi_ReportPeriodic->choice.setup.cqi_FormatIndicatorPeriodic.present = LTE_CQI_ReportPeriodic__setup__cqi_FormatIndicatorPeriodic_PR_subbandCQI; // subband CQI
(*physicalConfigDedicated)->cqi_ReportConfig->cqi_ReportPeriodic->choice.setup.cqi_FormatIndicatorPeriodic.choice.subbandCQI.k = 4;
(*physicalConfigDedicated)->cqi_ReportConfig->cqi_ReportPeriodic->choice.setup.ri_ConfigIndex = NULL;
(*physicalConfigDedicated)->cqi_ReportConfig->cqi_ReportPeriodic->choice.setup.simultaneousAckNackAndCQI = 0;
*/
}
}
}
else
{
}
else
{
LOG_E
(
RRC
,
"cqi_ReportConfig not present in physical_config_dedicated. Not reconfiguring!
\n
"
);
LOG_E
(
RRC
,
"cqi_ReportConfig not present in physical_config_dedicated. Not reconfiguring!
\n
"
);
...
@@ -3326,30 +3285,7 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t *cons
...
@@ -3326,30 +3285,7 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t *cons
CALLOC
(
1
,
sizeof
(
*
(
quantityConfig
->
quantityConfigEUTRA
->
filterCoefficientRSRQ
)));
CALLOC
(
1
,
sizeof
(
*
(
quantityConfig
->
quantityConfigEUTRA
->
filterCoefficientRSRQ
)));
*
quantityConfig
->
quantityConfigEUTRA
->
filterCoefficientRSRP
=
LTE_FilterCoefficient_fc4
;
*
quantityConfig
->
quantityConfigEUTRA
->
filterCoefficientRSRP
=
LTE_FilterCoefficient_fc4
;
*
quantityConfig
->
quantityConfigEUTRA
->
filterCoefficientRSRQ
=
LTE_FilterCoefficient_fc4
;
*
quantityConfig
->
quantityConfigEUTRA
->
filterCoefficientRSRQ
=
LTE_FilterCoefficient_fc4
;
#if 0
LOG_I(RRC,
"[eNB %d] Frame %d: potential handover preparation: store the information in an intermediate structure in case of failure\n",
ctxt_pP->module_id, ctxt_pP->frame);
// store the information in an intermediate structure for Hanodver management
//rrc_inst->handover_info.as_config.sourceRadioResourceConfig.srb_ToAddModList = CALLOC(1,sizeof());
ue_context_pP->ue_context.handover_info = CALLOC(1, sizeof(*(ue_context_pP->ue_context.handover_info)));
//memcpy((void *)rrc_inst->handover_info[ue_mod_idP]->as_config.sourceRadioResourceConfig.srb_ToAddModList,(void *)SRB_list,sizeof(LTE_SRB_ToAddModList_t));
ue_context_pP->ue_context.handover_info->as_config.sourceRadioResourceConfig.srb_ToAddModList = *SRB_configList2;
//memcpy((void *)rrc_inst->handover_info[ue_mod_idP]->as_config.sourceRadioResourceConfig.drb_ToAddModList,(void *)DRB_list,sizeof(LTE_DRB_ToAddModList_t));
ue_context_pP->ue_context.handover_info->as_config.sourceRadioResourceConfig.drb_ToAddModList = *DRB_configList;
ue_context_pP->ue_context.handover_info->as_config.sourceRadioResourceConfig.drb_ToReleaseList = NULL;
ue_context_pP->ue_context.handover_info->as_config.sourceRadioResourceConfig.mac_MainConfig =
CALLOC(1, sizeof(*ue_context_pP->ue_context.handover_info->as_config.sourceRadioResourceConfig.mac_MainConfig));
memcpy((void *)ue_context_pP->ue_context.handover_info->as_config.sourceRadioResourceConfig.mac_MainConfig,
(void *)mac_MainConfig, sizeof(LTE_MAC_MainConfig_t));
ue_context_pP->ue_context.handover_info->as_config.sourceRadioResourceConfig.physicalConfigDedicated =
CALLOC(1, sizeof(LTE_PhysicalConfigDedicated_t));
memcpy((void *)ue_context_pP->ue_context.handover_info->as_config.sourceRadioResourceConfig.physicalConfigDedicated,
(void *)ue_context_pP->ue_context.physicalConfigDedicated, sizeof(LTE_PhysicalConfigDedicated_t));
ue_context_pP->ue_context.handover_info->as_config.sourceRadioResourceConfig.sps_Config = NULL;
//memcpy((void *)rrc_inst->handover_info[ue_mod_idP]->as_config.sourceRadioResourceConfig.sps_Config,(void *)rrc_inst->sps_Config[ue_mod_idP],sizeof(SPS_Config_t));
#endif
//}
/* Initialize NAS list */
/* Initialize NAS list */
dedicatedInfoNASList
=
CALLOC
(
1
,
sizeof
(
struct
LTE_RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList
));
dedicatedInfoNASList
=
CALLOC
(
1
,
sizeof
(
struct
LTE_RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList
));
...
@@ -3370,7 +3306,8 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t *cons
...
@@ -3370,7 +3306,8 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t *cons
// ue_context_pP->ue_context.e_rab[i].param.sgw_addr;
// ue_context_pP->ue_context.e_rab[i].param.sgw_addr;
// ue_context_pP->ue_context.e_rab[i].param.gtp_teid;
// ue_context_pP->ue_context.e_rab[i].param.gtp_teid;
}
}
/* TODO should test if e RAB are Ok before! */
/* TODO should test if e RAB are OK before! */
ue_context_pP
->
ue_context
.
e_rab
[
i
].
status
=
E_RAB_STATUS_DONE
;
ue_context_pP
->
ue_context
.
e_rab
[
i
].
status
=
E_RAB_STATUS_DONE
;
LOG_D
(
RRC
,
"setting the status for the default DRB (index %d) to (%d,%s)
\n
"
,
LOG_D
(
RRC
,
"setting the status for the default DRB (index %d) to (%d,%s)
\n
"
,
i
,
ue_context_pP
->
ue_context
.
e_rab
[
i
].
status
,
"E_RAB_STATUS_DONE"
);
i
,
ue_context_pP
->
ue_context
.
e_rab
[
i
].
status
,
"E_RAB_STATUS_DONE"
);
...
@@ -3385,38 +3322,35 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t *cons
...
@@ -3385,38 +3322,35 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t *cons
x2_enabled
=
is_x2ap_enabled
();
x2_enabled
=
is_x2ap_enabled
();
memset
(
buffer
,
0
,
RRC_BUF_SIZE
);
memset
(
buffer
,
0
,
RRC_BUF_SIZE
);
size
=
do_RRCConnectionReconfiguration
(
ctxt_pP
,
size
=
do_RRCConnectionReconfiguration
(
ctxt_pP
,
buffer
,
buffer
,
xid
,
//Transaction_id,
xid
,
// Transaction_id,
(
LTE_SRB_ToAddModList_t
*
)
*
SRB_configList2
,
// SRB_configList
(
LTE_SRB_ToAddModList_t
*
)
*
SRB_configList2
,
// SRB_configList
(
LTE_DRB_ToAddModList_t
*
)
*
DRB_configList
,
(
LTE_DRB_ToAddModList_t
*
)
*
DRB_configList
,
(
LTE_DRB_ToReleaseList_t
*
)
NULL
,
// DRB2_list,
(
LTE_DRB_ToReleaseList_t
*
)
NULL
,
// DRB2_list,
(
struct
LTE_SPS_Config
*
)
NULL
,
// *sps_Config,
(
struct
LTE_SPS_Config
*
)
NULL
,
// *sps_Config,
(
struct
LTE_PhysicalConfigDedicated
*
)
*
physicalConfigDedicated
,
(
struct
LTE_PhysicalConfigDedicated
*
)
*
physicalConfigDedicated
,
//#ifdef EXMIMO_IOT
x2_enabled
?
(
LTE_MeasObjectToAddModList_t
*
)
MeasObj_list
:
NULL
,
// NULL, NULL, NULL,NULL,
x2_enabled
?
(
LTE_ReportConfigToAddModList_t
*
)
ReportConfig_list
:
NULL
,
//#else
x2_enabled
?
(
LTE_QuantityConfig_t
*
)
quantityConfig
:
NULL
,
x2_enabled
?
(
LTE_MeasObjectToAddModList_t
*
)
MeasObj_list
:
NULL
,
x2_enabled
?
(
LTE_MeasIdToAddModList_t
*
)
MeasId_list
:
NULL
,
x2_enabled
?
(
LTE_ReportConfigToAddModList_t
*
)
ReportConfig_list
:
NULL
,
(
LTE_MAC_MainConfig_t
*
)
mac_MainConfig
,
x2_enabled
?
(
LTE_QuantityConfig_t
*
)
quantityConfig
:
NULL
,
(
LTE_MeasGapConfig_t
*
)
NULL
,
x2_enabled
?
(
LTE_MeasIdToAddModList_t
*
)
MeasId_list
:
NULL
,
(
LTE_MobilityControlInfo_t
*
)
NULL
,
//#endif
(
LTE_SecurityConfigHO_t
*
)
NULL
,
(
LTE_MAC_MainConfig_t
*
)
mac_MainConfig
,
(
struct
LTE_MeasConfig__speedStatePars
*
)
Sparams
,
(
LTE_MeasGapConfig_t
*
)
NULL
,
(
LTE_RSRP_Range_t
*
)
rsrp
,
(
LTE_MobilityControlInfo_t
*
)
NULL
,
(
LTE_C_RNTI_t
*
)
cba_RNTI
,
(
LTE_SecurityConfigHO_t
*
)
NULL
,
(
struct
LTE_RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList
*
)
dedicatedInfoNASList
,
(
struct
LTE_MeasConfig__speedStatePars
*
)
Sparams
,
(
LTE_SL_CommConfig_r12_t
*
)
NULL
,
(
LTE_RSRP_Range_t
*
)
rsrp
,
(
LTE_SL_DiscConfig_r12_t
*
)
NULL
(
LTE_C_RNTI_t
*
)
cba_RNTI
,
(
struct
LTE_RRCConnectionReconfiguration_r8_IEs__dedicatedInfoNASList
*
)
dedicatedInfoNASList
,
(
LTE_SL_CommConfig_r12_t
*
)
NULL
,
(
LTE_SL_DiscConfig_r12_t
*
)
NULL
#if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
#if (LTE_RRC_VERSION >= MAKE_VERSION(10, 0, 0))
,
(
LTE_SCellToAddMod_r10_t
*
)
NULL
,
(
LTE_SCellToAddMod_r10_t
*
)
NULL
#endif
#endif
);
);
LOG_DUMPMSG
(
RRC
,
DEBUG_RRC
,(
char
*
)
buffer
,
size
,
"[MSG] RRC Connection Reconfiguration
\n
"
);
LOG_DUMPMSG
(
RRC
,
DEBUG_RRC
,(
char
*
)
buffer
,
size
,
"[MSG] RRC Connection Reconfiguration
\n
"
);
/* Free all NAS PDUs */
/* Free all NAS PDUs */
for
(
i
=
0
;
i
<
ue_context_pP
->
ue_context
.
nb_of_e_rabs
;
i
++
)
{
for
(
i
=
0
;
i
<
ue_context_pP
->
ue_context
.
nb_of_e_rabs
;
i
++
)
{
...
@@ -3427,14 +3361,22 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t *cons
...
@@ -3427,14 +3361,22 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t *cons
}
}
}
}
LOG_I
(
RRC
,
LOG_I
(
RRC
,
"[eNB %d] Frame %d, Hello there! Logical Channel DL-DCCH, Generate LTE_RRCConnectionReconfiguration (bytes %d, UE id %x)
\n
"
,
"[eNB %d] Frame %d, Hello there! Logical Channel DL-DCCH, Generate LTE_RRCConnectionReconfiguration (bytes %d, UE id %x)
\n
"
,
ctxt_pP
->
module_id
,
ctxt_pP
->
module_id
,
ctxt_pP
->
frame
,
size
,
ue_context_pP
->
ue_context
.
rnti
);
ctxt_pP
->
frame
,
LOG_D
(
RRC
,
size
,
"[FRAME %05d][RRC_eNB][MOD %u][][--- PDCP_DATA_REQ/%d Bytes (rrcConnectionReconfiguration to UE %x MUI %d) --->][PDCP][MOD %u][RB %u]
\n
"
,
ue_context_pP
->
ue_context
.
rnti
);
ctxt_pP
->
frame
,
ctxt_pP
->
module_id
,
size
,
ue_context_pP
->
ue_context
.
rnti
,
rrc_eNB_mui
,
ctxt_pP
->
module_id
,
DCCH
);
MSC_LOG_TX_MESSAGE
(
LOG_D
(
RRC
,
"[FRAME %05d][RRC_eNB][MOD %u][][--- PDCP_DATA_REQ/%d Bytes (rrcConnectionReconfiguration to UE %x MUI %d) --->][PDCP][MOD %u][RB %u]
\n
"
,
MSC_RRC_ENB
,
ctxt_pP
->
frame
,
ctxt_pP
->
module_id
,
size
,
ue_context_pP
->
ue_context
.
rnti
,
rrc_eNB_mui
,
ctxt_pP
->
module_id
,
DCCH
);
MSC_LOG_TX_MESSAGE
(
MSC_RRC_ENB
,
MSC_RRC_UE
,
MSC_RRC_UE
,
buffer
,
buffer
,
size
,
size
,
...
@@ -3443,8 +3385,8 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t *cons
...
@@ -3443,8 +3385,8 @@ rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t *cons
ue_context_pP
->
ue_context
.
rnti
,
ue_context_pP
->
ue_context
.
rnti
,
rrc_eNB_mui
,
rrc_eNB_mui
,
size
);
size
);
rrc_data_req
(
ctxt_pP
,
rrc_data_req
(
ctxt_pP
,
DCCH
,
DCCH
,
rrc_eNB_mui
++
,
rrc_eNB_mui
++
,
SDU_CONFIRM_NO
,
SDU_CONFIRM_NO
,
...
@@ -5506,7 +5448,7 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete(
...
@@ -5506,7 +5448,7 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete(
ue_context_pP
->
ue_context
.
ue_reestablishment_timer
=
0
;
ue_context_pP
->
ue_context
.
ue_reestablishment_timer
=
0
;
ue_context_pP
->
ue_context
.
ue_rrc_inactivity_timer
=
1
;
// reset rrc inactivity timer
ue_context_pP
->
ue_context
.
ue_rrc_inactivity_timer
=
1
;
// reset rrc inactivity timer
/* CDRX: activated */
/* CDRX: activated
because acknowledged
*/
int
UE_id_mac
=
find_UE_id
(
ctxt_pP
->
module_id
,
ue_context_pP
->
ue_context
.
rnti
);
int
UE_id_mac
=
find_UE_id
(
ctxt_pP
->
module_id
,
ue_context_pP
->
ue_context
.
rnti
);
RC
.
mac
[
ctxt_pP
->
module_id
]
->
UE_list
.
UE_sched_ctrl
[
UE_id_mac
].
bypass_cdrx
=
FALSE
;
RC
.
mac
[
ctxt_pP
->
module_id
]
->
UE_list
.
UE_sched_ctrl
[
UE_id_mac
].
bypass_cdrx
=
FALSE
;
...
@@ -5610,17 +5552,16 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete(
...
@@ -5610,17 +5552,16 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete(
if
(
ue_context_pP
->
ue_context
.
DRB_active
[
drb_id
]
==
0
)
{
if
(
ue_context_pP
->
ue_context
.
DRB_active
[
drb_id
]
==
0
)
{
ue_context_pP
->
ue_context
.
DRB_active
[
drb_id
]
=
1
;
ue_context_pP
->
ue_context
.
DRB_active
[
drb_id
]
=
1
;
LOG_D
(
RRC
,
LOG_D
(
RRC
,
"[eNB %d] Frame %d: Establish RLC UM Bidirectional, DRB %d Active
\n
"
,
"[eNB %d] Frame %d: Establish RLC UM Bidirectional, DRB %d Active
\n
"
,
ctxt_pP
->
module_id
,
ctxt_pP
->
frame
,
(
int
)
DRB_configList
->
list
.
array
[
i
]
->
drb_Identity
);
ctxt_pP
->
module_id
,
ctxt_pP
->
frame
,
(
int
)
DRB_configList
->
list
.
array
[
i
]
->
drb_Identity
);
if
(
!
EPC_MODE_ENABLED
&&
!
ENB_NAS_USE_TUN
)
{
if
(
!
EPC_MODE_ENABLED
&&
!
ENB_NAS_USE_TUN
)
{
LOG_I
(
OIP
,
"[eNB %d] trying to bring up the OAI interface oai%d
\n
"
,
LOG_I
(
OIP
,
"[eNB %d] trying to bring up the OAI interface oai%d
\n
"
,
ctxt_pP
->
module_id
,
ctxt_pP
->
module_id
,
ctxt_pP
->
module_id
);
ctxt_pP
->
module_id
);
oip_ifup
=
nas_config
(
ctxt_pP
->
module_id
,
// interface index
oip_ifup
=
nas_config
(
ctxt_pP
->
module_id
,
// interface index
ctxt_pP
->
module_id
+
1
,
// thri
d octet
ctxt_pP
->
module_id
+
1
,
// thir
d octet
ctxt_pP
->
module_id
+
1
,
// fourth octet
ctxt_pP
->
module_id
+
1
,
// fourth octet
"oai"
);
"oai"
);
...
@@ -7626,7 +7567,7 @@ void rrc_subframe_process(protocol_ctxt_t *const ctxt_pP, const int CC_id)
...
@@ -7626,7 +7567,7 @@ void rrc_subframe_process(protocol_ctxt_t *const ctxt_pP, const int CC_id)
pthread_mutex_unlock
(
&
rrc_release_freelist
);
pthread_mutex_unlock
(
&
rrc_release_freelist
);
if
((
ue_context_p
->
ue_context
.
ue_rrc_inactivity_timer
>
0
)
&&
(
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
configuration
.
rrc_inactivity_timer_thres
>
0
))
{
if
((
ue_context_p
->
ue_context
.
ue_rrc_inactivity_timer
>
0
)
&&
(
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
configuration
.
rrc_inactivity_timer_thres
>
0
))
{
ue_context_p
->
ue_context
.
ue_rrc_inactivity_timer
++
;
// (un)comment this line to (de)activate the RRC inactivity timer
ue_context_p
->
ue_context
.
ue_rrc_inactivity_timer
++
;
if
(
ue_context_p
->
ue_context
.
ue_rrc_inactivity_timer
>=
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
configuration
.
rrc_inactivity_timer_thres
)
{
if
(
ue_context_p
->
ue_context
.
ue_rrc_inactivity_timer
>=
RC
.
rrc
[
ctxt_pP
->
module_id
]
->
configuration
.
rrc_inactivity_timer_thres
)
{
LOG_I
(
RRC
,
"Removing UE %x instance because of rrc_inactivity_timer timeout
\n
"
,
LOG_I
(
RRC
,
"Removing UE %x instance because of rrc_inactivity_timer timeout
\n
"
,
...
...
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