From 0cb3e4af30d360fee2f041411f89591d68c6e4d5 Mon Sep 17 00:00:00 2001 From: James Prestwood Date: Mon, 2 Oct 2023 04:32:13 -0700 Subject: [PATCH] station: check disabled band configuration in station_init For IWD to work correctly either 2.4GHz or 5GHz bands must be enabled (even for 6GHz to work). Check this and don't allow IWD to initialize if both 2.4 and 5GHz is disabled. --- src/station.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/station.c b/src/station.c index a34d8ce3..f24b9aca 100644 --- a/src/station.c +++ b/src/station.c @@ -5203,6 +5203,19 @@ static void station_known_networks_changed(enum known_networks_event event, static int station_init(void) { + if (scan_get_band_rank_modifier(BAND_FREQ_2_4_GHZ)) + allowed_bands |= BAND_FREQ_2_4_GHZ; + if (scan_get_band_rank_modifier(BAND_FREQ_5_GHZ)) + allowed_bands |= BAND_FREQ_5_GHZ; + if (scan_get_band_rank_modifier(BAND_FREQ_6_GHZ)) + allowed_bands |= BAND_FREQ_6_GHZ; + + if (!(allowed_bands & (BAND_FREQ_2_4_GHZ | BAND_FREQ_5_GHZ))) { + l_error("At least 2.4GHz and 5GHz bands must be enabled for " + "IWD to start, check [Rank].BandModifier* setting"); + return -ENOTSUP; + } + station_list = l_queue_new(); netdev_watch = netdev_watch_add(station_netdev_watch, NULL, NULL); l_dbus_register_interface(dbus_get_bus(), IWD_STATION_INTERFACE, @@ -5259,13 +5272,6 @@ static int station_init(void) station_known_networks_changed, NULL, NULL); - if (scan_get_band_rank_modifier(BAND_FREQ_2_4_GHZ)) - allowed_bands |= BAND_FREQ_2_4_GHZ; - if (scan_get_band_rank_modifier(BAND_FREQ_5_GHZ)) - allowed_bands |= BAND_FREQ_5_GHZ; - if (scan_get_band_rank_modifier(BAND_FREQ_6_GHZ)) - allowed_bands |= BAND_FREQ_6_GHZ; - return 0; }