Merge branch 'eurecom-develop' into episys/merge_nsa_w_develop
At this point we are successfully able to build. Additionally, we can run the scenario, however, it does not pass. It seems that the gNB is not connecting to the proxy correctly. Just wanted to push the progress so far. FYI, the items that had to be changed to correct the linking issues were the following: - mac_rrc_data_ind_ue vs. nr_mac_rrc_data_ind_ue - rrc_data_req vs. nr_rrc_data_req - mac_rrc_data_req_ue vs. nr_mac_rrc_data_req_ue - rrc_data_req_ue vs. rrc_data_req_nr_ue - rrc_data_req vs. nr_rrc_data_req The listed functions should be declard in the LTE/NR UE directory depending on the functionality. Several were mixed. i.e.: LTE functions being called in NR UE. Also, removing siWindowLength, siWindowLength_int, SIBType, SIBPeriod, and siPeriod_int from the NR UE RRC. These variable were not used in the NR UE and are defined for LTE only. Lastly, in the NR_IF_Module.c of the NR UE, the global variable def_dci_pdu_rel15 is not accessible. Need to revisit this. For not it is commented out.
This commit is contained in:
@@ -115,10 +115,13 @@ void x2ap_eNB_handle_sctp_association_resp(instance_t instance, sctp_new_associa
|
||||
if (x2ap_enb_data_p != NULL) {
|
||||
/* some sanity check - to be refined at some point */
|
||||
if (sctp_new_association_resp->sctp_state != SCTP_STATE_ESTABLISHED) {
|
||||
X2AP_ERROR("x2ap_enb_data_p not NULL and sctp state not SCTP_STATE_ESTABLISHED, what to do?\n");
|
||||
// Allow for a gracious exit when we kill first the gNB, then the eNB
|
||||
//abort();
|
||||
return;
|
||||
X2AP_ERROR("x2ap_enb_data_p not NULL and sctp state not SCTP_STATE_ESTABLISHED?\n");
|
||||
if (sctp_new_association_resp->sctp_state == SCTP_STATE_SHUTDOWN){
|
||||
RB_REMOVE(x2ap_enb_map, &instance_p->x2ap_enb_head, x2ap_enb_data_p);
|
||||
return;
|
||||
}
|
||||
|
||||
exit(1);
|
||||
}
|
||||
|
||||
x2ap_enb_data_p->in_streams = sctp_new_association_resp->in_streams;
|
||||
@@ -132,6 +135,18 @@ void x2ap_eNB_handle_sctp_association_resp(instance_t instance, sctp_new_associa
|
||||
DevAssert(x2ap_enb_data_p != NULL);
|
||||
dump_trees();
|
||||
|
||||
/* gNB: exit if connection to eNB failed - to be modified if needed.
|
||||
* We may want to try to connect over and over again until we succeed
|
||||
* but the modifications to the code to get this behavior are complex.
|
||||
* Exit on error is a simple solution that can be caught by a script
|
||||
* for example.
|
||||
*/
|
||||
if (instance_p->cell_type == CELL_MACRO_GNB
|
||||
&& sctp_new_association_resp->sctp_state == SCTP_STATE_UNREACHABLE) {
|
||||
X2AP_ERROR("association with eNB failed, is it running? If no, run it first. If yes, check IP addresses in your configuration file.\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (sctp_new_association_resp->sctp_state != SCTP_STATE_ESTABLISHED) {
|
||||
X2AP_WARN("Received unsuccessful result for SCTP association (%u), instance %ld, cnx_id %u\n",
|
||||
sctp_new_association_resp->sctp_state,
|
||||
|
||||
@@ -1318,6 +1318,9 @@ MCC_MNC_TO_PLMNID(instance_p->mcc, instance_p->mnc, instance_p->mnc_digit_length
|
||||
|
||||
ASN_SEQUENCE_ADD(&servedCellMember->servedNRCellInfo.nrModeInfo.choice.tdd.nRFreqInfo.freqBandListNr, freq_band);
|
||||
switch (instance_p->N_RB_DL[i]) {
|
||||
case 24:
|
||||
servedCellMember->servedNRCellInfo.nrModeInfo.choice.tdd.nR_TxBW.nRNRB = X2AP_NRNRB_nrb24;
|
||||
break;
|
||||
case 32:
|
||||
servedCellMember->servedNRCellInfo.nrModeInfo.choice.tdd.nR_TxBW.nRNRB = X2AP_NRNRB_nrb32;
|
||||
break;
|
||||
|
||||
@@ -536,6 +536,14 @@ int x2ap_eNB_handle_x2_setup_response(instance_t instance,
|
||||
return -1;
|
||||
}
|
||||
|
||||
if((x2ap_eNB_data->state == X2AP_ENB_STATE_CONNECTED) ||
|
||||
(x2ap_eNB_data->state == X2AP_ENB_STATE_READY))
|
||||
|
||||
{
|
||||
X2AP_ERROR("Received Unexpexted X2 Setup Response Message\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
X2AP_DEBUG("Received a new X2 setup response\n");
|
||||
|
||||
X2AP_FIND_PROTOCOLIE_BY_ID(X2AP_X2SetupResponse_IEs_t, ie, x2SetupResponse,
|
||||
@@ -662,6 +670,14 @@ int x2ap_eNB_handle_x2_setup_failure(instance_t instance,
|
||||
return -1;
|
||||
}
|
||||
|
||||
if((x2ap_eNB_data->state == X2AP_ENB_STATE_CONNECTED) ||
|
||||
(x2ap_eNB_data->state == X2AP_ENB_STATE_READY))
|
||||
|
||||
{
|
||||
X2AP_ERROR("Received Unexpexted X2 Setup Failure Message\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
X2AP_DEBUG("Received a new X2 setup failure\n");
|
||||
|
||||
X2AP_FIND_PROTOCOLIE_BY_ID(X2AP_X2SetupFailure_IEs_t, ie, x2SetupFailure,
|
||||
@@ -674,9 +690,11 @@ int x2ap_eNB_handle_x2_setup_failure(instance_t instance,
|
||||
// need a FSM to handle all cases
|
||||
if ((ie->value.choice.Cause.present == X2AP_Cause_PR_misc) &&
|
||||
(ie->value.choice.Cause.choice.misc == X2AP_CauseMisc_unspecified)) {
|
||||
X2AP_WARN("Received X2 setup failure for eNB ... eNB is not ready\n");
|
||||
X2AP_ERROR("Received X2 setup failure for eNB ... eNB is not ready\n");
|
||||
exit(1);
|
||||
} else {
|
||||
X2AP_ERROR("Received x2 setup failure for eNB... please check your parameters\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
x2ap_eNB_data->state = X2AP_ENB_STATE_WAITING;
|
||||
@@ -730,6 +748,7 @@ int x2ap_eNB_handle_handover_preparation (instance_t instance,
|
||||
X2AP_ProtocolIE_ID_id_Old_eNB_UE_X2AP_ID, true);
|
||||
if (ie == NULL ) {
|
||||
X2AP_ERROR("%s %d: ie is a NULL pointer \n",__FILE__,__LINE__);
|
||||
itti_free(ITTI_MSG_ORIGIN_ID(msg), msg);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -750,7 +769,11 @@ int x2ap_eNB_handle_handover_preparation (instance_t instance,
|
||||
//measResultListEUTRA.list.array[ncell_index]->physCellId;
|
||||
X2AP_FIND_PROTOCOLIE_BY_ID(X2AP_HandoverRequest_IEs_t, ie, x2HandoverRequest,
|
||||
X2AP_ProtocolIE_ID_id_GUMMEI_ID, true);
|
||||
|
||||
if (ie == NULL ) {
|
||||
X2AP_ERROR("%s %d: ie is a NULL pointer \n",__FILE__,__LINE__);
|
||||
itti_free(ITTI_MSG_ORIGIN_ID(msg), msg);
|
||||
return -1;
|
||||
}
|
||||
TBCD_TO_MCC_MNC(&ie->value.choice.ECGI.pLMN_Identity, X2AP_HANDOVER_REQ(msg).ue_gummei.mcc,
|
||||
X2AP_HANDOVER_REQ(msg).ue_gummei.mnc, X2AP_HANDOVER_REQ(msg).ue_gummei.mnc_len);
|
||||
OCTET_STRING_TO_INT8(&ie->value.choice.GUMMEI.mME_Code, X2AP_HANDOVER_REQ(msg).ue_gummei.mme_code);
|
||||
@@ -761,6 +784,7 @@ int x2ap_eNB_handle_handover_preparation (instance_t instance,
|
||||
|
||||
if (ie == NULL ) {
|
||||
X2AP_ERROR("%s %d: ie is a NULL pointer \n",__FILE__,__LINE__);
|
||||
itti_free(ITTI_MSG_ORIGIN_ID(msg), msg);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -872,6 +896,7 @@ int x2ap_eNB_handle_handover_response (instance_t instance,
|
||||
|
||||
if (ie == NULL ) {
|
||||
X2AP_ERROR("%s %d: ie is a NULL pointer \n",__FILE__,__LINE__);
|
||||
itti_free(ITTI_MSG_ORIGIN_ID(msg), msg);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -882,6 +907,7 @@ int x2ap_eNB_handle_handover_response (instance_t instance,
|
||||
|
||||
if (ie == NULL ) {
|
||||
X2AP_ERROR("%s %d: ie is a NULL pointer \n",__FILE__,__LINE__);
|
||||
itti_free(ITTI_MSG_ORIGIN_ID(msg), msg);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -912,6 +938,7 @@ int x2ap_eNB_handle_handover_response (instance_t instance,
|
||||
|
||||
if (ie == NULL ) {
|
||||
X2AP_ERROR("%s %d: ie is a NULL pointer \n", __FILE__, __LINE__);
|
||||
itti_free(ITTI_MSG_ORIGIN_ID(msg), msg);
|
||||
return -1;
|
||||
}else{
|
||||
if (ie->value.choice.E_RABs_Admitted_List.list.count > 0) {
|
||||
@@ -959,6 +986,12 @@ int x2ap_eNB_handle_handover_response (instance_t instance,
|
||||
X2AP_FIND_PROTOCOLIE_BY_ID(X2AP_HandoverRequestAcknowledge_IEs_t, ie, x2HandoverRequestAck,
|
||||
X2AP_ProtocolIE_ID_id_TargeteNBtoSource_eNBTransparentContainer, true);
|
||||
|
||||
if (ie == NULL ) {
|
||||
X2AP_ERROR("%s %d: ie is a NULL pointer \n",__FILE__,__LINE__);
|
||||
itti_free(ITTI_MSG_ORIGIN_ID(msg), msg);
|
||||
return -1;
|
||||
}
|
||||
|
||||
X2AP_TargeteNBtoSource_eNBTransparentContainer_t *c = &ie->value.choice.TargeteNBtoSource_eNBTransparentContainer;
|
||||
|
||||
if (c->size > 1024 /* TODO: this is the size of rrc_buffer in struct x2ap_handover_req_ack_s */)
|
||||
@@ -1012,6 +1045,7 @@ int x2ap_eNB_handle_ue_context_release (instance_t instance,
|
||||
|
||||
if (ie == NULL ) {
|
||||
X2AP_ERROR("%s %d: ie is a NULL pointer \n",__FILE__,__LINE__);
|
||||
itti_free(ITTI_MSG_ORIGIN_ID(msg), msg);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -1022,6 +1056,7 @@ int x2ap_eNB_handle_ue_context_release (instance_t instance,
|
||||
|
||||
if (ie == NULL ) {
|
||||
X2AP_ERROR("%s %d: ie is a NULL pointer \n",__FILE__,__LINE__);
|
||||
itti_free(ITTI_MSG_ORIGIN_ID(msg), msg);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user