Browse Source

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.
Jouni Malinen 14 years ago
parent
commit
8ea3dd21d2
1 changed files with 26 additions and 0 deletions
  1. 26 0
      src/ap/hw_features.c

+ 26 - 0
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 */