handling of timing advance is improved. MAC retrieves timing advance from phy once prior to DL scheduling and clears the statistic in PHY. A timer for controlling the timing advance periodicity was introduced.
This commit is contained in:
@@ -107,7 +107,7 @@ void lte_eNB_I0_measurements(PHY_VARS_eNB *phy_vars_eNB,
|
|||||||
// + (k2*phy_measurements->n0_subband_power[aarx][rb]));
|
// + (k2*phy_measurements->n0_subband_power[aarx][rb]));
|
||||||
|
|
||||||
phy_measurements->n0_subband_power_dB[aarx][rb] = dB_fixed(phy_measurements->n0_subband_power[aarx][rb]);
|
phy_measurements->n0_subband_power_dB[aarx][rb] = dB_fixed(phy_measurements->n0_subband_power[aarx][rb]);
|
||||||
// printf("subframe %d (%d): eNb %d, aarx %d, rb %d len %d: energy %d (%d dB)\n",subframe,offset,eNB_id,aarx,rb,len,signal_energy_nodc(ul_ch,len),
|
// printf("subframe %d (%d): eNb %d, aarx %d, rb %d len %d: energy %d (%d dB)\n",subframe,offset,eNB_id,aarx,rb,len,signal_energy_nodc(ul_ch,len),
|
||||||
// phy_measurements->n0_subband_power_dB[aarx][rb]);
|
// phy_measurements->n0_subband_power_dB[aarx][rb]);
|
||||||
n0_power_tot += phy_measurements->n0_subband_power[aarx][rb];
|
n0_power_tot += phy_measurements->n0_subband_power[aarx][rb];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -577,10 +577,14 @@ int dump_eNB_stats(PHY_VARS_eNB *phy_vars_eNB, char* buffer, int length)
|
|||||||
phy_vars_eNB->rb_mask_ul[0],
|
phy_vars_eNB->rb_mask_ul[0],
|
||||||
phy_vars_eNB->rb_mask_ul[1],phy_vars_eNB->rb_mask_ul[2],phy_vars_eNB->rb_mask_ul[3]);
|
phy_vars_eNB->rb_mask_ul[1],phy_vars_eNB->rb_mask_ul[2],phy_vars_eNB->rb_mask_ul[3]);
|
||||||
|
|
||||||
for (i=0; i<phy_vars_eNB->lte_frame_parms.N_RB_UL; i++)
|
for (i=0; i<phy_vars_eNB->lte_frame_parms.N_RB_UL; i++) {
|
||||||
len += sprintf(&buffer[len],"%4d ",
|
len += sprintf(&buffer[len],"%4d ",
|
||||||
phy_vars_eNB->PHY_measurements_eNB[eNB].n0_subband_power_tot_dBm[i]);
|
phy_vars_eNB->PHY_measurements_eNB[eNB].n0_subband_power_tot_dBm[i]);
|
||||||
|
if ((i>0) && ((i%25) == 0))
|
||||||
|
len += sprintf(&buffer[len],"\n ",
|
||||||
|
phy_vars_eNB->PHY_measurements_eNB[eNB].n0_subband_power_tot_dBm[i]);
|
||||||
|
|
||||||
|
}
|
||||||
len += sprintf(&buffer[len],"\n");
|
len += sprintf(&buffer[len],"\n");
|
||||||
len += sprintf(&buffer[len],"\n[eNB PROC] PERFORMANCE PARAMETERS\n");
|
len += sprintf(&buffer[len],"\n[eNB PROC] PERFORMANCE PARAMETERS\n");
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -786,7 +786,7 @@ uint32_t rx_pucch(PHY_VARS_eNB *phy_vars_eNB,
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef DEBUG_PUCCH_RX
|
#ifdef DEBUG_PUCCH_RX
|
||||||
LOG_D(PHY,"[eNB] PUCCH fmt1: stat_max : %d, sigma2_dB %d (%d, %d), phase_max : %d\n",dB_fixed(stat_max),sigma2_dB,phy_vars_eNB->PHY_measurements_eNB[0].n0_subband_power_tot_dBm[6],pucch1_thres,phase_max);
|
LOG_I(PHY,"[eNB] PUCCH fmt1: stat_max : %d, sigma2_dB %d (%d, %d), phase_max : %d\n",dB_fixed(stat_max),sigma2_dB,phy_vars_eNB->PHY_measurements_eNB[0].n0_subband_power_tot_dBm[6],pucch1_thres,phase_max);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
phy_vars_eNB->pucch1_stats[UE_id][(subframe<<10)+phy_vars_eNB->pucch1_stats_cnt[UE_id][subframe]] = stat_max;
|
phy_vars_eNB->pucch1_stats[UE_id][(subframe<<10)+phy_vars_eNB->pucch1_stats_cnt[UE_id][subframe]] = stat_max;
|
||||||
@@ -807,7 +807,7 @@ uint32_t rx_pucch(PHY_VARS_eNB *phy_vars_eNB,
|
|||||||
if (sigma2_dB<(dB_fixed(stat_max)-pucch1_thres)) {
|
if (sigma2_dB<(dB_fixed(stat_max)-pucch1_thres)) {
|
||||||
*payload = 1;
|
*payload = 1;
|
||||||
*Po_PUCCH1_above = ((*Po_PUCCH1_above<<9) + (stat_max<<9)+1024)>>10;
|
*Po_PUCCH1_above = ((*Po_PUCCH1_above<<9) + (stat_max<<9)+1024)>>10;
|
||||||
// LOG_I(PHY,"[eNB] PUCCH fmt1: stat_max : %d, sigma2_dB %d (%d, %d), phase_max : %d\n",dB_fixed(stat_max),sigma2_dB,phy_vars_eNB->PHY_measurements_eNB[0].n0_power_tot_dBm,pucch1_thres,phase_max);
|
//LOG_I(PHY,"[eNB] PUCCH fmt1: stat_max : %d, sigma2_dB %d (%d, %d), phase_max : %d\n",dB_fixed(stat_max),sigma2_dB,phy_vars_eNB->PHY_measurements_eNB[0].n0_power_tot_dBm,pucch1_thres,phase_max);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
*payload = 0;
|
*payload = 0;
|
||||||
|
|||||||
@@ -470,13 +470,13 @@ typedef struct {
|
|||||||
//! estimated avg noise power (dB)
|
//! estimated avg noise power (dB)
|
||||||
short n0_power_tot_dBm;
|
short n0_power_tot_dBm;
|
||||||
//! estimated avg noise power per RB per RX ant (lin)
|
//! estimated avg noise power per RB per RX ant (lin)
|
||||||
unsigned short n0_subband_power[NB_ANTENNAS_RX][25];
|
unsigned short n0_subband_power[NB_ANTENNAS_RX][100];
|
||||||
//! estimated avg noise power per RB per RX ant (dB)
|
//! estimated avg noise power per RB per RX ant (dB)
|
||||||
unsigned short n0_subband_power_dB[NB_ANTENNAS_RX][25];
|
unsigned short n0_subband_power_dB[NB_ANTENNAS_RX][100];
|
||||||
//! estimated avg noise power per RB (dB)
|
//! estimated avg noise power per RB (dB)
|
||||||
short n0_subband_power_tot_dB[25];
|
short n0_subband_power_tot_dB[100];
|
||||||
//! estimated avg noise power per RB (dBm)
|
//! estimated avg noise power per RB (dBm)
|
||||||
short n0_subband_power_tot_dBm[25];
|
short n0_subband_power_tot_dBm[100];
|
||||||
// eNB measurements (per user)
|
// eNB measurements (per user)
|
||||||
//! estimated received spatial signal power (linear)
|
//! estimated received spatial signal power (linear)
|
||||||
unsigned int rx_spatial_power[NUMBER_OF_UE_MAX][2][2];
|
unsigned int rx_spatial_power[NUMBER_OF_UE_MAX][2][2];
|
||||||
@@ -496,13 +496,13 @@ typedef struct {
|
|||||||
/// Wideband CQI (sum of all RX antennas, in dB)
|
/// Wideband CQI (sum of all RX antennas, in dB)
|
||||||
char wideband_cqi_tot[NUMBER_OF_UE_MAX];
|
char wideband_cqi_tot[NUMBER_OF_UE_MAX];
|
||||||
/// Subband CQI per RX antenna and RB (= SINR)
|
/// Subband CQI per RX antenna and RB (= SINR)
|
||||||
int subband_cqi[NUMBER_OF_UE_MAX][NB_ANTENNAS_RX][25];
|
int subband_cqi[NUMBER_OF_UE_MAX][NB_ANTENNAS_RX][100];
|
||||||
/// Total Subband CQI and RB (= SINR)
|
/// Total Subband CQI and RB (= SINR)
|
||||||
int subband_cqi_tot[NUMBER_OF_UE_MAX][25];
|
int subband_cqi_tot[NUMBER_OF_UE_MAX][100];
|
||||||
/// Subband CQI in dB and RB (= SINR dB)
|
/// Subband CQI in dB and RB (= SINR dB)
|
||||||
int subband_cqi_dB[NUMBER_OF_UE_MAX][NB_ANTENNAS_RX][25];
|
int subband_cqi_dB[NUMBER_OF_UE_MAX][NB_ANTENNAS_RX][100];
|
||||||
/// Total Subband CQI and RB
|
/// Total Subband CQI and RB
|
||||||
int subband_cqi_tot_dB[NUMBER_OF_UE_MAX][25];
|
int subband_cqi_tot_dB[NUMBER_OF_UE_MAX][100];
|
||||||
|
|
||||||
} PHY_MEASUREMENTS_eNB;
|
} PHY_MEASUREMENTS_eNB;
|
||||||
|
|
||||||
|
|||||||
@@ -736,7 +736,8 @@ typedef struct {
|
|||||||
uint8_t dl_pow_off[MAX_NUM_CCs];
|
uint8_t dl_pow_off[MAX_NUM_CCs];
|
||||||
uint16_t pre_nb_available_rbs[MAX_NUM_CCs];
|
uint16_t pre_nb_available_rbs[MAX_NUM_CCs];
|
||||||
unsigned char rballoc_sub_UE[MAX_NUM_CCs][N_RBG_MAX];
|
unsigned char rballoc_sub_UE[MAX_NUM_CCs][N_RBG_MAX];
|
||||||
|
uint16_t ta_timer;
|
||||||
|
int16_t ta_update;
|
||||||
} UE_sched_ctrl;
|
} UE_sched_ctrl;
|
||||||
/*! \brief eNB template for the Random access information */
|
/*! \brief eNB template for the Random access information */
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|||||||
@@ -447,7 +447,6 @@ schedule_ue_spec(
|
|||||||
// uint16_t pre_nb_available_rbs[MAX_NUM_CCs][NUMBER_OF_UE_MAX];
|
// uint16_t pre_nb_available_rbs[MAX_NUM_CCs][NUMBER_OF_UE_MAX];
|
||||||
int mcs;
|
int mcs;
|
||||||
uint16_t min_rb_unit[MAX_NUM_CCs];
|
uint16_t min_rb_unit[MAX_NUM_CCs];
|
||||||
short ta_update = 0;
|
|
||||||
eNB_MAC_INST *eNB = &eNB_mac_inst[module_idP];
|
eNB_MAC_INST *eNB = &eNB_mac_inst[module_idP];
|
||||||
UE_list_t *UE_list = &eNB->UE_list;
|
UE_list_t *UE_list = &eNB->UE_list;
|
||||||
LTE_DL_FRAME_PARMS *frame_parms[MAX_NUM_CCs];
|
LTE_DL_FRAME_PARMS *frame_parms[MAX_NUM_CCs];
|
||||||
@@ -804,29 +803,7 @@ schedule_ue_spec(
|
|||||||
// check first for RLC data on DCCH
|
// check first for RLC data on DCCH
|
||||||
// add the length for all the control elements (timing adv, drx, etc) : header + payload
|
// add the length for all the control elements (timing adv, drx, etc) : header + payload
|
||||||
|
|
||||||
//#ifndef EXMIMO_IOT
|
ta_len = (ue_sched_ctl->ta_update!=0) ? 2 : 0;
|
||||||
// to be checked by RK, NN, FK
|
|
||||||
uint8_t update_TA=4;
|
|
||||||
|
|
||||||
switch (frame_parms[CC_id]->N_RB_DL) {
|
|
||||||
case 6:
|
|
||||||
update_TA = 1;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 25:
|
|
||||||
update_TA = 4;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 50:
|
|
||||||
update_TA = 8;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 100:
|
|
||||||
update_TA = 16;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
ta_len = ((eNB_UE_stats->timing_advance_update/update_TA)!=0) ? 2 : 0;
|
|
||||||
|
|
||||||
header_len_dcch = 2; // 2 bytes DCCH SDU subheader
|
header_len_dcch = 2; // 2 bytes DCCH SDU subheader
|
||||||
|
|
||||||
@@ -1074,11 +1051,6 @@ schedule_ue_spec(
|
|||||||
post_padding = TBS - sdu_length_total - header_len_dcch - header_len_dtch - ta_len ; // 1 is for the postpadding header
|
post_padding = TBS - sdu_length_total - header_len_dcch - header_len_dtch - ta_len ; // 1 is for the postpadding header
|
||||||
}
|
}
|
||||||
|
|
||||||
//#ifndef EXMIMO_IOT
|
|
||||||
ta_update = eNB_UE_stats->timing_advance_update/update_TA;
|
|
||||||
/*#else
|
|
||||||
ta_update = 0;
|
|
||||||
#endif*/
|
|
||||||
|
|
||||||
offset = generate_dlsch_header((unsigned char*)UE_list->DLSCH_pdu[CC_id][0][UE_id].payload[0],
|
offset = generate_dlsch_header((unsigned char*)UE_list->DLSCH_pdu[CC_id][0][UE_id].payload[0],
|
||||||
// offset = generate_dlsch_header((unsigned char*)eNB_mac_inst[0].DLSCH_pdu[0][0].payload[0],
|
// offset = generate_dlsch_header((unsigned char*)eNB_mac_inst[0].DLSCH_pdu[0][0].payload[0],
|
||||||
@@ -1086,17 +1058,17 @@ schedule_ue_spec(
|
|||||||
sdu_lengths, //
|
sdu_lengths, //
|
||||||
sdu_lcids,
|
sdu_lcids,
|
||||||
255, // no drx
|
255, // no drx
|
||||||
ta_update, // timing advance
|
ue_sched_ctl->ta_update, // timing advance
|
||||||
NULL, // contention res id
|
NULL, // contention res id
|
||||||
padding,
|
padding,
|
||||||
post_padding);
|
post_padding);
|
||||||
|
|
||||||
//#ifdef DEBUG_eNB_SCHEDULER
|
//#ifdef DEBUG_eNB_SCHEDULER
|
||||||
if (ta_update) {
|
if (ue_sched_ctl->ta_update) {
|
||||||
LOG_I(MAC,
|
LOG_I(MAC,
|
||||||
"[eNB %d][DLSCH] Frame %d Generate header for UE_id %d on CC_id %d: sdu_length_total %d, num_sdus %d, sdu_lengths[0] %d, sdu_lcids[0] %d => payload offset %d,timing advance value : %d, padding %d,post_padding %d,(mcs %d, TBS %d, nb_rb %d),header_dcch %d, header_dtch %d\n",
|
"[eNB %d][DLSCH] Frame %d Generate header for UE_id %d on CC_id %d: sdu_length_total %d, num_sdus %d, sdu_lengths[0] %d, sdu_lcids[0] %d => payload offset %d,timing advance value : %d, padding %d,post_padding %d,(mcs %d, TBS %d, nb_rb %d),header_dcch %d, header_dtch %d\n",
|
||||||
module_idP,frameP, UE_id, CC_id, sdu_length_total,num_sdus,sdu_lengths[0],sdu_lcids[0],offset,
|
module_idP,frameP, UE_id, CC_id, sdu_length_total,num_sdus,sdu_lengths[0],sdu_lcids[0],offset,
|
||||||
ta_update,padding,post_padding,mcs,TBS,nb_rb,header_len_dcch,header_len_dtch);
|
ue_sched_ctl->ta_update,padding,post_padding,mcs,TBS,nb_rb,header_len_dcch,header_len_dtch);
|
||||||
}
|
}
|
||||||
|
|
||||||
//#endif
|
//#endif
|
||||||
|
|||||||
@@ -267,6 +267,7 @@ int add_new_ue(module_id_t mod_idP, int cc_idP, rnti_t rntiP,int harq_pidP)
|
|||||||
UE_list->ordered_ULCCids[0][UE_id] = cc_idP;
|
UE_list->ordered_ULCCids[0][UE_id] = cc_idP;
|
||||||
UE_list->num_UEs++;
|
UE_list->num_UEs++;
|
||||||
UE_list->active[UE_id] = TRUE;
|
UE_list->active[UE_id] = TRUE;
|
||||||
|
memset((void*)&UE_list->UE_sched_ctrl[UE_id],0,sizeof(UE_sched_ctrl));
|
||||||
|
|
||||||
for (j=0; j<8; j++) {
|
for (j=0; j<8; j++) {
|
||||||
UE_list->UE_template[cc_idP][UE_id].oldNDI[j] = (j==0)?1:0; // 1 because first transmission is with format1A (Msg4) for harq_pid 0
|
UE_list->UE_template[cc_idP][UE_id].oldNDI[j] = (j==0)?1:0; // 1 because first transmission is with format1A (Msg4) for harq_pid 0
|
||||||
|
|||||||
@@ -126,10 +126,8 @@ void rx_sdu(
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case CRNTI:
|
case CRNTI:
|
||||||
LOG_D(MAC, "[eNB %d] CC_id %d MAC CE_LCID %d (ce %d/%d): Received CRNTI %2.2x%2.2x\n",
|
|
||||||
enb_mod_idP, CC_idP, rx_ces[i], i,num_ce, payload_ptr[0], payload_ptr[1]);
|
|
||||||
UE_id = find_UE_id(enb_mod_idP,(((uint16_t)payload_ptr[0])<<8) + payload_ptr[1]);
|
UE_id = find_UE_id(enb_mod_idP,(((uint16_t)payload_ptr[0])<<8) + payload_ptr[1]);
|
||||||
LOG_I(MAC, "[eNB %d] CC_id %d MAC CE_LCID %d : CRNTI %x (UE_id %d) in Msg3\n",enb_mod_idP, CC_idP, rx_ces[i], (((uint16_t)payload_ptr[0])<<8) + payload_ptr[1],UE_id);
|
LOG_I(MAC, "[eNB %d] CC_id %d MAC CE_LCID %d (ce %d/%d): CRNTI %x (UE_id %d) in Msg3\n",enb_mod_idP, CC_idP, rx_ces[i], i,num_ce,(((uint16_t)payload_ptr[0])<<8) + payload_ptr[1],UE_id);
|
||||||
|
|
||||||
payload_ptr+=2;
|
payload_ptr+=2;
|
||||||
/* we don't process this CE yet */
|
/* we don't process this CE yet */
|
||||||
|
|||||||
@@ -754,13 +754,50 @@ void dlsch_scheduler_pre_processor_reset (int module_idP,
|
|||||||
int subframe05_limit=0;
|
int subframe05_limit=0;
|
||||||
int sf05_upper=-1,sf05_lower=-1;
|
int sf05_upper=-1,sf05_lower=-1;
|
||||||
#endif
|
#endif
|
||||||
|
LTE_eNB_UE_stats *eNB_UE_stats = mac_xface->get_eNB_UE_stats(module_idP,CC_id,rnti);
|
||||||
// initialize harq_pid and round
|
// initialize harq_pid and round
|
||||||
mac_xface->get_ue_active_harq_pid(module_idP,CC_id,rnti,
|
mac_xface->get_ue_active_harq_pid(module_idP,CC_id,rnti,
|
||||||
frameP,subframeP,
|
frameP,subframeP,
|
||||||
&ue_sched_ctl->harq_pid[CC_id],
|
&ue_sched_ctl->harq_pid[CC_id],
|
||||||
&ue_sched_ctl->round[CC_id],
|
&ue_sched_ctl->round[CC_id],
|
||||||
0);
|
0);
|
||||||
|
if (ue_sched_ctl->ta_timer == 0) {
|
||||||
|
|
||||||
|
// WE SHOULD PROTECT the eNB_UE_stats with a mutex here ...
|
||||||
|
|
||||||
|
ue_sched_ctl->ta_timer = 20; // wait 20 subframes before taking TA measurement from PHY
|
||||||
|
switch (PHY_vars_eNB_g[module_idP][CC_id]->lte_frame_parms.N_RB_DL) {
|
||||||
|
case 6:
|
||||||
|
ue_sched_ctl->ta_update = eNB_UE_stats->timing_advance_update;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 15:
|
||||||
|
ue_sched_ctl->ta_update = eNB_UE_stats->timing_advance_update/2;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 25:
|
||||||
|
ue_sched_ctl->ta_update = eNB_UE_stats->timing_advance_update/4;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 50:
|
||||||
|
ue_sched_ctl->ta_update = eNB_UE_stats->timing_advance_update/8;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 75:
|
||||||
|
ue_sched_ctl->ta_update = eNB_UE_stats->timing_advance_update/12;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 100:
|
||||||
|
ue_sched_ctl->ta_update = eNB_UE_stats->timing_advance_update/16;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// clear the update in case PHY does not have a new measurement after timer expiry
|
||||||
|
eNB_UE_stats->timing_advance_update = 0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
ue_sched_ctl->ta_timer--;
|
||||||
|
ue_sched_ctl->ta_update =0; // don't trigger a timing advance command
|
||||||
|
}
|
||||||
nb_rbs_required[CC_id][UE_id]=0;
|
nb_rbs_required[CC_id][UE_id]=0;
|
||||||
ue_sched_ctl->pre_nb_available_rbs[CC_id] = 0;
|
ue_sched_ctl->pre_nb_available_rbs[CC_id] = 0;
|
||||||
ue_sched_ctl->dl_pow_off[CC_id] = 2;
|
ue_sched_ctl->dl_pow_off[CC_id] = 2;
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ eNBs =
|
|||||||
|
|
||||||
mobile_country_code = "208";
|
mobile_country_code = "208";
|
||||||
|
|
||||||
mobile_network_code = "92";
|
mobile_network_code = "93";
|
||||||
|
|
||||||
////////// Physical parameters:
|
////////// Physical parameters:
|
||||||
|
|
||||||
@@ -36,7 +36,7 @@ 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;
|
||||||
prach_root = 0;
|
prach_root = 0;
|
||||||
prach_config_index = 0;
|
prach_config_index = 0;
|
||||||
prach_high_speed = "DISABLE";
|
prach_high_speed = "DISABLE";
|
||||||
@@ -130,7 +130,7 @@ eNBs =
|
|||||||
};
|
};
|
||||||
|
|
||||||
////////// MME parameters:
|
////////// MME parameters:
|
||||||
mme_ip_address = ( { ipv4 = "192.168.13.11";
|
mme_ip_address = ( { ipv4 = "192.168.12.11";
|
||||||
ipv6 = "192:168:30::17";
|
ipv6 = "192:168:30::17";
|
||||||
active = "yes";
|
active = "yes";
|
||||||
preference = "ipv4";
|
preference = "ipv4";
|
||||||
@@ -140,10 +140,10 @@ eNBs =
|
|||||||
NETWORK_INTERFACES :
|
NETWORK_INTERFACES :
|
||||||
{
|
{
|
||||||
ENB_INTERFACE_NAME_FOR_S1_MME = "eth0";
|
ENB_INTERFACE_NAME_FOR_S1_MME = "eth0";
|
||||||
ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.13.10/24";
|
ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.213/24";
|
||||||
|
|
||||||
ENB_INTERFACE_NAME_FOR_S1U = "eth0";
|
ENB_INTERFACE_NAME_FOR_S1U = "eth0";
|
||||||
ENB_IPV4_ADDRESS_FOR_S1U = "192.168.13.10/24";
|
ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.213/24";
|
||||||
ENB_PORT_FOR_S1U = 2152; # Spec 2152
|
ENB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ eNBs =
|
|||||||
|
|
||||||
pusch_p0_Nominal = -90;
|
pusch_p0_Nominal = -90;
|
||||||
pusch_alpha = "AL1";
|
pusch_alpha = "AL1";
|
||||||
pucch_p0_Nominal = -108;
|
pucch_p0_Nominal = -96;
|
||||||
msg3_delta_Preamble = 6;
|
msg3_delta_Preamble = 6;
|
||||||
pucch_deltaF_Format1 = "deltaF2";
|
pucch_deltaF_Format1 = "deltaF2";
|
||||||
pucch_deltaF_Format1b = "deltaF3";
|
pucch_deltaF_Format1b = "deltaF3";
|
||||||
|
|||||||
Reference in New Issue
Block a user