--- a/src/ap/hostapd.c
+++ b/src/ap/hostapd.c
@@ -140,6 +140,20 @@ int hostapd_reload_config(struct hostapd
 	oldconf = hapd->iconf;
 	iface->conf = newconf;
 
+	hostapd_select_hw_mode(iface);
+	iface->freq = hostapd_hw_get_freq(hapd, newconf->channel);
+
+	if (hostapd_set_freq(hapd, newconf->hw_mode, iface->freq,
+			     newconf->channel,
+			     newconf->ieee80211n,
+			     newconf->secondary_channel)) {
+		wpa_printf(MSG_ERROR, "Could not set channel for "
+			   "kernel driver");
+	}
+
+	if (iface->current_mode)
+		hostapd_prepare_rates(iface, iface->current_mode);
+
 	for (j = 0; j < iface->num_bss; j++) {
 		hapd = iface->bss[j];
 		hapd->iconf = newconf;
