forked from osmocom/wireshark
From Fabrice Bellard:
Add Carrier Id and detailed PHY info to MAC LTE UDP framing dissector svn path=/trunk/; revision=54370
This commit is contained in:
parent
18f68cae7e
commit
9de6aa8619
|
@ -1731,7 +1731,7 @@ static void attach_mac_lte_info(packet_info *pinfo)
|
||||||
p_mac_lte_info = wmem_new0(wmem_file_scope(), struct mac_lte_info);
|
p_mac_lte_info = wmem_new0(wmem_file_scope(), struct mac_lte_info);
|
||||||
|
|
||||||
/* Populate the struct from outhdr values */
|
/* Populate the struct from outhdr values */
|
||||||
p_mac_lte_info->crcStatusValid = crc_fail; /* not set yet */
|
p_mac_lte_info->crcStatusValid = FALSE; /* not set yet */
|
||||||
|
|
||||||
p_mac_lte_info->radioType = outhdr_values[i++] + 1;
|
p_mac_lte_info->radioType = outhdr_values[i++] + 1;
|
||||||
p_mac_lte_info->rntiType = outhdr_values[i++];
|
p_mac_lte_info->rntiType = outhdr_values[i++];
|
||||||
|
@ -1755,8 +1755,8 @@ static void attach_mac_lte_info(packet_info *pinfo)
|
||||||
if (outhdr_values_found == 10) {
|
if (outhdr_values_found == 10) {
|
||||||
/* CRC only valid for Downlink */
|
/* CRC only valid for Downlink */
|
||||||
if (p_mac_lte_info->direction == DIRECTION_DOWNLINK) {
|
if (p_mac_lte_info->direction == DIRECTION_DOWNLINK) {
|
||||||
p_mac_lte_info->crcStatusValid = crc_success;
|
p_mac_lte_info->crcStatusValid = TRUE;
|
||||||
p_mac_lte_info->detailed_phy_info.dl_info.crc_status = (mac_lte_crc_status)outhdr_values[i++];
|
p_mac_lte_info->crcStatus = (mac_lte_crc_status)outhdr_values[i++];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
i++;
|
i++;
|
||||||
|
@ -1781,8 +1781,8 @@ static void attach_mac_lte_info(packet_info *pinfo)
|
||||||
p_mac_lte_info->dl_retx = dl_retx_no;
|
p_mac_lte_info->dl_retx = dl_retx_no;
|
||||||
}
|
}
|
||||||
p_mac_lte_info->detailed_phy_info.dl_info.resource_block_length = outhdr_values[i++];
|
p_mac_lte_info->detailed_phy_info.dl_info.resource_block_length = outhdr_values[i++];
|
||||||
p_mac_lte_info->crcStatusValid = crc_success;
|
p_mac_lte_info->crcStatusValid = TRUE;
|
||||||
p_mac_lte_info->detailed_phy_info.dl_info.crc_status = (mac_lte_crc_status)outhdr_values[i++];
|
p_mac_lte_info->crcStatus = (mac_lte_crc_status)outhdr_values[i++];
|
||||||
if (outhdr_values_found > 18) {
|
if (outhdr_values_found > 18) {
|
||||||
p_mac_lte_info->detailed_phy_info.dl_info.harq_id = outhdr_values[i++];
|
p_mac_lte_info->detailed_phy_info.dl_info.harq_id = outhdr_values[i++];
|
||||||
p_mac_lte_info->detailed_phy_info.dl_info.ndi = outhdr_values[i++];
|
p_mac_lte_info->detailed_phy_info.dl_info.ndi = outhdr_values[i++];
|
||||||
|
|
|
@ -94,7 +94,6 @@ static int hf_mac_lte_context_phy_dl_mcs_index = -1;
|
||||||
static int hf_mac_lte_context_phy_dl_redundancy_version_index = -1;
|
static int hf_mac_lte_context_phy_dl_redundancy_version_index = -1;
|
||||||
static int hf_mac_lte_context_phy_dl_retx = -1;
|
static int hf_mac_lte_context_phy_dl_retx = -1;
|
||||||
static int hf_mac_lte_context_phy_dl_resource_block_length = -1;
|
static int hf_mac_lte_context_phy_dl_resource_block_length = -1;
|
||||||
static int hf_mac_lte_context_phy_dl_crc_status = -1;
|
|
||||||
static int hf_mac_lte_context_phy_dl_harq_id = -1;
|
static int hf_mac_lte_context_phy_dl_harq_id = -1;
|
||||||
static int hf_mac_lte_context_phy_dl_ndi = -1;
|
static int hf_mac_lte_context_phy_dl_ndi = -1;
|
||||||
static int hf_mac_lte_context_phy_dl_tb = -1;
|
static int hf_mac_lte_context_phy_dl_tb = -1;
|
||||||
|
@ -1815,7 +1814,6 @@ gboolean dissect_mac_lte_context_fields(struct mac_lte_info *p_mac_lte_info, tv
|
||||||
p_mac_lte_info->radioType = tvb_get_guint8(tvb, offset++);
|
p_mac_lte_info->radioType = tvb_get_guint8(tvb, offset++);
|
||||||
p_mac_lte_info->direction = tvb_get_guint8(tvb, offset++);
|
p_mac_lte_info->direction = tvb_get_guint8(tvb, offset++);
|
||||||
|
|
||||||
/* TODO: currently no support for detailed PHY info... */
|
|
||||||
if (p_mac_lte_info->direction == DIRECTION_UPLINK) {
|
if (p_mac_lte_info->direction == DIRECTION_UPLINK) {
|
||||||
p_mac_lte_info->detailed_phy_info.ul_info.present = FALSE;
|
p_mac_lte_info->detailed_phy_info.ul_info.present = FALSE;
|
||||||
}
|
}
|
||||||
|
@ -1876,7 +1874,7 @@ gboolean dissect_mac_lte_context_fields(struct mac_lte_info *p_mac_lte_info, tv
|
||||||
break;
|
break;
|
||||||
case MAC_LTE_CRC_STATUS_TAG:
|
case MAC_LTE_CRC_STATUS_TAG:
|
||||||
p_mac_lte_info->crcStatusValid = TRUE;
|
p_mac_lte_info->crcStatusValid = TRUE;
|
||||||
p_mac_lte_info->detailed_phy_info.dl_info.crc_status =
|
p_mac_lte_info->crcStatus =
|
||||||
(mac_lte_crc_status)tvb_get_guint8(tvb, offset);
|
(mac_lte_crc_status)tvb_get_guint8(tvb, offset);
|
||||||
offset++;
|
offset++;
|
||||||
break;
|
break;
|
||||||
|
@ -1890,6 +1888,76 @@ gboolean dissect_mac_lte_context_fields(struct mac_lte_info *p_mac_lte_info, tv
|
||||||
p_mac_lte_info->rach_attempt_number = tvb_get_guint8(tvb, offset);
|
p_mac_lte_info->rach_attempt_number = tvb_get_guint8(tvb, offset);
|
||||||
offset++;
|
offset++;
|
||||||
break;
|
break;
|
||||||
|
case MAC_LTE_CARRIER_ID_TAG:
|
||||||
|
p_mac_lte_info->carrierId =
|
||||||
|
(mac_lte_carrier_id)tvb_get_guint8(tvb, offset);
|
||||||
|
offset++;
|
||||||
|
break;
|
||||||
|
case MAC_LTE_PHY_TAG:
|
||||||
|
{
|
||||||
|
gint len, offset1;
|
||||||
|
|
||||||
|
len = tvb_get_guint8(tvb, offset++);
|
||||||
|
offset1 = offset;
|
||||||
|
if (p_mac_lte_info->direction == DIRECTION_DOWNLINK) {
|
||||||
|
if (len < 10)
|
||||||
|
goto next;
|
||||||
|
p_mac_lte_info->detailed_phy_info.dl_info.present = TRUE;
|
||||||
|
p_mac_lte_info->detailed_phy_info.dl_info.dci_format =
|
||||||
|
tvb_get_guint8(tvb, offset);
|
||||||
|
offset++;
|
||||||
|
p_mac_lte_info->detailed_phy_info.dl_info.resource_allocation_type =
|
||||||
|
tvb_get_guint8(tvb, offset);
|
||||||
|
offset++;
|
||||||
|
p_mac_lte_info->detailed_phy_info.dl_info.aggregation_level =
|
||||||
|
tvb_get_guint8(tvb, offset);
|
||||||
|
offset++;
|
||||||
|
p_mac_lte_info->detailed_phy_info.dl_info.mcs_index =
|
||||||
|
tvb_get_guint8(tvb, offset);
|
||||||
|
offset++;
|
||||||
|
p_mac_lte_info->detailed_phy_info.dl_info.redundancy_version_index =
|
||||||
|
tvb_get_guint8(tvb, offset);
|
||||||
|
offset++;
|
||||||
|
p_mac_lte_info->detailed_phy_info.dl_info.resource_block_length =
|
||||||
|
tvb_get_guint8(tvb, offset);
|
||||||
|
offset++;
|
||||||
|
p_mac_lte_info->detailed_phy_info.dl_info.harq_id =
|
||||||
|
tvb_get_guint8(tvb, offset);
|
||||||
|
offset++;
|
||||||
|
p_mac_lte_info->detailed_phy_info.dl_info.ndi =
|
||||||
|
tvb_get_guint8(tvb, offset);
|
||||||
|
offset++;
|
||||||
|
p_mac_lte_info->detailed_phy_info.dl_info.transport_block =
|
||||||
|
tvb_get_guint8(tvb, offset);
|
||||||
|
offset++;
|
||||||
|
p_mac_lte_info->dl_retx =
|
||||||
|
(mac_lte_dl_retx)tvb_get_guint8(tvb, offset);
|
||||||
|
} else {
|
||||||
|
if (len < 6)
|
||||||
|
goto next;
|
||||||
|
p_mac_lte_info->detailed_phy_info.ul_info.present = TRUE;
|
||||||
|
p_mac_lte_info->detailed_phy_info.ul_info.modulation_type =
|
||||||
|
tvb_get_guint8(tvb, offset);
|
||||||
|
offset++;
|
||||||
|
p_mac_lte_info->detailed_phy_info.ul_info.tbs_index =
|
||||||
|
tvb_get_guint8(tvb, offset);
|
||||||
|
offset++;
|
||||||
|
p_mac_lte_info->detailed_phy_info.ul_info.resource_block_length =
|
||||||
|
tvb_get_guint8(tvb, offset);
|
||||||
|
offset++;
|
||||||
|
p_mac_lte_info->detailed_phy_info.ul_info.resource_block_start =
|
||||||
|
tvb_get_guint8(tvb, offset);
|
||||||
|
offset++;
|
||||||
|
p_mac_lte_info->detailed_phy_info.ul_info.harq_id =
|
||||||
|
tvb_get_guint8(tvb, offset);
|
||||||
|
offset++;
|
||||||
|
p_mac_lte_info->detailed_phy_info.ul_info.ndi =
|
||||||
|
tvb_get_guint8(tvb, offset);
|
||||||
|
}
|
||||||
|
next:
|
||||||
|
offset = offset1 + len;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case MAC_LTE_PAYLOAD_TAG:
|
case MAC_LTE_PAYLOAD_TAG:
|
||||||
/* Have reached data, so set payload length and get out of loop */
|
/* Have reached data, so set payload length and get out of loop */
|
||||||
|
@ -2150,11 +2218,6 @@ static void show_extra_phy_parameters(packet_info *pinfo, tvbuff_t *tvb, proto_t
|
||||||
p_mac_lte_info->detailed_phy_info.dl_info.resource_block_length);
|
p_mac_lte_info->detailed_phy_info.dl_info.resource_block_length);
|
||||||
PROTO_ITEM_SET_GENERATED(ti);
|
PROTO_ITEM_SET_GENERATED(ti);
|
||||||
|
|
||||||
ti = proto_tree_add_uint(phy_tree, hf_mac_lte_context_phy_dl_crc_status,
|
|
||||||
tvb, 0, 0,
|
|
||||||
p_mac_lte_info->detailed_phy_info.dl_info.crc_status);
|
|
||||||
PROTO_ITEM_SET_GENERATED(ti);
|
|
||||||
|
|
||||||
ti = proto_tree_add_uint(phy_tree, hf_mac_lte_context_phy_dl_harq_id,
|
ti = proto_tree_add_uint(phy_tree, hf_mac_lte_context_phy_dl_harq_id,
|
||||||
tvb, 0, 0,
|
tvb, 0, 0,
|
||||||
p_mac_lte_info->detailed_phy_info.dl_info.harq_id);
|
p_mac_lte_info->detailed_phy_info.dl_info.harq_id);
|
||||||
|
@ -2176,7 +2239,7 @@ static void show_extra_phy_parameters(packet_info *pinfo, tvbuff_t *tvb, proto_t
|
||||||
write_pdu_label_and_info(phy_ti, NULL,
|
write_pdu_label_and_info(phy_ti, NULL,
|
||||||
(global_mac_lte_layer_to_show == ShowPHYLayer) ? pinfo : NULL,
|
(global_mac_lte_layer_to_show == ShowPHYLayer) ? pinfo : NULL,
|
||||||
"DL: UEId=%u RNTI=%u DCI_Format=%s Res_Alloc=%u Aggr_Level=%s MCS=%u RV=%u "
|
"DL: UEId=%u RNTI=%u DCI_Format=%s Res_Alloc=%u Aggr_Level=%s MCS=%u RV=%u "
|
||||||
"Res_Block_len=%u CRC_status=%s HARQ_id=%u NDI=%u",
|
"Res_Block_len=%u HARQ_id=%u NDI=%u",
|
||||||
p_mac_lte_info->ueid,
|
p_mac_lte_info->ueid,
|
||||||
p_mac_lte_info->rnti,
|
p_mac_lte_info->rnti,
|
||||||
val_to_str_const(p_mac_lte_info->detailed_phy_info.dl_info.dci_format,
|
val_to_str_const(p_mac_lte_info->detailed_phy_info.dl_info.dci_format,
|
||||||
|
@ -2187,8 +2250,6 @@ static void show_extra_phy_parameters(packet_info *pinfo, tvbuff_t *tvb, proto_t
|
||||||
p_mac_lte_info->detailed_phy_info.dl_info.mcs_index,
|
p_mac_lte_info->detailed_phy_info.dl_info.mcs_index,
|
||||||
p_mac_lte_info->detailed_phy_info.dl_info.redundancy_version_index,
|
p_mac_lte_info->detailed_phy_info.dl_info.redundancy_version_index,
|
||||||
p_mac_lte_info->detailed_phy_info.dl_info.resource_block_length,
|
p_mac_lte_info->detailed_phy_info.dl_info.resource_block_length,
|
||||||
val_to_str_const(p_mac_lte_info->detailed_phy_info.dl_info.crc_status,
|
|
||||||
crc_status_vals, "Unknown"),
|
|
||||||
p_mac_lte_info->detailed_phy_info.dl_info.harq_id,
|
p_mac_lte_info->detailed_phy_info.dl_info.harq_id,
|
||||||
p_mac_lte_info->detailed_phy_info.dl_info.ndi);
|
p_mac_lte_info->detailed_phy_info.dl_info.ndi);
|
||||||
proto_item_append_text(phy_ti, ")");
|
proto_item_append_text(phy_ti, ")");
|
||||||
|
@ -3388,12 +3449,14 @@ static void dissect_ulsch_or_dlsch(tvbuff_t *tvb, packet_info *pinfo, proto_tree
|
||||||
|
|
||||||
/* Changes of state caused by events */
|
/* Changes of state caused by events */
|
||||||
if (!pinfo->fd->flags.visited) {
|
if (!pinfo->fd->flags.visited) {
|
||||||
if ((p_mac_lte_info->reTxCount == 0) && (p_mac_lte_info->direction == DIRECTION_UPLINK)) {
|
if (p_mac_lte_info->direction == DIRECTION_UPLINK) {
|
||||||
mac_lte_drx_new_ulsch_data(p_mac_lte_info->ueid);
|
if (p_mac_lte_info->reTxCount == 0) {
|
||||||
|
mac_lte_drx_new_ulsch_data(p_mac_lte_info->ueid);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/* Downlink */
|
/* Downlink */
|
||||||
if ((p_mac_lte_info->crcStatusValid) && (p_mac_lte_info->detailed_phy_info.dl_info.crc_status != crc_success)) {
|
if ((p_mac_lte_info->crcStatusValid) && (p_mac_lte_info->crcStatus != crc_success)) {
|
||||||
mac_lte_drx_dl_crc_error(p_mac_lte_info->ueid);
|
mac_lte_drx_dl_crc_error(p_mac_lte_info->ueid);
|
||||||
}
|
}
|
||||||
else if (p_mac_lte_info->reTxCount == 0) {
|
else if (p_mac_lte_info->reTxCount == 0) {
|
||||||
|
@ -5211,21 +5274,21 @@ int dissect_mac_lte(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* d
|
||||||
if (p_mac_lte_info->crcStatusValid) {
|
if (p_mac_lte_info->crcStatusValid) {
|
||||||
/* Set status */
|
/* Set status */
|
||||||
ti = proto_tree_add_uint(context_tree, hf_mac_lte_context_crc_status,
|
ti = proto_tree_add_uint(context_tree, hf_mac_lte_context_crc_status,
|
||||||
tvb, 0, 0, p_mac_lte_info->detailed_phy_info.dl_info.crc_status);
|
tvb, 0, 0, p_mac_lte_info->crcStatus);
|
||||||
PROTO_ITEM_SET_GENERATED(ti);
|
PROTO_ITEM_SET_GENERATED(ti);
|
||||||
|
|
||||||
/* Report non-success */
|
/* Report non-success */
|
||||||
if (p_mac_lte_info->detailed_phy_info.dl_info.crc_status != crc_success) {
|
if (p_mac_lte_info->crcStatus != crc_success) {
|
||||||
expert_add_info_format(pinfo, ti, &ei_mac_lte_context_crc_status,
|
expert_add_info_format(pinfo, ti, &ei_mac_lte_context_crc_status,
|
||||||
"%s Frame has CRC error problem (%s)",
|
"%s Frame has CRC error problem (%s)",
|
||||||
(p_mac_lte_info->direction == DIRECTION_UPLINK) ? "UL" : "DL",
|
(p_mac_lte_info->direction == DIRECTION_UPLINK) ? "UL" : "DL",
|
||||||
val_to_str_const(p_mac_lte_info->detailed_phy_info.dl_info.crc_status,
|
val_to_str_const(p_mac_lte_info->crcStatus,
|
||||||
crc_status_vals,
|
crc_status_vals,
|
||||||
"Unknown"));
|
"Unknown"));
|
||||||
write_pdu_label_and_info(pdu_ti, NULL, pinfo,
|
write_pdu_label_and_info(pdu_ti, NULL, pinfo,
|
||||||
"%s: <CRC %s> UEId=%u %s=%u ",
|
"%s: <CRC %s> UEId=%u %s=%u ",
|
||||||
(p_mac_lte_info->direction == DIRECTION_UPLINK) ? "UL" : "DL",
|
(p_mac_lte_info->direction == DIRECTION_UPLINK) ? "UL" : "DL",
|
||||||
val_to_str_const(p_mac_lte_info->detailed_phy_info.dl_info.crc_status,
|
val_to_str_const(p_mac_lte_info->crcStatus,
|
||||||
crc_status_vals,
|
crc_status_vals,
|
||||||
"Unknown"),
|
"Unknown"),
|
||||||
p_mac_lte_info->ueid,
|
p_mac_lte_info->ueid,
|
||||||
|
@ -5250,7 +5313,7 @@ int dissect_mac_lte(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* d
|
||||||
tap_info->isPredefinedData = p_mac_lte_info->isPredefinedData;
|
tap_info->isPredefinedData = p_mac_lte_info->isPredefinedData;
|
||||||
tap_info->isPHYRetx = (p_mac_lte_info->reTxCount >= 1);
|
tap_info->isPHYRetx = (p_mac_lte_info->reTxCount >= 1);
|
||||||
tap_info->crcStatusValid = p_mac_lte_info->crcStatusValid;
|
tap_info->crcStatusValid = p_mac_lte_info->crcStatusValid;
|
||||||
tap_info->crcStatus = p_mac_lte_info->detailed_phy_info.dl_info.crc_status;
|
tap_info->crcStatus = p_mac_lte_info->crcStatus;
|
||||||
tap_info->direction = p_mac_lte_info->direction;
|
tap_info->direction = p_mac_lte_info->direction;
|
||||||
|
|
||||||
tap_info->time = pinfo->fd->abs_ts;
|
tap_info->time = pinfo->fd->abs_ts;
|
||||||
|
@ -5279,7 +5342,7 @@ int dissect_mac_lte(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* d
|
||||||
/* IF CRC status failed, just do decode as raw bytes */
|
/* IF CRC status failed, just do decode as raw bytes */
|
||||||
if (!global_mac_lte_dissect_crc_failures &&
|
if (!global_mac_lte_dissect_crc_failures &&
|
||||||
(p_mac_lte_info->crcStatusValid &&
|
(p_mac_lte_info->crcStatusValid &&
|
||||||
(p_mac_lte_info->detailed_phy_info.dl_info.crc_status != crc_success))) {
|
(p_mac_lte_info->crcStatus != crc_success))) {
|
||||||
|
|
||||||
proto_tree_add_item(mac_lte_tree, hf_mac_lte_raw_pdu, tvb, offset, -1, ENC_NA);
|
proto_tree_add_item(mac_lte_tree, hf_mac_lte_raw_pdu, tvb, offset, -1, ENC_NA);
|
||||||
write_pdu_label_and_info(pdu_ti, NULL, pinfo, "Raw data (%u bytes)", tvb_length_remaining(tvb, offset));
|
write_pdu_label_and_info(pdu_ti, NULL, pinfo, "Raw data (%u bytes)", tvb_length_remaining(tvb, offset));
|
||||||
|
@ -5812,12 +5875,6 @@ void proto_register_mac_lte(void)
|
||||||
NULL, HFILL
|
NULL, HFILL
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ &hf_mac_lte_context_phy_dl_crc_status,
|
|
||||||
{ "CRC Status",
|
|
||||||
"mac-lte.dl-phy.crc-status", FT_UINT8, BASE_DEC, VALS(crc_status_vals), 0x0,
|
|
||||||
NULL, HFILL
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{ &hf_mac_lte_context_phy_dl_harq_id,
|
{ &hf_mac_lte_context_phy_dl_harq_id,
|
||||||
{ "HARQ Id",
|
{ "HARQ Id",
|
||||||
"mac-lte.dl-phy.harq-id", FT_UINT8, BASE_DEC, 0, 0x0,
|
"mac-lte.dl-phy.harq-id", FT_UINT8, BASE_DEC, 0, 0x0,
|
||||||
|
|
|
@ -124,15 +124,17 @@ typedef struct mac_lte_info
|
||||||
/* Length of DL PDU or UL grant size in bytes */
|
/* Length of DL PDU or UL grant size in bytes */
|
||||||
guint16 length;
|
guint16 length;
|
||||||
|
|
||||||
/* UL only. 0=newTx, 1=first-retx, etc */
|
/* 0=newTx, 1=first-retx, etc */
|
||||||
guint8 reTxCount;
|
guint8 reTxCount;
|
||||||
guint8 isPHICHNACK; /* FALSE=PDCCH retx grant, TRUE=PHICH NACK */
|
guint8 isPHICHNACK; /* FALSE=PDCCH retx grant, TRUE=PHICH NACK */
|
||||||
|
|
||||||
/* UL only. Indicates if the R10 extendedBSR-Sizes parameter is set */
|
/* UL only. Indicates if the R10 extendedBSR-Sizes parameter is set */
|
||||||
gboolean isExtendedBSRSizes;
|
gboolean isExtendedBSRSizes;
|
||||||
|
|
||||||
/* DL only. Status of CRC check */
|
/* Status of CRC check. For UE it is DL only. For eNodeB it is UL
|
||||||
|
only. For an analyzer, it is present for both DL and UL. */
|
||||||
gboolean crcStatusValid;
|
gboolean crcStatusValid;
|
||||||
|
mac_lte_crc_status crcStatus;
|
||||||
|
|
||||||
/* Carrier ID */
|
/* Carrier ID */
|
||||||
mac_lte_carrier_id carrierId;
|
mac_lte_carrier_id carrierId;
|
||||||
|
@ -161,7 +163,6 @@ typedef struct mac_lte_info
|
||||||
guint8 mcs_index;
|
guint8 mcs_index;
|
||||||
guint8 redundancy_version_index;
|
guint8 redundancy_version_index;
|
||||||
guint8 resource_block_length;
|
guint8 resource_block_length;
|
||||||
mac_lte_crc_status crc_status;
|
|
||||||
guint8 harq_id;
|
guint8 harq_id;
|
||||||
gboolean ndi;
|
gboolean ndi;
|
||||||
guint8 transport_block; /* 0..1 */
|
guint8 transport_block; /* 0..1 */
|
||||||
|
@ -267,6 +268,17 @@ int is_mac_lte_frame_retx(packet_info *pinfo, guint8 direction);
|
||||||
#define MAC_LTE_SEND_PREAMBLE_TAG 0x09
|
#define MAC_LTE_SEND_PREAMBLE_TAG 0x09
|
||||||
/* 2 bytes, RAPID value (1 byte) followed by RACH attempt number (1 byte) */
|
/* 2 bytes, RAPID value (1 byte) followed by RACH attempt number (1 byte) */
|
||||||
|
|
||||||
|
#define MAC_LTE_CARRIER_ID_TAG 0x0A
|
||||||
|
/* 1 byte */
|
||||||
|
|
||||||
|
#define MAC_LTE_PHY_TAG 0x0B
|
||||||
|
/* variable length, length (1 byte) then depending on direction
|
||||||
|
in UL: modulation type (1 byte), TBS index (1 byte), RB length (1 byte),
|
||||||
|
RB start (1 byte), HARQ id (1 byte), NDI (1 byte)
|
||||||
|
in DL: DCI format (1 byte), resource allocation type (1 byte), aggregation level (1 byte),
|
||||||
|
MCS index (1 byte), redundancy version (1 byte), resource block length (1 byte),
|
||||||
|
HARQ id (1 byte), NDI (1 byte), TB (1 byte), DL reTx (1 byte) */
|
||||||
|
|
||||||
/* MAC PDU. Following this tag comes the actual MAC PDU (there is no length, the PDU
|
/* MAC PDU. Following this tag comes the actual MAC PDU (there is no length, the PDU
|
||||||
continues until the end of the frame) */
|
continues until the end of the frame) */
|
||||||
#define MAC_LTE_PAYLOAD_TAG 0x01
|
#define MAC_LTE_PAYLOAD_TAG 0x01
|
||||||
|
|
Loading…
Reference in New Issue