diff --git a/tests/hwsim/test_ap_params.py b/tests/hwsim/test_ap_params.py index 504def3d1..f65bb015e 100644 --- a/tests/hwsim/test_ap_params.py +++ b/tests/hwsim/test_ap_params.py @@ -8,12 +8,14 @@ from remotehost import remote_compatible import logging logger = logging.getLogger() import os +import struct import subprocess +import time import hwsim_utils import hostapd from tshark import run_tshark -from utils import alloc_fail, HwsimSkip +from utils import alloc_fail, HwsimSkip, parse_ie @remote_compatible def test_ap_fragmentation_rts_set_high(dev, apdev): @@ -610,3 +612,29 @@ def test_ap_eapol_version(dev, apdev): raise Exception("Unexpected default eapol_version: " + ver1) if ver2 != "01": raise Exception("eapol_version did not match configuration: " + ver2) + +def test_ap_dtim_period(dev, apdev): + """DTIM period configuration""" + ssid = "dtim-period" + params = { 'ssid': ssid, 'dtim_period': "10" } + hapd = hostapd.add_ap(apdev[0], params) + bssid = hapd.own_addr() + dev[0].connect(ssid, key_mgmt="NONE", scan_freq="2412") + for i in range(10): + dev[0].scan(freq="2412") + bss = dev[0].get_bss(bssid) + if 'beacon_ie' in bss: + break + time.sleep(0.2) + if 'beacon_ie' not in bss: + raise Exception("Did not find Beacon IEs") + + ie = parse_ie(bss['beacon_ie']) + if 5 not in ie: + raise Exception("TIM element missing") + count, period = struct.unpack('BB', ie[5][0:2]) + logger.info("DTIM count %d DTIM period %d" % (count, period)) + if period != 10: + raise Exception("Unexpected DTIM period: %d" % period) + if count >= period: + raise Exception("Unexpected DTIM count: %d" % count)