From: Johannes Berg <johannes.berg@xxxxxxxxx> When puncturing is used on EHT, the HT/VHT/HE channel configuration must not encompass the punctured subchannel, so must use a lower bandwidth. Change the puncturing tests accordingly. Signed-off-by: Johannes Berg <johannes.berg@xxxxxxxxx> --- tests/hwsim/test_eht.py | 44 ++++++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/tests/hwsim/test_eht.py b/tests/hwsim/test_eht.py index 28e06dc76f1d..9c3720d5e80c 100644 --- a/tests/hwsim/test_eht.py +++ b/tests/hwsim/test_eht.py @@ -1123,7 +1123,13 @@ def _5ghz_chanwidth_to_bw(op): }.get(op, "20") def _test_eht_5ghz(dev, apdev, channel, chanwidth, ccfs1, ccfs2=0, - eht_oper_puncturing_override=None): + eht_oper_puncturing_override=None, + he_ccfs1=None, he_oper_chanwidth=None): + if he_ccfs1 is None: + he_ccfs1 = ccfs1 + if he_oper_chanwidth is None: + he_oper_chanwidth = chanwidth + try: params = {"ssid": "eht", "country_code": "US", @@ -1133,33 +1139,32 @@ def _test_eht_5ghz(dev, apdev, channel, chanwidth, ccfs1, ccfs2=0, "ieee80211ac": "1", "ieee80211ax": "1", "ieee80211be": "1", - "vht_oper_chwidth": str(chanwidth), - "vht_oper_centr_freq_seg0_idx": str(ccfs1), + "vht_oper_chwidth": str(he_oper_chanwidth), + "vht_oper_centr_freq_seg0_idx": str(he_ccfs1), "vht_oper_centr_freq_seg1_idx": str(ccfs2), - "he_oper_chwidth": str(chanwidth), + "he_oper_chwidth": str(he_oper_chanwidth), + "he_oper_centr_freq_seg0_idx": str(he_ccfs1), "he_oper_centr_freq_seg1_idx": str(ccfs2), - "he_oper_centr_freq_seg0_idx": str(ccfs1), "eht_oper_centr_freq_seg0_idx": str(ccfs1), "eht_oper_chwidth": str(chanwidth)} - if chanwidth == 0: - if channel == ccfs1: - bw = "20" - elif channel < ccfs1: + if he_oper_chanwidth == 0: + if channel < he_ccfs1: params["ht_capab"] = "[HT40+]" - else: + elif channel > he_ccfs1: params["ht_capab"] = "[HT40-]" else: - params["ht_capab"] = "[HT40+]" - if chanwidth == 2: - params["vht_capab"] = "[VHT160]" - elif chanwidth == 3: - params["vht_capab"] = "[VHT160-80PLUS80]" + params["ht_capab"] = "[HT40+]" + if he_oper_chanwidth == 2: + params["vht_capab"] = "[VHT160]" + elif he_oper_chanwidth == 3: + params["vht_capab"] = "[VHT160-80PLUS80]" if eht_oper_puncturing_override: params['eht_oper_puncturing_override'] = eht_oper_puncturing_override freq = 5000 + channel * 5 + bw = "20" if chanwidth != 0 or channel != ccfs1: bw = _5ghz_chanwidth_to_bw(chanwidth) @@ -1206,21 +1211,24 @@ def test_eht_5ghz_80mhz_puncturing_override_1(dev, apdev): # The 2nd 20 MHz is punctured _test_eht_5ghz(dev, apdev, 36, 1, 42, 0, - eht_oper_puncturing_override="0x0002") + eht_oper_puncturing_override="0x0002", + he_ccfs1=36, he_oper_chanwidth=0) def test_eht_5ghz_80mhz_puncturing_override_2(dev, apdev): """EHT with 80 MHz channel width on 5 GHz - primary=149 - puncturing override (3rd)""" # The 3rd 20 MHz is punctured _test_eht_5ghz(dev, apdev, 149, 1, 155, 0, - eht_oper_puncturing_override="0x0004") + eht_oper_puncturing_override="0x0004", + he_ccfs1=151, he_oper_chanwidth=0) def test_eht_5ghz_80mhz_puncturing_override_3(dev, apdev): """EHT with 80 MHz channel width on 5 GHz - primary=149 - puncturing override (4th)""" # The 4th 20 MHz is punctured _test_eht_5ghz(dev, apdev, 149, 1, 155, 0, - eht_oper_puncturing_override="0x0008") + eht_oper_puncturing_override="0x0008", + he_ccfs1=151, he_oper_chanwidth=0) def test_eht_5ghz_80p80mhz(dev, apdev): """EHT with 80+80 MHz channel width on 5 GHz""" -- 2.43.0 _______________________________________________ Hostap mailing list Hostap@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/hostap