hostapd: fix multi-ssid and AP+STA, clean up code
[15.05/openwrt.git] / package / network / services / hostapd / patches / 540-dynamic_20_40_mhz.patch
index d58358c..a71f560 100644 (file)
@@ -1,6 +1,6 @@
 --- a/hostapd/config_file.c
 +++ b/hostapd/config_file.c
-@@ -2495,6 +2495,10 @@ static int hostapd_config_fill(struct ho
+@@ -2488,6 +2488,10 @@ static int hostapd_config_fill(struct ho
                                           "ht_capab", line);
                                errors++;
                        }
@@ -13,7 +13,7 @@
  #endif /* CONFIG_IEEE80211N */
 --- a/src/ap/ap_config.h
 +++ b/src/ap/ap_config.h
-@@ -501,6 +501,7 @@ struct hostapd_config {
+@@ -519,6 +519,7 @@ struct hostapd_config {
        int ieee80211n;
        int secondary_channel;
        int require_ht;
@@ -31,7 +31,7 @@
  #include "ieee802_11_auth.h"
  #include "vlan_init.h"
  #include "wpa_auth.h"
-@@ -323,6 +324,7 @@ static void hostapd_cleanup_iface_pre(st
+@@ -343,6 +344,7 @@ static void hostapd_cleanup_iface_pre(st
  
  static void hostapd_cleanup_iface_partial(struct hostapd_iface *iface)
  {
@@ -41,7 +41,7 @@
        os_free(iface->current_rates);
 --- a/src/ap/hostapd.h
 +++ b/src/ap/hostapd.h
-@@ -251,6 +251,9 @@ struct hostapd_iface {
+@@ -274,6 +274,9 @@ struct hostapd_iface {
        /* Overlapping BSS information */
        int olbc_ht;
  
@@ -53,7 +53,7 @@
  };
 --- a/src/ap/ieee802_11.c
 +++ b/src/ap/ieee802_11.c
-@@ -1220,6 +1220,9 @@ static void handle_beacon(struct hostapd
+@@ -1513,6 +1513,9 @@ static void handle_beacon(struct hostapd
                                             sizeof(mgmt->u.beacon)), &elems,
                                      0);
  
@@ -65,7 +65,7 @@
  
 --- a/src/ap/ieee802_11.h
 +++ b/src/ap/ieee802_11.h
-@@ -78,4 +78,17 @@ int hostapd_update_time_adv(struct hosta
+@@ -81,4 +81,17 @@ int hostapd_update_time_adv(struct hosta
  void hostapd_client_poll_ok(struct hostapd_data *hapd, const u8 *addr);
  u8 * hostapd_eid_bss_max_idle_period(struct hostapd_data *hapd, u8 *eid);
  
  
        pos += sizeof(*oper);
  
-@@ -271,3 +276,80 @@ void hostapd_get_ht_capab(struct hostapd
+@@ -270,3 +275,84 @@ void hostapd_get_ht_capab(struct hostapd
  
        neg_ht_cap->ht_capabilities_info = host_to_le16(cap);
  }
 +                      secondary_channel = hapd->iconf->secondary_channel;
 +
 +              if (hostapd_set_freq(hapd, hapd->iconf->hw_mode, iface->freq,
-+                                       hapd->iconf->channel,
-+                                       hapd->iconf->ieee80211n,
-+                                       secondary_channel)) {
++                                   hapd->iconf->channel,
++                                   hapd->iconf->ieee80211n,
++                                   hapd->iconf->ieee80211ac,
++                                   secondary_channel,
++                                   hapd->iconf->vht_oper_chwidth,
++                                   hapd->iconf->vht_oper_centr_freq_seg0_idx,
++                                   hapd->iconf->vht_oper_centr_freq_seg1_idx)) {
 +                      wpa_printf(MSG_ERROR, "Could not set channel for "
 +                                 "kernel driver");
 +              }