MSWSP: add ids for another unknown Property Set
[wireshark-wip.git] / plugins / wimax / msg_sbc.c
blob39bc9f668c4798c047ebc37e52ab4f6a3d9790c7
1 /* msg_sbc.c
2 * WiMax MAC Management SBC-REQ/RSP Messages decoders
4 * Copyright (c) 2007 by Intel Corporation.
6 * Author: Lu Pan <lu.pan@intel.com>
8 * $Id$
10 * Wireshark - Network traffic analyzer
11 * By Gerald Combs <gerald@wireshark.org>
12 * Copyright 1999 Gerald Combs
14 * This program is free software; you can redistribute it and/or
15 * modify it under the terms of the GNU General Public License
16 * as published by the Free Software Foundation; either version 2
17 * of the License, or (at your option) any later version.
19 * This program is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 * GNU General Public License for more details.
24 * You should have received a copy of the GNU General Public License
25 * along with this program; if not, write to the Free Software
26 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
30 #define DEBUG // for debug only
33 /* Include files */
35 #include "config.h"
37 #include <glib.h>
38 #include <epan/packet.h>
39 #include "wimax_tlv.h"
40 #include "wimax_mac.h"
41 #include "wimax_utils.h"
43 /* This is a global variable declared in mac_hd_generic_decoder.c, which determines whether
44 * or not cor2 changes are included */
45 extern guint include_cor2_changes;
47 static gint proto_mac_mgmt_msg_sbc_decoder = -1;
48 static gint ett_mac_mgmt_msg_sbc_decoder = -1;
49 static gint ett_sbc_req_tlv_subtree = -1;
50 static gint ett_sbc_rsp_tlv_subtree = -1;
52 /* fix fields */
53 static gint hf_sbc_unknown_type = -1;
55 static gint hf_sbc_bw_alloc_support = -1;
56 static gint hf_sbc_bw_alloc_support_rsvd0 = -1;
57 static gint hf_sbc_bw_alloc_support_duplex = -1;
58 static gint hf_sbc_bw_alloc_support_rsvd1 = -1;
59 static gint hf_sbc_curr_transmit_power = -1;
60 static gint hf_sbc_transition_gaps = -1;
61 static gint hf_sbc_ssttg = -1;
62 static gint hf_sbc_ssrtg = -1;
63 static gint hf_sbc_mac_pdu = -1;
64 static gint hf_sbc_mac_pdu_piggybacked = -1;
65 static gint hf_sbc_mac_pdu_fsn = -1;
66 static gint hf_sbc_mac_pdu_rsvd = -1;
67 static gint hf_sbc_max_transmit_power = -1;
68 static gint hf_sbc_ss_fft_sizes = -1;
69 static gint hf_sbc_ss_fft_256 = -1;
70 static gint hf_sbc_ss_fft_2048 = -1;
71 static gint hf_sbc_ss_fft_128 = -1;
72 static gint hf_sbc_ss_fft_512 = -1;
73 static gint hf_sbc_ss_fft_1024 = -1;
74 static gint hf_sbc_ss_cinr_measure_capability = -1;
75 static gint hf_sbc_ss_phy_cinr_measurement_preamble = -1;
76 static gint hf_sbc_ss_phy_cinr_measurement_permutation_zone_from_pilot_subcarriers = -1;
77 static gint hf_sbc_ss_phy_cinr_measurement_permutation_zone_from_data_subcarriers = -1;
78 static gint hf_sbc_ss_effective_cinr_measurement_preamble = -1;
79 static gint hf_sbc_ss_effective_cinr_measurement_permutation_zone_from_pilot_subcarriers = -1;
80 static gint hf_sbc_ss_effective_cinr_measurement_permutation_zone_from_data_subcarriers = -1;
81 static gint hf_sbc_ss_support_2_concurrent_cqi_channels = -1;
82 static gint hf_sbc_ss_frequency_selectivity_characterization_report = -1;
84 static gint hf_sbc_ss_fft_rsvd1 = -1;
85 static gint hf_sbc_ss_fft_rsvd2 = -1;
86 static gint hf_sbc_ss_demodulator = -1;
87 static gint hf_sbc_ss_demodulator_64qam = -1;
88 static gint hf_sbc_ss_demodulator_btc = -1;
89 static gint hf_sbc_ss_demodulator_ctc = -1;
90 static gint hf_sbc_ss_demodulator_stc = -1;
91 static gint hf_sbc_ss_demodulator_cc_with_optional_interleaver = -1;
92 static gint hf_sbc_ss_demodulator_harq_chase = -1;
93 static gint hf_sbc_ss_demodulator_harq_ctc_ir = -1;
94 static gint hf_sbc_ss_demodulator_reserved = -1;
95 /* static gint hf_sbc_ss_demodulator_reserved1 = -1; */
96 static gint hf_sbc_ss_demodulator_64qam_2 = -1;
97 static gint hf_sbc_ss_demodulator_btc_2 = -1;
98 static gint hf_sbc_ss_demodulator_ctc_2 = -1;
99 static gint hf_sbc_ss_demodulator_stc_2 = -1;
100 static gint hf_sbc_ss_demodulator_cc_with_optional_interleaver_2 = -1;
101 static gint hf_sbc_ss_demodulator_harq_chase_2 = -1;
102 static gint hf_sbc_ss_demodulator_harq_ctc_ir_2 = -1;
103 static gint hf_sbc_ss_demodulator_reserved_2 = -1;
104 static gint hf_sbc_ss_demodulator_harq_cc_ir_2 = -1;
105 static gint hf_sbc_ss_demodulator_ldpc_2 = -1;
106 static gint hf_sbc_ss_demodulator_dedicated_pilots_2 = -1;
107 static gint hf_sbc_ss_demodulator_reserved1_2 = -1;
109 static gint hf_sbc_ss_modulator = -1;
110 static gint hf_sbc_ss_modulator_64qam = -1;
111 static gint hf_sbc_ss_modulator_btc = -1;
112 static gint hf_sbc_ss_modulator_ctc = -1;
113 static gint hf_sbc_ss_modulator_stc = -1;
114 static gint hf_sbc_ss_modulator_harq_chase = -1;
115 static gint hf_sbc_ss_modulator_ctc_ir = -1;
116 static gint hf_sbc_ss_modulator_cc_ir = -1;
117 static gint hf_sbc_ss_modulator_ldpc = -1;
119 static gint hf_sbc_number_ul_arq_ack_channel = -1;
120 static gint hf_sbc_number_dl_arq_ack_channel = -1;
121 static gint hf_sbc_ss_permutation_support = -1;
122 static gint hf_sbc_ss_optimal_pusc = -1;
123 static gint hf_sbc_ss_optimal_fusc = -1;
124 static gint hf_sbc_ss_amc_1x6 = -1;
125 static gint hf_sbc_ss_amc_2x3 = -1;
126 static gint hf_sbc_ss_amc_3x2 = -1;
127 static gint hf_sbc_ss_amc_with_harq_map = -1;
128 static gint hf_sbc_ss_tusc1_support = -1;
129 static gint hf_sbc_ss_tusc2_support = -1;
130 static gint hf_sbc_ss_ofdma_aas_private = -1;
131 static gint hf_sbc_ofdma_aas_harq_map_capability = -1;
132 static gint hf_sbc_ofdma_aas_private_map_support = -1;
133 static gint hf_sbc_ofdma_aas_reduced_private_map_support = -1;
134 static gint hf_sbc_ofdma_aas_private_chain_enable = -1;
135 static gint hf_sbc_ofdma_aas_private_map_dl_frame_offset = -1;
136 static gint hf_sbc_ofdma_aas_private_ul_frame_offset = -1;
137 static gint hf_sbc_ofdma_aas_private_map_concurrency = -1;
138 static gint hf_sbc_ofdma_aas_capabilities = -1;
139 static gint hf_sbc_ss_ofdma_aas_zone = -1;
140 static gint hf_sbc_ss_ofdma_aas_diversity_map_scan = -1;
141 static gint hf_sbc_ss_ofdma_aas_fbck_rsp_support = -1;
142 static gint hf_sbc_ss_ofdma_downlink_aas_preamble = -1;
143 static gint hf_sbc_ss_ofdma_uplink_aas_preamble = -1;
144 static gint hf_sbc_ss_ofdma_aas_capabilities_rsvd = -1;
146 static gint hf_sbc_tlv_t_167_association_type_support = -1;
147 static gint hf_sbc_tlv_t_167_association_type_support_bit0 = -1;
148 static gint hf_sbc_tlv_t_167_association_type_support_bit1 = -1;
149 static gint hf_sbc_tlv_t_167_association_type_support_bit2 = -1;
150 static gint hf_sbc_tlv_t_167_association_type_support_bit3 = -1;
151 static gint hf_sbc_tlv_t_167_association_type_support_bit4 = -1;
152 static gint hf_sbc_tlv_t_167_association_type_support_reserved = -1;
153 static gint hf_sbc_ofdma_ss_uplink_power_control_support = -1;
154 static gint hf_sbc_ofdma_ss_uplink_power_control_support_open_loop = -1;
155 static gint hf_sbc_ofdma_ss_uplink_power_control_support_aas_preamble = -1;
156 static gint hf_sbc_ofdma_ss_uplink_power_control_support_rsvd = -1;
157 /* static gint hf_sbc_ofdm_ss_minimum_num_of_frames = -1; */
158 static gint hf_sbc_tlv_t_27_extension_capability = -1;
159 static gint hf_sbc_tlv_t_27_extension_capability_bit0 = -1;
160 static gint hf_sbc_tlv_t_27_extension_capability_reserved = -1;
161 static gint hf_sbc_tlv_t_28_ho_trigger_metric_support = -1;
162 static gint hf_sbc_tlv_t_28_ho_trigger_metric_support_bit0 = -1;
163 static gint hf_sbc_tlv_t_28_ho_trigger_metric_support_bit1 = -1;
164 static gint hf_sbc_tlv_t_28_ho_trigger_metric_support_bit2 = -1;
165 static gint hf_sbc_tlv_t_28_ho_trigger_metric_support_bit3 = -1;
166 static gint hf_sbc_tlv_t_28_ho_trigger_metric_support_reserved = -1;
167 static gint hf_sbc_tlv_t_171_minimum_num_of_frames = -1;
168 static gint hf_sbc_tlv_t_172_harq_map_capability = -1;
169 static gint hf_sbc_tlv_t_172_extended_harq_ie_capability = -1;
170 static gint hf_sbc_tlv_t_172_sub_map_capability_first_zone = -1;
171 static gint hf_sbc_tlv_t_172_sub_map_capability_other_zones = -1;
172 static gint hf_sbc_tlv_t_172_dl_region_definition_support = -1;
173 static gint hf_sbc_tlv_t_172_reserved = -1;
174 static gint hf_sbc_tlv_t_172 = -1;
175 static gint hf_sbc_tlv_t_173_ul_ctl_channel_support = -1;
176 static gint hf_sbc_tlv_t_173_3_bit_mimo_fast_feedback = -1;
177 static gint hf_sbc_tlv_t_173_enhanced_fast_feedback = -1;
178 static gint hf_sbc_tlv_t_173_ul_ack = -1;
179 static gint hf_sbc_tlv_t_173_reserved = -1;
180 static gint hf_sbc_tlv_t_173_uep_fast_feedback = -1;
181 static gint hf_sbc_tlv_t_173_measurement_report = -1;
182 static gint hf_sbc_tlv_t_173_primary_secondary_fast_feedback = -1;
183 static gint hf_sbc_tlv_t_173_diuc_cqi_fast_feedback = -1;
184 static gint hf_sbc_tlv_t_174_ofdma_ms_csit_capability = -1;
185 static gint hf_sbc_tlv_t_174_csit_compatibility_type_a = -1;
186 static gint hf_sbc_tlv_t_174_csit_compatibility_type_b = -1;
187 static gint hf_sbc_tlv_t_174_power_assignment_capability = -1;
188 static gint hf_sbc_tlv_t_174_sounding_rsp_time_capability = -1;
189 static gint hf_sbc_tlv_t_174_max_num_simultanous_sounding_instructions = -1;
190 static gint hf_sbc_tlv_t_174_ss_csit_type_a_support = -1;
191 static gint hf_sbc_tlv_t_204_ofdma_parameters_sets = -1;
192 static gint hf_sbc_tlv_t_204_ofdma_parameters_sets_phy_set_a = -1;
193 static gint hf_sbc_tlv_t_204_ofdma_parameters_sets_phy_set_b = -1;
194 static gint hf_sbc_tlv_t_204_ofdma_parameters_sets_harq_parameters_set = -1;
195 static gint hf_sbc_tlv_t_204_ofdma_parameters_sets_mac_set_a = -1;
196 static gint hf_sbc_tlv_t_204_ofdma_parameters_sets_mac_set_b = -1;
197 static gint hf_sbc_tlv_t_204_ofdma_parameters_sets_reserved = -1;
198 static gint hf_sbc_tlv_t_174_ss_csit_reserved = -1;
199 static gint hf_sbc_tlv_t_175_max_num_bst_per_frm_capability_harq = -1;
200 static gint hf_sbc_tlv_t_175_max_num_ul_harq_bst = -1;
201 static gint hf_sbc_tlv_t_175_max_num_ul_harq_per_frm_include_one_non_harq_bst = -1;
202 static gint hf_sbc_tlv_t_175_max_num_dl_harq_bst_per_harq_per_frm = -1;
203 static gint hf_sbc_tlv_t_176 = -1;
204 static gint hf_sbc_tlv_t_176_bit0 = -1;
205 static gint hf_sbc_tlv_t_176_bit1 = -1;
206 static gint hf_sbc_tlv_t_176_bit2 = -1;
207 static gint hf_sbc_tlv_t_176_bit2_cor2 = -1;
208 static gint hf_sbc_tlv_t_176_bit3 = -1;
209 static gint hf_sbc_tlv_t_176_bit4 = -1;
210 static gint hf_sbc_tlv_t_176_bit5 = -1;
211 static gint hf_sbc_tlv_t_176_bit6 = -1;
212 static gint hf_sbc_tlv_t_176_bit7 = -1;
213 static gint hf_sbc_tlv_t_176_bit8 = -1;
214 static gint hf_sbc_tlv_t_176_bit9 = -1;
215 static gint hf_sbc_tlv_t_176_bit10 = -1;
216 static gint hf_sbc_tlv_t_176_bit11 = -1;
217 static gint hf_sbc_tlv_t_176_bit12 = -1;
218 static gint hf_sbc_tlv_t_176_bit13 = -1;
219 static gint hf_sbc_tlv_t_176_bit14 = -1;
220 static gint hf_sbc_tlv_t_176_bit15 = -1;
221 static gint hf_sbc_tlv_t_176_bit16 = -1;
222 static gint hf_sbc_tlv_t_176_bit17 = -1;
223 static gint hf_sbc_tlv_t_176_bit18 = -1;
224 static gint hf_sbc_tlv_t_176_bit19 = -1;
225 static gint hf_sbc_tlv_t_176_reserved = -1;
226 static gint hf_sbc_tlv_t_177_ofdma_ss_modulator_for_mimo_support = -1;
227 static gint hf_sbc_tlv_t_177_stc_matrix_a = -1;
228 static gint hf_sbc_tlv_t_177_stc_matrix_b_vertical = -1;
229 static gint hf_sbc_tlv_t_177_stc_matrix_b_horizontal = -1;
230 static gint hf_sbc_tlv_t_177_two_transmit_antennas = -1;
231 static gint hf_sbc_tlv_t_177_capable_of_transmit_diversity = -1;
232 static gint hf_sbc_tlv_t_177_capable_of_spacial_multiplexing = -1;
233 static gint hf_sbc_tlv_t_177_beamforming = -1;
234 static gint hf_sbc_tlv_t_177_adaptive_rate_ctl = -1;
235 static gint hf_sbc_tlv_t_177_single_antenna = -1;
236 static gint hf_sbc_tlv_t_177_collaborative_sm_with_one_antenna = -1;
237 static gint hf_sbc_tlv_t_177_collaborative_sm_with_two_antennas = -1;
238 static gint hf_sbc_tlv_t_177_capable_of_two_antenna = -1;
239 static gint hf_sbc_tlv_t_177_rsvd = -1;
240 static gint hf_sbc_tlv_t_178_sdma_pilot_capability = -1;
241 static gint hf_sbc_tlv_t_178_sdma_pilot_pattern_support_for_amc_zone = -1;
242 static gint hf_sbc_tlv_t_178_reserved = -1;
243 static gint hf_sbc_tlv_t_179_ofdma_multiple_dl_burst_profile_support = -1;
244 static gint hf_sbc_tlv_t_179_dl_bst_profile_for_multiple_fec = -1;
245 static gint hf_sbc_tlv_t_179_ul_bst_profile_for_multiple_fec = -1;
246 static gint hf_sbc_tlv_t_179_reserved = -1;
247 static gint hf_sbc_tlv_t_162_harq_incremental_redundancy_buffer_capability = -1;
248 static gint hf_sbc_tlv_t_162_harq_incremental_redundancy_buffer_capability_NEP = -1;
249 static gint hf_sbc_tlv_t_162_harq_incremental_redundancy_buffer_capability_aggregation_flag_for_dl = -1;
250 static gint hf_sbc_tlv_t_162_harq_incremental_redundancy_buffer_capability_aggregation_flag_for_ul = -1;
251 static gint hf_sbc_tlv_t_162_harq_incremental_redundancy_buffer_capability_reserved1 = -1;
252 static gint hf_sbc_tlv_t_162_ul_harq_incremental_redundancy_buffer_capability_NEP = -1;
253 static gint hf_sbc_tlv_t_162_harq_incremental_redundancy_buffer_capability_reserved2 = -1;
254 static gint hf_sbc_tlv_t_163_harq_chase_combining_and_cc_ir_buffer_capability = -1;
255 static gint hf_sbc_tlv_t_163_dl_harq_buffering_capability_for_chase_combining = -1;
256 static gint hf_sbc_tlv_t_163_harq_chase_combining_and_cc_ir_buffer_capability_aggregation_flag_dl = -1;
257 static gint hf_sbc_tlv_t_163_harq_chase_combining_and_cc_ir_buffer_capability_reserved1 = -1;
258 static gint hf_sbc_tlv_t_163_ul_harq_buffering_capability_for_chase_combining = -1;
259 static gint hf_sbc_tlv_t_163_harq_chase_combining_and_cc_ir_buffer_capability_aggregation_flag_ul = -1;
260 static gint hf_sbc_tlv_t_163_harq_chase_combining_and_cc_ir_buffer_capability_reserved2 = -1;
262 static gint hf_sbc_ss_demodulator_mimo_support = -1;
263 static gint hf_sbc_ss_demodulator_mimo_2_ann_stc_matrix_a = -1;
264 static gint hf_sbc_ss_demodulator_mimo_2_ann_stc_matrix_b_vertical = -1;
265 static gint hf_sbc_ss_demodulator_mimo_2_ann_stc_matrix_b_horizontal = -1;
266 static gint hf_sbc_ss_demodulator_mimo_4_ann_stc_matrix_a = -1;
267 static gint hf_sbc_ss_demodulator_mimo_4_ann_stc_matrix_b_vertical = -1;
268 static gint hf_sbc_ss_demodulator_mimo_4_ann_stc_matrix_b_horizontal = -1;
269 static gint hf_sbc_ss_demodulator_mimo_4_ann_stc_matrix_c_vertical = -1;
270 static gint hf_sbc_ss_demodulator_mimo_4_ann_stc_matrix_c_horizontal = -1;
271 static gint hf_sbc_ss_demodulator_mimo_rsvd = -1;
272 static gint hf_sbc_ss_mimo_uplink_support = -1;
273 static gint hf_sbc_ss_mimo_uplink_support_2_ann_sttd = -1;
274 static gint hf_sbc_ss_mimo_uplink_support_2_ann_sm_vertical = -1;
275 static gint hf_sbc_ss_mimo_uplink_support_1_ann_coop_sm = -1;
276 static gint hf_sbc_ss_mimo_uplink_support_rsvd = -1;
278 static gint hf_sbc_power_save_class_types_capability = -1;
279 static gint hf_sbc_power_save_class_types_capability_bit0 = -1;
280 static gint hf_sbc_power_save_class_types_capability_bit1 = -1;
281 static gint hf_sbc_power_save_class_types_capability_bit2 = -1;
282 static gint hf_sbc_power_save_class_types_capability_bits34 = -1;
283 static gint hf_sbc_power_save_class_types_capability_bits567 = -1;
285 static gint hf_sbc_pkm_flow_control = -1;
286 static gint hf_sbc_auth_policy = -1;
287 static gint hf_sbc_privacy_802_16 = -1;
288 static gint hf_sbc_privacy_rsvd = -1;
289 static gint hf_sbc_max_security_associations = -1;
291 static gint hf_sbc_invalid_tlv = -1;
293 static const true_false_string tfs_sbc_bw_alloc_support_duplex =
295 "Full-Duplex",
296 "Half-Duplex"
299 #if 0
300 static const value_string vals_sbc_mac_pdu_fsn[] =
302 {0, "Only 11-bit FSN values are supported"},
303 {1, "Only 3-bit FSN values are supported"},
304 {0, NULL}
306 #endif
308 #if 0
309 static const true_false_string tfs_sbc_mac_pdu_fsn =
311 "Only 3-bit FSN values are supported",
312 "Only 11-bit FSN values are supported"
314 #endif
316 #if 0
317 /* DCD DIUC messages (table 143) */
318 static const value_string diuc_msgs[] =
320 { 0, "Downlink Burst Profile 1" },
321 { 1, "Downlink Burst Profile 2" },
322 { 2, "Downlink Burst Profile 3" },
323 { 3, "Downlink Burst Profile 4" },
324 { 4, "Downlink Burst Profile 5" },
325 { 5, "Downlink Burst Profile 6" },
326 { 6, "Downlink Burst Profile 7" },
327 { 7, "Downlink Burst Profile 8" },
328 { 8, "Downlink Burst Profile 9" },
329 { 9, "Downlink Burst Profile 10" },
330 { 10, "Downlink Burst Profile 11" },
331 { 11, "Downlink Burst Profile 12" },
332 { 12, "Downlink Burst Profile 13" },
333 { 13, "Reserved" },
334 { 14, "Gap" },
335 { 15, "End of DL-MAP" },
336 {0, NULL}
338 #endif
340 #if 0
341 static const value_string vals_sbc_type[] =
343 {0, "CINR metric"},
344 {1, "RSSI metric"},
345 {2, "RTD metric"},
346 {3, "Reserved"},
347 {0, NULL}
349 #endif
351 #if 0
352 static const value_string vals_sbc_function[] =
354 {0, "Reserved"},
355 {1, "Metric of neighbor BS is greater than absolute value"},
356 {2, "Metric of neighbor BS is less than absolute value"},
357 {3, "Metric of neighbor BS is greater than serving BS metric by relative value"},
358 {4, "Metric of neighbor BS is less than serving BS metric by relative value"},
359 {5, "Metric of serving BS greater than absolute value"},
360 {6, "Metric of serving BS less than absolute value"},
361 {7, "Reserved"},
362 {0, NULL}
364 #endif
366 #if 0
367 static const value_string vals_sbc_action[] =
369 {0, "Reserved"},
370 {1, "Respond on trigger with MOB_SCN-REP after the end of each scanning interval"},
371 {2, "Respond on trigger with MOB_MSH-REQ"},
372 {3, "On trigger, MS starts neighbor BS scanning process by sending MOB_SCN-REQ"},
373 {4, "Reserved"},
374 {0, NULL}
376 #endif
378 #if 0
379 static const value_string vals_sbc_power_adjustmnt[] =
381 {0, "Preserve Peak Power"},
382 {1, "Preserve Mean Power"},
383 {0, NULL}
385 #endif
387 #if 0
388 static const true_false_string tfs_sbc_power_adjustment =
390 "Preserve Mean Power",
391 "Preserve Peak Power"
393 #endif
395 #if 0
396 static const value_string vals_reg_rsp_status[] =
398 {0, "OK"},
399 {1, "Message authentication failure"},
400 {0, NULL}
402 #endif
404 #if 0
405 static const value_string vals_sbc_burst_tcs[] =
407 {0, "TCS disabled"},
408 {1, "TCS enabled"},
409 {0, NULL}
411 #endif
413 #if 0
414 static const true_false_string tfs_sbc_burst_tcs =
416 "TCS enabled",
417 "TCS disabled"
419 #endif
421 #if 0
422 static const value_string vals_sbc_frame_duration[] =
424 {0, "2.5"},
425 {1, "4"},
426 {2, "5"},
427 {3, "8"},
428 {4, "10"},
429 {5, "12.5"},
430 {6, "20"},
431 {0, NULL}
433 #endif
435 #if 0
436 static const value_string vals_sbc_mac_version[] =
438 {1, "Conformance with IEEE Std 802.16-2001"},
439 {2, "Conformance with IEEE Std 802.16c-2002 and its predecessors"},
440 {3, "Conformance with IEEE Std 802.16a-2003 and its predecessors"},
441 {4, "Conformance with IEEE Std 802.16-2004"},
442 {5, "Conformance with IEEE Std 802.16-2004 and IEEE Std 802.16e-2005"},
443 {6, "reserved"},
444 {0, NULL}
446 #endif
448 #if 0
449 static const value_string vals_sbc_burst_fec[] =
451 {0, "QPSK (CC) 1/2"},
452 {1, "QPSK (CC) 3/4"},
453 {2, "16-QAM (CC) 1/2"},
454 {3, "16-QAM (CC) 3/4"},
455 {4, "64-QAM (CC) 1/2"},
456 {5, "64-QAM (CC) 2/3"},
457 {6, "64-QAM (CC) 3/4"},
458 {7, "QPSK (BTC) 1/2"},
459 {8, "QPSK (BTC) 3/4 or 2/3"},
460 {9, "16-QAM (BTC) 3/5"},
461 {10, "16-QAM (BTC) 4/5"},
462 {11, "64-QAM (BTC) 2/3 or 5/8"},
463 {12, "64-QAM (BTC) 5/6 or 4/5"},
464 {13, "QPSK (CTC) 1/2"},
465 {14, "Reserved"},
466 {15, "QPSK (CTC) 3/4"},
467 {16, "16-QAM (CTC) 1/2"},
468 {17, "16-QAM (CTC) 3/4"},
469 {18, "64-QAM (CTC) 1/2"},
470 {19, "64-QAM (CTC) 2/3"},
471 {20, "64-QAM (CTC) 3/4"},
472 {21, "64-QAM (CTC) 5/6"},
473 {22, "QPSK (ZT CC) 1/2"},
474 {23, "QPSK (ZT CC) 3/4"},
475 {24, "16-QAM (ZT CC) 1/2"},
476 {25, "16-QAM (ZT CC) 3/4"},
477 {26, "64-QAM (ZT CC) 1/2"},
478 {27, "64-QAM (ZT CC) 2/3"},
479 {28, "64-QAM (ZT CC) 3/4"},
480 {29, "QPSK (LDPC) 1/2"},
481 {30, "QPSK (LDPC) 2/3 A code"},
482 {31, "16-QAM (LDPC) 3/4 A code"},
483 {32, "16-QAM (LDPC) 1/2"},
484 {33, "16-QAM (LDPC) 2/3 A code"},
485 {34, "16-QAM (LDPC) 3/4 A code"},
486 {35, "64-QAM (LDPC) 1/2"},
487 {36, "64-QAM (LDPC) 2/3 A code"},
488 {37, "64-QAM (LDPC) 3/4 A code"},
489 {38, "QPSK (LDPC) 2/3 B code"},
490 {39, "QPSK (LDPC) 3/4 B code"},
491 {40, "16-QAM (LDPC) 2/3 B code"},
492 {41, "16-QAM (LDPC) 3/4 B code"},
493 {42, "64-QAM (LDPC) 2/3 B code"},
494 {43, "64-QAM (LDPC) 3/4 B code"},
495 {44, "QPSK (CC with optional interleaver) 1/2"},
496 {45, "QPSK (CC with optional interleaver) 3/4"},
497 {46, "16-QAM (CC with optional interleaver) 1/2"},
498 {47, "16-QAM (CC optional interleaver) 0%00"},
499 {48, "64-QAM (CC with optional interleaver) 2/3"},
500 {49, "64-QAM (CC with optional interleaver) 3/4"},
501 {50, "QPSK (LDPC) 5/6"},
502 {51, "16-QAM (LDPC) 5/6"},
503 {52, "64-QAM (LDPC) 5/6"},
504 {0, NULL}
506 #endif
508 #if 0
509 static const value_string vals_sbc_permutation_type[] =
511 {0, "PUSC" },
512 {1, "FUSC" },
513 {2, "optional FUSC"},
514 {3, "AMC"},
515 {0, NULL}
517 #endif
519 static const value_string vals_sbc_harq_parameters_set[] =
521 {0, "HARQ set 1"},
522 {1, "HARQ set 2"},
523 {2, "HARQ set 3"},
524 {3, "HARQ set 4"},
525 {4, "HARQ set 5"},
526 {5, "Reserved"},
527 {0, NULL}
530 static const true_false_string tfs_supported =
532 "supported",
533 "not supported"
536 static const true_false_string tfs_yes_no_sbc =
538 "yes",
539 "no"
542 static const value_string vals_sounding_rsp_time_cap_codings[] =
544 {0, "0.5ms" },
545 {1, "0.75ms" },
546 {2, "1ms"},
547 {3, "1.25ms"},
548 {4, "1.5ms"},
549 {5, "min(2, Next Frame)"},
550 {6, "min(5, Next Frame)"},
551 {7, "Next Frame"},
552 {0, NULL}
555 static const value_string vals_sbc_sdma_str[ ] =
557 {0, "no support"},
558 {1, "support SDMA pilot patterns #A and #B"},
559 {2, "support all SDMA pilot patterns"},
560 {3, "reserved"},
561 {0, NULL}
565 static void sbc_tlv_decoder(tlv_info_t* tlv_info, int ett, proto_tree* sbc_tree, packet_info *pinfo, tvbuff_t *tvb, guint offset, guint tlv_offset)
567 proto_item *tlv_item, *ti;
568 proto_tree *tlv_tree;
569 gint tlv_type = get_tlv_type(tlv_info),
570 tlv_len = get_tlv_length(tlv_info),
571 value;
572 gfloat power_bpsk;
573 gfloat power_qpsk;
574 gfloat power_qam16;
575 gfloat power_qam64;
576 gfloat current_power;
578 /* process SBC TLV Encoded information */
579 switch (tlv_type)
581 case SBC_BW_ALLOC_SUPPORT:
582 /* add TLV subtree */
583 tlv_item = add_tlv_subtree(tlv_info, sbc_tree, hf_sbc_bw_alloc_support, tvb, tlv_offset, ENC_BIG_ENDIAN);
584 tlv_tree = proto_item_add_subtree(tlv_item, ett);
585 /* display the detail meanings of the TLV value */
586 proto_tree_add_item(tlv_tree, hf_sbc_bw_alloc_support_rsvd0, tvb, offset, 1, ENC_BIG_ENDIAN);
587 proto_tree_add_item(tlv_tree, hf_sbc_bw_alloc_support_duplex, tvb, offset, 1, ENC_BIG_ENDIAN);
588 proto_tree_add_item(tlv_tree, hf_sbc_bw_alloc_support_rsvd1, tvb, offset, 1, ENC_BIG_ENDIAN);
589 break;
590 case SBC_TRANSITION_GAPS:
591 /* add TLV subtree */
592 tlv_item = add_tlv_subtree(tlv_info, sbc_tree, hf_sbc_transition_gaps, tvb, tlv_offset, ENC_BIG_ENDIAN);
593 tlv_tree = proto_item_add_subtree(tlv_item, ett);
594 /* display the detail meanings of the TLV value */
595 ti = proto_tree_add_item(tlv_tree, hf_sbc_ssttg, tvb, offset, 1, ENC_BIG_ENDIAN);
596 proto_item_append_text(ti, " us (ranges: TDD 0-50; H-FDD 0-100)");
597 ti = proto_tree_add_item(tlv_tree, hf_sbc_ssrtg, tvb, (offset + 1), 1, ENC_BIG_ENDIAN);
598 proto_item_append_text(ti, " us (ranges: TDD 0-50; H-FDD 0-100)");
599 break;
600 case SBC_MAC_PDU:
601 /* add TLV subtree */
602 tlv_item = add_tlv_subtree(tlv_info, sbc_tree, hf_sbc_mac_pdu, tvb, tlv_offset, ENC_BIG_ENDIAN);
603 tlv_tree = proto_item_add_subtree(tlv_item, ett);
604 /* display the detail meanings of the TLV value */
605 proto_tree_add_item(tlv_tree, hf_sbc_mac_pdu_piggybacked, tvb, offset, 1, ENC_BIG_ENDIAN);
606 proto_tree_add_item(tlv_tree, hf_sbc_mac_pdu_fsn, tvb, offset, 1, ENC_BIG_ENDIAN);
607 proto_tree_add_item(tlv_tree, hf_sbc_mac_pdu_rsvd, tvb, offset, 1, ENC_BIG_ENDIAN);
608 break;
609 case SBC_REQ_MAX_TRANSMIT_POWER: /* TODO: This TLV comes up as INVALID in wireshark... why? */
610 /* add TLV subtree */
611 tlv_item = add_tlv_subtree(tlv_info, sbc_tree, hf_sbc_max_transmit_power, tvb, tlv_offset, ENC_BIG_ENDIAN);
612 tlv_tree = proto_item_add_subtree(tlv_item, ett);
613 /* display the detail meanings of the TLV value */
614 power_bpsk = (gfloat)(tvb_get_guint8(tvb, offset) - 128) / 2;
615 power_qpsk = (gfloat)(tvb_get_guint8(tvb, (offset + 1)) - 128) / 2;
616 power_qam16 = (gfloat)(tvb_get_guint8(tvb, (offset + 2)) - 128) / 2;
617 power_qam64 = (gfloat)(tvb_get_guint8(tvb, (offset + 3)) - 128) / 2;
618 proto_tree_add_text(tlv_tree, tvb, offset, 1, "BPSK: %.2f dBm", (gdouble)power_bpsk);
619 proto_tree_add_text(tlv_tree, tvb, (offset + 1), 1, "QPSK: %.2f dBm", (gdouble)power_qpsk);
620 proto_tree_add_text(tlv_tree, tvb, (offset + 2), 1, "QAM16: %.2f dBm", (gdouble)power_qam16);
621 proto_tree_add_text(tlv_tree, tvb, (offset + 3), 1, "QAM64: %.2f dBm", (gdouble)power_qam64);
622 break;
623 case SBC_REQ_CURR_TRANSMITTED_POWER:
624 /* add TLV subtree */
625 tlv_item = add_tlv_subtree(tlv_info, sbc_tree, hf_sbc_curr_transmit_power, tvb, tlv_offset, ENC_BIG_ENDIAN);
626 tlv_tree = proto_item_add_subtree(tlv_item, ett);
627 /* display the detail meanings of the TLV value */
628 value = tvb_get_guint8(tvb, offset);
629 current_power = (gfloat)(value - 128) / 2;
630 proto_tree_add_text(tlv_tree, tvb, offset, 1, "Current Transmitted Power: %.2f dBm (Value: 0x%x)", (gdouble)current_power, value);
631 break;
632 case SBC_SS_FFT_SIZES:
633 /* add TLV subtree */
634 tlv_item = add_tlv_subtree(tlv_info, sbc_tree, hf_sbc_ss_fft_sizes, tvb, tlv_offset, ENC_BIG_ENDIAN);
635 tlv_tree = proto_item_add_subtree(tlv_item, ett);
636 /* display the detail meanings of the TLV value */
637 if (include_cor2_changes)
639 proto_tree_add_item(tlv_tree, hf_sbc_ss_fft_rsvd1, tvb, offset, 1, ENC_BIG_ENDIAN);
640 } else {
641 proto_tree_add_item(tlv_tree, hf_sbc_ss_fft_256, tvb, offset, 1, ENC_BIG_ENDIAN);
643 proto_tree_add_item(tlv_tree, hf_sbc_ss_fft_2048, tvb, offset, 1, ENC_BIG_ENDIAN);
644 proto_tree_add_item(tlv_tree, hf_sbc_ss_fft_128, tvb, offset, 1, ENC_BIG_ENDIAN);
645 proto_tree_add_item(tlv_tree, hf_sbc_ss_fft_512, tvb, offset, 1, ENC_BIG_ENDIAN);
646 proto_tree_add_item(tlv_tree, hf_sbc_ss_fft_1024, tvb, offset, 1, ENC_BIG_ENDIAN);
647 proto_tree_add_item(tlv_tree, hf_sbc_ss_fft_rsvd2, tvb, offset, 1, ENC_BIG_ENDIAN);
648 break;
649 case SBC_SS_DEMODULATOR:
650 /* add TLV subtree */
651 tlv_item = add_tlv_subtree(tlv_info, sbc_tree, hf_sbc_ss_demodulator, tvb, tlv_offset, ENC_NA);
652 tlv_tree = proto_item_add_subtree(tlv_item, ett);
653 /* display the detail meanings of the TLV value */
654 if (tlv_len == 1) /* && (num_dl_harq_chans < 8)) */
656 proto_tree_add_item(tlv_tree, hf_sbc_ss_demodulator_64qam, tvb, offset, 1, ENC_BIG_ENDIAN);
657 proto_tree_add_item(tlv_tree, hf_sbc_ss_demodulator_btc, tvb, offset, 1, ENC_BIG_ENDIAN);
658 proto_tree_add_item(tlv_tree, hf_sbc_ss_demodulator_ctc, tvb, offset, 1, ENC_BIG_ENDIAN);
659 proto_tree_add_item(tlv_tree, hf_sbc_ss_demodulator_stc, tvb, offset, 1, ENC_BIG_ENDIAN);
660 proto_tree_add_item(tlv_tree, hf_sbc_ss_demodulator_cc_with_optional_interleaver, tvb, offset, 1, ENC_BIG_ENDIAN);
661 proto_tree_add_item(tlv_tree, hf_sbc_ss_demodulator_harq_chase, tvb, offset, 1, ENC_BIG_ENDIAN);
662 proto_tree_add_item(tlv_tree, hf_sbc_ss_demodulator_harq_ctc_ir, tvb, offset, 1, ENC_BIG_ENDIAN);
663 proto_tree_add_item(tlv_tree, hf_sbc_ss_demodulator_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
665 else
667 proto_tree_add_item(tlv_tree, hf_sbc_ss_demodulator_64qam_2, tvb, offset, 2, ENC_BIG_ENDIAN);
668 proto_tree_add_item(tlv_tree, hf_sbc_ss_demodulator_btc_2, tvb, offset, 2, ENC_BIG_ENDIAN);
669 proto_tree_add_item(tlv_tree, hf_sbc_ss_demodulator_ctc_2, tvb, offset, 2, ENC_BIG_ENDIAN);
670 proto_tree_add_item(tlv_tree, hf_sbc_ss_demodulator_stc_2, tvb, offset, 2, ENC_BIG_ENDIAN);
671 proto_tree_add_item(tlv_tree, hf_sbc_ss_demodulator_cc_with_optional_interleaver_2, tvb, offset, 2, ENC_BIG_ENDIAN);
672 proto_tree_add_item(tlv_tree, hf_sbc_ss_demodulator_harq_chase_2, tvb, offset, 2, ENC_BIG_ENDIAN);
673 proto_tree_add_item(tlv_tree, hf_sbc_ss_demodulator_harq_ctc_ir_2, tvb, offset, 2, ENC_BIG_ENDIAN);
674 proto_tree_add_item(tlv_tree, hf_sbc_ss_demodulator_reserved_2, tvb, offset, 2, ENC_BIG_ENDIAN);
675 proto_tree_add_item(tlv_tree, hf_sbc_ss_demodulator_harq_cc_ir_2, tvb, offset , 2, ENC_BIG_ENDIAN);
676 proto_tree_add_item(tlv_tree, hf_sbc_ss_demodulator_ldpc_2, tvb, offset, 2, ENC_BIG_ENDIAN);
677 proto_tree_add_item(tlv_tree, hf_sbc_ss_demodulator_dedicated_pilots_2, tvb, offset, 2, ENC_BIG_ENDIAN);
678 proto_tree_add_item(tlv_tree, hf_sbc_ss_demodulator_reserved1_2, tvb, offset, 2, ENC_BIG_ENDIAN);
680 break;
681 case SBC_SS_MODULATOR:
682 /* add TLV subtree */
683 tlv_item = add_tlv_subtree(tlv_info, sbc_tree, hf_sbc_ss_modulator, tvb, tlv_offset, ENC_NA);
684 tlv_tree = proto_item_add_subtree(tlv_item, ett);
685 /* display the detail meanings of the TLV value */
686 proto_tree_add_item(tlv_tree, hf_sbc_ss_modulator_64qam, tvb, offset, 1, ENC_BIG_ENDIAN);
687 proto_tree_add_item(tlv_tree, hf_sbc_ss_modulator_btc, tvb, offset, 1, ENC_BIG_ENDIAN);
688 proto_tree_add_item(tlv_tree, hf_sbc_ss_modulator_ctc, tvb, offset, 1, ENC_BIG_ENDIAN);
689 proto_tree_add_item(tlv_tree, hf_sbc_ss_modulator_stc, tvb, offset, 1, ENC_BIG_ENDIAN);
690 proto_tree_add_item(tlv_tree, hf_sbc_ss_modulator_harq_chase, tvb, offset, 1, ENC_BIG_ENDIAN);
691 proto_tree_add_item(tlv_tree, hf_sbc_ss_modulator_ctc_ir, tvb, offset, 1, ENC_BIG_ENDIAN);
692 proto_tree_add_item(tlv_tree, hf_sbc_ss_modulator_cc_ir, tvb, offset, 1, ENC_BIG_ENDIAN);
693 proto_tree_add_item(tlv_tree, hf_sbc_ss_modulator_ldpc, tvb, offset, 1, ENC_BIG_ENDIAN);
694 break;
695 case SBC_SS_NUM_UL_ARQ_ACK_CHANNEL:
696 /* add TLV subtree */
697 add_tlv_subtree(tlv_info, sbc_tree, hf_sbc_number_ul_arq_ack_channel, tvb, tlv_offset, ENC_BIG_ENDIAN);
698 break;
699 case SBC_SS_NUM_DL_ARQ_ACK_CHANNEL:
700 /* add TLV subtree */
701 add_tlv_subtree(tlv_info, sbc_tree, hf_sbc_number_dl_arq_ack_channel, tvb, tlv_offset, ENC_BIG_ENDIAN);
702 break;
703 case SBC_SS_PERMUTATION_SUPPORT:
704 /* add TLV subtree */
705 tlv_item = add_tlv_subtree(tlv_info, sbc_tree, hf_sbc_ss_permutation_support, tvb, tlv_offset, ENC_BIG_ENDIAN);
706 tlv_tree = proto_item_add_subtree(tlv_item, ett);
707 /* display the detail meanings of the TLV value */
708 proto_tree_add_item(tlv_tree, hf_sbc_ss_optimal_pusc, tvb, offset, 1, ENC_BIG_ENDIAN);
709 proto_tree_add_item(tlv_tree, hf_sbc_ss_optimal_fusc, tvb, offset, 1, ENC_BIG_ENDIAN);
710 proto_tree_add_item(tlv_tree, hf_sbc_ss_amc_1x6, tvb, offset, 1, ENC_BIG_ENDIAN);
711 proto_tree_add_item(tlv_tree, hf_sbc_ss_amc_2x3, tvb, offset, 1, ENC_BIG_ENDIAN);
712 proto_tree_add_item(tlv_tree, hf_sbc_ss_amc_3x2, tvb, offset, 1, ENC_BIG_ENDIAN);
713 proto_tree_add_item(tlv_tree, hf_sbc_ss_amc_with_harq_map, tvb, offset, 1, ENC_BIG_ENDIAN);
714 proto_tree_add_item(tlv_tree, hf_sbc_ss_tusc1_support, tvb, offset, 1, ENC_BIG_ENDIAN);
715 proto_tree_add_item(tlv_tree, hf_sbc_ss_tusc2_support, tvb, offset, 1, ENC_BIG_ENDIAN);
716 break;
717 case SBC_SS_DEMODULATOR_MIMO_SUPPORT:
718 /* add TLV subtree */
719 tlv_item = add_tlv_subtree(tlv_info, sbc_tree, hf_sbc_ss_demodulator_mimo_support, tvb, tlv_offset, ENC_BIG_ENDIAN);
720 tlv_tree = proto_item_add_subtree(tlv_item, ett);
721 /* display the detail meanings of the TLV value */
722 proto_tree_add_item(tlv_tree, hf_sbc_ss_demodulator_mimo_2_ann_stc_matrix_a, tvb, offset, 2, ENC_BIG_ENDIAN);
723 proto_tree_add_item(tlv_tree, hf_sbc_ss_demodulator_mimo_2_ann_stc_matrix_b_vertical, tvb, offset, 2, ENC_BIG_ENDIAN);
724 proto_tree_add_item(tlv_tree, hf_sbc_ss_demodulator_mimo_2_ann_stc_matrix_b_horizontal, tvb, offset, 2, ENC_BIG_ENDIAN);
725 proto_tree_add_item(tlv_tree, hf_sbc_ss_demodulator_mimo_4_ann_stc_matrix_a, tvb, offset, 2, ENC_BIG_ENDIAN);
726 proto_tree_add_item(tlv_tree, hf_sbc_ss_demodulator_mimo_4_ann_stc_matrix_b_vertical, tvb, offset, 2, ENC_BIG_ENDIAN);
727 proto_tree_add_item(tlv_tree, hf_sbc_ss_demodulator_mimo_4_ann_stc_matrix_b_horizontal, tvb, offset, 2, ENC_BIG_ENDIAN);
728 proto_tree_add_item(tlv_tree, hf_sbc_ss_demodulator_mimo_4_ann_stc_matrix_c_vertical, tvb, offset, 2, ENC_BIG_ENDIAN);
729 proto_tree_add_item(tlv_tree, hf_sbc_ss_demodulator_mimo_4_ann_stc_matrix_c_horizontal, tvb, offset, 2, ENC_BIG_ENDIAN);
730 proto_tree_add_item(tlv_tree, hf_sbc_ss_demodulator_mimo_rsvd, tvb, offset, 2, ENC_BIG_ENDIAN);
731 break;
732 case SBC_SS_MIMO_UPLINK_SUPPORT:
733 /* add TLV subtree */
734 tlv_item = add_tlv_subtree(tlv_info, sbc_tree, hf_sbc_ss_mimo_uplink_support, tvb, tlv_offset, ENC_BIG_ENDIAN);
735 tlv_tree = proto_item_add_subtree(tlv_item, ett);
736 /* display the detail meanings of the TLV value */
737 proto_tree_add_item(tlv_tree, hf_sbc_ss_mimo_uplink_support_2_ann_sttd, tvb, offset, 1, ENC_BIG_ENDIAN);
738 proto_tree_add_item(tlv_tree, hf_sbc_ss_mimo_uplink_support_2_ann_sm_vertical, tvb, offset, 1, ENC_BIG_ENDIAN);
739 proto_tree_add_item(tlv_tree, hf_sbc_ss_mimo_uplink_support_1_ann_coop_sm, tvb, offset, 1, ENC_BIG_ENDIAN);
740 proto_tree_add_item(tlv_tree, hf_sbc_ss_mimo_uplink_support_rsvd, tvb, offset, 1, ENC_BIG_ENDIAN);
741 break;
742 case SBC_SS_OFDMA_AAS_PRIVATE_MAP_SUPPORT:
743 /* add TLV subtree */
744 tlv_item = add_tlv_subtree(tlv_info, sbc_tree, hf_sbc_ss_ofdma_aas_private, tvb, tlv_offset, ENC_BIG_ENDIAN);
745 tlv_tree = proto_item_add_subtree(tlv_item, ett);
746 /* display the detail meanings of the TLV value */
747 proto_tree_add_item(tlv_tree, hf_sbc_ofdma_aas_harq_map_capability, tvb, offset, 1, ENC_BIG_ENDIAN);
748 proto_tree_add_item(tlv_tree, hf_sbc_ofdma_aas_private_map_support, tvb, offset, 1, ENC_BIG_ENDIAN);
749 proto_tree_add_item(tlv_tree, hf_sbc_ofdma_aas_reduced_private_map_support, tvb, offset, 1, ENC_BIG_ENDIAN);
750 proto_tree_add_item(tlv_tree, hf_sbc_ofdma_aas_private_chain_enable, tvb, offset, 1, ENC_BIG_ENDIAN);
751 proto_tree_add_item(tlv_tree, hf_sbc_ofdma_aas_private_map_dl_frame_offset, tvb, offset, 1, ENC_BIG_ENDIAN);
752 proto_tree_add_item(tlv_tree, hf_sbc_ofdma_aas_private_ul_frame_offset, tvb, offset, 1, ENC_BIG_ENDIAN);
753 proto_tree_add_item(tlv_tree, hf_sbc_ofdma_aas_private_map_concurrency, tvb, offset, 1, ENC_BIG_ENDIAN);
754 break;
755 case SBC_SS_OFDMA_AAS_CAPABILITIES:
756 /* add TLV subtree */
757 tlv_item = add_tlv_subtree(tlv_info, sbc_tree, hf_sbc_ofdma_aas_capabilities, tvb, tlv_offset, ENC_BIG_ENDIAN);
758 tlv_tree = proto_item_add_subtree(tlv_item, ett);
759 /* display the detail meanings of the TLV value */
760 proto_tree_add_item(tlv_tree, hf_sbc_ss_ofdma_aas_zone, tvb, offset, 2, ENC_BIG_ENDIAN);
761 proto_tree_add_item(tlv_tree, hf_sbc_ss_ofdma_aas_diversity_map_scan, tvb, offset, 2, ENC_BIG_ENDIAN);
762 proto_tree_add_item(tlv_tree, hf_sbc_ss_ofdma_aas_fbck_rsp_support, tvb, offset, 2, ENC_BIG_ENDIAN);
763 proto_tree_add_item(tlv_tree, hf_sbc_ss_ofdma_downlink_aas_preamble, tvb, offset, 2, ENC_BIG_ENDIAN);
764 proto_tree_add_item(tlv_tree, hf_sbc_ss_ofdma_uplink_aas_preamble, tvb, offset, 2, ENC_BIG_ENDIAN);
765 proto_tree_add_item(tlv_tree, hf_sbc_ss_ofdma_aas_capabilities_rsvd, tvb, offset, 2, ENC_BIG_ENDIAN);
766 break;
767 case SBC_SS_CINR_MEASUREMENT_CAPABILITY:
768 /* add TLV subtree */
769 tlv_item = add_tlv_subtree(tlv_info, sbc_tree, hf_sbc_ss_cinr_measure_capability, tvb, tlv_offset, ENC_BIG_ENDIAN);
770 tlv_tree = proto_item_add_subtree(tlv_item, ett);
771 /* display the detail meanings of the TLV value */
772 proto_tree_add_item(tlv_tree, hf_sbc_ss_phy_cinr_measurement_preamble, tvb, offset, 1, ENC_BIG_ENDIAN);
773 proto_tree_add_item(tlv_tree, hf_sbc_ss_phy_cinr_measurement_permutation_zone_from_pilot_subcarriers, tvb, offset, 1, ENC_BIG_ENDIAN);
774 proto_tree_add_item(tlv_tree, hf_sbc_ss_phy_cinr_measurement_permutation_zone_from_data_subcarriers, tvb, offset, 1, ENC_BIG_ENDIAN);
775 proto_tree_add_item(tlv_tree, hf_sbc_ss_effective_cinr_measurement_preamble, tvb, offset, 1, ENC_BIG_ENDIAN);
776 proto_tree_add_item(tlv_tree, hf_sbc_ss_effective_cinr_measurement_permutation_zone_from_pilot_subcarriers, tvb, offset, 1, ENC_BIG_ENDIAN);
777 proto_tree_add_item(tlv_tree, hf_sbc_ss_effective_cinr_measurement_permutation_zone_from_data_subcarriers, tvb, offset, 1, ENC_BIG_ENDIAN);
778 proto_tree_add_item(tlv_tree, hf_sbc_ss_support_2_concurrent_cqi_channels,tvb,offset, 1, ENC_BIG_ENDIAN);
779 proto_tree_add_item(tlv_tree, hf_sbc_ss_frequency_selectivity_characterization_report,tvb,offset, 1, ENC_BIG_ENDIAN);
780 break;
781 case SBC_PKM_FLOW_CONTROL:
782 /* add TLV subtree */
783 tlv_item = add_tlv_subtree(tlv_info, sbc_tree, hf_sbc_pkm_flow_control, tvb, tlv_offset, ENC_BIG_ENDIAN);
784 if(tvb_get_guint8(tvb, offset) == 0)
785 proto_item_append_text(tlv_item, " (default - no limit)");
786 break;
787 case SBC_AUTH_POLICY_SUPPORT:
788 /* add TLV subtree */
789 tlv_item = add_tlv_subtree(tlv_info, sbc_tree, hf_sbc_auth_policy, tvb, tlv_offset, ENC_BIG_ENDIAN);
790 tlv_tree = proto_item_add_subtree(tlv_item, ett);
791 /* display the detail meanings of the TLV value */
792 proto_tree_add_item(tlv_tree, hf_sbc_privacy_802_16, tvb, offset, 1, ENC_BIG_ENDIAN);
793 proto_tree_add_item(tlv_tree, hf_sbc_privacy_rsvd, tvb, offset, 1, ENC_BIG_ENDIAN);
794 break;
795 case SBC_MAX_SECURITY_ASSOCIATIONS:
796 add_tlv_subtree(tlv_info, sbc_tree, hf_sbc_max_security_associations, tvb, tlv_offset, ENC_BIG_ENDIAN);
797 break;
798 case SBC_TLV_T_27_EXTENSION_CAPABILITY:
799 /* add TLV subtree */
800 tlv_item = add_tlv_subtree(tlv_info, sbc_tree, hf_sbc_tlv_t_27_extension_capability, tvb, tlv_offset, ENC_BIG_ENDIAN);
801 tlv_tree = proto_item_add_subtree(tlv_item, ett);
802 /* display the detail meanings of the TLV value */
803 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_27_extension_capability_bit0, tvb, offset, 1, ENC_BIG_ENDIAN);
804 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_27_extension_capability_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
805 break;
806 case SBC_TLV_T_28_HO_TRIGGER_METRIC_SUPPORT:
807 /* add TLV subtree */
808 tlv_item = add_tlv_subtree(tlv_info, sbc_tree, hf_sbc_tlv_t_28_ho_trigger_metric_support, tvb, tlv_offset, ENC_BIG_ENDIAN);
809 tlv_tree = proto_item_add_subtree(tlv_item, ett);
810 /* display the detail meanings of the TLV value */
811 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_28_ho_trigger_metric_support_bit0, tvb, offset, 1, ENC_BIG_ENDIAN);
812 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_28_ho_trigger_metric_support_bit1, tvb, offset, 1, ENC_BIG_ENDIAN);
813 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_28_ho_trigger_metric_support_bit2, tvb, offset, 1, ENC_BIG_ENDIAN);
814 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_28_ho_trigger_metric_support_bit3, tvb, offset, 1, ENC_BIG_ENDIAN);
815 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_28_ho_trigger_metric_support_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
816 break;
817 case SBC_TLV_T_167_ASSOCIATION_SUPPORT:
818 /* add TLV subtree */
819 tlv_item = add_tlv_subtree(tlv_info, sbc_tree, hf_sbc_tlv_t_167_association_type_support, tvb, tlv_offset, ENC_BIG_ENDIAN);
820 tlv_tree = proto_item_add_subtree(tlv_item, ett);
821 /* display the detail meanings of the TLV value */
822 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_167_association_type_support_bit0, tvb, offset, 1, ENC_BIG_ENDIAN);
823 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_167_association_type_support_bit1, tvb, offset, 1, ENC_BIG_ENDIAN);
824 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_167_association_type_support_bit2, tvb, offset, 1, ENC_BIG_ENDIAN);
825 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_167_association_type_support_bit3, tvb, offset, 1, ENC_BIG_ENDIAN);
826 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_167_association_type_support_bit4, tvb, offset, 1, ENC_BIG_ENDIAN);
827 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_167_association_type_support_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
828 break;
829 case SBC_TLV_T_170_UPLINK_POWER_CONTROL_SUPPORT:
830 /* add TLV subtree */
831 tlv_item = add_tlv_subtree(tlv_info, sbc_tree, hf_sbc_ofdma_ss_uplink_power_control_support, tvb, tlv_offset, ENC_BIG_ENDIAN);
832 tlv_tree = proto_item_add_subtree(tlv_item, ett);
833 /* display the detail meanings of the TLV value */
834 proto_tree_add_item(tlv_tree, hf_sbc_ofdma_ss_uplink_power_control_support_open_loop, tvb, offset, 1, ENC_BIG_ENDIAN);
835 proto_tree_add_item(tlv_tree, hf_sbc_ofdma_ss_uplink_power_control_support_aas_preamble, tvb, offset, 1, ENC_BIG_ENDIAN);
836 proto_tree_add_item(tlv_tree, hf_sbc_ofdma_ss_uplink_power_control_support_rsvd, tvb, offset, 1, ENC_BIG_ENDIAN);
837 break;
838 case SBC_TLV_T_171_MINIMUM_NUM_OF_FRAMES:
839 /* add TLV subtree */
840 add_tlv_subtree(tlv_info, sbc_tree, hf_sbc_tlv_t_171_minimum_num_of_frames, tvb, tlv_offset, ENC_BIG_ENDIAN);
841 break;
842 case SBC_TLV_T_172:
843 /* add TLV subtree */
844 tlv_item = add_tlv_subtree(tlv_info, sbc_tree, hf_sbc_tlv_t_172, tvb, tlv_offset, ENC_BIG_ENDIAN);
845 tlv_tree = proto_item_add_subtree(tlv_item, ett);
846 /* display the detail meanings of the TLV value */
847 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_172_harq_map_capability, tvb, offset, 1, ENC_BIG_ENDIAN);
848 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_172_extended_harq_ie_capability, tvb, offset, 1, ENC_BIG_ENDIAN);
849 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_172_sub_map_capability_first_zone, tvb, offset, 1, ENC_BIG_ENDIAN);
850 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_172_sub_map_capability_other_zones, tvb, offset, 1, ENC_BIG_ENDIAN);
851 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_172_dl_region_definition_support, tvb, offset, 1, ENC_BIG_ENDIAN);
852 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_172_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
853 break;
854 case SBC_TLV_T_173_UL_CONTROL_CHANNEL_SUPPORT:
855 /* add TLV subtree */
856 tlv_item = add_tlv_subtree(tlv_info, sbc_tree, hf_sbc_tlv_t_173_ul_ctl_channel_support, tvb, tlv_offset, ENC_BIG_ENDIAN);
857 tlv_tree = proto_item_add_subtree(tlv_item, ett);
858 /* display the detail meanings of the TLV value */
859 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_173_3_bit_mimo_fast_feedback, tvb, offset, 1, ENC_BIG_ENDIAN);
860 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_173_enhanced_fast_feedback, tvb, offset, 1, ENC_BIG_ENDIAN);
861 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_173_ul_ack, tvb, offset, 1, ENC_BIG_ENDIAN);
862 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_173_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
863 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_173_uep_fast_feedback, tvb, offset, 1, ENC_BIG_ENDIAN);
864 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_173_measurement_report, tvb, offset, 1, ENC_BIG_ENDIAN);
865 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_173_primary_secondary_fast_feedback, tvb, offset, 1, ENC_BIG_ENDIAN);
866 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_173_diuc_cqi_fast_feedback, tvb, offset, 1, ENC_BIG_ENDIAN);
867 break;
868 case SBC_TLV_T_174_OFDMA_MS_CSIT_CAPABILITY:
869 /* add TLV subtree */
870 tlv_item = add_tlv_subtree(tlv_info, sbc_tree, hf_sbc_tlv_t_174_ofdma_ms_csit_capability, tvb, tlv_offset, ENC_BIG_ENDIAN);
871 tlv_tree = proto_item_add_subtree(tlv_item, ett);
872 /* display the detail meanings of the TLV value */
873 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_174_csit_compatibility_type_a, tvb, offset, 2, ENC_BIG_ENDIAN);
874 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_174_csit_compatibility_type_b, tvb, offset, 2, ENC_BIG_ENDIAN);
875 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_174_power_assignment_capability, tvb, offset, 2, ENC_BIG_ENDIAN);
876 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_174_sounding_rsp_time_capability, tvb, offset, 2, ENC_BIG_ENDIAN);
877 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_174_max_num_simultanous_sounding_instructions, tvb, offset, 2, ENC_BIG_ENDIAN);
878 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_174_ss_csit_type_a_support, tvb, offset, 2, ENC_BIG_ENDIAN);
879 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_174_ss_csit_reserved, tvb, offset, 2, ENC_BIG_ENDIAN);
880 break;
881 case SBC_TLV_T_175_MAX_NUM_BST_PER_FRM_CAPABILITY_HARQ:
882 /* add TLV subtree */
883 tlv_item = add_tlv_subtree(tlv_info, sbc_tree, hf_sbc_tlv_t_175_max_num_bst_per_frm_capability_harq, tvb, tlv_offset, ENC_BIG_ENDIAN);
884 tlv_tree = proto_item_add_subtree(tlv_item, ett);
885 /* display the detail meanings of the TLV value */
886 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_175_max_num_ul_harq_bst, tvb, offset, 1, ENC_BIG_ENDIAN);
887 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_175_max_num_ul_harq_per_frm_include_one_non_harq_bst, tvb, offset, 1, ENC_BIG_ENDIAN);
888 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_175_max_num_dl_harq_bst_per_harq_per_frm, tvb, offset, 1, ENC_BIG_ENDIAN);
889 break;
890 case SBC_TLV_T_176: /* TODO: Get an invalid TLV whenever this TLV is used. Could it be
891 that lengths above 2 cause this problem? */
892 /* add TLV subtree */
893 tlv_item = add_tlv_subtree(tlv_info, sbc_tree, hf_sbc_tlv_t_176, tvb, tlv_offset, ENC_BIG_ENDIAN);
894 tlv_tree = proto_item_add_subtree(tlv_item, ett);
895 /* display the detail meanings of the TLV value */
896 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_176_bit0, tvb, offset, 3, ENC_BIG_ENDIAN);
897 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_176_bit1, tvb, offset, 3, ENC_BIG_ENDIAN);
898 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_176_bit2, tvb, offset, 3, ENC_BIG_ENDIAN);
899 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_176_bit3, tvb, offset, 3, ENC_BIG_ENDIAN);
900 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_176_bit4, tvb, offset, 3, ENC_BIG_ENDIAN);
901 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_176_bit5, tvb, offset, 3, ENC_BIG_ENDIAN);
902 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_176_bit6, tvb, offset, 3, ENC_BIG_ENDIAN);
903 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_176_bit7, tvb, offset, 3, ENC_BIG_ENDIAN);
904 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_176_bit8, tvb, offset, 3, ENC_BIG_ENDIAN);
905 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_176_bit9, tvb, offset, 3, ENC_BIG_ENDIAN);
906 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_176_bit10, tvb, offset, 3, ENC_BIG_ENDIAN);
907 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_176_bit11, tvb, offset, 3, ENC_BIG_ENDIAN);
908 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_176_bit12, tvb, offset, 3, ENC_BIG_ENDIAN);
909 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_176_bit13, tvb, offset, 3, ENC_BIG_ENDIAN);
910 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_176_bit14, tvb, offset, 3, ENC_BIG_ENDIAN);
911 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_176_bit15, tvb, offset, 3, ENC_BIG_ENDIAN);
912 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_176_bit16, tvb, offset, 3, ENC_BIG_ENDIAN);
913 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_176_bit17, tvb, offset, 3, ENC_BIG_ENDIAN);
914 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_176_bit18, tvb, offset, 3, ENC_BIG_ENDIAN);
915 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_176_bit19, tvb, offset, 3, ENC_BIG_ENDIAN);
916 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_176_reserved, tvb, offset, 3, ENC_BIG_ENDIAN);
917 break;
918 case SBC_TLV_T_177_OFDMA_SS_MODULATOR_FOR_MIMO_SUPPORT:
919 /* add TLV subtree */
920 tlv_item = add_tlv_subtree(tlv_info, sbc_tree, hf_sbc_tlv_t_177_ofdma_ss_modulator_for_mimo_support, tvb, tlv_offset, ENC_BIG_ENDIAN);
921 tlv_tree = proto_item_add_subtree(tlv_item, ett);
922 /* display the detail meanings of the TLV value */
923 if (include_cor2_changes)
925 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_177_stc_matrix_a, tvb, offset, 1, ENC_BIG_ENDIAN);
926 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_177_stc_matrix_b_vertical, tvb, offset, 1, ENC_BIG_ENDIAN);
927 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_177_stc_matrix_b_horizontal, tvb, offset, 1, ENC_BIG_ENDIAN);
928 } else {
929 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_177_two_transmit_antennas, tvb, offset, 1, ENC_BIG_ENDIAN);
930 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_177_capable_of_transmit_diversity, tvb, offset, 1, ENC_BIG_ENDIAN);
931 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_177_capable_of_spacial_multiplexing, tvb, offset, 1, ENC_BIG_ENDIAN);
933 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_177_beamforming, tvb, offset, 1, ENC_BIG_ENDIAN);
934 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_177_adaptive_rate_ctl, tvb, offset, 1, ENC_BIG_ENDIAN);
935 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_177_single_antenna, tvb, offset, 1, ENC_BIG_ENDIAN);
936 if (include_cor2_changes)
938 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_177_collaborative_sm_with_one_antenna, tvb, offset, 1, ENC_BIG_ENDIAN);
939 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_177_collaborative_sm_with_two_antennas, tvb, offset, 1, ENC_BIG_ENDIAN);
940 } else {
941 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_177_capable_of_two_antenna, tvb, offset, 1, ENC_BIG_ENDIAN);
942 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_177_rsvd, tvb, offset, 1, ENC_BIG_ENDIAN);
944 break;
945 case SBC_TLV_T_178_SDMA_PILOT_CAPABILITY:
946 /* add TLV subtree */
947 tlv_item = add_tlv_subtree(tlv_info, sbc_tree, hf_sbc_tlv_t_178_sdma_pilot_capability, tvb, tlv_offset, ENC_BIG_ENDIAN);
948 tlv_tree = proto_item_add_subtree(tlv_item, ett);
949 /* display the detail meanings of the TLV value */
950 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_178_sdma_pilot_pattern_support_for_amc_zone, tvb, offset, 1, ENC_BIG_ENDIAN);
951 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_178_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
952 break;
953 case SBC_TLV_T_179_OFDMA_MULTIPLE_DL_BURST_PROFILE_CAPABILITY:
954 /* add TLV subtree */
955 tlv_item = add_tlv_subtree(tlv_info, sbc_tree, hf_sbc_tlv_t_179_ofdma_multiple_dl_burst_profile_support, tvb, tlv_offset, ENC_BIG_ENDIAN);
956 tlv_tree = proto_item_add_subtree(tlv_item, ett);
957 /* display the detail meanings of the TLV value */
958 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_179_dl_bst_profile_for_multiple_fec, tvb, offset, 1, ENC_BIG_ENDIAN);
959 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_179_ul_bst_profile_for_multiple_fec, tvb, offset, 1, ENC_BIG_ENDIAN);
960 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_179_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
961 break;
962 case SBC_TLV_T_204_OFDMA_PARAMETERS_SETS:
963 if (include_cor2_changes)
965 /* add TLV subtree */
966 tlv_item = add_tlv_subtree(tlv_info, sbc_tree, hf_sbc_tlv_t_204_ofdma_parameters_sets, tvb, tlv_offset, ENC_BIG_ENDIAN);
967 tlv_tree = proto_item_add_subtree(tlv_item, ett);
968 /* display the detail meanings of the TLV value */
969 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_204_ofdma_parameters_sets_phy_set_a, tvb, offset, 1, ENC_BIG_ENDIAN);
970 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_204_ofdma_parameters_sets_phy_set_b, tvb, offset, 1, ENC_BIG_ENDIAN);
971 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_204_ofdma_parameters_sets_harq_parameters_set, tvb, offset, 1, ENC_BIG_ENDIAN);
972 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_204_ofdma_parameters_sets_mac_set_a, tvb, offset, 1, ENC_BIG_ENDIAN);
973 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_204_ofdma_parameters_sets_mac_set_b, tvb, offset, 1, ENC_BIG_ENDIAN);
974 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_204_ofdma_parameters_sets_reserved, tvb, offset, 1, ENC_BIG_ENDIAN);
976 break;
977 case SBC_TLV_T_162_HARQ_INCREMENTAL_REDUNDANCY_BUFFER_CAPABILITY:
978 /* add TLV subtree */
979 tlv_item = add_tlv_subtree(tlv_info, sbc_tree, hf_sbc_tlv_t_162_harq_incremental_redundancy_buffer_capability, tvb, tlv_offset, ENC_BIG_ENDIAN);
980 tlv_tree = proto_item_add_subtree(tlv_item, ett);
981 /* display the detail meanings of the TLV value */
982 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_162_harq_incremental_redundancy_buffer_capability_NEP, tvb, offset, 2, ENC_BIG_ENDIAN);
983 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_162_harq_incremental_redundancy_buffer_capability_aggregation_flag_for_dl, tvb, offset, 2, ENC_BIG_ENDIAN);
984 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_162_harq_incremental_redundancy_buffer_capability_reserved1, tvb, offset, 2, ENC_BIG_ENDIAN);
985 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_162_ul_harq_incremental_redundancy_buffer_capability_NEP, tvb, offset, 2, ENC_BIG_ENDIAN);
986 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_162_harq_incremental_redundancy_buffer_capability_aggregation_flag_for_ul, tvb, offset, 2, ENC_BIG_ENDIAN);
987 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_162_harq_incremental_redundancy_buffer_capability_reserved2, tvb, offset, 2, ENC_BIG_ENDIAN);
988 break;
989 case SBC_TLV_T_163_HARQ_CHASE_COMBINING_AND_CC_IR_BUFFER_CAPABILITY:
990 /* add TLV subtree */
991 tlv_item = add_tlv_subtree(tlv_info, sbc_tree, hf_sbc_tlv_t_163_harq_chase_combining_and_cc_ir_buffer_capability, tvb, tlv_offset, ENC_BIG_ENDIAN);
992 tlv_tree = proto_item_add_subtree(tlv_item, ett);
993 /* display the detail meanings of the TLV value */
994 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_163_dl_harq_buffering_capability_for_chase_combining, tvb, offset, 2, ENC_BIG_ENDIAN);
995 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_163_harq_chase_combining_and_cc_ir_buffer_capability_aggregation_flag_dl, tvb, offset, 2, ENC_BIG_ENDIAN);
996 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_163_harq_chase_combining_and_cc_ir_buffer_capability_reserved1, tvb, offset, 2, ENC_BIG_ENDIAN);
997 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_163_ul_harq_buffering_capability_for_chase_combining, tvb, offset, 2, ENC_BIG_ENDIAN);
998 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_163_harq_chase_combining_and_cc_ir_buffer_capability_aggregation_flag_ul, tvb, offset, 2, ENC_BIG_ENDIAN);
999 proto_tree_add_item(tlv_tree, hf_sbc_tlv_t_163_harq_chase_combining_and_cc_ir_buffer_capability_reserved2, tvb, offset, 2, ENC_BIG_ENDIAN);
1000 break;
1001 case PKM_ATTR_SECURITY_NEGOTIATION_PARAMETERS:
1002 /* display Security Negotiation Parameters Title */
1003 /* add Security Negotiation Parameters subtree */
1004 tlv_tree = add_protocol_subtree(tlv_info, ett, sbc_tree, proto_mac_mgmt_msg_sbc_decoder, tvb, tlv_offset, tlv_len, "Security Negotiation Parameters");
1005 /* call the Security Negotiation Parameters decoder */
1006 wimax_security_negotiation_parameters_decoder(tvb_new_subset_length(tvb, offset, tlv_len), pinfo, tlv_tree);
1007 break;
1008 case SBC_TLV_T_26_POWER_SAVE_CLASS_TYPES_CAPABILITY:
1009 /* add TLV subtree */
1010 tlv_item = add_tlv_subtree(tlv_info, sbc_tree, hf_sbc_power_save_class_types_capability, tvb, tlv_offset, ENC_BIG_ENDIAN);
1011 tlv_tree = proto_item_add_subtree(tlv_item, ett);
1012 /* display the detail meanings of the TLV value */
1013 proto_tree_add_item(tlv_tree, hf_sbc_power_save_class_types_capability_bit0, tvb, offset, 1, ENC_BIG_ENDIAN);
1014 proto_tree_add_item(tlv_tree, hf_sbc_power_save_class_types_capability_bit1, tvb, offset, 1, ENC_BIG_ENDIAN);
1015 proto_tree_add_item(tlv_tree, hf_sbc_power_save_class_types_capability_bit2, tvb, offset, 1, ENC_BIG_ENDIAN);
1016 proto_tree_add_item(tlv_tree, hf_sbc_power_save_class_types_capability_bits34, tvb, offset, 1, ENC_BIG_ENDIAN);
1017 proto_tree_add_item(tlv_tree, hf_sbc_power_save_class_types_capability_bits567, tvb, offset, 1, ENC_BIG_ENDIAN);
1018 break;
1019 default:
1020 /* add TLV subtree */
1021 add_tlv_subtree(tlv_info, sbc_tree, hf_sbc_unknown_type, tvb, tlv_offset, ENC_NA);
1022 break;
1026 /* Wimax Mac SBC-REQ Message Dissector */
1027 static void dissect_mac_mgmt_msg_sbc_req_decoder(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
1029 guint offset = 0;
1030 guint tvb_len;
1031 gint tlv_type, tlv_len, tlv_value_offset;
1032 proto_item *sbc_item;
1033 proto_tree *sbc_tree;
1034 tlv_info_t tlv_info;
1036 { /* we are being asked for details */
1037 /* Get the tvb reported length */
1038 tvb_len = tvb_reported_length(tvb);
1039 /* display MAC payload type SBC-REQ */
1040 sbc_item = proto_tree_add_protocol_format(tree, proto_mac_mgmt_msg_sbc_decoder, tvb, offset, -1, "SS Basic Capability Request (SBC-REQ)");
1041 /* add MAC SBC subtree */
1042 sbc_tree = proto_item_add_subtree(sbc_item, ett_mac_mgmt_msg_sbc_decoder);
1043 /* Decode and display the SS Basic Capability Request (SBC-REQ) */
1044 /* process the SBC TLVs */
1045 while(offset < tvb_len)
1047 /* get the TLV information */
1048 init_tlv_info(&tlv_info, tvb, offset);
1049 /* get the TLV type */
1050 tlv_type = get_tlv_type(&tlv_info);
1051 /* get the TLV length */
1052 tlv_len = get_tlv_length(&tlv_info);
1053 if (tlv_type == -1 || tlv_len > MAX_TLV_LEN || tlv_len < 1)
1054 { /* invalid tlv info */
1055 col_append_sep_str(pinfo->cinfo, COL_INFO, NULL, "SBC-REQ TLV error");
1056 proto_tree_add_item(sbc_tree, hf_sbc_invalid_tlv, tvb, offset, (tvb_len - offset), ENC_NA);
1057 break;
1059 if (tlv_type == 0)
1060 { /* invalid tlv type */
1061 col_append_sep_str(pinfo->cinfo, COL_INFO, NULL, "Invalid SBC TLV type");
1062 proto_tree_add_item(sbc_tree, hf_sbc_unknown_type, tvb, offset, 1, ENC_NA);
1063 offset++;
1064 continue;
1066 /* get the TLV value offset */
1067 tlv_value_offset = get_tlv_value_offset(&tlv_info);
1068 #ifdef DEBUG /* for debug only */
1069 proto_tree_add_protocol_format(sbc_tree, proto_mac_mgmt_msg_sbc_decoder, tvb, offset, (tlv_len + tlv_value_offset), "SBC-REQ Type: %u (%u bytes, offset=%u, tlv_len=%u, tvb_len=%u)", tlv_type, (tlv_len + tlv_value_offset), offset, tlv_len, tvb_len);
1070 #endif
1071 /* process SBC TLV Encoded information */
1072 sbc_tlv_decoder(&tlv_info, ett_sbc_req_tlv_subtree, sbc_tree, pinfo, tvb, offset+tlv_value_offset, offset);
1074 offset += (tlv_len+tlv_value_offset);
1075 } /* end of TLV process while loop */
1079 /* Wimax Mac SBC-RSP Message Dissector */
1080 static void dissect_mac_mgmt_msg_sbc_rsp_decoder(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
1082 guint offset = 0;
1083 guint tvb_len;
1084 gint tlv_type, tlv_len, tlv_value_offset;
1085 proto_item *sbc_item;
1086 proto_tree *sbc_tree;
1087 tlv_info_t tlv_info;
1089 { /* we are being asked for details */
1090 /* Get the tvb reported length */
1091 tvb_len = tvb_reported_length(tvb);
1092 /* display MAC payload type SBC-RSP */
1093 sbc_item = proto_tree_add_protocol_format(tree, proto_mac_mgmt_msg_sbc_decoder, tvb, offset, -1, "SS Basic Capability Response (SBC-RSP)");
1094 /* add MAC SBC subtree */
1095 sbc_tree = proto_item_add_subtree(sbc_item, ett_mac_mgmt_msg_sbc_decoder);
1096 /* Decode and display the SS Basic Capability Response (SBC-RSP) */
1097 /* process the SBC TLVs */
1098 while(offset < tvb_len)
1100 /* get the TLV information */
1101 init_tlv_info(&tlv_info, tvb, offset);
1102 /* get the TLV type */
1103 tlv_type = get_tlv_type(&tlv_info);
1104 /* get the TLV length */
1105 tlv_len = get_tlv_length(&tlv_info);
1106 if (tlv_type == -1 || tlv_len > MAX_TLV_LEN || tlv_len < 1)
1107 { /* invalid tlv info */
1108 col_append_sep_str(pinfo->cinfo, COL_INFO, NULL, "SBC-RSP TLV error");
1109 proto_tree_add_item(sbc_tree, hf_sbc_invalid_tlv, tvb, offset, (tvb_len - offset), ENC_NA);
1110 break;
1112 if (tlv_type == 0)
1113 { /* invalid tlv type */
1114 col_append_sep_str(pinfo->cinfo, COL_INFO, NULL, "Invalid SBC TLV type");
1115 proto_tree_add_item(sbc_tree, hf_sbc_unknown_type, tvb, offset, 1, ENC_NA);
1116 offset++;
1117 continue;
1119 /* get the TLV value offset */
1120 tlv_value_offset = get_tlv_value_offset(&tlv_info);
1121 #ifdef DEBUG /* for debug only */
1122 proto_tree_add_protocol_format(sbc_tree, proto_mac_mgmt_msg_sbc_decoder, tvb, offset, (tlv_len + tlv_value_offset), "SBC-RSP Type: %u (%u bytes, offset=%u, tlv_len=%u, tvb_len=%u)", tlv_type, (tlv_len + tlv_value_offset), offset, tlv_len, tvb_len);
1123 #endif
1125 /* process SBC TLV Encoded information */
1126 sbc_tlv_decoder(&tlv_info, ett_sbc_rsp_tlv_subtree, sbc_tree, pinfo, tvb, offset+tlv_value_offset, offset);
1128 offset += (tlv_len+tlv_value_offset);
1129 } /* end of TLV process while loop */
1133 /* Register Wimax Mac SBC-REQ/RSP Messages Dissectors */
1134 void proto_register_mac_mgmt_msg_sbc(void)
1136 /* SBC display */
1137 static hf_register_info hf_sbc[] =
1139 { /* 11.8.8 */
1140 &hf_sbc_tlv_t_167_association_type_support,
1142 "Association Type Support", "wmx.sbc.association_type_support",
1143 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL
1147 &hf_sbc_tlv_t_167_association_type_support_bit0,
1149 "Scanning Without Association: association not supported", "wmx.sbc.association_type_support.bit0",
1150 FT_BOOLEAN, 8, TFS(&tfs_yes_no_sbc), 0x1, NULL, HFILL
1154 &hf_sbc_tlv_t_167_association_type_support_bit1,
1156 "Association Level 0: scanning or association without coordination", "wmx.sbc.association_type_support.bit1",
1157 FT_BOOLEAN, 8, TFS(&tfs_yes_no_sbc), 0x2, NULL, HFILL
1161 &hf_sbc_tlv_t_167_association_type_support_bit2,
1163 "Association Level 1: association with coordination", "wmx.sbc.association_type_support.bit2",
1164 FT_BOOLEAN, 8, TFS(&tfs_yes_no_sbc), 0x4, NULL, HFILL
1168 &hf_sbc_tlv_t_167_association_type_support_bit3,
1170 "Association Level 2: network assisted association", "wmx.sbc.association_type_support.bit3",
1171 FT_BOOLEAN, 8, TFS(&tfs_yes_no_sbc), 0x8, NULL, HFILL
1175 &hf_sbc_tlv_t_167_association_type_support_bit4,
1177 "Desired Association Support", "wmx.sbc.association_type_support.bit4",
1178 FT_BOOLEAN, 8, TFS(&tfs_yes_no_sbc), 0x10, NULL, HFILL
1182 &hf_sbc_tlv_t_167_association_type_support_reserved,
1184 "Reserved", "wmx.sbc.association_type_support.reserved",
1185 FT_UINT8, BASE_HEX, NULL, 0xE0, NULL, HFILL
1188 { /* 11.7.8.7 */
1189 &hf_sbc_auth_policy,
1191 "Authorization Policy Support", "wmx.sbc.auth_policy",
1192 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL
1196 &hf_sbc_privacy_802_16,
1198 "IEEE 802.16 Privacy", "wmx.sbc.auth_policy.802_16",
1199 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x1, NULL, HFILL
1203 &hf_sbc_privacy_rsvd,
1205 "Reserved", "wmx.sbc.auth_policy.rsvd",
1206 FT_UINT8, BASE_HEX, NULL, 0xFE, NULL, HFILL
1209 { /* 11.8.1 */
1210 &hf_sbc_bw_alloc_support,
1212 "Bandwidth Allocation Support", "wmx.sbc.bw_alloc_support",
1213 FT_UINT8, BASE_HEX, NULL, 0x00, NULL, HFILL
1217 &hf_sbc_bw_alloc_support_duplex,
1219 "Duplex", "wmx.sbc.bw_alloc_support.duplex",
1220 FT_BOOLEAN, 8, TFS(&tfs_sbc_bw_alloc_support_duplex), 0x2, NULL, HFILL
1224 &hf_sbc_bw_alloc_support_rsvd0,
1226 "Reserved", "wmx.sbc.bw_alloc_support.rsvd0",
1227 FT_UINT8, BASE_HEX, NULL, 0x1, NULL, HFILL
1231 &hf_sbc_bw_alloc_support_rsvd1,
1233 "Reserved", "wmx.sbc.bw_alloc_support.rsvd1",
1234 FT_UINT8, BASE_HEX, NULL, 0xFC, NULL, HFILL
1238 &hf_sbc_curr_transmit_power,
1240 "Current transmitted power", "wmx.sbc.curr_transmit_power",
1241 FT_UINT8, BASE_HEX, NULL, 0x00, NULL, HFILL
1245 &hf_sbc_ss_effective_cinr_measurement_preamble,
1247 "Effective CINR Measurement For A Permutation Zone From Preamble", "wmx.sbc.effective_cinr_measure_permutation_zone_preamble",
1248 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x8, NULL, HFILL
1252 &hf_sbc_ss_effective_cinr_measurement_permutation_zone_from_pilot_subcarriers,
1254 "Effective CINR Measurement For A Permutation Zone From Pilot Subcarriers", "wmx.sbc.effective_cinr_measure_permutation_zone.pilot_subcarriers",
1255 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x10, NULL, HFILL
1259 &hf_sbc_ss_effective_cinr_measurement_permutation_zone_from_data_subcarriers,
1261 "Effective CINR Measurement For A Permutation Zone From Data Subcarriers", "wmx.sbc.effective_cinr_measure_permutation_zone.data_subcarriers",
1262 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x20, NULL, HFILL
1265 { /* 11.8.6 */
1266 &hf_sbc_tlv_t_27_extension_capability,
1268 "Extension Capability", "wmx.sbc.extension_capability",
1269 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL
1273 &hf_sbc_tlv_t_27_extension_capability_bit0,
1275 "Supported Extended Subheader Format", "wmx.sbc.extension_capability.bit0",
1276 FT_BOOLEAN, 8, TFS(&tfs_yes_no_sbc), 0x1, NULL, HFILL
1280 &hf_sbc_tlv_t_27_extension_capability_reserved,
1282 "Reserved", "wmx.sbc.extension_capability.reserved",
1283 FT_UINT8, BASE_HEX, NULL, 0xFE, NULL, HFILL
1287 &hf_sbc_ss_frequency_selectivity_characterization_report,
1289 "Frequency Selectivity Characterization Report", "wmx.sbc.frequency_selectivity_characterization_report",
1290 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x80, NULL, HFILL
1293 { /* 11.8.3.7.19.2 */
1294 &hf_sbc_tlv_t_163_harq_chase_combining_and_cc_ir_buffer_capability,
1296 "HARQ Chase Combining And CC-IR Buffer Capability", "wmx.sbc.harq_chase_combining_and_cc_ir_buffer_capability",
1297 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL
1301 &hf_sbc_tlv_t_163_harq_chase_combining_and_cc_ir_buffer_capability_aggregation_flag_dl,
1303 "Aggregation Flag For DL", "wmx.sbc.harq_chase_combining_and_cc_ir_buffer_capability.aggregation_flag_dl",
1304 FT_UINT16, BASE_HEX, NULL, 0x40, NULL, HFILL
1308 &hf_sbc_tlv_t_163_harq_chase_combining_and_cc_ir_buffer_capability_aggregation_flag_ul,
1310 "Aggregation Flag for UL", "wmx.sbc.harq_chase_combining_and_cc_ir_buffer_capability.aggregation_flag_ul",
1311 FT_UINT16, BASE_HEX, NULL, 0x4000, NULL, HFILL
1315 &hf_sbc_tlv_t_163_dl_harq_buffering_capability_for_chase_combining,
1317 "Downlink HARQ Buffering Capability For Chase Combining (K)", "wmx.sbc.harq_chase_combining_and_cc_ir_buffer_capability.dl_harq_buffering_capability_for_chase_combining",
1318 FT_UINT16, BASE_HEX, NULL, 0x3F, NULL, HFILL
1322 &hf_sbc_tlv_t_163_harq_chase_combining_and_cc_ir_buffer_capability_reserved1,
1324 "Reserved", "wmx.sbc.harq_chase_combining_and_cc_ir_buffer_capability.reserved1",
1325 FT_UINT16, BASE_HEX, NULL, 0x80, NULL, HFILL
1329 &hf_sbc_tlv_t_163_harq_chase_combining_and_cc_ir_buffer_capability_reserved2,
1331 "Reserved", "wmx.sbc.harq_chase_combining_and_cc_ir_buffer_capability.reserved2",
1332 FT_UINT16, BASE_HEX, NULL, 0x8000, NULL, HFILL
1336 &hf_sbc_tlv_t_163_ul_harq_buffering_capability_for_chase_combining,
1338 "Uplink HARQ buffering capability for chase combining (K)", "wmx.sbc.harq_chase_combining_and_cc_ir_buffer_capability.ul_harq_buffering_capability_for_chase_combining",
1339 FT_UINT16, BASE_HEX, NULL, 0x3F00, NULL, HFILL
1342 { /* 11.8.3.7.19.1 */
1343 &hf_sbc_tlv_t_162_harq_incremental_redundancy_buffer_capability,
1345 "HARQ Incremental Buffer Capability", "wmx.sbc.harq_incremental_redundancy_buffer_capability",
1346 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL
1350 &hf_sbc_tlv_t_162_harq_incremental_redundancy_buffer_capability_aggregation_flag_for_dl,
1352 "Aggregation Flag for DL", "wmx.sbc.harq_incremental_redundancy_buffer_capability.aggregation_flag_for_dl",
1353 FT_UINT16, BASE_HEX, NULL, 0x10, NULL, HFILL
1357 &hf_sbc_tlv_t_162_harq_incremental_redundancy_buffer_capability_aggregation_flag_for_ul,
1359 "Aggregation Flag For UL", "wmx.sbc.harq_incremental_redundancy_buffer_capability.aggregation_flag_for_ul",
1360 FT_UINT16, BASE_HEX, NULL, 0x1000, NULL, HFILL
1364 &hf_sbc_tlv_t_162_harq_incremental_redundancy_buffer_capability_NEP,
1366 "NEP Value Indicating Downlink HARQ Buffering Capability For Incremental Redundancy CTC", "wmx.sbc.harq_incremental_redundancy_buffer_capability.dl_incremental_redundancy_ctc",
1367 FT_UINT16, BASE_HEX, NULL, 0xF, NULL, HFILL
1371 &hf_sbc_tlv_t_162_harq_incremental_redundancy_buffer_capability_reserved1,
1373 "Reserved", "wmx.sbc.harq_incremental_redundancy_buffer_capability.reserved",
1374 FT_UINT16, BASE_HEX, NULL, 0xE0, NULL, HFILL
1378 &hf_sbc_tlv_t_162_harq_incremental_redundancy_buffer_capability_reserved2,
1380 "Reserved", "wmx.sbc.harq_incremental_redundancy_buffer_capability.reserved2",
1381 FT_UINT16, BASE_HEX, NULL, 0xE000, NULL, HFILL
1385 &hf_sbc_tlv_t_162_ul_harq_incremental_redundancy_buffer_capability_NEP,
1387 "NEP Value Indicating Uplink HARQ Buffering Capability For Incremental Redundancy CTC", "wmx.sbc.harq_incremental_redundancy_buffer_capability.ul_incremental_redundancy_ctc",
1388 FT_UINT16,BASE_HEX, NULL, 0xF00, NULL, HFILL
1392 &hf_sbc_ofdma_aas_harq_map_capability,
1394 "H-ARQ MAP Capability", "wmx.sbc.harq_map_capability",
1395 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x1, NULL, HFILL
1398 { /* 11.8.7 */
1399 &hf_sbc_tlv_t_28_ho_trigger_metric_support,
1401 "HO Trigger Metric Support", "wmx.sbc.ho_trigger_metric_support",
1402 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL
1406 &hf_sbc_tlv_t_28_ho_trigger_metric_support_bit0,
1408 "BS CINR Mean", "wmx.sbc.ho_trigger_metric_support.bit0",
1409 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x1, NULL, HFILL
1413 &hf_sbc_tlv_t_28_ho_trigger_metric_support_bit1,
1415 "BS RSSI Mean", "wmx.sbc.ho_trigger_metric_support.bit1",
1416 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x2, NULL, HFILL
1420 &hf_sbc_tlv_t_28_ho_trigger_metric_support_bit2,
1422 "BS Relative Delay", "wmx.sbc.ho_trigger_metric_support.bit2",
1423 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x4, NULL, HFILL
1427 &hf_sbc_tlv_t_28_ho_trigger_metric_support_bit3,
1429 "BS RTD", "wmx.sbc.ho_trigger_metric_support.bit3",
1430 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x8, NULL, HFILL
1434 &hf_sbc_tlv_t_28_ho_trigger_metric_support_reserved,
1436 "Reserved", "wmx.sbc.ho_trigger_metric_support.reserved",
1437 FT_UINT8, BASE_HEX, NULL, 0xF0, NULL, HFILL
1441 &hf_sbc_invalid_tlv,
1443 "Invalid TLV", "wmx.sbc.invalid_tlv",
1444 FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL
1447 { /* 11.8.2 */
1448 &hf_sbc_mac_pdu,
1450 "Capabilities For Construction And Transmission Of MAC PDUs", "wmx.sbc.mac_pdu",
1451 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL
1455 &hf_sbc_mac_pdu_piggybacked,
1457 "Ability To Receive Requests Piggybacked With Data", "wmx.sbc.mac_pdu.bit0",
1458 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x1, NULL, HFILL
1462 &hf_sbc_mac_pdu_fsn,
1464 "Ability To Use 3-bit FSN Values Used When Forming MAC PDUs On Non-ARQ Connections", "wmx.sbc.mac_pdu.bit1",
1465 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x2, NULL, HFILL
1468 { /* 11.8.3.7.15 */
1469 &hf_sbc_tlv_t_175_max_num_bst_per_frm_capability_harq,
1471 "Maximum Number Of Burst Per Frame Capability In HARQ", "wmx.sbc.max_num_bst_per_frm_capability_harq",
1472 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL
1476 &hf_sbc_tlv_t_175_max_num_dl_harq_bst_per_harq_per_frm,
1478 "Maximum Numbers Of DL HARQ Bursts Per HARQ Enabled Of MS Per Frame (default(0)=1)", "wmx.sbc.max_num_bst_per_frm_capability_harq.max_num_dl_harq_bst_per_harq_per_frm",
1479 FT_UINT8, BASE_DEC, NULL, 0xF0, NULL, HFILL
1483 &hf_sbc_tlv_t_175_max_num_ul_harq_bst,
1485 "Maximum Number Of UL HARQ Burst Per HARQ Enabled MS Per Frame (default(0)=1)", "wmx.sbc.max_num_bst_per_frm_capability_harq.max_num_ul_harq_bst",
1486 FT_UINT8, BASE_DEC, NULL, 0x7, NULL, HFILL
1490 &hf_sbc_tlv_t_175_max_num_ul_harq_per_frm_include_one_non_harq_bst,
1492 "Whether The Maximum Number Of UL HARQ Bursts Per Frame (i.e. Bits# 2-0) Includes The One Non-HARQ Burst", "wmx.sbc.max_num_bst_per_frm_capability_harq.max_num_ul_harq_per_frm_include_one_non_harq_bst",
1493 FT_BOOLEAN, 8, TFS(&tfs_yes_no_sbc), 0x8, NULL, HFILL
1496 { /* 11.7.8.8 */
1497 &hf_sbc_max_security_associations,
1499 "Maximum Number Of Security Association Supported By The SS", "wmx.sbc.max_security_associations",
1500 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL
1503 { /* 11.8.3.7.2 - type 161 */
1504 &hf_sbc_number_dl_arq_ack_channel,
1506 "The Number Of DL HARQ ACK Channel", "wmx.sbc.number_dl_arq_ack_channel",
1507 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL
1510 { /* 11.8.3.7.3 - type 153 */
1511 &hf_sbc_number_ul_arq_ack_channel,
1513 "The Number Of UL HARQ ACK Channel", "wmx.sbc.number_ul_arq_ack_channel",
1514 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL
1517 { /* 11.8.3.7.8 */
1518 &hf_sbc_ofdma_aas_capabilities,
1520 "OFDMA AAS Capability", "wmx.sbc.ofdma_aas_capability",
1521 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL
1525 &hf_sbc_ss_ofdma_aas_capabilities_rsvd,
1527 "Reserved", "wmx.sbc.ofdma_aas_capabilities.rsvd",
1528 FT_UINT16, BASE_HEX, NULL, 0xFFE0, NULL, HFILL
1532 &hf_sbc_ss_ofdma_aas_diversity_map_scan,
1534 "AAS Diversity Map Scan (AAS DLFP)", "wmx.sbc.ofdma_aas_diversity_map_scan",
1535 FT_BOOLEAN, 16, TFS(&tfs_supported), 0x2, NULL, HFILL
1539 &hf_sbc_ss_ofdma_aas_fbck_rsp_support,
1541 "AAS-FBCK-RSP Support", "wmx.sbc.ofdma_aas_fbck_rsp_support",
1542 FT_BOOLEAN, 16, TFS(&tfs_supported), 0x4, NULL, HFILL
1546 &hf_sbc_ss_ofdma_aas_zone,
1548 "AAS Zone", "wmx.sbc.ofdma_aas_zone",
1549 FT_BOOLEAN, 16, TFS(&tfs_supported), 0x1, NULL, HFILL
1553 &hf_sbc_ss_ofdma_downlink_aas_preamble,
1555 "Downlink AAS Preamble", "wmx.sbc.ofdma_downlink_aas_preamble",
1556 FT_BOOLEAN, 16, TFS(&tfs_supported), 0x8, NULL, HFILL
1559 { /* 11.8.3.7.5 - 3 bytes */
1560 &hf_sbc_tlv_t_176,
1562 "OFDMA MS Demodulator For MIMO Support In DL", "wmx.sbc.ofdma_ms_demodulator_for_mimo_support_in_dl",
1563 FT_BOOLEAN, BASE_NONE, TFS(&tfs_supported), 0x0, NULL, HFILL
1567 &hf_sbc_tlv_t_176_bit0,
1569 "2-antenna STC Matrix A", "wmx.sbc.ofdma_ms_demodulator_for_mimo_support_in_dl.bit0",
1570 FT_BOOLEAN, 24, TFS(&tfs_supported), 0x1, NULL, HFILL
1574 &hf_sbc_tlv_t_176_bit1,
1576 "2-antenna STC Matrix B, vertical coding", "wmx.sbc.ofdma_ms_demodulator_for_mimo_support_in_dl.bit1",
1577 FT_BOOLEAN, 24, TFS(&tfs_supported), 0x2, NULL, HFILL
1581 &hf_sbc_tlv_t_176_bit2,
1583 "Four Receive Antennas", "wmx.sbc.ofdma_ms_demodulator_for_mimo_support_in_dl.bit2",
1584 FT_BOOLEAN, 24, TFS(&tfs_supported), 0x4, NULL, HFILL
1588 &hf_sbc_tlv_t_176_bit2_cor2,
1590 "2-antenna STC matrix B, horizontal coding", "wmx.sbc.ofdma_ms_demodulator_for_mimo_support_in_dl.bit2",
1591 FT_BOOLEAN, 24, TFS(&tfs_supported), 0x4, NULL, HFILL
1595 &hf_sbc_tlv_t_176_bit3,
1597 "4-antenna STC Matrix A", "wmx.sbc.ofdma_ms_demodulator_for_mimo_support_in_dl.bit3",
1598 FT_BOOLEAN, 24, TFS(&tfs_supported), 0x8, NULL, HFILL
1602 &hf_sbc_tlv_t_176_bit4,
1604 "4-antenna STC Matrix B, vertical coding", "wmx.sbc.ofdma_ms_demodulator_for_mimo_support_in_dl.bit4",
1605 FT_BOOLEAN, 24, TFS(&tfs_supported), 0x10, NULL, HFILL
1609 &hf_sbc_tlv_t_176_bit5,
1611 "4-antenna STC Matrix B, horizontal coding", "wmx.sbc.ofdma_ms_demodulator_for_mimo_support_in_dl.bit5",
1612 FT_BOOLEAN, 24, TFS(&tfs_supported), 0x20, NULL, HFILL
1616 &hf_sbc_tlv_t_176_bit6,
1618 "4-antenna STC Matrix C, vertical coding", "wmx.sbc.ofdma_ms_demodulator_for_mimo_support_in_dl.bit6",
1619 FT_BOOLEAN, 24, TFS(&tfs_supported), 0x40, NULL, HFILL
1623 &hf_sbc_tlv_t_176_bit7,
1625 "4-antenna STC Matrix C, horizontal coding", "wmx.sbc.ofdma_ms_demodulator_for_mimo_support_in_dl.bit7",
1626 FT_BOOLEAN, 24, TFS(&tfs_supported), 0x80, NULL, HFILL
1630 &hf_sbc_tlv_t_176_bit8,
1632 "3-antenna STC Matrix A", "wmx.sbc.ofdma_ms_demodulator_for_mimo_support_in_dl.bit8",
1633 FT_BOOLEAN, 24, TFS(&tfs_supported), 0x100, NULL, HFILL
1637 &hf_sbc_tlv_t_176_bit9,
1639 "3-antenna STC Matrix B", "wmx.sbc.ofdma_ms_demodulator_for_mimo_support_in_dl.bit9",
1640 FT_BOOLEAN, 24, TFS(&tfs_supported), 0x200, NULL, HFILL
1644 &hf_sbc_tlv_t_176_bit10,
1646 "3-antenna STC Matrix C, vertical coding", "wmx.sbc.ofdma_ms_demodulator_for_mimo_support_in_dl.bit10",
1647 FT_BOOLEAN, 24, TFS(&tfs_supported), 0x400, NULL, HFILL
1651 &hf_sbc_tlv_t_176_bit11,
1653 "3-antenna STC Matrix C, horizontal coding", "wmx.sbc.ofdma_ms_demodulator_for_mimo_support_in_dl.bit11",
1654 FT_BOOLEAN, 24, TFS(&tfs_supported), 0x800, NULL, HFILL
1658 &hf_sbc_tlv_t_176_bit12,
1660 "Capable Of Calculating Precoding Weight", "wmx.sbc.ofdma_ms_demodulator_for_mimo_support_in_dl.bit12",
1661 FT_BOOLEAN, 24, TFS(&tfs_supported), 0x1000, NULL, HFILL
1665 &hf_sbc_tlv_t_176_bit13,
1667 "Capable Of Adaptive Rate Control", "wmx.sbc.ofdma_ms_demodulator_for_mimo_support_in_dl.bit13",
1668 FT_BOOLEAN, 24, TFS(&tfs_supported), 0x2000, NULL, HFILL
1672 &hf_sbc_tlv_t_176_bit14,
1674 "Capable Of Calculating Channel Matrix", "wmx.sbc.ofdma_ms_demodulator_for_mimo_support_in_dl.bit14",
1675 FT_BOOLEAN, 24, TFS(&tfs_supported), 0x4000, NULL, HFILL
1679 &hf_sbc_tlv_t_176_bit15,
1681 "Capable Of Antenna Grouping", "wmx.sbc.ofdma_ms_demodulator_for_mimo_support_in_dl.bit15",
1682 FT_BOOLEAN, 24, TFS(&tfs_supported), 0x8000, NULL, HFILL
1686 &hf_sbc_tlv_t_176_bit16,
1688 "Capable Of Antenna Selection", "wmx.sbc.ofdma_ms_demodulator_for_mimo_support_in_dl.bit16",
1689 FT_BOOLEAN, 24, TFS(&tfs_supported), 0x10000, NULL, HFILL
1693 &hf_sbc_tlv_t_176_bit17,
1695 "Capable Of Codebook Based Precoding", "wmx.sbc.ofdma_ms_demodulator_for_mimo_support_in_dl.bit17",
1696 FT_BOOLEAN, 24, TFS(&tfs_supported), 0x20000, NULL, HFILL
1700 &hf_sbc_tlv_t_176_bit18,
1702 "Capable Of Long-term Precoding", "wmx.sbc.ofdma_ms_demodulator_for_mimo_support_in_dl.bit18",
1703 FT_BOOLEAN, 24, TFS(&tfs_supported), 0x40000, NULL, HFILL
1707 &hf_sbc_tlv_t_176_bit19,
1709 "Capable Of MIMO Midamble", "wmx.sbc.ofdma_ms_demodulator_for_mimo_support_in_dl.bit19",
1710 FT_BOOLEAN, 24, TFS(&tfs_supported), 0x80000, NULL, HFILL
1714 &hf_sbc_tlv_t_176_reserved,
1716 "Reserved", "wmx.sbc.ofdma_ms_demodulator_for_mimo_support_in_dl.reserved",
1717 FT_UINT24, BASE_HEX, NULL, 0xF00000, NULL, HFILL
1720 { /* 11.8.3.7.18 */
1721 &hf_sbc_tlv_t_179_ofdma_multiple_dl_burst_profile_support,
1723 "OFDMA Multiple Downlink Burst Profile Capability", "wmx.sbc.ofdma_multiple_dl_burst_profile_support",
1724 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL
1728 &hf_sbc_tlv_t_179_dl_bst_profile_for_multiple_fec,
1730 "Downlink burst profile for multiple FEC types", "wmx.sbc.ofdma_multiple_dl_burst_profile_support.dl_bst_profile_for_multiple_fec",
1731 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x1, NULL, HFILL
1735 &hf_sbc_tlv_t_179_reserved,
1737 "Reserved", "wmx.sbc.ofdma_multiple_dl_burst_profile_support.reserved",
1738 FT_UINT8, BASE_HEX, NULL, 0xFC, NULL, HFILL
1742 &hf_sbc_tlv_t_179_ul_bst_profile_for_multiple_fec,
1744 "Uplink burst profile for multiple FEC types", "wmx.sbc.ofdma_multiple_dl_burst_profile_support.ul_burst_profile_for_multiple_fec_types",
1745 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x2, NULL, HFILL
1748 { /* 11.8.3.7.9 */
1749 &hf_sbc_ss_cinr_measure_capability,
1751 "OFDMA SS CINR Measurement Capability", "wmx.sbc.ofdma_ss_cinr_measure_capability",
1752 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL
1755 { /* 11.8.3.7.6 */
1756 &hf_sbc_ss_mimo_uplink_support,
1758 "OFDMA SS MIMO uplink support", "wmx.sbc.ofdma_ss_mimo_uplink_support",
1759 FT_UINT8, BASE_HEX, NULL, 0x00, NULL, HFILL
1763 &hf_sbc_ss_mimo_uplink_support_2_ann_sttd,
1765 "2-antenna STTD", "wmx.sbc.ofdma_ss_mimo_uplink_support.2_antenna_sttd",
1766 FT_UINT8, BASE_HEX, NULL, 0x01, NULL, HFILL
1770 &hf_sbc_ss_mimo_uplink_support_2_ann_sm_vertical,
1772 "2-antenna SM with vertical coding", "wmx.sbc.ofdma_ss_mimo_uplink_support.2_antenna_sm_with_vertical_coding",
1773 FT_UINT8, BASE_HEX, NULL, 0x02, NULL, HFILL
1777 &hf_sbc_ss_mimo_uplink_support_1_ann_coop_sm,
1779 "Single-antenna cooperative SM", "wmx.sbc.ofdma_ss_mimo_uplink_support.single_antenna_coop_sm",
1780 FT_UINT8, BASE_HEX, NULL, 0x04, NULL, HFILL
1784 &hf_sbc_ss_ofdma_uplink_aas_preamble,
1786 "Uplink AAS Preamble", "wmx.sbc.ofdma_uplink_aas_preamble",
1787 FT_BOOLEAN, 16, TFS(&tfs_supported), 0x10, NULL, HFILL
1791 &hf_sbc_ss_phy_cinr_measurement_preamble,
1793 "Physical CINR Measurement From The Preamble", "wmx.sbc.phy_cinr_measure_preamble",
1794 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x1, NULL, HFILL
1798 &hf_sbc_ss_phy_cinr_measurement_permutation_zone_from_pilot_subcarriers,
1800 "Physical CINR Measurement For A Permutation Zone From Pilot Subcarriers", "wmx.sbc.phy_cinr_measure_permutation_zone.pilot_subcarriers",
1801 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x2, NULL, HFILL
1805 &hf_sbc_ss_phy_cinr_measurement_permutation_zone_from_data_subcarriers,
1807 "Physical CINR Measurement For A Permutation Zone From Data Subcarriers", "wmx.sbc.phy_cinr_measure_permutation_zone.data_subcarriers",
1808 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x4, NULL, HFILL
1811 { /* 11.7.8.6 */
1812 &hf_sbc_pkm_flow_control,
1814 "PKM Flow Control", "wmx.sbc.pkm_flow_control",
1815 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL
1818 { /* 11.8.5 */
1819 &hf_sbc_power_save_class_types_capability,
1821 "Power Save Class Types Capability", "wmx.sbc.power_save_class_types_capability",
1822 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL
1826 &hf_sbc_power_save_class_types_capability_bit0,
1828 "Power Save Class Type I", "wmx.sbc.power_save_class_types_capability.bit0",
1829 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x1, NULL, HFILL
1833 &hf_sbc_power_save_class_types_capability_bit1,
1835 "Power Save Class Type II", "wmx.sbc.power_save_class_types_capability.bit1",
1836 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x2, NULL, HFILL
1840 &hf_sbc_power_save_class_types_capability_bit2,
1842 "Power Save Class Type III", "wmx.sbc.power_save_class_types_capability.bit2",
1843 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x4, NULL, HFILL
1847 &hf_sbc_power_save_class_types_capability_bits34,
1849 "Number Of Power Save Class Type Instances Supported From Class Type I and II", "wmx.sbc.power_save_class_types_capability.bits34",
1850 FT_UINT8, BASE_DEC, NULL, 0x18, NULL, HFILL
1854 &hf_sbc_power_save_class_types_capability_bits567,
1856 "Number Of Power Save Class Type Instances Supported From Class Type III", "wmx.sbc.power_save_class_types_capability.bits567",
1857 FT_UINT8, BASE_DEC, NULL, 0xE0, NULL, HFILL
1860 { /* 11.8.3.7.7 */
1861 &hf_sbc_ofdma_aas_private_chain_enable,
1863 "Private Map Chain Enable", "wmx.sbc.private_chain_enable",
1864 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x8, NULL, HFILL
1868 &hf_sbc_ofdma_aas_private_map_concurrency,
1870 "Private Map Chain Concurrency", "wmx.sbc.private_map_concurrency",
1871 FT_UINT8, BASE_HEX, NULL, 0xC0, NULL, HFILL
1875 &hf_sbc_ofdma_aas_private_map_dl_frame_offset,
1877 "Private Map DL Frame Offset", "wmx.sbc.private_map_dl_frame_offset",
1878 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x10, NULL, HFILL
1882 &hf_sbc_ofdma_aas_private_map_support,
1884 "Private Map Support", "wmx.sbc.private_map_support",
1885 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x2, NULL, HFILL
1889 &hf_sbc_ss_ofdma_aas_private,
1891 "OFDMA AAS Private Map Support", "wmx.sbc.private_map_support.ofdma_aas",
1892 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL
1896 &hf_sbc_ofdma_aas_reduced_private_map_support,
1898 "Reduced Private Map Support", "wmx.sbc.private_map_support.reduced",
1899 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x4, NULL, HFILL
1903 &hf_sbc_ofdma_aas_private_ul_frame_offset,
1905 "Private Map UL Frame Offset", "wmx.sbc.private_ul_frame_offset",
1906 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x20, NULL, HFILL
1910 &hf_sbc_mac_pdu_rsvd,
1912 "Reserved", "wmx.sbc.mac_pdu.rsvd",
1913 FT_UINT8, BASE_HEX, NULL, 0xFC, NULL, HFILL
1916 { /* 11.8.3.2 */
1917 &hf_sbc_max_transmit_power,
1919 "Maximum Transmit Power", "wmx.sbc.max_transmit_power",
1920 FT_UINT32, BASE_HEX, NULL, 0x00, NULL, HFILL
1923 { /* 11.8.3.7.5 - 2 bytes */
1924 &hf_sbc_ss_demodulator_mimo_2_ann_stc_matrix_a,
1926 "2-antenna STC Matrix A", "wmx.sbc.ss_demodulator.mimo.2.antenna.stc.matrix.a",
1927 FT_BOOLEAN, 16, TFS(&tfs_supported), 0x1, NULL, HFILL
1931 &hf_sbc_ss_demodulator_mimo_2_ann_stc_matrix_b_horizontal,
1933 "2-antenna STC Matrix B, horizontal coding", "wmx.sbc.ss_demodulator.mimo.2.antenna.stc.matrix.b.horizontal",
1934 FT_BOOLEAN, 16, TFS(&tfs_supported), 0x4, NULL, HFILL
1938 &hf_sbc_ss_demodulator_mimo_2_ann_stc_matrix_b_vertical,
1940 "2-antenna STC Matrix B, vertical coding", "wmx.sbc.ss_demodulator.mimo.2.antenna.stc.matrix.b.vertical",
1941 FT_BOOLEAN, 16, TFS(&tfs_supported), 0x2, NULL, HFILL
1945 &hf_sbc_ss_demodulator_mimo_4_ann_stc_matrix_a,
1947 "4-antenna STC Matrix A", "wmx.sbc.ss_demodulator.mimo.4.antenna.stc.matrix.a",
1948 FT_BOOLEAN, 16, TFS(&tfs_supported), 0x8, NULL, HFILL
1952 &hf_sbc_ss_demodulator_mimo_4_ann_stc_matrix_b_horizontal,
1954 "4-antenna STC Matrix B, horizontal coding", "wmx.sbc.ss_demodulator.mimo.4.antenna.stc.matrix.b.horizontal",
1955 FT_BOOLEAN, 16, TFS(&tfs_supported), 0x20, NULL, HFILL
1959 &hf_sbc_ss_demodulator_mimo_4_ann_stc_matrix_b_vertical,
1961 "4-antenna STC Matrix B, vertical coding", "wmx.sbc.ss_demodulator.mimo.4.antenna.stc.matrix.b.vertical",
1962 FT_BOOLEAN, 16, TFS(&tfs_supported), 0x10, NULL, HFILL
1966 &hf_sbc_ss_demodulator_mimo_4_ann_stc_matrix_c_horizontal,
1968 "4-antenna STC Matrix C, horizontal coding", "wmx.sbc.ss_demodulator.mimo.4.antenna.stc.matrix.c.horizontal",
1969 FT_BOOLEAN, 16, TFS(&tfs_supported), 0x80, NULL, HFILL
1973 &hf_sbc_ss_demodulator_mimo_4_ann_stc_matrix_c_vertical,
1975 "4-antenna STC Matrix C, vertical coding", "wmx.sbc.ss_demodulator.mimo.4.antenna.stc.matrix.c.vertical",
1976 FT_BOOLEAN, 16, TFS(&tfs_supported), 0x40, NULL, HFILL
1980 &hf_sbc_ss_demodulator_mimo_rsvd,
1982 "Reserved", "wmx.sbc.ss_demodulator.mimo.reserved",
1983 FT_UINT16, BASE_HEX, NULL, 0xFF00, NULL, HFILL
1987 &hf_sbc_ss_demodulator_mimo_support,
1989 "OFDMA SS Demodulator For MIMO Support", "wmx.sbc.ss_demodulator.mimo.support",
1990 FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL
1993 /*11.8.3.7.11 ??? */
1994 { /* 11.8.3.7.12 - 170 */
1995 &hf_sbc_ofdma_ss_uplink_power_control_support,
1997 "OFDMA SS uplink power control support", "wmx.sbc.ofdma_ss_uplink_power_control_support",
1998 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL
2002 &hf_sbc_ofdma_ss_uplink_power_control_support_open_loop,
2004 "Open loop", "wmx.sbc.ofdma_ss_uplink_power_control_support.open_loop",
2005 FT_UINT8, BASE_HEX, NULL, 0x01, NULL, HFILL
2009 &hf_sbc_ofdma_ss_uplink_power_control_support_aas_preamble,
2011 "AAS preamble", "wmx.sbc.ofdma_ss_uplink_power_control_support.aas_preamble",
2012 FT_UINT8, BASE_HEX, NULL, 0x02, NULL, HFILL
2016 &hf_sbc_ofdma_ss_uplink_power_control_support_rsvd,
2018 "Reserved", "wmx.sbc.ofdma_ss_uplink_power_control_support.rsvd",
2019 FT_UINT8, BASE_HEX, NULL, 0xFC, NULL, HFILL
2023 &hf_sbc_tlv_t_172_dl_region_definition_support,
2025 "DL Region Definition Support", "wmx.sbc.ofdma_map_capability.dl_region_definition_support",
2026 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x10, NULL, HFILL
2029 { /* 11.8.3.7.12 - 172 */
2030 &hf_sbc_tlv_t_172,
2032 "Support For Extended HARQ", "wmx.sbc.ofdma_map_capability.extended_harq",
2033 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL
2037 &hf_sbc_tlv_t_172_extended_harq_ie_capability,
2039 "Extended HARQ IE Capability", "wmx.sbc.ofdma_map_capability.extended_harq_ie_capability",
2040 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x2, NULL, HFILL
2044 &hf_sbc_tlv_t_172_harq_map_capability,
2046 "HARQ MAP Capability", "wmx.sbc.ofdma_map_capability.harq_map_capability",
2047 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x1, NULL, HFILL
2050 { /* 11.8.3.7.12 - 171 */
2051 &hf_sbc_tlv_t_171_minimum_num_of_frames,
2053 "The Minimum Number Of Frames That SS Takes To Switch From The Open Loop Power Control Scheme To The Closed Loop Power Control Scheme Or Vice Versa", "wmx.sbc.ofdma_ss_uplink_power_control_support.minimum_num_of_frames",
2054 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL
2058 &hf_sbc_tlv_t_172_reserved,
2060 "Reserved", "wmx.sbc.ofdma_map_capability.reserved",
2061 FT_UINT8, BASE_HEX, NULL, 0xE0, NULL, HFILL
2065 &hf_sbc_tlv_t_172_sub_map_capability_first_zone,
2067 "Sub MAP Capability For First Zone", "wmx.sbc.ofdma_map_capability.sub_map_capability_first_zone",
2068 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x4, NULL, HFILL
2072 &hf_sbc_tlv_t_172_sub_map_capability_other_zones,
2074 "Sub MAP Capability For Other Zones", "wmx.sbc.ofdma_map_capability.sub_map_capability_other_zones",
2075 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x8, NULL, HFILL
2078 { /* 11.8.3.7.14 */
2079 &hf_sbc_tlv_t_174_ofdma_ms_csit_capability,
2081 "OFDMA MS CSIT Capability", "wmx.sbc.ofdma_ms_csit_capability",
2082 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL
2086 &hf_sbc_tlv_t_174_csit_compatibility_type_a,
2088 "CSIT Compatibility Type A", "wmx.sbc.ofdma_ms_csit_capability.csit_compatibility_type_a",
2089 FT_BOOLEAN, 16, TFS(&tfs_supported), 0x1, NULL, HFILL
2093 &hf_sbc_tlv_t_174_csit_compatibility_type_b,
2095 "CSIT Compatibility Type B", "wmx.sbc.ofdma_ms_csit_capability.csit_compatibility_type_b",
2096 FT_BOOLEAN, 16, TFS(&tfs_supported), 0x2, NULL, HFILL
2100 &hf_sbc_tlv_t_174_max_num_simultanous_sounding_instructions,
2102 "Max Number Of Simultaneous Sounding Instructions", "wmx.sbc.ofdma_ms_csit_capability.max_num_simultaneous_sounding_instructions",
2103 FT_UINT16, BASE_DEC, NULL, 0x03C0, NULL, HFILL
2107 &hf_sbc_tlv_t_174_power_assignment_capability,
2109 "Power Assignment Capability", "wmx.sbc.ofdma_ms_csit_capability.power_assignment_capability",
2110 FT_BOOLEAN, 16, TFS(&tfs_supported), 0x4, NULL, HFILL
2114 &hf_sbc_tlv_t_174_ss_csit_reserved,
2116 "Reserved", "wmx.sbc.ofdma_ms_csit_capability.reserved",
2117 FT_UINT16, BASE_HEX, NULL, 0xF800, NULL, HFILL
2121 &hf_sbc_tlv_t_174_sounding_rsp_time_capability,
2123 "Sounding Response Time Capability", "wmx.sbc.ofdma_ms_csit_capability.sounding_response_time_capability",
2124 FT_UINT16, BASE_HEX, VALS(vals_sounding_rsp_time_cap_codings), 0x0038, NULL, HFILL
2128 &hf_sbc_tlv_t_174_ss_csit_type_a_support,
2130 "SS Does Not Support P Values Of 9 And 18 When Supporting CSIT Type A", "wmx.sbc.ofdma_ms_csit_capability.type_a_support",
2131 FT_BOOLEAN, 16, TFS(&tfs_supported), 0x0400, NULL, HFILL
2135 /* 11.8.3.7.20 */
2136 &hf_sbc_tlv_t_204_ofdma_parameters_sets,
2138 "OFDMA parameters sets", "wmx.sbc.ofdma_parameters_sets",
2139 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL
2143 &hf_sbc_tlv_t_204_ofdma_parameters_sets_phy_set_a,
2145 "Support OFDMA PHY parameter set A", "wmx.sbc.ofdma_parameters_sets.phy_set_a",
2146 FT_UINT8, BASE_HEX, NULL, 0x01, NULL, HFILL
2150 &hf_sbc_tlv_t_204_ofdma_parameters_sets_phy_set_b,
2152 "Support OFDMA PHY parameter set B", "wmx.sbc.ofdma_parameters_sets.phy_set_b",
2153 FT_UINT8, BASE_HEX, NULL, 0x02, NULL, HFILL
2157 &hf_sbc_tlv_t_204_ofdma_parameters_sets_harq_parameters_set,
2159 "HARQ parameters set", "wmx.sbc.ofdma_parameters_sets.harq_parameters_set",
2160 FT_UINT8, BASE_HEX, VALS(vals_sbc_harq_parameters_set), 0x1C, NULL, HFILL
2164 &hf_sbc_tlv_t_204_ofdma_parameters_sets_mac_set_a,
2166 "Support OFDMA MAC parameters set A", "wmx.sbc.ofdma_parameters_sets.mac_set_a",
2167 FT_UINT8, BASE_HEX, NULL, 0x20, NULL, HFILL
2171 &hf_sbc_tlv_t_204_ofdma_parameters_sets_mac_set_b,
2173 "Support OFDMA MAC parameters set B", "wmx.sbc.ofdma_parameters_sets.mac_set_b",
2174 FT_UINT8, BASE_HEX, NULL, 0x40, NULL, HFILL
2178 &hf_sbc_tlv_t_204_ofdma_parameters_sets_reserved,
2180 "Reserved", "wmx.sbc.ofdma_parameters_sets.reserved",
2181 FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL
2184 { /* 11.8.3.7.16 */
2185 &hf_sbc_tlv_t_177_ofdma_ss_modulator_for_mimo_support,
2187 "OFDMA SS Modulator For MIMO Support", "wmx.sbc.ofdma_ss_modulator_for_mimo_support",
2188 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL
2192 &hf_sbc_tlv_t_177_adaptive_rate_ctl,
2194 "Capable Of Adaptive Rate Control", "wmx.sbc.ofdma_ss_modulator_for_mimo_support.capable_adaptive_rate_control",
2195 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x10, NULL, HFILL
2199 &hf_sbc_tlv_t_177_beamforming,
2201 "Capable Of Beamforming", "wmx.sbc.ofdma_ss_modulator_for_mimo_support.capable_beamforming",
2202 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x8, NULL, HFILL
2206 &hf_sbc_tlv_t_177_single_antenna,
2208 "Capable of single antenna transmission", "wmx.sbc.ofdma_ss_modulator_for_mimo_support.capable_single_antenna",
2209 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x20, NULL, HFILL
2213 &hf_sbc_tlv_t_177_stc_matrix_b_horizontal,
2215 "Capable of 2-antenna STC Matrix B, Horizontal coding", "wmx.sbc.ofdma_ss_modulator_for_mimo_support.stc_matrix_b_horizontal",
2216 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x4, NULL, HFILL
2220 &hf_sbc_tlv_t_177_two_transmit_antennas,
2222 "Two transmit antennas", "wmx.sbc.ofdma_ss_modulator_for_mimo_support.two_transmit_antennas",
2223 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x1, NULL, HFILL
2227 &hf_sbc_tlv_t_177_capable_of_transmit_diversity,
2229 "Capable of transmit diversity", "wmx.sbc.ofdma_ss_modulator_for_mimo_support.capable_of_transmit_diversity",
2230 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x2, NULL, HFILL
2234 &hf_sbc_tlv_t_177_capable_of_spacial_multiplexing,
2236 "Capable of spatial multiplexing", "wmx.sbc.ofdma_ss_modulator_for_mimo_support.capable_of_spatial_multiplexing",
2237 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x4, NULL, HFILL
2241 &hf_sbc_tlv_t_177_stc_matrix_b_vertical,
2243 "Capable of 2-antenna STC Matrix B, Vertical coding", "wmx.sbc.ofdma_ss_modulator_for_mimo_support.stc_matrix_b_vertical",
2244 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x2, NULL, HFILL
2248 &hf_sbc_tlv_t_177_collaborative_sm_with_one_antenna,
2250 "Capable of collaborative SM with one antenna", "wmx.sbc.ofdma_ss_modulator_for_mimo_support.collaborative_sm_with_one_antenna",
2251 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x40, NULL, HFILL
2255 &hf_sbc_tlv_t_177_collaborative_sm_with_two_antennas,
2257 "Collaborative SM with two antennas", "wmx.sbc.ofdma_ss_modulator_for_mimo_support.collaborative_sm_with_two_antennas",
2258 FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL
2262 &hf_sbc_tlv_t_177_capable_of_two_antenna,
2264 "Capable of two antenna", "wmx.sbc.ofdma_ss_modulator_for_mimo_support.capable_of_two_antenna",
2265 FT_UINT8, BASE_HEX, NULL, 0x40, NULL, HFILL
2269 &hf_sbc_tlv_t_177_rsvd,
2271 "Reserved", "wmx.sbc.ofdma_ss_modulator_for_mimo_support.rsvd",
2272 FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL
2276 &hf_sbc_tlv_t_177_stc_matrix_a,
2278 "Capable of 2-antenna STC Matrix A", "wmx.sbc.ofdma_ss_modulator_for_mimo_support.stc_matrix_a",
2279 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x1, NULL, HFILL
2282 { /* 11.8.3.7.17 */
2283 &hf_sbc_tlv_t_178_sdma_pilot_capability,
2285 "SDMA Pilot Capability", "wmx.sbc.sdma_pilot_capability",
2286 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL
2290 &hf_sbc_tlv_t_178_reserved,
2292 "Reserved", "wmx.sbc.sdma_pilot_capability.reserved",
2293 FT_UINT8, BASE_HEX, NULL, 0xFC, NULL, HFILL
2297 &hf_sbc_tlv_t_178_sdma_pilot_pattern_support_for_amc_zone,
2299 "SDMA Pilot Patterns Support For AMC Zone", "wmx.sbc.sdma_pilot_capability.sdma_pilot_pattern_support_for_amc_zone",
2300 FT_UINT8, BASE_HEX, VALS(vals_sbc_sdma_str), 0x03, NULL, HFILL
2303 { /* 11.8.3.7.2 - type 151 */
2304 &hf_sbc_ss_demodulator,
2306 "OFDMA SS Demodulator", "wmx.sbc.ss_demodulator",
2307 FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL
2310 /* tlv length = 1 byte */
2312 &hf_sbc_ss_demodulator_64qam,
2314 "64-QAM", "wmx.sbc.ss_demodulator.64qam",
2315 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x1, NULL, HFILL
2319 &hf_sbc_ss_demodulator_btc,
2321 "BTC", "wmx.sbc.ss_demodulator.btc",
2322 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x2, NULL, HFILL
2326 &hf_sbc_ss_demodulator_cc_with_optional_interleaver,
2328 "CC with Optional Interleaver", "wmx.sbc.ss_demodulator.cc_with_optional_interleaver",
2329 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x10, NULL, HFILL
2333 &hf_sbc_ss_demodulator_ctc,
2335 "CTC", "wmx.sbc.ss_demodulator.ctc",
2336 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x4, NULL, HFILL
2339 /* tlv length = 2 bytes */
2341 &hf_sbc_ss_demodulator_64qam_2,
2343 "64-QAM", "wmx.sbc.ss_demodulator.64qam",
2344 FT_BOOLEAN, 16, TFS(&tfs_supported), 0x1, NULL, HFILL
2348 &hf_sbc_ss_demodulator_btc_2,
2350 "BTC", "wmx.sbc.ss_demodulator.btc",
2351 FT_BOOLEAN, 16, TFS(&tfs_supported), 0x2, NULL, HFILL
2355 &hf_sbc_ss_demodulator_cc_with_optional_interleaver_2,
2357 "CC with Optional Interleaver", "wmx.sbc.ss_demodulator.cc_with_optional_interleaver",
2358 FT_BOOLEAN, 16, TFS(&tfs_supported), 0x10, NULL, HFILL
2362 &hf_sbc_ss_demodulator_ctc_2,
2364 "CTC", "wmx.sbc.ss_demodulator.ctc",
2365 FT_BOOLEAN, 16, TFS(&tfs_supported), 0x4, NULL, HFILL
2369 &hf_sbc_ss_demodulator_dedicated_pilots_2,
2371 "Dedicated Pilots", "wmx.sbc.ss_demodulator.dedicated_pilots",
2372 FT_BOOLEAN, 16, TFS(&tfs_supported), 0x400, NULL, HFILL
2376 &hf_sbc_ss_demodulator_harq_cc_ir_2,
2378 "HARQ CC_IR", "wmx.sbc.ss_demodulator.harq.cc.ir",
2379 FT_BOOLEAN, 16, TFS(&tfs_supported), 0x100, NULL, HFILL
2383 &hf_sbc_ss_demodulator_harq_chase,
2385 "HARQ Chase", "wmx.sbc.ss_demodulator.harq.chase",
2386 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x20, NULL, HFILL
2390 &hf_sbc_ss_demodulator_harq_chase_2,
2392 "HARQ Chase", "wmx.sbc.ss_demodulator.harq.chase",
2393 FT_BOOLEAN, 16, TFS(&tfs_supported), 0x20, NULL, HFILL
2397 &hf_sbc_ss_demodulator_harq_ctc_ir,
2399 "HARQ CTC_IR", "wmx.sbc.ss_demodulator.harq.ctc.ir",
2400 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x40, NULL, HFILL
2404 &hf_sbc_ss_demodulator_harq_ctc_ir_2,
2406 "HARQ CTC_IR", "wmx.sbc.ss_demodulator.harq.ctc.ir",
2407 FT_BOOLEAN, 16, TFS(&tfs_supported), 0x40, NULL, HFILL
2411 &hf_sbc_ss_demodulator_ldpc_2,
2413 "LDPC", "wmx.sbc.ss_demodulator.ldpc",
2414 FT_BOOLEAN, 16, TFS(&tfs_supported), 0x200, NULL, HFILL
2418 &hf_sbc_ss_demodulator_reserved,
2420 "Reserved", "wmx.sbc.ss_demodulator.reserved1",
2421 FT_UINT8, BASE_HEX, NULL, 0x80, NULL, HFILL
2425 &hf_sbc_ss_demodulator_reserved_2,
2427 "Reserved", "wmx.sbc.ss_demodulator.reserved2",
2428 FT_UINT16, BASE_HEX, NULL, 0x80, NULL, HFILL
2432 &hf_sbc_ss_demodulator_reserved1_2,
2434 "Reserved", "wmx.sbc.ss_demodulator.reserved2",
2435 FT_UINT16, BASE_HEX, NULL, 0x800, NULL, HFILL
2438 #if 0
2439 { /* if the number of DL H-ARQ channels > 7 but tlv length = 1 */
2440 &hf_sbc_ss_demodulator_reserved1,
2442 "Reserved", "wmx.sbc.ss_demodulator.reserved1",
2443 FT_UINT16, BASE_HEX, NULL, 0xFFFF, NULL, HFILL
2446 #endif
2448 &hf_sbc_ss_demodulator_stc,
2450 "STC", "wmx.sbc.ss_demodulator.stc",
2451 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x8, NULL, HFILL
2455 &hf_sbc_ss_demodulator_stc_2,
2457 "STC", "wmx.sbc.ss_demodulator.stc",
2458 FT_BOOLEAN, 16, TFS(&tfs_supported), 0x8, NULL, HFILL
2461 /* 11.8.3.4 - 11.8.3.6 are not supported for now */
2462 { /* 11.8.3.7.1 */
2463 &hf_sbc_ss_fft_sizes,
2465 "OFDMA SS FFT Sizes", "wmx.sbc.ss_fft_sizes",
2466 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL
2470 &hf_sbc_ss_fft_128,
2472 "FFT-128", "wmx.sbc.ss_fft_sizes.128",
2473 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x4, NULL, HFILL
2477 &hf_sbc_ss_fft_256,
2479 "FFT-256", "wmx.sbc.ss_fft_sizes.256",
2480 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x1, NULL, HFILL
2484 &hf_sbc_ss_fft_512,
2486 "FFT-512", "wmx.sbc.ss_fft_sizes.512",
2487 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x8, NULL, HFILL
2491 &hf_sbc_ss_fft_1024,
2493 "FFT-1024", "wmx.sbc.ss_fft_sizes.1024",
2494 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x10, NULL, HFILL
2498 &hf_sbc_ss_fft_2048,
2500 "FFT-2048", "wmx.sbc.ss_fft_sizes.2048",
2501 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x2, NULL, HFILL
2505 &hf_sbc_ss_fft_rsvd1,
2507 "Reserved", "wmx.sbc_ss_fft_sizes_rsvd1",
2508 FT_UINT8, BASE_HEX, NULL, 0x01, NULL, HFILL
2512 &hf_sbc_ss_fft_rsvd2,
2514 "Reserved", "wmx.sbc.ss_fft_sizes.rsvd2",
2515 FT_UINT8, BASE_HEX, NULL, 0xE0, NULL, HFILL
2518 #if 0
2520 &hf_sbc_ofdm_ss_minimum_num_of_frames,
2522 "SS minimum number of frames", "wmx.sbc.ss_minimum_num_of_frames",
2523 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL
2526 #endif
2528 &hf_sbc_ss_mimo_uplink_support_rsvd,
2530 "Reserved", "wmx.sbc.ss_mimo_ul_support.rsvd",
2531 FT_UINT8, BASE_HEX, NULL, 0xF8, NULL, HFILL
2534 { /* 11.8.3.7.3 - type 152 */
2535 &hf_sbc_ss_modulator,
2537 "OFDMA SS Modulator", "wmx.sbc.ss_modulator",
2538 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL
2542 &hf_sbc_ss_modulator_64qam,
2544 "64-QAM", "wmx.sbc.ss_modulator.64qam",
2545 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x1, NULL, HFILL
2549 &hf_sbc_ss_modulator_btc,
2551 "BTC", "wmx.sbc.ss_modulator.btc",
2552 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x2, NULL, HFILL
2556 &hf_sbc_ss_modulator_cc_ir,
2558 "CC_IR", "wmx.sbc.ss_modulator.cc_ir",
2559 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x40, NULL, HFILL
2563 &hf_sbc_ss_modulator_ctc,
2565 "CTC", "wmx.sbc.ss_modulator.ctc",
2566 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x4, NULL, HFILL
2570 &hf_sbc_ss_modulator_ctc_ir,
2572 "CTC_IR", "wmx.sbc.ss_modulator.ctc_ir",
2573 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x20, NULL, HFILL
2577 &hf_sbc_ss_modulator_harq_chase,
2579 "HARQ Chase", "wmx.sbc.ss_modulator.harq_chase",
2580 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x10, NULL, HFILL
2584 &hf_sbc_ss_modulator_ldpc,
2586 "LDPC", "wmx.sbc.ss_modulator.ldpc",
2587 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x80, NULL, HFILL
2591 &hf_sbc_ss_modulator_stc,
2593 "STC", "wmx.sbc.ss_modulator.stc",
2594 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x8, NULL, HFILL
2597 { /* 11.8.3.7.4 */
2598 &hf_sbc_ss_permutation_support,
2600 "OFMDA SS Permutation Support", "wmx.sbc.ss_permutation_support",
2601 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL
2605 &hf_sbc_ss_amc_1x6,
2607 "AMC 1x6", "wmx.sbc.ss_permutation_support.amc_1x6",
2608 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x4, NULL, HFILL
2612 &hf_sbc_ss_amc_2x3,
2614 "AMC 2x3", "wmx.sbc.ss_permutation_support.amc_2x3",
2615 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x8, NULL, HFILL
2619 &hf_sbc_ss_amc_3x2,
2621 "AMC 3x2", "wmx.sbc.ss_permutation_support.amc_3x2",
2622 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x10, NULL, HFILL
2626 &hf_sbc_ss_amc_with_harq_map,
2628 "AMC Support With H-ARQ Map", "wmx.sbc.ss_permutation_support.amc_support_harq_map",
2629 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x20, NULL, HFILL
2633 &hf_sbc_ss_optimal_fusc,
2635 "Optional FUSC", "wmx.sbc.ss_permutation_support.optimal_fusc",
2636 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x2, NULL, HFILL
2640 &hf_sbc_ss_optimal_pusc,
2642 "Optional PUSC", "wmx.sbc.ss_permutation_support.optimal_pusc",
2643 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x1, NULL, HFILL
2647 &hf_sbc_ss_tusc1_support,
2649 "TUSC1", "wmx.sbc.ss_permutation_support.tusc1_support",
2650 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x40, NULL, HFILL
2654 &hf_sbc_ss_tusc2_support,
2656 "TUSC2", "wmx.sbc.ss_permutation_support.tusc2_support",
2657 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x80, NULL, HFILL
2661 &hf_sbc_ssrtg,
2663 "SSRTG", "wmx.sbc.ssrtg",
2664 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL
2668 &hf_sbc_ssttg,
2670 "SSTTG", "wmx.sbc.ssttg",
2671 FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL
2675 &hf_sbc_ss_support_2_concurrent_cqi_channels,
2677 "Support for 2 Concurrent CQI Channels", "wmx.sbc.support_2_concurrent_cqi_channels",
2678 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x40, NULL, HFILL
2681 { /* 11.8.3.1 */
2682 &hf_sbc_transition_gaps,
2684 "Subscriber Transition Gaps", "wmx.sbc.transition_gaps",
2685 FT_UINT16, BASE_HEX, NULL, 0x00, NULL, HFILL
2688 { /* 11.8.3.7.13 */
2689 &hf_sbc_tlv_t_173_ul_ctl_channel_support,
2691 "Uplink Control Channel Support", "wmx.sbc.ul_ctl_channel_support",
2692 FT_UINT8, BASE_HEX, NULL, 0x0, NULL, HFILL
2696 &hf_sbc_tlv_t_173_3_bit_mimo_fast_feedback,
2698 "3-bit MIMO Fast-feedback", "wmx.sbc.ul_ctl_channel_support.3bit_mimo_fast_feedback",
2699 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x1, NULL, HFILL
2703 &hf_sbc_tlv_t_173_diuc_cqi_fast_feedback,
2705 "DIUC-CQI Fast-feedback", "wmx.sbc.ul_ctl_channel_support.diuc_cqi_fast_feedback",
2706 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x80, NULL, HFILL
2710 &hf_sbc_tlv_t_173_enhanced_fast_feedback,
2712 "Enhanced Fast_feedback", "wmx.sbc.ul_ctl_channel_support.enhanced_fast_feedback",
2713 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x2, NULL, HFILL
2717 &hf_sbc_tlv_t_173_measurement_report,
2719 "A Measurement Report Shall Be Performed On The Last DL Burst", "wmx.sbc.ul_ctl_channel_support.measurement_report",
2720 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x20, NULL, HFILL
2724 &hf_sbc_tlv_t_173_primary_secondary_fast_feedback,
2726 "Primary/Secondary FAST_FEEDBACK", "wmx.sbc.ul_ctl_channel_support.primary_secondary_fast_feedback",
2727 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x40, NULL, HFILL
2731 &hf_sbc_tlv_t_173_reserved,
2733 "Reserved", "wmx.sbc.ul_ctl_channel_support.reserved",
2734 FT_UINT8, BASE_HEX, NULL, 0x8, NULL, HFILL
2738 &hf_sbc_tlv_t_173_uep_fast_feedback,
2740 "UEP Fast-feedback", "wmx.sbc.ul_ctl_channel_support.uep_fast_feedback",
2741 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x10, NULL, HFILL
2745 &hf_sbc_tlv_t_173_ul_ack,
2747 "UL ACK", "wmx.sbc.ul_ctl_channel_support.ul_ack",
2748 FT_BOOLEAN, 8, TFS(&tfs_supported), 0x4, NULL, HFILL
2752 &hf_sbc_unknown_type,
2754 "Unknown SBC type", "wmx.sbc.unknown_tlv_type",
2755 FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL
2760 /* Setup protocol subtree array */
2761 static gint *ett_sbc[] =
2763 &ett_mac_mgmt_msg_sbc_decoder,
2764 &ett_sbc_req_tlv_subtree,
2765 &ett_sbc_rsp_tlv_subtree,
2768 proto_mac_mgmt_msg_sbc_decoder = proto_register_protocol (
2769 "WiMax SBC-REQ/RSP Messages", /* name */
2770 "WiMax SBC-REQ/RSP (sbc)", /* short name */
2771 "wmx.sbc" /* abbrev */
2774 proto_register_field_array(proto_mac_mgmt_msg_sbc_decoder, hf_sbc, array_length(hf_sbc));
2775 proto_register_subtree_array(ett_sbc, array_length(ett_sbc));
2777 register_dissector("mac_mgmt_msg_sbc_rsp_handler", dissect_mac_mgmt_msg_sbc_rsp_decoder, -1);
2780 void
2781 proto_reg_handoff_mac_mgmt_msg_sbc(void)
2783 dissector_handle_t sbc_handle;
2785 sbc_handle = create_dissector_handle(dissect_mac_mgmt_msg_sbc_req_decoder, proto_mac_mgmt_msg_sbc_decoder);
2786 dissector_add_uint("wmx.mgmtmsg", MAC_MGMT_MSG_SBC_REQ, sbc_handle);
2788 sbc_handle = create_dissector_handle(dissect_mac_mgmt_msg_sbc_rsp_decoder, proto_mac_mgmt_msg_sbc_decoder);
2789 dissector_add_uint("wmx.mgmtmsg", MAC_MGMT_MSG_SBC_RSP, sbc_handle);