pt., 9 paź 2020 o 14:11 Jouni Malinen <j@xxxxx> napisał(a): > > On Fri, Oct 09, 2020 at 01:44:32PM +0200, Janusz Dziedzic wrote: > > pt., 9 paź 2020 o 10:37 Jouni Malinen <j@xxxxx> napisał(a): > > > > > > On Sat, Oct 03, 2020 at 02:00:12PM +0200, Janusz Dziedzic wrote: > > > > For EU, where preCAC is allowed, we should > > > > allow switch to DFS available channels, instead > > > > of restart BSS. > > > > > > Could you please clarify how this is supposed to work in regulatory > > > domains that do not allow previously done CAC results to be used? The > > > test case added in 2/2 seems to pass even if running the AP with country > > > US or CA.. > > > > Test itself choose/force EU country and expect AP-CSA-FINISHED > > + # Toggle regulatory - clean all preCAC > > + hostapd.cmd_execute(apdev[0], ['iw', 'reg', 'set', "US"]) > > + > > + hapd = start_dfs_ap(apdev[0], country="PL") > > And that "PL" is indeed what I replaced with "CA" and "US" to confirm > that patch 1/2 did not enable something that it shouldn't enable.. > However, the test was still passing when the country code was pointing > to non-ETSI country. Can you please clarify why this is the case and how > does this protect expected functionality (new CAC required) outside the > ETSI regulatory domain? > Seems I see what is wrong. This is mainly because we cache channels state in hostapd and my code do fast chan_switch: CHAN_SWITCH 5 5180 ht CHAN_SWITCH 5 5260 ht and we get late DFS-PRE-CAC-EXPIRED When add 2 second sleep between chan_switch - fail correctly: @@ -662,7 +662,7 @@ def test_dfs_chan_switch_precac(dev, apdev): # Toggle regulatory - clean all preCAC hostapd.cmd_execute(apdev[0], ['iw', 'reg', 'set', "US"]) - hapd = start_dfs_ap(apdev[0], country="PL") + hapd = start_dfs_ap(apdev[0], country="US") ev = wait_dfs_event(hapd, "DFS-CAC-COMPLETED", 70) if "success=1" not in ev: @@ -692,6 +692,8 @@ def test_dfs_chan_switch_precac(dev, apdev): if freq != "5180": raise Exception("Unexpected frequency") + time.sleep(2) + 192.168.0.11/wlp2s0: <3>DFS-CAC-START freq=5260 chan=52 sec_chan=0, width=0, seg0=0, seg1=0, cac_time=60s 192.168.0.11/wlp2s0: CTRL: STATUS 192.168.0.11/wlp2s0: <3>DFS-CAC-COMPLETED success=1 freq=5260 ht_enabled=1 chan_offset=0 chan_width=1 cf1=5260 cf2=0 192.168.0.11/wlp2s0: <3>AP-ENABLED 192.168.0.11/wlp2s0: CTRL: STATUS 192.168.0.11/wlp2s0: CTRL: CHAN_SWITCH 5 5180 ht 192.168.0.11/wlp2s0: <3>CTRL-EVENT-STARTED-CHANNEL-SWITCH freq=5180 ht_enabled=1 ch_offset=0 ch_width=20 MHz cf1=5180 cf2=0 dfs=0 192.168.0.11/wlp2s0: <3>CTRL-EVENT-CHANNEL-SWITCH freq=5180 ht_enabled=1 ch_offset=0 ch_width=20 MHz cf1=5180 cf2=0 dfs=0 192.168.0.11/wlp2s0: <3>AP-CSA-FINISHED freq=5180 dfs=0 192.168.0.11/wlp2s0: CTRL: STATUS 192.168.0.11/wlp2s0: CTRL: CHAN_SWITCH 5 5260 ht 192.168.0.11/wlp2s0: <3>DFS-PRE-CAC-EXPIRED freq=5260 ht_enabled=0 chan_offset=0 chan_width=0 cf1=5260 cf2=0 192.168.0.11/wlp2s0: <3>AP-DISABLED 192.168.0.11/wlp2s0: <3>DFS-CAC-START freq=5260 chan=52 sec_chan=0, width=0, seg0=0, seg1=0, cac_time=60s 192.168.0.11/wlp2s0: CTRL: DISABLE Should I send patch with 2 seconds delay between chan_switch and add negative test also? But for the future shouldn't we always read channels state from kernel/driver/lower_layer? Each time we get some EVENT/CTRL re-read channel states? BR Janusz > > I can add negative test also, where will set (we could pass country as a param) > > hapd = start_dfs_ap(apdev[0], country="US") > > and will expect fail - (we will not get AP-CSA-FINISHED - while AP > > will be restarted). > > It would be useful to do that as well especially since I was trying to > do that exact check just to notice that the expected second CAC did not > happen. > > -- > Jouni Malinen PGP id EFC895FA -- Janusz Dziedzic _______________________________________________ Hostap mailing list Hostap@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/hostap