--- a/hostapd/config_file.c
+++ b/hostapd/config_file.c
-@@ -2422,6 +2422,10 @@ static int hostapd_config_fill(struct ho
- "ht_capab", line);
- errors++;
- }
-+ } else if (os_strcmp(buf, "dynamic_ht40") == 0) {
-+ conf->dynamic_ht40 = atoi(pos);
-+ if (conf->dynamic_ht40 == 1)
-+ conf->dynamic_ht40 = 1500;
- } else if (os_strcmp(buf, "require_ht") == 0) {
- conf->require_ht = atoi(pos);
- } else if (os_strcmp(buf, "obss_interval") == 0) {
+@@ -2644,6 +2644,10 @@ static int hostapd_config_fill(struct ho
+ line);
+ return 1;
+ }
++ } else if (os_strcmp(buf, "dynamic_ht40") == 0) {
++ conf->dynamic_ht40 = atoi(pos);
++ if (conf->dynamic_ht40 == 1)
++ conf->dynamic_ht40 = 1500;
+ } else if (os_strcmp(buf, "require_ht") == 0) {
+ conf->require_ht = atoi(pos);
+ } else if (os_strcmp(buf, "obss_interval") == 0) {
--- a/src/ap/ap_config.h
+++ b/src/ap/ap_config.h
-@@ -531,6 +531,7 @@ struct hostapd_config {
+@@ -580,6 +580,7 @@ struct hostapd_config {
int ieee80211n;
int secondary_channel;
int require_ht;
int ieee80211ac;
--- a/src/ap/hostapd.c
+++ b/src/ap/hostapd.c
-@@ -23,6 +23,7 @@
+@@ -22,6 +22,7 @@
#include "beacon.h"
#include "iapp.h"
#include "ieee802_1x.h"
#include "ieee802_11_auth.h"
#include "vlan_init.h"
#include "wpa_auth.h"
-@@ -332,6 +333,7 @@ static void hostapd_cleanup(struct hosta
+@@ -328,6 +329,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);
os_free(iface->current_rates);
--- a/src/ap/hostapd.h
+++ b/src/ap/hostapd.h
-@@ -326,6 +326,9 @@ struct hostapd_iface {
+@@ -330,6 +330,9 @@ struct hostapd_iface {
/* Overlapping BSS information */
int olbc_ht;
/* surveying helpers */
--- a/src/ap/ieee802_11.c
+++ b/src/ap/ieee802_11.c
-@@ -1538,6 +1538,9 @@ static void handle_beacon(struct hostapd
+@@ -1556,6 +1556,9 @@ static void handle_beacon(struct hostapd
sizeof(mgmt->u.beacon)), &elems,
0);
--- a/src/ap/ieee802_11.h
+++ b/src/ap/ieee802_11.h
-@@ -82,4 +82,17 @@ int hostapd_update_time_adv(struct hosta
+@@ -83,4 +83,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);
#endif /* IEEE802_11_H */
--- a/src/ap/ieee802_11_ht.c
+++ b/src/ap/ieee802_11_ht.c
-@@ -20,9 +20,11 @@
- #include "drivers/driver.h"
+@@ -13,9 +13,11 @@
+ #include "common/ieee802_11_defs.h"
#include "hostapd.h"
#include "ap_config.h"
+#include "ap_drv_ops.h"
u8 * hostapd_eid_ht_capabilities(struct hostapd_data *hapd, u8 *eid)
-@@ -86,12 +88,15 @@ u8 * hostapd_eid_ht_operation(struct hos
+@@ -92,12 +94,15 @@ u8 * hostapd_eid_ht_operation(struct hos
oper->control_chan = hapd->iconf->channel;
oper->operation_mode = host_to_le16(hapd->iface->ht_op_mode);
pos += sizeof(*oper);
-@@ -286,3 +291,84 @@ void hostapd_get_ht_capab(struct hostapd
+@@ -291,3 +296,84 @@ void hostapd_get_ht_capab(struct hostapd
neg_ht_cap->ht_capabilities_info = host_to_le16(cap);
}