mirror of
https://git.kernel.org/pub/scm/network/wireless/iwd.git
synced 2024-11-22 14:49:24 +01:00
auto-t: fix SAQuery-spoofing test
This test occationally failed due to a badly timed DBus scan triggering right when hwsim tried sending out the spoofed frame. This caused mac80211_hwsim to reject CMD_FRAME when the timing was just right. Rather than always starting a DBus scan we can rely on periodic scans and only DBus scan if there are no networks in IWD's list. A scanning check was also added prior to sending out the frame and if true we wait for not scanning. This is more paranoia than anything.
This commit is contained in:
parent
e7d941dc3c
commit
5c96e1e81e
@ -32,12 +32,7 @@ class Test(unittest.TestCase):
|
||||
condition = 'not obj.scanning'
|
||||
wd.wait_for_object_condition(device, condition)
|
||||
|
||||
device.scan()
|
||||
|
||||
condition = 'not obj.scanning'
|
||||
wd.wait_for_object_condition(device, condition)
|
||||
|
||||
ordered_network = device.get_ordered_network('ssidCCMP')
|
||||
ordered_network = device.get_ordered_network('ssidCCMP', scan_if_needed=True)
|
||||
|
||||
self.assertEqual(ordered_network.type, NetworkType.psk)
|
||||
|
||||
@ -49,9 +44,12 @@ class Test(unittest.TestCase):
|
||||
condition = 'obj.state == DeviceState.connected'
|
||||
wd.wait_for_object_condition(device, condition)
|
||||
|
||||
# TODO: for some reason hostapd does not respond to SA query if done
|
||||
# too soon after connection.
|
||||
sleep(1)
|
||||
# Ensure IWD is not scanning. This causes problems with mac80211_hwsim
|
||||
# where CMD_FRAME will fail during a scan. This is due to the frame not
|
||||
# having the same frequency as the radio (since hwsim is off-channel)
|
||||
if device.scanning:
|
||||
condition = 'not obj.scanning'
|
||||
wd.wait_for_object_condition(device, condition)
|
||||
|
||||
# Spoof a disassociate frame. This will kick off SA Query procedure.
|
||||
hwsim.spoof_disassociate(radio, hostapd.get_freq(), device.address)
|
||||
|
Loading…
Reference in New Issue
Block a user