[docsis->mdd] Add support for TLV 1.7
authorAdrian Simionov <daniel.simionov@gmail.com>
Sun, 27 Mar 2016 13:19:17 +0000 (00:19 +1100)
committerAlexis La Goutte <alexis.lagoutte@gmail.com>
Mon, 28 Mar 2016 10:17:11 +0000 (10:17 +0000)
Change-Id: I9e67ccee06c93c25c766fae8bdd8a9890416655f
Reviewed-on: https://code.wireshark.org/review/14648
Reviewed-by: Michael Mann <mmann78@netscape.net>
Petri-Dish: Michael Mann <mmann78@netscape.net>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
plugins/docsis/packet-mdd.c

index 2783df2390333e5ba49ea475acdd6ca12e7e1855..afa1e917648cc07b75168abffc979b2771a4bf63 100644 (file)
@@ -50,6 +50,7 @@
 #define DOWNSTREAM_ACTIVE_CHANNEL_LIST_PRIMARY_CAPABLE 4
 #define DOWNSTREAM_ACTIVE_CHANNEL_LIST_CM_STATUS_EVENT_ENABLE_BITMASK 5
 #define DOWNSTREAM_ACTIVE_CHANNEL_LIST_MAP_UCD_TRANSPORT_INDICATOR 6
+#define DOWNSTREAM_ACTIVE_CHANNEL_LIST_OFDM_PLC_PARAMETERS 7
 
 /*Mac Domain Downstream Service Group*/
 #define MAC_DOMAIN_DOWNSTREAM_SERVICE_GROUP_MD_DS_SG_IDENTIFIER 1
 #define DSG_DA_TO_DSID_ASSOCIATION_DA 1
 #define DSG_DA_TO_DSID_ASSOCIATION_DSID 2
 
+/* Define Tukey raised cosine window */
+#define TUKEY_0TS 0
+#define TUKEY_64TS 1
+#define TUKEY_128TS 2
+#define TUKEY_192TS 3
+#define TUKEY_256TS 4
+
+/* Define Cyclic prefix */
+#define CYCLIC_PREFIX_192_TS 0
+#define CYCLIC_PREFIX_256_TS 1
+#define CYCLIC_PREFIX_512_TS 2
+#define CYCLIC_PREFIX_768_TS 3
+#define CYCLIC_PREFIX_1024_TS 4
+
+/* Define Sub carrier spacing */
+#define SPACING_25KHZ 0
+#define SPACING_50KHZ 1
+
 void proto_register_docsis_mdd(void);
 void proto_reg_handoff_docsis_mdd(void);
 
@@ -163,6 +182,30 @@ static const value_string map_ucd_transport_indicator_vals[] = {
   {0, NULL}
 };
 
