From fce6234fbf6d5ecce7c06fac24b4ab988055d729 Mon Sep 17 00:00:00 2001 From: James Prestwood Date: Fri, 16 Dec 2022 13:27:34 -0800 Subject: [PATCH] band: introduce new method of tracking frequencies Currently the wiphy object keeps track of supported and disabled frequencies as two separate scan_freq_set's. This is very expensive and limiting since we have to add more sets in order to track additional frequency flags (no-IR, no-HT, no-HE etc). Instead we can refactor how frequencies are stored. They will now be part of the band object and stored as a list of flag structures where each index corresponds to a channel --- src/band.c | 2 ++ src/band.h | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/src/band.c b/src/band.c index 01166b62..d89b2a90 100644 --- a/src/band.c +++ b/src/band.c @@ -36,6 +36,8 @@ void band_free(struct band *band) if (band->he_capabilities) l_queue_destroy(band->he_capabilities, l_free); + l_free(band->freq_attrs); + l_free(band); } diff --git a/src/band.h b/src/band.h index 9b307a77..da4c0ae5 100644 --- a/src/band.h +++ b/src/band.h @@ -55,8 +55,16 @@ struct band_he_capabilities { uint8_t he_mcs_set[12]; }; +struct band_freq_attrs { + bool supported : 1; + bool disabled : 1; + bool no_ir : 1; +} __attribute__ ((packed)); + struct band { enum band_freq freq; + struct band_freq_attrs *freq_attrs; + size_t freqs_len; /* Each entry is type struct band_he_capabilities */ struct l_queue *he_capabilities; uint8_t vht_mcs_set[8];