diff options
author | martinm <martinm@f5534014-38df-0310-8fa8-9805f1628bb7> | 2011-04-16 10:56:18 +0000 |
---|---|---|
committer | martinm <martinm@f5534014-38df-0310-8fa8-9805f1628bb7> | 2011-04-16 10:56:18 +0000 |
commit | 3fbb99074a9a1d888cf3ca3db1233edeb375d768 (patch) | |
tree | df3c79fedefe81e9ef7cdb7deabdd7dac466103a | |
parent | 012c2cbb0e7c4cd4a29bb2ecdbcb36c75644de14 (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.c | 21 | ||||
-rw-r--r-- | epan/dissectors/packet-mac-lte.h | 1 | ||||
-rw-r--r-- | gtk/mac_lte_stat_dlg.c | 50 |
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"); |