diff options
-rw-r--r-- | epan/dissectors/packet-catapult-dct2000.c | 8 | ||||
-rw-r--r-- | epan/dissectors/packet-mac-lte.c | 19 | ||||
-rw-r--r-- | epan/dissectors/packet-mac-lte.h | 1 |
3 files changed, 26 insertions, 2 deletions
diff --git a/epan/dissectors/packet-catapult-dct2000.c b/epan/dissectors/packet-catapult-dct2000.c index cff6ca2cc9..db85cdf5fd 100644 --- a/epan/dissectors/packet-catapult-dct2000.c +++ b/epan/dissectors/packet-catapult-dct2000.c @@ -1777,7 +1777,13 @@ static void attach_mac_lte_info(packet_info *pinfo) /* System frame number */ if (i < outhdr_values_found) { - p_mac_lte_info->sysframeNumber = outhdr_values[i]; + p_mac_lte_info->sysframeNumber = outhdr_values[i++]; + } + + if ((p_mac_lte_info->direction == DIRECTION_UPLINK) && + (i < outhdr_values_found)) { + + p_mac_lte_info->isPHICHNACK = outhdr_values[i]; } /* Store info in packet */ diff --git a/epan/dissectors/packet-mac-lte.c b/epan/dissectors/packet-mac-lte.c index 542d0da9e2..c78b30b10e 100644 --- a/epan/dissectors/packet-mac-lte.c +++ b/epan/dissectors/packet-mac-lte.c @@ -61,6 +61,7 @@ static int hf_mac_lte_context_length = -1; static int hf_mac_lte_context_ul_grant_size = -1; static int hf_mac_lte_context_bch_transport_channel = -1; static int hf_mac_lte_context_retx_count = -1; +static int hf_mac_lte_context_retx_reason = -1; static int hf_mac_lte_context_crc_status = -1; static int hf_mac_lte_context_rapid = -1; static int hf_mac_lte_context_rach_attempt_number = -1; @@ -526,7 +527,12 @@ static const value_string predefined_frame_vals[] = { 0, NULL } }; - +static const value_string ul_retx_grant_vals[] = +{ + { 0, "PDCCH ReTx"}, + { 1, "PHICH NACK"}, + { 0, NULL } +}; /**************************************************************************/ /* Preferences state */ @@ -3449,6 +3455,7 @@ void dissect_mac_lte(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) /* Retx count goes in top-level tree to make it more visible */ if (p_mac_lte_info->reTxCount) { + proto_item *retx_reason_ti; retx_ti = proto_tree_add_uint(mac_lte_tree, hf_mac_lte_context_retx_count, tvb, 0, 0, p_mac_lte_info->reTxCount); PROTO_ITEM_SET_GENERATED(retx_ti); @@ -3458,6 +3465,10 @@ void dissect_mac_lte(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) "UE %u: UL MAC frame ReTX no. %u", p_mac_lte_info->ueid, p_mac_lte_info->reTxCount); } + + retx_reason_ti = proto_tree_add_uint(mac_lte_tree, hf_mac_lte_context_retx_reason, + tvb, 0, 0, p_mac_lte_info->isPHICHNACK); + PROTO_ITEM_SET_GENERATED(retx_reason_ti); } if (p_mac_lte_info->crcStatusValid) { @@ -3749,6 +3760,12 @@ void proto_register_mac_lte(void) "Number of times this PDU has been retransmitted", HFILL } }, + { &hf_mac_lte_context_retx_reason, + { "ReTX reason", + "mac-lte.retx-reason", FT_UINT8, BASE_DEC, VALS(ul_retx_grant_vals), 0x0, + "Type of UL ReTx grant", HFILL + } + }, { &hf_mac_lte_context_crc_status, { "CRC Status", "mac-lte.crc-status", FT_UINT8, BASE_DEC, VALS(crc_status_vals), 0x0, diff --git a/epan/dissectors/packet-mac-lte.h b/epan/dissectors/packet-mac-lte.h index 55086837c2..3546539df0 100644 --- a/epan/dissectors/packet-mac-lte.h +++ b/epan/dissectors/packet-mac-lte.h @@ -114,6 +114,7 @@ typedef struct mac_lte_info /* UL only. 0=newTx, 1=first-retx, etc */ guint8 reTxCount; + guint8 isPHICHNACK; /* FALSE=PDCCH retx grant, TRUE=PHICH NACK */ /* DL only. Status of CRC check */ mac_lte_crc_status crcStatusValid; |