# Copyright 2019 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

AUTHOR = 'briannorris'
NAME = 'network_WiFi_APSupportedRates.11ac'
TIME = 'SHORT'
TEST_TYPE = 'Server'
# TODO(crbug.com/953702): move to wifi_matfunc once stable.
ATTRIBUTES = ('suite:wifi_flaky')
DEPENDENCIES = 'wificell'

DOC = """
Verify that we respond sanely to APs that disable certain legacy bitrates.
"""

from autotest_lib.server.cros.network import hostap_config

def run(machine):
    ap_config = hostap_config.HostapConfig(
        channel=157, mode=hostap_config.HostapConfig.MODE_11AC_MIXED,
        vht_center_channel=155,
        vht_channel_width=hostap_config.HostapConfig.VHT_CHANNEL_WIDTH_80,
        supported_rates=[36, 48, 54],
        basic_rates=[36],
        n_capabilities=[hostap_config.HostapConfig.N_CAPABILITY_HT40_PLUS])

    job.run_test('network_WiFi_APSupportedRates',
                 host=hosts.create_host(machine),
                 raw_cmdline_args=args,
                 additional_params=ap_config)


parallel_simple(run, machines)
