1 /* packet-wimaxmacphy.c
2 * Routines for wimaxmacphy (WiMAX MAX PHY over Ethernet) packet dissection
3 * Copyright 2008, Mobile Metrics - http://mobilemetrics.net/
7 * Wireshark - Network traffic analyzer
8 * By Gerald Combs <gerald@wireshark.org>
9 * Copyright 1998 Gerald Combs
11 * This program is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU General Public License
13 * as published by the Free Software Foundation; either version 2
14 * of the License, or (at your option) any later version.
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
21 * You should have received a copy of the GNU General Public License
22 * along with this program; if not, write to the Free Software
23 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
31 #include <epan/packet.h>
32 #include <epan/prefs.h>
33 #include <epan/expert.h>
35 /* IF PROTO exposes code to other dissectors, then it must be exported
36 in a header file. If not, a header file is not needed at all. */
37 #include "packet-wimaxmacphy.h"
39 /* Forward declaration we need below */
40 void proto_reg_handoff_wimaxmacphy(void);
42 /* Initialize the protocol and registered fields */
44 static int proto_wimaxmacphy
= -1;
45 static int hf_wimaxmacphy_hdr_phy_entity_id
= -1;
46 static int hf_wimaxmacphy_hdr_message_segmentation
= -1;
47 static int hf_wimaxmacphy_hdr_message_type
= -1;
48 static int hf_wimaxmacphy_unknown
= -1;
49 static int hf_wimaxmacphy_prim_length_of_txvector
= -1;
50 static int hf_wimaxmacphy_prim_length_of_rxvector
= -1;
51 static int hf_wimaxmacphy_prim_status
= -1;
52 static int hf_wimaxmacphy_prim_txstart_indication_status
= -1;
53 static int hf_wimaxmacphy_prim_reserved1
= -1;
54 static int hf_wimaxmacphy_prim_reserved2
= -1;
55 static int hf_wimaxmacphy_prim_reserved3
= -1;
56 static int hf_wimaxmacphy_prim_reserved4
= -1;
57 static int hf_wimaxmacphy_prim_reserved5
= -1;
58 static int hf_wimaxmacphy_prim_next_frame_number
= -1;
59 static int hf_wimaxmacphy_prim_extended_frame_number
= -1;
60 static int hf_wimaxmacphy_prim_current_frame_number_lsn
= -1;
61 static int hf_wimaxmacphy_prim_initial_frame_number
= -1;
62 static int hf_wimaxmacphy_prim_dl_zone_number
= -1;
63 static int hf_wimaxmacphy_prim_sub_burst_burst_split_point
= -1;
64 static int hf_wimaxmacphy_prim_dl_sub_burst_burst_number
= -1;
65 static int hf_wimaxmacphy_prim_phy_sdu
= -1;
66 static int hf_wimaxmacphy_prim_phy_request
= -1;
67 static int hf_wimaxmacphy_prim_requested_aas_calibration_zone_size
= -1;
68 static int hf_wimaxmacphy_prim_requested_aas_calibration_zone_alloc
= -1;
69 static int hf_wimaxmacphy_prim_number_of_consecutive_frames_with_aas
= -1;
70 static int hf_wimaxmacphy_prim_frame_number
= -1;
71 static int hf_wimaxmacphy_prim_issid
= -1;
72 static int hf_wimaxmacphy_prim_integrity
= -1;
73 static int hf_wimaxmacphy_prim_number_of_bytes_received
= -1;
74 static int hf_wimaxmacphy_prim_rssi_per_subcarrier_level
= -1;
75 static int hf_wimaxmacphy_prim_cinr
= -1;
76 static int hf_wimaxmacphy_prim_power_offset
= -1;
77 static int hf_wimaxmacphy_prim_current_frame_number_msn
= -1;
78 static int hf_wimaxmacphy_prim_acid_for_harq_data_bursts
= -1;
79 static int hf_wimaxmacphy_prim_indication_type
= -1;
80 static int hf_wimaxmacphy_prim_zone_permutation_type
= -1;
81 static int hf_wimaxmacphy_prim_update_aas_handle_in_mac
= -1;
82 static int hf_wimaxmacphy_prim_aas_handle
= -1;
83 static int hf_wimaxmacphy_prim_time_deviation
= -1;
84 static int hf_wimaxmacphy_prim_frequency_deviation
= -1;
85 static int hf_wimaxmacphy_prim_phy_aas_report_present
= -1;
86 static int hf_wimaxmacphy_prim_number_of_affected_ss
= -1;
87 static int hf_wimaxmacphy_prim_zonexid
= -1;
88 static int hf_wimaxmacphy_prim_cdma_code
= -1;
89 static int hf_wimaxmacphy_prim_cdma_symbol
= -1;
90 static int hf_wimaxmacphy_prim_cdma_subchannel
= -1;
91 static int hf_wimaxmacphy_prim_harq_ack_issid
= -1;
92 static int hf_wimaxmacphy_prim_harq_ack_acid
= -1;
93 static int hf_wimaxmacphy_prim_harq_ack_reserved1
= -1;
94 static int hf_wimaxmacphy_prim_harq_ack_ack_valid
= -1;
95 static int hf_wimaxmacphy_prim_harq_ack_unnamed
= -1;
96 static int hf_wimaxmacphy_prim_harq_ack_reserved2
= -1;
97 static int hf_wimaxmacphy_prim_fast_issid
= -1;
98 static int hf_wimaxmacphy_prim_fast_cqich_id
= -1;
99 static int hf_wimaxmacphy_prim_fast_feedback_type_coding
= -1;
100 static int hf_wimaxmacphy_prim_fast_feedback_type_coding_bit0
= -1;
101 static int hf_wimaxmacphy_prim_fast_feedback_type_coding_bit1
= -1;
102 static int hf_wimaxmacphy_prim_fast_feedback_type_coding_bit2
= -1;
103 static int hf_wimaxmacphy_prim_fast_feedback_type_coding_bit3
= -1;
104 static int hf_wimaxmacphy_prim_fast_feedback_type_coding_bit4
= -1;
105 static int hf_wimaxmacphy_prim_fast_feedback_type_coding_bit5
= -1;
106 static int hf_wimaxmacphy_prim_fast_feedback_type_coding_bit6
= -1;
107 static int hf_wimaxmacphy_prim_fast_feedback_type_coding_bit7
= -1;
108 static int hf_wimaxmacphy_prim_fast_feedback_valid
= -1;
109 static int hf_wimaxmacphy_prim_fast_feedback_sub_type
= -1;
110 static int hf_wimaxmacphy_prim_fast_reserved
= -1;
111 static int hf_wimaxmacphy_prim_fast_feedback_value
= -1;
112 static int hf_wimaxmacphy_subframe_subframe_type
= -1;
113 static int hf_wimaxmacphy_subframe_frame_number
= -1;
114 static int hf_wimaxmacphy_subframe_downlink_reserved1
= -1;
115 static int hf_wimaxmacphy_subframe_phy_sap_version_number
= -1;
116 static int hf_wimaxmacphy_subframe_downlink_reserved2
= -1;
117 static int hf_wimaxmacphy_subframe_allocation_start_time
= -1;
118 static int hf_wimaxmacphy_number_of_zone_descriptors
= -1;
119 static int hf_wimaxmacphy_zone_padding
= -1;
120 static int hf_wimaxmacphy_dl_zone_type
= -1;
121 static int hf_wimaxmacphy_ul_zone_type
= -1;
122 static int hf_wimaxmacphy_zone_number
= -1;
123 static int hf_wimaxmacphy_zone_start_symbol_offset
= -1;
124 static int hf_wimaxmacphy_zone_end_symbol_offset
= -1;
125 static int hf_wimaxmacphy_dl_zone_permutation_type
= -1;
126 static int hf_wimaxmacphy_ul_zone_permutation_type
= -1;
127 static int hf_wimaxmacphy_dl_zone_use_all_subchannels_indicator
= -1;
128 static int hf_wimaxmacphy_ul_zone_use_all_subchannels_indicator
= -1;
129 static int hf_wimaxmacphy_ul_zone_disable_pusc_subchannel_rotation
= -1;
130 static int hf_wimaxmacphy_zone_dl_perm_base
= -1;
131 static int hf_wimaxmacphy_zone_ul_perm_base
= -1;
132 static int hf_wimaxmacphy_zone_prbs_id
= -1;
133 static int hf_wimaxmacphy_zone_agc_range_extension
= -1;
134 static int hf_wimaxmacphy_zone_dedicated_pilots
= -1;
135 static int hf_wimaxmacphy_zone_reserved
= -1;
136 static int hf_wimaxmacphy_zone_stc_type
= -1;
137 static int hf_wimaxmacphy_zone_matrix_indicator
= -1;
138 static int hf_wimaxmacphy_zone_midamble_presence
= -1;
139 static int hf_wimaxmacphy_zone_midamble_boosting
= -1;
140 static int hf_wimaxmacphy_zone_preamble_configuration
= -1;
141 static int hf_wimaxmacphy_zone_sdma_supported_indication
= -1;
142 static int hf_wimaxmacphy_zone_preamble_type
= -1;
143 static int hf_wimaxmacphy_dl_zone_aas_reserved
= -1;
144 static int hf_wimaxmacphy_ul_zone_aas_reserved
= -1;
145 static int hf_wimaxmacphy_number_of_burst_descriptors
= -1;
146 static int hf_wimaxmacphy_burst_padding
= -1;
147 static int hf_wimaxmacphy_dl_burst_type
= -1;
148 static int hf_wimaxmacphy_ul_burst_type
= -1;
149 static int hf_wimaxmacphy_burst_type_extension
= -1;
150 static int hf_wimaxmacphy_burst_number
= -1;
151 static int hf_wimaxmacphy_burst_modulation_fec_code_type
= -1;
152 static int hf_wimaxmacphy_burst_data_length
= -1;
153 static int hf_wimaxmacphy_burst_ofdma_symbol_offset
= -1;
154 static int hf_wimaxmacphy_burst_subchannel_offset
= -1;
155 static int hf_wimaxmacphy_burst_boosting
= -1;
156 static int hf_wimaxmacphy_burst_reserved
= -1;
157 static int hf_wimaxmacphy_burst_repetition_coding_indication
= -1;
158 static int hf_wimaxmacphy_burst_issid
= -1;
159 static int hf_wimaxmacphy_burst_aas_handle
= -1;
160 static int hf_wimaxmacphy_dl_burst_map_number_of_slots
= -1;
161 static int hf_wimaxmacphy_dl_burst_map_reserved
= -1;
162 static int hf_wimaxmacphy_dl_burst_normal_number_of_symbols
= -1;
163 static int hf_wimaxmacphy_dl_burst_normal_number_of_subchannels
= -1;
164 static int hf_wimaxmacphy_dl_burst_normal_aas_handle
= -1;
165 static int hf_wimaxmacphy_ul_burst_normal_number_of_slots
= -1;
166 static int hf_wimaxmacphy_ul_burst_normal_reserved
= -1;
167 static int hf_wimaxmacphy_burst_papr_number_of_symbols
= -1;
168 static int hf_wimaxmacphy_burst_papr_number_of_subchannels
= -1;
169 static int hf_wimaxmacphy_burst_papr_reserved
= -1;
170 static int hf_wimaxmacphy_ul_burst_papr_unnamed
= -1;
171 static int hf_wimaxmacphy_ul_burst_harq_ack_number_of_symbols
= -1;
172 static int hf_wimaxmacphy_ul_burst_harq_ack_number_of_subchannels
= -1;
173 static int hf_wimaxmacphy_ul_burst_harq_ack_reserved
= -1;
174 static int hf_wimaxmacphy_ul_burst_fast_number_of_symbols
= -1;
175 static int hf_wimaxmacphy_ul_burst_fast_number_of_subchannels
= -1;
176 static int hf_wimaxmacphy_ul_burst_fast_reserved
= -1;
177 static int hf_wimaxmacphy_ul_burst_initial_number_of_symbols
= -1;
178 static int hf_wimaxmacphy_ul_burst_initial_number_of_subchannels
= -1;
179 static int hf_wimaxmacphy_ul_burst_initial_ranging_method
= -1;
180 static int hf_wimaxmacphy_ul_burst_initial_reserved1
= -1;
181 static int hf_wimaxmacphy_ul_burst_initial_zone_xid
= -1;
182 static int hf_wimaxmacphy_ul_burst_initial_reserved2
= -1;
183 static int hf_wimaxmacphy_ul_burst_periodic_number_of_symbols
= -1;
184 static int hf_wimaxmacphy_ul_burst_periodic_number_of_subchannels
= -1;
185 static int hf_wimaxmacphy_ul_burst_periodic_ranging_method
= -1;
186 static int hf_wimaxmacphy_ul_burst_periodic_reserved1
= -1;
187 static int hf_wimaxmacphy_ul_burst_periodic_zone_xid
= -1;
188 static int hf_wimaxmacphy_ul_burst_periodic_reserved2
= -1;
189 static int hf_wimaxmacphy_ul_burst_sounding_number_of_symbols
= -1;
190 static int hf_wimaxmacphy_ul_burst_sounding_number_of_subchannels
= -1;
191 static int hf_wimaxmacphy_ul_burst_sounding_type
= -1;
192 static int hf_wimaxmacphy_ul_burst_sounding_separability_type
= -1;
193 static int hf_wimaxmacphy_ul_burst_sounding_max_cyclic_shift_indx
= -1;
194 static int hf_wimaxmacphy_ul_burst_sounding_decimation_value
= -1;
195 static int hf_wimaxmacphy_ul_burst_sounding_decimation_offset_rand
= -1;
196 static int hf_wimaxmacphy_ul_burst_sounding_reserved
= -1;
197 static int hf_wimaxmacphy_ul_burst_noise_number_of_symbols
= -1;
198 static int hf_wimaxmacphy_ul_burst_noise_number_of_subchannels
= -1;
199 static int hf_wimaxmacphy_ul_burst_noise_reserved
= -1;
200 static int hf_wimaxmacphy_burst_opt_aas_preamble_modifier_type
= -1;
201 static int hf_wimaxmacphy_burst_opt_aas_preamble_shift_index
= -1;
202 static int hf_wimaxmacphy_burst_opt_aas_reserved
= -1;
203 static int hf_wimaxmacphy_burst_opt_mimo_matrix_indicator
= -1;
204 static int hf_wimaxmacphy_burst_opt_mimo_layer_index
= -1;
205 static int hf_wimaxmacphy_dl_burst_opt_mimo_reserved
= -1;
206 static int hf_wimaxmacphy_ul_burst_opt_mimo_matrix_indicator
= -1;
207 static int hf_wimaxmacphy_ul_burst_opt_mimo_pilot_patterns
= -1;
208 static int hf_wimaxmacphy_ul_burst_opt_mimo_pilot_patterns_bit0
= -1;
209 static int hf_wimaxmacphy_ul_burst_opt_mimo_pilot_patterns_bit1
= -1;
210 static int hf_wimaxmacphy_ul_burst_opt_mimo_pilot_patterns_bit2
= -1;
211 static int hf_wimaxmacphy_ul_burst_opt_mimo_pilot_patterns_bit3
= -1;
212 static int hf_wimaxmacphy_ul_burst_opt_mimo_collaborative
= -1;
213 static int hf_wimaxmacphy_ul_burst_opt_mimo_antenna_unnamed
= -1;
214 static int hf_wimaxmacphy_number_of_sub_burst_descriptors
= -1;
215 static int hf_wimaxmacphy_sub_burst_padding
= -1;
216 static int hf_wimaxmacphy_dl_sub_burst_type
= -1;
217 static int hf_wimaxmacphy_ul_sub_burst_type
= -1;
218 static int hf_wimaxmacphy_sub_burst_number
= -1;
219 static int hf_wimaxmacphy_sub_burst_symbol_offset
= -1;
220 static int hf_wimaxmacphy_sub_burst_subchannel_offset
= -1;
221 static int hf_wimaxmacphy_sub_burst_number_of_slots
= -1;
222 static int hf_wimaxmacphy_sub_burst_reserved1
= -1;
223 static int hf_wimaxmacphy_sub_burst_reserved2
= -1;
224 static int hf_wimaxmacphy_sub_burst_modulation_fec_code_type
= -1;
225 static int hf_wimaxmacphy_sub_burst_issid
= -1;
226 static int hf_wimaxmacphy_sub_burst_aas_handle
= -1;
227 static int hf_wimaxmacphy_sub_burst_boosting
= -1;
228 static int hf_wimaxmacphy_sub_burst_repetition_coding_indication
= -1;
229 static int hf_wimaxmacphy_sub_burst_data_length
= -1;
230 static int hf_wimaxmacphy_sub_burst_harq_chase_harq_channel_id
= -1;
231 static int hf_wimaxmacphy_sub_burst_harq_chase_harq_sequence_number
= -1;
232 static int hf_wimaxmacphy_sub_burst_harq_chase_flush_unnamed
= -1;
233 static int hf_wimaxmacphy_sub_burst_harq_chase_reserved
= -1;
234 static int hf_wimaxmacphy_sub_burst_mimo_chase_harq_channel_id
= -1;
235 static int hf_wimaxmacphy_sub_burst_mimo_chase_harq_sequence_number
= -1;
236 static int hf_wimaxmacphy_sub_burst_mimo_chase_flush_unnamed
= -1;
237 static int hf_wimaxmacphy_sub_burst_mimo_chase_layer_index
= -1;
238 static int hf_wimaxmacphy_ul_sub_burst_ctype
= -1;
239 static int hf_wimaxmacphy_ul_sub_burst_mini_subchannel_index
= -1;
240 static int hf_wimaxmacphy_ul_sub_burst_mini_reserved
= -1;
241 static int hf_wimaxmacphy_ul_sub_burst_feedback_type_coding
= -1;
242 static int hf_wimaxmacphy_ul_sub_burst_feedback_type_coding_bit0
= -1;
243 static int hf_wimaxmacphy_ul_sub_burst_feedback_type_coding_bit1
= -1;
244 static int hf_wimaxmacphy_ul_sub_burst_feedback_type_coding_bit2
= -1;
245 static int hf_wimaxmacphy_ul_sub_burst_feedback_type_coding_bit3
= -1;
246 static int hf_wimaxmacphy_ul_sub_burst_feedback_type_coding_bit4
= -1;
247 static int hf_wimaxmacphy_ul_sub_burst_feedback_type_coding_bit5
= -1;
248 static int hf_wimaxmacphy_ul_sub_burst_feedback_type_coding_bit6
= -1;
249 static int hf_wimaxmacphy_ul_sub_burst_feedback_type_coding_bit7
= -1;
250 static int hf_wimaxmacphy_ul_sub_burst_feedback_reserved1
= -1;
251 static int hf_wimaxmacphy_ul_sub_burst_feedback_sub_type
= -1;
252 static int hf_wimaxmacphy_ul_sub_burst_feedback_cqich_id
= -1;
253 static int hf_wimaxmacphy_ul_sub_burst_feedback_reserved2
= -1;
254 static int hf_wimaxmacphy_ul_sub_burst_feedback_slot_offset
= -1;
255 static int hf_wimaxmacphy_ul_sub_burst_harq_ack_acid
= -1;
256 static int hf_wimaxmacphy_ul_sub_burst_harq_ack_reserved
= -1;
257 static int hf_wimaxmacphy_ul_sub_burst_sounding_symbol_index
= -1;
258 static int hf_wimaxmacphy_ul_sub_burst_sounding_power_assignment
= -1;
259 static int hf_wimaxmacphy_ul_sub_burst_sounding_power_boost
= -1;
260 static int hf_wimaxmacphy_ul_sub_burst_sounding_allocation_mode
= -1;
261 static int hf_wimaxmacphy_ul_sub_burst_sounding_start_freq_band
= -1;
262 static int hf_wimaxmacphy_ul_sub_burst_sounding_num_freq_bands
= -1;
263 static int hf_wimaxmacphy_ul_sub_burst_sounding_band_bit_map
= -1;
264 static int hf_wimaxmacphy_ul_sub_burst_sounding_cyclic_time_shift
= -1;
265 static int hf_wimaxmacphy_ul_sub_burst_sounding_decimation_offset
= -1;
266 static int hf_wimaxmacphy_ul_sub_burst_sounding_reserved
= -1;
267 static int hf_wimaxmacphy_ul_sub_burst_mimo_chase_matrix
= -1;
269 /* Initialize the subtree pointers */
270 static gint ett_wimaxmacphy
= -1;
271 static gint ett_wimaxmacphy_primitive
= -1;
272 static gint ett_wimaxmacphy_prim_harq_ack
= -1;
273 static gint ett_wimaxmacphy_prim_fast_feedback
= -1;
274 static gint ett_wimaxmacphy_prim_fast_feedback_type_coding
= -1;
275 static gint ett_wimaxmacphy_dl_zone_descriptor
= -1;
276 static gint ett_wimaxmacphy_dl_zone_stc
= -1;
277 static gint ett_wimaxmacphy_dl_zone_aas
= -1;
278 static gint ett_wimaxmacphy_dl_burst_descriptor
= -1;
279 static gint ett_wimaxmacphy_dl_burst_map
= -1;
280 static gint ett_wimaxmacphy_dl_burst_normal
= -1;
281 static gint ett_wimaxmacphy_dl_burst_papr
= -1;
282 static gint ett_wimaxmacphy_dl_sub_burst_descriptor
= -1;
283 static gint ett_wimaxmacphy_dl_sub_burst_harq_chase
= -1;
284 static gint ett_wimaxmacphy_dl_sub_burst_mimo_chase
= -1;
285 static gint ett_wimaxmacphy_dl_burst_opt_aas
= -1;
286 static gint ett_wimaxmacphy_dl_burst_opt_mimo
= -1;
287 static gint ett_wimaxmacphy_ul_zone_descriptor
= -1;
288 static gint ett_wimaxmacphy_ul_zone_aas
= -1;
289 static gint ett_wimaxmacphy_ul_burst_descriptor
= -1;
290 static gint ett_wimaxmacphy_ul_burst_harq_ack
= -1;
291 static gint ett_wimaxmacphy_ul_burst_fast_feedback
= -1;
292 static gint ett_wimaxmacphy_ul_burst_initial_ranging
= -1;
293 static gint ett_wimaxmacphy_ul_burst_periodic_ranging
= -1;
294 static gint ett_wimaxmacphy_ul_burst_papr_safety_zone
= -1;
295 static gint ett_wimaxmacphy_ul_burst_sounding_zone
= -1;
296 static gint ett_wimaxmacphy_ul_burst_noise_floor
= -1;
297 static gint ett_wimaxmacphy_ul_burst_normal_data
= -1;
298 static gint ett_wimaxmacphy_ul_burst_opt_aas
= -1;
299 static gint ett_wimaxmacphy_ul_burst_opt_mimo
= -1;
300 static gint ett_wimaxmacphy_ul_sub_burst_descriptor
= -1;
301 static gint ett_wimaxmacphy_ul_pilot_patterns
= -1;
302 static gint ett_wimaxmacphy_ul_feedback_type_coding
= -1;
303 static gint ett_wimaxmacphy_ul_sub_burst_mini_subchannel
= -1;
304 static gint ett_wimaxmacphy_ul_sub_burst_fast_feedback
= -1;
305 static gint ett_wimaxmacphy_ul_sub_burst_harq_ack
= -1;
306 static gint ett_wimaxmacphy_ul_sub_burst_sounding_signal
= -1;
307 static gint ett_wimaxmacphy_ul_sub_burst_harq_chase
= -1;
308 static gint ett_wimaxmacphy_ul_sub_burst_mimo_chase
= -1;
309 static gint ett_wimaxmacphy_ul_sub_burst_sub_allocation_specific
= -1;
311 static expert_field ei_wimaxmacphy_unknown
= EI_INIT
;
314 static guint wimaxmacphy_udp_port
= 0;
317 /* PHY SAP message header size */
318 #define WIMAXMACPHY_HEADER_SIZE 2
320 #define WIMAXMACPHY_BIT(n) (1 << (n))
322 #define WIMAXMACPHY_PHY_TXSTART_REQUEST 1
323 #define WIMAXMACPHY_PHY_TXSTART_CONFIRMATION 2
324 #define WIMAXMACPHY_PHY_TXSTART_INDICATION 3
325 #define WIMAXMACPHY_PHY_TXSDU_REQUEST 4
326 #define WIMAXMACPHY_PHY_TXSDU_CONFIRMATION 5
327 #define WIMAXMACPHY_PHY_TXEND_INDICATION 6
328 #define WIMAXMACPHY_PHY_RXSTART_REQUEST 7
329 #define WIMAXMACPHY_PHY_RXSTART_CONFIRMATION 8
330 #define WIMAXMACPHY_PHY_RXSTART_INDICATION 9
331 #define WIMAXMACPHY_PHY_RXSDU_INDICATION 10
332 #define WIMAXMACPHY_PHY_RXEND_INDICATION 11
333 #define WIMAXMACPHY_PHY_RXCDMA_INDICATION 15
335 /* ------------------------------------------------------------------------- */
337 static const value_string wimaxmacphy_message_segmentation_vals
[] =
339 { 0x00, "Middle segment of the message segment sequence"},
340 { 0x01, "Last segment of the message segment sequence"},
341 { 0x02, "First segment of the message segment sequence"},
342 { 0x03, "The entire message is contained in this segment"},
346 /* ------------------------------------------------------------------------- */
348 static const value_string wimaxmacphy_message_type_vals
[] =
351 { 1, "PHY_TXSTART.request"},
352 { 2, "PHY_TXSTART.confirmation"},
353 { 3, "PHY_TXSTART.indication"},
354 { 4, "PHY_TXSDU.request"},
355 { 5, "PHY_TXSDU.confirmation"},
356 { 6, "PHY_TXEND.indication"},
357 { 7, "PHY_RXSTART.request"},
358 { 8, "PHY_RXSTART.confirmation"},
359 { 9, "PHY_RXSTART.indication"},
360 { 10, "PHY_RXSDU.indication"},
361 { 11, "PHY_RXEND.indication"},
362 { 12, "Reserved (OFDM)"},
363 { 13, "Reserved (OFDM)"},
364 { 14, "Reserved (OFDM)"},
365 { 15, "PHY_RXCDMA.indication"},
366 { 16, "Reserved (OFDMA SS)"},
367 { 17, "Reserved (OFDMA SS)"},
370 #if 0 /* XXX: 'tshark -G values' gives warning on Windows' */
371 static value_string_ext wimaxmacphy_message_type_vals_ext
= VALUE_STRING_EXT_INIT(wimaxmacphy_message_type_vals
);
374 /* ------------------------------------------------------------------------- */
375 /* error code field coding, for all but TXSTART.indication
377 static const value_string wimaxmacphy_prim_status_vals
[]=
380 { 1, "Primitive is not supported"},
381 { 2, "FEC code type is not supported"},
384 { 5, "Transport Media Error"},
385 { 6, "TX data size do not match TXVECTOR"},
386 { 7, "Invalid RX/TX VECTOR format"},
390 /* ---------------------------------------------------------------------------
391 * error code field coding, TXSTART.indication specific, delta is description
395 static const value_string wimaxmacphy_prim_txstart_indication_status_vals
[]=
398 { 1, "Restart flag"},
399 { 2, "FEC code type is not supported"},
402 { 5, "Transport Media Error"},
403 { 6, "TX data size do not match TXVECTOR"},
404 { 7, "Invalid RX/TX VECTOR format"},
408 /* ------------------------------------------------------------------------- */
411 static const value_string wimaxmacphy_prim_sub_burst_burst_split_point_vals
[]=
413 { 0x00, "all 10 bits for burst number"},
414 { 0x01, "1 bit sub-burst and 9 bits burst number"},
415 { 0x02, "2 bit sub-burst and 8 bits burst number"},
416 { 0x03, "3 bit sub-burst and 7 bits burst number"},
417 { 0x04, "4 bit sub-burst and 6 bits burst number"},
418 { 0x05, "5 bit sub-burst and 5 bits burst number"},
419 { 0x06, "6 bit sub-burst and 4 bits burst number"},
420 { 0x07, "7 bit sub-burst and 3 bits burst number"},
425 /* ------------------------------------------------------------------------- */
428 static const value_string wimaxmacphy_prim_phy_request_vals
[]=
430 { 0x0, "LW 1 not present"},
431 { 0x1, "AAS calibration request present in LW 1"},
436 /* ------------------------------------------------------------------------- */
438 static const value_string wimaxmacphy_prim_integrity_vals
[]=
441 { 1, "invalid data"},
445 /* ------------------------------------------------------------------------- */
447 static const value_string wimaxmacphy_prim_indication_type_vals
[]=
450 { 1, "HARQ ACK channel"},
451 { 2, "Fast Feedback Channel"},
452 { 3, "HARQ data burst"},
453 { 4, "MIMO data burst"},
454 { 5, "MIMO HARQ data burst"},
458 /* ------------------------------------------------------------------------- */
460 static const value_string wimaxmacphy_prim_zone_permutation_type_vals
[]=
463 { 0x1, "Optional PUSC"},
464 { 0x2, "AMC - 1 x 6"},
465 { 0x3, "AMC - 2 x 3"},
466 { 0x4, "AMC - 3 x 2"},
470 /* ------------------------------------------------------------------------- */
472 static const value_string wimaxmacphy_prim_phy_aas_report_present_vals
[]=
474 { 0x0, " not present (only LW 0 is significant)"},
475 { 0x1, "AAS info aged out report present"},
479 /* ------------------------------------------------------------------------- */
481 static const value_string wimaxmacphy_prim_harq_ack_ack_valid_vals
[]=
484 { 1, "invalid data"},
488 static const true_false_string set_notset
= {
493 /* ------------------------------------------------------------------------- */
495 static const value_string wimaxmacphy_prim_harq_ack_unnamed_vals
[]=
502 /* ------------------------------------------------------------------------- */
504 static const value_string wimaxmacphy_prim_fast_feedback_valid_vals
[]=
507 { 1, "invalid data"},
511 /* ------------------------------------------------------------------------- */
514 const value_string wimaxmacphy_prim_fast_feedback_sub_type_vals
[]=
516 { 0, "CQI (CINR) measurement"},
517 { 1, "Control feedback"},
521 /* ------------------------------------------------------------------------- */
523 static const value_string wimaxmacphy_subframe_type_vals
[]=
525 { 1, "Downlink Subframe"},
526 { 2, "Uplink Subframe"},
530 /* ------------------------------------------------------------------------- */
532 static const value_string wimaxmacphy_dl_zone_type_vals
[]=
534 { 0x20, "Normal Zone Parameters"},
535 { 0x21, "STC Zone Parameters"},
536 { 0x22, "AAS Zone Parameters"},
537 { 0x23, "Common Sync Symbol Parameters"},
538 { 0x24, "AAS Calibration Zone"},
542 /* ------------------------------------------------------------------------- */
544 static const value_string wimaxmacphy_ul_zone_type_vals
[]=
546 { 0x20, "Normal Zone Parameters"},
548 { 0x22, "AAS Zone Parameters"},
554 /* ------------------------------------------------------------------------- */
556 static const value_string wimaxmacphy_dl_zone_permutation_type_vals
[]=
560 { 0x02, "Optional FUSC"},
561 { 0x03, "AMC - 1 x 6"},
562 { 0x04, "AMC - 2 x 3"},
563 { 0x05, "AMC - 3 x 2"},
569 /* ------------------------------------------------------------------------- */
571 static const value_string wimaxmacphy_ul_zone_permutation_type_vals
[]=
575 { 0x02, "Optional FUSC"},
576 { 0x03, "AMC - 1 x 6"},
577 { 0x04, "AMC - 2 x 3"},
578 { 0x05, "AMC - 3 x 2"},
584 /* ------------------------------------------------------------------------- */
587 const value_string wimaxmacphy_zone_use_all_subchannels_indicator_vals
[]=
589 { 0, "use only subchannels specified in PHY configuration register"},
590 { 1, "use all subchannels"},
594 /* ------------------------------------------------------------------------- */
597 const value_string wimaxmacphy_ul_zone_disable_pusc_subchannel_rotation_vals
[]=
599 { 0, "rotation enabled"},
600 { 1, "rotation disabled"},
604 /* ------------------------------------------------------------------------- */
606 static const value_string wimaxmacphy_zone_dedicated_pilots_vals
[]=
608 { 0, "pilots are broadcast"},
609 { 1, "pilots are dedicated"},
613 /* ------------------------------------------------------------------------- */
615 static const value_string wimaxmacphy_zone_agc_range_extension_vals
[]=
617 { 0, "default range"},
618 { 1, "range to cover SS very close to BS"},
622 /* ------------------------------------------------------------------------- */
624 static const value_string wimaxmacphy_zone_stc_type_vals
[]=
626 { 0x00, "STC using 2 antennas"},
627 { 0x01, "STC using 3 antennas"},
628 { 0x02, "STC using 4 antennas"},
629 { 0x03, "FHDC using 2 antennas"},
633 /* ------------------------------------------------------------------------- */
635 static const value_string wimaxmacphy_matrix_indicator_vals
[]=
643 /* ------------------------------------------------------------------------- */
645 static const value_string wimaxmacphy_zone_midamble_presence_vals
[]=
652 /* ------------------------------------------------------------------------- */
654 static const value_string wimaxmacphy_zone_midamble_boosting_vals
[]=
661 /* ------------------------------------------------------------------------- */
663 static const value_string wimaxmacphy_zone_preamble_configuration_vals
[]=
665 { 0x00, "0 symbols (preambles not supported)"},
667 { 0x02, "2 symbols"},
668 { 0x03, "3 symbols"},
672 /* ------------------------------------------------------------------------- */
674 static const value_string wimaxmacphy_zone_sdma_supported_indication_vals
[]=
676 { 0, "SDMA not supported"},
677 { 1, "SDMA supported"},
681 /* ------------------------------------------------------------------------- */
683 static const value_string wimaxmacphy_zone_preamble_type_vals
[]=
685 { 0, "frequency shifted preamble"},
686 { 1, "time shifted preamble"},
690 /* ------------------------------------------------------------------------- */
692 static const value_string wimaxmacphy_dl_burst_type_vals
[]=
694 { 0x40, "Map Data Burst"},
695 { 0x41, "Normal Data Burst"},
696 { 0x42, "Control Command"},
697 { 0x43, "PAPR Allocation"},
701 /* ------------------------------------------------------------------------- */
703 static const value_string wimaxmacphy_ul_burst_type_vals
[]=
705 { 0x40, "HARQ ACK Channel allocation"},
706 { 0x41, "Fast Feedback Channel allocation"},
707 { 0x42, "Initial Ranging/Handover Ranging region"},
708 { 0x43, "Periodic Ranging/Bandwidth Request region"},
709 { 0x44, "PAPR/Safety Zone allocation"},
710 { 0x45, "Sounding Zone allocation"},
711 { 0x46, "Noise Floor Calculation allocation"},
712 { 0x47, "Normal Data burst"},
713 { 0x48, "Control Command"},
718 /* ------------------------------------------------------------------------- */
720 static const value_string wimaxmacphy_burst_type_extension_vals
[]=
722 { 0x00, "no extended data:"},
728 /* ------------------------------------------------------------------------- */
730 static const value_string wimaxmacphy_modulation_fec_code_type_vals
[]=
732 { 0, "QPSK (CC) 1/2"},
733 { 1, "QPSK (CC) 3/4"},
734 { 2, "16-QAM (CC) 1/2"},
735 { 3, "16-QAM (CC) 3/4"},
736 { 4, "64-QAM (CC) 1/2"},
737 { 5, "64-QAM (CC) 2/3"},
738 { 6, "64-QAM (CC) 3/4"},
739 { 7, "QPSK (BTC) 1/2"},
740 { 8, "QPSK (BTC) 3/4"},
741 { 9, "16-QAM (BTC) 3/5"},
742 { 10, "16-QAM (BTC) 4/5"},
743 { 11, "64-QAM (BTC) 5/8"},
744 { 12, "64-QAM (BTC) 4/5"},
745 { 13, "QPSK (CTC) 1/2"},
747 { 15, "QPSK (CTC) 3/4"},
748 { 16, "16-QAM (CTC) 1/2"},
749 { 17, "16-QAM (CTC) 3/4"},
750 { 18, "64-QAM (CTC) 1/2"},
751 { 19, "64-QAM (CTC) 2/3"},
752 { 20, "64-QAM (CTC) 3/4"},
753 { 21, "64-QAM (CTC) 5/6"},
754 { 22, "QPSK (ZT CC) 1/2"},
755 { 23, "QPSK (ZT CC) 3/4"},
756 { 24, "16-QAM (ZT CC) 1/2"},
757 { 25, "16-QAM (ZT CC) 3/4"},
758 { 26, "64-QAM (ZT CC) 1/2"},
759 { 27, "64-QAM (ZT CC) 2/3"},
760 { 28, "64-QAM (ZT CC) 3/4"},
761 { 29, "QPSK (LDPC) 1/2"},
762 { 30, "QPSK (LDPC) 2/3 A code"},
763 { 31, "QPSK (LDPC) 3/4 A code"},
764 { 32, "16-QAM (LDPC) 1/2"},
765 { 33, "16-QAM (LDPC) 2/3 A code"},
766 { 34, "16-QAM (LDPC) 3/4 A code"},
767 { 35, "64-QAM (LDPC) 1/2"},
768 { 36, "64-QAM (LDPC) 2/3 A code"},
769 { 37, "64-QAM (LDPC) 3/4 A code"},
770 { 38, "QPSK (LDPC) 2/3 B code"},
771 { 39, "QPSK (LDPC) 3/4 B code"},
772 { 40, "16-QAM (LDPC) 2/3 B code"},
773 { 41, "16-QAM (LDPC) 3/4 B code"},
774 { 42, "64-QAM (LDPC) 2/3 B code"},
775 { 43, "64-QAM (LDPC) 3/4 B code"},
776 { 44, "QPSK (CC with optional interleaver) 1/2"},
777 { 45, "QPSK (CC with optional interleaver) 3/4"},
778 { 46, "16-QAM (CC with optional interleaver) 1/2"},
779 { 47, "16-QAM (CC with optional interleaver) 3/4"},
780 { 48, "64-QAM (CC with optional interleaver) 2/3"},
781 { 49, "64-QAM (CC with optional interleaver) 3/4"},
782 { 50, "QPSK (LDPC) 5/6"},
783 { 51, "16-QAM(LDPC) 5/6"},
784 { 52, "64-QAM(LDPC) 5/6"},
787 #if 0 /* XXX: 'tshark -G values' gives warning on Windows' */
788 static value_string_ext wimaxmacphy_modulation_fec_code_type_vals_ext
=
789 VALUE_STRING_EXT_INIT(wimaxmacphy_modulation_fec_code_type_vals
);
792 /* ------------------------------------------------------------------------- */
794 static const value_string wimaxmacphy_burst_boosting_vals
[]=
807 /* ------------------------------------------------------------------------- */
810 const value_string wimaxmacphy_burst_repetition_coding_indication_vals
[]=
812 { 0x00, "No repetition coding"},
813 { 0x01, "Repetition coding of 2"},
814 { 0x02, "Repetition coding of 4"},
815 { 0x03, "Repetition coding of 6"},
819 /* ------------------------------------------------------------------------- */
821 static const value_string wimaxmacphy_dl_sub_burst_type_vals
[]=
824 { 0x61, "HARQ Chase Combining"},
825 { 0x62, "HARQ IR-CTC"},
826 { 0x63, "HARQ IR-CC"},
827 { 0x64, "MIMO Chase Combining"},
828 { 0x65, "MIMO IR-CTC"},
829 { 0x66, "MIMO IR-CC"},
834 /* ------------------------------------------------------------------------- */
836 static const value_string wimaxmacphy_ul_sub_burst_type_vals
[]=
839 { 0x61, "HARQ Chase Combining"},
840 { 0x62, "HARQ IR-CTC"},
841 { 0x63, "HARQ IR-CC"},
842 { 0x64, "MIMO Chase Combining"},
843 { 0x65, "MIMO IR-CTC"},
844 { 0x66, "MIMO IR-CC"},
846 { 0x68, "Mini-subchannel"},
847 { 0x69, "Fast Feedback channel"},
848 { 0x6A, "HARQ ACK subchannel"},
849 { 0x6B, "Sounding signal"},
853 /* ------------------------------------------------------------------------- */
855 static const value_string wimaxmacphy_sub_burst_flush_unnamed_vals
[]=
857 { 0x00, "no flush action"},
858 { 0x02, "flush request to PHY for the ISSID/ACID"},
859 { 0x03, "flush request to PHY for the given ISSID"},
863 /* ------------------------------------------------------------------------- */
865 static const value_string wimaxmacphy_ul_burst_papr_unnamed_vals
[]=
867 { 0, "UL PAPR reduction"},
868 { 1, "UL Safety zone"},
872 /* ------------------------------------------------------------------------- */
874 static const value_string wimaxmacphy_ul_burst_ranging_method_vals
[]=
876 { 0, "ranging over 2 symbols"},
877 { 1, "ranging over 4 symbols"},
881 /* ------------------------------------------------------------------------- */
883 static const value_string wimaxmacphy_ul_burst_sounding_type_vals
[]=
890 /* ------------------------------------------------------------------------- */
893 const value_string wimaxmacphy_ul_burst_sounding_separability_type_vals
[]=
895 { 0, "all subcarriers"},
896 { 1, "decimated subcarriers in a band"},
900 /* ------------------------------------------------------------------------- */
903 const value_string wimaxmacphy_ul_burst_sounding_max_cyclic_shift_indx_vals
[]=
914 /* ------------------------------------------------------------------------- */
917 const value_string wimaxmacphy_ul_burst_sounding_decimation_offset_rand_vals
[]=
919 { 0, "no randomization"},
920 { 1, "randomization"},
924 /* ------------------------------------------------------------------------- */
927 const value_string wimaxmacphy_ul_burst_opt_mimo_matrix_indicator_vals
[]=
929 { 0x00, "Matrix A (STTD)"},
930 { 0x01, "Matrix B (SM)"},
936 /* ------------------------------------------------------------------------- */
938 static const value_string wimaxmacphy_ul_burst_opt_mimo_collaborative_vals
[]=
940 { 0, "non-collaborative"},
941 { 1, "collaborative"},
945 /* ------------------------------------------------------------------------- */
947 static const value_string wimaxmacphy_ul_burst_opt_mimo_antenna_unnamed_vals
[]=
949 { 0, "Single TX antenna SS"},
950 { 1, "Dual TX antenna SS"},
954 /* ------------------------------------------------------------------------- */
956 static const value_string wimaxmacphy_ul_sub_burst_ctype_vals
[]=
958 { 0x00, "2 mini-subchannels adjacent tiles"},
959 { 0x01, "2 mini subchannels interleaved tiles"},
960 { 0x02, "3 mini subchannels"},
961 { 0x03, "6 mini subchannels"},
965 /* ------------------------------------------------------------------------- */
968 static const value_string wimaxmacphy_ul_sub_burst_feedback_sub_type_vals
[]=
970 { 0, "CQI (CINR) measurement"},
971 { 1, "Control feedback"},
976 /* ------------------------------------------------------------------------- */
979 const value_string wimaxmacphy_ul_sub_burst_sounding_power_assignment_vals
[]=
981 { 0x00, "Equal power"},
983 { 0x02, "Interference dependent. Per subcarrier power limit."},
984 { 0x03, "Interference dependent. Total power limit."},
988 /* ------------------------------------------------------------------------- */
990 static const value_string wimaxmacphy_ul_sub_burst_sounding_power_boost_vals
[]=
997 /* ------------------------------------------------------------------------- */
1000 const value_string wimaxmacphy_ul_sub_burst_sounding_allocation_mode_vals
[]=
1007 /* ------------------------------------------------------------------------- */
1009 static const value_string wimaxmacphy_ul_sub_burst_mimo_chase_matrix_vals
[]=
1016 static gint
dissect_wimaxmacphy_dl_sub_burst_descriptor(tvbuff_t
*tvb
, guint offset
, packet_info
*pinfo _U_
, proto_tree
*tree
)
1018 guint start_offset
= offset
;
1019 guint8 sub_burst_type
;
1021 proto_tree
*subtree
;
1023 sub_burst_type
= tvb_get_guint8(tvb
, offset
);
1024 proto_tree_add_item(tree
, hf_wimaxmacphy_dl_sub_burst_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1027 proto_tree_add_item(tree
, hf_wimaxmacphy_sub_burst_number
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1030 proto_tree_add_item(tree
, hf_wimaxmacphy_sub_burst_symbol_offset
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1033 proto_tree_add_item(tree
, hf_wimaxmacphy_sub_burst_subchannel_offset
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1036 proto_tree_add_item(tree
, hf_wimaxmacphy_sub_burst_number_of_slots
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
1039 proto_tree_add_item(tree
, hf_wimaxmacphy_sub_burst_reserved1
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
1042 proto_tree_add_item(tree
, hf_wimaxmacphy_sub_burst_reserved2
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1045 proto_tree_add_item(tree
, hf_wimaxmacphy_sub_burst_modulation_fec_code_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1048 proto_tree_add_item(tree
, hf_wimaxmacphy_sub_burst_issid
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
1051 proto_tree_add_item(tree
, hf_wimaxmacphy_sub_burst_aas_handle
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
1054 proto_tree_add_item(tree
, hf_wimaxmacphy_sub_burst_boosting
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1057 proto_tree_add_item(tree
, hf_wimaxmacphy_sub_burst_repetition_coding_indication
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1060 proto_tree_add_item(tree
, hf_wimaxmacphy_sub_burst_data_length
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
1063 /* sub-burst-specific parts */
1064 switch (sub_burst_type
)
1066 case 0x61: /* HARQ chase combining */
1068 item
= proto_tree_add_text(tree
, tvb
, offset
, 4, "HARQ Chase Specific");
1069 subtree
= proto_item_add_subtree(item
, ett_wimaxmacphy_dl_sub_burst_harq_chase
);
1071 proto_tree_add_item(subtree
, hf_wimaxmacphy_sub_burst_harq_chase_harq_channel_id
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1074 proto_tree_add_item(subtree
, hf_wimaxmacphy_sub_burst_harq_chase_harq_sequence_number
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1077 proto_tree_add_item(subtree
, hf_wimaxmacphy_sub_burst_harq_chase_flush_unnamed
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1080 proto_tree_add_item(subtree
, hf_wimaxmacphy_sub_burst_harq_chase_reserved
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1084 case 0x64: /* MIMO chase combining */
1086 item
= proto_tree_add_text(tree
, tvb
, offset
, 4, "MIMO Chase Specific");
1087 subtree
= proto_item_add_subtree(item
, ett_wimaxmacphy_dl_sub_burst_mimo_chase
);
1089 proto_tree_add_item(subtree
, hf_wimaxmacphy_sub_burst_mimo_chase_harq_channel_id
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1092 proto_tree_add_item(subtree
, hf_wimaxmacphy_sub_burst_mimo_chase_harq_sequence_number
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1095 proto_tree_add_item(subtree
, hf_wimaxmacphy_sub_burst_mimo_chase_flush_unnamed
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1098 proto_tree_add_item(subtree
, hf_wimaxmacphy_sub_burst_mimo_chase_layer_index
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1107 return offset
- start_offset
;
1110 static guint
dissect_wimaxmacphy_dl_burst_descriptor(tvbuff_t
*tvb
, guint offset
, packet_info
*pinfo
, proto_tree
*tree
)
1112 guint start_offset
= offset
;
1113 guint8 burst_type
, burst_type_extension
, sub_burst_descriptor_count
, sub_burst
;
1114 proto_item
*item
, *opt_item
;
1115 proto_tree
*subtree
, *opt_tree
;
1117 burst_type
= tvb_get_guint8(tvb
, offset
);
1118 proto_tree_add_item(tree
, hf_wimaxmacphy_dl_burst_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1121 burst_type_extension
= tvb_get_guint8(tvb
, offset
);
1122 proto_tree_add_item(tree
, hf_wimaxmacphy_burst_type_extension
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1125 proto_tree_add_item(tree
, hf_wimaxmacphy_burst_number
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1128 proto_tree_add_item(tree
, hf_wimaxmacphy_burst_modulation_fec_code_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1131 proto_tree_add_item(tree
, hf_wimaxmacphy_burst_data_length
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
1134 proto_tree_add_item(tree
, hf_wimaxmacphy_burst_ofdma_symbol_offset
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1137 proto_tree_add_item(tree
, hf_wimaxmacphy_burst_subchannel_offset
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1140 proto_tree_add_item(tree
, hf_wimaxmacphy_burst_boosting
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1143 proto_tree_add_item(tree
, hf_wimaxmacphy_burst_repetition_coding_indication
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1146 /* burst-specific parts */
1149 case 0x40: /* map */
1151 item
= proto_tree_add_text(tree
, tvb
, offset
, 4, "MAP Data Burst Specific");
1152 subtree
= proto_item_add_subtree(item
, ett_wimaxmacphy_dl_burst_map
);
1154 proto_tree_add_item(subtree
, hf_wimaxmacphy_dl_burst_map_number_of_slots
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
1157 proto_tree_add_item(subtree
, hf_wimaxmacphy_dl_burst_map_reserved
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
1161 case 0x41: /* normal */
1163 item
= proto_tree_add_text(tree
, tvb
, offset
, 4, "Normal Data Burst Specific");
1164 subtree
= proto_item_add_subtree(item
, ett_wimaxmacphy_dl_burst_normal
);
1166 proto_tree_add_item(subtree
, hf_wimaxmacphy_dl_burst_normal_number_of_symbols
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1169 proto_tree_add_item(subtree
, hf_wimaxmacphy_dl_burst_normal_number_of_subchannels
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1172 proto_tree_add_item(subtree
, hf_wimaxmacphy_dl_burst_normal_aas_handle
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
1176 switch (burst_type_extension
)
1178 case 0x01: /* AAS v1 */
1180 opt_item
= proto_tree_add_text(tree
, tvb
, offset
, 4, "Optional AAS Specific");
1181 opt_tree
= proto_item_add_subtree(opt_item
, ett_wimaxmacphy_dl_burst_opt_aas
);
1183 proto_tree_add_item(opt_tree
, hf_wimaxmacphy_burst_opt_aas_preamble_modifier_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1186 proto_tree_add_item(opt_tree
, hf_wimaxmacphy_burst_opt_aas_preamble_shift_index
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1189 proto_tree_add_item(opt_tree
, hf_wimaxmacphy_burst_opt_aas_reserved
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
1192 /* ??? Algorithm specific Information (per Burst Type extension) */
1195 case 0x02: /* MIMO v1 */
1197 opt_item
= proto_tree_add_text(tree
, tvb
, offset
, 4, "Optional MIMO Specific");
1198 opt_tree
= proto_item_add_subtree(opt_item
, ett_wimaxmacphy_dl_burst_opt_mimo
);
1200 proto_tree_add_item(opt_tree
, hf_wimaxmacphy_burst_opt_mimo_matrix_indicator
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1203 proto_tree_add_item(opt_tree
, hf_wimaxmacphy_burst_opt_mimo_layer_index
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1206 proto_tree_add_item(opt_tree
, hf_wimaxmacphy_dl_burst_opt_mimo_reserved
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
1210 /* ??? Algorithm specific Information (per Burst Type extension) */
1220 case 0x43: /* PAPR */
1222 item
= proto_tree_add_text(tree
, tvb
, offset
, 4, "PAPR Allocation Specific");
1223 subtree
= proto_item_add_subtree(item
, ett_wimaxmacphy_dl_burst_papr
);
1225 proto_tree_add_item(subtree
, hf_wimaxmacphy_burst_papr_number_of_symbols
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1228 proto_tree_add_item(subtree
, hf_wimaxmacphy_burst_papr_number_of_subchannels
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1231 proto_tree_add_item(subtree
, hf_wimaxmacphy_burst_papr_reserved
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
1240 /* sub-burst portion */
1241 sub_burst_descriptor_count
= tvb_get_guint8(tvb
, offset
);
1242 proto_tree_add_item(tree
, hf_wimaxmacphy_number_of_sub_burst_descriptors
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1245 proto_tree_add_item(tree
, hf_wimaxmacphy_sub_burst_padding
, tvb
, offset
, 3, ENC_BIG_ENDIAN
);
1248 /* sub-burst descriptors */
1249 for (sub_burst
= 0; sub_burst
< sub_burst_descriptor_count
; ++sub_burst
)
1251 proto_tree
*sub_burst_descriptor_tree
;
1252 guint sub_burst_descriptor_length
;
1254 item
= proto_tree_add_text(tree
, tvb
, offset
, 1, "Sub-Burst Descriptor %u", sub_burst
);
1255 sub_burst_descriptor_tree
= proto_item_add_subtree(item
, ett_wimaxmacphy_dl_sub_burst_descriptor
);
1257 sub_burst_descriptor_length
= dissect_wimaxmacphy_dl_sub_burst_descriptor(tvb
, offset
,
1258 pinfo
, sub_burst_descriptor_tree
);
1260 proto_item_set_len(item
, sub_burst_descriptor_length
);
1261 offset
+= sub_burst_descriptor_length
;
1264 return offset
- start_offset
;
1267 static guint
dissect_wimaxmacphy_dl_zone_descriptor(tvbuff_t
*tvb
, guint offset
, packet_info
*pinfo
, proto_tree
*tree
)
1269 guint start_offset
= offset
;
1270 guint8 zone_type
, burst_descriptor_count
, burst
;
1272 proto_tree
*subtree
;
1274 zone_type
= tvb_get_guint8(tvb
, offset
);
1275 proto_tree_add_item(tree
, hf_wimaxmacphy_dl_zone_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1278 proto_tree_add_item(tree
, hf_wimaxmacphy_zone_number
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1281 proto_tree_add_item(tree
, hf_wimaxmacphy_zone_start_symbol_offset
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1284 proto_tree_add_item(tree
, hf_wimaxmacphy_zone_end_symbol_offset
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1287 proto_tree_add_item(tree
, hf_wimaxmacphy_dl_zone_permutation_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1290 proto_tree_add_item(tree
, hf_wimaxmacphy_dl_zone_use_all_subchannels_indicator
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1293 proto_tree_add_item(tree
, hf_wimaxmacphy_zone_dl_perm_base
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1296 proto_tree_add_item(tree
, hf_wimaxmacphy_zone_prbs_id
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1299 proto_tree_add_item(tree
, hf_wimaxmacphy_zone_dedicated_pilots
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1302 proto_tree_add_item(tree
, hf_wimaxmacphy_zone_reserved
, tvb
, offset
, 3, ENC_BIG_ENDIAN
);
1305 /* zone-specific parts */
1308 case 0x21: /* STC */
1310 item
= proto_tree_add_text(tree
, tvb
, offset
, 4, "STC Zone Specific");
1311 subtree
= proto_item_add_subtree(item
, ett_wimaxmacphy_dl_zone_stc
);
1313 proto_tree_add_item(subtree
, hf_wimaxmacphy_zone_stc_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1316 proto_tree_add_item(subtree
, hf_wimaxmacphy_zone_matrix_indicator
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1319 proto_tree_add_item(subtree
, hf_wimaxmacphy_zone_midamble_presence
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1322 proto_tree_add_item(subtree
, hf_wimaxmacphy_zone_midamble_boosting
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1326 case 0x22: /* AAS */
1328 item
= proto_tree_add_text(tree
, tvb
, offset
, 4, "AAS Zone Specific");
1329 subtree
= proto_item_add_subtree(item
, ett_wimaxmacphy_dl_zone_aas
);
1331 proto_tree_add_item(subtree
, hf_wimaxmacphy_zone_preamble_configuration
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1334 proto_tree_add_item(subtree
, hf_wimaxmacphy_zone_sdma_supported_indication
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1337 proto_tree_add_item(subtree
, hf_wimaxmacphy_dl_zone_aas_reserved
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
1340 /* ??? Algorithm Specific Information (per Zone Type) */
1349 burst_descriptor_count
= tvb_get_guint8(tvb
, offset
);
1350 proto_tree_add_item(tree
, hf_wimaxmacphy_number_of_burst_descriptors
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1353 proto_tree_add_item(tree
, hf_wimaxmacphy_burst_padding
, tvb
, offset
, 3, ENC_BIG_ENDIAN
);
1356 /* burst descriptors */
1357 for (burst
= 0; burst
< burst_descriptor_count
; ++burst
)
1359 proto_tree
*burst_descriptor_tree
;
1360 guint burst_descriptor_length
;
1362 /* note: we'll adjust the length later */
1363 item
= proto_tree_add_text(tree
, tvb
, offset
, 1, "Burst Descriptor %u", burst
);
1364 burst_descriptor_tree
= proto_item_add_subtree(item
, ett_wimaxmacphy_dl_burst_descriptor
);
1366 burst_descriptor_length
= dissect_wimaxmacphy_dl_burst_descriptor(
1367 tvb
, offset
, pinfo
, burst_descriptor_tree
);
1369 proto_item_set_len(item
, burst_descriptor_length
);
1371 offset
+= burst_descriptor_length
;
1374 return offset
- start_offset
;
1377 static guint
dissect_wimaxmacphy_dl_subframe_descriptor(tvbuff_t
*tvb
, guint offset
, packet_info
*pinfo
, proto_tree
*tree
)
1379 guint start_offset
= offset
;
1380 guint8 zone_descriptor_count
;
1383 proto_tree_add_item(tree
, hf_wimaxmacphy_subframe_subframe_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1386 proto_tree_add_item(tree
, hf_wimaxmacphy_subframe_frame_number
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1389 proto_tree_add_item(tree
, hf_wimaxmacphy_subframe_downlink_reserved1
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1392 proto_tree_add_item(tree
, hf_wimaxmacphy_subframe_phy_sap_version_number
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1395 proto_tree_add_item(tree
, hf_wimaxmacphy_subframe_downlink_reserved2
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
1399 zone_descriptor_count
= tvb_get_guint8(tvb
, offset
);
1400 proto_tree_add_item(tree
, hf_wimaxmacphy_number_of_zone_descriptors
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1403 proto_tree_add_item(tree
, hf_wimaxmacphy_number_of_zone_descriptors
, tvb
, offset
, 3, ENC_BIG_ENDIAN
);
1406 /* zone descriptors */
1407 for (zone
= 0; zone
< zone_descriptor_count
; ++zone
)
1410 proto_tree
*zone_descriptor_tree
;
1411 guint zone_descriptor_length
;
1413 item
= proto_tree_add_text(tree
, tvb
, offset
, 1, "Zone Descriptor %u", zone
);
1414 zone_descriptor_tree
= proto_item_add_subtree(item
, ett_wimaxmacphy_dl_zone_descriptor
);
1416 zone_descriptor_length
= dissect_wimaxmacphy_dl_zone_descriptor(
1417 tvb
, offset
, pinfo
, zone_descriptor_tree
);
1419 proto_item_set_len(item
, zone_descriptor_length
);
1421 offset
+= zone_descriptor_length
;
1424 return offset
- start_offset
;
1427 static gint
dissect_wimaxmacphy_ul_sub_burst_sub_allocation_specific_part(tvbuff_t
*tvb
, guint offset
,
1428 packet_info
*pinfo _U_
, proto_tree
*tree
, guint8 sub_burst_type
)
1430 guint start_offset
= offset
;
1431 proto_item
*item
, *opt_item
;
1432 proto_tree
*subtree
, *opt_tree
;
1434 item
= proto_tree_add_text(tree
, tvb
, offset
, 1, "Sub-Allocation Specific");
1435 subtree
= proto_item_add_subtree(item
, ett_wimaxmacphy_ul_sub_burst_sub_allocation_specific
);
1437 proto_tree_add_item(subtree
, hf_wimaxmacphy_sub_burst_symbol_offset
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1440 proto_tree_add_item(subtree
, hf_wimaxmacphy_sub_burst_subchannel_offset
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1443 proto_tree_add_item(subtree
, hf_wimaxmacphy_sub_burst_number_of_slots
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
1446 proto_tree_add_item(subtree
, hf_wimaxmacphy_sub_burst_data_length
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
1449 proto_tree_add_item(subtree
, hf_wimaxmacphy_sub_burst_repetition_coding_indication
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1452 proto_tree_add_item(subtree
, hf_wimaxmacphy_sub_burst_modulation_fec_code_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1455 proto_tree_add_item(subtree
, hf_wimaxmacphy_sub_burst_reserved1
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
1458 /* HARQ chase and MIMO chase specific parts */
1459 switch (sub_burst_type
)
1461 case 0x61: /* HARQ chase combining */
1463 opt_item
= proto_tree_add_text(tree
, tvb
, offset
, 4, "HARQ Chase Specific");
1464 opt_tree
= proto_item_add_subtree(opt_item
, ett_wimaxmacphy_ul_sub_burst_harq_chase
);
1466 proto_tree_add_item(opt_tree
, hf_wimaxmacphy_sub_burst_harq_chase_harq_channel_id
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1469 proto_tree_add_item(opt_tree
, hf_wimaxmacphy_sub_burst_harq_chase_harq_sequence_number
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1472 proto_tree_add_item(opt_tree
, hf_wimaxmacphy_sub_burst_harq_chase_flush_unnamed
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1475 proto_tree_add_item(opt_tree
, hf_wimaxmacphy_sub_burst_harq_chase_reserved
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1479 case 0x64: /* MIMO chase combining */
1481 opt_item
= proto_tree_add_text(tree
, tvb
, offset
, 4, "MIMO Chase Specific");
1482 opt_tree
= proto_item_add_subtree(opt_item
, ett_wimaxmacphy_ul_sub_burst_mimo_chase
);
1484 proto_tree_add_item(opt_tree
, hf_wimaxmacphy_sub_burst_mimo_chase_harq_channel_id
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1487 proto_tree_add_item(opt_tree
, hf_wimaxmacphy_sub_burst_mimo_chase_harq_sequence_number
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1490 proto_tree_add_item(opt_tree
, hf_wimaxmacphy_sub_burst_mimo_chase_flush_unnamed
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1493 proto_tree_add_item(opt_tree
, hf_wimaxmacphy_ul_sub_burst_mimo_chase_matrix
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1502 proto_item_set_len(item
, offset
- start_offset
);
1504 return offset
- start_offset
;
1507 static gint
dissect_wimaxmacphy_ul_sub_burst_descriptor(tvbuff_t
*tvb
, guint offset
, packet_info
*pinfo _U_
, proto_tree
*tree
)
1509 guint8 sub_burst_type
;
1510 proto_item
*item
, *feedback_item
;
1511 proto_tree
*subtree
, *feedback_tree
;
1512 guint start_offset
= offset
;
1514 sub_burst_type
= tvb_get_guint8(tvb
, offset
);
1515 proto_tree_add_item(tree
, hf_wimaxmacphy_ul_sub_burst_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1518 proto_tree_add_item(tree
, hf_wimaxmacphy_sub_burst_number
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1521 proto_tree_add_item(tree
, hf_wimaxmacphy_sub_burst_issid
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
1524 proto_tree_add_item(tree
, hf_wimaxmacphy_sub_burst_aas_handle
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
1527 proto_tree_add_item(tree
, hf_wimaxmacphy_sub_burst_reserved1
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
1530 /* sub-burst-specific parts */
1531 switch (sub_burst_type
)
1533 case 0x68: /* mini-subchannel */
1535 item
= proto_tree_add_text(tree
, tvb
, offset
, 4, "Mini-Subchannel Allocation Specific");
1536 subtree
= proto_item_add_subtree(item
, ett_wimaxmacphy_ul_sub_burst_mini_subchannel
);
1538 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_sub_burst_ctype
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1541 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_sub_burst_mini_subchannel_index
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1544 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_sub_burst_mini_reserved
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
1548 case 0x69: /* fast feedback */
1550 item
= proto_tree_add_text(tree
, tvb
, offset
, 4, "Fast Feedback Allocation Specific");
1551 subtree
= proto_item_add_subtree(item
, ett_wimaxmacphy_ul_sub_burst_fast_feedback
);
1553 feedback_item
= proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_sub_burst_feedback_type_coding
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1554 feedback_tree
= proto_item_add_subtree(feedback_item
, ett_wimaxmacphy_ul_feedback_type_coding
);
1555 proto_tree_add_item(feedback_tree
, hf_wimaxmacphy_ul_sub_burst_feedback_type_coding_bit0
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1556 proto_tree_add_item(feedback_tree
, hf_wimaxmacphy_ul_sub_burst_feedback_type_coding_bit1
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1557 proto_tree_add_item(feedback_tree
, hf_wimaxmacphy_ul_sub_burst_feedback_type_coding_bit2
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1558 proto_tree_add_item(feedback_tree
, hf_wimaxmacphy_ul_sub_burst_feedback_type_coding_bit3
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1559 proto_tree_add_item(feedback_tree
, hf_wimaxmacphy_ul_sub_burst_feedback_type_coding_bit4
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1560 proto_tree_add_item(feedback_tree
, hf_wimaxmacphy_ul_sub_burst_feedback_type_coding_bit5
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1561 proto_tree_add_item(feedback_tree
, hf_wimaxmacphy_ul_sub_burst_feedback_type_coding_bit6
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1562 proto_tree_add_item(feedback_tree
, hf_wimaxmacphy_ul_sub_burst_feedback_type_coding_bit7
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1565 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_sub_burst_feedback_reserved1
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
1566 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_sub_burst_feedback_sub_type
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
1567 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_sub_burst_feedback_cqich_id
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
1570 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_sub_burst_feedback_reserved2
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1571 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_sub_burst_feedback_slot_offset
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1575 case 0x6a: /* HARQ ACK */
1577 item
= proto_tree_add_text(tree
, tvb
, offset
, 4, "HARQ ACK Subchannel Allocation Specific");
1578 subtree
= proto_item_add_subtree(item
, ett_wimaxmacphy_ul_sub_burst_harq_ack
);
1580 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_sub_burst_harq_ack_acid
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
1581 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_sub_burst_harq_ack_reserved
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
1585 case 0x6b: /* sounding signal */
1587 item
= proto_tree_add_text(tree
, tvb
, offset
, 11, "Sounding Signal Specific");
1588 subtree
= proto_item_add_subtree(item
, ett_wimaxmacphy_ul_sub_burst_sounding_signal
);
1590 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_sub_burst_sounding_symbol_index
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1593 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_sub_burst_sounding_power_assignment
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1596 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_sub_burst_sounding_power_boost
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1599 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_sub_burst_sounding_allocation_mode
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1602 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_sub_burst_sounding_start_freq_band
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1605 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_sub_burst_sounding_num_freq_bands
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1608 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_sub_burst_sounding_band_bit_map
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
1611 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_sub_burst_sounding_cyclic_time_shift
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1614 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_sub_burst_sounding_decimation_offset
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1617 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_sub_burst_sounding_reserved
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1622 offset
+= dissect_wimaxmacphy_ul_sub_burst_sub_allocation_specific_part(
1623 tvb
, offset
, pinfo
, tree
, sub_burst_type
);
1627 return offset
- start_offset
;
1630 static guint
dissect_wimaxmacphy_ul_burst_descriptor(tvbuff_t
*tvb
, guint offset
, packet_info
*pinfo
, proto_tree
*tree
)
1632 guint8 burst_type
, burst_type_extension
;
1633 guint8 sub_burst_descriptor_count
, sub_burst
;
1634 proto_item
*item
, *opt_item
, *pilot_patterns_item
;
1635 proto_tree
*subtree
, *opt_tree
, *pilot_patterns_tree
;
1636 guint start_offset
= offset
;
1638 burst_type
= tvb_get_guint8(tvb
, offset
);
1639 proto_tree_add_item(tree
, hf_wimaxmacphy_ul_burst_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1642 burst_type_extension
= tvb_get_guint8(tvb
, offset
);
1643 proto_tree_add_item(tree
, hf_wimaxmacphy_burst_type_extension
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1646 proto_tree_add_item(tree
, hf_wimaxmacphy_burst_number
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1649 proto_tree_add_item(tree
, hf_wimaxmacphy_burst_modulation_fec_code_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1652 proto_tree_add_item(tree
, hf_wimaxmacphy_burst_data_length
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
1655 proto_tree_add_item(tree
, hf_wimaxmacphy_burst_ofdma_symbol_offset
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1658 proto_tree_add_item(tree
, hf_wimaxmacphy_burst_subchannel_offset
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1661 proto_tree_add_item(tree
, hf_wimaxmacphy_burst_reserved
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1664 proto_tree_add_item(tree
, hf_wimaxmacphy_burst_repetition_coding_indication
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1667 proto_tree_add_item(tree
, hf_wimaxmacphy_burst_issid
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
1670 proto_tree_add_item(tree
, hf_wimaxmacphy_burst_aas_handle
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
1673 /* burst-specific parts */
1676 case 0x40: /* HARQ ACK channel */
1678 item
= proto_tree_add_text(tree
, tvb
, offset
, 4, "HARQ ACK Channel Specific");
1679 subtree
= proto_item_add_subtree(item
, ett_wimaxmacphy_ul_burst_harq_ack
);
1681 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_burst_harq_ack_number_of_symbols
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1684 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_burst_harq_ack_number_of_subchannels
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1687 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_burst_harq_ack_reserved
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
1691 case 0x41: /* fast feedback channel */
1693 item
= proto_tree_add_text(tree
, tvb
, offset
, 4, "Fast Feedback Channel Specific");
1694 subtree
= proto_item_add_subtree(item
, ett_wimaxmacphy_ul_burst_fast_feedback
);
1696 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_burst_fast_number_of_symbols
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1699 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_burst_fast_number_of_subchannels
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1702 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_burst_fast_reserved
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
1706 case 0x42: /* initial ranging/handover ranging */
1708 item
= proto_tree_add_text(tree
, tvb
, offset
, 8, "Initial Ranging/Handover Ranging Allocation Specific");
1709 subtree
= proto_item_add_subtree(item
, ett_wimaxmacphy_ul_burst_initial_ranging
);
1711 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_burst_initial_number_of_symbols
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1714 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_burst_initial_number_of_subchannels
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1717 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_burst_initial_ranging_method
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1720 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_burst_initial_reserved1
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1723 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_burst_initial_zone_xid
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
1726 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_burst_initial_reserved2
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
1730 case 0x43: /* periodic ranging/bandwidth request */
1732 item
= proto_tree_add_text(tree
, tvb
, offset
, 8, "Periodic Ranging/Bandwidth Request Allocation Specific");
1733 subtree
= proto_item_add_subtree(item
, ett_wimaxmacphy_ul_burst_periodic_ranging
);
1735 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_burst_periodic_number_of_symbols
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1738 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_burst_periodic_number_of_subchannels
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1741 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_burst_periodic_ranging_method
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1744 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_burst_periodic_reserved1
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1747 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_burst_periodic_zone_xid
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
1750 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_burst_periodic_reserved2
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
1754 case 0x44: /* PAPR/safety zone */
1756 item
= proto_tree_add_text(tree
, tvb
, offset
, 4, "PAPR/Safety Zone Channel Specific");
1757 subtree
= proto_item_add_subtree(item
, ett_wimaxmacphy_ul_burst_papr_safety_zone
);
1759 proto_tree_add_item(subtree
, hf_wimaxmacphy_burst_papr_number_of_symbols
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1762 proto_tree_add_item(subtree
, hf_wimaxmacphy_burst_papr_number_of_subchannels
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1765 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_burst_papr_unnamed
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1768 proto_tree_add_item(subtree
, hf_wimaxmacphy_burst_papr_reserved
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1772 case 0x45: /* sounding zone */
1774 item
= proto_tree_add_text(tree
, tvb
, offset
, 8, "Sounding Zone Allocation Specific");
1775 subtree
= proto_item_add_subtree(item
, ett_wimaxmacphy_ul_burst_sounding_zone
);
1777 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_burst_sounding_number_of_symbols
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1780 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_burst_sounding_number_of_subchannels
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1783 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_burst_sounding_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1786 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_burst_sounding_separability_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1789 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_burst_sounding_max_cyclic_shift_indx
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1792 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_burst_sounding_decimation_value
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1795 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_burst_sounding_decimation_offset_rand
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1798 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_burst_sounding_reserved
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1802 case 0x46: /* noise floor calculation */
1804 item
= proto_tree_add_text(tree
, tvb
, offset
, 4, "Noise Floor Calculation Allocation Specific");
1805 subtree
= proto_item_add_subtree(item
, ett_wimaxmacphy_ul_burst_noise_floor
);
1807 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_burst_noise_number_of_symbols
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1810 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_burst_noise_number_of_subchannels
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1813 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_burst_noise_reserved
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
1817 case 0x47: /* normal data */
1819 item
= proto_tree_add_text(tree
, tvb
, offset
, 4, "Normal Data Burst Specific");
1820 subtree
= proto_item_add_subtree(item
, ett_wimaxmacphy_ul_burst_normal_data
);
1822 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_burst_normal_number_of_slots
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
1825 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_burst_normal_reserved
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
1829 switch (burst_type_extension
)
1831 case 0x01: /* AAS v1 */
1833 opt_item
= proto_tree_add_text(tree
, tvb
, offset
, 4, "Optional AAS Specific");
1834 opt_tree
= proto_item_add_subtree(opt_item
, ett_wimaxmacphy_ul_burst_opt_aas
);
1836 proto_tree_add_item(opt_tree
, hf_wimaxmacphy_burst_opt_aas_preamble_modifier_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1839 proto_tree_add_item(opt_tree
, hf_wimaxmacphy_burst_opt_aas_reserved
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
1842 proto_tree_add_item(opt_tree
, hf_wimaxmacphy_burst_opt_aas_preamble_shift_index
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1845 /* ??? Algorithm specific Information (per Burst Type extension) */
1848 case 0x02: /* MIMO v1 */
1850 opt_item
= proto_tree_add_text(tree
, tvb
, offset
, 4, "Optional MIMO Specific");
1851 opt_tree
= proto_item_add_subtree(opt_item
, ett_wimaxmacphy_ul_burst_opt_mimo
);
1853 proto_tree_add_item(opt_tree
, hf_wimaxmacphy_ul_burst_opt_mimo_matrix_indicator
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1856 /* optional MIMO-specific - pilot patterns */
1857 pilot_patterns_item
= proto_tree_add_item(opt_tree
, hf_wimaxmacphy_ul_burst_opt_mimo_pilot_patterns
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1858 pilot_patterns_tree
= proto_item_add_subtree(pilot_patterns_item
, ett_wimaxmacphy_ul_pilot_patterns
);
1859 proto_tree_add_item(pilot_patterns_tree
, hf_wimaxmacphy_ul_burst_opt_mimo_pilot_patterns_bit0
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1860 proto_tree_add_item(pilot_patterns_tree
, hf_wimaxmacphy_ul_burst_opt_mimo_pilot_patterns_bit1
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1861 proto_tree_add_item(pilot_patterns_tree
, hf_wimaxmacphy_ul_burst_opt_mimo_pilot_patterns_bit2
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1862 proto_tree_add_item(pilot_patterns_tree
, hf_wimaxmacphy_ul_burst_opt_mimo_pilot_patterns_bit3
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1865 proto_tree_add_item(opt_tree
, hf_wimaxmacphy_ul_burst_opt_mimo_collaborative
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1866 proto_tree_add_item(opt_tree
, hf_wimaxmacphy_ul_burst_opt_mimo_antenna_unnamed
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1869 proto_tree_add_item(opt_tree
, hf_wimaxmacphy_burst_opt_mimo_layer_index
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1872 /* ??? Algorithm specific Information (per Burst Type extension) */
1887 /* sub-burst portion */
1888 sub_burst_descriptor_count
= tvb_get_guint8(tvb
, offset
);
1889 proto_tree_add_item(tree
, hf_wimaxmacphy_number_of_sub_burst_descriptors
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1892 proto_tree_add_item(tree
, hf_wimaxmacphy_sub_burst_padding
, tvb
, offset
, 3, ENC_BIG_ENDIAN
);
1895 /* sub-burst descriptors */
1896 for (sub_burst
= 0; sub_burst
< sub_burst_descriptor_count
; ++sub_burst
)
1898 proto_tree
*sub_burst_descriptor_tree
;
1899 guint sub_burst_descriptor_length
;
1901 item
= proto_tree_add_text(tree
, tvb
, offset
, 1, "Sub-Burst Descriptor %u", sub_burst
);
1902 sub_burst_descriptor_tree
= proto_item_add_subtree(item
, ett_wimaxmacphy_ul_sub_burst_descriptor
);
1904 sub_burst_descriptor_length
= dissect_wimaxmacphy_ul_sub_burst_descriptor(tvb
, offset
,
1905 pinfo
, sub_burst_descriptor_tree
);
1907 proto_item_set_len(item
, sub_burst_descriptor_length
);
1909 offset
+= sub_burst_descriptor_length
;
1912 return offset
- start_offset
;
1915 static guint
dissect_wimaxmacphy_ul_zone_descriptor(tvbuff_t
*tvb
, guint offset
, packet_info
*pinfo
, proto_tree
*tree
)
1917 guint start_offset
= offset
;
1918 guint8 zone_type
, burst_descriptor_count
, burst
;
1921 zone_type
= tvb_get_guint8(tvb
, offset
);
1922 proto_tree_add_item(tree
, hf_wimaxmacphy_ul_zone_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1925 proto_tree_add_item(tree
, hf_wimaxmacphy_zone_number
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1928 proto_tree_add_item(tree
, hf_wimaxmacphy_zone_start_symbol_offset
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1931 proto_tree_add_item(tree
, hf_wimaxmacphy_zone_end_symbol_offset
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1934 proto_tree_add_item(tree
, hf_wimaxmacphy_ul_zone_permutation_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1937 proto_tree_add_item(tree
, hf_wimaxmacphy_ul_zone_use_all_subchannels_indicator
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1938 proto_tree_add_item(tree
, hf_wimaxmacphy_ul_zone_disable_pusc_subchannel_rotation
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1941 proto_tree_add_item(tree
, hf_wimaxmacphy_zone_ul_perm_base
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1944 proto_tree_add_item(tree
, hf_wimaxmacphy_zone_agc_range_extension
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1947 /* zone-specific parts */
1950 case 0x22: /* AAS */
1952 proto_tree
*subtree
;
1954 item
= proto_tree_add_text(tree
, tvb
, offset
, 4, "AAS Zone Specific");
1955 subtree
= proto_item_add_subtree(item
, ett_wimaxmacphy_ul_zone_aas
);
1957 proto_tree_add_item(subtree
, hf_wimaxmacphy_zone_preamble_configuration
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1960 proto_tree_add_item(subtree
, hf_wimaxmacphy_zone_preamble_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1963 proto_tree_add_item(subtree
, hf_wimaxmacphy_zone_sdma_supported_indication
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1966 proto_tree_add_item(subtree
, hf_wimaxmacphy_ul_zone_aas_reserved
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1969 /* ??? Algorithm Specific Information (per Zone Type) */
1978 burst_descriptor_count
= tvb_get_guint8(tvb
, offset
);
1979 proto_tree_add_item(tree
, hf_wimaxmacphy_number_of_burst_descriptors
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
1982 proto_tree_add_item(tree
, hf_wimaxmacphy_burst_padding
, tvb
, offset
, 3, ENC_BIG_ENDIAN
);
1985 /* burst descriptors */
1986 for (burst
= 0; burst
< burst_descriptor_count
; ++burst
)
1988 proto_tree
*burst_descriptor_tree
;
1989 guint burst_descriptor_length
;
1991 item
= proto_tree_add_text(tree
, tvb
, offset
, 1, "Burst Descriptor %u", burst
);
1992 burst_descriptor_tree
= proto_item_add_subtree(item
, ett_wimaxmacphy_ul_burst_descriptor
);
1994 burst_descriptor_length
= dissect_wimaxmacphy_ul_burst_descriptor(
1995 tvb
, offset
, pinfo
, burst_descriptor_tree
);
1996 proto_item_set_len(item
, burst_descriptor_length
);
1998 offset
+= burst_descriptor_length
;
2001 return offset
- start_offset
;
2004 static guint
dissect_wimaxmacphy_ul_subframe_descriptor(tvbuff_t
*tvb
, guint offset
, packet_info
*pinfo
, proto_tree
*tree
)
2006 guint start_offset
= offset
;
2007 guint8 zone_descriptor_count
;
2010 proto_tree_add_item(tree
, hf_wimaxmacphy_subframe_subframe_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2013 proto_tree_add_item(tree
, hf_wimaxmacphy_subframe_frame_number
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2016 proto_tree_add_item(tree
, hf_wimaxmacphy_subframe_downlink_reserved1
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2019 proto_tree_add_item(tree
, hf_wimaxmacphy_subframe_phy_sap_version_number
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2022 proto_tree_add_item(tree
, hf_wimaxmacphy_subframe_allocation_start_time
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
2025 zone_descriptor_count
= tvb_get_guint8(tvb
, offset
);
2026 proto_tree_add_item(tree
, hf_wimaxmacphy_number_of_zone_descriptors
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2029 proto_tree_add_item(tree
, hf_wimaxmacphy_zone_padding
, tvb
, offset
, 3, ENC_BIG_ENDIAN
);
2032 /* -----------------------------------------------------------------------
2034 * -----------------------------------------------------------------------
2037 for (zone
= 0; zone
< zone_descriptor_count
; ++zone
)
2040 proto_tree
*zone_descriptor_tree
;
2041 guint zone_descriptor_length
;
2043 item
= proto_tree_add_text(tree
, tvb
, offset
, 1, "Zone Descriptor %u", zone
);
2044 zone_descriptor_tree
= proto_item_add_subtree(item
, ett_wimaxmacphy_ul_zone_descriptor
);
2046 zone_descriptor_length
= dissect_wimaxmacphy_ul_zone_descriptor(
2047 tvb
, offset
, pinfo
, zone_descriptor_tree
);
2049 proto_item_set_len(item
, zone_descriptor_length
);
2050 offset
+= zone_descriptor_length
;
2053 return offset
- start_offset
;
2056 static guint
dissect_wimaxmacphy_phy_txstart_request(tvbuff_t
*tvb
, guint offset
, packet_info
*pinfo
, proto_tree
*tree
)
2058 guint16 txvector_length
;
2059 guint subframe_descriptor_length
;
2061 txvector_length
= tvb_get_ntohs(tvb
, offset
);
2062 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_length_of_txvector
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
2065 subframe_descriptor_length
= dissect_wimaxmacphy_dl_subframe_descriptor(
2066 tvb
, offset
, pinfo
, tree
);
2068 offset
+= subframe_descriptor_length
;
2070 if (subframe_descriptor_length
< txvector_length
)
2071 proto_tree_add_item(tree
, hf_wimaxmacphy_unknown
, tvb
, offset
, txvector_length
- subframe_descriptor_length
, ENC_NA
);
2073 return txvector_length
+ 2;
2076 static guint
dissect_wimaxmacphy_phy_txstart_confirmation(tvbuff_t
*tvb
, guint offset
, packet_info
*pinfo _U_
, proto_tree
*tree
)
2078 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_status
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2081 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_reserved2
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2082 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_next_frame_number
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2088 static guint
dissect_wimaxmacphy_phy_txstart_indication(tvbuff_t
*tvb
, guint offset
, packet_info
*pinfo _U_
, proto_tree
*tree
)
2090 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_txstart_indication_status
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2093 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_extended_frame_number
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2094 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_current_frame_number_lsn
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2097 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_reserved1
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2100 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_initial_frame_number
, tvb
, offset
, 3, ENC_BIG_ENDIAN
);
2106 static guint
dissect_wimaxmacphy_phy_txsdu_request(tvbuff_t
*tvb
, guint offset
, packet_info
*pinfo _U_
, proto_tree
*tree
)
2110 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_dl_zone_number
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
2111 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_sub_burst_burst_split_point
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
2112 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_dl_sub_burst_burst_number
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
2115 length
= tvb_reported_length_remaining(tvb
, offset
);
2116 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_phy_sdu
, tvb
, offset
, length
, ENC_NA
);
2121 static guint
dissect_wimaxmacphy_phy_txsdu_confirmation(tvbuff_t
*tvb
, guint offset
, packet_info
*pinfo _U_
, proto_tree
*tree
)
2123 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_dl_zone_number
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
2124 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_sub_burst_burst_split_point
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
2125 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_dl_sub_burst_burst_number
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
2128 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_reserved5
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
2131 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_status
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2134 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_reserved2
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2135 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_next_frame_number
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2141 static guint
dissect_wimaxmacphy_phy_txend_indication(tvbuff_t
*tvb
, guint offset
, packet_info
*pinfo _U_
, proto_tree
*tree
)
2143 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_status
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2146 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_phy_request
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2147 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_current_frame_number_lsn
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2150 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_requested_aas_calibration_zone_size
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2153 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_requested_aas_calibration_zone_alloc
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2154 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_number_of_consecutive_frames_with_aas
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2157 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_reserved5
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
2163 static guint
dissect_wimaxmacphy_phy_rxstart_request(tvbuff_t
*tvb
, guint offset
, packet_info
*pinfo
, proto_tree
*tree
)
2165 guint16 rxvector_length
;
2166 guint subframe_descriptor_length
;
2168 rxvector_length
= tvb_get_ntohs(tvb
, offset
);
2169 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_length_of_rxvector
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
2172 subframe_descriptor_length
= dissect_wimaxmacphy_ul_subframe_descriptor(
2173 tvb
, offset
, pinfo
, tree
);
2175 offset
+= subframe_descriptor_length
;
2177 /* check for unprocessed bytes */
2178 if (subframe_descriptor_length
< rxvector_length
)
2179 proto_tree_add_item(tree
, hf_wimaxmacphy_unknown
, tvb
, offset
, rxvector_length
- subframe_descriptor_length
, ENC_NA
);
2181 return rxvector_length
+ 2;
2184 static guint
dissect_wimaxmacphy_phy_rxstart_confirmation(tvbuff_t
*tvb
, guint offset
, packet_info
*pinfo _U_
, proto_tree
*tree
)
2186 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_status
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2189 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_reserved2
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2190 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_frame_number
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2196 static guint
dissect_wimaxmacphy_phy_rxstart_indication(tvbuff_t
*tvb
, guint offset
, packet_info
*pinfo _U_
, proto_tree
*tree
)
2198 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_status
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2201 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_reserved2
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2202 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_current_frame_number_lsn
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2208 static guint
dissect_wimaxmacphy_phy_rxsdu_indication(tvbuff_t
*tvb
, guint offset
, packet_info
*pinfo _U_
, proto_tree
*tree
)
2210 guint8 indication_type
;
2211 proto_item
*item
, *feedback_item
;
2212 proto_tree
*subtree
, *feedback_tree
;
2213 guint length
, start_offset
= offset
;
2215 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_issid
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
2218 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_integrity
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
2219 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_number_of_bytes_received
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
2222 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_rssi_per_subcarrier_level
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2225 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_cinr
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2228 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_reserved1
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2231 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_power_offset
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2234 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_current_frame_number_msn
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2235 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_acid_for_harq_data_bursts
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2238 indication_type
= (tvb_get_guint8(tvb
, offset
) >> 4) & 0x0F;
2239 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_indication_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2240 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_zone_permutation_type
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2241 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_update_aas_handle_in_mac
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2244 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_aas_handle
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
2247 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_time_deviation
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
2250 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_frequency_deviation
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
2253 switch (indication_type
)
2255 case 0: /* data burst */
2257 length
= tvb_reported_length_remaining(tvb
, offset
);
2258 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_phy_sdu
, tvb
, offset
, length
, ENC_NA
);
2262 case 1: /* HARQ ACK */
2264 item
= proto_tree_add_text(tree
, tvb
, offset
, 4, "HARQ ACK channel data format");
2265 subtree
= proto_item_add_subtree(item
, ett_wimaxmacphy_prim_harq_ack
);
2267 proto_tree_add_item(subtree
, hf_wimaxmacphy_prim_harq_ack_issid
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
2270 proto_tree_add_item(subtree
, hf_wimaxmacphy_prim_harq_ack_acid
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2271 proto_tree_add_item(subtree
, hf_wimaxmacphy_prim_harq_ack_reserved1
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2272 proto_tree_add_item(subtree
, hf_wimaxmacphy_prim_harq_ack_ack_valid
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2273 proto_tree_add_item(subtree
, hf_wimaxmacphy_prim_harq_ack_unnamed
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2276 proto_tree_add_item(subtree
, hf_wimaxmacphy_prim_harq_ack_reserved2
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2280 case 2: /* fast feedback */
2282 item
= proto_tree_add_text(tree
, tvb
, offset
, 8, "Fast Feedback channel data format");
2283 subtree
= proto_item_add_subtree(item
, ett_wimaxmacphy_prim_harq_ack
);
2285 proto_tree_add_item(subtree
, hf_wimaxmacphy_prim_fast_issid
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
2288 proto_tree_add_item(subtree
, hf_wimaxmacphy_prim_fast_cqich_id
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
2291 feedback_item
= proto_tree_add_item(subtree
, hf_wimaxmacphy_prim_fast_feedback_type_coding
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2292 feedback_tree
= proto_item_add_subtree(feedback_item
, ett_wimaxmacphy_prim_fast_feedback_type_coding
);
2293 proto_tree_add_item(feedback_tree
, hf_wimaxmacphy_prim_fast_feedback_type_coding_bit0
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2294 proto_tree_add_item(feedback_tree
, hf_wimaxmacphy_prim_fast_feedback_type_coding_bit1
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2295 proto_tree_add_item(feedback_tree
, hf_wimaxmacphy_prim_fast_feedback_type_coding_bit2
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2296 proto_tree_add_item(feedback_tree
, hf_wimaxmacphy_prim_fast_feedback_type_coding_bit3
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2297 proto_tree_add_item(feedback_tree
, hf_wimaxmacphy_prim_fast_feedback_type_coding_bit4
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2298 proto_tree_add_item(feedback_tree
, hf_wimaxmacphy_prim_fast_feedback_type_coding_bit5
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2299 proto_tree_add_item(feedback_tree
, hf_wimaxmacphy_prim_fast_feedback_type_coding_bit6
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2300 proto_tree_add_item(feedback_tree
, hf_wimaxmacphy_prim_fast_feedback_type_coding_bit7
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2303 proto_tree_add_item(subtree
, hf_wimaxmacphy_prim_fast_feedback_valid
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
2304 proto_tree_add_item(subtree
, hf_wimaxmacphy_prim_fast_feedback_sub_type
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
2305 proto_tree_add_item(subtree
, hf_wimaxmacphy_prim_fast_reserved
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
2308 proto_tree_add_item(subtree
, hf_wimaxmacphy_prim_fast_feedback_value
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2316 return offset
- start_offset
;
2319 static guint
dissect_wimaxmacphy_phy_rxend_indication(tvbuff_t
*tvb
, guint offset
, packet_info
*pinfo _U_
, proto_tree
*tree
)
2321 guint start_offset
= offset
;
2323 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_status
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2326 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_phy_aas_report_present
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2327 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_current_frame_number_lsn
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2330 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_number_of_affected_ss
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2333 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_reserved1
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2338 /* list of ISSIDs (at least one required) */
2339 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_issid
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
2342 while (tvb_reported_length_remaining(tvb
, offset
));
2344 return offset
- start_offset
;
2347 static guint
dissect_wimaxmacphy_phy_rxcdma_indication(tvbuff_t
*tvb
, guint offset
, packet_info
*pinfo _U_
, proto_tree
*tree
)
2349 guint start_offset
= offset
;
2351 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_zonexid
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
2354 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_cdma_code
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2357 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_cdma_symbol
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2360 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_reserved1
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2363 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_cdma_subchannel
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2366 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_rssi_per_subcarrier_level
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2369 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_cinr
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2372 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_reserved3
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2375 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_power_offset
, tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2378 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_current_frame_number_msn
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
2379 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_reserved4
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
2382 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_aas_handle
, tvb
, offset
, 2, ENC_BIG_ENDIAN
);
2385 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_time_deviation
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
2388 proto_tree_add_item(tree
, hf_wimaxmacphy_prim_frequency_deviation
, tvb
, offset
, 4, ENC_BIG_ENDIAN
);
2391 return offset
- start_offset
;
2395 dissect_wimaxmacphy(tvbuff_t
*tvb
, packet_info
*pinfo
, proto_tree
*tree
, void *data _U_
)
2397 /* Set up structures needed to add the protocol subtree and manage it */
2398 proto_tree
*wimaxmacphy_tree
, *primitive_tree
;
2402 guint8 message_type
;
2404 /* Ensure minimum size */
2405 if (tvb_length(tvb
) < WIMAXMACPHY_HEADER_SIZE
)
2408 col_set_str(pinfo
->cinfo
, COL_PROTOCOL
, "wimaxmacphy");
2409 col_clear(pinfo
->cinfo
, COL_INFO
);
2411 item
= proto_tree_add_item(tree
, proto_wimaxmacphy
, tvb
, 0, -1, ENC_NA
);
2412 wimaxmacphy_tree
= proto_item_add_subtree(item
, ett_wimaxmacphy
);
2414 proto_tree_add_item(wimaxmacphy_tree
, hf_wimaxmacphy_hdr_phy_entity_id
,
2415 tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2416 proto_tree_add_item(wimaxmacphy_tree
, hf_wimaxmacphy_hdr_message_segmentation
,
2417 tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2420 message_type
= tvb_get_guint8(tvb
, offset
);
2421 item
= proto_tree_add_item(wimaxmacphy_tree
, hf_wimaxmacphy_hdr_message_type
,
2422 tvb
, offset
, 1, ENC_BIG_ENDIAN
);
2424 primitive_tree
= proto_item_add_subtree(item
, ett_wimaxmacphy_primitive
);
2426 col_add_str(pinfo
->cinfo
, COL_INFO
, val_to_str_ext_const(message_type
, &wimaxmacphy_message_type_vals_ext
, "Unknown"));
2428 col_set_str(pinfo
->cinfo
, COL_INFO
, val_to_str_const(message_type
, wimaxmacphy_message_type_vals
, "Unknown"));
2431 switch(message_type
)
2433 case WIMAXMACPHY_PHY_TXSTART_REQUEST
:
2434 offset
+= dissect_wimaxmacphy_phy_txstart_request(
2435 tvb
, offset
, pinfo
, primitive_tree
);
2437 case WIMAXMACPHY_PHY_TXSTART_CONFIRMATION
:
2438 offset
+= dissect_wimaxmacphy_phy_txstart_confirmation(
2439 tvb
, offset
, pinfo
, primitive_tree
);
2441 case WIMAXMACPHY_PHY_TXSTART_INDICATION
:
2442 offset
+= dissect_wimaxmacphy_phy_txstart_indication(
2443 tvb
, offset
, pinfo
, primitive_tree
);
2445 case WIMAXMACPHY_PHY_TXSDU_REQUEST
:
2446 offset
+= dissect_wimaxmacphy_phy_txsdu_request(
2447 tvb
, offset
, pinfo
, primitive_tree
);
2449 case WIMAXMACPHY_PHY_TXSDU_CONFIRMATION
:
2450 offset
+= dissect_wimaxmacphy_phy_txsdu_confirmation(
2451 tvb
, offset
, pinfo
, primitive_tree
);
2453 case WIMAXMACPHY_PHY_TXEND_INDICATION
:
2454 offset
+= dissect_wimaxmacphy_phy_txend_indication(
2455 tvb
, offset
, pinfo
, primitive_tree
);
2457 case WIMAXMACPHY_PHY_RXSTART_REQUEST
:
2458 offset
+= dissect_wimaxmacphy_phy_rxstart_request(
2459 tvb
, offset
, pinfo
, primitive_tree
);
2461 case WIMAXMACPHY_PHY_RXSTART_CONFIRMATION
:
2462 offset
+= dissect_wimaxmacphy_phy_rxstart_confirmation(
2463 tvb
, offset
, pinfo
, primitive_tree
);
2465 case WIMAXMACPHY_PHY_RXSTART_INDICATION
:
2466 offset
+= dissect_wimaxmacphy_phy_rxstart_indication(
2467 tvb
, offset
, pinfo
, primitive_tree
);
2469 case WIMAXMACPHY_PHY_RXSDU_INDICATION
:
2470 offset
+= dissect_wimaxmacphy_phy_rxsdu_indication(
2471 tvb
, offset
, pinfo
, primitive_tree
);
2473 case WIMAXMACPHY_PHY_RXEND_INDICATION
:
2474 offset
+= dissect_wimaxmacphy_phy_rxend_indication(
2475 tvb
, offset
, pinfo
, primitive_tree
);
2477 case WIMAXMACPHY_PHY_RXCDMA_INDICATION
:
2478 offset
+= dissect_wimaxmacphy_phy_rxcdma_indication(
2479 tvb
, offset
, pinfo
, primitive_tree
);
2482 proto_tree_add_item(primitive_tree
, hf_wimaxmacphy_unknown
,
2483 tvb
, offset
, tvb_reported_length_remaining(tvb
, offset
), ENC_NA
);
2484 offset
+= tvb_reported_length_remaining(tvb
, offset
);
2488 if (tvb_reported_length_remaining(tvb
, offset
) > 0)
2490 /* Incorporate any "extra" bytes */
2491 item
= proto_tree_add_item(wimaxmacphy_tree
, hf_wimaxmacphy_unknown
,
2492 tvb
, offset
, tvb_reported_length_remaining(tvb
, offset
), ENC_NA
);
2494 expert_add_info(pinfo
, item
, &ei_wimaxmacphy_unknown
);
2497 return tvb_length(tvb
);
2501 proto_register_wimaxmacphy(void)
2503 module_t
*wimaxmacphy_module
;
2505 static hf_register_info hf
[] = {
2507 &hf_wimaxmacphy_hdr_phy_entity_id
,
2510 "wimaxmacphy.hdr_phy_entity_id",
2520 &hf_wimaxmacphy_hdr_message_segmentation
,
2522 "Message Segmentation",
2523 "wimaxmacphy.hdr_message_segmentation",
2526 VALS(wimaxmacphy_message_segmentation_vals
),
2533 &hf_wimaxmacphy_hdr_message_type
,
2536 "wimaxmacphy.hdr_message_type",
2539 BASE_HEX
| BASE_EXT_STRING
,
2540 &wimaxmacphy_message_type_vals_ext
,
2543 VALS(wimaxmacphy_message_type_vals
),
2550 &hf_wimaxmacphy_unknown
,
2553 "wimaxmacphy.unknown_primitive",
2563 &hf_wimaxmacphy_prim_length_of_txvector
,
2565 "Length of TXVECTOR",
2566 "wimaxmacphy.prim_length_of_txvector",
2576 &hf_wimaxmacphy_prim_length_of_rxvector
,
2578 "Length of RXVECTOR",
2579 "wimaxmacphy.prim_length_of_rxvector",
2589 &hf_wimaxmacphy_prim_status
,
2592 "wimaxmacphy.prim_status",
2595 VALS(wimaxmacphy_prim_status_vals
),
2602 &hf_wimaxmacphy_prim_txstart_indication_status
,
2605 "wimaxmacphy.prim_status",
2608 VALS(wimaxmacphy_prim_txstart_indication_status_vals
),
2615 &hf_wimaxmacphy_prim_reserved1
,
2618 "wimaxmacphy.prim_reserved1",
2628 &hf_wimaxmacphy_prim_reserved2
,
2631 "wimaxmacphy.prim_reserved2",
2641 &hf_wimaxmacphy_prim_reserved3
,
2644 "wimaxmacphy.prim_reserved3",
2654 &hf_wimaxmacphy_prim_reserved4
,
2657 "wimaxmacphy.prim_reserved4",
2667 &hf_wimaxmacphy_prim_reserved5
,
2670 "wimaxmacphy.prim_reserved5",
2680 &hf_wimaxmacphy_prim_next_frame_number
,
2682 "Next Frame Number (lsb)",
2683 "wimaxmacphy.prim_next_frame_number",
2693 &hf_wimaxmacphy_prim_extended_frame_number
,
2695 "Extended frame number",
2696 "wimaxmacphy.prim_extended_frame_number",
2706 &hf_wimaxmacphy_prim_current_frame_number_lsn
,
2708 "Current Frame Number (lsb)",
2709 "wimaxmacphy.prim_current_frame_number",
2719 &hf_wimaxmacphy_prim_initial_frame_number
,
2721 "Initial Frame Number (from PHY)",
2722 "wimaxmacphy.prim_initial_frame_number",
2732 &hf_wimaxmacphy_prim_dl_zone_number
,
2735 "wimaxmacphy.prim_dl_zone_number",
2745 &hf_wimaxmacphy_prim_sub_burst_burst_split_point
,
2747 "Sub-burst/burst split point",
2748 "wimaxmacphy.prim_sub_burst_burst_split_point",
2758 &hf_wimaxmacphy_prim_dl_sub_burst_burst_number
,
2760 "DL sub-burst/burst number in this zone",
2761 "wimaxmacphy.prim_dl_sub_burst_burst_number",
2771 &hf_wimaxmacphy_prim_phy_sdu
,
2774 "wimaxmacphy.prim_phy_sdu",
2784 &hf_wimaxmacphy_prim_phy_request
,
2786 "PHY request (LW 1)",
2787 "wimaxmacphy.prim_phy_request",
2797 &hf_wimaxmacphy_prim_requested_aas_calibration_zone_size
,
2799 "Requested AAS Calibration Zone size",
2800 "wimaxmacphy.prim_requested_aas_calibration_zone_size",
2810 &hf_wimaxmacphy_prim_requested_aas_calibration_zone_alloc
,
2812 "Requested AAS Calibration Zone allocation deadline",
2813 "wimaxmacphy.prim_requested_aas_calibration_zone_alloc",
2823 &hf_wimaxmacphy_prim_number_of_consecutive_frames_with_aas
,
2825 "Number of consecutive frames with AAS Calibration Zone"
2827 "wimaxmacphy.prim_number_of_consecutive_frames_with_aas",
2837 &hf_wimaxmacphy_prim_frame_number
,
2839 "Frame Number (lsb)",
2840 "wimaxmacphy.prim_frame_number",
2850 &hf_wimaxmacphy_prim_issid
,
2853 "wimaxmacphy.prim_issid",
2863 &hf_wimaxmacphy_prim_integrity
,
2866 "wimaxmacphy.prim_integrity",
2869 VALS(wimaxmacphy_prim_integrity_vals
),
2876 &hf_wimaxmacphy_prim_number_of_bytes_received
,
2878 "Number of bytes received",
2879 "wimaxmacphy.prim_number_of_bytes_received",
2889 &hf_wimaxmacphy_prim_rssi_per_subcarrier_level
,
2891 "RSSI per subcarrier level",
2892 "wimaxmacphy.prim_rssi_per_subcarrier_level",
2902 &hf_wimaxmacphy_prim_cinr
,
2905 "wimaxmacphy.prim_cinr",
2915 &hf_wimaxmacphy_prim_power_offset
,
2918 "wimaxmacphy.prim_power_offset",
2928 &hf_wimaxmacphy_prim_current_frame_number_msn
,
2930 "Current Frame Number (lsb)",
2931 "wimaxmacphy.prim_current_frame_number",
2941 &hf_wimaxmacphy_prim_acid_for_harq_data_bursts
,
2943 "ACID for HARQ data bursts",
2944 "wimaxmacphy.prim_acid_for_harq_data_bursts",
2954 &hf_wimaxmacphy_prim_indication_type
,
2957 "wimaxmacphy.prim_indication_type",
2960 VALS(wimaxmacphy_prim_indication_type_vals
),
2967 &hf_wimaxmacphy_prim_zone_permutation_type
,
2969 "Zone Permutation Type",
2970 "wimaxmacphy.prim_zone_permutation_type",
2973 VALS(wimaxmacphy_prim_zone_permutation_type_vals
),
2980 &hf_wimaxmacphy_prim_update_aas_handle_in_mac
,
2982 "Update AAS handle in MAC",
2983 "wimaxmacphy.prim_update_aas_handle_in_mac",
2993 &hf_wimaxmacphy_prim_aas_handle
,
2996 "wimaxmacphy.prim_aas_handle",
3006 &hf_wimaxmacphy_prim_time_deviation
,
3008 "Time deviation in units of 1/Fs",
3009 "wimaxmacphy.prim_time_deviation",
3019 &hf_wimaxmacphy_prim_frequency_deviation
,
3021 "Frequency deviation in Hz",
3022 "wimaxmacphy.prim_frequency_deviation",
3032 &hf_wimaxmacphy_prim_harq_ack_issid
,
3035 "wimaxmacphy.prim_harq_ack_issid",
3045 &hf_wimaxmacphy_prim_harq_ack_acid
,
3048 "wimaxmacphy.prim_harq_ack_acid",
3058 &hf_wimaxmacphy_prim_harq_ack_reserved1
,
3061 "wimaxmacphy.prim_harq_ack_reserved1",
3071 &hf_wimaxmacphy_prim_harq_ack_ack_valid
,
3074 "wimaxmacphy.prim_harq_ack_ack_valid",
3077 VALS(wimaxmacphy_prim_harq_ack_ack_valid_vals
),
3084 &hf_wimaxmacphy_prim_harq_ack_unnamed
,
3087 "wimaxmacphy.prim_harq_ack_unnamed",
3090 VALS(wimaxmacphy_prim_harq_ack_unnamed_vals
),
3097 &hf_wimaxmacphy_prim_harq_ack_reserved2
,
3100 "wimaxmacphy.prim_harq_ack_reserved2",
3110 &hf_wimaxmacphy_prim_fast_issid
,
3113 "wimaxmacphy.prim_fast_issid",
3123 &hf_wimaxmacphy_prim_fast_cqich_id
,
3126 "wimaxmacphy.prim_fast_cqich_id",
3136 &hf_wimaxmacphy_prim_fast_feedback_type_coding
,
3138 "Feedback type coding",
3139 "wimaxmacphy.prim_fast_type_coding",
3149 &hf_wimaxmacphy_prim_fast_feedback_type_coding_bit0
,
3151 "3 bit-MIMO Fast-feedback",
3152 "wimaxmacphy.prim_fast_type_coding.bit0",
3162 &hf_wimaxmacphy_prim_fast_feedback_type_coding_bit1
,
3164 "Enhanced FAST_FEEDBACK",
3165 "wimaxmacphy.prim_fast_type_coding.bit1",
3175 &hf_wimaxmacphy_prim_fast_feedback_type_coding_bit2
,
3178 "wimaxmacphy.prim_fast_type_coding.bit2",
3188 &hf_wimaxmacphy_prim_fast_feedback_type_coding_bit3
,
3191 "wimaxmacphy.prim_fast_type_coding.bit3",
3201 &hf_wimaxmacphy_prim_fast_feedback_type_coding_bit4
,
3203 "UEP fast-feedback",
3204 "wimaxmacphy.prim_fast_type_coding.bit4",
3214 &hf_wimaxmacphy_prim_fast_feedback_type_coding_bit5
,
3216 "A measurement report performed on the last DL burst",
3217 "wimaxmacphy.prim_fast_type_coding.bit5",
3227 &hf_wimaxmacphy_prim_fast_feedback_type_coding_bit6
,
3229 "Primary/Secondary FAST_FEEDBACK",
3230 "wimaxmacphy.prim_fast_type_coding.bit6",
3240 &hf_wimaxmacphy_prim_fast_feedback_type_coding_bit7
,
3242 "DIUC-CQI Fast-feedback",
3243 "wimaxmacphy.prim_fast_type_coding.bit7",
3253 &hf_wimaxmacphy_prim_fast_feedback_valid
,
3256 "wimaxmacphy.prim_fast_feedback_valid",
3259 VALS(wimaxmacphy_prim_fast_feedback_valid_vals
),
3266 &hf_wimaxmacphy_prim_fast_feedback_sub_type
,
3268 "Feedback sub-type",
3269 "wimaxmacphy.prim_fast_feedback_sub_type",
3273 wimaxmacphy_prim_fast_feedback_sub_type_vals
),
3280 &hf_wimaxmacphy_prim_fast_reserved
,
3283 "wimaxmacphy.prim_fast_reserved",
3293 &hf_wimaxmacphy_prim_fast_feedback_value
,
3296 "wimaxmacphy.prim_fast_feedback_value",
3306 &hf_wimaxmacphy_prim_phy_aas_report_present
,
3308 "PHY AAS report present",
3309 "wimaxmacphy.prim_phy_aas_report_present",
3312 VALS(wimaxmacphy_prim_phy_aas_report_present_vals
),
3319 &hf_wimaxmacphy_prim_number_of_affected_ss
,
3321 "Number of affected SS",
3322 "wimaxmacphy.prim_number_of_affected_ss",
3332 &hf_wimaxmacphy_prim_zonexid
,
3335 "wimaxmacphy.prim_zonexid",
3345 &hf_wimaxmacphy_prim_cdma_code
,
3348 "wimaxmacphy.prim_cdma_code",
3358 &hf_wimaxmacphy_prim_cdma_symbol
,
3361 "wimaxmacphy.prim_cdma_symbol",
3371 &hf_wimaxmacphy_prim_cdma_subchannel
,
3374 "wimaxmacphy.prim_cdma_subchannel",
3384 &hf_wimaxmacphy_subframe_subframe_type
,
3387 "wimaxmacphy.subframe_subframe_type",
3390 VALS(wimaxmacphy_subframe_type_vals
),
3397 &hf_wimaxmacphy_subframe_frame_number
,
3400 "wimaxmacphy.subframe_frame_number",
3410 &hf_wimaxmacphy_subframe_downlink_reserved1
,
3413 "wimaxmacphy.subframe_downlink_reserved1",
3423 &hf_wimaxmacphy_subframe_phy_sap_version_number
,
3425 "PHY SAP version number",
3426 "wimaxmacphy.subframe_phy_sap_version_number",
3436 &hf_wimaxmacphy_subframe_downlink_reserved2
,
3438 "Downlink reserved",
3439 "wimaxmacphy.subframe_downlink_reserved2",
3449 &hf_wimaxmacphy_subframe_allocation_start_time
,
3451 "Allocation start time",
3452 "wimaxmacphy.subframe_allocation_start_time",
3462 &hf_wimaxmacphy_number_of_zone_descriptors
,
3464 "Number of Zone Descriptors",
3465 "wimaxmacphy.number_of_zone_descriptors",
3475 &hf_wimaxmacphy_zone_padding
,
3478 "wimaxmacphy.zone_padding",
3488 &hf_wimaxmacphy_dl_zone_type
,
3491 "wimaxmacphy.zone_type",
3494 VALS(wimaxmacphy_dl_zone_type_vals
),
3501 &hf_wimaxmacphy_ul_zone_type
,
3504 "wimaxmacphy.zone_type",
3507 VALS(wimaxmacphy_ul_zone_type_vals
),
3514 &hf_wimaxmacphy_zone_number
,
3517 "wimaxmacphy.zone_number",
3527 &hf_wimaxmacphy_zone_start_symbol_offset
,
3529 "Start Symbol Offset",
3530 "wimaxmacphy.zone_start_symbol_offset",
3540 &hf_wimaxmacphy_zone_end_symbol_offset
,
3542 "End Symbol Offset",
3543 "wimaxmacphy.zone_end_symbol_offset",
3553 &hf_wimaxmacphy_dl_zone_permutation_type
,
3556 "wimaxmacphy.zone_permutation_type",
3559 VALS(wimaxmacphy_dl_zone_permutation_type_vals
),
3566 &hf_wimaxmacphy_ul_zone_permutation_type
,
3569 "wimaxmacphy.zone_permutation_type",
3572 VALS(wimaxmacphy_ul_zone_permutation_type_vals
),
3579 &hf_wimaxmacphy_dl_zone_use_all_subchannels_indicator
,
3581 "Use all subchannels indicator",
3582 "wimaxmacphy.zone_use_all_subchannels_indicator",
3585 VALS(wimaxmacphy_zone_use_all_subchannels_indicator_vals
),
3592 &hf_wimaxmacphy_ul_zone_use_all_subchannels_indicator
,
3594 "Use all subchannels indicator",
3595 "wimaxmacphy.zone_use_all_subchannels_indicator",
3598 VALS(wimaxmacphy_zone_use_all_subchannels_indicator_vals
),
3605 &hf_wimaxmacphy_ul_zone_disable_pusc_subchannel_rotation
,
3607 "Disable PUSC subchannel rotation",
3608 "wimaxmacphy.zone_disable_pusc_subchannel_rotation",
3612 wimaxmacphy_ul_zone_disable_pusc_subchannel_rotation_vals
),
3619 &hf_wimaxmacphy_zone_dl_perm_base
,
3622 "wimaxmacphy.zone_dl_perm_base",
3632 &hf_wimaxmacphy_zone_ul_perm_base
,
3635 "wimaxmacphy.zone_ul_perm_base",
3645 &hf_wimaxmacphy_zone_prbs_id
,
3648 "wimaxmacphy.zone_prbs_id",
3658 &hf_wimaxmacphy_zone_dedicated_pilots
,
3661 "wimaxmacphy.zone_dedicated_pilots",
3664 VALS(wimaxmacphy_zone_dedicated_pilots_vals
),
3671 &hf_wimaxmacphy_zone_agc_range_extension
,
3673 "Rx AGC range extension",
3674 "wimaxmacphy.zone_agc_range_extension",
3677 VALS(wimaxmacphy_zone_agc_range_extension_vals
),
3684 &hf_wimaxmacphy_zone_reserved
,
3687 "wimaxmacphy.zone_reserved",
3697 &hf_wimaxmacphy_zone_stc_type
,
3700 "wimaxmacphy.zone_stc_type",
3703 VALS(wimaxmacphy_zone_stc_type_vals
),
3710 &hf_wimaxmacphy_zone_matrix_indicator
,
3713 "wimaxmacphy.zone_matrix_indicator",
3716 VALS(wimaxmacphy_matrix_indicator_vals
),
3723 &hf_wimaxmacphy_zone_midamble_presence
,
3725 "Midamble presence",
3726 "wimaxmacphy.zone_midamble_presence",
3729 VALS(wimaxmacphy_zone_midamble_presence_vals
),
3736 &hf_wimaxmacphy_zone_midamble_boosting
,
3738 "Midamble boosting",
3739 "wimaxmacphy.zone_midamble_boosting",
3742 VALS(wimaxmacphy_zone_midamble_boosting_vals
),
3749 &hf_wimaxmacphy_zone_preamble_configuration
,
3751 "Preamble configuration",
3752 "wimaxmacphy.zone_preamble_configuration",
3755 VALS(wimaxmacphy_zone_preamble_configuration_vals
),
3762 &hf_wimaxmacphy_zone_sdma_supported_indication
,
3764 "SDMA supported indication",
3765 "wimaxmacphy.zone_sdma_supported_indication",
3768 VALS(wimaxmacphy_zone_sdma_supported_indication_vals
),
3775 &hf_wimaxmacphy_zone_preamble_type
,
3778 "wimaxmacphy.zone_preamble_type",
3781 VALS(wimaxmacphy_zone_preamble_type_vals
),
3788 &hf_wimaxmacphy_dl_zone_aas_reserved
,
3791 "wimaxmacphy.zone_aas_reserved",
3801 &hf_wimaxmacphy_ul_zone_aas_reserved
,
3804 "wimaxmacphy.zone_aas_reserved",
3814 &hf_wimaxmacphy_number_of_burst_descriptors
,
3816 "Number of Burst Descriptors",
3817 "wimaxmacphy.number_of_burst_descriptors",
3827 &hf_wimaxmacphy_burst_padding
,
3830 "wimaxmacphy.burst_padding",
3840 &hf_wimaxmacphy_dl_burst_type
,
3843 "wimaxmacphy.burst_type",
3846 VALS(wimaxmacphy_dl_burst_type_vals
),
3853 &hf_wimaxmacphy_ul_burst_type
,
3856 "wimaxmacphy.dl_burst_type",
3859 VALS(wimaxmacphy_ul_burst_type_vals
),
3866 &hf_wimaxmacphy_burst_type_extension
,
3868 "Burst Type extension",
3869 "wimaxmacphy.burst_type_extension",
3872 VALS(wimaxmacphy_burst_type_extension_vals
),
3879 &hf_wimaxmacphy_burst_number
,
3882 "wimaxmacphy.burst_number",
3892 &hf_wimaxmacphy_burst_modulation_fec_code_type
,
3894 "Modulation/FEC Code Type",
3895 "wimaxmacphy.burst_modulation_fec_code_type",
3898 BASE_DEC
| BASE_EXT_STRING
,
3899 &wimaxmacphy_modulation_fec_code_type_vals_ext
,
3902 VALS(wimaxmacphy_modulation_fec_code_type_vals
),
3909 &hf_wimaxmacphy_burst_data_length
,
3911 "Burst Data Length",
3912 "wimaxmacphy.burst_data_length",
3922 &hf_wimaxmacphy_burst_ofdma_symbol_offset
,
3924 "OFDMA Symbol offset",
3925 "wimaxmacphy.burst_ofdma_symbol_offset",
3935 &hf_wimaxmacphy_burst_subchannel_offset
,
3937 "Subchannel offset",
3938 "wimaxmacphy.burst_subchannel_offset",
3948 &hf_wimaxmacphy_burst_boosting
,
3951 "wimaxmacphy.burst_boosting",
3954 VALS(wimaxmacphy_burst_boosting_vals
),
3961 &hf_wimaxmacphy_burst_reserved
,
3964 "wimaxmacphy.burst_reserved",
3974 &hf_wimaxmacphy_burst_repetition_coding_indication
,
3976 "Repetition coding indication",
3977 "wimaxmacphy.burst_repetition_coding_indication",
3980 VALS(wimaxmacphy_burst_repetition_coding_indication_vals
),
3987 &hf_wimaxmacphy_burst_issid
,
3990 "wimaxmacphy.burst_issid",
4000 &hf_wimaxmacphy_burst_aas_handle
,
4003 "wimaxmacphy.burst_aas_handle",
4013 &hf_wimaxmacphy_dl_burst_map_number_of_slots
,
4015 "Number of slots (duration) after repetition code is"
4017 "wimaxmacphy.burst_map_number_of_slots",
4027 &hf_wimaxmacphy_dl_burst_map_reserved
,
4030 "wimaxmacphy.burst_map_reserved",
4040 &hf_wimaxmacphy_dl_burst_normal_number_of_symbols
,
4042 "Number of Symbols",
4043 "wimaxmacphy.burst_normal_number_of_symbols",
4053 &hf_wimaxmacphy_dl_burst_normal_number_of_subchannels
,
4055 "Number of Subchannels",
4056 "wimaxmacphy.burst_normal_number_of_subchannels",
4066 &hf_wimaxmacphy_dl_burst_normal_aas_handle
,
4069 "wimaxmacphy.burst_normal_aas_handle",
4079 &hf_wimaxmacphy_ul_burst_normal_number_of_slots
,
4082 "wimaxmacphy.burst_normal_number_of_slots",
4092 &hf_wimaxmacphy_ul_burst_normal_reserved
,
4095 "wimaxmacphy.burst_normal_reserved",
4105 &hf_wimaxmacphy_burst_papr_number_of_symbols
,
4107 "Number of Symbols",
4108 "wimaxmacphy.burst_papr_number_of_symbols",
4118 &hf_wimaxmacphy_burst_papr_number_of_subchannels
,
4120 "Number of Subchannels",
4121 "wimaxmacphy.burst_papr_number_of_subchannels",
4131 &hf_wimaxmacphy_burst_papr_reserved
,
4134 "wimaxmacphy.burst_papr_reserved",
4144 &hf_wimaxmacphy_ul_burst_papr_unnamed
,
4147 "wimaxmacphy.burst_papr_unnamed",
4150 VALS(wimaxmacphy_ul_burst_papr_unnamed_vals
),
4157 &hf_wimaxmacphy_ul_burst_harq_ack_number_of_symbols
,
4159 "Number of Symbols",
4160 "wimaxmacphy.burst_harq_ack_number_of_symbols",
4170 &hf_wimaxmacphy_ul_burst_harq_ack_number_of_subchannels
,
4172 "Number of Subchannels",
4173 "wimaxmacphy.burst_harq_ack_number_of_subchannels",
4183 &hf_wimaxmacphy_ul_burst_harq_ack_reserved
,
4186 "wimaxmacphy.burst_harq_ack_reserved",
4196 &hf_wimaxmacphy_ul_burst_fast_number_of_symbols
,
4198 "Number of Symbols",
4199 "wimaxmacphy.burst_fast_number_of_symbols",
4209 &hf_wimaxmacphy_ul_burst_fast_number_of_subchannels
,
4211 "Number of Subchannels",
4212 "wimaxmacphy.burst_fast_number_of_subchannels",
4222 &hf_wimaxmacphy_ul_burst_fast_reserved
,
4225 "wimaxmacphy.burst_fast_reserved",
4235 &hf_wimaxmacphy_ul_burst_initial_number_of_symbols
,
4237 "Number of Symbols",
4238 "wimaxmacphy.burst_initial_number_of_symbols",
4248 &hf_wimaxmacphy_ul_burst_initial_number_of_subchannels
,
4250 "Number of Subchannels",
4251 "wimaxmacphy.burst_initial_number_of_subchannels",
4261 &hf_wimaxmacphy_ul_burst_initial_ranging_method
,
4264 "wimaxmacphy.burst_initial_ranging_method",
4267 VALS(wimaxmacphy_ul_burst_ranging_method_vals
),
4274 &hf_wimaxmacphy_ul_burst_initial_reserved1
,
4277 "wimaxmacphy.burst_initial_reserved1",
4287 &hf_wimaxmacphy_ul_burst_initial_zone_xid
,
4290 "wimaxmacphy.burst_initial_zone_xid",
4300 &hf_wimaxmacphy_ul_burst_initial_reserved2
,
4303 "wimaxmacphy.burst_initial_reserved2",
4313 &hf_wimaxmacphy_ul_burst_periodic_number_of_symbols
,
4315 "Number of Symbols",
4316 "wimaxmacphy.burst_periodic_number_of_symbols",
4326 &hf_wimaxmacphy_ul_burst_periodic_number_of_subchannels
,
4328 "Number of Subchannels",
4329 "wimaxmacphy.burst_periodic_number_of_subchannels",
4339 &hf_wimaxmacphy_ul_burst_periodic_ranging_method
,
4342 "wimaxmacphy.burst_periodic_ranging_method",
4345 VALS(wimaxmacphy_ul_burst_ranging_method_vals
),
4352 &hf_wimaxmacphy_ul_burst_periodic_reserved1
,
4355 "wimaxmacphy.burst_periodic_reserved1",
4365 &hf_wimaxmacphy_ul_burst_periodic_zone_xid
,
4368 "wimaxmacphy.burst_periodic_zone_xid",
4378 &hf_wimaxmacphy_ul_burst_periodic_reserved2
,
4381 "wimaxmacphy.burst_periodic_reserved2",
4391 &hf_wimaxmacphy_ul_burst_noise_number_of_symbols
,
4393 "Number of Symbols",
4394 "wimaxmacphy.burst_noise_number_of_symbols",
4404 &hf_wimaxmacphy_ul_burst_noise_number_of_subchannels
,
4406 "Number of Subchannels",
4407 "wimaxmacphy.burst_noise_number_of_subchannels",
4417 &hf_wimaxmacphy_ul_burst_noise_reserved
,
4420 "wimaxmacphy.burst_noise_reserved",
4430 &hf_wimaxmacphy_ul_burst_sounding_number_of_symbols
,
4432 "Number of Symbols",
4433 "wimaxmacphy.burst_sounding_number_of_symbols",
4443 &hf_wimaxmacphy_ul_burst_sounding_number_of_subchannels
,
4445 "Number of Subchannels",
4446 "wimaxmacphy.burst_sounding_number_of_subchannels",
4456 &hf_wimaxmacphy_ul_burst_sounding_type
,
4459 "wimaxmacphy.burst_sounding_type",
4462 VALS(wimaxmacphy_ul_burst_sounding_type_vals
),
4469 &hf_wimaxmacphy_ul_burst_sounding_separability_type
,
4471 "Separability type",
4472 "wimaxmacphy.burst_sounding_separability_type",
4475 VALS(wimaxmacphy_ul_burst_sounding_separability_type_vals
),
4482 &hf_wimaxmacphy_ul_burst_sounding_max_cyclic_shift_indx
,
4484 "Max Cyclic Shift Indx",
4485 "wimaxmacphy.burst_sounding_max_cyclic_shift_indx",
4489 wimaxmacphy_ul_burst_sounding_max_cyclic_shift_indx_vals
),
4496 &hf_wimaxmacphy_ul_burst_sounding_decimation_value
,
4499 "wimaxmacphy.burst_sounding_decimation_value",
4509 &hf_wimaxmacphy_ul_burst_sounding_decimation_offset_rand
,
4511 "Decimation offset randomization",
4512 "wimaxmacphy.burst_sounding_decimation_offset_rand",
4516 wimaxmacphy_ul_burst_sounding_decimation_offset_rand_vals
),
4523 &hf_wimaxmacphy_ul_burst_sounding_reserved
,
4526 "wimaxmacphy.burst_sounding_reserved",
4536 &hf_wimaxmacphy_burst_opt_aas_preamble_modifier_type
,
4538 "Preamble Modifier Type",
4539 "wimaxmacphy.burst_opt_aas_preamble_modifier_type",
4549 &hf_wimaxmacphy_burst_opt_aas_preamble_shift_index
,
4551 "Preamble Shift index",
4552 "wimaxmacphy.burst_opt_aas_preamble_shift_index",
4562 &hf_wimaxmacphy_burst_opt_aas_reserved
,
4565 "wimaxmacphy.burst_opt_aas_reserved",
4575 &hf_wimaxmacphy_burst_opt_mimo_matrix_indicator
,
4578 "wimaxmacphy.burst_opt_mimo_matrix_indicator",
4581 VALS(wimaxmacphy_matrix_indicator_vals
),
4588 &hf_wimaxmacphy_burst_opt_mimo_layer_index
,
4591 "wimaxmacphy.burst_opt_mimo_layer_index",
4601 &hf_wimaxmacphy_dl_burst_opt_mimo_reserved
,
4604 "wimaxmacphy.burst_opt_mimo_reserved",
4614 &hf_wimaxmacphy_ul_burst_opt_mimo_matrix_indicator
,
4616 "Matrix indicator (dual antenna SS)",
4617 "wimaxmacphy.burst_opt_mimo_matrix_indicator",
4620 VALS(wimaxmacphy_ul_burst_opt_mimo_matrix_indicator_vals
),
4627 &hf_wimaxmacphy_ul_burst_opt_mimo_pilot_patterns
,
4630 "wimaxmacphy.burst_opt_mimo_pilot_patterns",
4640 &hf_wimaxmacphy_ul_burst_opt_mimo_pilot_patterns_bit0
,
4643 "wimaxmacphy.burst_opt_mimo_pilot_patterns.A",
4653 &hf_wimaxmacphy_ul_burst_opt_mimo_pilot_patterns_bit1
,
4656 "wimaxmacphy.burst_opt_mimo_pilot_patterns.B",
4666 &hf_wimaxmacphy_ul_burst_opt_mimo_pilot_patterns_bit2
,
4669 "wimaxmacphy.burst_opt_mimo_pilot_patterns.C",
4679 &hf_wimaxmacphy_ul_burst_opt_mimo_pilot_patterns_bit3
,
4682 "wimaxmacphy.burst_opt_mimo_pilot_patterns.D",
4692 &hf_wimaxmacphy_ul_burst_opt_mimo_collaborative
,
4694 "Collaborative MIMO control",
4695 "wimaxmacphy.burst_opt_mimo_collaborative",
4698 VALS(wimaxmacphy_ul_burst_opt_mimo_collaborative_vals
),
4705 &hf_wimaxmacphy_ul_burst_opt_mimo_antenna_unnamed
,
4708 "wimaxmacphy.burst_opt_mimo_antenna_unnamed",
4711 VALS(wimaxmacphy_ul_burst_opt_mimo_antenna_unnamed_vals
),
4718 &hf_wimaxmacphy_number_of_sub_burst_descriptors
,
4720 "Number of Sub-Burst Descriptors",
4721 "wimaxmacphy.number_of_sub_burst_descriptors",
4731 &hf_wimaxmacphy_sub_burst_padding
,
4734 "wimaxmacphy.sub_burst_padding",
4744 &hf_wimaxmacphy_dl_sub_burst_type
,
4747 "wimaxmacphy.sub_burst_type",
4750 VALS(wimaxmacphy_dl_sub_burst_type_vals
),
4757 &hf_wimaxmacphy_ul_sub_burst_type
,
4760 "wimaxmacphy.sub_burst_type",
4763 VALS(wimaxmacphy_ul_sub_burst_type_vals
),
4770 &hf_wimaxmacphy_sub_burst_number
,
4773 "wimaxmacphy.sub_burst_number",
4783 &hf_wimaxmacphy_sub_burst_symbol_offset
,
4786 "wimaxmacphy.sub_burst_symbol_offset",
4796 &hf_wimaxmacphy_sub_burst_subchannel_offset
,
4798 "Subchannel Offset",
4799 "wimaxmacphy.sub_burst_subchannel_offset",
4809 &hf_wimaxmacphy_sub_burst_number_of_slots
,
4811 "Number of slots in this sub-burst",
4812 "wimaxmacphy.sub_burst_number_of_slots",
4822 &hf_wimaxmacphy_sub_burst_reserved1
,
4825 "wimaxmacphy.sub_burst_reserved1",
4835 &hf_wimaxmacphy_sub_burst_reserved2
,
4838 "wimaxmacphy.sub_burst_reserved2",
4848 &hf_wimaxmacphy_sub_burst_modulation_fec_code_type
,
4850 "Modulation/FEC Code Type",
4851 "wimaxmacphy.sub_burst_modulation_fec_code_type",
4854 VALS(wimaxmacphy_modulation_fec_code_type_vals
),
4861 &hf_wimaxmacphy_sub_burst_issid
,
4864 "wimaxmacphy.sub_burst_issid",
4874 &hf_wimaxmacphy_sub_burst_aas_handle
,
4877 "wimaxmacphy.sub_burst_aas_handle",
4887 &hf_wimaxmacphy_sub_burst_boosting
,
4890 "wimaxmacphy.sub_burst_boosting",
4893 VALS(wimaxmacphy_burst_boosting_vals
),
4900 &hf_wimaxmacphy_sub_burst_repetition_coding_indication
,
4902 "Repetition coding indication",
4903 "wimaxmacphy.sub_burst_repetition_coding_indication",
4906 VALS(wimaxmacphy_burst_repetition_coding_indication_vals
),
4913 &hf_wimaxmacphy_sub_burst_data_length
,
4915 "Sub-Burst Data Length",
4916 "wimaxmacphy.sub_burst_data_length",
4926 &hf_wimaxmacphy_sub_burst_harq_chase_harq_channel_id
,
4928 "HARQ channeld id (ACID)",
4929 "wimaxmacphy.sub_burst_harq_chase_harq_channel_id",
4939 &hf_wimaxmacphy_sub_burst_harq_chase_harq_sequence_number
,
4941 "HARQ sequence number (AI_SN)",
4942 "wimaxmacphy.sub_burst_harq_chase_harq_sequence_number",
4952 &hf_wimaxmacphy_sub_burst_harq_chase_flush_unnamed
,
4955 "wimaxmacphy.sub_burst_harq_chase_flush_unnamed",
4958 VALS(wimaxmacphy_sub_burst_flush_unnamed_vals
),
4965 &hf_wimaxmacphy_sub_burst_harq_chase_reserved
,
4968 "wimaxmacphy.sub_burst_harq_chase_reserved",
4978 &hf_wimaxmacphy_sub_burst_mimo_chase_harq_channel_id
,
4980 "HARQ channel id (ACID)",
4981 "wimaxmacphy.sub_burst_mimo_chase_harq_channel_id",
4991 &hf_wimaxmacphy_sub_burst_mimo_chase_harq_sequence_number
,
4993 "HARQ sequence number (AI_SN)",
4994 "wimaxmacphy.sub_burst_mimo_chase_harq_sequence_number",
5004 &hf_wimaxmacphy_sub_burst_mimo_chase_flush_unnamed
,
5007 "wimaxmacphy.sub_burst_mimo_chase_flush_unnamed",
5010 VALS(wimaxmacphy_sub_burst_flush_unnamed_vals
),
5017 &hf_wimaxmacphy_sub_burst_mimo_chase_layer_index
,
5020 "wimaxmacphy.sub_burst_mimo_chase_layer_index",
5030 &hf_wimaxmacphy_ul_sub_burst_ctype
,
5033 "wimaxmacphy.sub_burst_ctype",
5036 VALS(wimaxmacphy_ul_sub_burst_ctype_vals
),
5043 &hf_wimaxmacphy_ul_sub_burst_mini_subchannel_index
,
5045 "Mini-subchannel Index",
5046 "wimaxmacphy.sub_burst_mini_subchannel_index",
5056 &hf_wimaxmacphy_ul_sub_burst_mini_reserved
,
5059 "wimaxmacphy.sub_burst_mini_reserved",
5069 &hf_wimaxmacphy_ul_sub_burst_feedback_type_coding
,
5071 "Feedback type coding",
5072 "wimaxmacphy.sub_burst_feedback_type_coding",
5082 &hf_wimaxmacphy_ul_sub_burst_feedback_type_coding_bit0
,
5084 "3 bit-MIMO Fast-feedback",
5085 "wimaxmacphy.sub_burst_feedback_type_coding.bit0",
5095 &hf_wimaxmacphy_ul_sub_burst_feedback_type_coding_bit1
,
5097 "Enhanced FAST_FEEDBACK",
5098 "wimaxmacphy.sub_burst_feedback_type_coding.bit1",
5108 &hf_wimaxmacphy_ul_sub_burst_feedback_type_coding_bit2
,
5111 "wimaxmacphy.sub_burst_feedback_type_coding.bit2",
5121 &hf_wimaxmacphy_ul_sub_burst_feedback_type_coding_bit3
,
5124 "wimaxmacphy.sub_burst_feedback_type_coding.bit3",
5134 &hf_wimaxmacphy_ul_sub_burst_feedback_type_coding_bit4
,
5136 "UEP fast-feedback",
5137 "wimaxmacphy.sub_burst_feedback_type_coding.bit4",
5147 &hf_wimaxmacphy_ul_sub_burst_feedback_type_coding_bit5
,
5149 "A measurement report performed on the last DL burst",
5150 "wimaxmacphy.sub_burst_feedback_type_coding.bit5",
5160 &hf_wimaxmacphy_ul_sub_burst_feedback_type_coding_bit6
,
5162 "Primary/Secondary FAST_FEEDBACK",
5163 "wimaxmacphy.sub_burst_feedback_type_coding.bit6",
5173 &hf_wimaxmacphy_ul_sub_burst_feedback_type_coding_bit7
,
5175 "DIUC-CQI Fast-feedback",
5176 "wimaxmacphy.sub_burst_feedback_type_coding.bit7",
5186 &hf_wimaxmacphy_ul_sub_burst_feedback_reserved1
,
5189 "wimaxmacphy.sub_burst_feedback_reserved1",
5199 &hf_wimaxmacphy_ul_sub_burst_feedback_sub_type
,
5201 "Feedback sub-type",
5202 "wimaxmacphy.sub_burst_feedback_sub_type",
5212 &hf_wimaxmacphy_ul_sub_burst_feedback_cqich_id
,
5215 "wimaxmacphy.sub_burst_feedback_cqich_id",
5225 &hf_wimaxmacphy_ul_sub_burst_feedback_reserved2
,
5228 "wimaxmacphy.sub_burst_feedback_reserved2",
5238 &hf_wimaxmacphy_ul_sub_burst_feedback_slot_offset
,
5241 "wimaxmacphy.sub_burst_feedback_slot_offset",
5251 &hf_wimaxmacphy_ul_sub_burst_harq_ack_acid
,
5254 "wimaxmacphy.sub_burst_harq_ack_acid",
5264 &hf_wimaxmacphy_ul_sub_burst_harq_ack_reserved
,
5267 "wimaxmacphy.sub_burst_harq_ack_reserved",
5277 &hf_wimaxmacphy_ul_sub_burst_sounding_symbol_index
,
5279 "Sounding symbol index within Sounding zone",
5280 "wimaxmacphy.sub_burst_sounding_symbol_index",
5290 &hf_wimaxmacphy_ul_sub_burst_sounding_power_assignment
,
5292 "Power assignment method",
5293 "wimaxmacphy.sub_burst_sounding_power_assignment_method",
5297 wimaxmacphy_ul_sub_burst_sounding_power_assignment_vals
),
5304 &hf_wimaxmacphy_ul_sub_burst_sounding_power_boost
,
5310 VALS(wimaxmacphy_ul_sub_burst_sounding_power_boost_vals
),
5317 &hf_wimaxmacphy_ul_sub_burst_sounding_allocation_mode
,
5320 "wimaxmacphy.sub_burst_sounding_allocation_mode",
5324 wimaxmacphy_ul_sub_burst_sounding_allocation_mode_vals
),
5331 &hf_wimaxmacphy_ul_sub_burst_sounding_start_freq_band
,
5333 "Start frequency band",
5334 "wimaxmacphy.sub_burst_sounding_start_freq_band",
5344 &hf_wimaxmacphy_ul_sub_burst_sounding_num_freq_bands
,
5346 "Number of frequency bands",
5347 "wimaxmacphy.ub_burst_sounding_num_freq_bands",
5357 &hf_wimaxmacphy_ul_sub_burst_sounding_band_bit_map
,
5360 "wimaxmacphy.sub_burst_sounding_band_bit_map",
5370 &hf_wimaxmacphy_ul_sub_burst_sounding_cyclic_time_shift
,
5372 "Cyclic time shift index",
5373 "wimaxmacphy.sub_burst_sounding_cyclic_time_shift_index",
5383 &hf_wimaxmacphy_ul_sub_burst_sounding_decimation_offset
,
5385 "Decimation offset",
5386 "wimaxmacphy.sub_burst_sounding_decimation_offset",
5396 &hf_wimaxmacphy_ul_sub_burst_sounding_reserved
,
5399 "wimaxmacphy.sub_burst_sounding_reserved",
5409 &hf_wimaxmacphy_ul_sub_burst_mimo_chase_matrix
,
5411 "Matrix (dual antenna SS)",
5412 "wimaxmacphy.sub_burst_mimo_chase_matrix",
5415 VALS(wimaxmacphy_ul_sub_burst_mimo_chase_matrix_vals
),
5423 /* Protocol subtree array */
5424 static gint
*ett
[] = {
5426 &ett_wimaxmacphy_primitive
,
5427 &ett_wimaxmacphy_prim_harq_ack
,
5428 &ett_wimaxmacphy_prim_fast_feedback
,
5429 &ett_wimaxmacphy_prim_fast_feedback_type_coding
,
5430 &ett_wimaxmacphy_dl_zone_descriptor
,
5431 &ett_wimaxmacphy_dl_zone_stc
,
5432 &ett_wimaxmacphy_dl_zone_aas
,
5433 &ett_wimaxmacphy_dl_burst_descriptor
,
5434 &ett_wimaxmacphy_dl_burst_map
,
5435 &ett_wimaxmacphy_dl_burst_normal
,
5436 &ett_wimaxmacphy_dl_burst_papr
,
5437 &ett_wimaxmacphy_dl_burst_opt_aas
,
5438 &ett_wimaxmacphy_dl_burst_opt_mimo
,
5439 &ett_wimaxmacphy_dl_sub_burst_descriptor
,
5440 &ett_wimaxmacphy_dl_sub_burst_harq_chase
,
5441 &ett_wimaxmacphy_dl_sub_burst_mimo_chase
,
5442 &ett_wimaxmacphy_ul_zone_descriptor
,
5443 &ett_wimaxmacphy_ul_zone_aas
,
5444 &ett_wimaxmacphy_ul_burst_descriptor
,
5445 &ett_wimaxmacphy_ul_burst_harq_ack
,
5446 &ett_wimaxmacphy_ul_burst_fast_feedback
,
5447 &ett_wimaxmacphy_ul_burst_initial_ranging
,
5448 &ett_wimaxmacphy_ul_burst_periodic_ranging
,
5449 &ett_wimaxmacphy_ul_burst_papr_safety_zone
,
5450 &ett_wimaxmacphy_ul_burst_sounding_zone
,
5451 &ett_wimaxmacphy_ul_burst_noise_floor
,
5452 &ett_wimaxmacphy_ul_burst_normal_data
,
5453 &ett_wimaxmacphy_ul_burst_opt_aas
,
5454 &ett_wimaxmacphy_ul_burst_opt_mimo
,
5455 &ett_wimaxmacphy_ul_sub_burst_descriptor
,
5456 &ett_wimaxmacphy_ul_sub_burst_mini_subchannel
,
5457 &ett_wimaxmacphy_ul_sub_burst_fast_feedback
,
5458 &ett_wimaxmacphy_ul_sub_burst_harq_ack
,
5459 &ett_wimaxmacphy_ul_sub_burst_sounding_signal
,
5460 &ett_wimaxmacphy_ul_sub_burst_harq_chase
,
5461 &ett_wimaxmacphy_ul_sub_burst_mimo_chase
,
5462 &ett_wimaxmacphy_ul_pilot_patterns
,
5463 &ett_wimaxmacphy_ul_feedback_type_coding
,
5464 &ett_wimaxmacphy_ul_sub_burst_sub_allocation_specific
5467 static ei_register_info ei
[] = {
5468 { &ei_wimaxmacphy_unknown
, { "wimaxmacphy.unexpected_bytes", PI_MALFORMED
, PI_ERROR
, "Unexpected bytes", EXPFILL
}},
5471 expert_module_t
* expert_wimaxmacphy
;
5473 /* Register the protocol name and description */
5474 proto_wimaxmacphy
= proto_register_protocol(
5475 "WiMAX MAC-PHY over Ethernet",
5479 /* Required function calls to register the header fields and subtrees
5481 proto_register_field_array(proto_wimaxmacphy
, hf
, array_length(hf
));
5482 proto_register_subtree_array(ett
, array_length(ett
));
5483 expert_wimaxmacphy
= expert_register_protocol(proto_wimaxmacphy
);
5484 expert_register_field_array(expert_wimaxmacphy
, ei
, array_length(ei
));
5486 /* Register preferences module (See Section 2.6 for more on
5488 wimaxmacphy_module
= prefs_register_protocol(
5490 proto_reg_handoff_wimaxmacphy
);
5492 prefs_register_uint_preference(
5493 wimaxmacphy_module
, "udp.port",
5494 "WiMAX MAX PHY UDP Port",
5495 "WiMAX MAX PHY UDP port",
5497 &wimaxmacphy_udp_port
);
5502 proto_reg_handoff_wimaxmacphy(void)
5504 static guint old_wimaxmacphy_udp_port
= 0;
5505 static gboolean inited
= FALSE
;
5506 static dissector_handle_t wimaxmacphy_handle
;
5509 wimaxmacphy_handle
= new_create_dissector_handle(dissect_wimaxmacphy
, proto_wimaxmacphy
);
5510 dissector_add_handle("udp.port", wimaxmacphy_handle
); /* for 'decode as' */
5514 /* Register UDP port for dissection */
5515 if (old_wimaxmacphy_udp_port
!= 0 && old_wimaxmacphy_udp_port
!= wimaxmacphy_udp_port
) {
5516 dissector_delete_uint("udp.port", old_wimaxmacphy_udp_port
, wimaxmacphy_handle
);
5519 if (wimaxmacphy_udp_port
!= 0 && old_wimaxmacphy_udp_port
!= wimaxmacphy_udp_port
) {
5520 dissector_add_uint("udp.port", wimaxmacphy_udp_port
, wimaxmacphy_handle
);