aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormartinm <martinm@f5534014-38df-0310-8fa8-9805f1628bb7>2011-04-16 10:56:18 +0000
committermartinm <martinm@f5534014-38df-0310-8fa8-9805f1628bb7>2011-04-16 10:56:18 +0000
commit3fbb99074a9a1d888cf3ca3db1233edeb375d768 (patch)
treedf3c79fedefe81e9ef7cdb7deabdd7dac466103a
parent012c2cbb0e7c4cd4a29bb2ecdbcb36c75644de14 (diff)
Show max UEs/TTI in MAC stats window (UL/DL separately).
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@36658 f5534014-38df-0310-8fa8-9805f1628bb7
-rw-r--r--epan/dissectors/packet-mac-lte.c21
-rw-r--r--epan/dissectors/packet-mac-lte.h1
-rw-r--r--gtk/mac_lte_stat_dlg.c50
3 files changed, 65 insertions, 7 deletions
diff --git a/epan/dissectors/packet-mac-lte.c b/epan/dissectors/packet-mac-lte.c
index 57b2686772..1219080a2b 100644
--- a/epan/dissectors/packet-mac-lte.c
+++ b/epan/dissectors/packet-mac-lte.c
@@ -2082,14 +2082,19 @@ typedef struct TTIInfoResult_t {
static GHashTable *mac_lte_tti_info_result_hash = NULL;
-
-static void count_ues_tti(mac_lte_info *p_mac_lte_info, packet_info *pinfo)
+/* Work out which UE this is within TTI (within direction). Return answer */
+static guint16 count_ues_tti(mac_lte_info *p_mac_lte_info, packet_info *pinfo)
{
gboolean same_tti = FALSE;
- TTIInfoResult_t *result;
+ tti_info_t *tti_info;
+
+ /* Just return any previous result */
+ TTIInfoResult_t *result = g_hash_table_lookup(mac_lte_tti_info_result_hash, GUINT_TO_POINTER(pinfo->fd->num));
+ if (result != NULL) {
+ return result->ues_in_tti;
+ }
/* Set tti_info based upon direction */
- tti_info_t *tti_info;
if (p_mac_lte_info->direction == DIRECTION_UPLINK) {
tti_info = &UL_tti_info;
}
@@ -2128,8 +2133,12 @@ static void count_ues_tti(mac_lte_info *p_mac_lte_info, packet_info *pinfo)
result->ues_in_tti = tti_info->ues_in_tti;
g_hash_table_insert(mac_lte_tti_info_result_hash,
GUINT_TO_POINTER(pinfo->fd->num), result);
+
+ return tti_info->ues_in_tti;
}
+
+/* Show which UE this is (within direction) for this TTI */
static void show_ues_tti(packet_info *pinfo, mac_lte_info *p_mac_lte_info, tvbuff_t *tvb, proto_tree *context_tree)
{
/* Look up result */
@@ -2178,9 +2187,7 @@ static void dissect_ulsch_or_dlsch(tvbuff_t *tvb, packet_info *pinfo, proto_tree
volatile guint32 is_truncated = FALSE;
/* Maintain/show UEs/TTI count */
- if (!pinfo->fd->flags.visited) {
- count_ues_tti(p_mac_lte_info, pinfo);
- }
+ tap_info->ueInTTI = count_ues_tti(p_mac_lte_info, pinfo);
show_ues_tti(pinfo, p_mac_lte_info, tvb, context_tree);
write_pdu_label_and_info(pdu_ti, NULL, pinfo,
diff --git a/epan/dissectors/packet-mac-lte.h b/epan/dissectors/packet-mac-lte.h
index b342685c3d..83a08a89a9 100644
--- a/epan/dissectors/packet-mac-lte.h
+++ b/epan/dissectors/packet-mac-lte.h
@@ -167,6 +167,7 @@ typedef struct mac_lte_tap_info {
guint8 direction;
guint8 isPHYRetx;
+ guint16 ueInTTI;
nstime_t time;
diff --git a/gtk/mac_lte_stat_dlg.c b/gtk/mac_lte_stat_dlg.c
index 793e8a280e..15ad90e797 100644
--- a/gtk/mac_lte_stat_dlg.c
+++ b/gtk/mac_lte_stat_dlg.c
@@ -158,6 +158,9 @@ typedef struct mac_lte_common_stats {
guint32 pch_bytes;
guint32 rar_frames;
guint32 rar_entries;
+
+ guint16 max_ul_ues_in_tti;
+ guint16 max_dl_ues_in_tti;
} mac_lte_common_stats;
@@ -181,6 +184,9 @@ typedef struct mac_lte_stat_t {
GtkWidget *dct_error_substring_lb;
GtkWidget *dct_error_substring_te;
+ GtkWidget *ul_max_ues_per_tti;
+ GtkWidget *dl_max_ues_per_tti;
+
/* Common stats */
mac_lte_common_stats common_stats;
GtkWidget *common_bch_frames;
@@ -366,6 +372,18 @@ mac_lte_stat_packet(void *phs, packet_info *pinfo, epan_dissect_t *edt _U_,
return 0;
}
+ /* Check max UEs/tti counter */
+ switch (si->direction) {
+ case DIRECTION_UPLINK:
+ hs->common_stats.max_ul_ues_in_tti =
+ MAX(hs->common_stats.max_ul_ues_in_tti, si->ueInTTI);
+ break;
+ case DIRECTION_DOWNLINK:
+ hs->common_stats.max_dl_ues_in_tti =
+ MAX(hs->common_stats.max_dl_ues_in_tti, si->ueInTTI);
+ break;
+ }
+
/* For per-UE data, must create a new row if none already existing */
if (!hs->ep_list) {
/* Allocate new list */
@@ -630,6 +648,12 @@ mac_lte_stat_draw(void *phs)
GtkTreeModel *model;
GtkTreeIter iter;
+ /* System data */
+ g_snprintf(buff, sizeof(buff), "Max UL UEs/TTI: %u", hs->common_stats.max_ul_ues_in_tti);
+ gtk_label_set_text(GTK_LABEL(hs->ul_max_ues_per_tti), buff);
+ g_snprintf(buff, sizeof(buff), "Max DL UEs/TTI: %u", hs->common_stats.max_dl_ues_in_tti);
+ gtk_label_set_text(GTK_LABEL(hs->dl_max_ues_per_tti), buff);
+
/* Common channel data */
g_snprintf(buff, sizeof(buff), "BCH Frames: %u", hs->common_stats.bch_frames);
gtk_label_set_text(GTK_LABEL(hs->common_bch_frames), buff);
@@ -924,10 +948,12 @@ static void gtk_mac_lte_stat_init(const char *optarg, void *userdata _U_)
GtkWidget *bbox;
GtkWidget *top_level_vbox;
+ GtkWidget *system_row_hbox;
GtkWidget *common_row_hbox;
GtkWidget *ues_vb;
GtkWidget *selected_ue_hb;
+ GtkWidget *mac_lte_stat_system_lb;
GtkWidget *mac_lte_stat_common_channel_lb;
GtkWidget *mac_lte_stat_selected_ue_lb;
GtkWidget *selected_ue_vbox[NUM_CHANNEL_COLUMNS];
@@ -991,6 +1017,30 @@ static void gtk_mac_lte_stat_init(const char *optarg, void *userdata _U_)
/**********************************************/
+ /* System data */
+ /**********************************************/
+ mac_lte_stat_system_lb = gtk_frame_new("System Data");
+
+ /* Add max UEs/TTI counts in one row */
+ system_row_hbox = gtk_hbox_new(FALSE, 0);
+ gtk_container_add(GTK_CONTAINER(mac_lte_stat_system_lb), system_row_hbox);
+ gtk_container_set_border_width(GTK_CONTAINER(system_row_hbox), 5);
+
+ gtk_box_pack_start(GTK_BOX(top_level_vbox), mac_lte_stat_system_lb, FALSE, FALSE, 0);
+
+ /* Create labels (that will hold label and counter value) */
+ hs->ul_max_ues_per_tti = gtk_label_new("Max UL UEs/TTI:");
+ gtk_misc_set_alignment(GTK_MISC(hs->ul_max_ues_per_tti), 0.0f, .5f);
+ gtk_container_add(GTK_CONTAINER(system_row_hbox), hs->ul_max_ues_per_tti);
+ gtk_widget_show(hs->ul_max_ues_per_tti);
+
+ hs->dl_max_ues_per_tti = gtk_label_new("Max DL UEs/TTI:");
+ gtk_misc_set_alignment(GTK_MISC(hs->dl_max_ues_per_tti), 0.0f, .5f);
+ gtk_container_add(GTK_CONTAINER(system_row_hbox), hs->dl_max_ues_per_tti);
+ gtk_widget_show(hs->dl_max_ues_per_tti);
+
+
+ /**********************************************/
/* Common Channel data */
/**********************************************/
mac_lte_stat_common_channel_lb = gtk_frame_new("Common Channel Data");