DOCSIS: add burst descriptor types. Fixed some bugs.
Change-Id: I9f7df2f62197c574087dbcce2c7b0ba7e6c8c56b Reviewed-on: https://code.wireshark.org/review/24197 Petri-Dish: Stig Bjørlykke <stig@bjorlykke.org> Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman <a.broman58@gmail.com> Reviewed-by: Michael Mann <mmann78@netscape.net>
This commit is contained in:
parent
50c337f40a
commit
7e4723a589
|
@ -200,8 +200,8 @@ void proto_reg_handoff_docsis_mgmt(void);
|
|||
#define IUC_ADV_PHY_SHORT_DATA_GRANT 9
|
||||
#define IUC_ADV_PHY_LONG_DATA_GRANT 10
|
||||
#define IUC_ADV_PHY_UGS 11
|
||||
#define IUC_RESERVED12 12
|
||||
#define IUC_RESERVED13 13
|
||||
#define IUC_DATA_PROFILE_IUC12 12
|
||||
#define IUC_DATA_PROFILE_IUC13 13
|
||||
#define IUC_RESERVED14 14
|
||||
#define IUC_EXPANSION 15
|
||||
|
||||
|
@ -1297,6 +1297,7 @@ static const value_string mgmt_type_vals[] = {
|
|||
{MGT_STATUS_ACK, "Status Report Acknowledge"},
|
||||
{MGT_OCD, "OFDM Channel Descriptor"},
|
||||
{MGT_DPD, "Downstream Profile Descriptor"},
|
||||
{MGT_TYPE51UCD, "Upstream Channel Descriptor Type 51"},
|
||||
{0, NULL}
|
||||
};
|
||||
|
||||
|
@ -1335,8 +1336,8 @@ static const value_string iuc_vals[] = {
|
|||
{IUC_ADV_PHY_SHORT_DATA_GRANT, "Advanced Phy Short Data Grant"},
|
||||
{IUC_ADV_PHY_LONG_DATA_GRANT, "Advanced Phy Long Data Grant"},
|
||||
{IUC_ADV_PHY_UGS, "Advanced Phy UGS"},
|
||||
{IUC_RESERVED12, "Reserved"},
|
||||
{IUC_RESERVED13, "Reserved"},
|
||||
{IUC_DATA_PROFILE_IUC12, "Data Profile IUC12"},
|
||||
{IUC_DATA_PROFILE_IUC13, "Data Profile IUC13"},
|
||||
{IUC_RESERVED14, "Reserved"},
|
||||
{IUC_EXPANSION, "Expanded IUC"},
|
||||
{0, NULL}
|
||||
|
@ -2016,6 +2017,7 @@ static const value_string subc_spacing_vals[] = {
|
|||
};
|
||||
|
||||
static const value_string ofdma_prof_mod_order[] = {
|
||||
{0, "no bit-loading"},
|
||||
{1, "BPSK"},
|
||||
{2, "QPSK"},
|
||||
{3, "8-QAM"},
|
||||
|
@ -2083,17 +2085,19 @@ dissect_sync (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, void* data
|
|||
}
|
||||
|
||||
static void
|
||||
dissect_ucd_burst_descr(tvbuff_t * tvb, packet_info* pinfo, proto_tree * tree, int pos, guint16 len)
|
||||
dissect_ucd_burst_descr(tvbuff_t * tvb, packet_info* pinfo, proto_tree * tree, proto_item * item, int pos, guint16 len)
|
||||
{
|
||||
int tlvpos, endtlvpos;
|
||||
guint8 tlvtype;
|
||||
guint32 i, tlvlen;
|
||||
proto_tree *burst_tree;
|
||||
proto_item *burst_item, *burst_len_item;
|
||||
guint iuc;
|
||||
|
||||
tlvpos = pos;
|
||||
endtlvpos = tlvpos + len;
|
||||
proto_tree_add_item (tree, hf_docsis_ucd_iuc, tvb, tlvpos++, 1, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item_ret_uint (tree, hf_docsis_ucd_iuc, tvb, tlvpos++, 1, ENC_BIG_ENDIAN, &iuc);
|
||||
proto_item_append_text(item, ": IUC %d (%s)", iuc, val_to_str(iuc,iuc_vals, "Unknown IUC"));
|
||||
while (tlvpos < endtlvpos)
|
||||
{
|
||||
tlvtype = tvb_get_guint8 (tvb, tlvpos);
|
||||
|
@ -2249,7 +2253,7 @@ dissect_ucd_burst_descr(tvbuff_t * tvb, packet_info* pinfo, proto_tree * tree, i
|
|||
case UCD_SCMDA_SCRAMBLER_ONOFF:
|
||||
if (tlvlen == 1)
|
||||
{
|
||||
proto_tree_add_item (burst_tree, hf_docsis_ucd_scdma_scrambler_onoff, tvb, pos, tlvlen, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item (burst_tree, hf_docsis_ucd_scdma_scrambler_onoff, tvb, tlvpos, tlvlen, ENC_BIG_ENDIAN);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -2259,7 +2263,7 @@ dissect_ucd_burst_descr(tvbuff_t * tvb, packet_info* pinfo, proto_tree * tree, i
|
|||
case UCD_SCDMA_CODES_PER_SUBFRAME:
|
||||
if (tlvlen == 1)
|
||||
{
|
||||
proto_tree_add_item (burst_tree, hf_docsis_ucd_scdma_codes_per_subframe, tvb, pos, tlvlen, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item (burst_tree, hf_docsis_ucd_scdma_codes_per_subframe, tvb, tlvpos, tlvlen, ENC_BIG_ENDIAN);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -2269,7 +2273,7 @@ dissect_ucd_burst_descr(tvbuff_t * tvb, packet_info* pinfo, proto_tree * tree, i
|
|||
case UCD_SCDMA_FRAMER_INT_STEP_SIZE:
|
||||
if (tlvlen == 1)
|
||||
{
|
||||
proto_tree_add_item (burst_tree, hf_docsis_ucd_scdma_framer_int_step_size, tvb, pos, tlvlen, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item (burst_tree, hf_docsis_ucd_scdma_framer_int_step_size, tvb, tlvpos, tlvlen, ENC_BIG_ENDIAN);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -2279,7 +2283,7 @@ dissect_ucd_burst_descr(tvbuff_t * tvb, packet_info* pinfo, proto_tree * tree, i
|
|||
case UCD_TCM_ENABLED:
|
||||
if (tlvlen == 1)
|
||||
{
|
||||
proto_tree_add_item (burst_tree, hf_docsis_ucd_tcm_enabled, tvb, pos, tlvlen, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item (burst_tree, hf_docsis_ucd_tcm_enabled, tvb, tlvpos, tlvlen, ENC_BIG_ENDIAN);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -2289,7 +2293,7 @@ dissect_ucd_burst_descr(tvbuff_t * tvb, packet_info* pinfo, proto_tree * tree, i
|
|||
case UCD_SUBC_INIT_RANG:
|
||||
if (tlvlen == 2)
|
||||
{
|
||||
proto_tree_add_item (burst_tree, hf_docsis_subc_init_rang, tvb, pos, tlvlen, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item (burst_tree, hf_docsis_subc_init_rang, tvb, tlvpos, tlvlen, ENC_BIG_ENDIAN);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -2299,7 +2303,7 @@ dissect_ucd_burst_descr(tvbuff_t * tvb, packet_info* pinfo, proto_tree * tree, i
|
|||
case UCD_SUBC_FINE_RANG:
|
||||
if (tlvlen == 2)
|
||||
{
|
||||
proto_tree_add_item (burst_tree, hf_docsis_subc_fine_rang, tvb, pos, tlvlen, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item (burst_tree, hf_docsis_subc_fine_rang, tvb, tlvpos, tlvlen, ENC_BIG_ENDIAN);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -2310,9 +2314,9 @@ dissect_ucd_burst_descr(tvbuff_t * tvb, packet_info* pinfo, proto_tree * tree, i
|
|||
if ((tlvlen % 2) == 0)
|
||||
{
|
||||
for(i =0; i < tlvlen; i+=2) {
|
||||
proto_tree_add_item (burst_tree, hf_docsis_ofdma_prof_mod_order, tvb, pos + i, 1, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item (burst_tree, hf_docsis_ofdma_prof_pilot_pattern, tvb, pos + i, 1, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item (burst_tree, hf_docsis_ofdma_prof_num_add_minislots, tvb, pos + i + 1, 1, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item (burst_tree, hf_docsis_ofdma_prof_mod_order, tvb, tlvpos + i, 1, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item (burst_tree, hf_docsis_ofdma_prof_pilot_pattern, tvb, tlvpos + i, 1, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item (burst_tree, hf_docsis_ofdma_prof_num_add_minislots, tvb, tlvpos + i + 1, 1, ENC_BIG_ENDIAN);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -2323,8 +2327,8 @@ dissect_ucd_burst_descr(tvbuff_t * tvb, packet_info* pinfo, proto_tree * tree, i
|
|||
case UCD_OFDMA_IR_POWER_CONTROL:
|
||||
if (tlvlen == 2)
|
||||
{
|
||||
proto_tree_add_item (burst_tree, hf_docsis_ofdma_ir_pow_ctrl_start_pow, tvb, pos, tlvlen, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item (burst_tree, hf_docsis_ofdma_ir_pow_ctrl_step_size, tvb, pos + 1, tlvlen, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item (burst_tree, hf_docsis_ofdma_ir_pow_ctrl_start_pow, tvb, tlvpos, tlvlen, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item (burst_tree, hf_docsis_ofdma_ir_pow_ctrl_step_size, tvb, tlvpos + 1, tlvlen, ENC_BIG_ENDIAN);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -2408,7 +2412,7 @@ dissect_any_ucd (tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, int pro
|
|||
case UCD_BURST_DESCR:
|
||||
case UCD_BURST_DESCR5: /* DOCSIS 2.0 Upstream Channel Descriptor */
|
||||
case UCD_BURST_DESCR23:
|
||||
dissect_ucd_burst_descr(tvb, pinfo, tlv_tree, pos, length);
|
||||
dissect_ucd_burst_descr(tvb, pinfo, tlv_tree, tlv_item, pos, length);
|
||||
break;
|
||||
case UCD_EXT_PREAMBLE:
|
||||
proto_tree_add_item (tlv_tree, hf_docsis_ucd_ext_preamble_pat, tvb, pos, length, ENC_NA);
|
||||
|
|
Loading…
Reference in New Issue