ORAN FH CUS: add section extensions 16, 17, 18, 21

This commit is contained in:
Martin Mathieson 2023-02-25 14:46:01 +00:00
parent 1f59c18769
commit 93ec018c09
1 changed files with 117 additions and 5 deletions

View File

@ -107,6 +107,7 @@ static int hf_oran_reserved = -1;
static int hf_oran_reserved_1bit = -1;
static int hf_oran_reserved_2bits = -1;
static int hf_oran_reserved_4bits = -1;
static int hf_oran_reserved_6bits = -1;
static int hf_oran_ext11_reserved = -1;
@ -186,6 +187,16 @@ static int hf_oran_numPuncPrb = -1;
static int hf_oran_puncReMask = -1;
static int hf_oran_RbgIncl = -1;
static int hf_oran_ci_prb_group_size = -1;
static int hf_oran_num_ueid = -1;
static int hf_oran_antMask = -1;
static int hf_oran_transmissionWindowOffset = -1;
static int hf_oran_transmissionWindowSize = -1;
static int hf_oran_toT = -1;
/* Computed fields */
static int hf_oran_c_eAxC_ID = -1;
@ -504,6 +515,13 @@ static const value_string interface_name_vals[] = {
{0, NULL}
};
/* 7.7.18.4 toT (type of transmission) */
static const value_string type_of_transmission_vals[] = {
{0x0, "normal transmission mode, data can be distributed in any way the O-RU is implemented to transmit data"},
{0x1, "uniformly distributed over the transmission window"},
{0, NULL}
};
/*******************************************************/
/* Overall state of a flow (eAxC) */
@ -1594,15 +1612,45 @@ static int dissect_oran_c_section(tvbuff_t *tvb, proto_tree *tree, packet_info *
break;
case 16: /* Section description for antenna mapping in UE channel information based UL beamforming */
/* TODO */
{
guint32 extlen_remaining_bytes = (extlen*4) - 2;
guint num_ant_masks = extlen_remaining_bytes / 8;
for (guint n=0; n < num_ant_masks; n++) {
proto_item *ti = proto_tree_add_item(extension_tree, hf_oran_antMask, tvb, offset, 8, ENC_BIG_ENDIAN);
proto_item_append_text(ti, " (RX eAxC #%u)", n+1);
offset += 8;
}
break;
}
case 17: /* Section description for indication of user port group */
/* TODO */
{
guint32 extlen_remaining_bytes = (extlen*4) - 2;
guint32 end_bit = (offset+extlen_remaining_bytes) * 8;
guint32 ueid_index = 1;
/* TODO: just filling up all available bytes - some may actually be padding.. */
for (guint32 bit_offset=offset*8; bit_offset < end_bit; bit_offset+=4, ueid_index++) {
proto_item *ti = proto_tree_add_bits_item(extension_tree, hf_oran_num_ueid, tvb, bit_offset, 4, ENC_BIG_ENDIAN);
proto_item_append_text(ti, " (user #%u)", ueid_index);
}
break;
}
case 18: /* Section description for Uplink Transmission Management */
/* TODO */
/* transmissionWindowOffset */
proto_tree_add_item(extension_tree, hf_oran_transmissionWindowOffset, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
/* reserved (2 bits) */
proto_tree_add_item(extension_tree, hf_oran_reserved_2bits, tvb, offset, 1, ENC_BIG_ENDIAN);
/* transmissionWindowSize (14 bits) */
proto_tree_add_item(extension_tree, hf_oran_transmissionWindowSize, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
/* reserved (6 bits) */
proto_tree_add_item(extension_tree, hf_oran_reserved_6bits, tvb, offset, 1, ENC_BIG_ENDIAN);
/* toT (2 bits) */
proto_tree_add_item(extension_tree, hf_oran_toT, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
break;
case 19: /* Compact beamforming information for multiple port */
@ -1746,7 +1794,7 @@ static int dissect_oran_c_section(tvbuff_t *tvb, proto_tree *tree, packet_info *
/* Subtree for this puncturing pattern */
proto_item *pattern_ti = proto_tree_add_string_format(extension_tree, hf_oran_puncPattern,
tvb, offset, 0,
"", "Puncturing Pattern %u: (", n);
"", "Puncturing Pattern: %u/%u", n+1, hf_oran_numPuncPatterns);
proto_tree *pattern_tree = proto_item_add_subtree(pattern_ti, ett_oran_punc_pattern);
/* SymbolMask (14 bits) */
@ -1786,7 +1834,12 @@ static int dissect_oran_c_section(tvbuff_t *tvb, proto_tree *tree, packet_info *
break;
}
case 21: /* Variable PRB group size for channel information */
/* TODO */
/* ciPrbGroupSize */
proto_tree_add_item(extension_tree, hf_oran_ci_prb_group_size, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
/* reserved (8 bits) */
proto_tree_add_bits_item(extension_tree, hf_oran_reserved, tvb, offset*8, 8, ENC_BIG_ENDIAN);
offset += 1;
break;
case 22: /* ACK/NACK request */
@ -2880,6 +2933,13 @@ proto_register_oran(void)
NULL,
HFILL}
},
{&hf_oran_reserved_6bits,
{"reserved", "oran_fh_cus.reserved",
FT_UINT8, BASE_HEX,
NULL, 0xfc,
NULL,
HFILL}
},
{&hf_oran_ext11_reserved,
{"Reserved", "oran_fh_cus.reserved",
@ -3412,6 +3472,58 @@ proto_register_oran(void)
"rbg included flag",
HFILL}
},
/* 7.7.21.2 ciPrbGroupSize */
{&hf_oran_ci_prb_group_size,
{"ciPrbGroupSize", "oran_fh_cus.ciPrbGroupSize",
FT_UINT8, BASE_DEC,
NULL, 0x0,
"channel information PRB group size",
HFILL}
},
/* 7.7.17.2 numUeID */
{&hf_oran_num_ueid,
{"numUeID", "oran_fh_cus.numUeID",
FT_UINT8, BASE_DEC,
NULL, 0x0,
"number of ueIDs per user",
HFILL}
},
/* 7.7.16.2 antMask */
{&hf_oran_antMask,
{"antMask", "oran_fh_cus.antMask",
FT_UINT64, BASE_HEX,
NULL, 0xffffffffffffffff,
"indices of antennas to be pre-combined per RX endpoint",
HFILL}
},
/* 7.7.18.2 transmissionWindowOffset */
{&hf_oran_transmissionWindowOffset,
{"transmissionWindowOffset", "oran_fh_cus.transmissionWindowOffset",
FT_UINT16, BASE_DEC,
NULL, 0x0,
"start of the transmission window as an offset to when the transmission window would have been without this parameter, i.e. (Ta3_max - Ta3_min)",
HFILL}
},
/* 7.7.18.3 transmissionWindowSize */
{&hf_oran_transmissionWindowSize,
{"transmissionWindowSize", "oran_fh_cus.transmissionWindowSize",
FT_UINT16, BASE_DEC,
NULL, 0x3fff,
"size of the transmission window in resolution µs",
HFILL}
},
/* 7.7.18.4 toT */
{&hf_oran_toT,
{"toT", "oran_fh_cus.toT",
FT_UINT8, BASE_DEC,
VALS(type_of_transmission_vals), 0x03,
"type of transmission",
HFILL}
}
};
/* Setup protocol subtree array */