1#!/usr/bin/env python3
2#
3#   Copyright 2019 - The Android Open Source Project
4#
5#   Licensed under the Apache License, Version 2.0 (the "License");
6#   you may not use this file except in compliance with the License.
7#   You may obtain a copy of the License at
8#
9#       http://www.apache.org/licenses/LICENSE-2.0
10#
11#   Unless required by applicable law or agreed to in writing, software
12#   distributed under the License is distributed on an "AS IS" BASIS,
13#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14#   See the License for the specific language governing permissions and
15#   limitations under the License.
16
17from acts import utils
18
19from acts.controllers.ap_lib import hostapd_ap_preset
20from acts.controllers.ap_lib import hostapd_constants
21from acts.test_utils.abstract_devices.wlan_device import create_wlan_device
22from acts.test_utils.abstract_devices.wlan_device_lib.AbstractDeviceWlanDeviceBaseTest import AbstractDeviceWlanDeviceBaseTest
23from acts.test_utils.abstract_devices.utils_lib.wlan_utils import validate_setup_ap_and_associate
24from acts.test_utils.wifi.WifiBaseTest import WifiBaseTest
25
26
27class WlanPhyComplianceABGTest(AbstractDeviceWlanDeviceBaseTest):
28    """Tests for validating 11a, 11b, and 11g PHYS.
29
30    Test Bed Requirement:
31    * One Android device or Fuchsia device
32    * One Access Point
33    """
34    def setup_class(self):
35        super().setup_class()
36        if 'dut' in self.user_params:
37            if self.user_params['dut'] == 'fuchsia_devices':
38                self.dut = create_wlan_device(self.fuchsia_devices[0])
39            elif self.user_params['dut'] == 'android_devices':
40                self.dut = create_wlan_device(self.android_devices[0])
41            else:
42                raise ValueError('Invalid DUT specified in config. (%s)' %
43                                 self.user_params['dut'])
44        else:
45            # Default is an android device, just like the other tests
46            self.dut = create_wlan_device(self.android_devices[0])
47
48        self.access_point = self.access_points[0]
49        open_network = self.get_open_network(False, [])
50        open_network_min_len = self.get_open_network(
51            False, [],
52            ssid_length_2g=hostapd_constants.AP_SSID_MIN_LENGTH_2G,
53            ssid_length_5g=hostapd_constants.AP_SSID_MIN_LENGTH_5G)
54        open_network_max_len = self.get_open_network(
55            False, [],
56            ssid_length_2g=hostapd_constants.AP_SSID_MAX_LENGTH_2G,
57            ssid_length_5g=hostapd_constants.AP_SSID_MAX_LENGTH_5G)
58        self.open_network_2g = open_network['2g']
59        self.open_network_5g = open_network['5g']
60        self.open_network_max_len_2g = open_network_max_len['2g']
61        self.open_network_max_len_2g['SSID'] = (
62            self.open_network_max_len_2g['SSID'][3:])
63        self.open_network_max_len_5g = open_network_max_len['5g']
64        self.open_network_max_len_5g['SSID'] = (
65            self.open_network_max_len_5g['SSID'][3:])
66        self.open_network_min_len_2g = open_network_min_len['2g']
67        self.open_network_min_len_2g['SSID'] = (
68            self.open_network_min_len_2g['SSID'][3:])
69        self.open_network_min_len_5g = open_network_min_len['5g']
70        self.open_network_min_len_5g['SSID'] = (
71            self.open_network_min_len_5g['SSID'][3:])
72
73        self.utf8_ssid_2g = '2��_������������'
74        self.utf8_ssid_5g = '5��_������������'
75
76        self.utf8_ssid_2g_french = 'Château du Feÿ'
77        self.utf8_password_2g_french = 'du Feÿ Château'
78
79        self.utf8_ssid_2g_german = 'Rat für Straßenatlas'
80        self.utf8_password_2g_german = 'für Straßenatlas Rat'
81
82        self.utf8_ssid_2g_dutch = 'Die niet óúd, is níéuw!'
83        self.utf8_password_2g_dutch = 'niet óúd, is níéuw! Die'
84
85        self.utf8_ssid_2g_swedish = 'Det är femtioåtta'
86        self.utf8_password_2g_swedish = 'femtioåtta Det är'
87
88        self.utf8_ssid_2g_norwegian = 'Curaçao ØÆ æ å å å'
89        self.utf8_password_2g_norwegian = 'ØÆ Curaçao æ å å å'
90
91        #Danish and Norwegian has the same alphabet
92        self.utf8_ssid_2g_danish = self.utf8_ssid_2g_norwegian
93        self.utf8_password_2g_danish = self.utf8_password_2g_norwegian
94
95        self.utf8_ssid_2g_japanese = 'あなた はお母さん'
96        self.utf8_password_2g_japanese = 'そっくりね。あな'
97
98        self.utf8_ssid_2g_spanish = '¡No á,é,í,ó,ú,ü,ñ,¿,¡'
99        self.utf8_password_2g_spanish = 'á,é,í,ó,ú,ü,ñ,¿,¡ ¡No'
100
101        self.utf8_ssid_2g_italian = 'caffè Pinocchio è italiano?'
102        self.utf8_password_2g_italian = 'Pinocchio è italiano? caffè'
103
104        self.utf8_ssid_2g_korean = 'ㅘㅙㅚㅛㅜㅝㅞㅟㅠ'
105        self.utf8_password_2g_korean = 'ㅜㅝㅞㅟㅠㅘㅙㅚㅛ'
106
107        self.access_point.stop_all_aps()
108
109    def setup_test(self):
110        if hasattr(self, "android_devices"):
111            for ad in self.android_devices:
112                ad.droid.wakeLockAcquireBright()
113                ad.droid.wakeUpNow()
114        self.dut.wifi_toggle_state(True)
115
116    def teardown_test(self):
117        if hasattr(self, "android_devices"):
118            for ad in self.android_devices:
119                ad.droid.wakeLockRelease()
120                ad.droid.goToSleepNow()
121        self.dut.turn_location_off_and_scan_toggle_off()
122        self.dut.disconnect()
123        self.dut.reset_wifi()
124        self.access_point.stop_all_aps()
125
126    def on_fail(self, test_name, begin_time):
127        super().on_fail(test_name, begin_time)
128        self.access_point.stop_all_aps()
129
130    def test_associate_11b_only_long_preamble(self):
131        validate_setup_ap_and_associate(
132            access_point=self.access_point,
133            client=self.dut,
134            profile_name='whirlwind_11ab_legacy',
135            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
136            ssid=self.open_network_2g['SSID'],
137            preamble=False)
138
139    def test_associate_11b_only_short_preamble(self):
140        validate_setup_ap_and_associate(
141            access_point=self.access_point,
142            client=self.dut,
143            profile_name='whirlwind_11ab_legacy',
144            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
145            ssid=self.open_network_2g['SSID'],
146            preamble=True)
147
148    def test_associate_11b_only_minimal_beacon_interval(self):
149        validate_setup_ap_and_associate(
150            access_point=self.access_point,
151            client=self.dut,
152            profile_name='whirlwind_11ab_legacy',
153            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
154            ssid=self.open_network_2g['SSID'],
155            beacon_interval=15)
156
157    def test_associate_11b_only_maximum_beacon_interval(self):
158        validate_setup_ap_and_associate(
159            access_point=self.access_point,
160            client=self.dut,
161            profile_name='whirlwind_11ab_legacy',
162            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
163            ssid=self.open_network_2g['SSID'],
164            beacon_interval=1024)
165
166    def test_associate_11b_only_frag_threshold_430(self):
167        validate_setup_ap_and_associate(
168            access_point=self.access_point,
169            client=self.dut,
170            profile_name='whirlwind_11ab_legacy',
171            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
172            ssid=self.open_network_2g['SSID'],
173            frag_threshold=430)
174
175    def test_associate_11b_only_rts_threshold_256(self):
176        validate_setup_ap_and_associate(
177            access_point=self.access_point,
178            client=self.dut,
179            profile_name='whirlwind_11ab_legacy',
180            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
181            ssid=self.open_network_2g['SSID'],
182            rts_threshold=256)
183
184    def test_associate_11b_only_rts_256_frag_430(self):
185        validate_setup_ap_and_associate(
186            access_point=self.access_point,
187            client=self.dut,
188            profile_name='whirlwind_11ab_legacy',
189            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
190            ssid=self.open_network_2g['SSID'],
191            rts_threshold=256,
192            frag_threshold=430)
193
194    def test_associate_11b_only_high_dtim_low_beacon_interval(self):
195        validate_setup_ap_and_associate(
196            access_point=self.access_point,
197            client=self.dut,
198            profile_name='whirlwind_11ab_legacy',
199            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
200            ssid=self.open_network_2g['SSID'],
201            dtim_period=3,
202            beacon_interval=100)
203
204    def test_associate_11b_only_low_dtim_high_beacon_interval(self):
205        validate_setup_ap_and_associate(
206            access_point=self.access_point,
207            client=self.dut,
208            profile_name='whirlwind_11ab_legacy',
209            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
210            ssid=self.open_network_2g['SSID'],
211            dtim_period=1,
212            beacon_interval=300)
213
214    def test_associate_11b_only_with_WMM_with_default_values(self):
215        validate_setup_ap_and_associate(
216            access_point=self.access_point,
217            client=self.dut,
218            profile_name='whirlwind_11ab_legacy',
219            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
220            ssid=self.open_network_2g['SSID'],
221            force_wmm=True,
222            additional_ap_parameters=hostapd_constants.WMM_11B_DEFAULT_PARAMS)
223
224    def test_associate_11b_only_with_WMM_with_non_default_values(self):
225        validate_setup_ap_and_associate(
226            access_point=self.access_point,
227            client=self.dut,
228            profile_name='whirlwind_11ab_legacy',
229            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
230            ssid=self.open_network_2g['SSID'],
231            force_wmm=True,
232            additional_ap_parameters=hostapd_constants.WMM_NON_DEFAULT_PARAMS)
233
234    def test_associate_11b_only_with_WMM_ACM_on_BK(self):
235        wmm_acm_bits_enabled = utils.merge_dicts(
236            hostapd_constants.WMM_11B_DEFAULT_PARAMS,
237            hostapd_constants.WMM_ACM_BK)
238        validate_setup_ap_and_associate(
239            access_point=self.access_point,
240            client=self.dut,
241            profile_name='whirlwind_11ab_legacy',
242            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
243            ssid=self.open_network_2g['SSID'],
244            force_wmm=True,
245            additional_ap_parameters=wmm_acm_bits_enabled)
246
247    def test_associate_11b_only_with_WMM_ACM_on_BE(self):
248        wmm_acm_bits_enabled = utils.merge_dicts(
249            hostapd_constants.WMM_11B_DEFAULT_PARAMS,
250            hostapd_constants.WMM_ACM_BE)
251        validate_setup_ap_and_associate(
252            access_point=self.access_point,
253            client=self.dut,
254            profile_name='whirlwind_11ab_legacy',
255            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
256            ssid=self.open_network_2g['SSID'],
257            force_wmm=True,
258            additional_ap_parameters=wmm_acm_bits_enabled)
259
260    def test_associate_11b_only_with_WMM_ACM_on_VI(self):
261        wmm_acm_bits_enabled = utils.merge_dicts(
262            hostapd_constants.WMM_11B_DEFAULT_PARAMS,
263            hostapd_constants.WMM_ACM_VI)
264        validate_setup_ap_and_associate(
265            access_point=self.access_point,
266            client=self.dut,
267            profile_name='whirlwind_11ab_legacy',
268            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
269            ssid=self.open_network_2g['SSID'],
270            force_wmm=True,
271            additional_ap_parameters=wmm_acm_bits_enabled)
272
273    def test_associate_11b_only_with_WMM_ACM_on_VO(self):
274        wmm_acm_bits_enabled = utils.merge_dicts(
275            hostapd_constants.WMM_11B_DEFAULT_PARAMS,
276            hostapd_constants.WMM_ACM_VO)
277        validate_setup_ap_and_associate(
278            access_point=self.access_point,
279            client=self.dut,
280            profile_name='whirlwind_11ab_legacy',
281            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
282            ssid=self.open_network_2g['SSID'],
283            force_wmm=True,
284            additional_ap_parameters=wmm_acm_bits_enabled)
285
286    def test_associate_11b_only_with_WMM_ACM_on_BK_BE_VI(self):
287        wmm_acm_bits_enabled = utils.merge_dicts(
288            hostapd_constants.WMM_11B_DEFAULT_PARAMS,
289            hostapd_constants.WMM_ACM_BK, hostapd_constants.WMM_ACM_BE,
290            hostapd_constants.WMM_ACM_VI)
291        validate_setup_ap_and_associate(
292            access_point=self.access_point,
293            client=self.dut,
294            profile_name='whirlwind_11ab_legacy',
295            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
296            ssid=self.open_network_2g['SSID'],
297            force_wmm=True,
298            additional_ap_parameters=wmm_acm_bits_enabled)
299
300    def test_associate_11b_only_with_WMM_ACM_on_BK_BE_VO(self):
301        wmm_acm_bits_enabled = utils.merge_dicts(
302            hostapd_constants.WMM_11B_DEFAULT_PARAMS,
303            hostapd_constants.WMM_ACM_BK, hostapd_constants.WMM_ACM_BE,
304            hostapd_constants.WMM_ACM_VO)
305        validate_setup_ap_and_associate(
306            access_point=self.access_point,
307            client=self.dut,
308            profile_name='whirlwind_11ab_legacy',
309            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
310            ssid=self.open_network_2g['SSID'],
311            force_wmm=True,
312            additional_ap_parameters=wmm_acm_bits_enabled)
313
314    def test_associate_11b_only_with_WMM_ACM_on_BK_VI_VO(self):
315        wmm_acm_bits_enabled = utils.merge_dicts(
316            hostapd_constants.WMM_11B_DEFAULT_PARAMS,
317            hostapd_constants.WMM_ACM_BK, hostapd_constants.WMM_ACM_VI,
318            hostapd_constants.WMM_ACM_VO)
319        validate_setup_ap_and_associate(
320            access_point=self.access_point,
321            client=self.dut,
322            profile_name='whirlwind_11ab_legacy',
323            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
324            ssid=self.open_network_2g['SSID'],
325            force_wmm=True,
326            additional_ap_parameters=wmm_acm_bits_enabled)
327
328    def test_associate_11b_only_with_WMM_ACM_on_BE_VI_VO(self):
329        wmm_acm_bits_enabled = utils.merge_dicts(
330            hostapd_constants.WMM_11B_DEFAULT_PARAMS,
331            hostapd_constants.WMM_ACM_BE, hostapd_constants.WMM_ACM_VI,
332            hostapd_constants.WMM_ACM_VO)
333        validate_setup_ap_and_associate(
334            access_point=self.access_point,
335            client=self.dut,
336            profile_name='whirlwind_11ab_legacy',
337            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
338            ssid=self.open_network_2g['SSID'],
339            force_wmm=True,
340            additional_ap_parameters=wmm_acm_bits_enabled)
341
342    def test_associate_11b_only_with_country_code(self):
343        country_info = utils.merge_dicts(
344            hostapd_constants.ENABLE_IEEE80211D,
345            hostapd_constants.COUNTRY_STRING['ALL'],
346            hostapd_constants.COUNTRY_CODE['UNITED_STATES'])
347        validate_setup_ap_and_associate(
348            access_point=self.access_point,
349            client=self.dut,
350            profile_name='whirlwind_11ab_legacy',
351            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
352            ssid=self.open_network_2g['SSID'],
353            additional_ap_parameters=country_info)
354
355    def test_associate_11b_only_with_non_country_code(self):
356        country_info = utils.merge_dicts(
357            hostapd_constants.ENABLE_IEEE80211D,
358            hostapd_constants.COUNTRY_STRING['ALL'],
359            hostapd_constants.COUNTRY_CODE['NON_COUNTRY'])
360        validate_setup_ap_and_associate(
361            access_point=self.access_point,
362            client=self.dut,
363            profile_name='whirlwind_11ab_legacy',
364            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
365            ssid=self.open_network_2g['SSID'],
366            additional_ap_parameters=country_info)
367
368    def test_associate_11b_only_with_hidden_ssid(self):
369        validate_setup_ap_and_associate(
370            access_point=self.access_point,
371            client=self.dut,
372            profile_name='whirlwind_11ab_legacy',
373            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
374            ssid=self.open_network_2g['SSID'],
375            hidden=True)
376
377    def test_associate_11b_only_with_vendor_ie_in_beacon_correct_length(self):
378        validate_setup_ap_and_associate(
379            access_point=self.access_point,
380            client=self.dut,
381            profile_name='whirlwind_11ab_legacy',
382            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
383            ssid=self.open_network_2g['SSID'],
384            additional_ap_parameters=hostapd_constants.
385            VENDOR_IE['correct_length_beacon'])
386
387    def test_associate_11b_only_with_vendor_ie_in_beacon_zero_length(self):
388        validate_setup_ap_and_associate(
389            access_point=self.access_point,
390            client=self.dut,
391            profile_name='whirlwind_11ab_legacy',
392            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
393            ssid=self.open_network_2g['SSID'],
394            additional_ap_parameters=hostapd_constants.
395            VENDOR_IE['zero_length_beacon_without_data'])
396
397    def test_associate_11b_only_with_vendor_ie_in_assoc_correct_length(self):
398        validate_setup_ap_and_associate(
399            access_point=self.access_point,
400            client=self.dut,
401            profile_name='whirlwind_11ab_legacy',
402            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
403            ssid=self.open_network_2g['SSID'],
404            additional_ap_parameters=hostapd_constants.
405            VENDOR_IE['correct_length_association_response'])
406
407    def test_associate_11b_only_with_vendor_ie_in_assoc_zero_length(self):
408        validate_setup_ap_and_associate(
409            access_point=self.access_point,
410            client=self.dut,
411            profile_name='whirlwind_11ab_legacy',
412            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
413            ssid=self.open_network_2g['SSID'],
414            additional_ap_parameters=hostapd_constants.VENDOR_IE[
415                'zero_length_association_'
416                'response_without_data'])
417
418    def test_associate_11a_only_long_preamble(self):
419        validate_setup_ap_and_associate(
420            access_point=self.access_point,
421            client=self.dut,
422            profile_name='whirlwind_11ab_legacy',
423            channel=hostapd_constants.AP_DEFAULT_CHANNEL_5G,
424            ssid=self.open_network_5g['SSID'],
425            preamble=False)
426
427    def test_associate_11a_only_short_preamble(self):
428        validate_setup_ap_and_associate(
429            access_point=self.access_point,
430            client=self.dut,
431            profile_name='whirlwind_11ab_legacy',
432            channel=hostapd_constants.AP_DEFAULT_CHANNEL_5G,
433            ssid=self.open_network_5g['SSID'],
434            preamble=True)
435
436    def test_associate_11a_only_minimal_beacon_interval(self):
437        validate_setup_ap_and_associate(
438            access_point=self.access_point,
439            client=self.dut,
440            profile_name='whirlwind_11ab_legacy',
441            channel=hostapd_constants.AP_DEFAULT_CHANNEL_5G,
442            ssid=self.open_network_5g['SSID'],
443            beacon_interval=15)
444
445    def test_associate_11a_only_maximum_beacon_interval(self):
446        validate_setup_ap_and_associate(
447            access_point=self.access_point,
448            client=self.dut,
449            profile_name='whirlwind_11ab_legacy',
450            channel=hostapd_constants.AP_DEFAULT_CHANNEL_5G,
451            ssid=self.open_network_5g['SSID'],
452            beacon_interval=1024)
453
454    def test_associate_11a_only_frag_threshold_430(self):
455        validate_setup_ap_and_associate(
456            access_point=self.access_point,
457            client=self.dut,
458            profile_name='whirlwind_11ab_legacy',
459            channel=hostapd_constants.AP_DEFAULT_CHANNEL_5G,
460            ssid=self.open_network_5g['SSID'],
461            frag_threshold=430)
462
463    def test_associate_11a_only_rts_threshold_256(self):
464        validate_setup_ap_and_associate(
465            access_point=self.access_point,
466            client=self.dut,
467            profile_name='whirlwind_11ab_legacy',
468            channel=hostapd_constants.AP_DEFAULT_CHANNEL_5G,
469            ssid=self.open_network_5g['SSID'],
470            rts_threshold=256)
471
472    def test_associate_11a_only_rts_256_frag_430(self):
473        validate_setup_ap_and_associate(
474            access_point=self.access_point,
475            client=self.dut,
476            profile_name='whirlwind_11ab_legacy',
477            channel=hostapd_constants.AP_DEFAULT_CHANNEL_5G,
478            ssid=self.open_network_5g['SSID'],
479            rts_threshold=256,
480            frag_threshold=430)
481
482    def test_associate_11a_only_high_dtim_low_beacon_interval(self):
483        validate_setup_ap_and_associate(
484            access_point=self.access_point,
485            client=self.dut,
486            profile_name='whirlwind_11ab_legacy',
487            channel=hostapd_constants.AP_DEFAULT_CHANNEL_5G,
488            ssid=self.open_network_5g['SSID'],
489            dtim_period=3,
490            beacon_interval=100)
491
492    def test_associate_11a_only_low_dtim_high_beacon_interval(self):
493        validate_setup_ap_and_associate(
494            access_point=self.access_point,
495            client=self.dut,
496            profile_name='whirlwind_11ab_legacy',
497            channel=hostapd_constants.AP_DEFAULT_CHANNEL_5G,
498            ssid=self.open_network_5g['SSID'],
499            dtim_period=1,
500            beacon_interval=300)
501
502    def test_associate_11a_only_with_WMM_with_default_values(self):
503        validate_setup_ap_and_associate(
504            access_point=self.access_point,
505            client=self.dut,
506            profile_name='whirlwind_11ab_legacy',
507            channel=hostapd_constants.AP_DEFAULT_CHANNEL_5G,
508            ssid=self.open_network_5g['SSID'],
509            force_wmm=True,
510            additional_ap_parameters=hostapd_constants.
511            WMM_PHYS_11A_11G_11N_11AC_DEFAULT_PARAMS)
512
513    def test_associate_11a_only_with_WMM_with_non_default_values(self):
514        validate_setup_ap_and_associate(
515            access_point=self.access_point,
516            client=self.dut,
517            profile_name='whirlwind_11ab_legacy',
518            channel=hostapd_constants.AP_DEFAULT_CHANNEL_5G,
519            ssid=self.open_network_5g['SSID'],
520            force_wmm=True,
521            additional_ap_parameters=hostapd_constants.WMM_NON_DEFAULT_PARAMS)
522
523    def test_associate_11a_only_with_WMM_ACM_on_BK(self):
524        wmm_acm_bits_enabled = utils.merge_dicts(
525            hostapd_constants.WMM_PHYS_11A_11G_11N_11AC_DEFAULT_PARAMS,
526            hostapd_constants.WMM_ACM_BK)
527        validate_setup_ap_and_associate(
528            access_point=self.access_point,
529            client=self.dut,
530            profile_name='whirlwind_11ab_legacy',
531            channel=hostapd_constants.AP_DEFAULT_CHANNEL_5G,
532            ssid=self.open_network_5g['SSID'],
533            force_wmm=True,
534            additional_ap_parameters=wmm_acm_bits_enabled)
535
536    def test_associate_11a_only_with_WMM_ACM_on_BE(self):
537        wmm_acm_bits_enabled = utils.merge_dicts(
538            hostapd_constants.WMM_PHYS_11A_11G_11N_11AC_DEFAULT_PARAMS,
539            hostapd_constants.WMM_ACM_BE)
540        validate_setup_ap_and_associate(
541            access_point=self.access_point,
542            client=self.dut,
543            profile_name='whirlwind_11ab_legacy',
544            channel=hostapd_constants.AP_DEFAULT_CHANNEL_5G,
545            ssid=self.open_network_5g['SSID'],
546            force_wmm=True,
547            additional_ap_parameters=wmm_acm_bits_enabled)
548
549    def test_associate_11a_only_with_WMM_ACM_on_VI(self):
550        wmm_acm_bits_enabled = utils.merge_dicts(
551            hostapd_constants.WMM_PHYS_11A_11G_11N_11AC_DEFAULT_PARAMS,
552            hostapd_constants.WMM_ACM_VI)
553        validate_setup_ap_and_associate(
554            access_point=self.access_point,
555            client=self.dut,
556            profile_name='whirlwind_11ab_legacy',
557            channel=hostapd_constants.AP_DEFAULT_CHANNEL_5G,
558            ssid=self.open_network_5g['SSID'],
559            force_wmm=True,
560            additional_ap_parameters=wmm_acm_bits_enabled)
561
562    def test_associate_11a_only_with_WMM_ACM_on_VO(self):
563        wmm_acm_bits_enabled = utils.merge_dicts(
564            hostapd_constants.WMM_PHYS_11A_11G_11N_11AC_DEFAULT_PARAMS,
565            hostapd_constants.WMM_ACM_VO)
566        validate_setup_ap_and_associate(
567            access_point=self.access_point,
568            client=self.dut,
569            profile_name='whirlwind_11ab_legacy',
570            channel=hostapd_constants.AP_DEFAULT_CHANNEL_5G,
571            ssid=self.open_network_5g['SSID'],
572            force_wmm=True,
573            additional_ap_parameters=wmm_acm_bits_enabled)
574
575    def test_associate_11a_only_with_WMM_ACM_on_BK_BE_VI(self):
576        wmm_acm_bits_enabled = utils.merge_dicts(
577            hostapd_constants.WMM_PHYS_11A_11G_11N_11AC_DEFAULT_PARAMS,
578            hostapd_constants.WMM_ACM_BK, hostapd_constants.WMM_ACM_BE,
579            hostapd_constants.WMM_ACM_VI)
580        validate_setup_ap_and_associate(
581            access_point=self.access_point,
582            client=self.dut,
583            profile_name='whirlwind_11ab_legacy',
584            channel=hostapd_constants.AP_DEFAULT_CHANNEL_5G,
585            ssid=self.open_network_5g['SSID'],
586            force_wmm=True,
587            additional_ap_parameters=wmm_acm_bits_enabled)
588
589    def test_associate_11a_only_with_WMM_ACM_on_BK_BE_VO(self):
590        wmm_acm_bits_enabled = utils.merge_dicts(
591            hostapd_constants.WMM_PHYS_11A_11G_11N_11AC_DEFAULT_PARAMS,
592            hostapd_constants.WMM_ACM_BK, hostapd_constants.WMM_ACM_BE,
593            hostapd_constants.WMM_ACM_VO)
594        validate_setup_ap_and_associate(
595            access_point=self.access_point,
596            client=self.dut,
597            profile_name='whirlwind_11ab_legacy',
598            channel=hostapd_constants.AP_DEFAULT_CHANNEL_5G,
599            ssid=self.open_network_5g['SSID'],
600            force_wmm=True,
601            additional_ap_parameters=wmm_acm_bits_enabled)
602
603    def test_associate_11a_only_with_WMM_ACM_on_BK_VI_VO(self):
604        wmm_acm_bits_enabled = utils.merge_dicts(
605            hostapd_constants.WMM_PHYS_11A_11G_11N_11AC_DEFAULT_PARAMS,
606            hostapd_constants.WMM_ACM_BK, hostapd_constants.WMM_ACM_VI,
607            hostapd_constants.WMM_ACM_VO)
608        validate_setup_ap_and_associate(
609            access_point=self.access_point,
610            client=self.dut,
611            profile_name='whirlwind_11ab_legacy',
612            channel=hostapd_constants.AP_DEFAULT_CHANNEL_5G,
613            ssid=self.open_network_5g['SSID'],
614            force_wmm=True,
615            additional_ap_parameters=wmm_acm_bits_enabled)
616
617    def test_associate_11a_only_with_WMM_ACM_on_BE_VI_VO(self):
618        wmm_acm_bits_enabled = utils.merge_dicts(
619            hostapd_constants.WMM_PHYS_11A_11G_11N_11AC_DEFAULT_PARAMS,
620            hostapd_constants.WMM_ACM_BE, hostapd_constants.WMM_ACM_VI,
621            hostapd_constants.WMM_ACM_VO)
622        validate_setup_ap_and_associate(
623            access_point=self.access_point,
624            client=self.dut,
625            profile_name='whirlwind_11ab_legacy',
626            channel=hostapd_constants.AP_DEFAULT_CHANNEL_5G,
627            ssid=self.open_network_5g['SSID'],
628            force_wmm=True,
629            additional_ap_parameters=wmm_acm_bits_enabled)
630
631    def test_associate_11a_only_with_country_code(self):
632        country_info = utils.merge_dicts(
633            hostapd_constants.ENABLE_IEEE80211D,
634            hostapd_constants.COUNTRY_STRING['ALL'],
635            hostapd_constants.COUNTRY_CODE['UNITED_STATES'])
636        validate_setup_ap_and_associate(
637            access_point=self.access_point,
638            client=self.dut,
639            profile_name='whirlwind_11ab_legacy',
640            channel=hostapd_constants.AP_DEFAULT_CHANNEL_5G,
641            ssid=self.open_network_5g['SSID'],
642            additional_ap_parameters=country_info)
643
644    def test_associate_11a_only_with_non_country_code(self):
645        country_info = utils.merge_dicts(
646            hostapd_constants.ENABLE_IEEE80211D,
647            hostapd_constants.COUNTRY_STRING['ALL'],
648            hostapd_constants.COUNTRY_CODE['NON_COUNTRY'])
649        validate_setup_ap_and_associate(
650            access_point=self.access_point,
651            client=self.dut,
652            profile_name='whirlwind_11ab_legacy',
653            channel=hostapd_constants.AP_DEFAULT_CHANNEL_5G,
654            ssid=self.open_network_5g['SSID'],
655            additional_ap_parameters=country_info)
656
657    def test_associate_11a_only_with_hidden_ssid(self):
658        validate_setup_ap_and_associate(
659            access_point=self.access_point,
660            client=self.dut,
661            profile_name='whirlwind_11ab_legacy',
662            channel=hostapd_constants.AP_DEFAULT_CHANNEL_5G,
663            ssid=self.open_network_5g['SSID'],
664            hidden=True)
665
666    def test_associate_11a_only_with_vendor_ie_in_beacon_correct_length(self):
667        validate_setup_ap_and_associate(
668            access_point=self.access_point,
669            client=self.dut,
670            profile_name='whirlwind_11ab_legacy',
671            channel=hostapd_constants.AP_DEFAULT_CHANNEL_5G,
672            ssid=self.open_network_5g['SSID'],
673            additional_ap_parameters=hostapd_constants.
674            VENDOR_IE['correct_length_beacon'])
675
676    def test_associate_11a_only_with_vendor_ie_in_beacon_zero_length(self):
677        validate_setup_ap_and_associate(
678            access_point=self.access_point,
679            client=self.dut,
680            profile_name='whirlwind_11ab_legacy',
681            channel=hostapd_constants.AP_DEFAULT_CHANNEL_5G,
682            ssid=self.open_network_5g['SSID'],
683            additional_ap_parameters=hostapd_constants.
684            VENDOR_IE['zero_length_beacon_without_data'])
685
686    def test_associate_11a_only_with_vendor_ie_in_assoc_correct_length(self):
687        validate_setup_ap_and_associate(
688            access_point=self.access_point,
689            client=self.dut,
690            profile_name='whirlwind_11ab_legacy',
691            channel=hostapd_constants.AP_DEFAULT_CHANNEL_5G,
692            ssid=self.open_network_5g['SSID'],
693            additional_ap_parameters=hostapd_constants.
694            VENDOR_IE['correct_length_association_response'])
695
696    def test_associate_11a_only_with_vendor_ie_in_assoc_zero_length(self):
697        validate_setup_ap_and_associate(
698            access_point=self.access_point,
699            client=self.dut,
700            profile_name='whirlwind_11ab_legacy',
701            channel=hostapd_constants.AP_DEFAULT_CHANNEL_5G,
702            ssid=self.open_network_5g['SSID'],
703            additional_ap_parameters=hostapd_constants.VENDOR_IE[
704                'zero_length_association_'
705                'response_without_data'])
706
707    def test_associate_11g_only_long_preamble(self):
708        data_rates = utils.merge_dicts(hostapd_constants.OFDM_DATA_RATES,
709                                       hostapd_constants.OFDM_ONLY_BASIC_RATES)
710        validate_setup_ap_and_associate(
711            access_point=self.access_point,
712            client=self.dut,
713            profile_name='whirlwind_11ag_legacy',
714            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
715            ssid=self.open_network_2g['SSID'],
716            preamble=False,
717            additional_ap_parameters=data_rates)
718
719    def test_associate_11g_only_short_preamble(self):
720        data_rates = utils.merge_dicts(hostapd_constants.OFDM_DATA_RATES,
721                                       hostapd_constants.OFDM_ONLY_BASIC_RATES)
722        validate_setup_ap_and_associate(
723            access_point=self.access_point,
724            client=self.dut,
725            profile_name='whirlwind_11ag_legacy',
726            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
727            ssid=self.open_network_2g['SSID'],
728            preamble=True,
729            additional_ap_parameters=data_rates)
730
731    def test_associate_11g_only_minimal_beacon_interval(self):
732        data_rates = utils.merge_dicts(hostapd_constants.OFDM_DATA_RATES,
733                                       hostapd_constants.OFDM_ONLY_BASIC_RATES)
734        validate_setup_ap_and_associate(
735            access_point=self.access_point,
736            client=self.dut,
737            profile_name='whirlwind_11ag_legacy',
738            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
739            ssid=self.open_network_2g['SSID'],
740            beacon_interval=15,
741            additional_ap_parameters=data_rates)
742
743    def test_associate_11g_only_maximum_beacon_interval(self):
744        data_rates = utils.merge_dicts(hostapd_constants.OFDM_DATA_RATES,
745                                       hostapd_constants.OFDM_ONLY_BASIC_RATES)
746        validate_setup_ap_and_associate(
747            access_point=self.access_point,
748            client=self.dut,
749            profile_name='whirlwind_11ag_legacy',
750            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
751            ssid=self.open_network_2g['SSID'],
752            beacon_interval=1024,
753            additional_ap_parameters=data_rates)
754
755    def test_associate_11g_only_frag_threshold_430(self):
756        data_rates = utils.merge_dicts(hostapd_constants.OFDM_DATA_RATES,
757                                       hostapd_constants.OFDM_ONLY_BASIC_RATES)
758        validate_setup_ap_and_associate(
759            access_point=self.access_point,
760            client=self.dut,
761            profile_name='whirlwind_11ag_legacy',
762            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
763            ssid=self.open_network_2g['SSID'],
764            frag_threshold=430,
765            additional_ap_parameters=data_rates)
766
767    def test_associate_11g_only_rts_threshold_256(self):
768        data_rates = utils.merge_dicts(hostapd_constants.OFDM_DATA_RATES,
769                                       hostapd_constants.OFDM_ONLY_BASIC_RATES)
770        validate_setup_ap_and_associate(
771            access_point=self.access_point,
772            client=self.dut,
773            profile_name='whirlwind_11ag_legacy',
774            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
775            ssid=self.open_network_2g['SSID'],
776            rts_threshold=256,
777            additional_ap_parameters=data_rates)
778
779    def test_associate_11g_only_rts_256_frag_430(self):
780        data_rates = utils.merge_dicts(hostapd_constants.OFDM_DATA_RATES,
781                                       hostapd_constants.OFDM_ONLY_BASIC_RATES)
782        validate_setup_ap_and_associate(
783            access_point=self.access_point,
784            client=self.dut,
785            profile_name='whirlwind_11ag_legacy',
786            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
787            ssid=self.open_network_2g['SSID'],
788            rts_threshold=256,
789            frag_threshold=430,
790            additional_ap_parameters=data_rates)
791
792    def test_associate_11g_only_high_dtim_low_beacon_interval(self):
793        data_rates = utils.merge_dicts(hostapd_constants.OFDM_DATA_RATES,
794                                       hostapd_constants.OFDM_ONLY_BASIC_RATES)
795        validate_setup_ap_and_associate(
796            access_point=self.access_point,
797            client=self.dut,
798            profile_name='whirlwind_11ag_legacy',
799            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
800            ssid=self.open_network_2g['SSID'],
801            dtim_period=3,
802            beacon_interval=100,
803            additional_ap_parameters=data_rates)
804
805    def test_associate_11g_only_low_dtim_high_beacon_interval(self):
806        data_rates = utils.merge_dicts(hostapd_constants.OFDM_DATA_RATES,
807                                       hostapd_constants.OFDM_ONLY_BASIC_RATES)
808        validate_setup_ap_and_associate(
809            access_point=self.access_point,
810            client=self.dut,
811            profile_name='whirlwind_11ag_legacy',
812            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
813            ssid=self.open_network_2g['SSID'],
814            dtim_period=1,
815            beacon_interval=300,
816            additional_ap_parameters=data_rates)
817
818    def test_associate_11g_only_with_WMM_with_default_values(self):
819        data_rates = utils.merge_dicts(
820            hostapd_constants.OFDM_DATA_RATES,
821            hostapd_constants.OFDM_ONLY_BASIC_RATES,
822            hostapd_constants.WMM_PHYS_11A_11G_11N_11AC_DEFAULT_PARAMS)
823        validate_setup_ap_and_associate(
824            access_point=self.access_point,
825            client=self.dut,
826            profile_name='whirlwind_11ag_legacy',
827            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
828            ssid=self.open_network_2g['SSID'],
829            force_wmm=True,
830            additional_ap_parameters=data_rates)
831
832    def test_associate_11g_only_with_WMM_with_non_default_values(self):
833        data_rates = utils.merge_dicts(
834            hostapd_constants.OFDM_DATA_RATES,
835            hostapd_constants.OFDM_ONLY_BASIC_RATES,
836            hostapd_constants.WMM_NON_DEFAULT_PARAMS)
837        validate_setup_ap_and_associate(
838            access_point=self.access_point,
839            client=self.dut,
840            profile_name='whirlwind_11ag_legacy',
841            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
842            ssid=self.open_network_2g['SSID'],
843            force_wmm=True,
844            additional_ap_parameters=data_rates)
845
846    def test_associate_11g_only_with_WMM_ACM_on_BK(self):
847        data_rates = utils.merge_dicts(hostapd_constants.OFDM_DATA_RATES,
848                                       hostapd_constants.OFDM_ONLY_BASIC_RATES)
849        wmm_acm_bits_enabled = utils.merge_dicts(
850            hostapd_constants.WMM_PHYS_11A_11G_11N_11AC_DEFAULT_PARAMS,
851            hostapd_constants.WMM_ACM_BK, data_rates)
852        validate_setup_ap_and_associate(
853            access_point=self.access_point,
854            client=self.dut,
855            profile_name='whirlwind_11ag_legacy',
856            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
857            ssid=self.open_network_2g['SSID'],
858            force_wmm=True,
859            additional_ap_parameters=wmm_acm_bits_enabled)
860
861    def test_associate_11g_only_with_WMM_ACM_on_BE(self):
862        data_rates = utils.merge_dicts(hostapd_constants.OFDM_DATA_RATES,
863                                       hostapd_constants.OFDM_ONLY_BASIC_RATES)
864        wmm_acm_bits_enabled = utils.merge_dicts(
865            hostapd_constants.WMM_PHYS_11A_11G_11N_11AC_DEFAULT_PARAMS,
866            hostapd_constants.WMM_ACM_BE, data_rates)
867        validate_setup_ap_and_associate(
868            access_point=self.access_point,
869            client=self.dut,
870            profile_name='whirlwind_11ag_legacy',
871            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
872            ssid=self.open_network_2g['SSID'],
873            force_wmm=True,
874            additional_ap_parameters=wmm_acm_bits_enabled)
875
876    def test_associate_11g_only_with_WMM_ACM_on_VI(self):
877        data_rates = utils.merge_dicts(hostapd_constants.OFDM_DATA_RATES,
878                                       hostapd_constants.OFDM_ONLY_BASIC_RATES)
879        wmm_acm_bits_enabled = utils.merge_dicts(
880            hostapd_constants.WMM_PHYS_11A_11G_11N_11AC_DEFAULT_PARAMS,
881            hostapd_constants.WMM_ACM_VI, data_rates)
882        validate_setup_ap_and_associate(
883            access_point=self.access_point,
884            client=self.dut,
885            profile_name='whirlwind_11ag_legacy',
886            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
887            ssid=self.open_network_2g['SSID'],
888            force_wmm=True,
889            additional_ap_parameters=wmm_acm_bits_enabled)
890
891    def test_associate_11g_only_with_WMM_ACM_on_VO(self):
892        data_rates = utils.merge_dicts(hostapd_constants.OFDM_DATA_RATES,
893                                       hostapd_constants.OFDM_ONLY_BASIC_RATES)
894        wmm_acm_bits_enabled = utils.merge_dicts(
895            hostapd_constants.WMM_PHYS_11A_11G_11N_11AC_DEFAULT_PARAMS,
896            hostapd_constants.WMM_ACM_VO, data_rates)
897        validate_setup_ap_and_associate(
898            access_point=self.access_point,
899            client=self.dut,
900            profile_name='whirlwind_11ag_legacy',
901            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
902            ssid=self.open_network_2g['SSID'],
903            force_wmm=True,
904            additional_ap_parameters=wmm_acm_bits_enabled)
905
906    def test_associate_11g_only_with_WMM_ACM_on_BK_BE_VI(self):
907        data_rates = utils.merge_dicts(hostapd_constants.OFDM_DATA_RATES,
908                                       hostapd_constants.OFDM_ONLY_BASIC_RATES)
909        wmm_acm_bits_enabled = utils.merge_dicts(
910            hostapd_constants.WMM_PHYS_11A_11G_11N_11AC_DEFAULT_PARAMS,
911            hostapd_constants.WMM_ACM_BK, hostapd_constants.WMM_ACM_BE,
912            hostapd_constants.WMM_ACM_VI, data_rates)
913        validate_setup_ap_and_associate(
914            access_point=self.access_point,
915            client=self.dut,
916            profile_name='whirlwind_11ag_legacy',
917            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
918            ssid=self.open_network_2g['SSID'],
919            force_wmm=True,
920            additional_ap_parameters=wmm_acm_bits_enabled)
921
922    def test_associate_11g_only_with_WMM_ACM_on_BK_BE_VO(self):
923        data_rates = utils.merge_dicts(hostapd_constants.OFDM_DATA_RATES,
924                                       hostapd_constants.OFDM_ONLY_BASIC_RATES)
925        wmm_acm_bits_enabled = utils.merge_dicts(
926            hostapd_constants.WMM_PHYS_11A_11G_11N_11AC_DEFAULT_PARAMS,
927            hostapd_constants.WMM_ACM_BK, hostapd_constants.WMM_ACM_BE,
928            hostapd_constants.WMM_ACM_VO, data_rates)
929        validate_setup_ap_and_associate(
930            access_point=self.access_point,
931            client=self.dut,
932            profile_name='whirlwind_11ag_legacy',
933            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
934            ssid=self.open_network_2g['SSID'],
935            force_wmm=True,
936            additional_ap_parameters=wmm_acm_bits_enabled)
937
938    def test_associate_11g_only_with_WMM_ACM_on_BK_VI_VO(self):
939        data_rates = utils.merge_dicts(hostapd_constants.OFDM_DATA_RATES,
940                                       hostapd_constants.OFDM_ONLY_BASIC_RATES)
941        wmm_acm_bits_enabled = utils.merge_dicts(
942            hostapd_constants.WMM_PHYS_11A_11G_11N_11AC_DEFAULT_PARAMS,
943            hostapd_constants.WMM_ACM_BK, hostapd_constants.WMM_ACM_VI,
944            hostapd_constants.WMM_ACM_VO, data_rates)
945        validate_setup_ap_and_associate(
946            access_point=self.access_point,
947            client=self.dut,
948            profile_name='whirlwind_11ag_legacy',
949            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
950            ssid=self.open_network_2g['SSID'],
951            force_wmm=True,
952            additional_ap_parameters=wmm_acm_bits_enabled)
953
954    def test_associate_11g_only_with_WMM_ACM_on_BE_VI_VO(self):
955        data_rates = utils.merge_dicts(hostapd_constants.OFDM_DATA_RATES,
956                                       hostapd_constants.OFDM_ONLY_BASIC_RATES)
957        wmm_acm_bits_enabled = utils.merge_dicts(
958            hostapd_constants.WMM_PHYS_11A_11G_11N_11AC_DEFAULT_PARAMS,
959            hostapd_constants.WMM_ACM_BE, hostapd_constants.WMM_ACM_VI,
960            hostapd_constants.WMM_ACM_VO, data_rates)
961        validate_setup_ap_and_associate(
962            access_point=self.access_point,
963            client=self.dut,
964            profile_name='whirlwind_11ag_legacy',
965            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
966            ssid=self.open_network_2g['SSID'],
967            force_wmm=True,
968            additional_ap_parameters=wmm_acm_bits_enabled)
969
970    def test_associate_11g_only_with_country_code(self):
971        data_rates = utils.merge_dicts(hostapd_constants.OFDM_DATA_RATES,
972                                       hostapd_constants.OFDM_ONLY_BASIC_RATES)
973        country_info = utils.merge_dicts(
974            hostapd_constants.ENABLE_IEEE80211D,
975            hostapd_constants.COUNTRY_STRING['ALL'],
976            hostapd_constants.COUNTRY_CODE['UNITED_STATES'], data_rates)
977        validate_setup_ap_and_associate(
978            access_point=self.access_point,
979            client=self.dut,
980            profile_name='whirlwind_11ag_legacy',
981            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
982            ssid=self.open_network_2g['SSID'],
983            additional_ap_parameters=country_info)
984
985    def test_associate_11g_only_with_non_country_code(self):
986        data_rates = utils.merge_dicts(hostapd_constants.OFDM_DATA_RATES,
987                                       hostapd_constants.OFDM_ONLY_BASIC_RATES)
988        country_info = utils.merge_dicts(
989            hostapd_constants.ENABLE_IEEE80211D,
990            hostapd_constants.COUNTRY_STRING['ALL'],
991            hostapd_constants.COUNTRY_CODE['NON_COUNTRY'], data_rates)
992        validate_setup_ap_and_associate(
993            access_point=self.access_point,
994            client=self.dut,
995            profile_name='whirlwind_11ag_legacy',
996            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
997            ssid=self.open_network_2g['SSID'],
998            additional_ap_parameters=country_info)
999
1000    def test_associate_11g_only_with_hidden_ssid(self):
1001        data_rates = utils.merge_dicts(hostapd_constants.OFDM_DATA_RATES,
1002                                       hostapd_constants.OFDM_ONLY_BASIC_RATES)
1003        validate_setup_ap_and_associate(
1004            access_point=self.access_point,
1005            client=self.dut,
1006            profile_name='whirlwind_11ag_legacy',
1007            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1008            ssid=self.open_network_2g['SSID'],
1009            hidden=True,
1010            additional_ap_parameters=data_rates)
1011
1012    def test_associate_11g_only_with_vendor_ie_in_beacon_correct_length(self):
1013        data_rates = utils.merge_dicts(
1014            hostapd_constants.OFDM_DATA_RATES,
1015            hostapd_constants.OFDM_ONLY_BASIC_RATES,
1016            hostapd_constants.VENDOR_IE['correct_length_beacon'])
1017        validate_setup_ap_and_associate(
1018            access_point=self.access_point,
1019            client=self.dut,
1020            profile_name='whirlwind_11ag_legacy',
1021            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1022            ssid=self.open_network_2g['SSID'],
1023            additional_ap_parameters=data_rates)
1024
1025    def test_associate_11g_only_with_vendor_ie_in_beacon_zero_length(self):
1026        data_rates = utils.merge_dicts(
1027            hostapd_constants.OFDM_DATA_RATES,
1028            hostapd_constants.OFDM_ONLY_BASIC_RATES,
1029            hostapd_constants.VENDOR_IE['zero_length_beacon_without_data'])
1030        validate_setup_ap_and_associate(
1031            access_point=self.access_point,
1032            client=self.dut,
1033            profile_name='whirlwind_11ag_legacy',
1034            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1035            ssid=self.open_network_2g['SSID'],
1036            additional_ap_parameters=data_rates)
1037
1038    def test_associate_11g_only_with_vendor_ie_in_assoc_correct_length(self):
1039        data_rates = utils.merge_dicts(
1040            hostapd_constants.OFDM_DATA_RATES,
1041            hostapd_constants.OFDM_ONLY_BASIC_RATES,
1042            hostapd_constants.VENDOR_IE['correct_length_association_response'])
1043        validate_setup_ap_and_associate(
1044            access_point=self.access_point,
1045            client=self.dut,
1046            profile_name='whirlwind_11ag_legacy',
1047            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1048            ssid=self.open_network_2g['SSID'],
1049            additional_ap_parameters=data_rates)
1050
1051    def test_associate_11g_only_with_vendor_ie_in_assoc_zero_length(self):
1052        data_rates = utils.merge_dicts(
1053            hostapd_constants.OFDM_DATA_RATES,
1054            hostapd_constants.OFDM_ONLY_BASIC_RATES,
1055            hostapd_constants.VENDOR_IE['correct_length_association_response'],
1056            hostapd_constants.VENDOR_IE['zero_length_association_'
1057                                        'response_without_data'])
1058        validate_setup_ap_and_associate(
1059            access_point=self.access_point,
1060            client=self.dut,
1061            profile_name='whirlwind_11ag_legacy',
1062            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1063            ssid=self.open_network_2g['SSID'],
1064            additional_ap_parameters=data_rates)
1065
1066    def test_associate_11bg_only_long_preamble(self):
1067        validate_setup_ap_and_associate(
1068            access_point=self.access_point,
1069            client=self.dut,
1070            profile_name='whirlwind_11ag_legacy',
1071            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1072            ssid=self.open_network_2g['SSID'],
1073            preamble=False)
1074
1075    def test_associate_11bg_short_preamble(self):
1076        validate_setup_ap_and_associate(
1077            access_point=self.access_point,
1078            client=self.dut,
1079            profile_name='whirlwind_11ag_legacy',
1080            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1081            ssid=self.open_network_2g['SSID'],
1082            preamble=True)
1083
1084    def test_associate_11bg_minimal_beacon_interval(self):
1085        validate_setup_ap_and_associate(
1086            access_point=self.access_point,
1087            client=self.dut,
1088            profile_name='whirlwind_11ag_legacy',
1089            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1090            ssid=self.open_network_2g['SSID'],
1091            beacon_interval=15)
1092
1093    def test_associate_11bg_maximum_beacon_interval(self):
1094        validate_setup_ap_and_associate(
1095            access_point=self.access_point,
1096            client=self.dut,
1097            profile_name='whirlwind_11ag_legacy',
1098            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1099            ssid=self.open_network_2g['SSID'],
1100            beacon_interval=1024)
1101
1102    def test_associate_11bg_frag_threshold_430(self):
1103        validate_setup_ap_and_associate(
1104            access_point=self.access_point,
1105            client=self.dut,
1106            profile_name='whirlwind_11ag_legacy',
1107            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1108            ssid=self.open_network_2g['SSID'],
1109            frag_threshold=430)
1110
1111    def test_associate_11bg_rts_threshold_256(self):
1112        validate_setup_ap_and_associate(
1113            access_point=self.access_point,
1114            client=self.dut,
1115            profile_name='whirlwind_11ag_legacy',
1116            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1117            ssid=self.open_network_2g['SSID'],
1118            rts_threshold=256)
1119
1120    def test_associate_11bg_rts_256_frag_430(self):
1121        validate_setup_ap_and_associate(
1122            access_point=self.access_point,
1123            client=self.dut,
1124            profile_name='whirlwind_11ag_legacy',
1125            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1126            ssid=self.open_network_2g['SSID'],
1127            rts_threshold=256,
1128            frag_threshold=430)
1129
1130    def test_associate_11bg_high_dtim_low_beacon_interval(self):
1131        validate_setup_ap_and_associate(
1132            access_point=self.access_point,
1133            client=self.dut,
1134            profile_name='whirlwind_11ag_legacy',
1135            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1136            ssid=self.open_network_2g['SSID'],
1137            dtim_period=3,
1138            beacon_interval=100)
1139
1140    def test_associate_11bg_low_dtim_high_beacon_interval(self):
1141        validate_setup_ap_and_associate(
1142            access_point=self.access_point,
1143            client=self.dut,
1144            profile_name='whirlwind_11ag_legacy',
1145            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1146            ssid=self.open_network_2g['SSID'],
1147            dtim_period=1,
1148            beacon_interval=300)
1149
1150    def test_associate_11bg_with_WMM_with_default_values(self):
1151        validate_setup_ap_and_associate(
1152            access_point=self.access_point,
1153            client=self.dut,
1154            profile_name='whirlwind_11ag_legacy',
1155            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1156            ssid=self.open_network_2g['SSID'],
1157            force_wmm=True,
1158            additional_ap_parameters=hostapd_constants.
1159            WMM_PHYS_11A_11G_11N_11AC_DEFAULT_PARAMS)
1160
1161    def test_associate_11bg_with_WMM_with_non_default_values(self):
1162        validate_setup_ap_and_associate(
1163            access_point=self.access_point,
1164            client=self.dut,
1165            profile_name='whirlwind_11ag_legacy',
1166            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1167            ssid=self.open_network_2g['SSID'],
1168            force_wmm=True,
1169            additional_ap_parameters=hostapd_constants.WMM_NON_DEFAULT_PARAMS)
1170
1171    def test_associate_11bg_with_WMM_ACM_on_BK(self):
1172        wmm_acm_bits_enabled = utils.merge_dicts(
1173            hostapd_constants.WMM_PHYS_11A_11G_11N_11AC_DEFAULT_PARAMS,
1174            hostapd_constants.WMM_ACM_BK)
1175        validate_setup_ap_and_associate(
1176            access_point=self.access_point,
1177            client=self.dut,
1178            profile_name='whirlwind_11ag_legacy',
1179            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1180            ssid=self.open_network_2g['SSID'],
1181            force_wmm=True,
1182            additional_ap_parameters=wmm_acm_bits_enabled)
1183
1184    def test_associate_11bg_with_WMM_ACM_on_BE(self):
1185        wmm_acm_bits_enabled = utils.merge_dicts(
1186            hostapd_constants.WMM_PHYS_11A_11G_11N_11AC_DEFAULT_PARAMS,
1187            hostapd_constants.WMM_ACM_BE)
1188        validate_setup_ap_and_associate(
1189            access_point=self.access_point,
1190            client=self.dut,
1191            profile_name='whirlwind_11ag_legacy',
1192            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1193            ssid=self.open_network_2g['SSID'],
1194            force_wmm=True,
1195            additional_ap_parameters=wmm_acm_bits_enabled)
1196
1197    def test_associate_11bg_with_WMM_ACM_on_VI(self):
1198        wmm_acm_bits_enabled = utils.merge_dicts(
1199            hostapd_constants.WMM_PHYS_11A_11G_11N_11AC_DEFAULT_PARAMS,
1200            hostapd_constants.WMM_ACM_VI)
1201        validate_setup_ap_and_associate(
1202            access_point=self.access_point,
1203            client=self.dut,
1204            profile_name='whirlwind_11ag_legacy',
1205            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1206            ssid=self.open_network_2g['SSID'],
1207            force_wmm=True,
1208            additional_ap_parameters=wmm_acm_bits_enabled)
1209
1210    def test_associate_11bg_with_WMM_ACM_on_VO(self):
1211        wmm_acm_bits_enabled = utils.merge_dicts(
1212            hostapd_constants.WMM_PHYS_11A_11G_11N_11AC_DEFAULT_PARAMS,
1213            hostapd_constants.WMM_ACM_VO)
1214        validate_setup_ap_and_associate(
1215            access_point=self.access_point,
1216            client=self.dut,
1217            profile_name='whirlwind_11ag_legacy',
1218            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1219            ssid=self.open_network_2g['SSID'],
1220            force_wmm=True,
1221            additional_ap_parameters=wmm_acm_bits_enabled)
1222
1223    def test_associate_11bg_with_WMM_ACM_on_BK_BE_VI(self):
1224        wmm_acm_bits_enabled = utils.merge_dicts(
1225            hostapd_constants.WMM_PHYS_11A_11G_11N_11AC_DEFAULT_PARAMS,
1226            hostapd_constants.WMM_ACM_BK, hostapd_constants.WMM_ACM_BE,
1227            hostapd_constants.WMM_ACM_VI)
1228        validate_setup_ap_and_associate(
1229            access_point=self.access_point,
1230            client=self.dut,
1231            profile_name='whirlwind_11ag_legacy',
1232            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1233            ssid=self.open_network_2g['SSID'],
1234            force_wmm=True,
1235            additional_ap_parameters=wmm_acm_bits_enabled)
1236
1237    def test_associate_11bg_with_WMM_ACM_on_BK_BE_VO(self):
1238        wmm_acm_bits_enabled = utils.merge_dicts(
1239            hostapd_constants.WMM_PHYS_11A_11G_11N_11AC_DEFAULT_PARAMS,
1240            hostapd_constants.WMM_ACM_BK, hostapd_constants.WMM_ACM_BE,
1241            hostapd_constants.WMM_ACM_VO)
1242        validate_setup_ap_and_associate(
1243            access_point=self.access_point,
1244            client=self.dut,
1245            profile_name='whirlwind_11ag_legacy',
1246            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1247            ssid=self.open_network_2g['SSID'],
1248            force_wmm=True,
1249            additional_ap_parameters=wmm_acm_bits_enabled)
1250
1251    def test_associate_11bg_with_WMM_ACM_on_BK_VI_VO(self):
1252        wmm_acm_bits_enabled = utils.merge_dicts(
1253            hostapd_constants.WMM_PHYS_11A_11G_11N_11AC_DEFAULT_PARAMS,
1254            hostapd_constants.WMM_ACM_BK, hostapd_constants.WMM_ACM_VI,
1255            hostapd_constants.WMM_ACM_VO)
1256        validate_setup_ap_and_associate(
1257            access_point=self.access_point,
1258            client=self.dut,
1259            profile_name='whirlwind_11ag_legacy',
1260            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1261            ssid=self.open_network_2g['SSID'],
1262            force_wmm=True,
1263            additional_ap_parameters=wmm_acm_bits_enabled)
1264
1265    def test_associate_11bg_with_WMM_ACM_on_BE_VI_VO(self):
1266        wmm_acm_bits_enabled = utils.merge_dicts(
1267            hostapd_constants.WMM_PHYS_11A_11G_11N_11AC_DEFAULT_PARAMS,
1268            hostapd_constants.WMM_ACM_BE, hostapd_constants.WMM_ACM_VI,
1269            hostapd_constants.WMM_ACM_VO)
1270        validate_setup_ap_and_associate(
1271            access_point=self.access_point,
1272            client=self.dut,
1273            profile_name='whirlwind_11ag_legacy',
1274            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1275            ssid=self.open_network_2g['SSID'],
1276            force_wmm=True,
1277            additional_ap_parameters=wmm_acm_bits_enabled)
1278
1279    def test_associate_11bg_with_country_code(self):
1280        country_info = utils.merge_dicts(
1281            hostapd_constants.ENABLE_IEEE80211D,
1282            hostapd_constants.COUNTRY_STRING['ALL'],
1283            hostapd_constants.COUNTRY_CODE['UNITED_STATES'])
1284        validate_setup_ap_and_associate(
1285            access_point=self.access_point,
1286            client=self.dut,
1287            profile_name='whirlwind_11ag_legacy',
1288            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1289            ssid=self.open_network_2g['SSID'],
1290            additional_ap_parameters=country_info)
1291
1292    def test_associate_11bg_with_non_country_code(self):
1293        country_info = utils.merge_dicts(
1294            hostapd_constants.ENABLE_IEEE80211D,
1295            hostapd_constants.COUNTRY_STRING['ALL'],
1296            hostapd_constants.COUNTRY_CODE['NON_COUNTRY'])
1297        validate_setup_ap_and_associate(
1298            access_point=self.access_point,
1299            client=self.dut,
1300            profile_name='whirlwind_11ag_legacy',
1301            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1302            ssid=self.open_network_2g['SSID'],
1303            additional_ap_parameters=country_info)
1304
1305    def test_associate_11bg_only_with_hidden_ssid(self):
1306        validate_setup_ap_and_associate(
1307            access_point=self.access_point,
1308            client=self.dut,
1309            profile_name='whirlwind_11ag_legacy',
1310            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1311            ssid=self.open_network_2g['SSID'],
1312            hidden=True)
1313
1314    def test_associate_11bg_with_vendor_ie_in_beacon_correct_length(self):
1315        validate_setup_ap_and_associate(
1316            access_point=self.access_point,
1317            client=self.dut,
1318            profile_name='whirlwind_11ag_legacy',
1319            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1320            ssid=self.open_network_2g['SSID'],
1321            additional_ap_parameters=hostapd_constants.
1322            VENDOR_IE['correct_length_beacon'])
1323
1324    def test_associate_11bg_with_vendor_ie_in_beacon_zero_length(self):
1325        validate_setup_ap_and_associate(
1326            access_point=self.access_point,
1327            client=self.dut,
1328            profile_name='whirlwind_11ag_legacy',
1329            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1330            ssid=self.open_network_2g['SSID'],
1331            additional_ap_parameters=hostapd_constants.
1332            VENDOR_IE['zero_length_beacon_without_data'])
1333
1334    def test_associate_11g_only_with_vendor_ie_in_assoc_correct_length(self):
1335        data_rates = utils.merge_dicts(
1336            hostapd_constants.OFDM_DATA_RATES,
1337            hostapd_constants.OFDM_ONLY_BASIC_RATES,
1338            hostapd_constants.VENDOR_IE['correct_length_association_response'])
1339        validate_setup_ap_and_associate(
1340            access_point=self.access_point,
1341            client=self.dut,
1342            profile_name='whirlwind_11ag_legacy',
1343            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1344            ssid=self.open_network_2g['SSID'],
1345            additional_ap_parameters=data_rates)
1346
1347    def test_associate_11g_only_with_vendor_ie_in_assoc_zero_length(self):
1348        data_rates = utils.merge_dicts(
1349            hostapd_constants.OFDM_DATA_RATES,
1350            hostapd_constants.OFDM_ONLY_BASIC_RATES,
1351            hostapd_constants.VENDOR_IE['correct_length_association_response'],
1352            hostapd_constants.VENDOR_IE['zero_length_association_'
1353                                        'response_without_data'])
1354        validate_setup_ap_and_associate(
1355            access_point=self.access_point,
1356            client=self.dut,
1357            profile_name='whirlwind_11ag_legacy',
1358            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1359            ssid=self.open_network_2g['SSID'],
1360            additional_ap_parameters=data_rates)
1361
1362    def test_minimum_ssid_length_2g_11n_20mhz(self):
1363        validate_setup_ap_and_associate(
1364            access_point=self.access_point,
1365            client=self.dut,
1366            profile_name='whirlwind_11ab_legacy',
1367            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1368            ssid=self.open_network_min_len_2g['SSID'])
1369
1370    def test_minimum_ssid_length_5g_11ac_80mhz(self):
1371        validate_setup_ap_and_associate(
1372            access_point=self.access_point,
1373            client=self.dut,
1374            profile_name='whirlwind_11ab_legacy',
1375            channel=hostapd_constants.AP_DEFAULT_CHANNEL_5G,
1376            ssid=self.open_network_min_len_5g['SSID'])
1377
1378    def test_maximum_ssid_length_2g_11n_20mhz(self):
1379        validate_setup_ap_and_associate(
1380            access_point=self.access_point,
1381            client=self.dut,
1382            profile_name='whirlwind_11ab_legacy',
1383            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1384            ssid=self.open_network_max_len_2g['SSID'])
1385
1386    def test_maximum_ssid_length_5g_11ac_80mhz(self):
1387        validate_setup_ap_and_associate(
1388            access_point=self.access_point,
1389            client=self.dut,
1390            profile_name='whirlwind_11ab_legacy',
1391            channel=hostapd_constants.AP_DEFAULT_CHANNEL_5G,
1392            ssid=self.open_network_max_len_5g['SSID'])
1393
1394    def test_ssid_with_UTF8_characters_2g_11n_20mhz(self):
1395        validate_setup_ap_and_associate(
1396            access_point=self.access_point,
1397            client=self.dut,
1398            profile_name='whirlwind_11ab_legacy',
1399            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1400            ssid=self.utf8_ssid_2g)
1401
1402    def test_ssid_with_UTF8_characters_5g_11ac_80mhz(self):
1403        validate_setup_ap_and_associate(
1404            access_point=self.access_point,
1405            client=self.dut,
1406            profile_name='whirlwind_11ab_legacy',
1407            channel=hostapd_constants.AP_DEFAULT_CHANNEL_5G,
1408            ssid=self.utf8_ssid_5g)
1409
1410    def test_ssid_with_UTF8_characters_french_2g_11n_20mhz(self):
1411        validate_setup_ap_and_associate(
1412            access_point=self.access_point,
1413            client=self.dut,
1414            profile_name='whirlwind_11ab_legacy',
1415            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1416            ssid=self.utf8_ssid_2g_french)
1417
1418    def test_ssid_with_UTF8_characters_german_2g_11n_20mhz(self):
1419        validate_setup_ap_and_associate(
1420            access_point=self.access_point,
1421            client=self.dut,
1422            profile_name='whirlwind_11ab_legacy',
1423            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1424            ssid=self.utf8_ssid_2g_german)
1425
1426    def test_ssid_with_UTF8_characters_dutch_2g_11n_20mhz(self):
1427        validate_setup_ap_and_associate(
1428            access_point=self.access_point,
1429            client=self.dut,
1430            profile_name='whirlwind_11ab_legacy',
1431            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1432            ssid=self.utf8_ssid_2g_dutch)
1433
1434    def test_ssid_with_UTF8_characters_swedish_2g_11n_20mhz(self):
1435        validate_setup_ap_and_associate(
1436            access_point=self.access_point,
1437            client=self.dut,
1438            profile_name='whirlwind_11ab_legacy',
1439            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1440            ssid=self.utf8_ssid_2g_swedish)
1441
1442    def test_ssid_with_UTF8_characters_norwegian_2g_11n_20mhz(self):
1443        validate_setup_ap_and_associate(
1444            access_point=self.access_point,
1445            client=self.dut,
1446            profile_name='whirlwind_11ab_legacy',
1447            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1448            ssid=self.utf8_ssid_2g_norwegian)
1449
1450    def test_ssid_with_UTF8_characters_danish_2g_11n_20mhz(self):
1451        validate_setup_ap_and_associate(
1452            access_point=self.access_point,
1453            client=self.dut,
1454            profile_name='whirlwind_11ab_legacy',
1455            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1456            ssid=self.utf8_ssid_2g_danish)
1457
1458    def test_ssid_with_UTF8_characters_japanese_2g_11n_20mhz(self):
1459        validate_setup_ap_and_associate(
1460            access_point=self.access_point,
1461            client=self.dut,
1462            profile_name='whirlwind_11ab_legacy',
1463            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1464            ssid=self.utf8_ssid_2g_japanese)
1465
1466    def test_ssid_with_UTF8_characters_spanish_2g_11n_20mhz(self):
1467        validate_setup_ap_and_associate(
1468            access_point=self.access_point,
1469            client=self.dut,
1470            profile_name='whirlwind_11ab_legacy',
1471            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1472            ssid=self.utf8_ssid_2g_spanish)
1473
1474    def test_ssid_with_UTF8_characters_italian_2g_11n_20mhz(self):
1475        validate_setup_ap_and_associate(
1476            access_point=self.access_point,
1477            client=self.dut,
1478            profile_name='whirlwind_11ab_legacy',
1479            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1480            ssid=self.utf8_ssid_2g_italian)
1481
1482    def test_ssid_with_UTF8_characters_korean_2g_11n_20mhz(self):
1483        validate_setup_ap_and_associate(
1484            access_point=self.access_point,
1485            client=self.dut,
1486            profile_name='whirlwind_11ab_legacy',
1487            channel=hostapd_constants.AP_DEFAULT_CHANNEL_2G,
1488            ssid=self.utf8_ssid_2g_korean)
1489