From 21e09a50285d5aebaedf82d60b742f879d9422d3 Mon Sep 17 00:00:00 2001 From: nbd Date: Thu, 30 Jan 2014 13:21:30 +0000 Subject: [PATCH] hostapd: fix frequency selection for ap+sta Signed-off-by: Felix Fietkau git-svn-id: svn://svn.openwrt.org/openwrt/trunk@39426 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../services/hostapd/patches/340-reload_freq_change.patch | 10 ++++++++++ .../hostapd/patches/400-terminate_on_setup_failure.patch | 14 +++++++------- .../services/hostapd/patches/440-dynamic_20_40_mhz.patch | 2 +- .../services/hostapd/patches/600-ubus_support.patch | 10 +++++----- 4 files changed, 23 insertions(+), 13 deletions(-) diff --git a/package/network/services/hostapd/patches/340-reload_freq_change.patch b/package/network/services/hostapd/patches/340-reload_freq_change.patch index d36b0460fa..9316794817 100644 --- a/package/network/services/hostapd/patches/340-reload_freq_change.patch +++ b/package/network/services/hostapd/patches/340-reload_freq_change.patch @@ -17,3 +17,13 @@ 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; diff --git a/package/network/services/hostapd/patches/400-terminate_on_setup_failure.patch b/package/network/services/hostapd/patches/400-terminate_on_setup_failure.patch index 1270861e1e..0d9065ab2e 100644 --- a/package/network/services/hostapd/patches/400-terminate_on_setup_failure.patch +++ b/package/network/services/hostapd/patches/400-terminate_on_setup_failure.patch @@ -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; diff --git a/package/network/services/hostapd/patches/440-dynamic_20_40_mhz.patch b/package/network/services/hostapd/patches/440-dynamic_20_40_mhz.patch index f2d7795e81..905ec2c1b4 100644 --- a/package/network/services/hostapd/patches/440-dynamic_20_40_mhz.patch +++ b/package/network/services/hostapd/patches/440-dynamic_20_40_mhz.patch @@ -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); diff --git a/package/network/services/hostapd/patches/600-ubus_support.patch b/package/network/services/hostapd/patches/600-ubus_support.patch index 04af5da7de..96ac4f92da 100644 --- a/package/network/services/hostapd/patches/600-ubus_support.patch +++ b/package/network/services/hostapd/patches/600-ubus_support.patch @@ -498,7 +498,7 @@ +#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); @@ -506,7 +506,7 @@ 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); @@ -515,7 +515,7 @@ 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; @@ -523,7 +523,7 @@ 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"); @@ -531,7 +531,7 @@ 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; -- 2.11.0