Commit b61a2e0e authored by Raymond Knopp's avatar Raymond Knopp

small changes to allow for monolithic eNB execution.

parent ae884afe
...@@ -462,6 +462,7 @@ void RCconfig_RU() { ...@@ -462,6 +462,7 @@ void RCconfig_RU() {
libconfig_int band[256]; libconfig_int band[256];
int num_eNB4RU = 0; int num_eNB4RU = 0;
libconfig_int eNB_list[256]; libconfig_int eNB_list[256];
int fronthaul_flag = CONFIG_TRUE;
load_config_file(&cfg); load_config_file(&cfg);
...@@ -481,38 +482,16 @@ void RCconfig_RU() { ...@@ -481,38 +482,16 @@ void RCconfig_RU() {
setting_ru = config_setting_get_elem(setting, j); setting_ru = config_setting_get_elem(setting, j);
printf("rru %d/%d\n",j,RC.nb_RU); printf("rru %d/%d\n",j,RC.nb_RU);
if ( !( if ( !(
config_setting_lookup_string(setting_ru, CONFIG_STRING_RU_LOCAL_IF_NAME, (const char **)&if_name) config_setting_lookup_string(setting_ru, CONFIG_STRING_RU_LOCAL_IF_NAME,(const char **)&if_name)
&& config_setting_lookup_string(setting_ru, CONFIG_STRING_RU_LOCAL_ADDRESS, (const char **)&ipv4)
&& config_setting_lookup_string(setting_ru, CONFIG_STRING_RU_REMOTE_ADDRESS, (const char **)&ipv4_remote)
&& config_setting_lookup_int (setting_ru, CONFIG_STRING_RU_LOCAL_PORTC, &local_portc)
&& config_setting_lookup_int (setting_ru, CONFIG_STRING_RU_REMOTE_PORTC, &remote_portc)
&& config_setting_lookup_int (setting_ru, CONFIG_STRING_RU_LOCAL_PORTD, &local_portd)
&& config_setting_lookup_int (setting_ru, CONFIG_STRING_RU_REMOTE_PORTD, &remote_portd)
&& config_setting_lookup_string(setting_ru, CONFIG_STRING_RU_TRANSPORT_PREFERENCE, (const char **)&tr_preference)
&& config_setting_lookup_string(setting_ru, CONFIG_STRING_RU_LOCAL_RF, (const char **)&local_rf)
)
) {
AssertFatal (0,
"Failed to parse configuration file %s, RU %d config !\n",
RC.config_file_name, j);
continue; // FIXME will prevent segfaults below, not sure what happens at function exit...
}
if (strcmp(local_rf, "yes") == 0) { // this has a local RF unit so read in default params
if ( !( config_setting_lookup_int(setting_ru, CONFIG_STRING_RU_NB_TX, &nb_tx)
&& config_setting_lookup_int(setting_ru, CONFIG_STRING_RU_NB_RX, &nb_rx)
&& config_setting_lookup_int(setting_ru, CONFIG_STRING_RU_MAX_RS_EPRE, &max_pdschReferenceSignalPower)
&& config_setting_lookup_int(setting_ru, CONFIG_STRING_RU_MAX_RXGAIN, &max_rxgain)
// && config_setting_lookup_int(setting_ru, CONFIG_STRING_RU_ATT_TX, &att_tx)
// && config_setting_lookup_int(setting_ru, CONFIG_STRING_RU_ATT_RX, &att_rx)
) )
) { ) {
AssertFatal (0, fronthaul_flag = CONFIG_FALSE;
"Failed to parse configuration file %s, RU %d config !\n",
RC.config_file_name, j);
continue; // FIXME will prevent segfaults below, not sure what happens at function exit...
} }
if (fronthaul_flag != CONFIG_TRUE) { // no fronthaul
AssertFatal((setting_band = config_setting_get_member(setting_ru, CONFIG_STRING_RU_BAND_LIST))!=NULL,"No allowable LTE bands\n"); AssertFatal((setting_band = config_setting_get_member(setting_ru, CONFIG_STRING_RU_BAND_LIST))!=NULL,"No allowable LTE bands\n");
if (setting_band != NULL) num_bands = config_setting_length(setting_band); if (setting_band != NULL) num_bands = config_setting_length(setting_band);
...@@ -523,8 +502,23 @@ void RCconfig_RU() { ...@@ -523,8 +502,23 @@ void RCconfig_RU() {
band[i] = config_setting_get_int(setting_band_elem); band[i] = config_setting_get_int(setting_band_elem);
printf("RU %d: band %d\n",j,band[i]); printf("RU %d: band %d\n",j,band[i]);
} }
} // fronthaul_flag == CONFIG_FALSE
else { // fronthaul_flag == CONFIG_TRUE
if ( !(
config_setting_lookup_string(setting_ru, CONFIG_STRING_RU_LOCAL_ADDRESS, (const char **)&ipv4)
&& config_setting_lookup_string(setting_ru, CONFIG_STRING_RU_REMOTE_ADDRESS, (const char **)&ipv4_remote)
&& config_setting_lookup_int (setting_ru, CONFIG_STRING_RU_LOCAL_PORTC, &local_portc)
&& config_setting_lookup_int (setting_ru, CONFIG_STRING_RU_REMOTE_PORTC, &remote_portc)
&& config_setting_lookup_int (setting_ru, CONFIG_STRING_RU_LOCAL_PORTD, &local_portd)
&& config_setting_lookup_int (setting_ru, CONFIG_STRING_RU_REMOTE_PORTD, &remote_portd)
&& config_setting_lookup_string(setting_ru, CONFIG_STRING_RU_TRANSPORT_PREFERENCE, (const char **)&tr_preference)
)
) {
AssertFatal (0,
"Failed to parse configuration file %s, RU %d config !\n",
RC.config_file_name, j);
continue; // FIXME will prevent segfaults below, not sure what happens at function exit...
} }
else {
AssertFatal((setting_eNB_list = config_setting_get_member(setting_ru, CONFIG_STRING_RU_ENB_LIST))!=NULL,"No RU<->eNB mappings\n"); AssertFatal((setting_eNB_list = config_setting_get_member(setting_ru, CONFIG_STRING_RU_ENB_LIST))!=NULL,"No RU<->eNB mappings\n");
if (setting_eNB_list != NULL) num_eNB4RU = config_setting_length(setting_eNB_list); if (setting_eNB_list != NULL) num_eNB4RU = config_setting_length(setting_eNB_list);
...@@ -536,35 +530,35 @@ void RCconfig_RU() { ...@@ -536,35 +530,35 @@ void RCconfig_RU() {
eNB_list[i] = config_setting_get_int(setting_eNB_list_elem); eNB_list[i] = config_setting_get_int(setting_eNB_list_elem);
printf("RU %d: eNB %d\n",j,eNB_list[i]); printf("RU %d: eNB %d\n",j,eNB_list[i]);
} }
if ( !( config_setting_lookup_int(setting_ru, CONFIG_STRING_RU_NB_TX, &nb_tx) }
if ( !(
config_setting_lookup_int(setting_ru, CONFIG_STRING_RU_NB_TX, &nb_tx)
&& config_setting_lookup_int(setting_ru, CONFIG_STRING_RU_NB_RX, &nb_rx) && config_setting_lookup_int(setting_ru, CONFIG_STRING_RU_NB_RX, &nb_rx)
&& config_setting_lookup_int(setting_ru, CONFIG_STRING_RU_ATT_TX, &att_tx) && config_setting_lookup_int(setting_ru, CONFIG_STRING_RU_ATT_TX, &att_tx)
&& config_setting_lookup_int(setting_ru, CONFIG_STRING_RU_ATT_RX, &att_rx) && config_setting_lookup_int(setting_ru, CONFIG_STRING_RU_ATT_RX, &att_rx)
) && config_setting_lookup_string(setting_ru, CONFIG_STRING_RU_LOCAL_RF,(const char **)&local_rf)
) { )) {
AssertFatal (0, AssertFatal (0,
"Failed to parse configuration file %s, RU %d config !\n", "Failed to parse configuration file %s, RU %d config !\n",
RC.config_file_name, j); RC.config_file_name, j);
continue; // FIXME will prevent segfaults below, not sure what happens at function exit... continue; // FIXME will prevent segfaults below, not sure what happens at function exit...
} }
}
printf("RU %d: Transport %s\n",j,tr_preference);
RC.ru[j] = (RU_t*)malloc(sizeof(RU_t)); RC.ru[j] = (RU_t*)malloc(sizeof(RU_t));
memset((void*)RC.ru[j],0,sizeof(RU_t)); memset((void*)RC.ru[j],0,sizeof(RU_t));
RC.ru[j]->idx = j; RC.ru[j]->idx = j;
RC.ru[j]->eth_params.local_if_name = strdup(if_name);
RC.ru[j]->eth_params.my_addr = strdup(ipv4);
RC.ru[j]->eth_params.remote_addr = strdup(ipv4_remote);
RC.ru[j]->eth_params.my_portc = local_portc;
RC.ru[j]->eth_params.remote_portc = remote_portc;
RC.ru[j]->eth_params.my_portd = local_portd;
RC.ru[j]->eth_params.remote_portd = remote_portd;
RC.ru[j]->if_timing = synch_to_ext_device; RC.ru[j]->if_timing = synch_to_ext_device;
RC.ru[j]->num_eNB = num_eNB4RU; RC.ru[j]->num_eNB = num_eNB4RU;
if (strcmp(local_rf, "yes") == 0) { if (strcmp(local_rf, "yes") == 0) {
if (fronthaul_flag == CONFIG_FALSE) {
RC.ru[j]->if_south = LOCAL_RF;
RC.ru[j]->function = eNodeB_3GPP;
}
else {
if (strcmp(tr_preference, "udp") == 0) { if (strcmp(tr_preference, "udp") == 0) {
RC.ru[j]->if_south = LOCAL_RF; RC.ru[j]->if_south = LOCAL_RF;
RC.ru[j]->function = NGFI_RRU_IF5; RC.ru[j]->function = NGFI_RRU_IF5;
...@@ -582,6 +576,7 @@ void RCconfig_RU() { ...@@ -582,6 +576,7 @@ void RCconfig_RU() {
RC.ru[j]->function = NGFI_RRU_IF4p5; RC.ru[j]->function = NGFI_RRU_IF4p5;
RC.ru[j]->eth_params.transp_preference = ETH_RAW_IF4p5_MODE; RC.ru[j]->eth_params.transp_preference = ETH_RAW_IF4p5_MODE;
} }
}
RC.ru[j]->max_pdschReferenceSignalPower = max_pdschReferenceSignalPower; RC.ru[j]->max_pdschReferenceSignalPower = max_pdschReferenceSignalPower;
RC.ru[j]->max_rxgain = max_rxgain; RC.ru[j]->max_rxgain = max_rxgain;
...@@ -589,7 +584,15 @@ void RCconfig_RU() { ...@@ -589,7 +584,15 @@ void RCconfig_RU() {
for (i=0;i<num_bands;i++) RC.ru[j]->band[i] = band[i]; for (i=0;i<num_bands;i++) RC.ru[j]->band[i] = band[i];
} }
else { else {
printf("RU %d: Transport %s\n",j,tr_preference);
RC.ru[j]->eth_params.local_if_name = strdup(if_name);
RC.ru[j]->eth_params.my_addr = strdup(ipv4);
RC.ru[j]->eth_params.remote_addr = strdup(ipv4_remote);
RC.ru[j]->eth_params.my_portc = local_portc;
RC.ru[j]->eth_params.remote_portc = remote_portc;
RC.ru[j]->eth_params.my_portd = local_portd;
RC.ru[j]->eth_params.remote_portd = remote_portd;
for (i=0;i<num_eNB4RU;i++) RC.ru[j]->eNB_list[i] = RC.eNB[eNB_list[i]][0]; for (i=0;i<num_eNB4RU;i++) RC.ru[j]->eNB_list[i] = RC.eNB[eNB_list[i]][0];
if (strcmp(tr_preference, "udp") == 0) { if (strcmp(tr_preference, "udp") == 0) {
......
...@@ -19,11 +19,13 @@ eNBs = ...@@ -19,11 +19,13 @@ eNBs =
mobile_network_code = "93"; mobile_network_code = "93";
tr_s_preference = "local_mac"
////////// Physical parameters: ////////// Physical parameters:
component_carriers = ( component_carriers = (
{ {
node_function = "eNodeB_3GPP"; node_function = "3GPP_eNODEB";
node_timing = "synch_to_ext_device"; node_timing = "synch_to_ext_device";
node_synch_ref = 0; node_synch_ref = 0;
frame_type = "FDD"; frame_type = "FDD";
...@@ -40,7 +42,8 @@ eNBs = ...@@ -40,7 +42,8 @@ eNBs =
nb_antennas_tx = 1; nb_antennas_tx = 1;
nb_antennas_rx = 1; nb_antennas_rx = 1;
tx_gain = 90; tx_gain = 90;
rx_gain = 120; rx_gain = 125;
pbch_repetition = "FALSE";
prach_root = 0; prach_root = 0;
prach_config_index = 0; prach_config_index = 0;
prach_high_speed = "DISABLE"; prach_high_speed = "DISABLE";
...@@ -86,7 +89,7 @@ eNBs = ...@@ -86,7 +89,7 @@ eNBs =
rach_messagePowerOffsetGroupB = ; rach_messagePowerOffsetGroupB = ;
*/ */
rach_powerRampingStep = 4; rach_powerRampingStep = 4;
rach_preambleInitialReceivedTargetPower = -104; rach_preambleInitialReceivedTargetPower = -108;
rach_preambleTransMax = 10; rach_preambleTransMax = 10;
rach_raResponseWindowSize = 10; rach_raResponseWindowSize = 10;
rach_macContentionResolutionTimer = 48; rach_macContentionResolutionTimer = 48;
...@@ -101,11 +104,11 @@ eNBs = ...@@ -101,11 +104,11 @@ eNBs =
ue_TimersAndConstants_t311 = 10000; ue_TimersAndConstants_t311 = 10000;
ue_TimersAndConstants_n310 = 20; ue_TimersAndConstants_n310 = 20;
ue_TimersAndConstants_n311 = 1; ue_TimersAndConstants_n311 = 1;
ue_TransmissionMode = 1; ue_TransmissionMode = 1;
} }
); );
srb1_parameters : srb1_parameters :
{ {
# timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500] # timer_poll_retransmit = (ms) [5, 10, 15, 20,... 250, 300, 350, ... 500]
...@@ -135,6 +138,7 @@ eNBs = ...@@ -135,6 +138,7 @@ eNBs =
SCTP_OUTSTREAMS = 2; SCTP_OUTSTREAMS = 2;
}; };
////////// MME parameters: ////////// MME parameters:
mme_ip_address = ( { ipv4 = "127.0.0.3"; mme_ip_address = ( { ipv4 = "127.0.0.3";
ipv6 = "192:168:30::17"; ipv6 = "192:168:30::17";
...@@ -145,9 +149,9 @@ eNBs = ...@@ -145,9 +149,9 @@ eNBs =
NETWORK_INTERFACES : NETWORK_INTERFACES :
{ {
ENB_INTERFACE_NAME_FOR_S1_MME = "lo"; ENB_INTERFACE_NAME_FOR_S1_MME = "lo";
ENB_IPV4_ADDRESS_FOR_S1_MME = "127.0.0.2/24"; ENB_IPV4_ADDRESS_FOR_S1_MME = "127.0.0.2/24";
ENB_INTERFACE_NAME_FOR_S1U = "lo"; ENB_INTERFACE_NAME_FOR_S1U = "lo";
ENB_IPV4_ADDRESS_FOR_S1U = "127.0.0.5/24"; ENB_IPV4_ADDRESS_FOR_S1U = "127.0.0.5/24";
ENB_PORT_FOR_S1U = 2152; # Spec 2152 ENB_PORT_FOR_S1U = 2152; # Spec 2152
...@@ -172,3 +176,30 @@ eNBs = ...@@ -172,3 +176,30 @@ eNBs =
}; };
} }
); );
MACRLCs = (
{
num_cc = 1;
tr_s_preference = "local_L1";
tr_n_preference = "local_RRC";
}
);
L1s = (
{
num_cc = 1;
tr_n_preference = "local_mac";
}
);
RUs = (
{
local_rf = "yes"
nb_tx = 1
nb_rx = 1
att_tx = 0
att_rx = 0;
bands = [7];
eNB_instances = [0];
}
);
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment