| From dea50507861b79f522c70500fe978072f143af8f Mon Sep 17 00:00:00 2001 |
| From: Jouni Malinen <jouni.malinen@atheros.com> |
| Date: Fri, 12 Nov 2010 18:31:56 +0200 |
| Subject: [PATCH] AP: Verify that HT40 secondary channel is supported |
| |
| Refuse to enable HT40 mode AP unless both the primary and secondary |
| channels are enabled for AP use. |
| (cherry picked from commit 8ea3dd21d2e8b760612af0c7b6a3bb5b89ba7304) |
| --- |
| src/ap/hw_features.c | 26 ++++++++++++++++++++++++++ |
| 1 files changed, 26 insertions(+), 0 deletions(-) |
| |
| diff --git a/src/ap/hw_features.c b/src/ap/hw_features.c |
| index 0159c72..7fc5b83 100644 |
| --- a/src/ap/hw_features.c |
| +++ b/src/ap/hw_features.c |
| @@ -642,6 +642,32 @@ int hostapd_select_hw_mode(struct hostapd_iface *iface) |
| break; |
| } |
| } |
| + if (ok && iface->conf->secondary_channel) { |
| + int sec_ok = 0; |
| + int sec_chan = iface->conf->channel + |
| + iface->conf->secondary_channel * 4; |
| + for (j = 0; j < iface->current_mode->num_channels; j++) { |
| + struct hostapd_channel_data *chan = |
| + &iface->current_mode->channels[j]; |
| + if (!(chan->flag & HOSTAPD_CHAN_DISABLED) && |
| + (chan->chan == sec_chan)) { |
| + sec_ok = 1; |
| + break; |
| + } |
| + } |
| + if (!sec_ok) { |
| + hostapd_logger(iface->bss[0], NULL, |
| + HOSTAPD_MODULE_IEEE80211, |
| + HOSTAPD_LEVEL_WARNING, |
| + "Configured HT40 secondary channel " |
| + "(%d) not found from the channel list " |
| + "of current mode (%d) %s", |
| + sec_chan, iface->current_mode->mode, |
| + hostapd_hw_mode_txt( |
| + iface->current_mode->mode)); |
| + ok = 0; |
| + } |
| + } |
| if (iface->conf->channel == 0) { |
| /* TODO: could request a scan of neighboring BSSes and select |
| * the channel automatically */ |
| -- |
| 1.7.4-rc1 |
| |