aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors
diff options
context:
space:
mode:
authorMartin Mathieson <martin.r.mathieson@googlemail.com>2009-03-24 17:28:30 +0000
committerMartin Mathieson <martin.r.mathieson@googlemail.com>2009-03-24 17:28:30 +0000
commitd1fec1b9853da1458a2c806ad0f400a2b1112036 (patch)
treefeaf1f0f4ae290a66e71c83cbb4eefcf327675ca /epan/dissectors
parent43682eea0086f66f649a1f241232795ff73f4621 (diff)
Only report CRC Status when we know it to be valid.
svn path=/trunk/; revision=27841
Diffstat (limited to 'epan/dissectors')
-rw-r--r--epan/dissectors/packet-catapult-dct2000.c16
-rw-r--r--epan/dissectors/packet-mac-lte.c23
-rw-r--r--epan/dissectors/packet-mac-lte.h6
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;