seevral fixes for F1 in 4G
This commit is contained in:
@@ -13,7 +13,7 @@ eNBs = (
|
||||
|
||||
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
||||
tracking_area_code = 1;
|
||||
plmn_list = ( { mcc = 208; mnc = 92; mnc_length = 2; } )
|
||||
plmn_list = ( { mcc = 450; mnc = 05; mnc_length = 2; } )
|
||||
|
||||
nr_cellid = 12345678L
|
||||
|
||||
@@ -179,7 +179,7 @@ eNBs = (
|
||||
////////// MME parameters:
|
||||
mme_ip_address = (
|
||||
{
|
||||
ipv4 = "CI_MME_IP_ADDR";
|
||||
ipv4 = "192.168.5.233";
|
||||
ipv6 = "192:168:30::17";
|
||||
port = 36412 ;
|
||||
active = "yes";
|
||||
@@ -189,11 +189,11 @@ eNBs = (
|
||||
|
||||
NETWORK_INTERFACES : {
|
||||
ENB_INTERFACE_NAME_FOR_S1_MME = "eth0";
|
||||
ENB_IPV4_ADDRESS_FOR_S1_MME = "CI_ENB_IP_ADDR";
|
||||
ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.5.244";
|
||||
ENB_INTERFACE_NAME_FOR_S1U = "eth0";
|
||||
ENB_IPV4_ADDRESS_FOR_S1U = "CI_ENB_IP_ADDR";
|
||||
ENB_IPV4_ADDRESS_FOR_S1U = "192.168.5.244";
|
||||
ENB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||
ENB_IPV4_ADDRESS_FOR_X2C = "CI_ENB_IP_ADDR";
|
||||
ENB_IPV4_ADDRESS_FOR_X2C = "192.168.5.244";
|
||||
ENB_PORT_FOR_X2C = 36422; # Spec 36422
|
||||
};
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ eNBs =
|
||||
|
||||
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
||||
tracking_area_code = 1;
|
||||
plmn_list = ( { mcc = 208; mnc = 92; mnc_length = 2; } )
|
||||
plmn_list = ( { mcc = 450; mnc = 05; mnc_length = 2; } )
|
||||
|
||||
nr_cellid = 12345678L
|
||||
|
||||
|
||||
@@ -202,6 +202,7 @@ typedef struct served_cells_to_activate_s {
|
||||
/// SI message containers (up to 21 messages per cell)
|
||||
uint8_t *SI_container[21];
|
||||
int SI_container_length[21];
|
||||
int SI_type[21];
|
||||
} served_cells_to_activate_t;
|
||||
|
||||
typedef struct f1ap_setup_resp_s {
|
||||
|
||||
@@ -3168,7 +3168,7 @@ void handle_f1ap_setup_resp(f1ap_setup_resp_t *resp) {
|
||||
(check_plmn_identity(carrier, resp->cells_to_activate[j].mcc, resp->cells_to_activate[j].mnc, resp->cells_to_activate[j].mnc_digit_length)>0 &&
|
||||
resp->cells_to_activate[j].nrpci == carrier->physCellId)) {
|
||||
// copy system information and decode it
|
||||
for (si_ind=2; si_ind<resp->cells_to_activate[j].num_SI + 2; si_ind++) {
|
||||
for (si_ind=0; si_ind<resp->cells_to_activate[j].num_SI; si_ind++) {
|
||||
//printf("SI %d size %d: ", si_ind, resp->cells_to_activate[j].SI_container_length[si_ind]);
|
||||
//for (int n=0;n<resp->cells_to_activate[j].SI_container_length[si_ind];n++)
|
||||
// printf("%02x ",resp->cells_to_activate[j].SI_container[si_ind][n]);
|
||||
@@ -3176,7 +3176,7 @@ void handle_f1ap_setup_resp(f1ap_setup_resp_t *resp) {
|
||||
if (si_ind==6) si_ind=9;
|
||||
if (resp->cells_to_activate[j].SI_container[si_ind] != NULL) {
|
||||
extract_and_decode_SI(i,
|
||||
si_ind,
|
||||
resp->cells_to_activate[j].SI_type[si_ind],
|
||||
resp->cells_to_activate[j].SI_container[si_ind],
|
||||
resp->cells_to_activate[j].SI_container_length[si_ind]);
|
||||
}
|
||||
|
||||
@@ -151,7 +151,9 @@ int CU_handle_F1_SETUP_REQUEST(instance_t instance,
|
||||
// Furthermore, cell_type is not a attribute of a cell in the data structure !!!!!!!!!!
|
||||
if (RC.nrrrc && RC.nrrrc[GNB_INSTANCE_TO_MODULE_ID(instance)]->node_type == ngran_gNB_CU)
|
||||
f1ap_req(true, instance)->cell_type=CELL_MACRO_GNB;
|
||||
LOG_I(F1AP, "Received Cell in %d context\n", f1ap_req(true, instance)->cell_type=CELL_MACRO_GNB);
|
||||
else
|
||||
f1ap_req(true, instance)->cell_type=CELL_MACRO_ENB;
|
||||
LOG_I(F1AP, "Received Cell in %d context\n", f1ap_req(true, instance)->cell_type==CELL_MACRO_GNB);
|
||||
// System Information
|
||||
/* mib */
|
||||
req->mib[i] = calloc(served_cells_item_p->gNB_DU_System_Information->mIB_message.size + 1, sizeof(char));
|
||||
|
||||
@@ -122,7 +122,7 @@ void * F1AP_CU_task(void *arg) {
|
||||
itti_mark_task_ready(TASK_CU_F1);
|
||||
eth_params_t *IPaddrs;
|
||||
// Hardcoded instance id!
|
||||
if (RC.nrrrc[0]->node_type == ngran_gNB_CU)
|
||||
if (RC.nrrrc && RC.nrrrc[0]->node_type == ngran_gNB_CU)
|
||||
IPaddrs=&RC.nrrrc[0]->eth_params_s;
|
||||
else
|
||||
IPaddrs=&RC.rrc[0]->eth_params_s;
|
||||
|
||||
@@ -44,7 +44,8 @@ int to_NRNRB(int nrb) {
|
||||
for (int i=0; i<sizeofArray(nrb_lut); i++)
|
||||
if (nrb_lut[i] == nrb)
|
||||
return i;
|
||||
|
||||
if(!RC.nrrrc)
|
||||
return 0;
|
||||
AssertFatal(1==0,"nrb %d is not in the list of possible NRNRB\n",nrb);
|
||||
}
|
||||
|
||||
@@ -867,6 +868,7 @@ int DU_handle_gNB_CU_CONFIGURATION_UPDATE(instance_t instance,
|
||||
memcpy((void *)F1AP_GNB_CU_CONFIGURATION_UPDATE (msg_p).cells_to_activate[i].SI_container[si],
|
||||
(void *)sib_item->sIBmessage.buf,
|
||||
size);
|
||||
F1AP_GNB_CU_CONFIGURATION_UPDATE (msg_p).cells_to_activate[i].SI_type[si]=sib_item->sIBtype;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
@@ -85,12 +85,18 @@ void du_task_handle_sctp_association_resp(instance_t instance, sctp_new_associat
|
||||
f1ap_du_data->sctp_out_streams = sctp_new_association_resp->out_streams;
|
||||
f1ap_du_data->default_sctp_stream_id = 0;
|
||||
/* setup parameters for F1U and start the server */
|
||||
const cudu_params_t params = {
|
||||
.local_ipv4_address = RC.nrmac[instance]->eth_params_n.my_addr,
|
||||
.local_port = RC.nrmac[instance]->eth_params_n.my_portd,
|
||||
.remote_ipv4_address = RC.nrmac[instance]->eth_params_n.remote_addr,
|
||||
.remote_port = RC.nrmac[instance]->eth_params_n.remote_portd
|
||||
};
|
||||
eth_params_t *tmp;
|
||||
if ( RC.nrmac )
|
||||
tmp= &RC.nrmac[instance]->eth_params_n;
|
||||
else
|
||||
tmp= &RC.mac[instance]->eth_params_n;
|
||||
const cudu_params_t params = {
|
||||
.local_ipv4_address = tmp->my_addr,
|
||||
.local_port = tmp->my_portd,
|
||||
.remote_ipv4_address = tmp->remote_addr,
|
||||
.remote_port = tmp->remote_portd
|
||||
};
|
||||
|
||||
if (!RC.nrrrc)
|
||||
AssertFatal(proto_agent_start(instance, ¶ms) == 0,
|
||||
"could not start PROTO_AGENT for F1U on instance %ld!\n", instance);
|
||||
|
||||
Reference in New Issue
Block a user