# Test cases for wpa_supplicant WMM-AC operations # Copyright (c) 2014, Intel Corporation # # This software may be distributed under the terms of the BSD license. # See README for more details. import logging logger = logging.getLogger() import hwsim_utils import hostapd def add_wmm_ap(apdev, acm_list): params = { "ssid": "wmm_ac", "hw_mode": "g", "channel": "11", "wmm_enabled" : "1"} for ac in acm_list: params["wmm_ac_%s_acm" % (ac.lower())] = "1" return hostapd.add_ap(apdev[0]['ifname'], params) def test_tspec(dev, apdev): """Basic addts/delts tests""" # configure ap with VO and VI requiring admission-control hapd = add_wmm_ap(apdev, ["VO", "VI"]) dev[0].connect("wmm_ac", key_mgmt="NONE", scan_freq="2462") hwsim_utils.test_connectivity(dev[0], hapd) status = dev[0].request("WMM_AC_STATUS") if "WMM AC is Enabled" not in status: raise Exception("WMM-AC not enabled") if "TSID" in status: raise Exception("Unexpected TSID info") if "BK: acm=0 uapsd=0" not in status: raise Exception("Unexpected BK info" + status) if "BE: acm=0 uapsd=0" not in status: raise Exception("Unexpected BE info" + status) if "VI: acm=1 uapsd=0" not in status: raise Exception("Unexpected VI info" + status) if "VO: acm=1 uapsd=0" not in status: raise Exception("Unexpected VO info" + status) tsid = 5 # make sure we fail when the ac is not configured for acm try: dev[0].add_ts(tsid, 3) raise Exception("ADDTS succeeded although it should have failed") except Exception, e: if not str(e).startswith("ADDTS failed"): raise status = dev[0].request("WMM_AC_STATUS") if "TSID" in status: raise Exception("Unexpected TSID info") # add tspec for UP=6 dev[0].add_ts(tsid, 6) status = dev[0].request("WMM_AC_STATUS") if "TSID" not in status: raise Exception("Missing TSID info") # using the same tsid for a different ac is invalid try: dev[0].add_ts(tsid, 5) raise Exception("ADDTS succeeded although it should have failed") except Exception, e: if not str(e).startswith("ADDTS failed"): raise # update the tspec for a different UP of the same ac dev[0].add_ts(tsid, 7) dev[0].del_ts(tsid) status = dev[0].request("WMM_AC_STATUS") if "TSID" in status: raise Exception("Unexpected TSID info")