MSWSP: fix dissect_mswsp_smb()
[wireshark-wip.git] / plugins / wimaxmacphy / packet-wimaxmacphy.c
blob29bb0cdb66590d600bf3a7f28cb3459b80881021
1 /* packet-wimaxmacphy.c
2 * Routines for wimaxmacphy (WiMAX MAX PHY over Ethernet) packet dissection
3 * Copyright 2008, Mobile Metrics - http://mobilemetrics.net/
5 * $Id$
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,
24 * USA.
27 #include "config.h"
29 #include <glib.h>
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;
313 /* Preferences */
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"},
343 { 0, NULL}
346 /* ------------------------------------------------------------------------- */
348 static const value_string wimaxmacphy_message_type_vals[] =
350 { 0, "Reserved"},
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)"},
368 { 0, NULL}
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);
372 #endif
374 /* ------------------------------------------------------------------------- */
375 /* error code field coding, for all but TXSTART.indication
377 static const value_string wimaxmacphy_prim_status_vals[]=
379 { 0, "Success"},
380 { 1, "Primitive is not supported"},
381 { 2, "FEC code type is not supported"},
382 { 3, "Overrun"},
383 { 4, "Underrun"},
384 { 5, "Transport Media Error"},
385 { 6, "TX data size do not match TXVECTOR"},
386 { 7, "Invalid RX/TX VECTOR format"},
387 { 0, NULL}
390 /* ---------------------------------------------------------------------------
391 * error code field coding, TXSTART.indication specific, delta is description
392 * for value 1
395 static const value_string wimaxmacphy_prim_txstart_indication_status_vals[]=
397 { 0, "Success"},
398 { 1, "Restart flag"},
399 { 2, "FEC code type is not supported"},
400 { 3, "Overrun"},
401 { 4, "Underrun"},
402 { 5, "Transport Media Error"},
403 { 6, "TX data size do not match TXVECTOR"},
404 { 7, "Invalid RX/TX VECTOR format"},
405 { 0, NULL}
408 /* ------------------------------------------------------------------------- */
410 #if 0
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"},
421 { 0, NULL}
423 #endif
425 /* ------------------------------------------------------------------------- */
427 #if 0
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"},
432 { 0, NULL}
434 #endif
436 /* ------------------------------------------------------------------------- */
438 static const value_string wimaxmacphy_prim_integrity_vals[]=
440 { 0, "valid data"},
441 { 1, "invalid data"},
442 { 0, NULL}
445 /* ------------------------------------------------------------------------- */
447 static const value_string wimaxmacphy_prim_indication_type_vals[]=
449 { 0, "Data burst"},
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"},
455 { 0, NULL}
458 /* ------------------------------------------------------------------------- */
460 static const value_string wimaxmacphy_prim_zone_permutation_type_vals[]=
462 { 0x0, "PUSC"},
463 { 0x1, "Optional PUSC"},
464 { 0x2, "AMC - 1 x 6"},
465 { 0x3, "AMC - 2 x 3"},
466 { 0x4, "AMC - 3 x 2"},
467 { 0, NULL}
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"},
476 { 0, NULL}
479 /* ------------------------------------------------------------------------- */
481 static const value_string wimaxmacphy_prim_harq_ack_ack_valid_vals[]=
483 { 0, "valid data"},
484 { 1, "invalid data"},
485 { 0, NULL}
488 static const true_false_string set_notset = {
489 "Set",
490 "Not set"
493 /* ------------------------------------------------------------------------- */
495 static const value_string wimaxmacphy_prim_harq_ack_unnamed_vals[]=
497 { 0, "ACK"},
498 { 1, "NAK"},
499 { 0, NULL}
502 /* ------------------------------------------------------------------------- */
504 static const value_string wimaxmacphy_prim_fast_feedback_valid_vals[]=
506 { 0, "valid data"},
507 { 1, "invalid data"},
508 { 0, NULL}
511 /* ------------------------------------------------------------------------- */
513 static
514 const value_string wimaxmacphy_prim_fast_feedback_sub_type_vals[]=
516 { 0, "CQI (CINR) measurement"},
517 { 1, "Control feedback"},
518 { 0, NULL}
521 /* ------------------------------------------------------------------------- */
523 static const value_string wimaxmacphy_subframe_type_vals[]=
525 { 1, "Downlink Subframe"},
526 { 2, "Uplink Subframe"},
527 { 0, NULL}
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"},
539 { 0, NULL}
542 /* ------------------------------------------------------------------------- */
544 static const value_string wimaxmacphy_ul_zone_type_vals[]=
546 { 0x20, "Normal Zone Parameters"},
547 { 0x21, "Reserved"},
548 { 0x22, "AAS Zone Parameters"},
549 { 0x23, "Reserved"},
550 { 0x24, "Reserved"},
551 { 0, NULL}
554 /* ------------------------------------------------------------------------- */
556 static const value_string wimaxmacphy_dl_zone_permutation_type_vals[]=
558 { 0x00, "PUSC"},
559 { 0x01, "FUSC"},
560 { 0x02, "Optional FUSC"},
561 { 0x03, "AMC - 1 x 6"},
562 { 0x04, "AMC - 2 x 3"},
563 { 0x05, "AMC - 3 x 2"},
564 { 0x06, "TUSC1"},
565 { 0x07, "TUSC2"},
566 { 0, NULL}
569 /* ------------------------------------------------------------------------- */
571 static const value_string wimaxmacphy_ul_zone_permutation_type_vals[]=
573 { 0x00, "PUSC"},
574 { 0x01, "FUSC"},
575 { 0x02, "Optional FUSC"},
576 { 0x03, "AMC - 1 x 6"},
577 { 0x04, "AMC - 2 x 3"},
578 { 0x05, "AMC - 3 x 2"},
579 { 0x06, "Reserved"},
580 { 0x07, "Reserved"},
581 { 0, NULL}
584 /* ------------------------------------------------------------------------- */
586 static
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"},
591 { 0, NULL}
594 /* ------------------------------------------------------------------------- */
596 static
597 const value_string wimaxmacphy_ul_zone_disable_pusc_subchannel_rotation_vals[]=
599 { 0, "rotation enabled"},
600 { 1, "rotation disabled"},
601 { 0, NULL}
604 /* ------------------------------------------------------------------------- */
606 static const value_string wimaxmacphy_zone_dedicated_pilots_vals[]=
608 { 0, "pilots are broadcast"},
609 { 1, "pilots are dedicated"},
610 { 0, NULL}
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"},
619 { 0, NULL}
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"},
630 { 0, NULL}
633 /* ------------------------------------------------------------------------- */
635 static const value_string wimaxmacphy_matrix_indicator_vals[]=
637 { 0x00, "Matrix A"},
638 { 0x01, "Matrix B"},
639 { 0x02, "Matrix C"},
640 { 0, NULL}
643 /* ------------------------------------------------------------------------- */
645 static const value_string wimaxmacphy_zone_midamble_presence_vals[]=
647 { 0, "not present"},
648 { 1, "present"},
649 { 0, NULL}
652 /* ------------------------------------------------------------------------- */
654 static const value_string wimaxmacphy_zone_midamble_boosting_vals[]=
656 { 0, "no boosting"},
657 { 1, "boosting"},
658 { 0, NULL}
661 /* ------------------------------------------------------------------------- */
663 static const value_string wimaxmacphy_zone_preamble_configuration_vals[]=
665 { 0x00, "0 symbols (preambles not supported)"},
666 { 0x01, "1 symbol"},
667 { 0x02, "2 symbols"},
668 { 0x03, "3 symbols"},
669 { 0, NULL}
672 /* ------------------------------------------------------------------------- */
674 static const value_string wimaxmacphy_zone_sdma_supported_indication_vals[]=
676 { 0, "SDMA not supported"},
677 { 1, "SDMA supported"},
678 { 0, NULL}
681 /* ------------------------------------------------------------------------- */
683 static const value_string wimaxmacphy_zone_preamble_type_vals[]=
685 { 0, "frequency shifted preamble"},
686 { 1, "time shifted preamble"},
687 { 0, NULL}
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"},
698 { 0, NULL}
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"},
714 { 0x49, "Reserved"},
715 { 0, NULL}
718 /* ------------------------------------------------------------------------- */
720 static const value_string wimaxmacphy_burst_type_extension_vals[]=
722 { 0x00, "no extended data:"},
723 { 0x01, "AAS v1"},
724 { 0x02, "MIMO v1"},
725 { 0, NULL}
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"},
746 { 14, "Reserved"},
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"},
785 { 0, NULL}
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);
790 #endif
792 /* ------------------------------------------------------------------------- */
794 static const value_string wimaxmacphy_burst_boosting_vals[]=
796 { 0x00, "normal"},
797 { 0x01, "+6dB"},
798 { 0x02, "-6dB"},
799 { 0x03, "+9dB"},
800 { 0x04, "+3dB"},
801 { 0x05, "-3dB"},
802 { 0x06, "-9 dB"},
803 { 0x07, "-12 dB"},
804 { 0, NULL}
807 /* ------------------------------------------------------------------------- */
809 static
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"},
816 { 0, NULL}
819 /* ------------------------------------------------------------------------- */
821 static const value_string wimaxmacphy_dl_sub_burst_type_vals[]=
823 { 0x60, "No HARQ"},
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"},
830 { 0x67, "MIMO-STC"},
831 { 0, NULL}
834 /* ------------------------------------------------------------------------- */
836 static const value_string wimaxmacphy_ul_sub_burst_type_vals[]=
838 { 0x60, "No HARQ"},
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"},
845 { 0x67, "MIMO-STC"},
846 { 0x68, "Mini-subchannel"},
847 { 0x69, "Fast Feedback channel"},
848 { 0x6A, "HARQ ACK subchannel"},
849 { 0x6B, "Sounding signal"},
850 { 0, NULL}
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"},
860 { 0, NULL}
863 /* ------------------------------------------------------------------------- */
865 static const value_string wimaxmacphy_ul_burst_papr_unnamed_vals[]=
867 { 0, "UL PAPR reduction"},
868 { 1, "UL Safety zone"},
869 { 0, NULL}
872 /* ------------------------------------------------------------------------- */
874 static const value_string wimaxmacphy_ul_burst_ranging_method_vals[]=
876 { 0, "ranging over 2 symbols"},
877 { 1, "ranging over 4 symbols"},
878 { 0, NULL}
881 /* ------------------------------------------------------------------------- */
883 static const value_string wimaxmacphy_ul_burst_sounding_type_vals[]=
885 { 0, "Type A"},
886 { 1, "Type B"},
887 { 0, NULL}
890 /* ------------------------------------------------------------------------- */
892 static
893 const value_string wimaxmacphy_ul_burst_sounding_separability_type_vals[]=
895 { 0, "all subcarriers"},
896 { 1, "decimated subcarriers in a band"},
897 { 0, NULL}
900 /* ------------------------------------------------------------------------- */
902 static
903 const value_string wimaxmacphy_ul_burst_sounding_max_cyclic_shift_indx_vals[]=
905 { 0x00, "P=4"},
906 { 0x01, "P=8;"},
907 { 0x02, "P=16"},
908 { 0x03, "P=32"},
909 { 0x04, "P=9"},
910 { 0x05, "P=18"},
911 { 0, NULL}
914 /* ------------------------------------------------------------------------- */
916 static
917 const value_string wimaxmacphy_ul_burst_sounding_decimation_offset_rand_vals[]=
919 { 0, "no randomization"},
920 { 1, "randomization"},
921 { 0, NULL}
924 /* ------------------------------------------------------------------------- */
926 static
927 const value_string wimaxmacphy_ul_burst_opt_mimo_matrix_indicator_vals[]=
929 { 0x00, "Matrix A (STTD)"},
930 { 0x01, "Matrix B (SM)"},
931 { 0x02, "Reserved"},
932 { 0x03, "Reserved"},
933 { 0, NULL}
936 /* ------------------------------------------------------------------------- */
938 static const value_string wimaxmacphy_ul_burst_opt_mimo_collaborative_vals[]=
940 { 0, "non-collaborative"},
941 { 1, "collaborative"},
942 { 0, NULL}
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"},
951 { 0, NULL}
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"},
962 { 0, NULL}
965 /* ------------------------------------------------------------------------- */
967 #if 0
968 static const value_string wimaxmacphy_ul_sub_burst_feedback_sub_type_vals[]=
970 { 0, "CQI (CINR) measurement"},
971 { 1, "Control feedback"},
972 { 0, NULL}
974 #endif
976 /* ------------------------------------------------------------------------- */
978 static
979 const value_string wimaxmacphy_ul_sub_burst_sounding_power_assignment_vals[]=
981 { 0x00, "Equal power"},
982 { 0x01, "Reserved"},
983 { 0x02, "Interference dependent. Per subcarrier power limit."},
984 { 0x03, "Interference dependent. Total power limit."},
985 { 0, NULL}
988 /* ------------------------------------------------------------------------- */
990 static const value_string wimaxmacphy_ul_sub_burst_sounding_power_boost_vals[]=
992 { 0, "no boost"},
993 { 1, "boost"},
994 { 0, NULL}
997 /* ------------------------------------------------------------------------- */
999 static
1000 const value_string wimaxmacphy_ul_sub_burst_sounding_allocation_mode_vals[]=
1002 { 0, "Normal"},
1003 { 1, "Band AMC"},
1004 { 0, NULL}
1007 /* ------------------------------------------------------------------------- */
1009 static const value_string wimaxmacphy_ul_sub_burst_mimo_chase_matrix_vals[]=
1011 { 0, "Matrix A"},
1012 { 1, "Matrix B"},
1013 { 0, NULL}
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;
1020 proto_item *item;
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);
1025 offset += 1;
1027 proto_tree_add_item(tree, hf_wimaxmacphy_sub_burst_number, tvb, offset, 1, ENC_BIG_ENDIAN);
1028 offset += 1;
1030 proto_tree_add_item(tree, hf_wimaxmacphy_sub_burst_symbol_offset, tvb, offset, 1, ENC_BIG_ENDIAN);
1031 offset += 1;
1033 proto_tree_add_item(tree, hf_wimaxmacphy_sub_burst_subchannel_offset, tvb, offset, 1, ENC_BIG_ENDIAN);
1034 offset += 1;
1036 proto_tree_add_item(tree, hf_wimaxmacphy_sub_burst_number_of_slots, tvb, offset, 2, ENC_BIG_ENDIAN);
1037 offset += 2;
1039 proto_tree_add_item(tree, hf_wimaxmacphy_sub_burst_reserved1, tvb, offset, 2, ENC_BIG_ENDIAN);
1040 offset += 2;
1042 proto_tree_add_item(tree, hf_wimaxmacphy_sub_burst_reserved2, tvb, offset, 1, ENC_BIG_ENDIAN);
1043 offset += 1;
1045 proto_tree_add_item(tree, hf_wimaxmacphy_sub_burst_modulation_fec_code_type, tvb, offset, 1, ENC_BIG_ENDIAN);
1046 offset += 1;
1048 proto_tree_add_item(tree, hf_wimaxmacphy_sub_burst_issid, tvb, offset, 2, ENC_BIG_ENDIAN);
1049 offset += 2;
1051 proto_tree_add_item(tree, hf_wimaxmacphy_sub_burst_aas_handle, tvb, offset, 2, ENC_BIG_ENDIAN);
1052 offset += 2;
1054 proto_tree_add_item(tree, hf_wimaxmacphy_sub_burst_boosting, tvb, offset, 1, ENC_BIG_ENDIAN);
1055 offset += 1;
1057 proto_tree_add_item(tree, hf_wimaxmacphy_sub_burst_repetition_coding_indication, tvb, offset, 1, ENC_BIG_ENDIAN);
1058 offset += 1;
1060 proto_tree_add_item(tree, hf_wimaxmacphy_sub_burst_data_length, tvb, offset, 4, ENC_BIG_ENDIAN);
1061 offset += 4;
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);
1072 offset += 1;
1074 proto_tree_add_item(subtree, hf_wimaxmacphy_sub_burst_harq_chase_harq_sequence_number, tvb, offset, 1, ENC_BIG_ENDIAN);
1075 offset += 1;
1077 proto_tree_add_item(subtree, hf_wimaxmacphy_sub_burst_harq_chase_flush_unnamed, tvb, offset, 1, ENC_BIG_ENDIAN);
1078 offset += 1;
1080 proto_tree_add_item(subtree, hf_wimaxmacphy_sub_burst_harq_chase_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
1081 offset += 1;
1082 break;
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);
1090 offset += 1;
1092 proto_tree_add_item(subtree, hf_wimaxmacphy_sub_burst_mimo_chase_harq_sequence_number, tvb, offset, 1, ENC_BIG_ENDIAN);
1093 offset += 1;
1095 proto_tree_add_item(subtree, hf_wimaxmacphy_sub_burst_mimo_chase_flush_unnamed, tvb, offset, 1, ENC_BIG_ENDIAN);
1096 offset += 1;
1098 proto_tree_add_item(subtree, hf_wimaxmacphy_sub_burst_mimo_chase_layer_index, tvb, offset, 1, ENC_BIG_ENDIAN);
1099 offset += 1;
1100 break;
1102 default:
1103 /* do nothing */
1104 break;
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);
1119 offset += 1;
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);
1123 offset += 1;
1125 proto_tree_add_item(tree, hf_wimaxmacphy_burst_number, tvb, offset, 1, ENC_BIG_ENDIAN);
1126 offset += 1;
1128 proto_tree_add_item(tree, hf_wimaxmacphy_burst_modulation_fec_code_type, tvb, offset, 1, ENC_BIG_ENDIAN);
1129 offset += 1;
1131 proto_tree_add_item(tree, hf_wimaxmacphy_burst_data_length, tvb, offset, 4, ENC_BIG_ENDIAN);
1132 offset += 4;
1134 proto_tree_add_item(tree, hf_wimaxmacphy_burst_ofdma_symbol_offset, tvb, offset, 1, ENC_BIG_ENDIAN);
1135 offset += 1;
1137 proto_tree_add_item(tree, hf_wimaxmacphy_burst_subchannel_offset, tvb, offset, 1, ENC_BIG_ENDIAN);
1138 offset += 1;
1140 proto_tree_add_item(tree, hf_wimaxmacphy_burst_boosting, tvb, offset, 1, ENC_BIG_ENDIAN);
1141 offset += 1;
1143 proto_tree_add_item(tree, hf_wimaxmacphy_burst_repetition_coding_indication, tvb, offset, 1, ENC_BIG_ENDIAN);
1144 offset += 1;
1146 /* burst-specific parts */
1147 switch (burst_type)
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);
1155 offset += 2;
1157 proto_tree_add_item(subtree, hf_wimaxmacphy_dl_burst_map_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
1158 offset += 2;
1159 break;
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);
1167 offset += 1;
1169 proto_tree_add_item(subtree, hf_wimaxmacphy_dl_burst_normal_number_of_subchannels, tvb, offset, 1, ENC_BIG_ENDIAN);
1170 offset += 1;
1172 proto_tree_add_item(subtree, hf_wimaxmacphy_dl_burst_normal_aas_handle, tvb, offset, 2, ENC_BIG_ENDIAN);
1173 offset += 2;
1175 /* extensions */
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);
1184 offset += 1;
1186 proto_tree_add_item(opt_tree, hf_wimaxmacphy_burst_opt_aas_preamble_shift_index, tvb, offset, 1, ENC_BIG_ENDIAN);
1187 offset += 1;
1189 proto_tree_add_item(opt_tree, hf_wimaxmacphy_burst_opt_aas_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
1190 offset += 2;
1192 /* ??? Algorithm specific Information (per Burst Type extension) */
1193 break;
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);
1201 offset += 1;
1203 proto_tree_add_item(opt_tree, hf_wimaxmacphy_burst_opt_mimo_layer_index, tvb, offset, 1, ENC_BIG_ENDIAN);
1204 offset += 1;
1206 proto_tree_add_item(opt_tree, hf_wimaxmacphy_dl_burst_opt_mimo_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
1207 offset += 2;
1210 /* ??? Algorithm specific Information (per Burst Type extension) */
1211 break;
1213 default:
1214 /* do nothing */
1215 break;
1218 break;
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);
1226 offset += 1;
1228 proto_tree_add_item(subtree, hf_wimaxmacphy_burst_papr_number_of_subchannels, tvb, offset, 1, ENC_BIG_ENDIAN);
1229 offset += 1;
1231 proto_tree_add_item(subtree, hf_wimaxmacphy_burst_papr_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
1232 offset += 2;
1233 break;
1235 default:
1236 /* do nothing */
1237 break;
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);
1243 offset += 1;
1245 proto_tree_add_item(tree, hf_wimaxmacphy_sub_burst_padding, tvb, offset, 3, ENC_BIG_ENDIAN);
1246 offset += 3;
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;
1271 proto_item *item;
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);
1276 offset += 1;
1278 proto_tree_add_item(tree, hf_wimaxmacphy_zone_number, tvb, offset, 1, ENC_BIG_ENDIAN);
1279 offset += 1;
1281 proto_tree_add_item(tree, hf_wimaxmacphy_zone_start_symbol_offset, tvb, offset, 1, ENC_BIG_ENDIAN);
1282 offset += 1;
1284 proto_tree_add_item(tree, hf_wimaxmacphy_zone_end_symbol_offset, tvb, offset, 1, ENC_BIG_ENDIAN);
1285 offset += 1;
1287 proto_tree_add_item(tree, hf_wimaxmacphy_dl_zone_permutation_type, tvb, offset, 1, ENC_BIG_ENDIAN);
1288 offset += 1;
1290 proto_tree_add_item(tree, hf_wimaxmacphy_dl_zone_use_all_subchannels_indicator, tvb, offset, 1, ENC_BIG_ENDIAN);
1291 offset += 1;
1293 proto_tree_add_item(tree, hf_wimaxmacphy_zone_dl_perm_base, tvb, offset, 1, ENC_BIG_ENDIAN);
1294 offset += 1;
1296 proto_tree_add_item(tree, hf_wimaxmacphy_zone_prbs_id, tvb, offset, 1, ENC_BIG_ENDIAN);
1297 offset += 1;
1299 proto_tree_add_item(tree, hf_wimaxmacphy_zone_dedicated_pilots, tvb, offset, 1, ENC_BIG_ENDIAN);
1300 offset += 1;
1302 proto_tree_add_item(tree, hf_wimaxmacphy_zone_reserved, tvb, offset, 3, ENC_BIG_ENDIAN);
1303 offset += 3;
1305 /* zone-specific parts */
1306 switch (zone_type)
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);
1314 offset += 1;
1316 proto_tree_add_item(subtree, hf_wimaxmacphy_zone_matrix_indicator, tvb, offset, 1, ENC_BIG_ENDIAN);
1317 offset += 1;
1319 proto_tree_add_item(subtree, hf_wimaxmacphy_zone_midamble_presence, tvb, offset, 1, ENC_BIG_ENDIAN);
1320 offset += 1;
1322 proto_tree_add_item(subtree, hf_wimaxmacphy_zone_midamble_boosting, tvb, offset, 1, ENC_BIG_ENDIAN);
1323 offset += 1;
1324 break;
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);
1332 offset += 1;
1334 proto_tree_add_item(subtree, hf_wimaxmacphy_zone_sdma_supported_indication, tvb, offset, 1, ENC_BIG_ENDIAN);
1335 offset += 1;
1337 proto_tree_add_item(subtree, hf_wimaxmacphy_dl_zone_aas_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
1338 offset += 2;
1340 /* ??? Algorithm Specific Information (per Zone Type) */
1341 break;
1343 default:
1344 /* do nothing */
1345 break;
1348 /* burst portion */
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);
1351 offset += 1;
1353 proto_tree_add_item(tree, hf_wimaxmacphy_burst_padding, tvb, offset, 3, ENC_BIG_ENDIAN);
1354 offset += 3;
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;
1381 guint8 zone;
1383 proto_tree_add_item(tree, hf_wimaxmacphy_subframe_subframe_type, tvb, offset, 1, ENC_BIG_ENDIAN);
1384 offset += 1;
1386 proto_tree_add_item(tree, hf_wimaxmacphy_subframe_frame_number, tvb, offset, 1, ENC_BIG_ENDIAN);
1387 offset += 1;
1389 proto_tree_add_item(tree, hf_wimaxmacphy_subframe_downlink_reserved1, tvb, offset, 1, ENC_BIG_ENDIAN);
1390 offset += 1;
1392 proto_tree_add_item(tree, hf_wimaxmacphy_subframe_phy_sap_version_number, tvb, offset, 1, ENC_BIG_ENDIAN);
1393 offset += 1;
1395 proto_tree_add_item(tree, hf_wimaxmacphy_subframe_downlink_reserved2, tvb, offset, 4, ENC_BIG_ENDIAN);
1396 offset += 4;
1398 /* zone portion */
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);
1401 offset += 1;
1403 proto_tree_add_item(tree, hf_wimaxmacphy_number_of_zone_descriptors, tvb, offset, 3, ENC_BIG_ENDIAN);
1404 offset += 3;
1406 /* zone descriptors */
1407 for (zone = 0; zone < zone_descriptor_count; ++zone)
1409 proto_item *item;
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);
1438 offset += 1;
1440 proto_tree_add_item(subtree, hf_wimaxmacphy_sub_burst_subchannel_offset, tvb, offset, 1, ENC_BIG_ENDIAN);
1441 offset += 1;
1443 proto_tree_add_item(subtree, hf_wimaxmacphy_sub_burst_number_of_slots, tvb, offset, 2, ENC_BIG_ENDIAN);
1444 offset += 2;
1446 proto_tree_add_item(subtree, hf_wimaxmacphy_sub_burst_data_length, tvb, offset, 4, ENC_BIG_ENDIAN);
1447 offset += 4;
1449 proto_tree_add_item(subtree, hf_wimaxmacphy_sub_burst_repetition_coding_indication, tvb, offset, 1, ENC_BIG_ENDIAN);
1450 offset += 1;
1452 proto_tree_add_item(subtree, hf_wimaxmacphy_sub_burst_modulation_fec_code_type, tvb, offset, 1, ENC_BIG_ENDIAN);
1453 offset += 1;
1455 proto_tree_add_item(subtree, hf_wimaxmacphy_sub_burst_reserved1, tvb, offset, 2, ENC_BIG_ENDIAN);
1456 offset += 2;
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);
1467 offset += 1;
1469 proto_tree_add_item(opt_tree, hf_wimaxmacphy_sub_burst_harq_chase_harq_sequence_number, tvb, offset, 1, ENC_BIG_ENDIAN);
1470 offset += 1;
1472 proto_tree_add_item(opt_tree, hf_wimaxmacphy_sub_burst_harq_chase_flush_unnamed, tvb, offset, 1, ENC_BIG_ENDIAN);
1473 offset += 1;
1475 proto_tree_add_item(opt_tree, hf_wimaxmacphy_sub_burst_harq_chase_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
1476 offset += 1;
1477 break;
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);
1485 offset += 1;
1487 proto_tree_add_item(opt_tree, hf_wimaxmacphy_sub_burst_mimo_chase_harq_sequence_number, tvb, offset, 1, ENC_BIG_ENDIAN);
1488 offset += 1;
1490 proto_tree_add_item(opt_tree, hf_wimaxmacphy_sub_burst_mimo_chase_flush_unnamed, tvb, offset, 1, ENC_BIG_ENDIAN);
1491 offset += 1;
1493 proto_tree_add_item(opt_tree, hf_wimaxmacphy_ul_sub_burst_mimo_chase_matrix, tvb, offset, 1, ENC_BIG_ENDIAN);
1494 offset += 1;
1495 break;
1497 default:
1498 /* do nothing */
1499 break;
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);
1516 offset += 1;
1518 proto_tree_add_item(tree, hf_wimaxmacphy_sub_burst_number, tvb, offset, 1, ENC_BIG_ENDIAN);
1519 offset += 1;
1521 proto_tree_add_item(tree, hf_wimaxmacphy_sub_burst_issid, tvb, offset, 2, ENC_BIG_ENDIAN);
1522 offset += 2;
1524 proto_tree_add_item(tree, hf_wimaxmacphy_sub_burst_aas_handle, tvb, offset, 2, ENC_BIG_ENDIAN);
1525 offset += 2;
1527 proto_tree_add_item(tree, hf_wimaxmacphy_sub_burst_reserved1, tvb, offset, 2, ENC_BIG_ENDIAN);
1528 offset += 2;
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);
1539 offset += 1;
1541 proto_tree_add_item(subtree, hf_wimaxmacphy_ul_sub_burst_mini_subchannel_index, tvb, offset, 1, ENC_BIG_ENDIAN);
1542 offset += 1;
1544 proto_tree_add_item(subtree, hf_wimaxmacphy_ul_sub_burst_mini_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
1545 offset += 2;
1546 break;
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);
1563 offset += 1;
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);
1568 offset += 2;
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);
1572 offset += 1;
1573 break;
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);
1582 offset += 4;
1583 break;
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);
1591 offset += 1;
1593 proto_tree_add_item(subtree, hf_wimaxmacphy_ul_sub_burst_sounding_power_assignment, tvb, offset, 1, ENC_BIG_ENDIAN);
1594 offset += 1;
1596 proto_tree_add_item(subtree, hf_wimaxmacphy_ul_sub_burst_sounding_power_boost, tvb, offset, 1, ENC_BIG_ENDIAN);
1597 offset += 1;
1599 proto_tree_add_item(subtree, hf_wimaxmacphy_ul_sub_burst_sounding_allocation_mode, tvb, offset, 1, ENC_BIG_ENDIAN);
1600 offset += 1;
1602 proto_tree_add_item(subtree, hf_wimaxmacphy_ul_sub_burst_sounding_start_freq_band, tvb, offset, 1, ENC_BIG_ENDIAN);
1603 offset += 1;
1605 proto_tree_add_item(subtree, hf_wimaxmacphy_ul_sub_burst_sounding_num_freq_bands, tvb, offset, 1, ENC_BIG_ENDIAN);
1606 offset += 1;
1608 proto_tree_add_item(subtree, hf_wimaxmacphy_ul_sub_burst_sounding_band_bit_map, tvb, offset, 2, ENC_BIG_ENDIAN);
1609 offset += 2;
1611 proto_tree_add_item(subtree, hf_wimaxmacphy_ul_sub_burst_sounding_cyclic_time_shift, tvb, offset, 1, ENC_BIG_ENDIAN);
1612 offset += 1;
1614 proto_tree_add_item(subtree, hf_wimaxmacphy_ul_sub_burst_sounding_decimation_offset, tvb, offset, 1, ENC_BIG_ENDIAN);
1615 offset += 1;
1617 proto_tree_add_item(subtree, hf_wimaxmacphy_ul_sub_burst_sounding_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
1618 offset += 1;
1619 break;
1621 default:
1622 offset += dissect_wimaxmacphy_ul_sub_burst_sub_allocation_specific_part(
1623 tvb, offset, pinfo, tree, sub_burst_type);
1624 break;
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);
1640 offset += 1;
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);
1644 offset += 1;
1646 proto_tree_add_item(tree, hf_wimaxmacphy_burst_number, tvb, offset, 1, ENC_BIG_ENDIAN);
1647 offset += 1;
1649 proto_tree_add_item(tree, hf_wimaxmacphy_burst_modulation_fec_code_type, tvb, offset, 1, ENC_BIG_ENDIAN);
1650 offset += 1;
1652 proto_tree_add_item(tree, hf_wimaxmacphy_burst_data_length, tvb, offset, 4, ENC_BIG_ENDIAN);
1653 offset += 4;
1655 proto_tree_add_item(tree, hf_wimaxmacphy_burst_ofdma_symbol_offset, tvb, offset, 1, ENC_BIG_ENDIAN);
1656 offset += 1;
1658 proto_tree_add_item(tree, hf_wimaxmacphy_burst_subchannel_offset, tvb, offset, 1, ENC_BIG_ENDIAN);
1659 offset += 1;
1661 proto_tree_add_item(tree, hf_wimaxmacphy_burst_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
1662 offset += 1;
1664 proto_tree_add_item(tree, hf_wimaxmacphy_burst_repetition_coding_indication, tvb, offset, 1, ENC_BIG_ENDIAN);
1665 offset += 1;
1667 proto_tree_add_item(tree, hf_wimaxmacphy_burst_issid, tvb, offset, 2, ENC_BIG_ENDIAN);
1668 offset += 2;
1670 proto_tree_add_item(tree, hf_wimaxmacphy_burst_aas_handle, tvb, offset, 2, ENC_BIG_ENDIAN);
1671 offset += 2;
1673 /* burst-specific parts */
1674 switch (burst_type)
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);
1682 offset += 1;
1684 proto_tree_add_item(subtree, hf_wimaxmacphy_ul_burst_harq_ack_number_of_subchannels, tvb, offset, 1, ENC_BIG_ENDIAN);
1685 offset += 1;
1687 proto_tree_add_item(subtree, hf_wimaxmacphy_ul_burst_harq_ack_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
1688 offset += 2;
1689 break;
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);
1697 offset += 1;
1699 proto_tree_add_item(subtree, hf_wimaxmacphy_ul_burst_fast_number_of_subchannels, tvb, offset, 1, ENC_BIG_ENDIAN);
1700 offset += 1;
1702 proto_tree_add_item(subtree, hf_wimaxmacphy_ul_burst_fast_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
1703 offset += 2;
1704 break;
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);
1712 offset += 1;
1714 proto_tree_add_item(subtree, hf_wimaxmacphy_ul_burst_initial_number_of_subchannels, tvb, offset, 1, ENC_BIG_ENDIAN);
1715 offset += 1;
1717 proto_tree_add_item(subtree, hf_wimaxmacphy_ul_burst_initial_ranging_method, tvb, offset, 1, ENC_BIG_ENDIAN);
1718 offset += 1;
1720 proto_tree_add_item(subtree, hf_wimaxmacphy_ul_burst_initial_reserved1, tvb, offset, 1, ENC_BIG_ENDIAN);
1721 offset += 1;
1723 proto_tree_add_item(subtree, hf_wimaxmacphy_ul_burst_initial_zone_xid, tvb, offset, 2, ENC_BIG_ENDIAN);
1724 offset += 2;
1726 proto_tree_add_item(subtree, hf_wimaxmacphy_ul_burst_initial_reserved2, tvb, offset, 2, ENC_BIG_ENDIAN);
1727 offset += 2;
1728 break;
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);
1736 offset += 1;
1738 proto_tree_add_item(subtree, hf_wimaxmacphy_ul_burst_periodic_number_of_subchannels, tvb, offset, 1, ENC_BIG_ENDIAN);
1739 offset += 1;
1741 proto_tree_add_item(subtree, hf_wimaxmacphy_ul_burst_periodic_ranging_method, tvb, offset, 1, ENC_BIG_ENDIAN);
1742 offset += 1;
1744 proto_tree_add_item(subtree, hf_wimaxmacphy_ul_burst_periodic_reserved1, tvb, offset, 1, ENC_BIG_ENDIAN);
1745 offset += 1;
1747 proto_tree_add_item(subtree, hf_wimaxmacphy_ul_burst_periodic_zone_xid, tvb, offset, 2, ENC_BIG_ENDIAN);
1748 offset += 2;
1750 proto_tree_add_item(subtree, hf_wimaxmacphy_ul_burst_periodic_reserved2, tvb, offset, 2, ENC_BIG_ENDIAN);
1751 offset += 2;
1752 break;
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);
1760 offset += 1;
1762 proto_tree_add_item(subtree, hf_wimaxmacphy_burst_papr_number_of_subchannels, tvb, offset, 1, ENC_BIG_ENDIAN);
1763 offset += 1;
1765 proto_tree_add_item(subtree, hf_wimaxmacphy_ul_burst_papr_unnamed, tvb, offset, 1, ENC_BIG_ENDIAN);
1766 offset += 1;
1768 proto_tree_add_item(subtree, hf_wimaxmacphy_burst_papr_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
1769 offset += 1;
1770 break;
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);
1778 offset += 1;
1780 proto_tree_add_item(subtree, hf_wimaxmacphy_ul_burst_sounding_number_of_subchannels, tvb, offset, 1, ENC_BIG_ENDIAN);
1781 offset += 1;
1783 proto_tree_add_item(subtree, hf_wimaxmacphy_ul_burst_sounding_type, tvb, offset, 1, ENC_BIG_ENDIAN);
1784 offset += 1;
1786 proto_tree_add_item(subtree, hf_wimaxmacphy_ul_burst_sounding_separability_type, tvb, offset, 1, ENC_BIG_ENDIAN);
1787 offset += 1;
1789 proto_tree_add_item(subtree, hf_wimaxmacphy_ul_burst_sounding_max_cyclic_shift_indx, tvb, offset, 1, ENC_BIG_ENDIAN);
1790 offset += 1;
1792 proto_tree_add_item(subtree, hf_wimaxmacphy_ul_burst_sounding_decimation_value, tvb, offset, 1, ENC_BIG_ENDIAN);
1793 offset += 1;
1795 proto_tree_add_item(subtree, hf_wimaxmacphy_ul_burst_sounding_decimation_offset_rand, tvb, offset, 1, ENC_BIG_ENDIAN);
1796 offset += 1;
1798 proto_tree_add_item(subtree, hf_wimaxmacphy_ul_burst_sounding_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
1799 offset += 1;
1800 break;
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);
1808 offset += 1;
1810 proto_tree_add_item(subtree, hf_wimaxmacphy_ul_burst_noise_number_of_subchannels, tvb, offset, 1, ENC_BIG_ENDIAN);
1811 offset += 1;
1813 proto_tree_add_item(subtree, hf_wimaxmacphy_ul_burst_noise_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
1814 offset += 2;
1815 break;
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);
1823 offset += 2;
1825 proto_tree_add_item(subtree, hf_wimaxmacphy_ul_burst_normal_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
1826 offset += 2;
1828 /* extensions */
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);
1837 offset += 1;
1839 proto_tree_add_item(opt_tree, hf_wimaxmacphy_burst_opt_aas_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
1840 offset += 2;
1842 proto_tree_add_item(opt_tree, hf_wimaxmacphy_burst_opt_aas_preamble_shift_index, tvb, offset, 1, ENC_BIG_ENDIAN);
1843 offset += 1;
1845 /* ??? Algorithm specific Information (per Burst Type extension) */
1846 break;
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);
1854 offset += 1;
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);
1863 offset += 1;
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);
1867 offset += 1;
1869 proto_tree_add_item(opt_tree, hf_wimaxmacphy_burst_opt_mimo_layer_index, tvb, offset, 1, ENC_BIG_ENDIAN);
1870 offset += 1;
1872 /* ??? Algorithm specific Information (per Burst Type extension) */
1873 break;
1875 default:
1876 /* do nothing */
1877 break;
1880 break;
1882 default:
1883 /* do nothing */
1884 break;
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);
1890 offset += 1;
1892 proto_tree_add_item(tree, hf_wimaxmacphy_sub_burst_padding, tvb, offset, 3, ENC_BIG_ENDIAN);
1893 offset += 3;
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;
1919 proto_item *item;
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);
1923 offset += 1;
1925 proto_tree_add_item(tree, hf_wimaxmacphy_zone_number, tvb, offset, 1, ENC_BIG_ENDIAN);
1926 offset += 1;
1928 proto_tree_add_item(tree, hf_wimaxmacphy_zone_start_symbol_offset, tvb, offset, 1, ENC_BIG_ENDIAN);
1929 offset += 1;
1931 proto_tree_add_item(tree, hf_wimaxmacphy_zone_end_symbol_offset, tvb, offset, 1, ENC_BIG_ENDIAN);
1932 offset += 1;
1934 proto_tree_add_item(tree, hf_wimaxmacphy_ul_zone_permutation_type, tvb, offset, 1, ENC_BIG_ENDIAN);
1935 offset += 1;
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);
1939 offset += 1;
1941 proto_tree_add_item(tree, hf_wimaxmacphy_zone_ul_perm_base, tvb, offset, 1, ENC_BIG_ENDIAN);
1942 offset += 1;
1944 proto_tree_add_item(tree, hf_wimaxmacphy_zone_agc_range_extension, tvb, offset, 1, ENC_BIG_ENDIAN);
1945 offset += 1;
1947 /* zone-specific parts */
1948 switch (zone_type)
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);
1958 offset += 1;
1960 proto_tree_add_item(subtree, hf_wimaxmacphy_zone_preamble_type, tvb, offset, 1, ENC_BIG_ENDIAN);
1961 offset += 1;
1963 proto_tree_add_item(subtree, hf_wimaxmacphy_zone_sdma_supported_indication, tvb, offset, 1, ENC_BIG_ENDIAN);
1964 offset += 1;
1966 proto_tree_add_item(subtree, hf_wimaxmacphy_ul_zone_aas_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
1967 offset += 1;
1969 /* ??? Algorithm Specific Information (per Zone Type) */
1970 break;
1972 default:
1973 /* do nothing */
1974 break;
1977 /* burst portion */
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);
1980 offset += 1;
1982 proto_tree_add_item(tree, hf_wimaxmacphy_burst_padding, tvb, offset, 3, ENC_BIG_ENDIAN);
1983 offset += 3;
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;
2008 guint8 zone;
2010 proto_tree_add_item(tree, hf_wimaxmacphy_subframe_subframe_type, tvb, offset, 1, ENC_BIG_ENDIAN);
2011 offset += 1;
2013 proto_tree_add_item(tree, hf_wimaxmacphy_subframe_frame_number, tvb, offset, 1, ENC_BIG_ENDIAN);
2014 offset += 1;
2016 proto_tree_add_item(tree, hf_wimaxmacphy_subframe_downlink_reserved1, tvb, offset, 1, ENC_BIG_ENDIAN);
2017 offset += 1;
2019 proto_tree_add_item(tree, hf_wimaxmacphy_subframe_phy_sap_version_number, tvb, offset, 1, ENC_BIG_ENDIAN);
2020 offset += 1;
2022 proto_tree_add_item(tree, hf_wimaxmacphy_subframe_allocation_start_time, tvb, offset, 4, ENC_BIG_ENDIAN);
2023 offset += 4;
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);
2027 offset += 1;
2029 proto_tree_add_item(tree, hf_wimaxmacphy_zone_padding, tvb, offset, 3, ENC_BIG_ENDIAN);
2030 offset += 3;
2032 /* -----------------------------------------------------------------------
2033 * zone descriptors
2034 * -----------------------------------------------------------------------
2037 for (zone = 0; zone < zone_descriptor_count; ++zone)
2039 proto_item *item;
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);
2063 offset += 2;
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);
2079 offset += 1;
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);
2083 /* offset += 1; */
2085 return 2;
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);
2091 offset += 1;
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);
2095 offset += 1;
2097 proto_tree_add_item(tree, hf_wimaxmacphy_prim_reserved1, tvb, offset, 1, ENC_BIG_ENDIAN);
2098 offset += 1;
2100 proto_tree_add_item(tree, hf_wimaxmacphy_prim_initial_frame_number, tvb, offset, 3, ENC_BIG_ENDIAN);
2101 /* offset += 3; */
2103 return 6;
2106 static guint dissect_wimaxmacphy_phy_txsdu_request(tvbuff_t *tvb, guint offset, packet_info *pinfo _U_, proto_tree *tree)
2108 guint length;
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);
2113 offset += 2;
2115 length = tvb_reported_length_remaining(tvb, offset);
2116 proto_tree_add_item(tree, hf_wimaxmacphy_prim_phy_sdu, tvb, offset, length, ENC_NA);
2118 return length + 2;
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);
2126 offset += 2;
2128 proto_tree_add_item(tree, hf_wimaxmacphy_prim_reserved5, tvb, offset, 2, ENC_BIG_ENDIAN);
2129 offset += 2;
2131 proto_tree_add_item(tree, hf_wimaxmacphy_prim_status, tvb, offset, 1, ENC_BIG_ENDIAN);
2132 offset += 1;
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);
2136 /* offset += 1; */
2138 return 6;
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);
2144 offset += 1;
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);
2148 offset += 1;
2150 proto_tree_add_item(tree, hf_wimaxmacphy_prim_requested_aas_calibration_zone_size, tvb, offset, 1, ENC_BIG_ENDIAN);
2151 offset += 1;
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);
2155 offset += 1;
2157 proto_tree_add_item(tree, hf_wimaxmacphy_prim_reserved5, tvb, offset, 2, ENC_BIG_ENDIAN);
2158 /* offset += 2; */
2160 return 6;
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);
2170 offset += 2;
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);
2187 offset += 1;
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);
2191 /* offset += 1; */
2193 return 2;
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);
2199 offset += 1;
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);
2203 /* offset += 1; */
2205 return 2;
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);
2216 offset += 2;
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);
2220 offset += 4;
2222 proto_tree_add_item(tree, hf_wimaxmacphy_prim_rssi_per_subcarrier_level, tvb, offset, 1, ENC_BIG_ENDIAN);
2223 offset += 1;
2225 proto_tree_add_item(tree, hf_wimaxmacphy_prim_cinr, tvb, offset, 1, ENC_BIG_ENDIAN);
2226 offset += 1;
2228 proto_tree_add_item(tree, hf_wimaxmacphy_prim_reserved1, tvb, offset, 1, ENC_BIG_ENDIAN);
2229 offset += 1;
2231 proto_tree_add_item(tree, hf_wimaxmacphy_prim_power_offset, tvb, offset, 1, ENC_BIG_ENDIAN);
2232 offset += 1;
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);
2236 offset += 1;
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);
2242 offset += 1;
2244 proto_tree_add_item(tree, hf_wimaxmacphy_prim_aas_handle, tvb, offset, 2, ENC_BIG_ENDIAN);
2245 offset += 2;
2247 proto_tree_add_item(tree, hf_wimaxmacphy_prim_time_deviation, tvb, offset, 4, ENC_BIG_ENDIAN);
2248 offset += 4;
2250 proto_tree_add_item(tree, hf_wimaxmacphy_prim_frequency_deviation, tvb, offset, 4, ENC_BIG_ENDIAN);
2251 offset += 4;
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);
2259 offset += length;
2260 break;
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);
2268 offset += 2;
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);
2274 offset += 1;
2276 proto_tree_add_item(subtree, hf_wimaxmacphy_prim_harq_ack_reserved2, tvb, offset, 1, ENC_BIG_ENDIAN);
2277 offset += 1;
2278 break;
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);
2286 offset += 2;
2288 proto_tree_add_item(subtree, hf_wimaxmacphy_prim_fast_cqich_id, tvb, offset, 2, ENC_BIG_ENDIAN);
2289 offset += 2;
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);
2301 offset += 1;
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);
2306 offset += 2;
2308 proto_tree_add_item(subtree, hf_wimaxmacphy_prim_fast_feedback_value, tvb, offset, 1, ENC_BIG_ENDIAN);
2309 offset += 1;
2310 break;
2312 default:
2313 break;
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);
2324 offset += 1;
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);
2328 offset += 1;
2330 proto_tree_add_item(tree, hf_wimaxmacphy_prim_number_of_affected_ss, tvb, offset, 1, ENC_BIG_ENDIAN);
2331 offset += 1;
2333 proto_tree_add_item(tree, hf_wimaxmacphy_prim_reserved1, tvb, offset, 1, ENC_BIG_ENDIAN);
2334 offset += 1;
2338 /* list of ISSIDs (at least one required) */
2339 proto_tree_add_item(tree, hf_wimaxmacphy_prim_issid, tvb, offset, 2, ENC_BIG_ENDIAN);
2340 offset += 2;
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);
2352 offset += 2;
2354 proto_tree_add_item(tree, hf_wimaxmacphy_prim_cdma_code, tvb, offset, 1, ENC_BIG_ENDIAN);
2355 offset += 1;
2357 proto_tree_add_item(tree, hf_wimaxmacphy_prim_cdma_symbol, tvb, offset, 1, ENC_BIG_ENDIAN);
2358 offset += 1;
2360 proto_tree_add_item(tree, hf_wimaxmacphy_prim_reserved1, tvb, offset, 1, ENC_BIG_ENDIAN);
2361 offset += 1;
2363 proto_tree_add_item(tree, hf_wimaxmacphy_prim_cdma_subchannel, tvb, offset, 1, ENC_BIG_ENDIAN);
2364 offset += 1;
2366 proto_tree_add_item(tree, hf_wimaxmacphy_prim_rssi_per_subcarrier_level, tvb, offset, 1, ENC_BIG_ENDIAN);
2367 offset += 1;
2369 proto_tree_add_item(tree, hf_wimaxmacphy_prim_cinr, tvb, offset, 1, ENC_BIG_ENDIAN);
2370 offset += 1;
2372 proto_tree_add_item(tree, hf_wimaxmacphy_prim_reserved3, tvb, offset, 1, ENC_BIG_ENDIAN);
2373 offset += 1;
2375 proto_tree_add_item(tree, hf_wimaxmacphy_prim_power_offset, tvb, offset, 1, ENC_BIG_ENDIAN);
2376 offset += 1;
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);
2380 offset += 2;
2382 proto_tree_add_item(tree, hf_wimaxmacphy_prim_aas_handle, tvb, offset, 2, ENC_BIG_ENDIAN);
2383 offset += 2;
2385 proto_tree_add_item(tree, hf_wimaxmacphy_prim_time_deviation, tvb, offset, 4, ENC_BIG_ENDIAN);
2386 offset += 4;
2388 proto_tree_add_item(tree, hf_wimaxmacphy_prim_frequency_deviation, tvb, offset, 4, ENC_BIG_ENDIAN);
2389 offset += 4;
2391 return offset - start_offset;
2394 static int
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;
2399 proto_item *item;
2401 guint offset = 0;
2402 guint8 message_type;
2404 /* Ensure minimum size */
2405 if (tvb_length(tvb) < WIMAXMACPHY_HEADER_SIZE)
2406 return 0;
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);
2418 offset += 1;
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);
2425 #if 0
2426 col_add_str(pinfo->cinfo, COL_INFO, val_to_str_ext_const(message_type, &wimaxmacphy_message_type_vals_ext, "Unknown"));
2427 #endif
2428 col_set_str(pinfo->cinfo, COL_INFO, val_to_str_const(message_type, wimaxmacphy_message_type_vals, "Unknown"));
2429 offset += 1;
2431 switch(message_type)
2433 case WIMAXMACPHY_PHY_TXSTART_REQUEST:
2434 offset += dissect_wimaxmacphy_phy_txstart_request(
2435 tvb, offset, pinfo, primitive_tree);
2436 break;
2437 case WIMAXMACPHY_PHY_TXSTART_CONFIRMATION:
2438 offset += dissect_wimaxmacphy_phy_txstart_confirmation(
2439 tvb, offset, pinfo, primitive_tree);
2440 break;
2441 case WIMAXMACPHY_PHY_TXSTART_INDICATION:
2442 offset += dissect_wimaxmacphy_phy_txstart_indication(
2443 tvb, offset, pinfo, primitive_tree);
2444 break;
2445 case WIMAXMACPHY_PHY_TXSDU_REQUEST:
2446 offset += dissect_wimaxmacphy_phy_txsdu_request(
2447 tvb, offset, pinfo, primitive_tree);
2448 break;
2449 case WIMAXMACPHY_PHY_TXSDU_CONFIRMATION:
2450 offset += dissect_wimaxmacphy_phy_txsdu_confirmation(
2451 tvb, offset, pinfo, primitive_tree);
2452 break;
2453 case WIMAXMACPHY_PHY_TXEND_INDICATION:
2454 offset += dissect_wimaxmacphy_phy_txend_indication(
2455 tvb, offset, pinfo, primitive_tree);
2456 break;
2457 case WIMAXMACPHY_PHY_RXSTART_REQUEST:
2458 offset += dissect_wimaxmacphy_phy_rxstart_request(
2459 tvb, offset, pinfo, primitive_tree);
2460 break;
2461 case WIMAXMACPHY_PHY_RXSTART_CONFIRMATION:
2462 offset += dissect_wimaxmacphy_phy_rxstart_confirmation(
2463 tvb, offset, pinfo, primitive_tree);
2464 break;
2465 case WIMAXMACPHY_PHY_RXSTART_INDICATION:
2466 offset += dissect_wimaxmacphy_phy_rxstart_indication(
2467 tvb, offset, pinfo, primitive_tree);
2468 break;
2469 case WIMAXMACPHY_PHY_RXSDU_INDICATION:
2470 offset += dissect_wimaxmacphy_phy_rxsdu_indication(
2471 tvb, offset, pinfo, primitive_tree);
2472 break;
2473 case WIMAXMACPHY_PHY_RXEND_INDICATION:
2474 offset += dissect_wimaxmacphy_phy_rxend_indication(
2475 tvb, offset, pinfo, primitive_tree);
2476 break;
2477 case WIMAXMACPHY_PHY_RXCDMA_INDICATION:
2478 offset += dissect_wimaxmacphy_phy_rxcdma_indication(
2479 tvb, offset, pinfo, primitive_tree);
2480 break;
2481 default:
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);
2485 break;
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);
2500 void
2501 proto_register_wimaxmacphy(void)
2503 module_t *wimaxmacphy_module;
2505 static hf_register_info hf[] = {
2507 &hf_wimaxmacphy_hdr_phy_entity_id,
2509 "PHY entity ID",
2510 "wimaxmacphy.hdr_phy_entity_id",
2511 FT_UINT8,
2512 BASE_DEC,
2513 NULL,
2514 0xfc,
2515 NULL,
2516 HFILL
2520 &hf_wimaxmacphy_hdr_message_segmentation,
2522 "Message Segmentation",
2523 "wimaxmacphy.hdr_message_segmentation",
2524 FT_UINT8,
2525 BASE_HEX,
2526 VALS(wimaxmacphy_message_segmentation_vals),
2527 0x03,
2528 NULL,
2529 HFILL
2533 &hf_wimaxmacphy_hdr_message_type,
2535 "Message Type",
2536 "wimaxmacphy.hdr_message_type",
2537 FT_UINT8,
2538 #if 0
2539 BASE_HEX | BASE_EXT_STRING,
2540 &wimaxmacphy_message_type_vals_ext,
2541 #endif
2542 BASE_HEX,
2543 VALS(wimaxmacphy_message_type_vals),
2544 0x0,
2545 NULL,
2546 HFILL
2550 &hf_wimaxmacphy_unknown,
2552 "Unknown(!)",
2553 "wimaxmacphy.unknown_primitive",
2554 FT_BYTES,
2555 BASE_NONE,
2556 NULL,
2557 0x0,
2558 NULL,
2559 HFILL
2563 &hf_wimaxmacphy_prim_length_of_txvector,
2565 "Length of TXVECTOR",
2566 "wimaxmacphy.prim_length_of_txvector",
2567 FT_UINT16,
2568 BASE_DEC,
2569 NULL,
2570 0x0,
2571 NULL,
2572 HFILL
2576 &hf_wimaxmacphy_prim_length_of_rxvector,
2578 "Length of RXVECTOR",
2579 "wimaxmacphy.prim_length_of_rxvector",
2580 FT_UINT16,
2581 BASE_DEC,
2582 NULL,
2583 0x0,
2584 NULL,
2585 HFILL
2589 &hf_wimaxmacphy_prim_status,
2591 "Status",
2592 "wimaxmacphy.prim_status",
2593 FT_UINT8,
2594 BASE_DEC,
2595 VALS(wimaxmacphy_prim_status_vals),
2596 0x0,
2597 NULL,
2598 HFILL
2602 &hf_wimaxmacphy_prim_txstart_indication_status,
2604 "Status",
2605 "wimaxmacphy.prim_status",
2606 FT_UINT8,
2607 BASE_DEC,
2608 VALS(wimaxmacphy_prim_txstart_indication_status_vals),
2609 0x0,
2610 NULL,
2611 HFILL
2615 &hf_wimaxmacphy_prim_reserved1,
2617 "Reserved",
2618 "wimaxmacphy.prim_reserved1",
2619 FT_UINT8,
2620 BASE_HEX,
2621 NULL,
2622 0x0,
2623 NULL,
2624 HFILL
2628 &hf_wimaxmacphy_prim_reserved2,
2630 "Reserved",
2631 "wimaxmacphy.prim_reserved2",
2632 FT_UINT8,
2633 BASE_HEX,
2634 NULL,
2635 0xF0,
2636 NULL,
2637 HFILL
2641 &hf_wimaxmacphy_prim_reserved3,
2643 "Reserved",
2644 "wimaxmacphy.prim_reserved3",
2645 FT_BYTES,
2646 BASE_NONE,
2647 NULL,
2648 0x0,
2649 NULL,
2650 HFILL
2654 &hf_wimaxmacphy_prim_reserved4,
2656 "Reserved",
2657 "wimaxmacphy.prim_reserved4",
2658 FT_UINT16,
2659 BASE_HEX,
2660 NULL,
2661 0x0FFF,
2662 NULL,
2663 HFILL
2667 &hf_wimaxmacphy_prim_reserved5,
2669 "Reserved",
2670 "wimaxmacphy.prim_reserved5",
2671 FT_UINT16,
2672 BASE_HEX,
2673 NULL,
2675 NULL,
2676 HFILL
2680 &hf_wimaxmacphy_prim_next_frame_number,
2682 "Next Frame Number (lsb)",
2683 "wimaxmacphy.prim_next_frame_number",
2684 FT_UINT8,
2685 BASE_DEC,
2686 NULL,
2687 0x0,
2688 NULL,
2689 HFILL
2693 &hf_wimaxmacphy_prim_extended_frame_number,
2695 "Extended frame number",
2696 "wimaxmacphy.prim_extended_frame_number",
2697 FT_UINT8,
2698 BASE_DEC,
2699 NULL,
2700 0xf0,
2701 NULL,
2702 HFILL
2706 &hf_wimaxmacphy_prim_current_frame_number_lsn,
2708 "Current Frame Number (lsb)",
2709 "wimaxmacphy.prim_current_frame_number",
2710 FT_UINT8,
2711 BASE_DEC,
2712 NULL,
2713 0x0f,
2714 NULL,
2715 HFILL
2719 &hf_wimaxmacphy_prim_initial_frame_number,
2721 "Initial Frame Number (from PHY)",
2722 "wimaxmacphy.prim_initial_frame_number",
2723 FT_UINT8,
2724 BASE_DEC,
2725 NULL,
2726 0x0,
2727 NULL,
2728 HFILL
2732 &hf_wimaxmacphy_prim_dl_zone_number,
2734 "DL zone number",
2735 "wimaxmacphy.prim_dl_zone_number",
2736 FT_UINT16,
2737 BASE_DEC,
2738 NULL,
2739 0xe000,
2740 NULL,
2741 HFILL
2745 &hf_wimaxmacphy_prim_sub_burst_burst_split_point,
2747 "Sub-burst/burst split point",
2748 "wimaxmacphy.prim_sub_burst_burst_split_point",
2749 FT_UINT16,
2750 BASE_DEC,
2751 NULL,
2752 0x1c00,
2753 NULL,
2754 HFILL
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",
2762 FT_UINT16,
2763 BASE_DEC,
2764 NULL,
2765 0x03ff,
2766 NULL,
2767 HFILL
2771 &hf_wimaxmacphy_prim_phy_sdu,
2773 "PHY SDU",
2774 "wimaxmacphy.prim_phy_sdu",
2775 FT_BYTES,
2776 BASE_NONE,
2777 NULL,
2778 0x0,
2779 NULL,
2780 HFILL
2784 &hf_wimaxmacphy_prim_phy_request,
2786 "PHY request (LW 1)",
2787 "wimaxmacphy.prim_phy_request",
2788 FT_UINT8,
2789 BASE_HEX,
2790 NULL,
2791 0xf0,
2792 NULL,
2793 HFILL
2797 &hf_wimaxmacphy_prim_requested_aas_calibration_zone_size,
2799 "Requested AAS Calibration Zone size",
2800 "wimaxmacphy.prim_requested_aas_calibration_zone_size",
2801 FT_UINT8,
2802 BASE_DEC,
2803 NULL,
2804 0x0,
2805 NULL,
2806 HFILL
2810 &hf_wimaxmacphy_prim_requested_aas_calibration_zone_alloc,
2812 "Requested AAS Calibration Zone allocation deadline",
2813 "wimaxmacphy.prim_requested_aas_calibration_zone_alloc",
2814 FT_UINT8,
2815 BASE_DEC,
2816 NULL,
2817 0xf0,
2818 NULL,
2819 HFILL
2823 &hf_wimaxmacphy_prim_number_of_consecutive_frames_with_aas,
2825 "Number of consecutive frames with AAS Calibration Zone"
2826 " allocation",
2827 "wimaxmacphy.prim_number_of_consecutive_frames_with_aas",
2828 FT_UINT8,
2829 BASE_DEC,
2830 NULL,
2831 0x0f,
2832 NULL,
2833 HFILL
2837 &hf_wimaxmacphy_prim_frame_number,
2839 "Frame Number (lsb)",
2840 "wimaxmacphy.prim_frame_number",
2841 FT_UINT8,
2842 BASE_DEC,
2843 NULL,
2844 0x0f,
2845 NULL,
2846 HFILL
2850 &hf_wimaxmacphy_prim_issid,
2852 "ISSID",
2853 "wimaxmacphy.prim_issid",
2854 FT_INT16,
2855 BASE_DEC,
2856 NULL,
2857 0x0,
2858 NULL,
2859 HFILL
2863 &hf_wimaxmacphy_prim_integrity,
2865 "Integrity",
2866 "wimaxmacphy.prim_integrity",
2867 FT_UINT32,
2868 BASE_DEC,
2869 VALS(wimaxmacphy_prim_integrity_vals),
2870 0x80000000,
2871 NULL,
2872 HFILL
2876 &hf_wimaxmacphy_prim_number_of_bytes_received,
2878 "Number of bytes received",
2879 "wimaxmacphy.prim_number_of_bytes_received",
2880 FT_UINT32,
2881 BASE_DEC,
2882 NULL,
2883 0x7fffffff,
2884 NULL,
2885 HFILL
2889 &hf_wimaxmacphy_prim_rssi_per_subcarrier_level,
2891 "RSSI per subcarrier level",
2892 "wimaxmacphy.prim_rssi_per_subcarrier_level",
2893 FT_UINT8,
2894 BASE_DEC,
2895 NULL,
2896 0x0,
2897 NULL,
2898 HFILL
2902 &hf_wimaxmacphy_prim_cinr,
2904 "CINR",
2905 "wimaxmacphy.prim_cinr",
2906 FT_UINT8,
2907 BASE_DEC,
2908 NULL,
2909 0x0,
2910 NULL,
2911 HFILL
2915 &hf_wimaxmacphy_prim_power_offset,
2917 "Power Offset",
2918 "wimaxmacphy.prim_power_offset",
2919 FT_UINT8,
2920 BASE_DEC,
2921 NULL,
2922 0x0,
2923 NULL,
2924 HFILL
2928 &hf_wimaxmacphy_prim_current_frame_number_msn,
2930 "Current Frame Number (lsb)",
2931 "wimaxmacphy.prim_current_frame_number",
2932 FT_UINT8,
2933 BASE_DEC,
2934 NULL,
2935 0xf0,
2936 NULL,
2937 HFILL
2941 &hf_wimaxmacphy_prim_acid_for_harq_data_bursts,
2943 "ACID for HARQ data bursts",
2944 "wimaxmacphy.prim_acid_for_harq_data_bursts",
2945 FT_UINT8,
2946 BASE_DEC,
2947 NULL,
2948 0x0f,
2949 NULL,
2950 HFILL
2954 &hf_wimaxmacphy_prim_indication_type,
2956 "Indication Type",
2957 "wimaxmacphy.prim_indication_type",
2958 FT_UINT8,
2959 BASE_DEC,
2960 VALS(wimaxmacphy_prim_indication_type_vals),
2961 0xf0,
2962 NULL,
2963 HFILL
2967 &hf_wimaxmacphy_prim_zone_permutation_type,
2969 "Zone Permutation Type",
2970 "wimaxmacphy.prim_zone_permutation_type",
2971 FT_UINT8,
2972 BASE_HEX,
2973 VALS(wimaxmacphy_prim_zone_permutation_type_vals),
2974 0x0e,
2975 NULL,
2976 HFILL
2980 &hf_wimaxmacphy_prim_update_aas_handle_in_mac,
2982 "Update AAS handle in MAC",
2983 "wimaxmacphy.prim_update_aas_handle_in_mac",
2984 FT_UINT8,
2985 BASE_HEX,
2986 NULL,
2987 0x1,
2988 NULL,
2989 HFILL
2993 &hf_wimaxmacphy_prim_aas_handle,
2995 "AAS Handle",
2996 "wimaxmacphy.prim_aas_handle",
2997 FT_UINT16,
2998 BASE_HEX,
2999 NULL,
3000 0x0,
3001 NULL,
3002 HFILL
3006 &hf_wimaxmacphy_prim_time_deviation,
3008 "Time deviation in units of 1/Fs",
3009 "wimaxmacphy.prim_time_deviation",
3010 FT_INT32,
3011 BASE_DEC,
3012 NULL,
3013 0x0,
3014 NULL,
3015 HFILL
3019 &hf_wimaxmacphy_prim_frequency_deviation,
3021 "Frequency deviation in Hz",
3022 "wimaxmacphy.prim_frequency_deviation",
3023 FT_INT32,
3024 BASE_DEC,
3025 NULL,
3026 0x0,
3027 NULL,
3028 HFILL
3032 &hf_wimaxmacphy_prim_harq_ack_issid,
3034 "ISSID",
3035 "wimaxmacphy.prim_harq_ack_issid",
3036 FT_INT16,
3037 BASE_DEC,
3038 NULL,
3039 0x0,
3040 NULL,
3041 HFILL
3045 &hf_wimaxmacphy_prim_harq_ack_acid,
3047 "ACID",
3048 "wimaxmacphy.prim_harq_ack_acid",
3049 FT_UINT8,
3050 BASE_DEC,
3051 NULL,
3052 0xf0,
3053 NULL,
3054 HFILL
3058 &hf_wimaxmacphy_prim_harq_ack_reserved1,
3060 "Reserved",
3061 "wimaxmacphy.prim_harq_ack_reserved1",
3062 FT_UINT8,
3063 BASE_HEX,
3064 NULL,
3065 0x0c,
3066 NULL,
3067 HFILL
3071 &hf_wimaxmacphy_prim_harq_ack_ack_valid,
3073 "ACK Valid",
3074 "wimaxmacphy.prim_harq_ack_ack_valid",
3075 FT_UINT8,
3076 BASE_DEC,
3077 VALS(wimaxmacphy_prim_harq_ack_ack_valid_vals),
3078 0x2,
3079 NULL,
3080 HFILL
3084 &hf_wimaxmacphy_prim_harq_ack_unnamed,
3086 "Unnamed",
3087 "wimaxmacphy.prim_harq_ack_unnamed",
3088 FT_UINT8,
3089 BASE_DEC,
3090 VALS(wimaxmacphy_prim_harq_ack_unnamed_vals),
3091 0x1,
3092 NULL,
3093 HFILL
3097 &hf_wimaxmacphy_prim_harq_ack_reserved2,
3099 "Reserved",
3100 "wimaxmacphy.prim_harq_ack_reserved2",
3101 FT_BYTES,
3102 BASE_NONE,
3103 NULL,
3104 0x0,
3105 NULL,
3106 HFILL
3110 &hf_wimaxmacphy_prim_fast_issid,
3112 "ISSID",
3113 "wimaxmacphy.prim_fast_issid",
3114 FT_INT16,
3115 BASE_DEC,
3116 NULL,
3117 0x0,
3118 NULL,
3119 HFILL
3123 &hf_wimaxmacphy_prim_fast_cqich_id,
3125 "CQICH_ID",
3126 "wimaxmacphy.prim_fast_cqich_id",
3127 FT_UINT16,
3128 BASE_DEC,
3129 NULL,
3130 0x0,
3131 NULL,
3132 HFILL
3136 &hf_wimaxmacphy_prim_fast_feedback_type_coding,
3138 "Feedback type coding",
3139 "wimaxmacphy.prim_fast_type_coding",
3140 FT_UINT8,
3141 BASE_HEX,
3142 NULL,
3143 0x0,
3144 NULL,
3145 HFILL
3149 &hf_wimaxmacphy_prim_fast_feedback_type_coding_bit0,
3151 "3 bit-MIMO Fast-feedback",
3152 "wimaxmacphy.prim_fast_type_coding.bit0",
3153 FT_BOOLEAN,
3155 TFS(&set_notset),
3156 0x01,
3157 NULL,
3158 HFILL
3162 &hf_wimaxmacphy_prim_fast_feedback_type_coding_bit1,
3164 "Enhanced FAST_FEEDBACK",
3165 "wimaxmacphy.prim_fast_type_coding.bit1",
3166 FT_BOOLEAN,
3168 TFS(&set_notset),
3169 0x02,
3170 NULL,
3171 HFILL
3175 &hf_wimaxmacphy_prim_fast_feedback_type_coding_bit2,
3177 "Reserved",
3178 "wimaxmacphy.prim_fast_type_coding.bit2",
3179 FT_BOOLEAN,
3181 TFS(&set_notset),
3182 0x04,
3183 NULL,
3184 HFILL
3188 &hf_wimaxmacphy_prim_fast_feedback_type_coding_bit3,
3190 "Reserved",
3191 "wimaxmacphy.prim_fast_type_coding.bit3",
3192 FT_BOOLEAN,
3194 TFS(&set_notset),
3195 0x08,
3196 NULL,
3197 HFILL
3201 &hf_wimaxmacphy_prim_fast_feedback_type_coding_bit4,
3203 "UEP fast-feedback",
3204 "wimaxmacphy.prim_fast_type_coding.bit4",
3205 FT_BOOLEAN,
3207 TFS(&set_notset),
3208 0x10,
3209 NULL,
3210 HFILL
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",
3218 FT_BOOLEAN,
3220 TFS(&set_notset),
3221 0x20,
3222 NULL,
3223 HFILL
3227 &hf_wimaxmacphy_prim_fast_feedback_type_coding_bit6,
3229 "Primary/Secondary FAST_FEEDBACK",
3230 "wimaxmacphy.prim_fast_type_coding.bit6",
3231 FT_BOOLEAN,
3233 TFS(&set_notset),
3234 0x40,
3235 NULL,
3236 HFILL
3240 &hf_wimaxmacphy_prim_fast_feedback_type_coding_bit7,
3242 "DIUC-CQI Fast-feedback",
3243 "wimaxmacphy.prim_fast_type_coding.bit7",
3244 FT_BOOLEAN,
3246 TFS(&set_notset),
3247 0x80,
3248 NULL,
3249 HFILL
3253 &hf_wimaxmacphy_prim_fast_feedback_valid,
3255 "Feedback Valid",
3256 "wimaxmacphy.prim_fast_feedback_valid",
3257 FT_UINT16,
3258 BASE_DEC,
3259 VALS(wimaxmacphy_prim_fast_feedback_valid_vals),
3260 0x8000,
3261 NULL,
3262 HFILL
3266 &hf_wimaxmacphy_prim_fast_feedback_sub_type,
3268 "Feedback sub-type",
3269 "wimaxmacphy.prim_fast_feedback_sub_type",
3270 FT_UINT8,
3271 BASE_DEC,
3272 VALS(
3273 wimaxmacphy_prim_fast_feedback_sub_type_vals),
3274 0x7000,
3275 NULL,
3276 HFILL
3280 &hf_wimaxmacphy_prim_fast_reserved,
3282 "Reserved",
3283 "wimaxmacphy.prim_fast_reserved",
3284 FT_BYTES,
3285 BASE_NONE,
3286 NULL,
3287 0x0,
3288 NULL,
3289 HFILL
3293 &hf_wimaxmacphy_prim_fast_feedback_value,
3295 "Feedback value",
3296 "wimaxmacphy.prim_fast_feedback_value",
3297 FT_UINT8,
3298 BASE_DEC,
3299 NULL,
3300 0x0,
3301 NULL,
3302 HFILL
3306 &hf_wimaxmacphy_prim_phy_aas_report_present,
3308 "PHY AAS report present",
3309 "wimaxmacphy.prim_phy_aas_report_present",
3310 FT_UINT8,
3311 BASE_HEX,
3312 VALS(wimaxmacphy_prim_phy_aas_report_present_vals),
3313 0xf0,
3314 NULL,
3315 HFILL
3319 &hf_wimaxmacphy_prim_number_of_affected_ss,
3321 "Number of affected SS",
3322 "wimaxmacphy.prim_number_of_affected_ss",
3323 FT_UINT8,
3324 BASE_DEC,
3325 NULL,
3326 0x0,
3327 NULL,
3328 HFILL
3332 &hf_wimaxmacphy_prim_zonexid,
3334 "ZoneXID",
3335 "wimaxmacphy.prim_zonexid",
3336 FT_UINT16,
3337 BASE_DEC,
3338 NULL,
3339 0x0,
3340 NULL,
3341 HFILL
3345 &hf_wimaxmacphy_prim_cdma_code,
3347 "CDMA code",
3348 "wimaxmacphy.prim_cdma_code",
3349 FT_UINT8,
3350 BASE_DEC,
3351 NULL,
3352 0x0,
3353 NULL,
3354 HFILL
3358 &hf_wimaxmacphy_prim_cdma_symbol,
3360 "CDMA symbol",
3361 "wimaxmacphy.prim_cdma_symbol",
3362 FT_UINT8,
3363 BASE_DEC,
3364 NULL,
3365 0x0,
3366 NULL,
3367 HFILL
3371 &hf_wimaxmacphy_prim_cdma_subchannel,
3373 "CDMA subchannel",
3374 "wimaxmacphy.prim_cdma_subchannel",
3375 FT_UINT8,
3376 BASE_DEC,
3377 NULL,
3378 0x0,
3379 NULL,
3380 HFILL
3384 &hf_wimaxmacphy_subframe_subframe_type,
3386 "Subframe Type",
3387 "wimaxmacphy.subframe_subframe_type",
3388 FT_UINT8,
3389 BASE_HEX,
3390 VALS(wimaxmacphy_subframe_type_vals),
3391 0x0,
3392 NULL,
3393 HFILL
3397 &hf_wimaxmacphy_subframe_frame_number,
3399 "Frame Number",
3400 "wimaxmacphy.subframe_frame_number",
3401 FT_UINT8,
3402 BASE_DEC,
3403 NULL,
3404 0x0,
3405 NULL,
3406 HFILL
3410 &hf_wimaxmacphy_subframe_downlink_reserved1,
3412 "Reserved",
3413 "wimaxmacphy.subframe_downlink_reserved1",
3414 FT_UINT8,
3415 BASE_DEC,
3416 NULL,
3417 0x0,
3418 NULL,
3419 HFILL
3423 &hf_wimaxmacphy_subframe_phy_sap_version_number,
3425 "PHY SAP version number",
3426 "wimaxmacphy.subframe_phy_sap_version_number",
3427 FT_UINT8,
3428 BASE_DEC,
3429 NULL,
3430 0x0,
3431 NULL,
3432 HFILL
3436 &hf_wimaxmacphy_subframe_downlink_reserved2,
3438 "Downlink reserved",
3439 "wimaxmacphy.subframe_downlink_reserved2",
3440 FT_UINT32,
3441 BASE_HEX,
3442 NULL,
3443 0x0,
3444 NULL,
3445 HFILL
3449 &hf_wimaxmacphy_subframe_allocation_start_time,
3451 "Allocation start time",
3452 "wimaxmacphy.subframe_allocation_start_time",
3453 FT_UINT32,
3454 BASE_DEC,
3455 NULL,
3456 0x0,
3457 NULL,
3458 HFILL
3462 &hf_wimaxmacphy_number_of_zone_descriptors,
3464 "Number of Zone Descriptors",
3465 "wimaxmacphy.number_of_zone_descriptors",
3466 FT_UINT8,
3467 BASE_DEC,
3468 NULL,
3469 0x0,
3470 NULL,
3471 HFILL
3475 &hf_wimaxmacphy_zone_padding,
3477 "Padding",
3478 "wimaxmacphy.zone_padding",
3479 FT_BYTES,
3480 BASE_NONE,
3481 NULL,
3482 0x0,
3483 NULL,
3484 HFILL
3488 &hf_wimaxmacphy_dl_zone_type,
3490 "Zone Type",
3491 "wimaxmacphy.zone_type",
3492 FT_UINT8,
3493 BASE_HEX,
3494 VALS(wimaxmacphy_dl_zone_type_vals),
3495 0x0,
3496 NULL,
3497 HFILL
3501 &hf_wimaxmacphy_ul_zone_type,
3503 "Zone Type",
3504 "wimaxmacphy.zone_type",
3505 FT_UINT8,
3506 BASE_HEX,
3507 VALS(wimaxmacphy_ul_zone_type_vals),
3508 0x0,
3509 NULL,
3510 HFILL
3514 &hf_wimaxmacphy_zone_number,
3516 "Zone Number",
3517 "wimaxmacphy.zone_number",
3518 FT_UINT8,
3519 BASE_DEC,
3520 NULL,
3521 0x0,
3522 NULL,
3523 HFILL
3527 &hf_wimaxmacphy_zone_start_symbol_offset,
3529 "Start Symbol Offset",
3530 "wimaxmacphy.zone_start_symbol_offset",
3531 FT_UINT8,
3532 BASE_DEC,
3533 NULL,
3534 0x0,
3535 NULL,
3536 HFILL
3540 &hf_wimaxmacphy_zone_end_symbol_offset,
3542 "End Symbol Offset",
3543 "wimaxmacphy.zone_end_symbol_offset",
3544 FT_UINT8,
3545 BASE_DEC,
3546 NULL,
3547 0x0,
3548 NULL,
3549 HFILL
3553 &hf_wimaxmacphy_dl_zone_permutation_type,
3555 "Permutation Type",
3556 "wimaxmacphy.zone_permutation_type",
3557 FT_UINT8,
3558 BASE_HEX,
3559 VALS(wimaxmacphy_dl_zone_permutation_type_vals),
3560 0x0,
3561 NULL,
3562 HFILL
3566 &hf_wimaxmacphy_ul_zone_permutation_type,
3568 "Permutation Type",
3569 "wimaxmacphy.zone_permutation_type",
3570 FT_UINT8,
3571 BASE_HEX,
3572 VALS(wimaxmacphy_ul_zone_permutation_type_vals),
3573 0x0,
3574 NULL,
3575 HFILL
3579 &hf_wimaxmacphy_dl_zone_use_all_subchannels_indicator,
3581 "Use all subchannels indicator",
3582 "wimaxmacphy.zone_use_all_subchannels_indicator",
3583 FT_UINT8,
3584 BASE_DEC,
3585 VALS(wimaxmacphy_zone_use_all_subchannels_indicator_vals),
3586 0x0,
3587 NULL,
3588 HFILL
3592 &hf_wimaxmacphy_ul_zone_use_all_subchannels_indicator,
3594 "Use all subchannels indicator",
3595 "wimaxmacphy.zone_use_all_subchannels_indicator",
3596 FT_UINT8,
3597 BASE_DEC,
3598 VALS(wimaxmacphy_zone_use_all_subchannels_indicator_vals),
3599 0xf0,
3600 NULL,
3601 HFILL
3605 &hf_wimaxmacphy_ul_zone_disable_pusc_subchannel_rotation,
3607 "Disable PUSC subchannel rotation",
3608 "wimaxmacphy.zone_disable_pusc_subchannel_rotation",
3609 FT_UINT8,
3610 BASE_DEC,
3611 VALS(
3612 wimaxmacphy_ul_zone_disable_pusc_subchannel_rotation_vals),
3613 0x0f,
3614 NULL,
3615 HFILL
3619 &hf_wimaxmacphy_zone_dl_perm_base,
3621 "DL_PermBase",
3622 "wimaxmacphy.zone_dl_perm_base",
3623 FT_UINT8,
3624 BASE_DEC,
3625 NULL,
3626 0x0,
3627 NULL,
3628 HFILL
3632 &hf_wimaxmacphy_zone_ul_perm_base,
3634 "UL_PermBase",
3635 "wimaxmacphy.zone_ul_perm_base",
3636 FT_UINT8,
3637 BASE_DEC,
3638 NULL,
3639 0x0,
3640 NULL,
3641 HFILL
3645 &hf_wimaxmacphy_zone_prbs_id,
3647 "PRBS_ID",
3648 "wimaxmacphy.zone_prbs_id",
3649 FT_UINT8,
3650 BASE_DEC,
3651 NULL,
3652 0x0,
3653 NULL,
3654 HFILL
3658 &hf_wimaxmacphy_zone_dedicated_pilots,
3660 "Dedicated pilots",
3661 "wimaxmacphy.zone_dedicated_pilots",
3662 FT_UINT8,
3663 BASE_DEC,
3664 VALS(wimaxmacphy_zone_dedicated_pilots_vals),
3665 0x0,
3666 NULL,
3667 HFILL
3671 &hf_wimaxmacphy_zone_agc_range_extension,
3673 "Rx AGC range extension",
3674 "wimaxmacphy.zone_agc_range_extension",
3675 FT_UINT8,
3676 BASE_DEC,
3677 VALS(wimaxmacphy_zone_agc_range_extension_vals),
3678 0x0,
3679 NULL,
3680 HFILL
3684 &hf_wimaxmacphy_zone_reserved,
3686 "Reserved",
3687 "wimaxmacphy.zone_reserved",
3688 FT_BYTES,
3689 BASE_NONE,
3690 NULL,
3691 0x0,
3692 NULL,
3693 HFILL
3697 &hf_wimaxmacphy_zone_stc_type,
3699 "STC type",
3700 "wimaxmacphy.zone_stc_type",
3701 FT_UINT8,
3702 BASE_HEX,
3703 VALS(wimaxmacphy_zone_stc_type_vals),
3704 0x0,
3705 NULL,
3706 HFILL
3710 &hf_wimaxmacphy_zone_matrix_indicator,
3712 "Matrix Indicator",
3713 "wimaxmacphy.zone_matrix_indicator",
3714 FT_UINT8,
3715 BASE_HEX,
3716 VALS(wimaxmacphy_matrix_indicator_vals),
3717 0x0,
3718 NULL,
3719 HFILL
3723 &hf_wimaxmacphy_zone_midamble_presence,
3725 "Midamble presence",
3726 "wimaxmacphy.zone_midamble_presence",
3727 FT_UINT8,
3728 BASE_DEC,
3729 VALS(wimaxmacphy_zone_midamble_presence_vals),
3730 0x0,
3731 NULL,
3732 HFILL
3736 &hf_wimaxmacphy_zone_midamble_boosting,
3738 "Midamble boosting",
3739 "wimaxmacphy.zone_midamble_boosting",
3740 FT_UINT8,
3741 BASE_DEC,
3742 VALS(wimaxmacphy_zone_midamble_boosting_vals),
3743 0x0,
3744 NULL,
3745 HFILL
3749 &hf_wimaxmacphy_zone_preamble_configuration,
3751 "Preamble configuration",
3752 "wimaxmacphy.zone_preamble_configuration",
3753 FT_UINT8,
3754 BASE_HEX,
3755 VALS(wimaxmacphy_zone_preamble_configuration_vals),
3756 0x0,
3757 NULL,
3758 HFILL
3762 &hf_wimaxmacphy_zone_sdma_supported_indication,
3764 "SDMA supported indication",
3765 "wimaxmacphy.zone_sdma_supported_indication",
3766 FT_UINT8,
3767 BASE_DEC,
3768 VALS(wimaxmacphy_zone_sdma_supported_indication_vals),
3769 0x0,
3770 NULL,
3771 HFILL
3775 &hf_wimaxmacphy_zone_preamble_type,
3777 "Preamble type",
3778 "wimaxmacphy.zone_preamble_type",
3779 FT_UINT8,
3780 BASE_DEC,
3781 VALS(wimaxmacphy_zone_preamble_type_vals),
3782 0x0,
3783 NULL,
3784 HFILL
3788 &hf_wimaxmacphy_dl_zone_aas_reserved,
3790 "Reserved",
3791 "wimaxmacphy.zone_aas_reserved",
3792 FT_BYTES,
3793 BASE_NONE,
3794 NULL,
3795 0x0,
3796 NULL,
3797 HFILL
3801 &hf_wimaxmacphy_ul_zone_aas_reserved,
3803 "Reserved",
3804 "wimaxmacphy.zone_aas_reserved",
3805 FT_BYTES,
3806 BASE_NONE,
3807 NULL,
3808 0x0,
3809 NULL,
3810 HFILL
3814 &hf_wimaxmacphy_number_of_burst_descriptors,
3816 "Number of Burst Descriptors",
3817 "wimaxmacphy.number_of_burst_descriptors",
3818 FT_UINT8,
3819 BASE_DEC,
3820 NULL,
3821 0x0,
3822 NULL,
3823 HFILL
3827 &hf_wimaxmacphy_burst_padding,
3829 "Padding",
3830 "wimaxmacphy.burst_padding",
3831 FT_BYTES,
3832 BASE_NONE,
3833 NULL,
3834 0x0,
3835 NULL,
3836 HFILL
3840 &hf_wimaxmacphy_dl_burst_type,
3842 "Burst Type",
3843 "wimaxmacphy.burst_type",
3844 FT_UINT8,
3845 BASE_HEX,
3846 VALS(wimaxmacphy_dl_burst_type_vals),
3847 0x0,
3848 NULL,
3849 HFILL
3853 &hf_wimaxmacphy_ul_burst_type,
3855 "Burst Type",
3856 "wimaxmacphy.dl_burst_type",
3857 FT_UINT8,
3858 BASE_HEX,
3859 VALS(wimaxmacphy_ul_burst_type_vals),
3860 0x0,
3861 NULL,
3862 HFILL
3866 &hf_wimaxmacphy_burst_type_extension,
3868 "Burst Type extension",
3869 "wimaxmacphy.burst_type_extension",
3870 FT_UINT8,
3871 BASE_HEX,
3872 VALS(wimaxmacphy_burst_type_extension_vals),
3873 0x0,
3874 NULL,
3875 HFILL
3879 &hf_wimaxmacphy_burst_number,
3881 "Burst Number",
3882 "wimaxmacphy.burst_number",
3883 FT_UINT8,
3884 BASE_DEC,
3885 NULL,
3886 0x0,
3887 NULL,
3888 HFILL
3892 &hf_wimaxmacphy_burst_modulation_fec_code_type,
3894 "Modulation/FEC Code Type",
3895 "wimaxmacphy.burst_modulation_fec_code_type",
3896 FT_UINT8,
3897 #if 0
3898 BASE_DEC | BASE_EXT_STRING,
3899 &wimaxmacphy_modulation_fec_code_type_vals_ext,
3900 #endif
3901 BASE_DEC,
3902 VALS(wimaxmacphy_modulation_fec_code_type_vals),
3903 0x0,
3904 NULL,
3905 HFILL
3909 &hf_wimaxmacphy_burst_data_length,
3911 "Burst Data Length",
3912 "wimaxmacphy.burst_data_length",
3913 FT_UINT32,
3914 BASE_DEC,
3915 NULL,
3916 0x0,
3917 NULL,
3918 HFILL
3922 &hf_wimaxmacphy_burst_ofdma_symbol_offset,
3924 "OFDMA Symbol offset",
3925 "wimaxmacphy.burst_ofdma_symbol_offset",
3926 FT_UINT8,
3927 BASE_DEC,
3928 NULL,
3929 0x0,
3930 NULL,
3931 HFILL
3935 &hf_wimaxmacphy_burst_subchannel_offset,
3937 "Subchannel offset",
3938 "wimaxmacphy.burst_subchannel_offset",
3939 FT_UINT8,
3940 BASE_DEC,
3941 NULL,
3942 0x0,
3943 NULL,
3944 HFILL
3948 &hf_wimaxmacphy_burst_boosting,
3950 "Boosting",
3951 "wimaxmacphy.burst_boosting",
3952 FT_UINT8,
3953 BASE_HEX,
3954 VALS(wimaxmacphy_burst_boosting_vals),
3955 0x0,
3956 NULL,
3957 HFILL
3961 &hf_wimaxmacphy_burst_reserved,
3963 "Reserved",
3964 "wimaxmacphy.burst_reserved",
3965 FT_BYTES,
3966 BASE_NONE,
3967 NULL,
3968 0x0,
3969 NULL,
3970 HFILL
3974 &hf_wimaxmacphy_burst_repetition_coding_indication,
3976 "Repetition coding indication",
3977 "wimaxmacphy.burst_repetition_coding_indication",
3978 FT_UINT8,
3979 BASE_HEX,
3980 VALS(wimaxmacphy_burst_repetition_coding_indication_vals),
3981 0x0,
3982 NULL,
3983 HFILL
3987 &hf_wimaxmacphy_burst_issid,
3989 "ISSID",
3990 "wimaxmacphy.burst_issid",
3991 FT_INT16,
3992 BASE_DEC,
3993 NULL,
3994 0x0,
3995 NULL,
3996 HFILL
4000 &hf_wimaxmacphy_burst_aas_handle,
4002 "AAS Handle",
4003 "wimaxmacphy.burst_aas_handle",
4004 FT_UINT16,
4005 BASE_HEX,
4006 NULL,
4007 0x0,
4008 NULL,
4009 HFILL
4013 &hf_wimaxmacphy_dl_burst_map_number_of_slots,
4015 "Number of slots (duration) after repetition code is"
4016 " applied",
4017 "wimaxmacphy.burst_map_number_of_slots",
4018 FT_UINT16,
4019 BASE_DEC,
4020 NULL,
4021 0x0,
4022 NULL,
4023 HFILL
4027 &hf_wimaxmacphy_dl_burst_map_reserved,
4029 "Reserved",
4030 "wimaxmacphy.burst_map_reserved",
4031 FT_BYTES,
4032 BASE_NONE,
4033 NULL,
4034 0x0,
4035 NULL,
4036 HFILL
4040 &hf_wimaxmacphy_dl_burst_normal_number_of_symbols,
4042 "Number of Symbols",
4043 "wimaxmacphy.burst_normal_number_of_symbols",
4044 FT_UINT8,
4045 BASE_DEC,
4046 NULL,
4047 0x0,
4048 NULL,
4049 HFILL
4053 &hf_wimaxmacphy_dl_burst_normal_number_of_subchannels,
4055 "Number of Subchannels",
4056 "wimaxmacphy.burst_normal_number_of_subchannels",
4057 FT_UINT8,
4058 BASE_DEC,
4059 NULL,
4060 0x0,
4061 NULL,
4062 HFILL
4066 &hf_wimaxmacphy_dl_burst_normal_aas_handle,
4068 "AAS Handle",
4069 "wimaxmacphy.burst_normal_aas_handle",
4070 FT_UINT16,
4071 BASE_HEX,
4072 NULL,
4073 0x0,
4074 NULL,
4075 HFILL
4079 &hf_wimaxmacphy_ul_burst_normal_number_of_slots,
4081 "Number of slots",
4082 "wimaxmacphy.burst_normal_number_of_slots",
4083 FT_UINT16,
4084 BASE_DEC,
4085 NULL,
4086 0x0,
4087 NULL,
4088 HFILL
4092 &hf_wimaxmacphy_ul_burst_normal_reserved,
4094 "Reserved",
4095 "wimaxmacphy.burst_normal_reserved",
4096 FT_BYTES,
4097 BASE_NONE,
4098 NULL,
4099 0x0,
4100 NULL,
4101 HFILL
4105 &hf_wimaxmacphy_burst_papr_number_of_symbols,
4107 "Number of Symbols",
4108 "wimaxmacphy.burst_papr_number_of_symbols",
4109 FT_UINT8,
4110 BASE_DEC,
4111 NULL,
4112 0x0,
4113 NULL,
4114 HFILL
4118 &hf_wimaxmacphy_burst_papr_number_of_subchannels,
4120 "Number of Subchannels",
4121 "wimaxmacphy.burst_papr_number_of_subchannels",
4122 FT_UINT8,
4123 BASE_DEC,
4124 NULL,
4125 0x0,
4126 NULL,
4127 HFILL
4131 &hf_wimaxmacphy_burst_papr_reserved,
4133 "Reserved",
4134 "wimaxmacphy.burst_papr_reserved",
4135 FT_BYTES,
4136 BASE_NONE,
4137 NULL,
4138 0x0,
4139 NULL,
4140 HFILL
4144 &hf_wimaxmacphy_ul_burst_papr_unnamed,
4146 "Unnamed",
4147 "wimaxmacphy.burst_papr_unnamed",
4148 FT_UINT8,
4149 BASE_DEC,
4150 VALS(wimaxmacphy_ul_burst_papr_unnamed_vals),
4151 0x0,
4152 NULL,
4153 HFILL
4157 &hf_wimaxmacphy_ul_burst_harq_ack_number_of_symbols,
4159 "Number of Symbols",
4160 "wimaxmacphy.burst_harq_ack_number_of_symbols",
4161 FT_UINT8,
4162 BASE_DEC,
4163 NULL,
4164 0x0,
4165 NULL,
4166 HFILL
4170 &hf_wimaxmacphy_ul_burst_harq_ack_number_of_subchannels,
4172 "Number of Subchannels",
4173 "wimaxmacphy.burst_harq_ack_number_of_subchannels",
4174 FT_UINT8,
4175 BASE_DEC,
4176 NULL,
4177 0x0,
4178 NULL,
4179 HFILL
4183 &hf_wimaxmacphy_ul_burst_harq_ack_reserved,
4185 "Reserved",
4186 "wimaxmacphy.burst_harq_ack_reserved",
4187 FT_BYTES,
4188 BASE_NONE,
4189 NULL,
4190 0x0,
4191 NULL,
4192 HFILL
4196 &hf_wimaxmacphy_ul_burst_fast_number_of_symbols,
4198 "Number of Symbols",
4199 "wimaxmacphy.burst_fast_number_of_symbols",
4200 FT_UINT8,
4201 BASE_DEC,
4202 NULL,
4203 0x0,
4204 NULL,
4205 HFILL
4209 &hf_wimaxmacphy_ul_burst_fast_number_of_subchannels,
4211 "Number of Subchannels",
4212 "wimaxmacphy.burst_fast_number_of_subchannels",
4213 FT_UINT8,
4214 BASE_DEC,
4215 NULL,
4216 0x0,
4217 NULL,
4218 HFILL
4222 &hf_wimaxmacphy_ul_burst_fast_reserved,
4224 "Reserved",
4225 "wimaxmacphy.burst_fast_reserved",
4226 FT_BYTES,
4227 BASE_NONE,
4228 NULL,
4229 0x0,
4230 NULL,
4231 HFILL
4235 &hf_wimaxmacphy_ul_burst_initial_number_of_symbols,
4237 "Number of Symbols",
4238 "wimaxmacphy.burst_initial_number_of_symbols",
4239 FT_UINT8,
4240 BASE_DEC,
4241 NULL,
4242 0x0,
4243 NULL,
4244 HFILL
4248 &hf_wimaxmacphy_ul_burst_initial_number_of_subchannels,
4250 "Number of Subchannels",
4251 "wimaxmacphy.burst_initial_number_of_subchannels",
4252 FT_UINT8,
4253 BASE_DEC,
4254 NULL,
4255 0x0,
4256 NULL,
4257 HFILL
4261 &hf_wimaxmacphy_ul_burst_initial_ranging_method,
4263 "Ranging method",
4264 "wimaxmacphy.burst_initial_ranging_method",
4265 FT_UINT8,
4266 BASE_DEC,
4267 VALS(wimaxmacphy_ul_burst_ranging_method_vals),
4268 0x0,
4269 NULL,
4270 HFILL
4274 &hf_wimaxmacphy_ul_burst_initial_reserved1,
4276 "Reserved",
4277 "wimaxmacphy.burst_initial_reserved1",
4278 FT_BYTES,
4279 BASE_NONE,
4280 NULL,
4281 0x0,
4282 NULL,
4283 HFILL
4287 &hf_wimaxmacphy_ul_burst_initial_zone_xid,
4289 "Zone XID",
4290 "wimaxmacphy.burst_initial_zone_xid",
4291 FT_UINT16,
4292 BASE_HEX,
4293 NULL,
4294 0x0,
4295 NULL,
4296 HFILL
4300 &hf_wimaxmacphy_ul_burst_initial_reserved2,
4302 "Reserved",
4303 "wimaxmacphy.burst_initial_reserved2",
4304 FT_BYTES,
4305 BASE_NONE,
4306 NULL,
4307 0x0,
4308 NULL,
4309 HFILL
4313 &hf_wimaxmacphy_ul_burst_periodic_number_of_symbols,
4315 "Number of Symbols",
4316 "wimaxmacphy.burst_periodic_number_of_symbols",
4317 FT_UINT8,
4318 BASE_DEC,
4319 NULL,
4320 0x0,
4321 NULL,
4322 HFILL
4326 &hf_wimaxmacphy_ul_burst_periodic_number_of_subchannels,
4328 "Number of Subchannels",
4329 "wimaxmacphy.burst_periodic_number_of_subchannels",
4330 FT_UINT8,
4331 BASE_DEC,
4332 NULL,
4333 0x0,
4334 NULL,
4335 HFILL
4339 &hf_wimaxmacphy_ul_burst_periodic_ranging_method,
4341 "Ranging method",
4342 "wimaxmacphy.burst_periodic_ranging_method",
4343 FT_UINT8,
4344 BASE_DEC,
4345 VALS(wimaxmacphy_ul_burst_ranging_method_vals),
4346 0x0,
4347 NULL,
4348 HFILL
4352 &hf_wimaxmacphy_ul_burst_periodic_reserved1,
4354 "Reserved",
4355 "wimaxmacphy.burst_periodic_reserved1",
4356 FT_BYTES,
4357 BASE_NONE,
4358 NULL,
4359 0x0,
4360 NULL,
4361 HFILL
4365 &hf_wimaxmacphy_ul_burst_periodic_zone_xid,
4367 "Zone XID",
4368 "wimaxmacphy.burst_periodic_zone_xid",
4369 FT_UINT16,
4370 BASE_HEX,
4371 NULL,
4372 0x0,
4373 NULL,
4374 HFILL
4378 &hf_wimaxmacphy_ul_burst_periodic_reserved2,
4380 "Reserved",
4381 "wimaxmacphy.burst_periodic_reserved2",
4382 FT_BYTES,
4383 BASE_NONE,
4384 NULL,
4385 0x0,
4386 NULL,
4387 HFILL
4391 &hf_wimaxmacphy_ul_burst_noise_number_of_symbols,
4393 "Number of Symbols",
4394 "wimaxmacphy.burst_noise_number_of_symbols",
4395 FT_UINT8,
4396 BASE_DEC,
4397 NULL,
4398 0x0,
4399 NULL,
4400 HFILL
4404 &hf_wimaxmacphy_ul_burst_noise_number_of_subchannels,
4406 "Number of Subchannels",
4407 "wimaxmacphy.burst_noise_number_of_subchannels",
4408 FT_UINT8,
4409 BASE_DEC,
4410 NULL,
4411 0x0,
4412 NULL,
4413 HFILL
4417 &hf_wimaxmacphy_ul_burst_noise_reserved,
4419 "Reserved",
4420 "wimaxmacphy.burst_noise_reserved",
4421 FT_BYTES,
4422 BASE_NONE,
4423 NULL,
4424 0x0,
4425 NULL,
4426 HFILL
4430 &hf_wimaxmacphy_ul_burst_sounding_number_of_symbols,
4432 "Number of Symbols",
4433 "wimaxmacphy.burst_sounding_number_of_symbols",
4434 FT_UINT8,
4435 BASE_DEC,
4436 NULL,
4437 0x0,
4438 NULL,
4439 HFILL
4443 &hf_wimaxmacphy_ul_burst_sounding_number_of_subchannels,
4445 "Number of Subchannels",
4446 "wimaxmacphy.burst_sounding_number_of_subchannels",
4447 FT_UINT8,
4448 BASE_DEC,
4449 NULL,
4450 0x0,
4451 NULL,
4452 HFILL
4456 &hf_wimaxmacphy_ul_burst_sounding_type,
4458 "Sounding type",
4459 "wimaxmacphy.burst_sounding_type",
4460 FT_UINT8,
4461 BASE_DEC,
4462 VALS(wimaxmacphy_ul_burst_sounding_type_vals),
4463 0x0,
4464 NULL,
4465 HFILL
4469 &hf_wimaxmacphy_ul_burst_sounding_separability_type,
4471 "Separability type",
4472 "wimaxmacphy.burst_sounding_separability_type",
4473 FT_UINT8,
4474 BASE_DEC,
4475 VALS(wimaxmacphy_ul_burst_sounding_separability_type_vals),
4476 0x0,
4477 NULL,
4478 HFILL
4482 &hf_wimaxmacphy_ul_burst_sounding_max_cyclic_shift_indx,
4484 "Max Cyclic Shift Indx",
4485 "wimaxmacphy.burst_sounding_max_cyclic_shift_indx",
4486 FT_UINT8,
4487 BASE_DEC,
4488 VALS(
4489 wimaxmacphy_ul_burst_sounding_max_cyclic_shift_indx_vals),
4490 0x0,
4491 NULL,
4492 HFILL
4496 &hf_wimaxmacphy_ul_burst_sounding_decimation_value,
4498 "Decimation value",
4499 "wimaxmacphy.burst_sounding_decimation_value",
4500 FT_UINT8,
4501 BASE_DEC,
4502 NULL,
4503 0x0,
4504 NULL,
4505 HFILL
4509 &hf_wimaxmacphy_ul_burst_sounding_decimation_offset_rand,
4511 "Decimation offset randomization",
4512 "wimaxmacphy.burst_sounding_decimation_offset_rand",
4513 FT_UINT8,
4514 BASE_DEC,
4515 VALS(
4516 wimaxmacphy_ul_burst_sounding_decimation_offset_rand_vals),
4517 0x0,
4518 NULL,
4519 HFILL
4523 &hf_wimaxmacphy_ul_burst_sounding_reserved,
4525 "Reserved",
4526 "wimaxmacphy.burst_sounding_reserved",
4527 FT_BYTES,
4528 BASE_NONE,
4529 NULL,
4530 0x0,
4531 NULL,
4532 HFILL
4536 &hf_wimaxmacphy_burst_opt_aas_preamble_modifier_type,
4538 "Preamble Modifier Type",
4539 "wimaxmacphy.burst_opt_aas_preamble_modifier_type",
4540 FT_UINT8,
4541 BASE_DEC,
4542 NULL,
4543 0x0,
4544 NULL,
4545 HFILL
4549 &hf_wimaxmacphy_burst_opt_aas_preamble_shift_index,
4551 "Preamble Shift index",
4552 "wimaxmacphy.burst_opt_aas_preamble_shift_index",
4553 FT_UINT8,
4554 BASE_DEC,
4555 NULL,
4556 0x0,
4557 NULL,
4558 HFILL
4562 &hf_wimaxmacphy_burst_opt_aas_reserved,
4564 "Reserved",
4565 "wimaxmacphy.burst_opt_aas_reserved",
4566 FT_BYTES,
4567 BASE_NONE,
4568 NULL,
4569 0x0,
4570 NULL,
4571 HFILL
4575 &hf_wimaxmacphy_burst_opt_mimo_matrix_indicator,
4577 "Matrix indicator",
4578 "wimaxmacphy.burst_opt_mimo_matrix_indicator",
4579 FT_UINT8,
4580 BASE_HEX,
4581 VALS(wimaxmacphy_matrix_indicator_vals),
4582 0x0,
4583 NULL,
4584 HFILL
4588 &hf_wimaxmacphy_burst_opt_mimo_layer_index,
4590 "Layer index",
4591 "wimaxmacphy.burst_opt_mimo_layer_index",
4592 FT_UINT8,
4593 BASE_HEX,
4594 NULL,
4595 0x0,
4596 NULL,
4597 HFILL
4601 &hf_wimaxmacphy_dl_burst_opt_mimo_reserved,
4603 "Reserved",
4604 "wimaxmacphy.burst_opt_mimo_reserved",
4605 FT_BYTES,
4606 BASE_NONE,
4607 NULL,
4608 0x0,
4609 NULL,
4610 HFILL
4614 &hf_wimaxmacphy_ul_burst_opt_mimo_matrix_indicator,
4616 "Matrix indicator (dual antenna SS)",
4617 "wimaxmacphy.burst_opt_mimo_matrix_indicator",
4618 FT_UINT8,
4619 BASE_HEX,
4620 VALS(wimaxmacphy_ul_burst_opt_mimo_matrix_indicator_vals),
4621 0x0,
4622 NULL,
4623 HFILL
4627 &hf_wimaxmacphy_ul_burst_opt_mimo_pilot_patterns,
4629 "Pilot patterns",
4630 "wimaxmacphy.burst_opt_mimo_pilot_patterns",
4631 FT_UINT8,
4632 BASE_HEX,
4633 NULL,
4634 0x0,
4635 NULL,
4636 HFILL
4640 &hf_wimaxmacphy_ul_burst_opt_mimo_pilot_patterns_bit0,
4642 "Pattern A",
4643 "wimaxmacphy.burst_opt_mimo_pilot_patterns.A",
4644 FT_BOOLEAN,
4646 TFS(&set_notset),
4647 0x01,
4648 NULL,
4649 HFILL
4653 &hf_wimaxmacphy_ul_burst_opt_mimo_pilot_patterns_bit1,
4655 "Pattern B",
4656 "wimaxmacphy.burst_opt_mimo_pilot_patterns.B",
4657 FT_BOOLEAN,
4659 TFS(&set_notset),
4660 0x02,
4661 NULL,
4662 HFILL
4666 &hf_wimaxmacphy_ul_burst_opt_mimo_pilot_patterns_bit2,
4668 "Pattern C",
4669 "wimaxmacphy.burst_opt_mimo_pilot_patterns.C",
4670 FT_BOOLEAN,
4672 TFS(&set_notset),
4673 0x04,
4674 NULL,
4675 HFILL
4679 &hf_wimaxmacphy_ul_burst_opt_mimo_pilot_patterns_bit3,
4681 "Pattern D",
4682 "wimaxmacphy.burst_opt_mimo_pilot_patterns.D",
4683 FT_BOOLEAN,
4685 TFS(&set_notset),
4686 0x08,
4687 NULL,
4688 HFILL
4692 &hf_wimaxmacphy_ul_burst_opt_mimo_collaborative,
4694 "Collaborative MIMO control",
4695 "wimaxmacphy.burst_opt_mimo_collaborative",
4696 FT_UINT8,
4697 BASE_DEC,
4698 VALS(wimaxmacphy_ul_burst_opt_mimo_collaborative_vals),
4699 0xf0,
4700 NULL,
4701 HFILL
4705 &hf_wimaxmacphy_ul_burst_opt_mimo_antenna_unnamed,
4707 "Antenna(?)",
4708 "wimaxmacphy.burst_opt_mimo_antenna_unnamed",
4709 FT_UINT8,
4710 BASE_DEC,
4711 VALS(wimaxmacphy_ul_burst_opt_mimo_antenna_unnamed_vals),
4712 0x0f,
4713 NULL,
4714 HFILL
4718 &hf_wimaxmacphy_number_of_sub_burst_descriptors,
4720 "Number of Sub-Burst Descriptors",
4721 "wimaxmacphy.number_of_sub_burst_descriptors",
4722 FT_UINT8,
4723 BASE_DEC,
4724 NULL,
4725 0x0,
4726 NULL,
4727 HFILL
4731 &hf_wimaxmacphy_sub_burst_padding,
4733 "Padding",
4734 "wimaxmacphy.sub_burst_padding",
4735 FT_BYTES,
4736 BASE_NONE,
4737 NULL,
4738 0x0,
4739 NULL,
4740 HFILL
4744 &hf_wimaxmacphy_dl_sub_burst_type,
4746 "Sub-Burst Type",
4747 "wimaxmacphy.sub_burst_type",
4748 FT_UINT8,
4749 BASE_HEX,
4750 VALS(wimaxmacphy_dl_sub_burst_type_vals),
4751 0x0,
4752 NULL,
4753 HFILL
4757 &hf_wimaxmacphy_ul_sub_burst_type,
4759 "Sub-Burst Type",
4760 "wimaxmacphy.sub_burst_type",
4761 FT_UINT8,
4762 BASE_HEX,
4763 VALS(wimaxmacphy_ul_sub_burst_type_vals),
4764 0x0,
4765 NULL,
4766 HFILL
4770 &hf_wimaxmacphy_sub_burst_number,
4772 "Sub-Burst number",
4773 "wimaxmacphy.sub_burst_number",
4774 FT_UINT8,
4775 BASE_DEC,
4776 NULL,
4777 0x0,
4778 NULL,
4779 HFILL
4783 &hf_wimaxmacphy_sub_burst_symbol_offset,
4785 "Symbol Offset",
4786 "wimaxmacphy.sub_burst_symbol_offset",
4787 FT_UINT8,
4788 BASE_DEC,
4789 NULL,
4790 0x0,
4791 NULL,
4792 HFILL
4796 &hf_wimaxmacphy_sub_burst_subchannel_offset,
4798 "Subchannel Offset",
4799 "wimaxmacphy.sub_burst_subchannel_offset",
4800 FT_UINT8,
4801 BASE_DEC,
4802 NULL,
4803 0x0,
4804 NULL,
4805 HFILL
4809 &hf_wimaxmacphy_sub_burst_number_of_slots,
4811 "Number of slots in this sub-burst",
4812 "wimaxmacphy.sub_burst_number_of_slots",
4813 FT_UINT16,
4814 BASE_DEC,
4815 NULL,
4816 0x0,
4817 NULL,
4818 HFILL
4822 &hf_wimaxmacphy_sub_burst_reserved1,
4824 "Reserved",
4825 "wimaxmacphy.sub_burst_reserved1",
4826 FT_BYTES,
4827 BASE_NONE,
4828 NULL,
4829 0x0,
4830 NULL,
4831 HFILL
4835 &hf_wimaxmacphy_sub_burst_reserved2,
4837 "Reserved",
4838 "wimaxmacphy.sub_burst_reserved2",
4839 FT_BYTES,
4840 BASE_NONE,
4841 NULL,
4842 0x0,
4843 NULL,
4844 HFILL
4848 &hf_wimaxmacphy_sub_burst_modulation_fec_code_type,
4850 "Modulation/FEC Code Type",
4851 "wimaxmacphy.sub_burst_modulation_fec_code_type",
4852 FT_UINT8,
4853 BASE_DEC,
4854 VALS(wimaxmacphy_modulation_fec_code_type_vals),
4855 0x0,
4856 NULL,
4857 HFILL
4861 &hf_wimaxmacphy_sub_burst_issid,
4863 "ISSID",
4864 "wimaxmacphy.sub_burst_issid",
4865 FT_INT16,
4866 BASE_DEC,
4867 NULL,
4868 0x0,
4869 NULL,
4870 HFILL
4874 &hf_wimaxmacphy_sub_burst_aas_handle,
4876 "AAS Handle",
4877 "wimaxmacphy.sub_burst_aas_handle",
4878 FT_UINT16,
4879 BASE_HEX,
4880 NULL,
4881 0x0,
4882 NULL,
4883 HFILL
4887 &hf_wimaxmacphy_sub_burst_boosting,
4889 "Boosting",
4890 "wimaxmacphy.sub_burst_boosting",
4891 FT_UINT8,
4892 BASE_HEX,
4893 VALS(wimaxmacphy_burst_boosting_vals),
4894 0x0,
4895 NULL,
4896 HFILL
4900 &hf_wimaxmacphy_sub_burst_repetition_coding_indication,
4902 "Repetition coding indication",
4903 "wimaxmacphy.sub_burst_repetition_coding_indication",
4904 FT_UINT8,
4905 BASE_HEX,
4906 VALS(wimaxmacphy_burst_repetition_coding_indication_vals),
4907 0x0,
4908 NULL,
4909 HFILL
4913 &hf_wimaxmacphy_sub_burst_data_length,
4915 "Sub-Burst Data Length",
4916 "wimaxmacphy.sub_burst_data_length",
4917 FT_UINT32,
4918 BASE_DEC,
4919 NULL,
4920 0x0,
4921 NULL,
4922 HFILL
4926 &hf_wimaxmacphy_sub_burst_harq_chase_harq_channel_id,
4928 "HARQ channeld id (ACID)",
4929 "wimaxmacphy.sub_burst_harq_chase_harq_channel_id",
4930 FT_UINT8,
4931 BASE_DEC,
4932 NULL,
4933 0x0,
4934 NULL,
4935 HFILL
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",
4943 FT_UINT8,
4944 BASE_DEC,
4945 NULL,
4946 0x0,
4947 NULL,
4948 HFILL
4952 &hf_wimaxmacphy_sub_burst_harq_chase_flush_unnamed,
4954 "Flush(?)",
4955 "wimaxmacphy.sub_burst_harq_chase_flush_unnamed",
4956 FT_UINT8,
4957 BASE_HEX,
4958 VALS(wimaxmacphy_sub_burst_flush_unnamed_vals),
4959 0x0,
4960 NULL,
4961 HFILL
4965 &hf_wimaxmacphy_sub_burst_harq_chase_reserved,
4967 "Reserved",
4968 "wimaxmacphy.sub_burst_harq_chase_reserved",
4969 FT_BYTES,
4970 BASE_NONE,
4971 NULL,
4972 0x0,
4973 NULL,
4974 HFILL
4978 &hf_wimaxmacphy_sub_burst_mimo_chase_harq_channel_id,
4980 "HARQ channel id (ACID)",
4981 "wimaxmacphy.sub_burst_mimo_chase_harq_channel_id",
4982 FT_UINT8,
4983 BASE_DEC,
4984 NULL,
4985 0x0,
4986 NULL,
4987 HFILL
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",
4995 FT_UINT8,
4996 BASE_DEC,
4997 NULL,
4998 0x0,
4999 NULL,
5000 HFILL
5004 &hf_wimaxmacphy_sub_burst_mimo_chase_flush_unnamed,
5006 "Flush(?)",
5007 "wimaxmacphy.sub_burst_mimo_chase_flush_unnamed",
5008 FT_UINT8,
5009 BASE_HEX,
5010 VALS(wimaxmacphy_sub_burst_flush_unnamed_vals),
5011 0x0,
5012 NULL,
5013 HFILL
5017 &hf_wimaxmacphy_sub_burst_mimo_chase_layer_index,
5019 "Layer index",
5020 "wimaxmacphy.sub_burst_mimo_chase_layer_index",
5021 FT_UINT8,
5022 BASE_DEC,
5023 NULL,
5024 0x0,
5025 NULL,
5026 HFILL
5030 &hf_wimaxmacphy_ul_sub_burst_ctype,
5032 "CType",
5033 "wimaxmacphy.sub_burst_ctype",
5034 FT_UINT8,
5035 BASE_HEX,
5036 VALS(wimaxmacphy_ul_sub_burst_ctype_vals),
5037 0x0,
5038 NULL,
5039 HFILL
5043 &hf_wimaxmacphy_ul_sub_burst_mini_subchannel_index,
5045 "Mini-subchannel Index",
5046 "wimaxmacphy.sub_burst_mini_subchannel_index",
5047 FT_UINT8,
5048 BASE_DEC,
5049 NULL,
5050 0x0,
5051 NULL,
5052 HFILL
5056 &hf_wimaxmacphy_ul_sub_burst_mini_reserved,
5058 "Reserved",
5059 "wimaxmacphy.sub_burst_mini_reserved",
5060 FT_BYTES,
5061 BASE_NONE,
5062 NULL,
5063 0x0,
5064 NULL,
5065 HFILL
5069 &hf_wimaxmacphy_ul_sub_burst_feedback_type_coding,
5071 "Feedback type coding",
5072 "wimaxmacphy.sub_burst_feedback_type_coding",
5073 FT_UINT8,
5074 BASE_HEX,
5075 NULL,
5076 0x0,
5077 NULL,
5078 HFILL
5082 &hf_wimaxmacphy_ul_sub_burst_feedback_type_coding_bit0,
5084 "3 bit-MIMO Fast-feedback",
5085 "wimaxmacphy.sub_burst_feedback_type_coding.bit0",
5086 FT_BOOLEAN,
5088 TFS(&set_notset),
5089 0x01,
5090 NULL,
5091 HFILL
5095 &hf_wimaxmacphy_ul_sub_burst_feedback_type_coding_bit1,
5097 "Enhanced FAST_FEEDBACK",
5098 "wimaxmacphy.sub_burst_feedback_type_coding.bit1",
5099 FT_BOOLEAN,
5101 TFS(&set_notset),
5102 0x02,
5103 NULL,
5104 HFILL
5108 &hf_wimaxmacphy_ul_sub_burst_feedback_type_coding_bit2,
5110 "Reserved",
5111 "wimaxmacphy.sub_burst_feedback_type_coding.bit2",
5112 FT_BOOLEAN,
5114 TFS(&set_notset),
5115 0x04,
5116 NULL,
5117 HFILL
5121 &hf_wimaxmacphy_ul_sub_burst_feedback_type_coding_bit3,
5123 "Reserved",
5124 "wimaxmacphy.sub_burst_feedback_type_coding.bit3",
5125 FT_BOOLEAN,
5127 TFS(&set_notset),
5128 0x08,
5129 NULL,
5130 HFILL
5134 &hf_wimaxmacphy_ul_sub_burst_feedback_type_coding_bit4,
5136 "UEP fast-feedback",
5137 "wimaxmacphy.sub_burst_feedback_type_coding.bit4",
5138 FT_BOOLEAN,
5140 TFS(&set_notset),
5141 0x10,
5142 NULL,
5143 HFILL
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",
5151 FT_BOOLEAN,
5153 TFS(&set_notset),
5154 0x20,
5155 NULL,
5156 HFILL
5160 &hf_wimaxmacphy_ul_sub_burst_feedback_type_coding_bit6,
5162 "Primary/Secondary FAST_FEEDBACK",
5163 "wimaxmacphy.sub_burst_feedback_type_coding.bit6",
5164 FT_BOOLEAN,
5166 TFS(&set_notset),
5167 0x40,
5168 NULL,
5169 HFILL
5173 &hf_wimaxmacphy_ul_sub_burst_feedback_type_coding_bit7,
5175 "DIUC-CQI Fast-feedback",
5176 "wimaxmacphy.sub_burst_feedback_type_coding.bit7",
5177 FT_BOOLEAN,
5179 TFS(&set_notset),
5180 0x80,
5181 NULL,
5182 HFILL
5186 &hf_wimaxmacphy_ul_sub_burst_feedback_reserved1,
5188 "Reserved",
5189 "wimaxmacphy.sub_burst_feedback_reserved1",
5190 FT_UINT16,
5191 BASE_DEC,
5192 NULL,
5193 0x8000,
5194 NULL,
5195 HFILL
5199 &hf_wimaxmacphy_ul_sub_burst_feedback_sub_type,
5201 "Feedback sub-type",
5202 "wimaxmacphy.sub_burst_feedback_sub_type",
5203 FT_UINT16,
5204 BASE_DEC,
5205 NULL,
5206 0x7000,
5207 NULL,
5208 HFILL
5212 &hf_wimaxmacphy_ul_sub_burst_feedback_cqich_id,
5214 "CQICH_ID",
5215 "wimaxmacphy.sub_burst_feedback_cqich_id",
5216 FT_UINT16,
5217 BASE_DEC,
5218 NULL,
5219 0x0fff,
5220 NULL,
5221 HFILL
5225 &hf_wimaxmacphy_ul_sub_burst_feedback_reserved2,
5227 "Reserved",
5228 "wimaxmacphy.sub_burst_feedback_reserved2",
5229 FT_UINT8,
5230 BASE_DEC,
5231 NULL,
5232 0xc0,
5233 NULL,
5234 HFILL
5238 &hf_wimaxmacphy_ul_sub_burst_feedback_slot_offset,
5240 "Slot offset",
5241 "wimaxmacphy.sub_burst_feedback_slot_offset",
5242 FT_UINT8,
5243 BASE_DEC,
5244 NULL,
5245 0x3f,
5246 NULL,
5247 HFILL
5251 &hf_wimaxmacphy_ul_sub_burst_harq_ack_acid,
5253 "ACID",
5254 "wimaxmacphy.sub_burst_harq_ack_acid",
5255 FT_UINT8,
5256 BASE_DEC,
5257 NULL,
5258 0xf0,
5259 NULL,
5260 HFILL
5264 &hf_wimaxmacphy_ul_sub_burst_harq_ack_reserved,
5266 "Reserved",
5267 "wimaxmacphy.sub_burst_harq_ack_reserved",
5268 FT_UINT32,
5269 BASE_HEX,
5270 NULL,
5271 0x0fff,
5272 NULL,
5273 HFILL
5277 &hf_wimaxmacphy_ul_sub_burst_sounding_symbol_index,
5279 "Sounding symbol index within Sounding zone",
5280 "wimaxmacphy.sub_burst_sounding_symbol_index",
5281 FT_UINT8,
5282 BASE_DEC,
5283 NULL,
5284 0x0,
5285 NULL,
5286 HFILL
5290 &hf_wimaxmacphy_ul_sub_burst_sounding_power_assignment,
5292 "Power assignment method",
5293 "wimaxmacphy.sub_burst_sounding_power_assignment_method",
5294 FT_UINT8,
5295 BASE_HEX,
5296 VALS(
5297 wimaxmacphy_ul_sub_burst_sounding_power_assignment_vals),
5298 0x0,
5299 NULL,
5300 HFILL
5304 &hf_wimaxmacphy_ul_sub_burst_sounding_power_boost,
5306 "Power boost",
5307 "wimaxmacphy.",
5308 FT_UINT8,
5309 BASE_DEC,
5310 VALS(wimaxmacphy_ul_sub_burst_sounding_power_boost_vals),
5311 0x0,
5312 NULL,
5313 HFILL
5317 &hf_wimaxmacphy_ul_sub_burst_sounding_allocation_mode,
5319 "Allocation mode",
5320 "wimaxmacphy.sub_burst_sounding_allocation_mode",
5321 FT_UINT8,
5322 BASE_DEC,
5323 VALS(
5324 wimaxmacphy_ul_sub_burst_sounding_allocation_mode_vals),
5325 0x0,
5326 NULL,
5327 HFILL
5331 &hf_wimaxmacphy_ul_sub_burst_sounding_start_freq_band,
5333 "Start frequency band",
5334 "wimaxmacphy.sub_burst_sounding_start_freq_band",
5335 FT_UINT8,
5336 BASE_DEC,
5337 NULL,
5338 0x0,
5339 NULL,
5340 HFILL
5344 &hf_wimaxmacphy_ul_sub_burst_sounding_num_freq_bands,
5346 "Number of frequency bands",
5347 "wimaxmacphy.ub_burst_sounding_num_freq_bands",
5348 FT_UINT8,
5349 BASE_DEC,
5350 NULL,
5351 0x0,
5352 NULL,
5353 HFILL
5357 &hf_wimaxmacphy_ul_sub_burst_sounding_band_bit_map,
5359 "Band bit map",
5360 "wimaxmacphy.sub_burst_sounding_band_bit_map",
5361 FT_UINT16,
5362 BASE_HEX,
5363 NULL,
5364 0x0,
5365 NULL,
5366 HFILL
5370 &hf_wimaxmacphy_ul_sub_burst_sounding_cyclic_time_shift,
5372 "Cyclic time shift index",
5373 "wimaxmacphy.sub_burst_sounding_cyclic_time_shift_index",
5374 FT_UINT8,
5375 BASE_DEC,
5376 NULL,
5377 0x0,
5378 NULL,
5379 HFILL
5383 &hf_wimaxmacphy_ul_sub_burst_sounding_decimation_offset,
5385 "Decimation offset",
5386 "wimaxmacphy.sub_burst_sounding_decimation_offset",
5387 FT_UINT8,
5388 BASE_DEC,
5389 NULL,
5390 0x0,
5391 NULL,
5392 HFILL
5396 &hf_wimaxmacphy_ul_sub_burst_sounding_reserved,
5398 "Reserved",
5399 "wimaxmacphy.sub_burst_sounding_reserved",
5400 FT_BYTES,
5401 BASE_NONE,
5402 NULL,
5403 0x0,
5404 NULL,
5405 HFILL
5409 &hf_wimaxmacphy_ul_sub_burst_mimo_chase_matrix,
5411 "Matrix (dual antenna SS)",
5412 "wimaxmacphy.sub_burst_mimo_chase_matrix",
5413 FT_UINT8,
5414 BASE_DEC,
5415 VALS(wimaxmacphy_ul_sub_burst_mimo_chase_matrix_vals),
5416 0x0,
5417 NULL,
5418 HFILL
5423 /* Protocol subtree array */
5424 static gint *ett[] = {
5425 &ett_wimaxmacphy,
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",
5476 "WiMAX MAC-PHY",
5477 "wimaxmacphy");
5479 /* Required function calls to register the header fields and subtrees
5480 * used */
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
5487 * preferences) */
5488 wimaxmacphy_module = prefs_register_protocol(
5489 proto_wimaxmacphy,
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);
5501 void
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;
5508 if (!inited) {
5509 wimaxmacphy_handle = new_create_dissector_handle(dissect_wimaxmacphy, proto_wimaxmacphy);
5510 dissector_add_handle("udp.port", wimaxmacphy_handle); /* for 'decode as' */
5511 inited = TRUE;
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);