DL_CRC_FAILED_COLUMN,
DL_CRC_HIGH_CODE_RATE_COLUMN,
DL_CRC_PDSCH_LOST_COLUMN,
+ DL_CRC_DUPLICATE_NONZERO_RV,
DL_RETX_FRAMES_COLUMN,
TABLE_COLUMN,
NUM_UE_COLUMNS
static const gchar *ue_titles[] = { "RNTI", "Type", "UEId",
"UL Frames", "UL Bytes", "UL MBit/sec", "UL Padding %", "UL ReTX",
- "DL Frames", "DL Bytes", "DL MBit/sec", "DL CRC Failed", "DL CRC High Code Rate", "DL CRC PDSCH Lost", "DL ReTX"};
+ "DL Frames", "DL Bytes", "DL MBit/sec", "DL CRC Failed", "DL CRC High Code Rate", "DL CRC PDSCH Lost", "DL CRC Dup NonZero RV", "DL ReTX"};
static const gchar *channel_titles[] = { "CCCH",
"LCID 1", "LCID 2", "LCID 3", "LCID 4", "LCID 5",
guint32 DL_CRC_failures;
guint32 DL_CRC_high_code_rate;
guint32 DL_CRC_PDSCH_lost;
+ guint32 DL_CRC_Duplicate_Nonzero_rv;
guint32 DL_retx_frames;
guint32 UL_bytes_for_lcid[11];
ep->stats.DL_CRC_failures = 0;
ep->stats.DL_CRC_high_code_rate = 0;
ep->stats.DL_CRC_PDSCH_lost = 0;
+ ep->stats.DL_CRC_Duplicate_Nonzero_rv = 0;
ep->stats.UL_retx_frames = 0;
ep->stats.DL_retx_frames = 0;
case crc_pdsch_lost:
te->stats.DL_CRC_PDSCH_lost++;
break;
+ case crc_duplicate_nonzero_rv:
+ te->stats.DL_CRC_Duplicate_Nonzero_rv++;
+ break;
+
default:
/* Something went wrong! */
break;
DL_CRC_FAILED_COLUMN, tmp->stats.DL_CRC_failures,
DL_CRC_HIGH_CODE_RATE_COLUMN, tmp->stats.DL_CRC_high_code_rate,
DL_CRC_PDSCH_LOST_COLUMN, tmp->stats.DL_CRC_PDSCH_lost,
+ DL_CRC_DUPLICATE_NONZERO_RV, tmp->stats.DL_CRC_Duplicate_Nonzero_rv,
DL_RETX_FRAMES_COLUMN, tmp->stats.DL_retx_frames,
TABLE_COLUMN, tmp,
-1);
/* Create the table of UE data */
store = gtk_list_store_new(NUM_UE_COLUMNS, G_TYPE_INT, G_TYPE_STRING, G_TYPE_INT,
G_TYPE_INT, G_TYPE_INT, G_TYPE_FLOAT, G_TYPE_FLOAT, G_TYPE_INT, /* UL */
- G_TYPE_INT, G_TYPE_INT, G_TYPE_FLOAT, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, /* DL */
+ G_TYPE_INT, G_TYPE_INT, G_TYPE_FLOAT, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, /* DL */
G_TYPE_POINTER);
hs->ue_table = GTK_TREE_VIEW(tree_view_new(GTK_TREE_MODEL(store)));
gtk_container_add(GTK_CONTAINER (ues_scrolled_window), GTK_WIDGET(hs->ue_table));
DL_CRC_FAILED_COLUMN,
DL_CRC_HIGH_CODE_RATE_COLUMN,
DL_CRC_PDSCH_LOST_COLUMN,
+ DL_CRC_DUPLICATE_NONZERO_RV_COLUMN,
DL_RETX_FRAMES_COLUMN,
NUM_UE_COLUMNS
};
static const gchar *ue_titles[] = { " RNTI", " Type", "UEId",
"UL Frames", "UL Bytes", "UL Mb/sec", " UL Pad %", "UL ReTX",
- "DL Frames", "DL Bytes", "DL Mb/sec", "DL CRC Fail", "DL CRC HCR", "DL CRC PDSCH Lost", "DL ReTX"};
+ "DL Frames", "DL Bytes", "DL Mb/sec", "DL CRC Fail", "DL CRC HCR", "DL CRC PDSCH Lost", "DL CRC DupNonZeroRV", "DL ReTX"};
/* Stats for one UE */
guint32 DL_CRC_failures;
guint32 DL_CRC_high_code_rate;
guint32 DL_CRC_PDSCH_lost;
+ guint32 DL_CRC_Duplicate_NonZero_RV;
guint32 DL_retx_frames;
} mac_lte_row_data;
ep->stats.DL_CRC_failures = 0;
ep->stats.DL_CRC_high_code_rate = 0;
ep->stats.DL_CRC_PDSCH_lost = 0;
+ ep->stats.DL_CRC_Duplicate_NonZero_RV = 0;
ep->stats.UL_retx_frames = 0;
ep->stats.DL_retx_frames = 0;
case crc_pdsch_lost:
te->stats.DL_CRC_PDSCH_lost++;
break;
+ case crc_duplicate_nonzero_rv:
+ te->stats.DL_CRC_Duplicate_NonZero_RV++;
+ break;
+
default:
/* Something went wrong! */
break;
&tmp->stats.DL_time_stop,
tmp->stats.DL_total_bytes);
- printf("%5u %7s %5u %10u %9u %10f %10f %8u %10u %9u %10f %12u %11u %18u %8u\n",
+ printf("%5u %7s %5u %10u %9u %10f %10f %8u %10u %9u %10f %12u %11u %18u %20u %8u\n",
tmp->stats.rnti,
(tmp->stats.rnti_type == C_RNTI) ? "C-RNTI" : "SPS-RNTI",
tmp->stats.ueid,
tmp->stats.DL_CRC_failures,
tmp->stats.DL_CRC_high_code_rate,
tmp->stats.DL_CRC_PDSCH_lost,
+ tmp->stats.DL_CRC_Duplicate_NonZero_RV,
tmp->stats.DL_retx_frames);
}
}