From 03f9bd4091ef42e7dc42ef8fb275bc26cd619d5a Mon Sep 17 00:00:00 2001 From: Pascal Quantin Date: Wed, 2 Aug 2017 18:17:19 +0200 Subject: MAC LTE: upgrade dissector to v14.3.0 Change-Id: Icd3b12b7d89df2050b9365b9b173949a7cdc455a Reviewed-on: https://code.wireshark.org/review/22928 Petri-Dish: Pascal Quantin Tested-by: Petri Dish Buildbot Reviewed-by: Pascal Quantin --- epan/dissectors/packet-mac-lte.c | 432 ++++++++++++++++++++++++++++++++++----- 1 file changed, 386 insertions(+), 46 deletions(-) (limited to 'epan/dissectors/packet-mac-lte.c') diff --git a/epan/dissectors/packet-mac-lte.c b/epan/dissectors/packet-mac-lte.c index f6339e302e..857c5d967e 100644 --- a/epan/dissectors/packet-mac-lte.c +++ b/epan/dissectors/packet-mac-lte.c @@ -35,7 +35,7 @@ void proto_reg_handoff_mac_lte(void); /* Described in: * 3GPP TS 36.321 Evolved Universal Terrestrial Radio Access (E-UTRA) - * Medium Access Control (MAC) protocol specification v13.5.0 + * Medium Access Control (MAC) protocol specification v14.3.0 */ @@ -143,6 +143,7 @@ static int hf_mac_lte_slsch_version = -1; static int hf_mac_lte_slsch_reserved = -1; static int hf_mac_lte_slsch_src_l2_id = -1; static int hf_mac_lte_slsch_dst_l2_id = -1; +static int hf_mac_lte_slsch_dst_l2_id2 = -1; static int hf_mac_lte_slsch_reserved2 = -1; static int hf_mac_lte_slsch_extended = -1; static int hf_mac_lte_slsch_lcid = -1; @@ -308,9 +309,28 @@ static int hf_mac_lte_control_sidelink_bsr_lcg_id_even = -1; static int hf_mac_lte_control_sidelink_bsr_buffer_size_even = -1; static int hf_mac_lte_control_sidelink_reserved = -1; static int hf_mac_lte_control_data_vol_power_headroom = -1; -static int hf_mac_lte_data_vol_power_headroom_reserved = -1; -static int hf_mac_lte_data_vol_power_headroom_level = -1; -static int hf_mac_lte_data_vol_power_headroom_data_vol = -1; +static int hf_mac_lte_control_data_vol_power_headroom_reserved = -1; +static int hf_mac_lte_control_data_vol_power_headroom_level = -1; +static int hf_mac_lte_control_data_vol_power_headroom_data_vol = -1; +static int hf_mac_lte_control_recommended_bit_rate = -1; +static int hf_mac_lte_control_recommended_bit_rate_lcid = -1; +static int hf_mac_lte_control_recommended_bit_rate_dir = -1; +static int hf_mac_lte_control_recommended_bit_rate_bit_rate = -1; +static int hf_mac_lte_control_recommended_bit_rate_reserved = -1; +static int hf_mac_lte_control_recommended_bit_rate_query = -1; +static int hf_mac_lte_control_recommended_bit_rate_query_lcid = -1; +static int hf_mac_lte_control_recommended_bit_rate_query_dir = -1; +static int hf_mac_lte_control_recommended_bit_rate_query_bit_rate = -1; +static int hf_mac_lte_control_recommended_bit_rate_query_reserved = -1; +static int hf_mac_lte_control_activation_deactivation_csi_rs = -1; +static int hf_mac_lte_control_activation_deactivation_csi_rs_a8 = -1; +static int hf_mac_lte_control_activation_deactivation_csi_rs_a7 = -1; +static int hf_mac_lte_control_activation_deactivation_csi_rs_a6 = -1; +static int hf_mac_lte_control_activation_deactivation_csi_rs_a5 = -1; +static int hf_mac_lte_control_activation_deactivation_csi_rs_a4 = -1; +static int hf_mac_lte_control_activation_deactivation_csi_rs_a3 = -1; +static int hf_mac_lte_control_activation_deactivation_csi_rs_a2 = -1; +static int hf_mac_lte_control_activation_deactivation_csi_rs_a1 = -1; static int hf_mac_lte_dl_harq_resend_original_frame = -1; static int hf_mac_lte_dl_harq_resend_time_since_previous_frame = -1; @@ -383,6 +403,9 @@ static int ett_mac_lte_drx_config = -1; static int ett_mac_lte_drx_state = -1; static int ett_mac_lte_sidelink_bsr = -1; static int ett_mac_lte_data_vol_power_headroom = -1; +static int ett_mac_lte_recommended_bit_rate = -1; +static int ett_mac_lte_recommended_bit_rate_query = -1; +static int ett_mac_lte_activation_deactivation_csi_rs = -1; static expert_field ei_mac_lte_context_rnti_type = EI_INIT; static expert_field ei_mac_lte_lcid_unexpected = EI_INIT; @@ -551,6 +574,9 @@ static const true_false_string mac_lte_scell_status_vals = { "Deactivated" }; +#define ACTIVATION_DEACTIVATION_CSI_RS_LCID 0x15 +#define RECOMMENDED_BIT_RATE_LCID 0x16 +#define SC_PTM_STOP_INDICATION_LCID 0x17 #define ACTIVATION_DEACTIVATION_4_BYTES_LCID 0x18 #define SC_MCCH_SC_MTCH_LCID 0x19 #define LONG_DRX_COMMAND_LCID 0x1a @@ -562,30 +588,35 @@ static const true_false_string mac_lte_scell_status_vals = { static const value_string dlsch_lcid_vals[] = { - { 0, "CCCH"}, - { 1, "1"}, - { 2, "2"}, - { 3, "3"}, - { 4, "4"}, - { 5, "5"}, - { 6, "6"}, - { 7, "7"}, - { 8, "8"}, - { 9, "9"}, - { 10, "10"}, - { ACTIVATION_DEACTIVATION_4_BYTES_LCID , "Activation/Deactivation"}, - { SC_MCCH_SC_MTCH_LCID , "SC-MCCH/SC-MTCH"}, - { LONG_DRX_COMMAND_LCID , "Long DRX Command"}, - { ACTIVATION_DEACTIVATION_LCID , "Activation/Deactivation"}, - { UE_CONTENTION_RESOLUTION_IDENTITY_LCID, "UE Contention Resolution Identity"}, - { TIMING_ADVANCE_LCID , "Timing Advance"}, - { DRX_COMMAND_LCID , "DRX Command"}, - { PADDING_LCID , "Padding" }, + { 0, "CCCH"}, + { 1, "1"}, + { 2, "2"}, + { 3, "3"}, + { 4, "4"}, + { 5, "5"}, + { 6, "6"}, + { 7, "7"}, + { 8, "8"}, + { 9, "9"}, + { 10, "10"}, + { ACTIVATION_DEACTIVATION_CSI_RS_LCID, "Activation/Deactivation of CSI-RS"}, + { RECOMMENDED_BIT_RATE_LCID, "Recommended Bit Rate"}, + { SC_PTM_STOP_INDICATION_LCID, "SC-PTM Stop Indication"}, + { ACTIVATION_DEACTIVATION_4_BYTES_LCID, "Activation/Deactivation"}, + { SC_MCCH_SC_MTCH_LCID, "SC-MCCH/SC-MTCH"}, + { LONG_DRX_COMMAND_LCID, "Long DRX Command"}, + { ACTIVATION_DEACTIVATION_LCID, "Activation/Deactivation"}, + { UE_CONTENTION_RESOLUTION_IDENTITY_LCID, "UE Contention Resolution Identity"}, + { TIMING_ADVANCE_LCID, "Timing Advance"}, + { DRX_COMMAND_LCID, "DRX Command"}, + { PADDING_LCID, "Padding" }, { 0, NULL } }; -#define TRUNCATED_SIDELINK_BSR 0x16 -#define SIDELINK_BSR 0x17 +#define RECOMMENDED_BIT_RATE_QUERY_LCID 0x14 +#define SPS_CONFIRMATION_LCID 0x15 +#define TRUNCATED_SIDELINK_BSR_LCID 0x16 +#define SIDELINK_BSR_LCID 0x17 #define DUAL_CONN_POWER_HEADROOM_REPORT_LCID 0x18 #define EXTENDED_POWER_HEADROOM_REPORT_LCID 0x19 #define POWER_HEADROOM_REPORT_LCID 0x1a @@ -609,8 +640,10 @@ static const value_string ulsch_lcid_vals[] = { 10, "10"}, { 11, "CCCH (Category 0)"}, { 12, "CCCH (frequency hopping for unicast)"}, - { TRUNCATED_SIDELINK_BSR, "Truncated Sidelink BSR"}, - { SIDELINK_BSR, "Sidelink BSR"}, + { RECOMMENDED_BIT_RATE_QUERY_LCID, "Recommended Bit Rate Query"}, + { SPS_CONFIRMATION_LCID, "SPS Confirmation"}, + { TRUNCATED_SIDELINK_BSR_LCID, "Truncated Sidelink BSR"}, + { SIDELINK_BSR_LCID, "Sidelink BSR"}, { DUAL_CONN_POWER_HEADROOM_REPORT_LCID, "Dual Connectivity Power Headroom Report"}, { EXTENDED_POWER_HEADROOM_REPORT_LCID, "Extended Power Headroom Report"}, { POWER_HEADROOM_REPORT_LCID, "Power Headroom Report"}, @@ -1271,6 +1304,75 @@ static const value_string data_vol_power_headroom_data_vol_vals[] = { 0, NULL } }; +static const value_string bit_rate_vals[] = +{ + { 0, "no bit rate recommendation"}, + { 1, "0 kbit/s"}, + { 2, "8 kbit/s"}, + { 3, "10 kbit/s"}, + { 4, "12 kbit/s"}, + { 5, "16 kbit/s"}, + { 6, "20 kbit/s"}, + { 7, "24 kbit/s"}, + { 8, "28 kbit/s"}, + { 9, "32 kbit/s"}, + { 10, "36 kbit/s"}, + { 11, "40 kbit/s"}, + { 12, "48 kbit/s"}, + { 13, "56 kbit/s"}, + { 14, "72 kbit/s"}, + { 15, "88 kbit/s"}, + { 16, "104 kbit/s"}, + { 17, "120 kbit/s"}, + { 18, "140 kbit/s"}, + { 19, "160 kbit/s"}, + { 20, "180 kbit/s"}, + { 21, "200 kbit/s"}, + { 22, "220 kbit/s"}, + { 23, "240 kbit/s"}, + { 24, "260 kbit/s"}, + { 25, "280 kbit/s"}, + { 26, "300 kbit/s"}, + { 27, "350 kbit/s"}, + { 28, "400 kbit/s"}, + { 29, "450 kbit/s"}, + { 30, "500 kbit/s"}, + { 31, "600 kbit/s"}, + { 32, "700 kbit/s"}, + { 33, "800 kbit/s"}, + { 34, "900 kbit/s"}, + { 35, "1000 kbit/s"}, + { 36, "1100 kbit/s"}, + { 37, "1200 kbit/s"}, + { 38, "1300 kbit/s"}, + { 39, "1400 kbit/s"}, + { 40, "1500 kbit/s"}, + { 41, "1750 kbit/s"}, + { 42, "2000 kbit/s"}, + { 43, "2250 kbit/s"}, + { 44, "2500 kbit/s"}, + { 45, "2750 kbit/s"}, + { 46, "3000 kbit/s"}, + { 47, "3500 kbit/s"}, + { 48, "4000 kbit/s"}, + { 49, "4500 kbit/s"}, + { 50, "5000 kbit/s"}, + { 51, "5500 kbit/s"}, + { 52, "6000 kbit/s"}, + { 53, "6500 kbit/s"}, + { 54, "7000 kbit/s"}, + { 55, "7500 kbit/s"}, + { 56, "8000 kbit/s"}, + { 0, NULL } +}; +static value_string_ext bit_rate_vals_ext = VALUE_STRING_EXT_INIT(bit_rate_vals); + +static const true_false_string activated_deactivated_vals = +{ + "Activated", + "Deactivated" +}; + static const value_string header_only_vals[] = { { 0, "MAC PDU Headers and body present"}, @@ -3326,6 +3428,8 @@ static int is_fixed_sized_control_element(guint8 lcid, guint8 direction) if (direction == DIRECTION_UPLINK) { /* Uplink */ switch (lcid) { + case RECOMMENDED_BIT_RATE_QUERY_LCID: + case SPS_CONFIRMATION_LCID: case POWER_HEADROOM_REPORT_LCID: case CRNTI_LCID: case TRUNCATED_BSR_LCID: @@ -3340,12 +3444,14 @@ static int is_fixed_sized_control_element(guint8 lcid, guint8 direction) else { /* Assume Downlink */ switch (lcid) { + case RECOMMENDED_BIT_RATE_LCID: + case SC_PTM_STOP_INDICATION_LCID: case ACTIVATION_DEACTIVATION_4_BYTES_LCID: + case LONG_DRX_COMMAND_LCID: case ACTIVATION_DEACTIVATION_LCID: case UE_CONTENTION_RESOLUTION_IDENTITY_LCID: case TIMING_ADVANCE_LCID: case DRX_COMMAND_LCID: - case LONG_DRX_COMMAND_LCID: return TRUE; default: @@ -4628,6 +4734,76 @@ static void dissect_ulsch_or_dlsch(tvbuff_t *tvb, packet_info *pinfo, proto_tree /****************************/ /* DL-SCH Control PDUs */ switch (lcids[n]) { + case ACTIVATION_DEACTIVATION_CSI_RS_LCID: + { + proto_item *ad_csi_rs_ti; + proto_tree *ad_csi_rs_tree; + gint32 i; + + if (pdu_lengths[n] == -1) { + /* Control Element size is the remaining PDU */ + pdu_lengths[n] = (gint32)tvb_reported_length_remaining(tvb, offset); + } + /* Create AD CSR-RS root */ + ad_csi_rs_ti = proto_tree_add_string_format(tree, + hf_mac_lte_control_activation_deactivation_csi_rs, + tvb, offset, pdu_lengths[n], + "", + "Activation/Deactivation of CSI-RS"); + ad_csi_rs_tree = proto_item_add_subtree(ad_csi_rs_ti, ett_mac_lte_activation_deactivation_csi_rs); + + for (i = 0; i < pdu_lengths[n]; i++) { + proto_tree_add_item(ad_csi_rs_tree, hf_mac_lte_control_activation_deactivation_csi_rs_a8, + tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(ad_csi_rs_tree, hf_mac_lte_control_activation_deactivation_csi_rs_a7, + tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(ad_csi_rs_tree, hf_mac_lte_control_activation_deactivation_csi_rs_a6, + tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(ad_csi_rs_tree, hf_mac_lte_control_activation_deactivation_csi_rs_a5, + tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(ad_csi_rs_tree, hf_mac_lte_control_activation_deactivation_csi_rs_a4, + tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(ad_csi_rs_tree, hf_mac_lte_control_activation_deactivation_csi_rs_a3, + tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(ad_csi_rs_tree, hf_mac_lte_control_activation_deactivation_csi_rs_a2, + tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(ad_csi_rs_tree, hf_mac_lte_control_activation_deactivation_csi_rs_a1, + tvb, offset, 1, ENC_BIG_ENDIAN); + offset += 1; + } + } + break; + case RECOMMENDED_BIT_RATE_LCID: + { + proto_item *br_ti; + proto_tree *br_tree; + proto_item *ti; + guint32 reserved; + + /* Create BR root */ + br_ti = proto_tree_add_string_format(tree, + hf_mac_lte_control_recommended_bit_rate, + tvb, offset, 2, + "", + "Recommended Bit Rate"); + br_tree = proto_item_add_subtree(br_ti, ett_mac_lte_recommended_bit_rate); + + proto_tree_add_item(br_tree, hf_mac_lte_control_recommended_bit_rate_lcid, + tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(br_tree, hf_mac_lte_control_recommended_bit_rate_dir, + tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(br_tree, hf_mac_lte_control_recommended_bit_rate_bit_rate, + tvb, offset, 2, ENC_BIG_ENDIAN); + offset += 1; + ti = proto_tree_add_item_ret_uint(br_tree, hf_mac_lte_control_recommended_bit_rate_reserved, + tvb, offset, 1, ENC_BIG_ENDIAN, &reserved); + if (reserved != 0) { + expert_add_info_format(pinfo, ti, &ei_mac_lte_reserved_not_zero, + "Recommended Bit Rate Reserved bits not zero"); + } + offset += 1; + } + break; case ACTIVATION_DEACTIVATION_LCID: case ACTIVATION_DEACTIVATION_4_BYTES_LCID: { @@ -4639,7 +4815,8 @@ static void dissect_ulsch_or_dlsch(tvbuff_t *tvb, packet_info *pinfo, proto_tree /* Create AD root */ ad_ti = proto_tree_add_string_format(tree, hf_mac_lte_control_activation_deactivation, - tvb, offset, 1, + tvb, offset, + (lcids[n] == ACTIVATION_DEACTIVATION_4_BYTES_LCID) ? 4 : 1, "", "Activation/Deactivation"); ad_tree = proto_item_add_subtree(ad_ti, ett_mac_lte_activation_deactivation); @@ -4878,8 +5055,39 @@ static void dissect_ulsch_or_dlsch(tvbuff_t *tvb, packet_info *pinfo, proto_tree /**********************************/ /* UL-SCH Control PDUs */ switch (lcids[n]) { - case TRUNCATED_SIDELINK_BSR: - case SIDELINK_BSR: + case RECOMMENDED_BIT_RATE_QUERY_LCID: + { + proto_item *br_ti; + proto_tree *br_tree; + proto_item *ti; + guint32 reserved; + + /* Create BR root */ + br_ti = proto_tree_add_string_format(tree, + hf_mac_lte_control_recommended_bit_rate_query, + tvb, offset, 2, + "", + "Recommended Bit Rate Query"); + br_tree = proto_item_add_subtree(br_ti, ett_mac_lte_recommended_bit_rate_query); + + proto_tree_add_item(br_tree, hf_mac_lte_control_recommended_bit_rate_query_lcid, + tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(br_tree, hf_mac_lte_control_recommended_bit_rate_query_dir, + tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(br_tree, hf_mac_lte_control_recommended_bit_rate_query_bit_rate, + tvb, offset, 2, ENC_BIG_ENDIAN); + offset += 1; + ti = proto_tree_add_item_ret_uint(br_tree, hf_mac_lte_control_recommended_bit_rate_query_reserved, + tvb, offset, 1, ENC_BIG_ENDIAN, &reserved); + if (reserved != 0) { + expert_add_info_format(pinfo, ti, &ei_mac_lte_reserved_not_zero, + "Recommended Bit Rate Reserved bits not zero"); + } + offset += 1; + } + break; + case TRUNCATED_SIDELINK_BSR_LCID: + case SIDELINK_BSR_LCID: { proto_item *slbsr_ti; proto_tree *slbsr_tree; @@ -4890,7 +5098,7 @@ static void dissect_ulsch_or_dlsch(tvbuff_t *tvb, packet_info *pinfo, proto_tree pdu_lengths[n] = (gint32)tvb_reported_length_remaining(tvb, curr_offset); } /* Create SLBSR root */ - if (lcids[n] == SIDELINK_BSR) { + if (lcids[n] == SIDELINK_BSR_LCID) { slbsr_ti = proto_tree_add_string_format(tree, hf_mac_lte_control_sidelink_bsr, tvb, curr_offset, pdu_lengths[n], @@ -4930,7 +5138,7 @@ static void dissect_ulsch_or_dlsch(tvbuff_t *tvb, packet_info *pinfo, proto_tree it = proto_tree_add_item_ret_uint(slbsr_tree, hf_mac_lte_control_sidelink_reserved, tvb, curr_offset, 1, ENC_BIG_ENDIAN, &reserved); if (reserved) { - if (lcids[n] == SIDELINK_BSR) { + if (lcids[n] == SIDELINK_BSR_LCID) { expert_add_info_format(pinfo, it, &ei_mac_lte_reserved_not_zero, "Sidelink BSR Reserved bits not zero"); } else { @@ -5621,14 +5829,14 @@ static void dissect_ulsch_or_dlsch(tvbuff_t *tvb, packet_info *pinfo, proto_tree "", "Data Volume and Power Headroom Report"); dpr_tree = proto_item_add_subtree(dpr_ti, ett_mac_lte_data_vol_power_headroom); - dpr_ti = proto_tree_add_item_ret_uint(dpr_tree, hf_mac_lte_data_vol_power_headroom_reserved, + dpr_ti = proto_tree_add_item_ret_uint(dpr_tree, hf_mac_lte_control_data_vol_power_headroom_reserved, tvb, offset, 1, ENC_BIG_ENDIAN, &reserved); if (reserved) { expert_add_info_format(pinfo, dpr_ti, &ei_mac_lte_reserved_not_zero, "Data Volume and Power Headroom Report Reserved bits not zero"); } - proto_tree_add_item(dpr_tree, hf_mac_lte_data_vol_power_headroom_level, tvb, offset, 1, ENC_BIG_ENDIAN); - proto_tree_add_item(dpr_tree, hf_mac_lte_data_vol_power_headroom_data_vol, tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(dpr_tree, hf_mac_lte_control_data_vol_power_headroom_level, tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(dpr_tree, hf_mac_lte_control_data_vol_power_headroom_data_vol, tvb, offset, 1, ENC_BIG_ENDIAN); offset++; data_length--; if (pdu_lengths[n] != -1) { @@ -6334,7 +6542,7 @@ static void dissect_slsch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint8 number_of_padding_subheaders = 0; gboolean expecting_body_data = FALSE; gboolean is_truncated; - guint32 reserved; + guint32 reserved, version; write_pdu_label_and_info(pdu_ti, NULL, pinfo, "%s: (SFN=%-4u, SF=%u) UEId=%-3u ", @@ -6358,8 +6566,8 @@ static void dissect_slsch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, "Sub-header (SL-SCH)"); pdu_subheader_tree = proto_item_add_subtree(pdu_subheader_ti, ett_mac_lte_slsch_subheader); - proto_tree_add_item(pdu_subheader_tree, hf_mac_lte_slsch_version, - tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item_ret_uint(pdu_subheader_tree, hf_mac_lte_slsch_version, + tvb, offset, 1, ENC_BIG_ENDIAN, &version); ti = proto_tree_add_item_ret_uint(pdu_subheader_tree, hf_mac_lte_slsch_reserved, tvb, offset, 1, ENC_BIG_ENDIAN, &reserved); offset++; @@ -6370,9 +6578,15 @@ static void dissect_slsch(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree_add_item(pdu_subheader_tree, hf_mac_lte_slsch_src_l2_id, tvb, offset, 3, ENC_BIG_ENDIAN); offset += 3; - proto_tree_add_item(pdu_subheader_tree, hf_mac_lte_slsch_dst_l2_id, - tvb, offset, 2, ENC_BIG_ENDIAN); - offset += 2; + if (version == 3) { + proto_tree_add_item(pdu_subheader_tree, hf_mac_lte_slsch_dst_l2_id2, + tvb, offset, 3, ENC_BIG_ENDIAN); + offset += 3; + } else { + proto_tree_add_item(pdu_subheader_tree, hf_mac_lte_slsch_dst_l2_id, + tvb, offset, 2, ENC_BIG_ENDIAN); + offset += 2; + } /* Dissect each sub-header */ do { @@ -7895,6 +8109,12 @@ void proto_register_mac_lte(void) NULL, HFILL } }, + { &hf_mac_lte_slsch_dst_l2_id2, + { "Destination Layer-2 ID", + "mac-lte.slsch.dst-l2-id", FT_UINT24, BASE_HEX, NULL, 0x0, + NULL, HFILL + } + }, { &hf_mac_lte_slsch_reserved2, { "Reserved bits", "mac-lte.slsch.reserved", FT_UINT8, BASE_HEX, NULL, 0xc0, @@ -8856,25 +9076,142 @@ void proto_register_mac_lte(void) NULL, HFILL } }, - { &hf_mac_lte_data_vol_power_headroom_reserved, + { &hf_mac_lte_control_data_vol_power_headroom_reserved, { "Reserved", "mac-lte.control.data-vol-power-headroom.reserved", FT_UINT8, BASE_DEC, NULL, 0xc0, "Reserved bits, should be 0", HFILL } }, - { &hf_mac_lte_data_vol_power_headroom_level, + { &hf_mac_lte_control_data_vol_power_headroom_level, { "Power Headroom Level", "mac-lte.control.data-vol-power-headroom.level", FT_UINT8, BASE_DEC, VALS(data_vol_power_headroom_level_vals), 0x30, NULL, HFILL } }, - { &hf_mac_lte_data_vol_power_headroom_data_vol, + { &hf_mac_lte_control_data_vol_power_headroom_data_vol, { "Data Volume", "mac-lte.control.data-vol-power-headroom.data-vol", FT_UINT8, BASE_DEC, VALS(data_vol_power_headroom_data_vol_vals), 0x0f, NULL, HFILL } }, + { &hf_mac_lte_control_recommended_bit_rate, + { "Recommended Bit Rate", + "mac-lte.control.recommended-bit-rate", FT_STRING, BASE_NONE, + NULL, 0x0, NULL, HFILL + } + }, + { &hf_mac_lte_control_recommended_bit_rate_lcid, + { "LCID", + "mac-lte.control.recommended-bit-rate.lcid", FT_UINT8, BASE_DEC, + NULL, 0xf0, NULL, HFILL + } + }, + { &hf_mac_lte_control_recommended_bit_rate_dir, + { "Direction", + "mac-lte.control.recommended-bit-rate.dir", FT_BOOLEAN, 8, + TFS(&tfs_uplink_downlink), 0x08, NULL, HFILL + } + }, + { &hf_mac_lte_control_recommended_bit_rate_bit_rate, + { "Bit Rate", + "mac-lte.control.recommended-bit-rate.bit-rate", FT_UINT16, BASE_DEC|BASE_EXT_STRING, + &bit_rate_vals_ext, 0x07e0, NULL, HFILL + } + }, + { &hf_mac_lte_control_recommended_bit_rate_reserved, + { "Reserved", + "mac-lte.control.recommended-bit-rate.reserved", FT_UINT8, BASE_HEX, + NULL, 0x1f, "Reserved bits, should be 0", HFILL + } + }, + + { &hf_mac_lte_control_recommended_bit_rate_query, + { "Recommended Bit Rate Query", + "mac-lte.control.recommended-bit-rate-query", FT_STRING, BASE_NONE, + NULL, 0x0, NULL, HFILL + } + }, + { &hf_mac_lte_control_recommended_bit_rate_query_lcid, + { "LCID", + "mac-lte.control.recommended-bit-rate-query.lcid", FT_UINT8, BASE_DEC, + NULL, 0xf0, NULL, HFILL + } + }, + { &hf_mac_lte_control_recommended_bit_rate_query_dir, + { "Direction", + "mac-lte.control.recommended-bit-rate-query.dir", FT_BOOLEAN, 8, + TFS(&tfs_uplink_downlink), 0x08, NULL, HFILL + } + }, + { &hf_mac_lte_control_recommended_bit_rate_query_bit_rate, + { "Bit Rate", + "mac-lte.control.recommended-bit-rate-query.bit-rate", FT_UINT16, BASE_DEC|BASE_EXT_STRING, + &bit_rate_vals_ext, 0x07e0, NULL, HFILL + } + }, + { &hf_mac_lte_control_recommended_bit_rate_query_reserved, + { "Reserved", + "mac-lte.control.recommended-bit-rate-query.reserved", FT_UINT8, BASE_HEX, + NULL, 0x1f, "Reserved bits, should be 0", HFILL + } + }, + + { &hf_mac_lte_control_activation_deactivation_csi_rs, + { "Activation/Deactivation of CSI-RS", + "mac-lte.control.activation-deactivation-csi-rs", FT_STRING, BASE_NONE, + NULL, 0x0, NULL, HFILL + } + }, + { &hf_mac_lte_control_activation_deactivation_csi_rs_a8, + { "CSI-RS Resource Index 8", + "mac-lte.control.activation-deactivation-csi-rs.a8", FT_BOOLEAN, 8, + TFS(&activated_deactivated_vals), 0x80, NULL, HFILL + } + }, + { &hf_mac_lte_control_activation_deactivation_csi_rs_a7, + { "CSI-RS Resource Index 7", + "mac-lte.control.activation-deactivation-csi-rs.a7", FT_BOOLEAN, 8, + TFS(&activated_deactivated_vals), 0x40, NULL, HFILL + } + }, + { &hf_mac_lte_control_activation_deactivation_csi_rs_a6, + { "CSI-RS Resource Index 6", + "mac-lte.control.activation-deactivation-csi-rs.a6", FT_BOOLEAN, 8, + TFS(&activated_deactivated_vals), 0x20, NULL, HFILL + } + }, + { &hf_mac_lte_control_activation_deactivation_csi_rs_a5, + { "CSI-RS Resource Index 5", + "mac-lte.control.activation-deactivation-csi-rs.a5", FT_BOOLEAN, 8, + TFS(&activated_deactivated_vals), 0x10, NULL, HFILL + } + }, + { &hf_mac_lte_control_activation_deactivation_csi_rs_a4, + { "CSI-RS Resource Index 4", + "mac-lte.control.activation-deactivation-csi-rs.a4", FT_BOOLEAN, 8, + TFS(&activated_deactivated_vals), 0x08, NULL, HFILL + } + }, + { &hf_mac_lte_control_activation_deactivation_csi_rs_a3, + { "CSI-RS Resource Index 3", + "mac-lte.control.activation-deactivation-csi-rs.a3", FT_BOOLEAN, 8, + TFS(&activated_deactivated_vals), 0x04, NULL, HFILL + } + }, + { &hf_mac_lte_control_activation_deactivation_csi_rs_a2, + { "CSI-RS Resource Index 2", + "mac-lte.control.activation-deactivation-csi-rs.a2", FT_BOOLEAN, 8, + TFS(&activated_deactivated_vals), 0x02, NULL, HFILL + } + }, + { &hf_mac_lte_control_activation_deactivation_csi_rs_a1, + { "CSI-RS Resource Index 1", + "mac-lte.control.activation-deactivation-csi-rs.a1", FT_BOOLEAN, 8, + TFS(&activated_deactivated_vals), 0x01, NULL, HFILL + } + }, + /* Generated fields */ { &hf_mac_lte_dl_harq_resend_original_frame, { "Frame with previous tx", @@ -9106,7 +9443,10 @@ void proto_register_mac_lte(void) &ett_mac_lte_drx_config, &ett_mac_lte_drx_state, &ett_mac_lte_sidelink_bsr, - &ett_mac_lte_data_vol_power_headroom + &ett_mac_lte_data_vol_power_headroom, + &ett_mac_lte_recommended_bit_rate, + &ett_mac_lte_recommended_bit_rate_query, + &ett_mac_lte_activation_deactivation_csi_rs }; static ei_register_info ei[] = { -- cgit v1.2.3