From fdbbd8b383626265c1454801d24cdfa6234d1416 Mon Sep 17 00:00:00 2001 From: James Prestwood Date: Tue, 14 May 2024 07:19:23 -0700 Subject: [PATCH] unit: add test for band fallback This test uses the same country/country3 values seen by an AP vendor which causes issues with IWD. The alpha2 is ES (Spain) and the 3rd byte is 4, indicating to use the E-4. The issue then comes when the neighbor report claims the BSS is under operating class 3 which is not part of E-4. With the fallback implemented, this test will pass since it will try and lookup only on ES (the EU table) which operating class 3 is part of. --- unit/test-band.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/unit/test-band.c b/unit/test-band.c index 855fb67f..606bb854 100644 --- a/unit/test-band.c +++ b/unit/test-band.c @@ -670,6 +670,19 @@ static void test_conversions(const void *data) assert(!band_channel_to_freq(192, BAND_FREQ_5_GHZ)); } +static void test_conversion_fallback(const void *data) +{ + enum band_freq band; + const uint8_t cc[] = {'E', 'S', 0x04}; + + /* + * Without a fallback, this would fail. There is no operclass 3 in the + * global operating table (E-4) + */ + band = band_oper_class_to_band(cc, 3); + assert(band == BAND_FREQ_5_GHZ); +} + int main(int argc, char *argv[]) { l_test_init(&argc, &argv); @@ -736,6 +749,7 @@ int main(int argc, char *argv[]) l_test_add("/band/6ghz/freq", test_6ghz_freqs, NULL); l_test_add("/band/conversions", test_conversions, NULL); + l_test_add("/band/conversion fallback", test_conversion_fallback, NULL); return l_test_run(); }