Fix for FDD DL performance issue
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
This commit is contained in:
@@ -193,6 +193,7 @@ RUs = (
|
|||||||
att_rx = 20;
|
att_rx = 20;
|
||||||
eNB_instances = [0];
|
eNB_instances = [0];
|
||||||
is_slave = "no";
|
is_slave = "no";
|
||||||
|
ota_sync_enabled = "yes";
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
local_if_name = "enp129s0f0";
|
local_if_name = "enp129s0f0";
|
||||||
@@ -210,6 +211,7 @@ RUs = (
|
|||||||
att_rx = 20;
|
att_rx = 20;
|
||||||
eNB_instances = [0];
|
eNB_instances = [0];
|
||||||
is_slave = "yes";
|
is_slave = "yes";
|
||||||
|
ota_sync_enabled = "yes";
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ RUs = (
|
|||||||
max_rxgain = 100;
|
max_rxgain = 100;
|
||||||
bands = [38];
|
bands = [38];
|
||||||
is_slave = "no";
|
is_slave = "no";
|
||||||
|
ota_sync_enabled = "yes";
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ RUs = (
|
|||||||
max_rxgain = 100;
|
max_rxgain = 100;
|
||||||
bands = [38];
|
bands = [38];
|
||||||
is_slave = "yes";
|
is_slave = "yes";
|
||||||
|
ota_sync_enabled = "yes";
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -339,6 +339,8 @@ typedef struct RU_t_s{
|
|||||||
int north_out_cnt;
|
int north_out_cnt;
|
||||||
/// flag to indicate the RU is a slave to another source
|
/// flag to indicate the RU is a slave to another source
|
||||||
int is_slave;
|
int is_slave;
|
||||||
|
/// flag to indicate if the RU has to perform OTA sync
|
||||||
|
int ota_sync_enable;
|
||||||
/// flag to indicate that the RU should generate the DMRS sequence in slot 2 (subframe 1) for OTA synchronization and calibration
|
/// flag to indicate that the RU should generate the DMRS sequence in slot 2 (subframe 1) for OTA synchronization and calibration
|
||||||
int generate_dmrs_sync;
|
int generate_dmrs_sync;
|
||||||
/// flag to indicate if the RU has a control channel
|
/// flag to indicate if the RU has a control channel
|
||||||
|
|||||||
@@ -104,6 +104,7 @@ typedef enum {
|
|||||||
#define CONFIG_STRING_RU_SDR_CLK_SRC "clock_src"
|
#define CONFIG_STRING_RU_SDR_CLK_SRC "clock_src"
|
||||||
#define CONFIG_STRING_RU_SF_EXTENSION "sf_extension"
|
#define CONFIG_STRING_RU_SF_EXTENSION "sf_extension"
|
||||||
#define CONFIG_STRING_RU_END_OF_BURST_DELAY "end_of_burst_delay"
|
#define CONFIG_STRING_RU_END_OF_BURST_DELAY "end_of_burst_delay"
|
||||||
|
#define CONFIG_STRING_RU_OTA_SYNC_ENABLE "ota_sync_enabled"
|
||||||
|
|
||||||
#define RU_LOCAL_IF_NAME_IDX 0
|
#define RU_LOCAL_IF_NAME_IDX 0
|
||||||
#define RU_LOCAL_ADDRESS_IDX 1
|
#define RU_LOCAL_ADDRESS_IDX 1
|
||||||
@@ -128,6 +129,7 @@ typedef enum {
|
|||||||
#define RU_SDR_CLK_SRC 20
|
#define RU_SDR_CLK_SRC 20
|
||||||
#define RU_SF_EXTENSION_IDX 21
|
#define RU_SF_EXTENSION_IDX 21
|
||||||
#define RU_END_OF_BURST_DELAY_IDX 22
|
#define RU_END_OF_BURST_DELAY_IDX 22
|
||||||
|
#define RU_OTA_SYNC_ENABLE_IDX 23
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -153,12 +155,13 @@ typedef enum {
|
|||||||
{CONFIG_STRING_RU_ENB_LIST, NULL, 0, uptr:NULL, defintarrayval:DEFENBS, TYPE_INTARRAY, 1}, \
|
{CONFIG_STRING_RU_ENB_LIST, NULL, 0, uptr:NULL, defintarrayval:DEFENBS, TYPE_INTARRAY, 1}, \
|
||||||
{CONFIG_STRING_RU_ATT_TX, NULL, 0, uptr:NULL, defintval:0, TYPE_UINT, 0}, \
|
{CONFIG_STRING_RU_ATT_TX, NULL, 0, uptr:NULL, defintval:0, TYPE_UINT, 0}, \
|
||||||
{CONFIG_STRING_RU_ATT_RX, NULL, 0, uptr:NULL, defintval:0, TYPE_UINT, 0}, \
|
{CONFIG_STRING_RU_ATT_RX, NULL, 0, uptr:NULL, defintval:0, TYPE_UINT, 0}, \
|
||||||
{CONFIG_STRING_RU_IS_SLAVE, NULL, 0, strptr:NULL, defstrval:"no", TYPE_STRING, 0}, \
|
{CONFIG_STRING_RU_IS_SLAVE, NULL, 0, strptr:NULL, defstrval:"no", TYPE_STRING, 0}, \
|
||||||
{CONFIG_STRING_RU_NBIOTRRC_LIST, NULL, 0, uptr:NULL, defintarrayval:DEFENBS, TYPE_INTARRAY, 1}, \
|
{CONFIG_STRING_RU_NBIOTRRC_LIST, NULL, 0, uptr:NULL, defintarrayval:DEFENBS, TYPE_INTARRAY, 1}, \
|
||||||
{CONFIG_STRING_RU_SDR_ADDRS, NULL, 0, strptr:NULL, defstrval:"type=b200", TYPE_STRING, 0}, \
|
{CONFIG_STRING_RU_SDR_ADDRS, NULL, 0, strptr:NULL, defstrval:"type=b200", TYPE_STRING, 0}, \
|
||||||
{CONFIG_STRING_RU_SDR_CLK_SRC, NULL, 0, strptr:NULL, defstrval:"internal", TYPE_STRING, 0}, \
|
{CONFIG_STRING_RU_SDR_CLK_SRC, NULL, 0, strptr:NULL, defstrval:"internal", TYPE_STRING, 0}, \
|
||||||
{CONFIG_STRING_RU_SF_EXTENSION, NULL, 0, uptr:NULL, defuintval:312, TYPE_UINT, 0}, \
|
{CONFIG_STRING_RU_SF_EXTENSION, NULL, 0, uptr:NULL, defuintval:312, TYPE_UINT, 0}, \
|
||||||
{CONFIG_STRING_RU_END_OF_BURST_DELAY, NULL, 0, uptr:NULL, defuintval:400, TYPE_UINT, 0}, \
|
{CONFIG_STRING_RU_END_OF_BURST_DELAY, NULL, 0, uptr:NULL, defuintval:400, TYPE_UINT, 0}, \
|
||||||
|
{CONFIG_STRING_RU_OTA_SYNC_ENABLE, NULL, 0, strptr:NULL, defstrval:"no", TYPE_STRING, 0}, \
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------------------------------------------------------------------*/
|
||||||
|
|||||||
@@ -2633,7 +2633,11 @@ void init_RU(char *rf_config_file, clock_source_t clock_source,clock_source_t ti
|
|||||||
// NOTE: multiple CC_id are not handled here yet!
|
// NOTE: multiple CC_id are not handled here yet!
|
||||||
ru->openair0_cfg.clock_source = clock_source;
|
ru->openair0_cfg.clock_source = clock_source;
|
||||||
ru->openair0_cfg.time_source = time_source;
|
ru->openair0_cfg.time_source = time_source;
|
||||||
ru->generate_dmrs_sync = (ru->is_slave == 0) ? 1 : 0;
|
//ru->generate_dmrs_sync = (ru->is_slave == 0) ? 1 : 0;
|
||||||
|
if ((ru->is_slave == 0) && (ru->ota_sync_enable == 1))
|
||||||
|
ru->generate_dmrs_sync = 1;
|
||||||
|
else
|
||||||
|
ru->generate_dmrs_sync = 0;
|
||||||
if (ru->generate_dmrs_sync == 1) {
|
if (ru->generate_dmrs_sync == 1) {
|
||||||
generate_ul_ref_sigs();
|
generate_ul_ref_sigs();
|
||||||
ru->dmrssync = (int16_t*)malloc16_clear(ru->frame_parms.ofdm_symbol_size*2*sizeof(int16_t));
|
ru->dmrssync = (int16_t*)malloc16_clear(ru->frame_parms.ofdm_symbol_size*2*sizeof(int16_t));
|
||||||
@@ -2920,6 +2924,9 @@ void RCconfig_RU(void) {
|
|||||||
printf("RU %d is_slave=%s\n",j,*(RUParamList.paramarray[j][RU_IS_SLAVE_IDX].strptr));
|
printf("RU %d is_slave=%s\n",j,*(RUParamList.paramarray[j][RU_IS_SLAVE_IDX].strptr));
|
||||||
if (strcmp(*(RUParamList.paramarray[j][RU_IS_SLAVE_IDX].strptr), "yes") == 0) RC.ru[j]->is_slave=1;
|
if (strcmp(*(RUParamList.paramarray[j][RU_IS_SLAVE_IDX].strptr), "yes") == 0) RC.ru[j]->is_slave=1;
|
||||||
else RC.ru[j]->is_slave=0;
|
else RC.ru[j]->is_slave=0;
|
||||||
|
printf("RU %d ota_sync_enabled=%s\n",j,*(RUParamList.paramarray[j][RU_OTA_SYNC_ENABLE_IDX].strptr));
|
||||||
|
if (strcmp(*(RUParamList.paramarray[j][RU_OTA_SYNC_ENABLE_IDX].strptr), "yes") == 0) RC.ru[j]->ota_sync_enable=1;
|
||||||
|
else RC.ru[j]->ota_sync_enable=0;
|
||||||
}
|
}
|
||||||
RC.ru[j]->max_pdschReferenceSignalPower = *(RUParamList.paramarray[j][RU_MAX_RS_EPRE_IDX].uptr);;
|
RC.ru[j]->max_pdschReferenceSignalPower = *(RUParamList.paramarray[j][RU_MAX_RS_EPRE_IDX].uptr);;
|
||||||
RC.ru[j]->max_rxgain = *(RUParamList.paramarray[j][RU_MAX_RXGAIN_IDX].uptr);
|
RC.ru[j]->max_rxgain = *(RUParamList.paramarray[j][RU_MAX_RXGAIN_IDX].uptr);
|
||||||
|
|||||||
Reference in New Issue
Block a user