Merge remote-tracking branch 'origin/ulSNRs' into develop
Conflicts: openair2/ENB_APP/MACRLC_paramdef.h openair2/LAYER2/MAC/mac.h
This commit is contained in:
@@ -708,7 +708,7 @@ void fill_sr_indication(PHY_VARS_eNB *eNB,uint16_t rnti,int frame,int subframe,u
|
||||
pdu->rx_ue_information.tl.tag = NFAPI_RX_UE_INFORMATION_TAG;
|
||||
pdu->rx_ue_information.rnti = rnti;
|
||||
|
||||
int SNRtimes10 = dB_fixed_times10(stat) - 200;//(10*eNB->measurements.n0_power_dB[0]);
|
||||
int SNRtimes10 = dB_fixed_times10(stat) - 300;//(10*eNB->measurements.n0_power_dB[0]);
|
||||
|
||||
|
||||
pdu->ul_cqi_information.tl.tag = NFAPI_UL_CQI_INFORMATION_TAG;
|
||||
@@ -1334,8 +1334,8 @@ void pusch_procedures(PHY_VARS_eNB *eNB,eNB_rxtx_proc_t *proc)
|
||||
ulsch->rnti,
|
||||
dB_fixed(eNB->pusch_vars[i]->ulsch_power[0]),
|
||||
dB_fixed(eNB->pusch_vars[i]->ulsch_power[1]),
|
||||
20,//eNB->measurements.n0_power_dB[0],
|
||||
20,//eNB->measurements.n0_power_dB[1],
|
||||
30,//eNB->measurements.n0_power_dB[0],
|
||||
30,//eNB->measurements.n0_power_dB[1],
|
||||
ulsch_harq->o_ACK[0],
|
||||
ulsch_harq->o_ACK[1],
|
||||
ret,
|
||||
@@ -1574,7 +1574,7 @@ void fill_rx_indication(PHY_VARS_eNB *eNB,int UE_id,int frame,int subframe)
|
||||
pdu->rx_indication_rel8.timing_advance = timing_advance_update;
|
||||
|
||||
// estimate UL_CQI for MAC (from antenna port 0 only)
|
||||
int SNRtimes10 = dB_fixed_times10(eNB->pusch_vars[UE_id]->ulsch_power[0]) - 200;//(10*eNB->measurements.n0_power_dB[0]);
|
||||
int SNRtimes10 = dB_fixed_times10(eNB->pusch_vars[UE_id]->ulsch_power[0]) - 300;//(10*eNB->measurements.n0_power_dB[0]);
|
||||
|
||||
if (SNRtimes10 < -640) pdu->rx_indication_rel8.ul_cqi=0;
|
||||
else if (SNRtimes10 > 635) pdu->rx_indication_rel8.ul_cqi=255;
|
||||
@@ -1847,7 +1847,7 @@ void fill_uci_harq_indication(PHY_VARS_eNB *eNB,
|
||||
|
||||
// estimate UL_CQI for MAC (from antenna port 0 only)
|
||||
pdu->ul_cqi_information.tl.tag = NFAPI_UL_CQI_INFORMATION_TAG;
|
||||
int SNRtimes10 = dB_fixed_times10(uci->stat) - 200;//(10*eNB->measurements.n0_power_dB[0]);
|
||||
int SNRtimes10 = dB_fixed_times10(uci->stat) - 300;//(10*eNB->measurements.n0_power_dB[0]);
|
||||
|
||||
if (SNRtimes10 < -100) LOG_I(PHY,"uci->stat %d \n",uci->stat);
|
||||
|
||||
|
||||
@@ -55,6 +55,8 @@
|
||||
#define CONFIG_STRING_MACRLC_REMOTE_S_PORTD "remote_s_portd"
|
||||
#define CONFIG_STRING_MACRLC_SCHED_MODE "scheduler_mode"
|
||||
#define CONFIG_STRING_MACRLC_PHY_TEST_MODE "phy_test_mode"
|
||||
#define CONFIG_MACRLC_PUSCH10xSNR "puSch10xSnr"
|
||||
#define CONFIG_MACRLC_PUCCH10xSNR "puCch10xSnr"
|
||||
|
||||
/*-------------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
/* MacRLC configuration parameters */
|
||||
@@ -80,6 +82,8 @@
|
||||
{CONFIG_STRING_MACRLC_REMOTE_S_PORTD, NULL, 0, uptr:NULL, defintval:50021, TYPE_UINT, 0}, \
|
||||
{CONFIG_STRING_MACRLC_SCHED_MODE, NULL, 0, strptr:NULL, defstrval:"default", TYPE_STRING, 0}, \
|
||||
{CONFIG_STRING_MACRLC_PHY_TEST_MODE, NULL, 0, uptr:NULL, defintval:1, TYPE_UINT, 0}, \
|
||||
{CONFIG_MACRLC_PUSCH10xSNR, NULL, 0, iptr:NULL, defintval:200, TYPE_INT, 0}, \
|
||||
{CONFIG_MACRLC_PUCCH10xSNR, NULL, 0, iptr:NULL, defintval:200, TYPE_INT, 0}, \
|
||||
}
|
||||
#define MACRLC_CC_IDX 0
|
||||
#define MACRLC_TRANSPORT_N_PREFERENCE_IDX 1
|
||||
@@ -100,4 +104,6 @@
|
||||
#define MACRLC_REMOTE_S_PORTD_IDX 16
|
||||
#define MACRLC_SCHED_MODE_IDX 17
|
||||
#define MACRLC_PHY_TEST_IDX 18
|
||||
#define MACRLC_PUSCH10xSNR_IDX 19
|
||||
#define MACRLC_PUCCH10xSNR_IDX 20
|
||||
/*---------------------------------------------------------------------------------------------------------------------------------------------------------*/
|
||||
|
||||
@@ -388,6 +388,8 @@ void RCconfig_macrlc() {
|
||||
RC.nb_mac_CC = (int*)malloc(RC.nb_macrlc_inst*sizeof(int));
|
||||
|
||||
for (j=0;j<RC.nb_macrlc_inst;j++) {
|
||||
RC.mac[j]->puSch10xSnr = *(MacRLC_ParamList.paramarray[j][MACRLC_PUSCH10xSNR_IDX ].iptr);
|
||||
RC.mac[j]->puCch10xSnr = *(MacRLC_ParamList.paramarray[j][MACRLC_PUCCH10xSNR_IDX ].iptr);
|
||||
RC.nb_mac_CC[j] = *(MacRLC_ParamList.paramarray[j][MACRLC_CC_IDX].iptr);
|
||||
//RC.mac[j]->phy_test = *(MacRLC_ParamList.paramarray[j][MACRLC_PHY_TEST_IDX].iptr);
|
||||
//printf("PHY_TEST = %d,%d\n", RC.mac[j]->phy_test, j);
|
||||
|
||||
@@ -537,7 +537,6 @@ eNB_dlsch_ulsch_scheduler(module_id_t module_idP, frame_t frameP,
|
||||
// refresh UE list based on UEs dropped by PHY in previous subframe
|
||||
for (i = 0; i < MAX_MOBILES_PER_ENB; i++) {
|
||||
if (UE_list->active[i]) {
|
||||
|
||||
rnti = UE_RNTI(module_idP, i);
|
||||
CC_id = UE_PCCID(module_idP, i);
|
||||
|
||||
|
||||
@@ -1426,10 +1426,10 @@ schedule_ue_spec(module_id_t module_idP,slice_id_t slice_idP,
|
||||
// this is the normalized RX power
|
||||
eNB_UE_stats = &UE_list->eNB_UE_stats[CC_id][UE_id];
|
||||
|
||||
/* TODO: fix how we deal with power, unit is not dBm, it's special from nfapi */
|
||||
normalized_rx_power = ue_sched_ctl->pucch1_snr[CC_id];
|
||||
target_rx_power = 208;
|
||||
|
||||
/* unit is not dBm, it's special from nfapi */
|
||||
// converting to dBm: ToDo: Noise power hard coded to 30
|
||||
normalized_rx_power = (5*ue_sched_ctl->pucch1_snr[CC_id]-640)/10+30;
|
||||
target_rx_power= eNB->puCch10xSnr/10 + 30;
|
||||
// this assumes accumulated tpc
|
||||
// make sure that we are only sending a tpc update once a frame, otherwise the control loop will freak out
|
||||
int32_t framex10psubframe = UE_list->UE_template[CC_id][UE_id].pucch_tpc_tx_frame * 10 + UE_list->UE_template[CC_id][UE_id].pucch_tpc_tx_subframe;
|
||||
|
||||
@@ -1182,8 +1182,7 @@ schedule_ulsch_rnti(module_id_t module_idP,
|
||||
uint8_t status = 0;
|
||||
uint8_t rb_table_index = -1;
|
||||
uint32_t cqi_req, cshift, ndi, tpc;
|
||||
int32_t normalized_rx_power;
|
||||
int32_t target_rx_power = -90;
|
||||
int32_t normalized_rx_power, target_rx_power;
|
||||
static int32_t tpc_accumulated = 0;
|
||||
int n;
|
||||
int CC_id = 0;
|
||||
@@ -1350,9 +1349,10 @@ schedule_ulsch_rnti(module_id_t module_idP,
|
||||
//compute the expected ULSCH RX power (for the stats)
|
||||
|
||||
// this is the normalized RX power and this should be constant (regardless of mcs
|
||||
normalized_rx_power = UE_sched_ctrl->pusch_snr[CC_id];
|
||||
target_rx_power = 178;
|
||||
|
||||
//is not in dBm, unit from nfapi, converting to dBm: ToDo: Noise power hard coded to 30
|
||||
normalized_rx_power = (5*UE_sched_ctrl->pusch_snr[CC_id]-640)/10+30;
|
||||
target_rx_power= mac->puSch10xSnr/10 + 30;
|
||||
//printf("\n mac->puSch10xSnr = %d, normalized_rx_power = %d, target_rx_power = %d \n",mac->puSch10xSnr,normalized_rx_power,target_rx_power);
|
||||
// this assumes accumulated tpc
|
||||
// make sure that we are only sending a tpc update once a frame, otherwise the control loop will freak out
|
||||
int32_t framex10psubframe = UE_template->pusch_tpc_tx_frame * 10 + UE_template->pusch_tpc_tx_subframe;
|
||||
|
||||
@@ -1274,6 +1274,9 @@ typedef struct eNB_MAC_INST_s {
|
||||
UE_free_list_t UE_free_list;
|
||||
/// for scheduling selection
|
||||
SCHEDULER_MODES scheduler_mode;
|
||||
|
||||
int32_t puSch10xSnr;
|
||||
int32_t puCch10xSnr;
|
||||
} eNB_MAC_INST;
|
||||
|
||||
/*
|
||||
|
||||
+16
-12
@@ -58,23 +58,27 @@ void mac_top_init_eNB(void)
|
||||
RC.nb_macrlc_inst);
|
||||
|
||||
if (RC.nb_macrlc_inst > 0) {
|
||||
RC.mac =
|
||||
(eNB_MAC_INST **) malloc16(RC.nb_macrlc_inst *
|
||||
sizeof(eNB_MAC_INST *));
|
||||
if (RC.mac == NULL){
|
||||
RC.mac =
|
||||
(eNB_MAC_INST **) malloc16(RC.nb_macrlc_inst *
|
||||
sizeof(eNB_MAC_INST *));
|
||||
}
|
||||
AssertFatal(RC.mac != NULL,
|
||||
"can't ALLOCATE %zu Bytes for %d eNB_MAC_INST with size %zu \n",
|
||||
RC.nb_macrlc_inst * sizeof(eNB_MAC_INST *),
|
||||
RC.nb_macrlc_inst, sizeof(eNB_MAC_INST));
|
||||
for (i = 0; i < RC.nb_macrlc_inst; i++) {
|
||||
RC.mac[i] = (eNB_MAC_INST *) malloc16(sizeof(eNB_MAC_INST));
|
||||
AssertFatal(RC.mac != NULL,
|
||||
"can't ALLOCATE %zu Bytes for %d eNB_MAC_INST with size %zu \n",
|
||||
RC.nb_macrlc_inst * sizeof(eNB_MAC_INST *),
|
||||
RC.nb_macrlc_inst, sizeof(eNB_MAC_INST));
|
||||
LOG_D(MAC,
|
||||
"[MAIN] ALLOCATE %zu Bytes for %d eNB_MAC_INST @ %p\n",
|
||||
sizeof(eNB_MAC_INST), RC.nb_macrlc_inst, RC.mac);
|
||||
bzero(RC.mac[i], sizeof(eNB_MAC_INST));
|
||||
if (RC.mac[i] == NULL) {
|
||||
RC.mac[i] = (eNB_MAC_INST *) malloc16(sizeof(eNB_MAC_INST));
|
||||
AssertFatal(RC.mac[i] != NULL,
|
||||
"can't ALLOCATE %zu Bytes for %d eNB_MAC_INST with size %zu \n",
|
||||
RC.nb_macrlc_inst * sizeof(eNB_MAC_INST *),
|
||||
RC.nb_macrlc_inst, sizeof(eNB_MAC_INST));
|
||||
LOG_D(MAC,
|
||||
"[MAIN] ALLOCATE %zu Bytes for %d eNB_MAC_INST @ %p\n",
|
||||
sizeof(eNB_MAC_INST), RC.nb_macrlc_inst, RC.mac);
|
||||
bzero(RC.mac[i], sizeof(eNB_MAC_INST));
|
||||
}
|
||||
RC.mac[i]->Mod_id = i;
|
||||
for (j = 0; j < MAX_NUM_CCs; j++) {
|
||||
RC.mac[i]->DL_req[j].dl_config_request_body.
|
||||
|
||||
@@ -164,6 +164,8 @@ MACRLCs = (
|
||||
num_cc = 1;
|
||||
tr_s_preference = "local_L1";
|
||||
tr_n_preference = "local_RRC";
|
||||
puSch10xSnr = 200;
|
||||
puCch10xSnr = 200;
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
@@ -199,6 +199,8 @@ MACRLCs = (
|
||||
tr_s_preference = "local_L1";
|
||||
tr_n_preference = "local_RRC";
|
||||
phy_test_mode = 1;
|
||||
puSch10xSnr = 200;
|
||||
puCch10xSnr = 200;
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user