Add statistics logs.
(cherry picked from commit cf8f14edf4a261e1df72579423786d39ba6d97f9)
This commit is contained in:
committed by
shono.takafumi
parent
7243b6d67a
commit
cb927c7f9a
@@ -358,8 +358,31 @@ int wake_eNB_rxtx(PHY_VARS_eNB *eNB, uint16_t sfn, uint16_t sf) {
|
||||
proc->frame_rx,
|
||||
proc->subframe_rx);
|
||||
}
|
||||
// wake up TX for subframe n+sf_ahead
|
||||
// lock the TX mutex and make sure the thread is ready
|
||||
if (pthread_mutex_timedlock(&L1_proc->mutex,&wait) != 0) {
|
||||
LOG_E( PHY, "[eNB] ERROR pthread_mutex_lock for eNB RXTX thread %d (IC %d)\n", L1_proc->subframe_rx&1,L1_proc->instance_cnt );
|
||||
//exit_fun( "error locking mutex_rxtx" );
|
||||
return(-1);
|
||||
}
|
||||
static int busy_log_cnt=0;
|
||||
if(L1_proc->instance_cnt < 0){
|
||||
++L1_proc->instance_cnt;
|
||||
if(busy_log_cnt!=0){
|
||||
LOG_E(MAC,"RCC singal to rxtx frame %d subframe %d busy end %d (frame %d subframe %d)\n",L1_proc->frame_rx,L1_proc->subframe_rx,busy_log_cnt,proc->frame_rx,proc->subframe_rx);
|
||||
}
|
||||
busy_log_cnt=0;
|
||||
}else{
|
||||
if(busy_log_cnt==0){
|
||||
LOG_E(MAC,"RCC singal to rxtx frame %d subframe %d busy %d (frame %d subframe %d)\n",L1_proc->frame_rx,L1_proc->subframe_rx,L1_proc->instance_cnt,proc->frame_rx,proc->subframe_rx);
|
||||
}
|
||||
pthread_mutex_unlock( &L1_proc->mutex );
|
||||
busy_log_cnt++;
|
||||
return(0);
|
||||
}
|
||||
|
||||
pthread_mutex_unlock( &L1_proc->mutex );
|
||||
|
||||
++L1_proc->instance_cnt;
|
||||
//LOG_D( PHY,"[VNF-subframe_ind] sfn/sf:%d:%d proc[frame_rx:%d subframe_rx:%d] L1_proc->instance_cnt_rxtx:%d \n", sfn, sf, proc->frame_rx, proc->subframe_rx, L1_proc->instance_cnt_rxtx);
|
||||
// We have just received and processed the common part of a subframe, say n.
|
||||
// TS_rx is the last received timestamp (start of 1st slot), TS_tx is the desired
|
||||
|
||||
@@ -829,16 +829,16 @@ typedef struct {
|
||||
uint8_t periodic_ri_received[NFAPI_CC_MAX];
|
||||
uint8_t aperiodic_ri_received[NFAPI_CC_MAX];
|
||||
uint32_t pucch_tpc_accumulated[NFAPI_CC_MAX];
|
||||
uint8_t pucch1_cqi_update[NFAPI_CC_MAX];
|
||||
uint8_t pucch1_snr[NFAPI_CC_MAX];
|
||||
uint8_t pucch2_cqi_update[NFAPI_CC_MAX];
|
||||
uint8_t pucch2_snr[NFAPI_CC_MAX];
|
||||
uint8_t pucch3_cqi_update[NFAPI_CC_MAX];
|
||||
uint8_t pucch3_snr[NFAPI_CC_MAX];
|
||||
int16_t pucch1_cqi_update[NFAPI_CC_MAX];
|
||||
int16_t pucch1_snr[NFAPI_CC_MAX];
|
||||
int16_t pucch2_cqi_update[NFAPI_CC_MAX];
|
||||
int16_t pucch2_snr[NFAPI_CC_MAX];
|
||||
int16_t pucch3_cqi_update[NFAPI_CC_MAX];
|
||||
int16_t pucch3_snr[NFAPI_CC_MAX];
|
||||
double pusch_cqi_f[NFAPI_CC_MAX];
|
||||
uint8_t pusch_cqi[NFAPI_CC_MAX];
|
||||
uint8_t pusch_snr[NFAPI_CC_MAX];
|
||||
uint8_t pusch_snr_avg[NFAPI_CC_MAX];
|
||||
int16_t pusch_cqi[NFAPI_CC_MAX];
|
||||
int16_t pusch_snr[NFAPI_CC_MAX];
|
||||
int16_t pusch_snr_avg[NFAPI_CC_MAX];
|
||||
uint64_t pusch_rx_num[NFAPI_CC_MAX];
|
||||
uint64_t pusch_rx_num_old[NFAPI_CC_MAX];
|
||||
uint64_t pusch_rx_error_num[NFAPI_CC_MAX];
|
||||
|
||||
@@ -596,13 +596,41 @@ eNB_dlsch_ulsch_scheduler(module_id_t module_idP,
|
||||
UE_scheduling_control = &(UE_info->UE_sched_ctrl[UE_id]);
|
||||
|
||||
if (((frameP & 127) == 0) && (subframeP == 0)) {
|
||||
LOG_I(MAC,"UE rnti %x : %s, PHR %d dB DL CQI %d PUSCH SNR %d PUCCH SNR %d\n",
|
||||
double total_bler;
|
||||
if(UE_scheduling_control->pusch_rx_num[CC_id] == 0 && UE_scheduling_control->pusch_rx_error_num[CC_id] == 0) {
|
||||
total_bler = 0;
|
||||
}
|
||||
else {
|
||||
total_bler = (double)UE_scheduling_control->pusch_rx_error_num[CC_id] / (double)(UE_scheduling_control->pusch_rx_error_num[CC_id] + UE_scheduling_control->pusch_rx_num[CC_id]) * 100;
|
||||
}
|
||||
LOG_I(MAC,"UE %x : %s, PHR %d DLCQI %d PUSCH %d PUCCH %d RLC disc %d UL-stat rcv %lu err %lu bler %lf mcsoff %d bsr %u sched %u tbs %lu cnt %u , DL-stat tbs %lu cnt %u rb %u buf %u 1st %u ret %u ri %d\n",
|
||||
rnti,
|
||||
UE_scheduling_control->ul_out_of_sync == 0 ? "in synch" : "out of sync",
|
||||
UE_info->UE_template[CC_id][UE_id].phr_info,
|
||||
UE_scheduling_control->dl_cqi[CC_id],
|
||||
UE_scheduling_control->pusch_snr_avg[CC_id],
|
||||
UE_scheduling_control->pucch1_snr[CC_id]);
|
||||
UE_scheduling_control->pucch1_snr[CC_id],
|
||||
UE_scheduling_control->rlc_out_of_resources_cnt,
|
||||
UE_scheduling_control->pusch_rx_num[CC_id],
|
||||
UE_scheduling_control->pusch_rx_error_num[CC_id],
|
||||
total_bler,
|
||||
UE_scheduling_control->mcs_offset[CC_id],
|
||||
UE_info->UE_template[CC_id][UE_id].estimated_ul_buffer,
|
||||
UE_info->UE_template[CC_id][UE_id].scheduled_ul_bytes,
|
||||
UE_info->eNB_UE_stats[CC_id][UE_id].total_pdu_bytes_rx,
|
||||
UE_info->eNB_UE_stats[CC_id][UE_id].total_num_pdus_rx,
|
||||
UE_info->eNB_UE_stats[CC_id][UE_id].total_pdu_bytes,
|
||||
UE_info->eNB_UE_stats[CC_id][UE_id].total_num_pdus,
|
||||
UE_info->eNB_UE_stats[CC_id][UE_id].total_rbs_used,
|
||||
#if defined(PRE_SCD_THREAD)
|
||||
dl_buffer_total[CC_id][UE_id],
|
||||
#else
|
||||
0,
|
||||
#endif
|
||||
UE_scheduling_control->first_cnt[CC_id],
|
||||
UE_scheduling_control->ret_cnt[CC_id],
|
||||
UE_scheduling_control->aperiodic_ri_received[CC_id]
|
||||
);
|
||||
}
|
||||
|
||||
RC.eNB[module_idP][CC_id]->pusch_stats_bsr[UE_id][(frameP * 10) + subframeP] = -63;
|
||||
|
||||
@@ -1001,7 +1001,17 @@ void dlsch_scheduler_pre_processor_fairRR (module_id_t Mod_id,
|
||||
rnti = dlsch_ue_select[CC_id].list[i].rnti;
|
||||
ue_sched_ctl = &UE_info->UE_sched_ctrl[UE_id];
|
||||
harq_pid = frame_subframe2_dl_harq_pid(cc->tdd_Config,frameP,subframeP);
|
||||
Round = ue_sched_ctl->round[CC_id][harq_pid];
|
||||
|
||||
unsigned char round1, round2;
|
||||
round1 = ue_sched_ctl->round[CC_id][harq_pid][TB1];
|
||||
round2 = ue_sched_ctl->round[CC_id][harq_pid][TB2];
|
||||
if ((round1 != 8) || (round2 != 8)){
|
||||
Round = cmin(round1,round2);
|
||||
ue_sched_ctl->ret_cnt[CC_id]++;
|
||||
} else{
|
||||
Round = 8;
|
||||
ue_sched_ctl->first_cnt[CC_id]++;
|
||||
}
|
||||
|
||||
//if (mac_eNB_get_rrc_status(Mod_id, rnti) < RRC_RECONFIGURED || round > 0) {
|
||||
if (mac_eNB_get_rrc_status(Mod_id, rnti) < RRC_RECONFIGURED || Round != 8) { // FIXME
|
||||
|
||||
@@ -2226,7 +2226,8 @@ add_new_ue(module_id_t mod_idP,
|
||||
UE_info->UE_sched_ctrl[UE_id].pusch_rx_error_num[cc_idP] = 0;
|
||||
UE_info->UE_sched_ctrl[UE_id].pusch_rx_error_num_old[cc_idP] = 0;
|
||||
UE_info->UE_sched_ctrl[UE_id].pusch_bler[cc_idP] = 0;
|
||||
UE_info->UE_sched_ctrl[UE_id].mcs_offset[cc_idP] = 0;
|
||||
UE_info->UE_sched_ctrl[UE_id].ret_cnt[cc_idP] = 0;
|
||||
UE_info->UE_sched_ctrl[UE_id].first_cnt[cc_idP] = 0;
|
||||
|
||||
for (j = 0; j < 8; j++) {
|
||||
UE_info->UE_template[cc_idP][UE_id].oldNDI[j] = 0;
|
||||
|
||||
@@ -202,7 +202,7 @@ rx_sdu(const module_id_t enb_mod_idP,
|
||||
}
|
||||
} else { // sduP == NULL => error
|
||||
UE_scheduling_control->pusch_rx_error_num[CC_idP]++;
|
||||
LOG_W(MAC, "[eNB %d][PUSCH %d] CC_id %d %d.%d ULSCH in error in round %d, ul_cqi %d, UE_id %d, RNTI %x (len %d)\n",
|
||||
LOG_D(MAC, "[eNB %d][PUSCH %d] CC_id %d %d.%d ULSCH in error in round %d, ul_cqi %d, UE_id %d, RNTI %x (len %d)\n",
|
||||
enb_mod_idP,
|
||||
harq_pid,
|
||||
CC_idP,
|
||||
|
||||
@@ -933,6 +933,8 @@ typedef struct {
|
||||
|
||||
/// Current DL harq round per harq_pid on each CC
|
||||
uint8_t round[NFAPI_CC_MAX][10];
|
||||
uint32_t ret_cnt[NFAPI_CC_MAX];
|
||||
uint32_t first_cnt[NFAPI_CC_MAX];
|
||||
/// Current Active TBs per harq_pid on each CC
|
||||
uint8_t tbcnt[NFAPI_CC_MAX][10];
|
||||
/// Current UL harq round per harq_pid on each CC
|
||||
@@ -960,16 +962,16 @@ typedef struct {
|
||||
int32_t phr_received;
|
||||
uint8_t periodic_ri_received[NFAPI_CC_MAX];
|
||||
uint8_t aperiodic_ri_received[NFAPI_CC_MAX];
|
||||
uint8_t pucch1_cqi_update[NFAPI_CC_MAX];
|
||||
uint8_t pucch1_snr[NFAPI_CC_MAX];
|
||||
uint8_t pucch2_cqi_update[NFAPI_CC_MAX];
|
||||
uint8_t pucch2_snr[NFAPI_CC_MAX];
|
||||
uint8_t pucch3_cqi_update[NFAPI_CC_MAX];
|
||||
uint8_t pucch3_snr[NFAPI_CC_MAX];
|
||||
int16_t pucch1_cqi_update[NFAPI_CC_MAX];
|
||||
int16_t pucch1_snr[NFAPI_CC_MAX];
|
||||
int16_t pucch2_cqi_update[NFAPI_CC_MAX];
|
||||
int16_t pucch2_snr[NFAPI_CC_MAX];
|
||||
int16_t pucch3_cqi_update[NFAPI_CC_MAX];
|
||||
int16_t pucch3_snr[NFAPI_CC_MAX];
|
||||
double pusch_cqi_f[NFAPI_CC_MAX];
|
||||
uint8_t pusch_cqi[NFAPI_CC_MAX];
|
||||
uint8_t pusch_snr[NFAPI_CC_MAX];
|
||||
uint8_t pusch_snr_avg[NFAPI_CC_MAX];
|
||||
int16_t pusch_cqi[NFAPI_CC_MAX];
|
||||
int16_t pusch_snr[NFAPI_CC_MAX];
|
||||
int16_t pusch_snr_avg[NFAPI_CC_MAX];
|
||||
uint64_t pusch_rx_num[NFAPI_CC_MAX];
|
||||
uint64_t pusch_rx_num_old[NFAPI_CC_MAX];
|
||||
uint64_t pusch_rx_error_num[NFAPI_CC_MAX];
|
||||
|
||||
Reference in New Issue
Block a user