Merge branch 'develop' of https://gitlab.eurecom.fr/oai/openairinterface5g into rh_ci_py
This commit is contained in:
@@ -21,3 +21,7 @@ The Regents of the University of California: BSD 3-Clause Licence.
|
|||||||
|
|
||||||
Niels Provos <provos@citi.umich.edu>: BSD 2-Clause Licence.
|
Niels Provos <provos@citi.umich.edu>: BSD 2-Clause Licence.
|
||||||
|
|
||||||
|
## Credits for source code openair3/GTPV1-U/nw-gtpv1u: ##
|
||||||
|
|
||||||
|
Amit Chawre <http://www.amitchawre.net/contact.html>: BSD 2-Clause Licence.
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ def sendSocialMediaMessage(pipeChannel, pipeColor, pipeMessage) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
def doRedHatBuild = false
|
|
||||||
def doFlexranCtrlTest = false
|
def doFlexranCtrlTest = false
|
||||||
|
|
||||||
// Location of the executor node
|
// Location of the executor node
|
||||||
@@ -85,21 +84,6 @@ pipeline {
|
|||||||
echo "Platform is ${env.TESTPLATFORM_OWNER}"
|
echo "Platform is ${env.TESTPLATFORM_OWNER}"
|
||||||
}
|
}
|
||||||
|
|
||||||
if (params.RedHatRemoteServer == null) {
|
|
||||||
allParametersPresent = false
|
|
||||||
}
|
|
||||||
if (params.RedHatRemoteCredentials == null) {
|
|
||||||
allParametersPresent = false
|
|
||||||
}
|
|
||||||
if (params.RedHatWorkingPath == null) {
|
|
||||||
allParametersPresent = false
|
|
||||||
}
|
|
||||||
if (allParametersPresent) {
|
|
||||||
echo "Performing Red Hat Build"
|
|
||||||
doRedHatBuild = true
|
|
||||||
} else {
|
|
||||||
doRedHatBuild = false
|
|
||||||
}
|
|
||||||
if (params.FlexRanRtcGitLabRepository_Credentials != null) {
|
if (params.FlexRanRtcGitLabRepository_Credentials != null) {
|
||||||
doFlexranCtrlTest = true
|
doFlexranCtrlTest = true
|
||||||
}
|
}
|
||||||
@@ -279,7 +263,7 @@ pipeline {
|
|||||||
steps {
|
steps {
|
||||||
gitlabCommitStatus(name: "Build eNB-USRP") {
|
gitlabCommitStatus(name: "Build eNB-USRP") {
|
||||||
timeout (time: 20, unit: 'MINUTES') {
|
timeout (time: 20, unit: 'MINUTES') {
|
||||||
sh "./ci-scripts/oai-ci-vm-tool wait --workspace $WORKSPACE --variant enb-usrp --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive"
|
sh "./ci-scripts/oai-ci-vm-tool wait --workspace $WORKSPACE --variant enb-usrp --job-name ${JOB_NAME} --build-id ${BUILD_ID}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -311,28 +295,6 @@ pipeline {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
stage ("Build eNB-USRP on Red Hat") {
|
|
||||||
when {
|
|
||||||
expression {doRedHatBuild}
|
|
||||||
}
|
|
||||||
steps {
|
|
||||||
gitlabCommitStatus(name: "Build eNB-USRP-RHE") {
|
|
||||||
script {
|
|
||||||
try {
|
|
||||||
withCredentials([
|
|
||||||
[$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.RedHatRemoteCredentials}", usernameVariable: 'RH_Username', passwordVariable: 'RH_Password']
|
|
||||||
]) {
|
|
||||||
timeout (time: 20, unit: 'MINUTES') {
|
|
||||||
sh "./ci-scripts/buildOnRH.sh --workspace $WORKSPACE --job-name ${JOB_NAME} --build-id ${BUILD_ID} --remote-host ${params.RedHatRemoteServer} --remote-path ${params.RedHatWorkingPath} --remote-user-name ${RH_Username} --remote-password ${RH_Password}"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
echo "Red Hat build failed but we could keep running pipeline if all ubuntu-based build passed"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
post {
|
post {
|
||||||
failure {
|
failure {
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ then
|
|||||||
IS_NFAPI=`echo $FILE | egrep -c "nfapi/open-nFAPI|nfapi/oai_integration/vendor_ext"`
|
IS_NFAPI=`echo $FILE | egrep -c "nfapi/open-nFAPI|nfapi/oai_integration/vendor_ext"`
|
||||||
IS_OAI_LICENCE_PRESENT=`egrep -c "OAI Public License" $FILE`
|
IS_OAI_LICENCE_PRESENT=`egrep -c "OAI Public License" $FILE`
|
||||||
IS_BSD_LICENCE_PRESENT=`egrep -c "the terms of the BSD Licence" $FILE`
|
IS_BSD_LICENCE_PRESENT=`egrep -c "the terms of the BSD Licence" $FILE`
|
||||||
IS_EXCEPTION=`echo $FILE | egrep -c "common/utils/collection/tree.h|common/utils/collection/queue.h|common/utils/itti_analyzer/common/queue.h|openair3/UTILS/tree.h|openair3/UTILS/queue.h"`
|
IS_EXCEPTION=`echo $FILE | egrep -c "common/utils/collection/tree.h|common/utils/collection/queue.h|common/utils/itti_analyzer/common/queue.h|openair3/UTILS/tree.h|openair3/UTILS/queue.h|openair3/GTPV1-U/nw-gtpv1u|openair2/UTIL/OPT/ws_"`
|
||||||
if [ $IS_OAI_LICENCE_PRESENT -eq 0 ] && [ $IS_BSD_LICENCE_PRESENT -eq 0 ]
|
if [ $IS_OAI_LICENCE_PRESENT -eq 0 ] && [ $IS_BSD_LICENCE_PRESENT -eq 0 ]
|
||||||
then
|
then
|
||||||
if [ $IS_NFAPI -eq 0 ] && [ $IS_EXCEPTION -eq 0 ]
|
if [ $IS_NFAPI -eq 0 ] && [ $IS_EXCEPTION -eq 0 ]
|
||||||
@@ -194,12 +194,12 @@ do
|
|||||||
IS_NFAPI=`echo $FULLFILE | egrep -c "nfapi/open-nFAPI|nfapi/oai_integration/vendor_ext"`
|
IS_NFAPI=`echo $FULLFILE | egrep -c "nfapi/open-nFAPI|nfapi/oai_integration/vendor_ext"`
|
||||||
IS_OAI_LICENCE_PRESENT=`egrep -c "OAI Public License" $FULLFILE`
|
IS_OAI_LICENCE_PRESENT=`egrep -c "OAI Public License" $FULLFILE`
|
||||||
IS_BSD_LICENCE_PRESENT=`egrep -c "the terms of the BSD Licence" $FULLFILE`
|
IS_BSD_LICENCE_PRESENT=`egrep -c "the terms of the BSD Licence" $FULLFILE`
|
||||||
IS_EXCEPTION=`echo $FILE | egrep -c "common/utils/collection/tree.h|common/utils/collection/queue.h|common/utils/itti_analyzer/common/queue.h|openair3/UTILS/tree.h|openair3/UTILS/queue.h"`
|
IS_EXCEPTION=`echo $FULLFILE | egrep -c "common/utils/collection/tree.h|common/utils/collection/queue.h|common/utils/itti_analyzer/common/queue.h|openair3/UTILS/tree.h|openair3/UTILS/queue.h|openair3/GTPV1-U/nw-gtpv1u|openair2/UTIL/OPT/ws_"`
|
||||||
if [ $IS_OAI_LICENCE_PRESENT -eq 0 ] && [ $IS_BSD_LICENCE_PRESENT -eq 0 ]
|
if [ $IS_OAI_LICENCE_PRESENT -eq 0 ] && [ $IS_BSD_LICENCE_PRESENT -eq 0 ]
|
||||||
then
|
then
|
||||||
if [ $IS_NFAPI -eq 0 ] && [ $IS_EXCEPTION -eq 0 ]
|
if [ $IS_NFAPI -eq 0 ] && [ $IS_EXCEPTION -eq 0 ]
|
||||||
then
|
then
|
||||||
echo $FILE >> ./files-w-suspect-banner.txt
|
echo $FULLFILE >> ./files-w-suspect-banner.txt
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#ifndef _TRACER_DEFS_H_
|
#ifndef _COMMON_UTILS_T_DEFS_H_
|
||||||
#define _TRACER_DEFS_H_
|
#define _COMMON_UTILS_T_DEFS_H_
|
||||||
|
|
||||||
/* types of plots */
|
/* types of plots */
|
||||||
#define PLOT_VS_TIME 0
|
#define PLOT_VS_TIME 0
|
||||||
@@ -27,4 +27,4 @@ void *forwarder(char *ip, int port);
|
|||||||
void forward(void *forwarder, char *buf, int size);
|
void forward(void *forwarder, char *buf, int size);
|
||||||
void forward_start_client(void *forwarder, int socket);
|
void forward_start_client(void *forwarder, int socket);
|
||||||
|
|
||||||
#endif /* _TRACER_DEFS_H_ */
|
#endif /* _COMMON_UTILS_T_DEFS_H_ */
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#ifndef _TRACER_DEFS_H_
|
#ifndef _COMMON_UTILS_T_TRACER_DEFS_H_
|
||||||
#define _TRACER_DEFS_H_
|
#define _COMMON_UTILS_T_TRACER_DEFS_H_
|
||||||
|
|
||||||
/* types of plots */
|
/* types of plots */
|
||||||
#define PLOT_VS_TIME 0
|
#define PLOT_VS_TIME 0
|
||||||
@@ -21,4 +21,4 @@ void t_gui_start(void);
|
|||||||
void t_gui_set_input_signal(int eNB, int frame, int subframe, int antenna,
|
void t_gui_set_input_signal(int eNB, int frame, int subframe, int antenna,
|
||||||
int size, void *buf);
|
int size, void *buf);
|
||||||
|
|
||||||
#endif /* _TRACER_DEFS_H_ */
|
#endif /* _COMMON_UTILS_T_TRACER_DEFS_H_ */
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ STATUS 2020/09/10 : updated the status of interop (end to end UL/DL traffic)
|
|||||||
7. [Log file monitoring](#log-file-monitoring)
|
7. [Log file monitoring](#log-file-monitoring)
|
||||||
6. [Required tools for debug](#required-tools-for-debug)
|
6. [Required tools for debug](#required-tools-for-debug)
|
||||||
7. [Status of interoperability](#status-of-interoperability)
|
7. [Status of interoperability](#status-of-interoperability)
|
||||||
|
8. [CI integration](#ci-integration)
|
||||||
|
|
||||||
## Configuration Overview
|
## Configuration Overview
|
||||||
|
|
||||||
@@ -70,7 +71,7 @@ cd cmake_targets/
|
|||||||
- **EPC**
|
- **EPC**
|
||||||
|
|
||||||
for reference:
|
for reference:
|
||||||
https://github.com/OPENAIRINTERFACE/openair-epc-fed/blob/master-documentation/docs/DEPLOY_HOME.md
|
https://github.com/OPENAIRINTERFACE/openair-epc-fed/blob/master/docs/DEPLOY_HOME.md
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -204,7 +205,7 @@ The test takes typically a few seconds, max 10-15 seconds. If it takes more than
|
|||||||
- **EPC** (on EPC host):
|
- **EPC** (on EPC host):
|
||||||
|
|
||||||
for reference:
|
for reference:
|
||||||
https://github.com/OPENAIRINTERFACE/openair-epc-fed/blob/master-documentation/docs/DEPLOY_HOME.md
|
https://github.com/OPENAIRINTERFACE/openair-epc-fed/blob/master/docs/DEPLOY_HOME.md
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -384,3 +385,16 @@ The following parts have been validated with FR1 COTS UE:
|
|||||||
some packet losses might still occur even in ideal channel conditions
|
some packet losses might still occur even in ideal channel conditions
|
||||||
|
|
||||||
|
|
||||||
|
## CI integration
|
||||||
|
The automation scripts are available on ILIADE.
|
||||||
|
The end-to-end test is integrated in the CI flow in a semi-automated manner, comprising 3 steps:
|
||||||
|
- update a YAML file comprising the IT resources definition, branch and commit number the test has to run on
|
||||||
|
- run the python script that generates the test from the YAML file
|
||||||
|
```
|
||||||
|
python3 obj_build_from_yaml.py py_params_template.yaml fr1.sh
|
||||||
|
```
|
||||||
|
- run the test (fr1.sh)
|
||||||
|
|
||||||
|
At the date of writing, the test comprises the deployment of the components (epc, eNB, gNB, cots ue) and the execution of 2 pings procedures (20 pings in 20sec, then 5 pings in 1sec)
|
||||||
|
|
||||||
|
This automation is run for every integration branch to be merged into develop.
|
||||||
|
|||||||
+3
-3
@@ -21,8 +21,8 @@
|
|||||||
|
|
||||||
/* Header file generated by fdesign on Thu Aug 28 12:13:51 2014 */
|
/* Header file generated by fdesign on Thu Aug 28 12:13:51 2014 */
|
||||||
|
|
||||||
#ifndef FD_stats_form_h_
|
#ifndef _EXECUTABLES_STATS_H_
|
||||||
#define FD_stats_form_h_
|
#define _EXECUTABLES_STATS_H_
|
||||||
|
|
||||||
#include <forms.h>
|
#include <forms.h>
|
||||||
|
|
||||||
@@ -43,4 +43,4 @@ typedef struct {
|
|||||||
|
|
||||||
extern FD_stats_form *create_form_stats_form( void );
|
extern FD_stats_form *create_form_stats_form( void );
|
||||||
|
|
||||||
#endif /* FD_stats_form_h_ */
|
#endif /* _EXECUTABLES_STATS_H_ */
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#ifndef _THREADS_T_H_
|
#ifndef _EXECUTABLES_THREADS_T_H_
|
||||||
#define _THREADS_T_H_
|
#define _EXECUTABLES_THREADS_T_H_
|
||||||
|
|
||||||
typedef struct threads_s {
|
typedef struct threads_s {
|
||||||
int main;
|
int main;
|
||||||
@@ -18,4 +18,4 @@ typedef struct threads_s {
|
|||||||
//int dlsch_td1_three;
|
//int dlsch_td1_three;
|
||||||
} threads_t;
|
} threads_t;
|
||||||
|
|
||||||
#endif /* _THREADS_T_H_ */
|
#endif /* _EXECUTABLES_THREADS_T_H_ */
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ int nr_find_pucch(uint16_t rnti,
|
|||||||
AssertFatal(gNB!=NULL,"gNB is null\n");
|
AssertFatal(gNB!=NULL,"gNB is null\n");
|
||||||
int index = -1;
|
int index = -1;
|
||||||
|
|
||||||
for (int i=0; i<NUMBER_OF_NR_ULSCH_MAX; i++) {
|
for (int i=0; i<NUMBER_OF_NR_PUCCH_MAX; i++) {
|
||||||
AssertFatal(gNB->pucch[i]!=NULL,"gNB->pucch[%d] is null\n",i);
|
AssertFatal(gNB->pucch[i]!=NULL,"gNB->pucch[%d] is null\n",i);
|
||||||
if ((gNB->pucch[i]->active >0) &&
|
if ((gNB->pucch[i]->active >0) &&
|
||||||
(gNB->pucch[i]->pucch_pdu.rnti==rnti) &&
|
(gNB->pucch[i]->pucch_pdu.rnti==rnti) &&
|
||||||
|
|||||||
@@ -442,6 +442,11 @@ void gNB_dlsch_ulsch_scheduler(module_id_t module_idP,
|
|||||||
|
|
||||||
pdcp_run(&ctxt);
|
pdcp_run(&ctxt);
|
||||||
//rrc_rx_tx(&ctxt, CC_id);
|
//rrc_rx_tx(&ctxt, CC_id);
|
||||||
|
/* send tick to RLC every ms */
|
||||||
|
if ((slot & ((1 << *scc->ssbSubcarrierSpacing) - 1)) == 0) {
|
||||||
|
void nr_rlc_tick(int frame, int subframe);
|
||||||
|
nr_rlc_tick(frame, slot >> *scc->ssbSubcarrierSpacing);
|
||||||
|
}
|
||||||
|
|
||||||
dlsch_in_slot_bitmap = &RC.nrmac[module_idP]->UE_list.UE_sched_ctrl[UE_id].dlsch_in_slot_bitmap; // static bitmap signaling which slot in a tdd period contains dlsch
|
dlsch_in_slot_bitmap = &RC.nrmac[module_idP]->UE_list.UE_sched_ctrl[UE_id].dlsch_in_slot_bitmap; // static bitmap signaling which slot in a tdd period contains dlsch
|
||||||
ulsch_in_slot_bitmap = &RC.nrmac[module_idP]->UE_list.UE_sched_ctrl[UE_id].ulsch_in_slot_bitmap; // static bitmap signaling which slot in a tdd period contains ulsch
|
ulsch_in_slot_bitmap = &RC.nrmac[module_idP]->UE_list.UE_sched_ctrl[UE_id].ulsch_in_slot_bitmap; // static bitmap signaling which slot in a tdd period contains ulsch
|
||||||
|
|||||||
@@ -158,14 +158,6 @@ mac_rlc_status_resp_t mac_rlc_status_ind(
|
|||||||
mac_rlc_status_resp_t ret;
|
mac_rlc_status_resp_t ret;
|
||||||
nr_rlc_entity_t *rb;
|
nr_rlc_entity_t *rb;
|
||||||
|
|
||||||
/* TODO: handle time a bit more properly */
|
|
||||||
if (nr_rlc_current_time_last_frame != frameP ||
|
|
||||||
nr_rlc_current_time_last_subframe != subframeP) {
|
|
||||||
nr_rlc_current_time++;
|
|
||||||
nr_rlc_current_time_last_frame = frameP;
|
|
||||||
nr_rlc_current_time_last_subframe = subframeP;
|
|
||||||
}
|
|
||||||
|
|
||||||
nr_rlc_manager_lock(nr_rlc_ue_manager);
|
nr_rlc_manager_lock(nr_rlc_ue_manager);
|
||||||
ue = nr_rlc_manager_get_ue(nr_rlc_ue_manager, rntiP);
|
ue = nr_rlc_manager_get_ue(nr_rlc_ue_manager, rntiP);
|
||||||
|
|
||||||
@@ -921,3 +913,10 @@ 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 nr_rlc_tick(int frame, int subframe)
|
||||||
|
{
|
||||||
|
if (frame != nr_rlc_current_time_last_frame ||
|
||||||
|
subframe != nr_rlc_current_time_last_subframe)
|
||||||
|
nr_rlc_current_time++;
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#ifndef _LOG_H_
|
#ifndef _NR_RLC_TESTS_LOG_H_
|
||||||
#define _LOG_H_
|
#define _NR_RLC_TESTS_LOG_H_
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
@@ -7,4 +7,4 @@
|
|||||||
#define LOG_D(x, ...) printf(__VA_ARGS__)
|
#define LOG_D(x, ...) printf(__VA_ARGS__)
|
||||||
#define LOG_W(x, ...) printf(__VA_ARGS__)
|
#define LOG_W(x, ...) printf(__VA_ARGS__)
|
||||||
|
|
||||||
#endif /* _LOG_H_ */
|
#endif /* _NR_RLC_TESTS_LOG_H_ */
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#ifndef _LOG_H_
|
#ifndef _RLC_V2_TESTS_LOG_H_
|
||||||
#define _LOG_H_
|
#define _RLC_V2_TESTS_LOG_H_
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
@@ -7,4 +7,4 @@
|
|||||||
#define LOG_D(x, ...) printf(__VA_ARGS__)
|
#define LOG_D(x, ...) printf(__VA_ARGS__)
|
||||||
#define LOG_W(x, ...) printf(__VA_ARGS__)
|
#define LOG_W(x, ...) printf(__VA_ARGS__)
|
||||||
|
|
||||||
#endif /* _LOG_H_ */
|
#endif /* _RLC_V2_TESTS_LOG_H_ */
|
||||||
|
|||||||
+172
-165
@@ -155,7 +155,6 @@ init_SI(
|
|||||||
LOG_D(RRC,"%s()\n\n\n\n",__FUNCTION__);
|
LOG_D(RRC,"%s()\n\n\n\n",__FUNCTION__);
|
||||||
|
|
||||||
if(configuration->radioresourceconfig[CC_id].mbms_dedicated_serving_cell == TRUE) {
|
if(configuration->radioresourceconfig[CC_id].mbms_dedicated_serving_cell == TRUE) {
|
||||||
|
|
||||||
LOG_I(RRC, "Configuring MIB FeMBMS (N_RB_DL %d)\n",
|
LOG_I(RRC, "Configuring MIB FeMBMS (N_RB_DL %d)\n",
|
||||||
(int)configuration->N_RB_DL[CC_id]);
|
(int)configuration->N_RB_DL[CC_id]);
|
||||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].MIB_FeMBMS = (uint8_t *) malloc16(4);
|
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].MIB_FeMBMS = (uint8_t *) malloc16(4);
|
||||||
@@ -500,13 +499,17 @@ init_SI(
|
|||||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].FeMBMS_flag,
|
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].FeMBMS_flag,
|
||||||
(carrier->sib1_MBMS==NULL?(LTE_BCCH_DL_SCH_Message_MBMS_t *) NULL:(LTE_BCCH_DL_SCH_Message_MBMS_t *)carrier->sib1_MBMS),//(LTE_BCCH_DL_SCH_Message_MBMS_t *) NULL,
|
(carrier->sib1_MBMS==NULL?(LTE_BCCH_DL_SCH_Message_MBMS_t *) NULL:(LTE_BCCH_DL_SCH_Message_MBMS_t *)carrier->sib1_MBMS),//(LTE_BCCH_DL_SCH_Message_MBMS_t *) NULL,
|
||||||
(LTE_SchedulingInfo_MBMS_r14_t *) NULL,
|
(LTE_SchedulingInfo_MBMS_r14_t *) NULL,
|
||||||
(carrier->sib1_MBMS==NULL?(struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL:(struct LTE_NonMBSFN_SubframeConfig_r14 *)carrier->sib1_MBMS->nonMBSFN_SubframeConfig_r14),//(struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL,
|
(carrier->sib1_MBMS==NULL
|
||||||
(carrier->sib1_MBMS==NULL?(LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL:(LTE_SystemInformationBlockType1_MBMS_r14_t *)carrier->sib1_MBMS->systemInformationBlockType13_r14),//(LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL,
|
? (struct LTE_NonMBSFN_SubframeConfig_r14 *)NULL
|
||||||
(carrier->sib1_MBMS==NULL?(LTE_MBSFN_AreaInfoList_r9_t *) NULL:(LTE_MBSFN_AreaInfoList_r9_t *)&carrier->sib1_MBMS->systemInformationBlockType13_r14->mbsfn_AreaInfoList_r9)//(LTE_MBSFN_AreaInfoList_r9_t *) NULL
|
: (struct LTE_NonMBSFN_SubframeConfig_r14 *)carrier->sib1_MBMS->nonMBSFN_SubframeConfig_r14),//(struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL,
|
||||||
|
(carrier->sib1_MBMS==NULL
|
||||||
,(LTE_MBSFNAreaConfiguration_r9_t*) NULL
|
? (LTE_SystemInformationBlockType1_MBMS_r14_t *)NULL
|
||||||
|
: (LTE_SystemInformationBlockType1_MBMS_r14_t *)carrier->sib1_MBMS->systemInformationBlockType13_r14),//(LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL,
|
||||||
);
|
(carrier->sib1_MBMS==NULL
|
||||||
|
? (LTE_MBSFN_AreaInfoList_r9_t *)NULL
|
||||||
|
: (LTE_MBSFN_AreaInfoList_r9_t *)&carrier->sib1_MBMS->systemInformationBlockType13_r14->mbsfn_AreaInfoList_r9),//(LTE_MBSFN_AreaInfoList_r9_t *) NULL,
|
||||||
|
(LTE_MBSFNAreaConfiguration_r9_t *)NULL
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* set flag to indicate that cell information is configured. This is required
|
/* set flag to indicate that cell information is configured. This is required
|
||||||
@@ -590,7 +593,7 @@ init_MCCH(
|
|||||||
(struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL,
|
(struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL,
|
||||||
(LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL,
|
(LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL,
|
||||||
(LTE_MBSFN_AreaInfoList_r9_t *) NULL,
|
(LTE_MBSFN_AreaInfoList_r9_t *) NULL,
|
||||||
(LTE_MBSFNAreaConfiguration_r9_t*) NULL
|
(LTE_MBSFNAreaConfiguration_r9_t *) NULL
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1040,59 +1043,59 @@ void release_UE_in_freeList(module_id_t mod_id) {
|
|||||||
|
|
||||||
for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) {
|
for (CC_id = 0; CC_id < MAX_NUM_CCs; CC_id++) {
|
||||||
eNB_PHY = RC.eNB[mod_id][CC_id];
|
eNB_PHY = RC.eNB[mod_id][CC_id];
|
||||||
|
int id;
|
||||||
|
// clean ULSCH entries for rnti
|
||||||
|
id = find_ulsch(rnti,eNB_PHY,SEARCH_EXIST);
|
||||||
|
|
||||||
int id;
|
|
||||||
|
|
||||||
// clean ULSCH entries for rnti
|
|
||||||
id = find_ulsch(rnti,eNB_PHY,SEARCH_EXIST);
|
|
||||||
if (id>=0) clean_eNb_ulsch(eNB_PHY->ulsch[id]);
|
if (id>=0) clean_eNb_ulsch(eNB_PHY->ulsch[id]);
|
||||||
|
|
||||||
// clean DLSCH entries for rnti
|
// clean DLSCH entries for rnti
|
||||||
id = find_dlsch(rnti,eNB_PHY,SEARCH_EXIST);
|
id = find_dlsch(rnti,eNB_PHY,SEARCH_EXIST);
|
||||||
|
|
||||||
if (id>=0) clean_eNb_dlsch(eNB_PHY->dlsch[id][0]);
|
if (id>=0) clean_eNb_dlsch(eNB_PHY->dlsch[id][0]);
|
||||||
|
|
||||||
// clean UCI entries for rnti
|
// clean UCI entries for rnti
|
||||||
for (i=0; i<NUMBER_OF_UCI_VARS_MAX; i++) {
|
for (i=0; i<NUMBER_OF_UCI_VARS_MAX; i++) {
|
||||||
if(eNB_PHY->uci_vars[i].rnti == rnti) {
|
if(eNB_PHY->uci_vars[i].rnti == rnti) {
|
||||||
LOG_I(MAC, "clean eNb uci_vars[%d] UE %x \n",i, rnti);
|
LOG_I(MAC, "clean eNb uci_vars[%d] UE %x \n",i, rnti);
|
||||||
memset(&eNB_PHY->uci_vars[i],0,sizeof(LTE_eNB_UCI));
|
memset(&eNB_PHY->uci_vars[i],0,sizeof(LTE_eNB_UCI));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
for (i=0; i<MAX_MOBILES_PER_ENB; i++) {
|
|
||||||
ulsch = eNB_PHY->ulsch[i];
|
|
||||||
|
|
||||||
if((ulsch != NULL) && (ulsch->rnti == rnti)) {
|
/*
|
||||||
void clean_eNb_ulsch(LTE_eNB_ULSCH_t *ulsch);
|
for (i=0; i<MAX_MOBILES_PER_ENB; i++) {
|
||||||
LOG_I(RRC, "clean_eNb_ulsch ulsch[%d] UE %x\n", i, rnti);
|
ulsch = eNB_PHY->ulsch[i];
|
||||||
clean_eNb_ulsch(ulsch);
|
|
||||||
}
|
|
||||||
|
|
||||||
dlsch = eNB_PHY->dlsch[i][0];
|
if((ulsch != NULL) && (ulsch->rnti == rnti)) {
|
||||||
|
void clean_eNb_ulsch(LTE_eNB_ULSCH_t *ulsch);
|
||||||
|
LOG_I(RRC, "clean_eNb_ulsch ulsch[%d] UE %x\n", i, rnti);
|
||||||
|
clean_eNb_ulsch(ulsch);
|
||||||
|
}
|
||||||
|
|
||||||
if((dlsch != NULL) && (dlsch->rnti == rnti)) {
|
dlsch = eNB_PHY->dlsch[i][0];
|
||||||
void clean_eNb_dlsch(LTE_eNB_DLSCH_t *dlsch);
|
|
||||||
LOG_I(RRC, "clean_eNb_dlsch dlsch[%d] UE %x \n", i, rnti);
|
|
||||||
clean_eNb_dlsch(dlsch);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ulsch = eNB_PHY->ulsch[i];
|
if((dlsch != NULL) && (dlsch->rnti == rnti)) {
|
||||||
|
void clean_eNb_dlsch(LTE_eNB_DLSCH_t *dlsch);
|
||||||
|
LOG_I(RRC, "clean_eNb_dlsch dlsch[%d] UE %x \n", i, rnti);
|
||||||
|
clean_eNb_dlsch(dlsch);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if((ulsch != NULL) && (ulsch->rnti == rnti)) {
|
ulsch = eNB_PHY->ulsch[i];
|
||||||
void clean_eNb_ulsch(LTE_eNB_ULSCH_t *ulsch);
|
|
||||||
LOG_I(RRC, "clean_eNb_ulsch ulsch[%d] UE %x\n", i, rnti);
|
|
||||||
clean_eNb_ulsch(ulsch);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i=0; i<NUMBER_OF_UCI_VARS_MAX; i++) {
|
if((ulsch != NULL) && (ulsch->rnti == rnti)) {
|
||||||
if(eNB_PHY->uci_vars[i].rnti == rnti) {
|
void clean_eNb_ulsch(LTE_eNB_ULSCH_t *ulsch);
|
||||||
LOG_I(MAC, "clean eNb uci_vars[%d] UE %x \n",i, rnti);
|
LOG_I(RRC, "clean_eNb_ulsch ulsch[%d] UE %x\n", i, rnti);
|
||||||
memset(&eNB_PHY->uci_vars[i],0,sizeof(LTE_eNB_UCI));
|
clean_eNb_ulsch(ulsch);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
*/
|
for (i=0; i<NUMBER_OF_UCI_VARS_MAX; i++) {
|
||||||
|
if(eNB_PHY->uci_vars[i].rnti == rnti) {
|
||||||
|
LOG_I(MAC, "clean eNb uci_vars[%d] UE %x \n",i, rnti);
|
||||||
|
memset(&eNB_PHY->uci_vars[i],0,sizeof(LTE_eNB_UCI));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
if (flexran_agent_get_rrc_xface(mod_id)) {
|
if (flexran_agent_get_rrc_xface(mod_id)) {
|
||||||
flexran_agent_get_rrc_xface(mod_id)->flexran_agent_notify_ue_state_change(
|
flexran_agent_get_rrc_xface(mod_id)->flexran_agent_notify_ue_state_change(
|
||||||
@@ -1488,7 +1491,7 @@ rrc_eNB_generate_RRCConnectionReestablishment(
|
|||||||
(struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL,
|
(struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL,
|
||||||
(LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL,
|
(LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL,
|
||||||
(LTE_MBSFN_AreaInfoList_r9_t *) NULL,
|
(LTE_MBSFN_AreaInfoList_r9_t *) NULL,
|
||||||
(LTE_MBSFNAreaConfiguration_r9_t*) NULL
|
(LTE_MBSFNAreaConfiguration_r9_t *) NULL
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -2190,7 +2193,6 @@ rrc_eNB_generate_RRCConnectionRelease(
|
|||||||
uint8_t buffer[RRC_BUF_SIZE];
|
uint8_t buffer[RRC_BUF_SIZE];
|
||||||
uint16_t size = 0;
|
uint16_t size = 0;
|
||||||
int release_num;
|
int release_num;
|
||||||
|
|
||||||
memset(buffer, 0, RRC_BUF_SIZE);
|
memset(buffer, 0, RRC_BUF_SIZE);
|
||||||
T(T_ENB_RRC_CONNECTION_RELEASE, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
|
T(T_ENB_RRC_CONNECTION_RELEASE, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
|
||||||
T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
|
T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
|
||||||
@@ -3281,7 +3283,8 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t
|
|||||||
|
|
||||||
MeasObj2->measObjectId = 2;
|
MeasObj2->measObjectId = 2;
|
||||||
MeasObj2->measObject.present = LTE_MeasObjectToAddMod__measObject_PR_measObjectNR_r15;
|
MeasObj2->measObject.present = LTE_MeasObjectToAddMod__measObject_PR_measObjectNR_r15;
|
||||||
MeasObj2->measObject.choice.measObjectNR_r15.carrierFreq_r15 =641272; //634000; //(634000 = 3.51GHz) (640000 = 3.6GHz) (641272 = 3619.08MHz = 3600 + 30/1000*106*12/2) (642256 is for 3.6GHz and absoluteFrequencySSB = 642016)
|
MeasObj2->measObject.choice.measObjectNR_r15.carrierFreq_r15 = 641272;
|
||||||
|
//634000; //(634000 = 3.51GHz) (640000 = 3.6GHz) (641272 = 3619.08MHz = 3600 + 30/1000*106*12/2) (642256 is for 3.6GHz and absoluteFrequencySSB = 642016)
|
||||||
MeasObj2->measObject.choice.measObjectNR_r15.rs_ConfigSSB_r15.measTimingConfig_r15.periodicityAndOffset_r15.present = LTE_MTC_SSB_NR_r15__periodicityAndOffset_r15_PR_sf20_r15;
|
MeasObj2->measObject.choice.measObjectNR_r15.rs_ConfigSSB_r15.measTimingConfig_r15.periodicityAndOffset_r15.present = LTE_MTC_SSB_NR_r15__periodicityAndOffset_r15_PR_sf20_r15;
|
||||||
MeasObj2->measObject.choice.measObjectNR_r15.rs_ConfigSSB_r15.measTimingConfig_r15.periodicityAndOffset_r15.choice.sf20_r15 = 0;
|
MeasObj2->measObject.choice.measObjectNR_r15.rs_ConfigSSB_r15.measTimingConfig_r15.periodicityAndOffset_r15.choice.sf20_r15 = 0;
|
||||||
MeasObj2->measObject.choice.measObjectNR_r15.rs_ConfigSSB_r15.measTimingConfig_r15.ssb_Duration_r15 = LTE_MTC_SSB_NR_r15__ssb_Duration_r15_sf4;
|
MeasObj2->measObject.choice.measObjectNR_r15.rs_ConfigSSB_r15.measTimingConfig_r15.ssb_Duration_r15 = LTE_MTC_SSB_NR_r15__ssb_Duration_r15_sf4;
|
||||||
@@ -3593,20 +3596,19 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t
|
|||||||
size,
|
size,
|
||||||
buffer,
|
buffer,
|
||||||
PDCP_TRANSMISSION_MODE_CONTROL);
|
PDCP_TRANSMISSION_MODE_CONTROL);
|
||||||
|
|
||||||
/* Refresh SRBs/DRBs */
|
/* Refresh SRBs/DRBs */
|
||||||
rrc_pdcp_config_asn1_req(ctxt_pP,
|
rrc_pdcp_config_asn1_req(ctxt_pP,
|
||||||
*SRB_configList2, // NULL,
|
*SRB_configList2, // NULL,
|
||||||
*DRB_configList,
|
*DRB_configList,
|
||||||
NULL,
|
NULL,
|
||||||
0xff, // already configured during the securitymodecommand
|
0xff, // already configured during the securitymodecommand
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
NULL
|
NULL
|
||||||
#if (LTE_RRC_VERSION >= MAKE_VERSION(9, 0, 0))
|
#if (LTE_RRC_VERSION >= MAKE_VERSION(9, 0, 0))
|
||||||
, (LTE_PMCH_InfoList_r9_t *) NULL
|
, (LTE_PMCH_InfoList_r9_t *) NULL
|
||||||
#endif
|
#endif
|
||||||
, NULL);
|
, NULL);
|
||||||
|
|
||||||
/* Refresh SRBs/DRBs */
|
/* Refresh SRBs/DRBs */
|
||||||
if (!NODE_IS_CU(RC.rrc[ctxt_pP->module_id]->node_type)) {
|
if (!NODE_IS_CU(RC.rrc[ctxt_pP->module_id]->node_type)) {
|
||||||
@@ -3619,7 +3621,7 @@ void rrc_eNB_generate_defaultRRCConnectionReconfiguration(const protocol_ctxt_t
|
|||||||
0,
|
0,
|
||||||
0
|
0
|
||||||
#endif
|
#endif
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
free(Sparams);
|
free(Sparams);
|
||||||
@@ -4666,7 +4668,7 @@ rrc_eNB_process_MeasurementReport(
|
|||||||
for (int e_rab=0; e_rab < X2AP_ENDC_SGNB_ADDITION_REQ(msg).nb_e_rabs_tobeadded; e_rab++) {
|
for (int e_rab=0; e_rab < X2AP_ENDC_SGNB_ADDITION_REQ(msg).nb_e_rabs_tobeadded; e_rab++) {
|
||||||
X2AP_ENDC_SGNB_ADDITION_REQ(msg).e_rabs_tobeadded[e_rab].e_rab_id = ue_context_pP->ue_context.e_rab[e_rab].param.e_rab_id;
|
X2AP_ENDC_SGNB_ADDITION_REQ(msg).e_rabs_tobeadded[e_rab].e_rab_id = ue_context_pP->ue_context.e_rab[e_rab].param.e_rab_id;
|
||||||
X2AP_ENDC_SGNB_ADDITION_REQ(msg).e_rabs_tobeadded[e_rab].gtp_teid = ue_context_pP->ue_context.e_rab[e_rab].param.gtp_teid;
|
X2AP_ENDC_SGNB_ADDITION_REQ(msg).e_rabs_tobeadded[e_rab].gtp_teid = ue_context_pP->ue_context.e_rab[e_rab].param.gtp_teid;
|
||||||
X2AP_ENDC_SGNB_ADDITION_REQ(msg).e_rabs_tobeadded[e_rab].drb_ID = ue_context_pP->ue_context.DRB_configList->list.array[e_rab]->drb_Identity;
|
X2AP_ENDC_SGNB_ADDITION_REQ(msg).e_rabs_tobeadded[e_rab].drb_ID = ue_context_pP->ue_context.DRB_configList->list.array[e_rab]->drb_Identity;
|
||||||
memcpy(&X2AP_ENDC_SGNB_ADDITION_REQ(msg).e_rabs_tobeadded[e_rab].sgw_addr,
|
memcpy(&X2AP_ENDC_SGNB_ADDITION_REQ(msg).e_rabs_tobeadded[e_rab].sgw_addr,
|
||||||
&ue_context_pP->ue_context.e_rab[e_rab].param.sgw_addr,
|
&ue_context_pP->ue_context.e_rab[e_rab].param.sgw_addr,
|
||||||
sizeof(transport_layer_addr_t));
|
sizeof(transport_layer_addr_t));
|
||||||
@@ -5789,7 +5791,7 @@ rrc_eNB_generate_HO_RRCConnectionReconfiguration(const protocol_ctxt_t *const ct
|
|||||||
(struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL,
|
(struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL,
|
||||||
(LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL,
|
(LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL,
|
||||||
(LTE_MBSFN_AreaInfoList_r9_t *) NULL,
|
(LTE_MBSFN_AreaInfoList_r9_t *) NULL,
|
||||||
(LTE_MBSFNAreaConfiguration_r9_t*) NULL
|
(LTE_MBSFNAreaConfiguration_r9_t *) NULL
|
||||||
);
|
);
|
||||||
// Configure target eNB SRB2
|
// Configure target eNB SRB2
|
||||||
/// SRB2
|
/// SRB2
|
||||||
@@ -6341,20 +6343,19 @@ rrc_eNB_generate_HO_RRCConnectionReconfiguration(const protocol_ctxt_t *const ct
|
|||||||
ue_context_pP->ue_context.rnti,
|
ue_context_pP->ue_context.rnti,
|
||||||
rrc_eNB_mui,
|
rrc_eNB_mui,
|
||||||
size);
|
size);
|
||||||
|
|
||||||
/* Refresh SRBs/DRBs */
|
/* Refresh SRBs/DRBs */
|
||||||
rrc_pdcp_config_asn1_req(ctxt_pP,
|
rrc_pdcp_config_asn1_req(ctxt_pP,
|
||||||
*SRB_configList2, // NULL,
|
*SRB_configList2, // NULL,
|
||||||
*DRB_configList,
|
*DRB_configList,
|
||||||
NULL,
|
NULL,
|
||||||
0xff, // already configured during the securitymodecommand
|
0xff, // already configured during the securitymodecommand
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
NULL
|
NULL
|
||||||
#if (LTE_RRC_VERSION >= MAKE_VERSION(9, 0, 0))
|
#if (LTE_RRC_VERSION >= MAKE_VERSION(9, 0, 0))
|
||||||
, (LTE_PMCH_InfoList_r9_t *) NULL
|
, (LTE_PMCH_InfoList_r9_t *) NULL
|
||||||
#endif
|
#endif
|
||||||
, NULL);
|
, NULL);
|
||||||
|
|
||||||
/* Refresh SRBs/DRBs */
|
/* Refresh SRBs/DRBs */
|
||||||
if (!NODE_IS_CU(RC.rrc[ctxt_pP->module_id]->node_type)) {
|
if (!NODE_IS_CU(RC.rrc[ctxt_pP->module_id]->node_type)) {
|
||||||
@@ -6367,7 +6368,7 @@ rrc_eNB_generate_HO_RRCConnectionReconfiguration(const protocol_ctxt_t *const ct
|
|||||||
0,
|
0,
|
||||||
0
|
0
|
||||||
#endif
|
#endif
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
free(quantityConfig->quantityConfigEUTRA->filterCoefficientRSRQ);
|
free(quantityConfig->quantityConfigEUTRA->filterCoefficientRSRQ);
|
||||||
@@ -6413,6 +6414,7 @@ rrc_eNB_configure_rbs_handover(struct rrc_eNB_ue_context_s *ue_context_p, protoc
|
|||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
(LTE_PMCH_InfoList_r9_t *) NULL, NULL);
|
(LTE_PMCH_InfoList_r9_t *) NULL, NULL);
|
||||||
|
|
||||||
if (!NODE_IS_CU(RC.rrc[ctxt_pP->module_id]->node_type)) {
|
if (!NODE_IS_CU(RC.rrc[ctxt_pP->module_id]->node_type)) {
|
||||||
rrc_rlc_config_asn1_req(ctxt_pP,
|
rrc_rlc_config_asn1_req(ctxt_pP,
|
||||||
ue_context_p->ue_context.SRB_configList,
|
ue_context_p->ue_context.SRB_configList,
|
||||||
@@ -6470,7 +6472,7 @@ rrc_eNB_configure_rbs_handover(struct rrc_eNB_ue_context_s *ue_context_p, protoc
|
|||||||
(struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL,
|
(struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL,
|
||||||
(LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL,
|
(LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL,
|
||||||
(LTE_MBSFN_AreaInfoList_r9_t *) NULL,
|
(LTE_MBSFN_AreaInfoList_r9_t *) NULL,
|
||||||
(LTE_MBSFNAreaConfiguration_r9_t*) NULL
|
(LTE_MBSFNAreaConfiguration_r9_t *) NULL
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -6553,6 +6555,7 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete(
|
|||||||
kUPenc,
|
kUPenc,
|
||||||
(LTE_PMCH_InfoList_r9_t *) NULL,
|
(LTE_PMCH_InfoList_r9_t *) NULL,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
/* Refresh SRBs/DRBs */
|
/* Refresh SRBs/DRBs */
|
||||||
if (!NODE_IS_CU(RC.rrc[ctxt_pP->module_id]->node_type)) {
|
if (!NODE_IS_CU(RC.rrc[ctxt_pP->module_id]->node_type)) {
|
||||||
rrc_rlc_config_asn1_req(ctxt_pP,
|
rrc_rlc_config_asn1_req(ctxt_pP,
|
||||||
@@ -6562,7 +6565,7 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete(
|
|||||||
(LTE_PMCH_InfoList_r9_t *) NULL,
|
(LTE_PMCH_InfoList_r9_t *) NULL,
|
||||||
0,
|
0,
|
||||||
0
|
0
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set the SRB active in UE context */
|
/* Set the SRB active in UE context */
|
||||||
@@ -6687,7 +6690,7 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete(
|
|||||||
(struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL,
|
(struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL,
|
||||||
(LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL,
|
(LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL,
|
||||||
(LTE_MBSFN_AreaInfoList_r9_t *) NULL,
|
(LTE_MBSFN_AreaInfoList_r9_t *) NULL,
|
||||||
(LTE_MBSFNAreaConfiguration_r9_t*) NULL
|
(LTE_MBSFNAreaConfiguration_r9_t *) NULL
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} else { // remove LCHAN from MAC/PHY
|
} else { // remove LCHAN from MAC/PHY
|
||||||
@@ -6747,7 +6750,7 @@ rrc_eNB_process_RRCConnectionReconfigurationComplete(
|
|||||||
(struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL,
|
(struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL,
|
||||||
(LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL,
|
(LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL,
|
||||||
(LTE_MBSFN_AreaInfoList_r9_t *) NULL,
|
(LTE_MBSFN_AreaInfoList_r9_t *) NULL,
|
||||||
(LTE_MBSFNAreaConfiguration_r9_t*) NULL
|
(LTE_MBSFNAreaConfiguration_r9_t *) NULL
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} // end else of if (ue_context_pP->ue_context.DRB_active[drb_id] == 0)
|
} // end else of if (ue_context_pP->ue_context.DRB_active[drb_id] == 0)
|
||||||
@@ -6910,7 +6913,7 @@ rrc_eNB_generate_RRCConnectionSetup(
|
|||||||
(struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL,
|
(struct LTE_NonMBSFN_SubframeConfig_r14 *) NULL,
|
||||||
(LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL,
|
(LTE_SystemInformationBlockType1_MBMS_r14_t *) NULL,
|
||||||
(LTE_MBSFN_AreaInfoList_r9_t *) NULL,
|
(LTE_MBSFN_AreaInfoList_r9_t *) NULL,
|
||||||
(LTE_MBSFNAreaConfiguration_r9_t*) NULL
|
(LTE_MBSFNAreaConfiguration_r9_t *) NULL
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -7044,6 +7047,16 @@ char openair_rrc_eNB_configuration(
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static
|
||||||
|
void rrc_eNB_generate_RRCConnectionReestablishmentReject_unknown_UE(protocol_ctxt_t *const ctxt_pP,
|
||||||
|
const int CC_id) {
|
||||||
|
struct rrc_eNB_ue_context_s *ue_context_p = rrc_eNB_get_next_free_ue_context(ctxt_pP, ctxt_pP->rnti);
|
||||||
|
rrc_eNB_generate_RRCConnectionReestablishmentReject(ctxt_pP,
|
||||||
|
ue_context_p,
|
||||||
|
CC_id);
|
||||||
|
ue_context_p->ue_context.ul_failure_timer = 500; // 500 milliseconds to send the message and remove temporary entry
|
||||||
|
}
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
/*------------------------------------------------------------------------------*/
|
||||||
int
|
int
|
||||||
rrc_eNB_decode_ccch(
|
rrc_eNB_decode_ccch(
|
||||||
@@ -7122,12 +7135,14 @@ rrc_eNB_decode_ccch(
|
|||||||
uint16_t c_rnti = 0;
|
uint16_t c_rnti = 0;
|
||||||
|
|
||||||
if (rrcConnectionReestablishmentRequest->ue_Identity.physCellId != RC.rrc[ctxt_pP->module_id]->carrier[CC_id].physCellId) {
|
if (rrcConnectionReestablishmentRequest->ue_Identity.physCellId != RC.rrc[ctxt_pP->module_id]->carrier[CC_id].physCellId) {
|
||||||
|
/* UE was moving from previous cell so quickly that RRCConnectionReestablishment for previous cell was recieved in this cell */
|
||||||
LOG_E(RRC,
|
LOG_E(RRC,
|
||||||
PROTOCOL_RRC_CTXT_UE_FMT" LTE_RRCConnectionReestablishmentRequest ue_Identity.physCellId(%ld) is not equal to current physCellId(%d), let's reject the UE\n",
|
PROTOCOL_RRC_CTXT_UE_FMT" LTE_RRCConnectionReestablishmentRequest ue_Identity.physCellId(%ld) is not equal to current physCellId(%d), let's reject the UE\n",
|
||||||
PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
|
PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
|
||||||
rrcConnectionReestablishmentRequest->ue_Identity.physCellId,
|
rrcConnectionReestablishmentRequest->ue_Identity.physCellId,
|
||||||
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].physCellId);
|
RC.rrc[ctxt_pP->module_id]->carrier[CC_id].physCellId);
|
||||||
rrc_eNB_generate_RRCConnectionReestablishmentReject(ctxt_pP, ue_context_p, CC_id);
|
rrc_eNB_generate_RRCConnectionReestablishmentReject_unknown_UE(ctxt_pP,
|
||||||
|
CC_id);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -7140,10 +7155,12 @@ rrc_eNB_decode_ccch(
|
|||||||
|
|
||||||
if (rrcConnectionReestablishmentRequest->ue_Identity.c_RNTI.size == 0 ||
|
if (rrcConnectionReestablishmentRequest->ue_Identity.c_RNTI.size == 0 ||
|
||||||
rrcConnectionReestablishmentRequest->ue_Identity.c_RNTI.size > 2) {
|
rrcConnectionReestablishmentRequest->ue_Identity.c_RNTI.size > 2) {
|
||||||
|
/* c_RNTI range error should not happen */
|
||||||
LOG_E(RRC,
|
LOG_E(RRC,
|
||||||
PROTOCOL_RRC_CTXT_UE_FMT" LTE_RRCConnectionReestablishmentRequest c_RNTI range error, let's reject the UE\n",
|
PROTOCOL_RRC_CTXT_UE_FMT" LTE_RRCConnectionReestablishmentRequest c_RNTI range error, let's reject the UE\n",
|
||||||
PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
|
PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
|
||||||
rrc_eNB_generate_RRCConnectionReestablishmentReject(ctxt_pP, ue_context_p, CC_id);
|
rrc_eNB_generate_RRCConnectionReestablishmentReject_unknown_UE(ctxt_pP,
|
||||||
|
CC_id);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -7155,7 +7172,8 @@ rrc_eNB_decode_ccch(
|
|||||||
LOG_E(RRC,
|
LOG_E(RRC,
|
||||||
PROTOCOL_RRC_CTXT_UE_FMT" LTE_RRCConnectionReestablishmentRequest without UE context, let's reject the UE\n",
|
PROTOCOL_RRC_CTXT_UE_FMT" LTE_RRCConnectionReestablishmentRequest without UE context, let's reject the UE\n",
|
||||||
PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
|
PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
|
||||||
rrc_eNB_generate_RRCConnectionReestablishmentReject(ctxt_pP, ue_context_p, CC_id);
|
rrc_eNB_generate_RRCConnectionReestablishmentReject_unknown_UE(ctxt_pP,
|
||||||
|
CC_id);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -7222,8 +7240,10 @@ rrc_eNB_decode_ccch(
|
|||||||
|
|
||||||
if(ue_context_p->ue_context.ue_reestablishment_timer > 0) {
|
if(ue_context_p->ue_context.ue_reestablishment_timer > 0) {
|
||||||
LOG_E(RRC,
|
LOG_E(RRC,
|
||||||
PROTOCOL_RRC_CTXT_UE_FMT" RRRCConnectionReconfigurationComplete(Previous) don't receive, delete the Previous UE\n",
|
PROTOCOL_RRC_CTXT_UE_FMT" RRRCConnectionReconfigurationComplete(Previous) don't receive, delete the Previous UE,\nprevious Status %d, new Status RRC_RECONFIGURED\n",
|
||||||
PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
|
PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
|
||||||
|
ue_context_p->ue_context.Status
|
||||||
|
);
|
||||||
ue_context_p->ue_context.Status = RRC_RECONFIGURED;
|
ue_context_p->ue_context.Status = RRC_RECONFIGURED;
|
||||||
protocol_ctxt_t ctxt_old_p;
|
protocol_ctxt_t ctxt_old_p;
|
||||||
PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt_old_p,
|
PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt_old_p,
|
||||||
@@ -7808,8 +7828,7 @@ rrc_eNB_decode_dcch(
|
|||||||
LOG_I(RRC,
|
LOG_I(RRC,
|
||||||
PROTOCOL_RRC_CTXT_UE_FMT" UE State = RRC_HO_EXECUTION (xid %ld)\n",
|
PROTOCOL_RRC_CTXT_UE_FMT" UE State = RRC_HO_EXECUTION (xid %ld)\n",
|
||||||
PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier);
|
PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.rrc_TransactionIdentifier);
|
||||||
}
|
} else if(ue_context_p->ue_context.Status == RRC_NR_NSA) {
|
||||||
else if(ue_context_p->ue_context.Status == RRC_NR_NSA){
|
|
||||||
//Looking for a condition to trigger S1AP E-RAB-Modification-indication, based on the reception of RRCConnectionReconfigurationComplete
|
//Looking for a condition to trigger S1AP E-RAB-Modification-indication, based on the reception of RRCConnectionReconfigurationComplete
|
||||||
//including NR specific elements.
|
//including NR specific elements.
|
||||||
if(ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.criticalExtensions.choice.rrcConnectionReconfigurationComplete_r8.
|
if(ul_dcch_msg->message.choice.c1.choice.rrcConnectionReconfigurationComplete.criticalExtensions.choice.rrcConnectionReconfigurationComplete_r8.
|
||||||
@@ -7837,8 +7856,7 @@ rrc_eNB_decode_dcch(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
dedicated_DRB = 0;
|
dedicated_DRB = 0;
|
||||||
ue_context_p->ue_context.Status = RRC_RECONFIGURED;
|
ue_context_p->ue_context.Status = RRC_RECONFIGURED;
|
||||||
LOG_I(RRC,
|
LOG_I(RRC,
|
||||||
@@ -7847,7 +7865,6 @@ rrc_eNB_decode_dcch(
|
|||||||
}
|
}
|
||||||
|
|
||||||
ue_context_p->ue_context.reestablishment_xid = -1;
|
ue_context_p->ue_context.reestablishment_xid = -1;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
dedicated_DRB = 1;
|
dedicated_DRB = 1;
|
||||||
ue_context_p->ue_context.Status = RRC_RECONFIGURED;
|
ue_context_p->ue_context.Status = RRC_RECONFIGURED;
|
||||||
@@ -8383,8 +8400,7 @@ rrc_eNB_decode_dcch(
|
|||||||
case LTE_UL_DCCH_MessageType__c1_PR_mbmsCountingResponse_r10:
|
case LTE_UL_DCCH_MessageType__c1_PR_mbmsCountingResponse_r10:
|
||||||
T(T_ENB_RRC_MBMS_COUNTING_RESPONSE_R10, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
|
T(T_ENB_RRC_MBMS_COUNTING_RESPONSE_R10, T_INT(ctxt_pP->module_id), T_INT(ctxt_pP->frame),
|
||||||
T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
|
T_INT(ctxt_pP->subframe), T_INT(ctxt_pP->rnti));
|
||||||
LOG_E(RRC, "THINH [LTE_UL_DCCH_MessageType__c1_PR_mbmsCountingResponse_r10]\n");
|
LOG_E(RRC, "THINH [LTE_UL_DCCH_MessageType__c1_PR_mbmsCountingResponse_r10]\n");
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case LTE_UL_DCCH_MessageType__c1_PR_interFreqRSTDMeasurementIndication_r10:
|
case LTE_UL_DCCH_MessageType__c1_PR_interFreqRSTDMeasurementIndication_r10:
|
||||||
@@ -8412,46 +8428,46 @@ rrc_eNB_decode_dcch(
|
|||||||
|
|
||||||
case LTE_UL_DCCH_MessageType__messageClassExtension_PR_c2: //SidelinkUEInformation
|
case LTE_UL_DCCH_MessageType__messageClassExtension_PR_c2: //SidelinkUEInformation
|
||||||
if(ul_dcch_msg->message.choice.messageClassExtension.choice.c2.present ==
|
if(ul_dcch_msg->message.choice.messageClassExtension.choice.c2.present ==
|
||||||
LTE_UL_DCCH_MessageType__messageClassExtension__c2_PR_scgFailureInformationNR_r15){
|
LTE_UL_DCCH_MessageType__messageClassExtension__c2_PR_scgFailureInformationNR_r15) {
|
||||||
if (ul_dcch_msg->message.choice.messageClassExtension.choice.c2.choice.scgFailureInformationNR_r15.
|
if (ul_dcch_msg->message.choice.messageClassExtension.choice.c2.choice.scgFailureInformationNR_r15.
|
||||||
criticalExtensions.present == LTE_SCGFailureInformationNR_r15__criticalExtensions_PR_c1){
|
criticalExtensions.present == LTE_SCGFailureInformationNR_r15__criticalExtensions_PR_c1) {
|
||||||
if (ul_dcch_msg->message.choice.messageClassExtension.choice.c2.choice.scgFailureInformationNR_r15.criticalExtensions.
|
if (ul_dcch_msg->message.choice.messageClassExtension.choice.c2.choice.scgFailureInformationNR_r15.criticalExtensions.
|
||||||
choice.c1.present == LTE_SCGFailureInformationNR_r15__criticalExtensions__c1_PR_scgFailureInformationNR_r15){
|
choice.c1.present == LTE_SCGFailureInformationNR_r15__criticalExtensions__c1_PR_scgFailureInformationNR_r15) {
|
||||||
if (ul_dcch_msg->message.choice.messageClassExtension.choice.c2.choice.scgFailureInformationNR_r15.criticalExtensions.
|
if (ul_dcch_msg->message.choice.messageClassExtension.choice.c2.choice.scgFailureInformationNR_r15.criticalExtensions.
|
||||||
choice.c1.choice.scgFailureInformationNR_r15.failureReportSCG_NR_r15!=NULL) {
|
choice.c1.choice.scgFailureInformationNR_r15.failureReportSCG_NR_r15!=NULL) {
|
||||||
LOG_E(RRC, "Received NR scgFailureInformation from UE, failure type: %ld \n",
|
LOG_E(RRC, "Received NR scgFailureInformation from UE, failure type: %ld \n",
|
||||||
ul_dcch_msg->message.choice.messageClassExtension.choice.c2.choice.scgFailureInformationNR_r15.criticalExtensions.
|
ul_dcch_msg->message.choice.messageClassExtension.choice.c2.choice.scgFailureInformationNR_r15.criticalExtensions.
|
||||||
choice.c1.choice.scgFailureInformationNR_r15.failureReportSCG_NR_r15->failureType_r15);
|
choice.c1.choice.scgFailureInformationNR_r15.failureReportSCG_NR_r15->failureType_r15);
|
||||||
xer_fprint(stdout, &asn_DEF_LTE_UL_DCCH_Message, (void *)ul_dcch_msg);
|
xer_fprint(stdout, &asn_DEF_LTE_UL_DCCH_Message, (void *)ul_dcch_msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else if(ul_dcch_msg->message.choice.messageClassExtension.choice.c2.present == LTE_UL_DCCH_MessageType__messageClassExtension__c2_PR_sidelinkUEInformation_r12) {
|
||||||
else if(ul_dcch_msg->message.choice.messageClassExtension.choice.c2.present == LTE_UL_DCCH_MessageType__messageClassExtension__c2_PR_sidelinkUEInformation_r12){
|
|
||||||
//case UL_DCCH_MessageType__messageClassExtension__c2_PR_sidelinkUEInformation_r12: //SidelinkUEInformation
|
//case UL_DCCH_MessageType__messageClassExtension__c2_PR_sidelinkUEInformation_r12: //SidelinkUEInformation
|
||||||
LOG_I(RRC,"THINH [LTE_UL_DCCH_MessageType__messageClassExtension_PR_c2]\n");
|
LOG_I(RRC,"THINH [LTE_UL_DCCH_MessageType__messageClassExtension_PR_c2]\n");
|
||||||
LOG_DUMPMSG(RRC,DEBUG_RRC,(char *)Rx_sdu,sdu_sizeP,
|
LOG_DUMPMSG(RRC,DEBUG_RRC,(char *)Rx_sdu,sdu_sizeP,
|
||||||
"[MSG] RRC SidelinkUEInformation \n");
|
"[MSG] RRC SidelinkUEInformation \n");
|
||||||
MSC_LOG_RX_MESSAGE(
|
MSC_LOG_RX_MESSAGE(
|
||||||
MSC_RRC_ENB,
|
MSC_RRC_ENB,
|
||||||
MSC_RRC_UE,
|
MSC_RRC_UE,
|
||||||
Rx_sdu,
|
Rx_sdu,
|
||||||
sdu_sizeP,
|
sdu_sizeP,
|
||||||
MSC_AS_TIME_FMT" SidelinkUEInformation UE %x size %u",
|
MSC_AS_TIME_FMT" SidelinkUEInformation UE %x size %u",
|
||||||
MSC_AS_TIME_ARGS(ctxt_pP),
|
MSC_AS_TIME_ARGS(ctxt_pP),
|
||||||
ue_context_p->ue_context.rnti,
|
ue_context_p->ue_context.rnti,
|
||||||
sdu_sizeP);
|
|
||||||
LOG_I(RRC,
|
|
||||||
PROTOCOL_RRC_CTXT_UE_FMT" RLC RB %02d --- RLC_DATA_IND %d bytes "
|
|
||||||
"(SidelinkUEInformation) ---> RRC_eNB\n",
|
|
||||||
PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
|
|
||||||
DCCH,
|
|
||||||
sdu_sizeP);
|
sdu_sizeP);
|
||||||
|
LOG_I(RRC,
|
||||||
|
PROTOCOL_RRC_CTXT_UE_FMT" RLC RB %02d --- RLC_DATA_IND %d bytes "
|
||||||
|
"(SidelinkUEInformation) ---> RRC_eNB\n",
|
||||||
|
PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP),
|
||||||
|
DCCH,
|
||||||
|
sdu_sizeP);
|
||||||
rrc_eNB_process_SidelinkUEInformation(
|
rrc_eNB_process_SidelinkUEInformation(
|
||||||
ctxt_pP,
|
ctxt_pP,
|
||||||
ue_context_p,
|
ue_context_p,
|
||||||
&ul_dcch_msg->message.choice.messageClassExtension.choice.c2.choice.sidelinkUEInformation_r12);
|
&ul_dcch_msg->message.choice.messageClassExtension.choice.c2.choice.sidelinkUEInformation_r12);
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -8618,17 +8634,14 @@ void rrc_enb_init(void) {
|
|||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
void process_successful_rlc_sdu_indication(int instance,
|
void process_successful_rlc_sdu_indication(int instance,
|
||||||
int rnti,
|
int rnti,
|
||||||
int message_id)
|
int message_id) {
|
||||||
{
|
|
||||||
int release_num;
|
int release_num;
|
||||||
int release_total;
|
int release_total;
|
||||||
RRC_release_ctrl_t *release_ctrl;
|
RRC_release_ctrl_t *release_ctrl;
|
||||||
|
|
||||||
/* Check if the message sent was RRC Connection Release.
|
/* Check if the message sent was RRC Connection Release.
|
||||||
* If yes then continue the release process.
|
* If yes then continue the release process.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
pthread_mutex_lock(&rrc_release_freelist);
|
pthread_mutex_lock(&rrc_release_freelist);
|
||||||
|
|
||||||
if (rrc_release_info.num_UEs > 0) {
|
if (rrc_release_info.num_UEs > 0) {
|
||||||
@@ -8670,14 +8683,11 @@ void process_successful_rlc_sdu_indication(int instance,
|
|||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
void process_unsuccessful_rlc_sdu_indication(int instance, int rnti)
|
void process_unsuccessful_rlc_sdu_indication(int instance, int rnti) {
|
||||||
{
|
|
||||||
int release_num;
|
int release_num;
|
||||||
int release_total;
|
int release_total;
|
||||||
RRC_release_ctrl_t *release_ctrl;
|
RRC_release_ctrl_t *release_ctrl;
|
||||||
|
|
||||||
/* radio link failure detected by RLC layer, remove UE properly */
|
/* radio link failure detected by RLC layer, remove UE properly */
|
||||||
|
|
||||||
pthread_mutex_lock(&rrc_release_freelist);
|
pthread_mutex_lock(&rrc_release_freelist);
|
||||||
|
|
||||||
/* first, check if the rnti is in the list rrc_release_info.RRC_release_ctrl */
|
/* first, check if the rnti is in the list rrc_release_info.RRC_release_ctrl */
|
||||||
@@ -8745,8 +8755,7 @@ void process_rlc_sdu_indication(int instance,
|
|||||||
int rnti,
|
int rnti,
|
||||||
int is_successful,
|
int is_successful,
|
||||||
int srb_id,
|
int srb_id,
|
||||||
int message_id)
|
int message_id) {
|
||||||
{
|
|
||||||
if (is_successful)
|
if (is_successful)
|
||||||
process_successful_rlc_sdu_indication(instance, rnti, message_id);
|
process_successful_rlc_sdu_indication(instance, rnti, message_id);
|
||||||
else
|
else
|
||||||
@@ -9089,51 +9098,49 @@ void rrc_eNB_process_AdditionResponseInformation(const module_id_t enb_mod_idP,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
protocol_ctxt_t ctxt;
|
protocol_ctxt_t ctxt;
|
||||||
rrc_eNB_ue_context_t *ue_context;
|
rrc_eNB_ue_context_t *ue_context;
|
||||||
unsigned char buffer[8192];
|
unsigned char buffer[8192];
|
||||||
int size;
|
int size;
|
||||||
|
ue_context = rrc_eNB_get_ue_context(RC.rrc[enb_mod_idP], m->rnti);
|
||||||
|
|
||||||
ue_context = rrc_eNB_get_ue_context(RC.rrc[enb_mod_idP], m->rnti);
|
if (ue_context) {
|
||||||
if (ue_context) {
|
ue_context->ue_context.nb_of_modify_endc_e_rabs = m->nb_e_rabs_admitted_tobeadded;
|
||||||
ue_context->ue_context.nb_of_modify_endc_e_rabs = m->nb_e_rabs_admitted_tobeadded;
|
int j=0;
|
||||||
|
|
||||||
int j=0;
|
while(j < m->nb_e_rabs_admitted_tobeadded) {
|
||||||
while(j < m->nb_e_rabs_admitted_tobeadded){
|
for (int e_rab_idx=0; e_rab_idx<ue_context->ue_context.setup_e_rabs; e_rab_idx++) {
|
||||||
for (int e_rab_idx=0; e_rab_idx<ue_context->ue_context.setup_e_rabs; e_rab_idx++){
|
//Update ue_context information with gNB's address and new GTP tunnel ID
|
||||||
//Update ue_context information with gNB's address and new GTP tunnel ID
|
if( ue_context->ue_context.e_rab[e_rab_idx].param.e_rab_id == m->e_rabs_admitted_tobeadded[j].e_rab_id) {
|
||||||
if( ue_context->ue_context.e_rab[e_rab_idx].param.e_rab_id == m->e_rabs_admitted_tobeadded[j].e_rab_id){
|
memcpy(ue_context->ue_context.gnb_gtp_endc_addrs[e_rab_idx].buffer,
|
||||||
memcpy(ue_context->ue_context.gnb_gtp_endc_addrs[e_rab_idx].buffer,
|
m->e_rabs_admitted_tobeadded[j].gnb_addr.buffer,
|
||||||
m->e_rabs_admitted_tobeadded[j].gnb_addr.buffer,
|
m->e_rabs_admitted_tobeadded[j].gnb_addr.length);
|
||||||
m->e_rabs_admitted_tobeadded[j].gnb_addr.length);
|
ue_context->ue_context.gnb_gtp_endc_addrs[e_rab_idx].length = m->e_rabs_admitted_tobeadded[j].gnb_addr.length;
|
||||||
ue_context->ue_context.gnb_gtp_endc_addrs[e_rab_idx].length = m->e_rabs_admitted_tobeadded[j].gnb_addr.length;
|
ue_context->ue_context.gnb_gtp_endc_teid[e_rab_idx] = m->e_rabs_admitted_tobeadded[j].gtp_teid;
|
||||||
ue_context->ue_context.gnb_gtp_endc_teid[e_rab_idx] = m->e_rabs_admitted_tobeadded[j].gtp_teid;
|
ue_context->ue_context.e_rab[e_rab_idx].status = E_RAB_STATUS_TOMODIFY;
|
||||||
ue_context->ue_context.e_rab[e_rab_idx].status = E_RAB_STATUS_TOMODIFY;
|
break;
|
||||||
break;
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
j++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt,
|
j++;
|
||||||
0,
|
|
||||||
ENB_FLAG_YES,
|
|
||||||
m->rnti,
|
|
||||||
0, 0);
|
|
||||||
|
|
||||||
size = rrc_eNB_generate_RRCConnectionReconfiguration_endc(&ctxt, ue_context, buffer, 8192, scg_CellGroupConfig, nr1_conf);
|
|
||||||
|
|
||||||
rrc_data_req(&ctxt,
|
|
||||||
DCCH,
|
|
||||||
rrc_eNB_mui++,
|
|
||||||
SDU_CONFIRM_NO,
|
|
||||||
size,
|
|
||||||
buffer,
|
|
||||||
PDCP_TRANSMISSION_MODE_CONTROL);
|
|
||||||
} else {
|
|
||||||
LOG_E(F1AP, "no ue_context for RNTI %x, acknowledging release\n", m->rnti);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PROTOCOL_CTXT_SET_BY_INSTANCE(&ctxt,
|
||||||
|
0,
|
||||||
|
ENB_FLAG_YES,
|
||||||
|
m->rnti,
|
||||||
|
0, 0);
|
||||||
|
size = rrc_eNB_generate_RRCConnectionReconfiguration_endc(&ctxt, ue_context, buffer, 8192, scg_CellGroupConfig, nr1_conf);
|
||||||
|
rrc_data_req(&ctxt,
|
||||||
|
DCCH,
|
||||||
|
rrc_eNB_mui++,
|
||||||
|
SDU_CONFIRM_NO,
|
||||||
|
size,
|
||||||
|
buffer,
|
||||||
|
PDCP_TRANSMISSION_MODE_CONTROL);
|
||||||
|
} else {
|
||||||
|
LOG_E(F1AP, "no ue_context for RNTI %x, acknowledging release\n", m->rnti);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@@ -9470,8 +9477,8 @@ void *rrc_enb_process_itti_msg(void *notUsed) {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case M2AP_MCE_CONFIGURATION_UPDATE:
|
case M2AP_MCE_CONFIGURATION_UPDATE:
|
||||||
rrc_eNB_process_M2AP_MCE_CONFIGURATION_UPDATE(&ctxt,&M2AP_MCE_CONFIGURATION_UPDATE(msg_p));
|
rrc_eNB_process_M2AP_MCE_CONFIGURATION_UPDATE(&ctxt,&M2AP_MCE_CONFIGURATION_UPDATE(msg_p));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RLC_SDU_INDICATION:
|
case RLC_SDU_INDICATION:
|
||||||
process_rlc_sdu_indication(instance,
|
process_rlc_sdu_indication(instance,
|
||||||
@@ -9515,7 +9522,7 @@ rrc_enb_task(
|
|||||||
//if (go_nr) rrc_go_nr();
|
//if (go_nr) rrc_go_nr();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------*/
|
/*------------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
|
|||||||
@@ -16,13 +16,13 @@
|
|||||||
#include "NwEvt.h"
|
#include "NwEvt.h"
|
||||||
#include "NwLog.h"
|
#include "NwLog.h"
|
||||||
|
|
||||||
|
#ifndef __NW_MINI_LOG_MGR_H__
|
||||||
|
#define __NW_MINI_LOG_MGR_H__
|
||||||
|
|
||||||
#ifndef NW_ASSERT
|
#ifndef NW_ASSERT
|
||||||
#define NW_ASSERT assert
|
#define NW_ASSERT assert
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __NW_MINI_LOG_MGR_H__
|
|
||||||
#define __NW_MINI_LOG_MGR_H__
|
|
||||||
|
|
||||||
extern uint32_t g_log_level;
|
extern uint32_t g_log_level;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -17,13 +17,13 @@
|
|||||||
#include "NwEvt.h"
|
#include "NwEvt.h"
|
||||||
#include "NwLog.h"
|
#include "NwLog.h"
|
||||||
|
|
||||||
|
#ifndef __NW_MINI_TMR_MGR_H__
|
||||||
|
#define __NW_MINI_TMR_MGR_H__
|
||||||
|
|
||||||
#ifndef NW_ASSERT
|
#ifndef NW_ASSERT
|
||||||
#define NW_ASSERT assert
|
#define NW_ASSERT assert
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __NW_MINI_TMR_MGR_H__
|
|
||||||
#define __NW_MINI_TMR_MGR_H__
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
NwEventT ev;
|
NwEventT ev;
|
||||||
void* timeoutArg;
|
void* timeoutArg;
|
||||||
|
|||||||
@@ -17,13 +17,13 @@
|
|||||||
#include "NwEvt.h"
|
#include "NwEvt.h"
|
||||||
#include "NwLog.h"
|
#include "NwLog.h"
|
||||||
|
|
||||||
|
#ifndef __NW_MINI_UDP_ENTITY_H__
|
||||||
|
#define __NW_MINI_UDP_ENTITY_H__
|
||||||
|
|
||||||
#ifndef NW_ASSERT
|
#ifndef NW_ASSERT
|
||||||
#define NW_ASSERT assert
|
#define NW_ASSERT assert
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __NW_MINI_UDP_ENTITY_H__
|
|
||||||
#define __NW_MINI_UDP_ENTITY_H__
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
uint32_t hSocket;
|
uint32_t hSocket;
|
||||||
NwEventT ev;
|
NwEventT ev;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#ifndef _THREADS_T_H_
|
#ifndef _TARGETS_COMMON_THREADS_T_H_
|
||||||
#define _THREADS_T_H_
|
#define _TARGETS_COMMON_THREADS_T_H_
|
||||||
|
|
||||||
typedef struct threads_s {
|
typedef struct threads_s {
|
||||||
int main;
|
int main;
|
||||||
@@ -18,4 +18,4 @@ typedef struct threads_s {
|
|||||||
//int dlsch_td1_three;
|
//int dlsch_td1_three;
|
||||||
} threads_t;
|
} threads_t;
|
||||||
|
|
||||||
#endif /* _THREADS_T_H_ */
|
#endif /* _TARGETS_COMMON_THREADS_T_H_ */
|
||||||
|
|||||||
@@ -21,8 +21,8 @@
|
|||||||
|
|
||||||
/* Header file generated by fdesign on Thu Aug 28 12:13:51 2014 */
|
/* Header file generated by fdesign on Thu Aug 28 12:13:51 2014 */
|
||||||
|
|
||||||
#ifndef FD_stats_form_h_
|
#ifndef _TARGETS_RT_USER_STATS_H_
|
||||||
#define FD_stats_form_h_
|
#define _TARGETS_RT_USER_STATS_H_
|
||||||
|
|
||||||
#include <forms.h>
|
#include <forms.h>
|
||||||
|
|
||||||
@@ -43,4 +43,4 @@ typedef struct {
|
|||||||
|
|
||||||
extern FD_stats_form * create_form_stats_form( void );
|
extern FD_stats_form * create_form_stats_form( void );
|
||||||
|
|
||||||
#endif /* FD_stats_form_h_ */
|
#endif /* _TARGETS_RT_USER_STATS_H_ */
|
||||||
|
|||||||
Reference in New Issue
Block a user