+static const value_string tukey_raised_cosine_vals[] = {
+  {TUKEY_0TS,   "0 microseconds (0 * Ts)"},
+  {TUKEY_64TS,  "0.3125 microseconds (64 * Ts)"},
+  {TUKEY_128TS, "0.625 microseconds (128 * Ts)"},
+  {TUKEY_192TS, "0.9375 microseconds (192 * Ts)"},
+  {TUKEY_256TS, "1.25 microseconds (256 * Ts)"},
+  {0, NULL}
+};
+
+static const value_string cyclic_prefix_vals[] = {
+  {CYCLIC_PREFIX_192_TS,  "0.9375 microseconds (192 * Ts)"},
+  {CYCLIC_PREFIX_256_TS,  "1.25 microseconds (256 * Ts)"},
+  {CYCLIC_PREFIX_512_TS,  "2.5 microseconds (512 * Ts) 3"},
+  {CYCLIC_PREFIX_768_TS,  "3.75 microseconds (768 * Ts)"},
+  {CYCLIC_PREFIX_1024_TS, "5 microseconds (1024 * Ts)"},
+  {0, NULL}
+};
+
+static const value_string spacing_vals[] = {
+  {SPACING_25KHZ, "25Khz"},
+  {SPACING_50KHZ, "50Khz"},
+  {0, NULL}
+};
+
 static const value_string mdd_tlv_vals[] = {
   {DOWNSTREAM_ACTIVE_CHANNEL_LIST,                       "Downstream Active Channel List"},
   {MAC_DOMAIN_DOWNSTREAM_SERVICE_GROUP,                  "Mac Domain Downstream Service Group"},
@@ -262,11 +305,13 @@ static int hf_docsis_mdd_cm_status_event_enable_bitmask_mdd_timeout = -1;
 static int hf_docsis_mdd_cm_status_event_enable_bitmask_qam_fec_lock_failure = -1;
 static int hf_docsis_mdd_cm_status_event_enable_bitmask_mdd_recovery = -1;
 static int hf_docsis_mdd_cm_status_event_enable_bitmask_qam_fec_lock_recovery = -1;
+static int hf_docsis_mdd_ofdm_plc_parameters_tukey_raised_cosine_window = -1;
+static int hf_docsis_mdd_ofdm_plc_parameters_cyclic_prefix = -1;
+static int hf_docsis_mdd_ofdm_plc_parameters_sub_carrier_spacing = -1;
 static int hf_docsis_mdd_cm_status_event_enable_bitmask_t4_timeout = -1;
 static int hf_docsis_mdd_cm_status_event_enable_bitmask_t3_retries_exceeded = -1;
 static int hf_docsis_mdd_cm_status_event_enable_bitmask_successful_ranging_after_t3_retries_exceeded = -1;
 
-
 static int hf_docsis_mdd_mac_domain_downstream_service_group_md_ds_sg_identifier = -1;
 static int hf_docsis_mdd_mac_domain_downstream_service_group_channel_id = -1;
 
@@ -382,6 +427,12 @@ dissect_mdd (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void* data
                   case DOWNSTREAM_ACTIVE_CHANNEL_LIST_MAP_UCD_TRANSPORT_INDICATOR:
                     proto_tree_add_item (tlv_tree, hf_docsis_mdd_downstream_active_channel_list_map_ucd_transport_indicator, tvb, subpos + 2 , 1, ENC_BIG_ENDIAN);
                     break;
+                  case DOWNSTREAM_ACTIVE_CHANNEL_LIST_OFDM_PLC_PARAMETERS:
+                    tlv_sub_tree = proto_tree_add_subtree(tlv_tree, tvb, subpos + 2, 1, ett_sub_tlv, NULL, "OFDM PLC Parameters");
+                    proto_tree_add_item (tlv_sub_tree, hf_docsis_mdd_ofdm_plc_parameters_tukey_raised_cosine_window, tvb, subpos + 2 , 1, ENC_BIG_ENDIAN);
+                    proto_tree_add_item (tlv_sub_tree, hf_docsis_mdd_ofdm_plc_parameters_cyclic_prefix, tvb, subpos + 2 , 1, ENC_BIG_ENDIAN);
+                    proto_tree_add_item (tlv_sub_tree, hf_docsis_mdd_ofdm_plc_parameters_sub_carrier_spacing, tvb, subpos + 2 , 1, ENC_BIG_ENDIAN);
+                    break;
                 }
                 subpos += sublength + 2;
               }
@@ -615,6 +666,21 @@ void proto_register_docsis_mdd (void)
       FT_UINT8, BASE_DEC, VALS(map_ucd_transport_indicator_vals), 0x0,
       "Mdd Downstream Active Channel List MAP and UCD Transport Indicator", HFILL}
     },
+    {&hf_docsis_mdd_ofdm_plc_parameters_tukey_raised_cosine_window,
+     {"Tukey raised cosine window", "docsis_mdd.ofdm_plc_parameters_tukey_raised_cosine_window",
+      FT_UINT8, BASE_DEC, VALS(tukey_raised_cosine_vals), 0x07,
+      "OFDM PLC Parameters Tukey raised cosine window", HFILL}
+    },
+    {&hf_docsis_mdd_ofdm_plc_parameters_cyclic_prefix,
+     {"Cyclic prefix", "docsis_mdd.ofdm_plc_parameters_cyclic_prefix",
+      FT_UINT8, BASE_DEC, VALS(cyclic_prefix_vals), 0x38,
+      "OFDM PLC parameters Cyclic prefix", HFILL}
+    },
+    {&hf_docsis_mdd_ofdm_plc_parameters_sub_carrier_spacing,
+     {"Sub carrier spacing", "docsis_mdd.ofdm_plc_parameters_sub_carrier_spacing",
+      FT_UINT8, BASE_DEC, VALS(spacing_vals), 0x40,
+      "OFDM PLC parameters Sub carrier spacing", HFILL}
+    },
     {&hf_docsis_mdd_cm_status_event_enable_bitmask_t4_timeout,
      {"T4 timeout", "docsis_mdd.cm_status_event_enable_bitmask_t4_timeout",
       FT_UINT16, BASE_DEC, NULL, 0x0040,