Commit 09a63cb9 authored by Raymond Knopp's avatar Raymond Knopp

logging and unitary compilations

parent 7cbf24d3
...@@ -935,9 +935,10 @@ int main(int argc, char **argv) { ...@@ -935,9 +935,10 @@ int main(int argc, char **argv) {
NB_RB = conv_nprb(0,DLSCH_RB_ALLOC,N_RB_DL); NB_RB = conv_nprb(0,DLSCH_RB_ALLOC,N_RB_DL);
} else { } else {
if (rballocset==0) NB_RB = 8; if (rballocset==0) NB_RB = 2+TPC;
else NB_RB = DLSCH_RB_ALLOC; else NB_RB = DLSCH_RB_ALLOC;
printf("Common PDSCH: NB_RB = %d\n",NB_RB);
AssertFatal(NB_RB <= N_RB_DL,"illegal NB_RB %d\n",NB_RB); AssertFatal(NB_RB <= N_RB_DL,"illegal NB_RB %d\n",NB_RB);
} }
......
...@@ -1300,7 +1300,7 @@ int main(int argc, char **argv) { ...@@ -1300,7 +1300,7 @@ int main(int argc, char **argv) {
LOG_UDUMPMSG(SIM,dataArray(table_rx),table_rx->size,LOG_DUMP_DOUBLE,"The receiver raw data: \n"); LOG_UDUMPMSG(SIM,dataArray(table_rx),table_rx->size,LOG_DUMP_DOUBLE,"The receiver raw data: \n");
} }
dump_ulsch_stats(eNB); dump_ulsch_stats(eNB,0);
printf("\n**********rb: %d ***mcs : %d *********SNR = %f dB (%f): TX %u dB (gain %f dB), N0W %f dB, I0 %u dB, delta_IF %d [ (%d,%d) dB / (%u,%u) dB ]**************************\n", printf("\n**********rb: %d ***mcs : %d *********SNR = %f dB (%f): TX %u dB (gain %f dB), N0W %f dB, I0 %u dB, delta_IF %d [ (%d,%d) dB / (%u,%u) dB ]**************************\n",
nb_rb,mcs,SNR,SNR2, nb_rb,mcs,SNR,SNR2,
tx_lev_dB, tx_lev_dB,
......
...@@ -603,6 +603,17 @@ eNB_dlsch_ulsch_scheduler(module_id_t module_idP, ...@@ -603,6 +603,17 @@ eNB_dlsch_ulsch_scheduler(module_id_t module_idP,
UE_scheduling_control->dl_cqi[CC_id], UE_scheduling_control->dl_cqi[CC_id],
(5 * UE_scheduling_control->pusch_snr[CC_id] - 640) / 10, UE_scheduling_control->pucch_tpc_accumulated[CC_id], (5 * UE_scheduling_control->pusch_snr[CC_id] - 640) / 10, UE_scheduling_control->pucch_tpc_accumulated[CC_id],
(5 * UE_scheduling_control->pucch1_snr[CC_id] - 640) / 10, UE_scheduling_control->pusch_tpc_accumulated[CC_id]); (5 * UE_scheduling_control->pucch1_snr[CC_id] - 640) / 10, UE_scheduling_control->pusch_tpc_accumulated[CC_id]);
LOG_I(MAC," ULSCH rounds %d/%d/%d/%d, DLSCH rounds %d/%d/%d/%d, ULSCH errors %d, DLSCH errors %d\n",
UE_info->eNB_UE_stats[CC_id][UE_id].ulsch_rounds[0],
UE_info->eNB_UE_stats[CC_id][UE_id].ulsch_rounds[1],
UE_info->eNB_UE_stats[CC_id][UE_id].ulsch_rounds[2],
UE_info->eNB_UE_stats[CC_id][UE_id].ulsch_rounds[3],
UE_info->eNB_UE_stats[CC_id][UE_id].dlsch_rounds[0],
UE_info->eNB_UE_stats[CC_id][UE_id].dlsch_rounds[1],
UE_info->eNB_UE_stats[CC_id][UE_id].dlsch_rounds[2],
UE_info->eNB_UE_stats[CC_id][UE_id].dlsch_rounds[3],
UE_info->eNB_UE_stats[CC_id][UE_id].ulsch_errors,
UE_info->eNB_UE_stats[CC_id][UE_id].dlsch_errors);
} }
RC.eNB[module_idP][CC_id]->pusch_stats_bsr[UE_id][(frameP * 10) + subframeP] = -63; RC.eNB[module_idP][CC_id]->pusch_stats_bsr[UE_id][(frameP * 10) + subframeP] = -63;
......
...@@ -1495,7 +1495,7 @@ schedule_ue_spec_fairRR(module_id_t module_idP, ...@@ -1495,7 +1495,7 @@ schedule_ue_spec_fairRR(module_id_t module_idP,
subframeP, subframeP,
S_DL_SCHEDULED, S_DL_SCHEDULED,
rnti); rnti);
//eNB_UE_stats->dlsch_trials[round]++; UE_info->eNB_UE_stats[CC_id][UE_id].dlsch_rounds[round]++;
UE_info->eNB_UE_stats[CC_id][UE_id].num_retransmission += 1; UE_info->eNB_UE_stats[CC_id][UE_id].num_retransmission += 1;
UE_info->eNB_UE_stats[CC_id][UE_id].rbs_used_retx = nb_rb; UE_info->eNB_UE_stats[CC_id][UE_id].rbs_used_retx = nb_rb;
UE_info->eNB_UE_stats[CC_id][UE_id].total_rbs_used_retx += nb_rb; UE_info->eNB_UE_stats[CC_id][UE_id].total_rbs_used_retx += nb_rb;
...@@ -1936,6 +1936,7 @@ schedule_ue_spec_fairRR(module_id_t module_idP, ...@@ -1936,6 +1936,7 @@ schedule_ue_spec_fairRR(module_id_t module_idP,
// store stats // store stats
eNB->eNB_stats[CC_id].dlsch_bytes_tx+=sdu_length_total; eNB->eNB_stats[CC_id].dlsch_bytes_tx+=sdu_length_total;
eNB->eNB_stats[CC_id].dlsch_pdus_tx+=1; eNB->eNB_stats[CC_id].dlsch_pdus_tx+=1;
UE_info->eNB_UE_stats[CC_id][UE_id].dlsch_rounds[0]++;
UE_info->eNB_UE_stats[CC_id][UE_id].rbs_used = nb_rb; UE_info->eNB_UE_stats[CC_id][UE_id].rbs_used = nb_rb;
UE_info->eNB_UE_stats[CC_id][UE_id].total_rbs_used += nb_rb; UE_info->eNB_UE_stats[CC_id][UE_id].total_rbs_used += nb_rb;
UE_info->eNB_UE_stats[CC_id][UE_id].dlsch_mcs1=eNB_UE_stats->dlsch_mcs1; UE_info->eNB_UE_stats[CC_id][UE_id].dlsch_mcs1=eNB_UE_stats->dlsch_mcs1;
...@@ -1968,10 +1969,10 @@ schedule_ue_spec_fairRR(module_id_t module_idP, ...@@ -1968,10 +1969,10 @@ schedule_ue_spec_fairRR(module_id_t module_idP,
UE_info->UE_template[CC_id][UE_id].pucch_tpc_tx_frame=frameP; UE_info->UE_template[CC_id][UE_id].pucch_tpc_tx_frame=frameP;
UE_info->UE_template[CC_id][UE_id].pucch_tpc_tx_subframe=subframeP; UE_info->UE_template[CC_id][UE_id].pucch_tpc_tx_subframe=subframeP;
if (snr > target_snr + PUSCH_PCHYST) { if (snr > target_snr + PUCCH_PCHYST) {
tpc = 0; //-1 tpc = 0; //-1
ue_sched_ctl->pucch_tpc_accumulated[CC_id]--; ue_sched_ctl->pucch_tpc_accumulated[CC_id]--;
} else if (snr < target_snr - PUSCH_PCHYST) { } else if (snr < target_snr - PUCCH_PCHYST) {
tpc = 2; //+1 tpc = 2; //+1
ue_sched_ctl->pucch_tpc_accumulated[CC_id]++; ue_sched_ctl->pucch_tpc_accumulated[CC_id]++;
} else { } else {
...@@ -3051,10 +3052,10 @@ void schedule_ulsch_rnti_fairRR(module_id_t module_idP, ...@@ -3051,10 +3052,10 @@ void schedule_ulsch_rnti_fairRR(module_id_t module_idP,
UE_template->pusch_tpc_tx_frame=frameP; UE_template->pusch_tpc_tx_frame=frameP;
UE_template->pusch_tpc_tx_subframe=subframeP; UE_template->pusch_tpc_tx_subframe=subframeP;
if (snr > target_snr + 4) { if (snr > target_snr + PUSCH_PCHYST) {
tpc = 0; //-1 tpc = 0; //-1
UE_sched_ctrl->pusch_tpc_accumulated[CC_id]--; UE_sched_ctrl->pusch_tpc_accumulated[CC_id]--;
} else if (snr < target_snr - 4) { } else if (snr < target_snr - PUSCH_PCHYST) {
tpc = 2; //+1 tpc = 2; //+1
UE_sched_ctrl->pusch_tpc_accumulated[CC_id]++; UE_sched_ctrl->pusch_tpc_accumulated[CC_id]++;
} else { } else {
...@@ -3080,6 +3081,7 @@ void schedule_ulsch_rnti_fairRR(module_id_t module_idP, ...@@ -3080,6 +3081,7 @@ void schedule_ulsch_rnti_fairRR(module_id_t module_idP,
UE_sched_ctrl->cqi_req_timer); UE_sched_ctrl->cqi_req_timer);
ndi = 1-UE_template->oldNDI_UL[harq_pid]; ndi = 1-UE_template->oldNDI_UL[harq_pid];
UE_template->oldNDI_UL[harq_pid]=ndi; UE_template->oldNDI_UL[harq_pid]=ndi;
UE_info->eNB_UE_stats[CC_id][UE_id].ulsch_rounds[0]++;
UE_info->eNB_UE_stats[CC_id][UE_id].snr = snr; UE_info->eNB_UE_stats[CC_id][UE_id].snr = snr;
UE_info->eNB_UE_stats[CC_id][UE_id].target_snr = target_snr; UE_info->eNB_UE_stats[CC_id][UE_id].target_snr = target_snr;
UE_info->eNB_UE_stats[CC_id][UE_id].ulsch_mcs1=UE_template->pre_assigned_mcs_ul; UE_info->eNB_UE_stats[CC_id][UE_id].ulsch_mcs1=UE_template->pre_assigned_mcs_ul;
...@@ -3257,6 +3259,7 @@ void schedule_ulsch_rnti_fairRR(module_id_t module_idP, ...@@ -3257,6 +3259,7 @@ void schedule_ulsch_rnti_fairRR(module_id_t module_idP,
T_INT(round)); T_INT(round));
UE_info->eNB_UE_stats[CC_id][UE_id].snr = snr; UE_info->eNB_UE_stats[CC_id][UE_id].snr = snr;
UE_info->eNB_UE_stats[CC_id][UE_id].target_snr = target_snr; UE_info->eNB_UE_stats[CC_id][UE_id].target_snr = target_snr;
uint8_t mcs_rv = 0; uint8_t mcs_rv = 0;
if(rvidx_tab[round&3]==1) { if(rvidx_tab[round&3]==1) {
......
...@@ -204,7 +204,7 @@ rx_sdu(const module_id_t enb_mod_idP, ...@@ -204,7 +204,7 @@ rx_sdu(const module_id_t enb_mod_idP,
if (UE_scheduling_control->round_UL[CC_idP][harq_pid] == 3) { if (UE_scheduling_control->round_UL[CC_idP][harq_pid] == 3) {
UE_scheduling_control->ul_scheduled &= (~(1 << harq_pid)); UE_scheduling_control->ul_scheduled &= (~(1 << harq_pid));
UE_scheduling_control->round_UL[CC_idP][harq_pid] = 0; UE_scheduling_control->round_UL[CC_idP][harq_pid] = 0;
UE_info->eNB_UE_stats[CC_idP][UE_id].ulsch_errors++;
if (UE_scheduling_control->ul_consecutive_errors++ == 10) { if (UE_scheduling_control->ul_consecutive_errors++ == 10) {
UE_scheduling_control->ul_failure_timer = 1; UE_scheduling_control->ul_failure_timer = 1;
} }
...@@ -221,6 +221,7 @@ rx_sdu(const module_id_t enb_mod_idP, ...@@ -221,6 +221,7 @@ rx_sdu(const module_id_t enb_mod_idP,
} }
} else { } else {
UE_scheduling_control->round_UL[CC_idP][harq_pid]++; UE_scheduling_control->round_UL[CC_idP][harq_pid]++;
UE_info->eNB_UE_stats[CC_idP][UE_id].ulsch_rounds[UE_scheduling_control->round_UL[CC_idP][harq_pid]]++;
} }
/* CDRX UL HARQ timers */ /* CDRX UL HARQ timers */
......
...@@ -145,6 +145,8 @@ ...@@ -145,6 +145,8 @@
#define CQI_VALUE_RANGE 16 #define CQI_VALUE_RANGE 16
/*!\brief Hysteresis of PUSCH power control loop */ /*!\brief Hysteresis of PUSCH power control loop */
#define PUSCH_PCHYST 1 #define PUSCH_PCHYST 1
/*!\brief Hysteresis of PUCCH power control loop */
#define PUCCH_PCHYST 1
/*!\brief value for indicating BSR Timer is not running */ /*!\brief value for indicating BSR Timer is not running */
#define MAC_UE_BSR_TIMER_NOT_RUNNING (0xFFFF) #define MAC_UE_BSR_TIMER_NOT_RUNNING (0xFFFF)
...@@ -615,6 +617,8 @@ typedef struct { ...@@ -615,6 +617,8 @@ typedef struct {
// here for RX // here for RX
// //
uint32_t ulsch_rounds[4];
uint32_t ulsch_bitrate; uint32_t ulsch_bitrate;
// //
uint32_t ulsch_bytes_rx; uint32_t ulsch_bytes_rx;
...@@ -684,6 +688,17 @@ typedef struct { ...@@ -684,6 +688,17 @@ typedef struct {
// Length of SDU Got from LC DL // Length of SDU Got from LC DL
uint32_t sdu_length_tx[NB_RB_MAX]; uint32_t sdu_length_tx[NB_RB_MAX];
int lc_bytes_tx[64];
int dlsch_rounds[8];
int dlsch_errors;
int dlsch_total_bytes;
int lc_bytes_rx[64];
int ulsch_rounds[8];
int ulsch_errors;
int ulsch_total_bytes_scheduled;
int ulsch_total_bytes_rx;
/// overall /// overall
// //
...@@ -1324,6 +1339,7 @@ typedef struct { ...@@ -1324,6 +1339,7 @@ typedef struct {
uint8_t FeMBMS_flag; uint8_t FeMBMS_flag;
} COMMON_channels_t; } COMMON_channels_t;
/*! \brief top level eNB MAC structure */ /*! \brief top level eNB MAC structure */
typedef struct eNB_MAC_INST_s { typedef struct eNB_MAC_INST_s {
/// Ethernet parameters for northbound midhaul interface /// Ethernet parameters for northbound midhaul interface
eth_params_t eth_params_n; eth_params_t eth_params_n;
......
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