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