hostapd: fix frequency selection for ap+sta
authorFelix Fietkau <nbd@openwrt.org>
Thu, 30 Jan 2014 13:21:30 +0000 (13:21 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Thu, 30 Jan 2014 13:21:30 +0000 (13:21 +0000)
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 39426

package/network/services/hostapd/patches/340-reload_freq_change.patch
package/network/services/hostapd/patches/400-terminate_on_setup_failure.patch
package/network/services/hostapd/patches/440-dynamic_20_40_mhz.patch
package/network/services/hostapd/patches/600-ubus_support.patch

index d36b0460faae60948eb15a75abc5da481daa6734..9316794817469feff49873cd8dd8713fd505c71c 100644 (file)
        if (!ssid->wpa_psk_set && ssid->wpa_psk && !ssid->wpa_psk->next &&
            ssid->wpa_passphrase_set && ssid->wpa_passphrase) {
                /*
+@@ -172,6 +182,9 @@ int hostapd_reload_config(struct hostapd
+       oldconf = hapd->iconf;
+       iface->conf = newconf;
++      if (iface->conf->channel)
++              iface->freq = hostapd_hw_get_freq(hapd, iface->conf->channel);
++
+       for (j = 0; j < iface->num_bss; j++) {
+               hapd = iface->bss[j];
+               hapd->iconf = newconf;
index 1270861e1e4d9bbd54488a136847f270129676bd..0d9065ab2e465bab3e2c030e132edcd4ab13824b 100644 (file)
@@ -1,6 +1,6 @@
 --- a/src/ap/hostapd.c
 +++ b/src/ap/hostapd.c
-@@ -1100,13 +1100,8 @@ int hostapd_setup_interface_complete(str
+@@ -1103,13 +1103,8 @@ int hostapd_setup_interface_complete(str
        size_t j;
        u8 *prev_addr;
  
@@ -16,7 +16,7 @@
  
        wpa_printf(MSG_DEBUG, "Completing interface initialization");
        if (iface->conf->channel) {
-@@ -1137,7 +1132,7 @@ int hostapd_setup_interface_complete(str
+@@ -1140,7 +1135,7 @@ int hostapd_setup_interface_complete(str
                                     hapd->iconf->vht_oper_centr_freq_seg1_idx)) {
                        wpa_printf(MSG_ERROR, "Could not set channel for "
                                   "kernel driver");
@@ -25,7 +25,7 @@
                }
        }
  
-@@ -1148,7 +1143,7 @@ int hostapd_setup_interface_complete(str
+@@ -1151,7 +1146,7 @@ int hostapd_setup_interface_complete(str
                        hostapd_logger(hapd, NULL, HOSTAPD_MODULE_IEEE80211,
                                       HOSTAPD_LEVEL_WARNING,
                                       "Failed to prepare rates table.");
@@ -34,7 +34,7 @@
                }
        }
  
-@@ -1156,14 +1151,14 @@ int hostapd_setup_interface_complete(str
+@@ -1159,14 +1154,14 @@ int hostapd_setup_interface_complete(str
            hostapd_set_rts(hapd, hapd->iconf->rts_threshold)) {
                wpa_printf(MSG_ERROR, "Could not set RTS threshold for "
                           "kernel driver");
@@ -51,7 +51,7 @@
        }
  
        prev_addr = hapd->own_addr;
-@@ -1173,7 +1168,7 @@ int hostapd_setup_interface_complete(str
+@@ -1176,7 +1171,7 @@ int hostapd_setup_interface_complete(str
                if (j)
                        os_memcpy(hapd->own_addr, prev_addr, ETH_ALEN);
                if (hostapd_setup_bss(hapd, j == 0))
@@ -60,7 +60,7 @@
                if (hostapd_mac_comp_empty(hapd->conf->bssid) == 0)
                        prev_addr = hapd->own_addr;
        }
-@@ -1188,7 +1183,7 @@ int hostapd_setup_interface_complete(str
+@@ -1191,7 +1186,7 @@ int hostapd_setup_interface_complete(str
        if (hostapd_driver_commit(hapd) < 0) {
                wpa_printf(MSG_ERROR, "%s: Failed to commit driver "
                           "configuration", __func__);
@@ -69,7 +69,7 @@
        }
  
        /*
-@@ -1213,6 +1208,13 @@ int hostapd_setup_interface_complete(str
+@@ -1216,6 +1211,13 @@ int hostapd_setup_interface_complete(str
                iface->interfaces->terminate_on_error--;
  
        return 0;
index f2d7795e81cd5878720a60fa7143b35c1c4e2698..905ec2c1b4cb0e778251a0d9ff2f2a4096d266ea 100644 (file)
@@ -31,7 +31,7 @@
  #include "ieee802_11_auth.h"
  #include "vlan_init.h"
  #include "wpa_auth.h"
-@@ -329,6 +330,7 @@ static void hostapd_cleanup(struct hosta
+@@ -332,6 +333,7 @@ static void hostapd_cleanup(struct hosta
  static void hostapd_cleanup_iface_partial(struct hostapd_iface *iface)
  {
        wpa_printf(MSG_DEBUG, "%s(%p)", __func__, iface);
index 04af5da7deeaa04a3715db587388163536cb3723..96ac4f92da331a842612494307bede8d3d2532dc 100644 (file)
 +#endif
 --- a/src/ap/hostapd.c
 +++ b/src/ap/hostapd.c
-@@ -262,6 +262,7 @@ static void hostapd_free_hapd_data(struc
+@@ -265,6 +265,7 @@ static void hostapd_free_hapd_data(struc
        hapd->started = 0;
  
        wpa_printf(MSG_DEBUG, "%s(%s)", __func__, hapd->conf->iface);
        iapp_deinit(hapd->iapp);
        hapd->iapp = NULL;
        accounting_deinit(hapd);
-@@ -831,6 +832,8 @@ static int hostapd_setup_bss(struct host
+@@ -834,6 +835,8 @@ static int hostapd_setup_bss(struct host
        if (hapd->driver && hapd->driver->set_operstate)
                hapd->driver->set_operstate(hapd->drv_priv, 1);
  
        return 0;
  }
  
-@@ -1105,6 +1108,7 @@ int hostapd_setup_interface_complete(str
+@@ -1108,6 +1111,7 @@ int hostapd_setup_interface_complete(str
        if (err)
                goto error;
  
        wpa_printf(MSG_DEBUG, "Completing interface initialization");
        if (iface->conf->channel) {
  #ifdef NEED_AP_MLME
-@@ -1213,6 +1217,7 @@ int hostapd_setup_interface_complete(str
+@@ -1216,6 +1220,7 @@ int hostapd_setup_interface_complete(str
  
  error:
        wpa_printf(MSG_ERROR, "Interface initialization failed");
        hostapd_set_state(iface, HAPD_IFACE_DISABLED);
        if (iface->interfaces && iface->interfaces->terminate_on_error)
                eloop_terminate();
-@@ -1534,6 +1539,7 @@ void hostapd_interface_deinit_free(struc
+@@ -1537,6 +1542,7 @@ void hostapd_interface_deinit_free(struc
                   (unsigned int) iface->conf->num_bss);
        driver = iface->bss[0]->driver;
        drv_priv = iface->bss[0]->drv_priv;