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 1/3] 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.3.4

