gNB: add SSB-SINR measurement values to the MAC statistics output
This commit is contained in:
@@ -534,6 +534,11 @@ static void evaluate_sinr_report(gNB_MAC_INST *nrmac,
|
|||||||
*cumul_bits += 4;
|
*cumul_bits += 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NR_mac_stats_t *stats = &UE->mac_stats;
|
||||||
|
// including ssb SINR in mac stats
|
||||||
|
stats->cumul_sinrx10 += sinr_report->SINRx10[0];
|
||||||
|
stats->num_sinr_meas++;
|
||||||
|
|
||||||
LOG_D(MAC, "Reported SSB-SINR = %d.%d\n", sinr_report->SINRx10[0] / 10, sinr_report->SINRx10[0] % 10);
|
LOG_D(MAC, "Reported SSB-SINR = %d.%d\n", sinr_report->SINRx10[0] / 10, sinr_report->SINRx10[0] % 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -126,24 +126,37 @@ size_t dump_mac_stats(gNB_MAC_INST *gNB, char *output, size_t strlen, bool reset
|
|||||||
NR_UE_sched_ctrl_t *sched_ctrl = &UE->UE_sched_ctrl;
|
NR_UE_sched_ctrl_t *sched_ctrl = &UE->UE_sched_ctrl;
|
||||||
NR_mac_stats_t *stats = &UE->mac_stats;
|
NR_mac_stats_t *stats = &UE->mac_stats;
|
||||||
const int avg_rsrp = stats->num_rsrp_meas > 0 ? stats->cumul_rsrp / stats->num_rsrp_meas : 0;
|
const int avg_rsrp = stats->num_rsrp_meas > 0 ? stats->cumul_rsrp / stats->num_rsrp_meas : 0;
|
||||||
|
const int avg_sinrx10 = stats->num_sinr_meas > 0 ? stats->cumul_sinrx10 / stats->num_sinr_meas : 0;
|
||||||
|
|
||||||
output += snprintf(output, end - output, "UE RNTI %04x CU-UE-ID ", UE->rnti);
|
output += snprintf(output, end - output, "UE RNTI %04x CU-UE-ID ", UE->rnti);
|
||||||
if (du_exists_f1_ue_data(UE->rnti)) {
|
if (du_exists_f1_ue_data(UE->rnti)) {
|
||||||
f1_ue_data_t ued = du_get_f1_ue_data(UE->rnti);
|
f1_ue_data_t ued = du_get_f1_ue_data(UE->rnti);
|
||||||
output += snprintf(output, end - output, "%d", ued.secondary_ue);
|
output += snprintf(output, end - output, "%d", ued.secondary_ue);
|
||||||
} else {
|
} else {
|
||||||
output += snprintf(output, end-output, "(none)");
|
output += snprintf(output, end - output, "(none)");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool in_sync = !sched_ctrl->ul_failure;
|
bool in_sync = !sched_ctrl->ul_failure;
|
||||||
output += snprintf(output,
|
output += snprintf(output,
|
||||||
end - output,
|
end - output,
|
||||||
" %s PH %d dB PCMAX %d dBm, average RSRP %d (%d meas)\n",
|
" %s PH %d dB PCMAX %d dBm",
|
||||||
in_sync ? "in-sync" : "out-of-sync",
|
in_sync ? "in-sync" : "out-of-sync",
|
||||||
sched_ctrl->ph,
|
sched_ctrl->ph,
|
||||||
sched_ctrl->pcmax,
|
sched_ctrl->pcmax);
|
||||||
avg_rsrp,
|
|
||||||
stats->num_rsrp_meas);
|
if (stats->num_rsrp_meas)
|
||||||
|
output += snprintf(output, end - output, ", average RSRP %d (%d meas)", avg_rsrp, stats->num_rsrp_meas);
|
||||||
|
|
||||||
|
if (stats->num_sinr_meas) {
|
||||||
|
output += snprintf(output,
|
||||||
|
end - output,
|
||||||
|
", average SINR %d.%d (%d meas)",
|
||||||
|
avg_sinrx10 / 10,
|
||||||
|
avg_sinrx10 % 10,
|
||||||
|
stats->num_sinr_meas);
|
||||||
|
}
|
||||||
|
|
||||||
|
output += snprintf(output, end - output, "\n");
|
||||||
|
|
||||||
if(sched_ctrl->CSI_report.cri_ri_li_pmi_cqi_report.print_report)
|
if(sched_ctrl->CSI_report.cri_ri_li_pmi_cqi_report.print_report)
|
||||||
output += snprintf(output,
|
output += snprintf(output,
|
||||||
@@ -178,6 +191,8 @@ size_t dump_mac_stats(gNB_MAC_INST *gNB, char *output, size_t strlen, bool reset
|
|||||||
if (reset_rsrp) {
|
if (reset_rsrp) {
|
||||||
stats->num_rsrp_meas = 0;
|
stats->num_rsrp_meas = 0;
|
||||||
stats->cumul_rsrp = 0;
|
stats->cumul_rsrp = 0;
|
||||||
|
stats->num_sinr_meas = 0;
|
||||||
|
stats->cumul_sinrx10 = 0;
|
||||||
}
|
}
|
||||||
output += snprintf(output,
|
output += snprintf(output,
|
||||||
end - output,
|
end - output,
|
||||||
|
|||||||
@@ -693,6 +693,8 @@ typedef struct NR_mac_stats {
|
|||||||
uint32_t pucch0_DTX;
|
uint32_t pucch0_DTX;
|
||||||
int cumul_rsrp;
|
int cumul_rsrp;
|
||||||
uint8_t num_rsrp_meas;
|
uint8_t num_rsrp_meas;
|
||||||
|
int cumul_sinrx10;
|
||||||
|
uint8_t num_sinr_meas;
|
||||||
char srs_stats[50]; // Statistics may differ depending on SRS usage
|
char srs_stats[50]; // Statistics may differ depending on SRS usage
|
||||||
int pusch_snrx10;
|
int pusch_snrx10;
|
||||||
int deltaMCS;
|
int deltaMCS;
|
||||||
|
|||||||
Reference in New Issue
Block a user