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.
This commit is contained in:
James Prestwood 2023-10-02 04:32:13 -07:00 committed by Denis Kenzior
parent 66f47343d9
commit 0cb3e4af30
1 changed files with 13 additions and 7 deletions

View File

@ -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;
}