diff options
author | Martin Mathieson <martin.r.mathieson@googlemail.com> | 2009-03-24 17:28:30 +0000 |
---|---|---|
committer | Martin Mathieson <martin.r.mathieson@googlemail.com> | 2009-03-24 17:28:30 +0000 |
commit | d1fec1b9853da1458a2c806ad0f400a2b1112036 (patch) | |
tree | feaf1f0f4ae290a66e71c83cbb4eefcf327675ca /epan | |
parent | 43682eea0086f66f649a1f241232795ff73f4621 (diff) | |
download | wireshark-d1fec1b9853da1458a2c806ad0f400a2b1112036.tar.gz wireshark-d1fec1b9853da1458a2c806ad0f400a2b1112036.tar.bz2 wireshark-d1fec1b9853da1458a2c806ad0f400a2b1112036.zip |
Only report CRC Status when we know it to be valid.
svn path=/trunk/; revision=27841
Diffstat (limited to 'epan')
-rw-r--r-- | epan/dissectors/packet-catapult-dct2000.c | 16 | ||||
-rw-r--r-- | epan/dissectors/packet-mac-lte.c | 23 | ||||
-rw-r--r-- | epan/dissectors/packet-mac-lte.h | 6 |
3 files changed, 30 insertions, 15 deletions
diff --git a/epan/dissectors/packet-catapult-dct2000.c b/epan/dissectors/packet-catapult-dct2000.c index 37cc2718de..610dbb3b3b 100644 --- a/epan/dissectors/packet-catapult-dct2000.c +++ b/epan/dissectors/packet-catapult-dct2000.c @@ -1326,7 +1326,7 @@ static void attach_mac_lte_info(packet_info *pinfo) } /* Populate the struct from outhdr values */ - p_mac_lte_info->crcStatus = TRUE; + p_mac_lte_info->crcStatusValid = FALSE; p_mac_lte_info->radioType = outhdr_values[i++]; p_mac_lte_info->rntiType = outhdr_values[i++]; @@ -1340,10 +1340,20 @@ static void attach_mac_lte_info(packet_info *pinfo) p_mac_lte_info->reTxCount = outhdr_values[i++]; } if (outhdr_values_found > 9) { - p_mac_lte_info->crcStatus = outhdr_values[i++]; + /* CRC only valid for DL-SCH */ + if ((p_mac_lte_info->direction == DIRECTION_DOWNLINK) && + ((p_mac_lte_info->rntiType == C_RNTI) || + (p_mac_lte_info->rntiType == SI_RNTI) || + (p_mac_lte_info->rntiType == P_RNTI))) { + + p_mac_lte_info->crcStatusValid = TRUE; + p_mac_lte_info->crcStatus = outhdr_values[i++]; + } + else { + i++; + } } - /* Store info in packet */ p_add_proto_data(pinfo->fd, proto_mac_lte, p_mac_lte_info); } diff --git a/epan/dissectors/packet-mac-lte.c b/epan/dissectors/packet-mac-lte.c index 2200cc218a..631edeb3c9 100644 --- a/epan/dissectors/packet-mac-lte.c +++ b/epan/dissectors/packet-mac-lte.c @@ -1066,23 +1066,26 @@ void dissect_mac_lte(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) } } - ti = proto_tree_add_uint(mac_lte_tree, hf_mac_lte_context_crc_status, - tvb, 0, 0, p_mac_lte_info->crcStatus); - PROTO_ITEM_SET_GENERATED(ti); - if (p_mac_lte_info->crcStatus != TRUE) { - expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_ERROR, - "Frame has CRC error"); - if (check_col(pinfo->cinfo, COL_INFO)) { - col_append_fstr(pinfo->cinfo, COL_INFO, "<CRC FAILURE>"); + if (p_mac_lte_info->crcStatusValid) { + ti = proto_tree_add_uint(mac_lte_tree, hf_mac_lte_context_crc_status, + tvb, 0, 0, p_mac_lte_info->crcStatus); + PROTO_ITEM_SET_GENERATED(ti); + if (p_mac_lte_info->crcStatus != TRUE) { + expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_ERROR, + "Frame has CRC error"); + if (check_col(pinfo->cinfo, COL_INFO)) { + col_append_fstr(pinfo->cinfo, COL_INFO, "<CRC FAILURE>"); + } } } /* Set context-info parts of tap struct */ tap_info.rnti = p_mac_lte_info->rnti; - tap_info.rnti_type = p_mac_lte_info->rntiType; - tap_info.is_predefined_data = p_mac_lte_info->isPredefinedData; + tap_info.rntiType = p_mac_lte_info->rntiType; + tap_info.isPredefinedData = p_mac_lte_info->isPredefinedData; tap_info.reTxCount = p_mac_lte_info->reTxCount; + tap_info.crcStatusValid = p_mac_lte_info->crcStatusValid; tap_info.crcStatus = p_mac_lte_info->crcStatus; tap_info.direction = p_mac_lte_info->direction; diff --git a/epan/dissectors/packet-mac-lte.h b/epan/dissectors/packet-mac-lte.h index 56df48b67f..21d807ee04 100644 --- a/epan/dissectors/packet-mac-lte.h +++ b/epan/dissectors/packet-mac-lte.h @@ -53,6 +53,7 @@ typedef struct mac_lte_info guint8 isPredefinedData; guint16 length; guint8 reTxCount; + guint8 crcStatusValid; guint8 crcStatus; } mac_lte_info; @@ -60,9 +61,10 @@ typedef struct mac_lte_info typedef struct mac_lte_tap_info { /* Info from context */ guint16 rnti; - guint8 rnti_type; - guint8 is_predefined_data; + guint8 rntiType; + guint8 isPredefinedData; guint8 reTxCount; + guint8 crcStatusValid; guint8 crcStatus; guint8 direction; |