wiphy: remove disabled_freqs and related dump code

The disabled_freqs list is being removed and replaced with a new
list in the band object. This completely removes the need for
the pending_freqs list as well since any regdom related dumps
can just overwrite the existing frequency list.
This commit is contained in:
James Prestwood 2022-12-16 13:27:41 -08:00 committed by Denis Kenzior
parent 5042c8e924
commit 2ba0ad212e
2 changed files with 2 additions and 37 deletions

View File

@ -105,8 +105,6 @@ struct wiphy {
uint16_t supported_iftypes;
uint16_t supported_ciphers;
struct scan_freq_set *supported_freqs;
struct scan_freq_set *disabled_freqs;
struct scan_freq_set *pending_freqs;
struct band *band_2g;
struct band *band_5g;
struct band *band_6g;
@ -345,7 +343,6 @@ static struct wiphy *wiphy_new(uint32_t id)
wiphy->id = id;
wiphy->supported_freqs = scan_freq_set_new();
wiphy->disabled_freqs = scan_freq_set_new();
watchlist_init(&wiphy->state_watches, NULL);
wiphy->extended_capabilities[0] = IE_TYPE_EXTENDED_CAPABILITIES;
wiphy->extended_capabilities[1] = EXT_CAP_LEN;
@ -393,7 +390,6 @@ static void wiphy_free(void *data)
}
scan_freq_set_free(wiphy->supported_freqs);
scan_freq_set_free(wiphy->disabled_freqs);
watchlist_destroy(&wiphy->state_watches);
l_free(wiphy->model_str);
l_free(wiphy->vendor_str);
@ -491,11 +487,6 @@ const struct scan_freq_set *wiphy_get_supported_freqs(
return wiphy->supported_freqs;
}
const struct scan_freq_set *wiphy_get_disabled_freqs(const struct wiphy *wiphy)
{
return wiphy->disabled_freqs;
}
static struct band *wiphy_get_band(const struct wiphy *wiphy, enum band_freq band)
{
switch (band) {
@ -2003,9 +1994,6 @@ static void wiphy_dump_done(void *user_data)
if (wiphy) {
wiphy->dump_id = 0;
scan_freq_set_free(wiphy->disabled_freqs);
wiphy->disabled_freqs = wiphy->pending_freqs;
wiphy->pending_freqs = NULL;
WATCHLIST_NOTIFY(&wiphy->state_watches,
wiphy_state_watch_func_t, wiphy,
@ -2019,13 +2007,9 @@ static void wiphy_dump_done(void *user_data)
for (e = l_queue_get_entries(wiphy_list); e; e = e->next) {
wiphy = e->data;
if (!wiphy->pending_freqs || wiphy->self_managed)
if (wiphy->self_managed)
continue;
scan_freq_set_free(wiphy->disabled_freqs);
wiphy->disabled_freqs = wiphy->pending_freqs;
wiphy->pending_freqs = NULL;
WATCHLIST_NOTIFY(&wiphy->state_watches,
wiphy_state_watch_func_t, wiphy,
WIPHY_STATE_WATCH_EVENT_REGDOM_DONE);
@ -2095,33 +2079,18 @@ static void wiphy_dump_callback(struct l_genl_msg *msg,
static bool wiphy_cancel_last_dump(struct wiphy *wiphy)
{
const struct l_queue_entry *e;
unsigned int id = 0;
/*
* Zero command ID to signal that wiphy_dump_done doesn't need to do
* anything. For a self-managed wiphy just free/NULL pending_freqs. For
* a global dump each wiphy needs to be checked and dealt with.
* anything.
*/
if (wiphy && wiphy->dump_id) {
id = wiphy->dump_id;
wiphy->dump_id = 0;
scan_freq_set_free(wiphy->pending_freqs);
wiphy->pending_freqs = NULL;
} else if (!wiphy && wiphy_dump_id) {
id = wiphy_dump_id;
wiphy_dump_id = 0;
for (e = l_queue_get_entries(wiphy_list); e; e = e->next) {
struct wiphy *w = e->data;
if (!w->pending_freqs || w->self_managed)
continue;
scan_freq_set_free(w->pending_freqs);
w->pending_freqs = NULL;
}
}
if (id) {
@ -2166,7 +2135,6 @@ static void wiphy_dump_after_regdom(struct wiphy *wiphy)
/* Limited dump so just emit the event for this wiphy */
if (wiphy) {
wiphy->dump_id = id;
wiphy->pending_freqs = scan_freq_set_new();
if (no_start_event)
return;
@ -2186,8 +2154,6 @@ static void wiphy_dump_after_regdom(struct wiphy *wiphy)
if (w->self_managed)
continue;
w->pending_freqs = scan_freq_set_new();
if (no_start_event)
continue;

View File

@ -100,7 +100,6 @@ const char *wiphy_get_path(struct wiphy *wiphy);
uint32_t wiphy_get_supported_bands(struct wiphy *wiphy);
const struct scan_freq_set *wiphy_get_supported_freqs(
const struct wiphy *wiphy);
const struct scan_freq_set *wiphy_get_disabled_freqs(const struct wiphy *wiphy);
const struct band_freq_attrs *wiphy_get_frequency_info(
const struct wiphy *wiphy,