[iwinfo PATCH 1/2] iwinfo: add support for indoor only chan restriction
Seo Suchan
tjtncks at gmail.com
Sun Jan 23 19:06:46 PST 2022
Which will get priority in DFS or indoor channels? will it have setting
to enable DFS for such channel? well we can't really enforce
'indoorness' of out target, isn't it? Or will we have per device target
config for 'this will be outdoor' ?
21. 11. 19. 01:40에 Ansuel Smith 이(가) 쓴 글:
> Some country permit a specific channel to be used only indoor.
> Introduce a new restriction_flags entry to declare different restrition
> of a specific channel.
>
> Signed-off-by: Ansuel Smith <ansuelsmth at gmail.com>
> ---
> include/iwinfo.h | 4 ++++
> iwinfo_nl80211.c | 14 ++++++++++----
> 2 files changed, 14 insertions(+), 4 deletions(-)
>
> diff --git a/include/iwinfo.h b/include/iwinfo.h
> index 8469ee7..3543b91 100644
> --- a/include/iwinfo.h
> +++ b/include/iwinfo.h
> @@ -61,6 +61,9 @@
> #define IWINFO_FREQ_NO_160MHZ (1 << 5)
> #define IWINFO_FREQ_NO_2160MHZ (1 << 6)
>
> +#define IWINFO_FREQ_NO_IR (1 << 0)
> +#define IWINFO_FREQ_NO_OUTDOOR (2 << 0)
> +
> extern const char *IWINFO_CIPHER_NAMES[IWINFO_CIPHER_COUNT];
> extern const char *IWINFO_KMGMT_NAMES[IWINFO_KMGMT_COUNT];
> extern const char *IWINFO_AUTH_NAMES[IWINFO_AUTH_COUNT];
> @@ -168,6 +171,7 @@ struct iwinfo_freqlist_entry {
> uint8_t channel;
> uint32_t mhz;
> uint8_t restricted;
> + uint32_t restricted_flags;
> uint32_t flags;
> };
>
> diff --git a/iwinfo_nl80211.c b/iwinfo_nl80211.c
> index c4b0ee2..57f820a 100644
> --- a/iwinfo_nl80211.c
> +++ b/iwinfo_nl80211.c
> @@ -2911,10 +2911,16 @@ static int nl80211_get_freqlist_cb(struct nl_msg *msg, void *arg)
> e->mhz = nla_get_u32(freqs[NL80211_FREQUENCY_ATTR_FREQ]);
> e->channel = nl80211_freq2channel(e->mhz);
>
> - e->restricted = (
> - freqs[NL80211_FREQUENCY_ATTR_NO_IR] &&
> - !freqs[NL80211_FREQUENCY_ATTR_RADAR]
> - ) ? 1 : 0;
> + e->restricted = (freqs[NL80211_FREQUENCY_ATTR_NO_IR] &&
> + !freqs[NL80211_FREQUENCY_ATTR_RADAR]) ||
> + freqs[NL80211_FREQUENCY_ATTR_INDOOR_ONLY];
> +
> + if (freqs[NL80211_FREQUENCY_ATTR_NO_IR] &&
> + !freqs[NL80211_FREQUENCY_ATTR_RADAR])
> + e->restricted_flags |= IWINFO_FREQ_NO_IR;
> +
> + if (freqs[NL80211_FREQUENCY_ATTR_INDOOR_ONLY])
> + e->restricted_flags |= IWINFO_FREQ_NO_OUTDOOR;
>
> if (freqs[NL80211_FREQUENCY_ATTR_NO_HT40_MINUS])
> e->flags |= IWINFO_FREQ_NO_HT40MINUS;
More information about the openwrt-devel
mailing list