aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-mac-lte.c
diff options
context:
space:
mode:
authorMouscher, Daniel [Intern] <dmouscher@gmail.com>2018-08-22 11:49:12 -0500
committerMartin Mathieson <martin.r.mathieson@googlemail.com>2018-08-22 23:01:04 +0000
commitcefa533ec2961f7d7ef4827cbe7c11fdf38ac979 (patch)
tree4619e8c6f44bdec7ae3bbca0cf01147cea24210c /epan/dissectors/packet-mac-lte.c
parent3b17e66b78c4a9c547d506d6d299e0a9388c8a07 (diff)
MAC-LTE: Display timing info on SR frames when present
Change-Id: Ibbcd756913e0cf0592bc66b102a2bb7846c38ddd Reviewed-on: https://code.wireshark.org/review/29249 Petri-Dish: Martin Mathieson <martin.r.mathieson@googlemail.com> Tested-by: Petri Dish Buildbot Reviewed-by: Martin Mathieson <martin.r.mathieson@googlemail.com>
Diffstat (limited to 'epan/dissectors/packet-mac-lte.c')
-rw-r--r--epan/dissectors/packet-mac-lte.c82
1 files changed, 50 insertions, 32 deletions
diff --git a/epan/dissectors/packet-mac-lte.c b/epan/dissectors/packet-mac-lte.c
index 40eefb5f31..b980960b4f 100644
--- a/epan/dissectors/packet-mac-lte.c
+++ b/epan/dissectors/packet-mac-lte.c
@@ -2442,6 +2442,8 @@ gboolean dissect_mac_lte_context_fields(struct mac_lte_info *p_mac_lte_info, tv
p_mac_lte_info->rntiType = tvb_get_guint8(tvb, offset++);
+ p_mac_lte_info->sfnSfInfoPresent = FALSE; /* Set this to true later if the relative tag is read */
+
/* Initialize RNTI with a default value in case optional field is not present */
switch (p_mac_lte_info->rntiType) {
case SC_RNTI:
@@ -2482,6 +2484,7 @@ gboolean dissect_mac_lte_context_fields(struct mac_lte_info *p_mac_lte_info, tv
break;
case MAC_LTE_FRAME_SUBFRAME_TAG:
{
+ p_mac_lte_info->sfnSfInfoPresent = TRUE;
guint16 sfn_sf = tvb_get_ntohs(tvb, offset);
p_mac_lte_info->sysframeNumber = (sfn_sf >> 4) & 0x03ff;
p_mac_lte_info->subframeNumber = sfn_sf & 0x000f;
@@ -6962,6 +6965,34 @@ int dissect_mac_lte(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* d
PROTO_ITEM_SET_GENERATED(ti);
}
+ if(p_mac_lte_info->sfnSfInfoPresent) {
+ ti = proto_tree_add_uint(context_tree, hf_mac_lte_context_sysframe_number,
+ tvb, 0, 0, p_mac_lte_info->sysframeNumber);
+ PROTO_ITEM_SET_GENERATED(ti);
+ if (p_mac_lte_info->sysframeNumber > 1023) {
+ expert_add_info_format(pinfo, ti, &ei_mac_lte_context_sysframe_number,
+ "Sysframe number (%u) out of range - valid range is 0-1023",
+ p_mac_lte_info->sysframeNumber);
+ }
+
+ ti = proto_tree_add_uint(context_tree, hf_mac_lte_context_subframe_number,
+ tvb, 0, 0, p_mac_lte_info->subframeNumber);
+ PROTO_ITEM_SET_GENERATED(ti);
+ if (p_mac_lte_info->subframeNumber > 9) {
+ /* N.B. if we set it to valid value, it won't trigger when we rescan
+ (at least with DCT2000 files where the context struct isn't re-read). */
+ expert_add_info_format(pinfo, ti, &ei_mac_lte_context_sysframe_number,
+ "Subframe number (%u) out of range - valid range is 0-9",
+ p_mac_lte_info->subframeNumber);
+ }
+
+ if (p_mac_lte_info->subframeNumberOfGrantPresent) {
+ ti = proto_tree_add_uint(context_tree, hf_mac_lte_context_grant_subframe_number,
+ tvb, 0, 0, p_mac_lte_info->subframeNumberOfGrant);
+ PROTO_ITEM_SET_GENERATED(ti);
+ }
+ }
+
/* There are several out-of-band MAC events that may be indicated in the context info. */
/* Handle them here */
if (p_mac_lte_info->length == 0) {
@@ -7035,12 +7066,25 @@ int dissect_mac_lte(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* d
p_mac_lte_info->oob_rnti[n]);
/* Info column */
- if (n == 0) {
- write_pdu_label_and_info(pdu_ti, NULL, pinfo,
- "Scheduling Requests (%u) sent: (UE=%u C-RNTI=%u)",
- p_mac_lte_info->number_of_srs,
- p_mac_lte_info->oob_ueid[n],
- p_mac_lte_info->oob_rnti[n]);
+
+ if(n == 0) {
+ if (p_mac_lte_info->sfnSfInfoPresent) {
+ write_pdu_label_and_info(pdu_ti, NULL, pinfo,
+ "Scheduling Requests (%u) sent (SFN=%-4u, SF=%u): (UE=%u C-RNTI=%u)",
+ p_mac_lte_info->number_of_srs,
+ p_mac_lte_info->sysframeNumber,
+ p_mac_lte_info->subframeNumber,
+ p_mac_lte_info->oob_ueid[n],
+ p_mac_lte_info->oob_rnti[n]
+ );
+ }
+ else {
+ write_pdu_label_and_info(pdu_ti, NULL, pinfo,
+ "Scheduling Requests (%u) sent: (UE=%u C-RNTI=%u)",
+ p_mac_lte_info->number_of_srs,
+ p_mac_lte_info->oob_ueid[n],
+ p_mac_lte_info->oob_rnti[n]);
+ }
}
else {
write_pdu_label_and_info(pdu_ti, NULL, pinfo,
@@ -7084,32 +7128,6 @@ int dissect_mac_lte(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* d
}
/* Show remaining meta information */
- ti = proto_tree_add_uint(context_tree, hf_mac_lte_context_sysframe_number,
- tvb, 0, 0, p_mac_lte_info->sysframeNumber);
- PROTO_ITEM_SET_GENERATED(ti);
- if (p_mac_lte_info->sysframeNumber > 1023) {
- expert_add_info_format(pinfo, ti, &ei_mac_lte_context_sysframe_number,
- "Sysframe number (%u) out of range - valid range is 0-1023",
- p_mac_lte_info->sysframeNumber);
- }
-
- ti = proto_tree_add_uint(context_tree, hf_mac_lte_context_subframe_number,
- tvb, 0, 0, p_mac_lte_info->subframeNumber);
- PROTO_ITEM_SET_GENERATED(ti);
- if (p_mac_lte_info->subframeNumber > 9) {
- /* N.B. if we set it to valid value, it won't trigger when we rescan
- (at least with DCT2000 files where the context struct isn't re-read). */
- expert_add_info_format(pinfo, ti, &ei_mac_lte_context_sysframe_number,
- "Subframe number (%u) out of range - valid range is 0-9",
- p_mac_lte_info->subframeNumber);
- }
-
- if (p_mac_lte_info->subframeNumberOfGrantPresent) {
- ti = proto_tree_add_uint(context_tree, hf_mac_lte_context_grant_subframe_number,
- tvb, 0, 0, p_mac_lte_info->subframeNumberOfGrant);
- PROTO_ITEM_SET_GENERATED(ti);
- }
-
if (p_mac_lte_info->rntiType != NO_RNTI) {
ti = proto_tree_add_uint(context_tree, hf_mac_lte_context_rnti,
tvb, 0, 0, p_mac_lte_info->rnti);