Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
F
FFS Gluon
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Model registry
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
firmware
FFS Gluon
Commits
14f4a0ba
Commit
14f4a0ba
authored
10 years ago
by
Matthias Schiffer
Browse files
Options
Downloads
Patches
Plain Diff
Update hostapd backport to r41029
parent
660924a6
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
patches/openwrt/0017-Backport-hostapd-from-Barrier-Breaker-r41029.patch
+445
-188
445 additions, 188 deletions
...t/0017-Backport-hostapd-from-Barrier-Breaker-r41029.patch
with
445 additions
and
188 deletions
patches/openwrt/0017-Backport-hostapd-from-Barrier-Breaker.patch
→
patches/openwrt/0017-Backport-hostapd-from-Barrier-Breaker
-r41029
.patch
+
445
−
188
View file @
14f4a0ba
From: Matthias Schiffer <mschiffer@universe-factory.net>
Date: Mon, 19 May 2014 15:59:06 +0200
Subject: Backport hostapd from Barrier Breaker
Subject: Backport hostapd from Barrier Breaker
(r41029)
diff --git a/package/hostapd/Makefile b/package/hostapd/Makefile
index b4dc242..
ecf9e4b
100644
index b4dc242..
beb37a3
100644
--- a/package/hostapd/Makefile
+++ b/package/hostapd/Makefile
@@ -8,9 +8,9 @@
...
...
@@ -11,13 +11,27 @@ index b4dc242..ecf9e4b 100644
PKG_NAME:=hostapd
-PKG_VERSION:=20131120
+PKG_VERSION:=2014-0
4-24
+PKG_VERSION:=2014-0
6-03
PKG_RELEASE:=1
-PKG_REV:=594516b4c28a94ca686b17f1e463dfd6712b75a7
+PKG_REV:=
3cf48c4f2e2d558130253457fea02ef4047cf
8e
1
+PKG_REV:=
84df167554569af8c87f0a8ac1fb508192417d
8e
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=git://w1.fi/srv/git/hostap.git
diff --git a/package/hostapd/files/hostapd.sh b/package/hostapd/files/hostapd.sh
index b55b63d..2a16bb4 100644
--- a/package/hostapd/files/hostapd.sh
+++ b/package/hostapd/files/hostapd.sh
@@ -130,7 +130,9 @@
hostapd_set_bss_options() {
append "$var" "radius_das_client=$dae_client $dae_secret" "$N"
}
config_get nasid "$vif" nasid
+ config_get ownip "$vif" ownip
append "$var" "nas_identifier=$nasid" "$N"
+ append "$var" "own_ip_addr=$ownip" "$N"
append "$var" "eapol_key_index_workaround=1" "$N"
append "$var" "ieee8021x=1" "$N"
append "$var" "wpa_key_mgmt=WPA-EAP" "$N"
diff --git a/package/hostapd/patches/100-madwifi_key_fixes.patch b/package/hostapd/patches/100-madwifi_key_fixes.patch
index dcd6d10..a46943b 100644
--- a/package/hostapd/patches/100-madwifi_key_fixes.patch
...
...
@@ -51,6 +65,26 @@ index 9f82b0b..1ad84bf 100644
}
diff --git a/package/hostapd/patches/130-no_eapol_fix.patch b/package/hostapd/patches/130-no_eapol_fix.patch
new file mode 100644
index 0000000..3c19cb3
--- /dev/null
+++ b/package/hostapd/patches/130-no_eapol_fix.patch
@@ -0,0 +1,14 @@
+--- a/wpa_supplicant/wpa_supplicant.c
++++ b/wpa_supplicant/wpa_supplicant.c
+@@ -247,9 +247,10 @@ void wpa_supplicant_cancel_auth_timeout(
+ */
+ void wpa_supplicant_initiate_eapol(struct wpa_supplicant *wpa_s)
+ {
++ struct wpa_ssid *ssid = wpa_s->current_ssid;
++
+ #ifdef IEEE8021X_EAPOL
+ struct eapol_config eapol_conf;
+- struct wpa_ssid *ssid = wpa_s->current_ssid;
+
+ #ifdef CONFIG_IBSS_RSN
+ if (ssid->mode == WPAS_MODE_IBSS &&
diff --git a/package/hostapd/patches/130-wds_sta_del_fix.patch b/package/hostapd/patches/130-wds_sta_del_fix.patch
deleted file mode 100644
index 06b6906..0000000
...
...
@@ -71,7 +105,7 @@ index 06b6906..0000000
- }
-
diff --git a/package/hostapd/patches/200-multicall.patch b/package/hostapd/patches/200-multicall.patch
index 2289f51..
1511b19
100644
index 2289f51..
efe151c
100644
--- a/package/hostapd/patches/200-multicall.patch
+++ b/package/hostapd/patches/200-multicall.patch
@@ -1,14 +1,14 @@
...
...
@@ -128,16 +162,18 @@ index 2289f51..1511b19 100644
-@@ -727,6 +728,10 @@ ifdef CONFIG_DYNAMIC_EAP_METHODS
+ ifdef CONFIG_TESTING_OPTIONS
+ CFLAGS += -DCONFIG_TESTING_OPTIONS
+@@ -74
6
,6 +74
7
,10 @@ ifdef CONFIG_DYNAMIC_EAP_METHODS
+@@ -74
1
,6 +74
2
,10 @@ ifdef CONFIG_DYNAMIC_EAP_METHODS
CFLAGS += -DCONFIG_DYNAMIC_EAP_METHODS
LIBS += -ldl -rdynamic
endif
@@ -73,7 +73,7 @@
@@ -72,8 +72,8 @@
+ endif
endif
ifdef CONFIG_AP
-
ifdef CONFIG_AP
-@@ -735,9 +740,11 @@ NEED_EAP_COMMON=y
+@@ -754,9 +759,11 @@ NEED_EAP_COMMON=y
+ ifdef CONFIG_MACSEC
+@@ -762,9 +767,11 @@ NEED_EAP_COMMON=y
NEED_RSN_AUTHENTICATOR=y
CFLAGS += -DCONFIG_AP
OBJS += ap.o
...
...
@@ -146,7 +182,7 @@ index 2289f51..1511b19 100644
OBJS += ../src/ap/wpa_auth_glue.o
OBJS += ../src/ap/utils.o
-@@ -799,10 +806,18 @@ endif
+@@ -8
18
,10 +8
25
,18 @@ endif
+@@ -8
26
,10 +8
33
,18 @@ endif
ifdef CONFIG_HS20
OBJS += ../src/ap/hs20.o
endif
...
...
@@ -155,7 +191,7 @@ index 2289f51..1511b19 100644
OBJS += ../src/ap/wpa_auth.o
OBJS += ../src/ap/wpa_auth_ie.o
-@@ -1551,6 +1566,12 @@ wpa_priv: $(BCHECK) $(OBJS_priv)
+@@ -1
584
,6 +1
599
,12 @@ wpa_priv: $(BCHECK) $(OBJS_priv)
+@@ -1
602
,6 +1
617
,12 @@ wpa_priv: $(BCHECK) $(OBJS_priv)
$(OBJS_c) $(OBJS_t) $(OBJS_t2) $(OBJS) $(BCHECK) $(EXTRA_progs): .config
...
...
@@ -164,7 +200,7 @@ index 2289f51..1511b19 100644
$(Q)$(LDO) $(LDFLAGS) -o wpa_supplicant $(OBJS) $(LIBS) $(EXTRALIBS)
@$(E) " LD " $@
-@@ -1625,6 +1646,12 @@ eap_eke.so: ../src/eap_peer/eap_eke.c ..
+@@ -16
64
,6 +1
685
,12 @@ endif
+@@ -16
82
,6 +1
703
,12 @@ endif
%@.service: %.service.arg.in
sed -e 's|\@BINDIR\@|$(BINDIR)|g' $< >$@
...
...
@@ -173,7 +209,7 @@ index 2289f51..1511b19 100644
--- a/src/drivers/driver.h
+++ b/src/drivers/driver.h
-@@ -4079,8 +4079,8 @@ union wpa_event_data {
+@@ -
3886,8 +3886
,8 @@ union wpa_event_data {
+@@ -
4117,8 +4117
,8 @@ union wpa_event_data {
* Driver wrapper code should call this function whenever an event is received
* from the driver.
*/
...
...
@@ -182,7 +218,7 @@ index 2289f51..1511b19 100644
--- a/src/ap/drv_callbacks.c
+++ b/src/ap/drv_callbacks.c
-@@ -844,8 +844,8 @@ static void hostapd_event_dfs_nop_finish
+@@ -9
0
6,8 +9
0
6,8 @@ static void hostapd_event_dfs_nop_finish
+@@ -9
2
6,8 +9
2
6,8 @@ static void hostapd_event_dfs_nop_finish
#endif /* NEED_AP_MLME */
...
...
@@ -209,7 +245,7 @@ index 2289f51..1511b19 100644
--- a/wpa_supplicant/events.c
+++ b/wpa_supplicant/events.c
-@@ -2710,8 +2710,8 @@ static void wpa_supplicant_update_channe
+@@ -29
2
9,8 +29
2
9,8 @@ static void wpa_supplicant_notify_avoid_
+@@ -29
1
9,8 +29
1
9,8 @@ static void wpa_supplicant_notify_avoid_
}
...
...
@@ -218,7 +254,7 @@ index 2289f51..1511b19 100644
--- a/wpa_supplicant/wpa_supplicant.c
+++ b/wpa_supplicant/wpa_supplicant.c
-@@ -3138,6 +3138,9 @@ static void wpa_supplicant_deinit_iface(
+@@ -3
724
,6 +3
724
,9 @@ static void wpa_supplicant_deinit_iface(
+@@ -3
811
,6 +3
811
,9 @@ static void wpa_supplicant_deinit_iface(
os_free(wpa_s);
}
...
...
@@ -227,7 +263,7 @@ index 2289f51..1511b19 100644
/**
* wpa_supplicant_add_iface - Add a new network interface
-@@ -3329,6 +3332,7 @@ struct wpa_global * wpa_supplicant_init(
+@@ -
3915,6 +3918
,7 @@ struct wpa_global * wpa_supplicant_init(
+@@ -
4002,6 +4005
,7 @@ struct wpa_global * wpa_supplicant_init(
wpa_msg_register_ifname_cb(wpa_supplicant_msg_ifname_cb);
#endif /* CONFIG_NO_WPA_MSG */
...
...
@@ -240,7 +276,7 @@ index 2289f51..1511b19 100644
return 0;
}
@@ -220,27 +220,
2
5 @@
@@ -220,27 +220,5
7
@@
+ union wpa_event_data *data);
+
...
...
@@ -277,8 +313,40 @@ index 2289f51..1511b19 100644
#ifdef CONFIG_DRIVER_WEXT
extern struct wpa_driver_ops wpa_driver_wext_ops; /* driver_wext.c */
+ #endif /* CONFIG_DRIVER_WEXT */
+--- a/wpa_supplicant/eapol_test.c
++++ b/wpa_supplicant/eapol_test.c
+@@ -28,8 +28,12 @@
+ #include "ctrl_iface.h"
+ #include "pcsc_funcs.h"
+ #include "wpas_glue.h"
++#include "drivers/driver.h"
+
+
++void (*wpa_supplicant_event)(void *ctx, enum wpa_event_type event,
++ union wpa_event_data *data);
++
+ struct wpa_driver_ops *wpa_drivers[] = { NULL };
+
+
+@@ -1185,6 +1189,8 @@ static void usage(void)
+ "option several times.\n");
+ }
+
++extern void supplicant_event(void *ctx, enum wpa_event_type event,
++ union wpa_event_data *data);
+
+ int main(int argc, char *argv[])
+ {
+@@ -1203,6 +1209,7 @@ int main(int argc, char *argv[])
+ if (os_program_init())
+ return -1;
+
++ wpa_supplicant_event = supplicant_event;
+ hostapd_logger_register_cb(hostapd_logger_cb);
+
+ os_memset(&eapol_test, 0, sizeof(eapol_test));
diff --git a/package/hostapd/patches/300-noscan.patch b/package/hostapd/patches/300-noscan.patch
index 17e7661..
50b70b7
100644
index 17e7661..
4ea26b6
100644
--- a/package/hostapd/patches/300-noscan.patch
+++ b/package/hostapd/patches/300-noscan.patch
@@ -1,17 +1,17 @@
...
...
@@ -286,7 +354,7 @@ index 17e7661..50b70b7 100644
+++ b/hostapd/config_file.c
-@@ -2412,6 +2412,8 @@ static int hostapd_config_fill(struct ho
- }
+@@ -263
8
,6 +263
8
,8 @@ static int hostapd_config_fill(struct ho
+@@ -263
9
,6 +263
9
,8 @@ static int hostapd_config_fill(struct ho
+ }
#endif /* CONFIG_IEEE80211W */
#ifdef CONFIG_IEEE80211N
...
...
@@ -307,32 +375,35 @@ index 17e7661..50b70b7 100644
int ht_op_mode_fixed;
u16 ht_capab;
@@ -21,
7
+21,
7
@@
@@ -21,
9
+21,
9
@@
int require_ht;
--- a/src/ap/hw_features.c
+++ b/src/ap/hw_features.c
-@@ -577,7 +577,7 @@ static int ieee80211n_check_40mhz(struct
+@@ -574,7 +574,7 @@ static int ieee80211n_check_40mhz(struct
{
- {
+@@ -690,7 +690,7 @@ static int ieee80211n_check_40mhz(struct
struct wpa_driver_scan_params params;
+ int ret;
- if (!iface->conf->secondary_channel)
+ if (!iface->conf->secondary_channel || iface->conf->noscan)
diff --git a/package/hostapd/patches/310-rescan_immediately.patch b/package/hostapd/patches/310-rescan_immediately.patch
index 043f07c..
f96c7e6
100644
index 043f07c..
dac0f6e
100644
--- a/package/hostapd/patches/310-rescan_immediately.patch
+++ b/package/hostapd/patches/310-rescan_immediately.patch
@@ -1,6 +1,6 @@
--- a/wpa_supplicant/wpa_supplicant.c
+++ b/wpa_supplicant/wpa_supplicant.c
-@@ -2488,7 +2488,7 @@ static struct wpa_supplicant * wpa_suppl
+@@ -27
46
,7 +27
46
,7 @@ static struct wpa_supplicant * wpa_suppl
+@@ -27
52
,7 +27
52
,7 @@ static struct wpa_supplicant * wpa_suppl
if (wpa_s == NULL)
return NULL;
wpa_s->scan_req = INITIAL_SCAN_REQ;
diff --git a/package/hostapd/patches/320-optional_rfkill.patch b/package/hostapd/patches/320-optional_rfkill.patch
index 7ec51b1..
b0ea38f
100644
index 7ec51b1..
3808f9b
100644
--- a/package/hostapd/patches/320-optional_rfkill.patch
+++ b/package/hostapd/patches/320-optional_rfkill.patch
@@ -1,21
8
+1,
3
@@
@@ -1,2
2
1 +1,
6
@@
---- a/src/drivers/driver_nl80211.c
-+++ b/src/drivers/driver_nl80211.c
-@@ -254,7 +254,9 @@ struct wpa_driver_nl80211_data {
...
...
@@ -550,7 +621,38 @@ index 7ec51b1..b0ea38f 100644
- eloop_unregister_read_sock(drv->mlme_sock);
--- a/src/drivers/drivers.mak
+++ b/src/drivers/drivers.mak
@@ -25,7 +25,6 @@ NEED_SME=y
-@@ -25,7 +25,6 @@ NEED_SME=y
+@@ -30,7 +30,6 @@ NEED_SME=y
NEED_AP_MLME=y
NEED_NETLINK=y
NEED_LINUX_IOCTL=y
@@ -223,7 +8,7 @@
ifdef CONFIG_LIBNL32
DRV_LIBS += -lnl-3
-@@ -109,7 +108,6 @@ DRV_WPA_CFLAGS += -DCONFIG_DRIVER_WEXT
+@@ -114,7 +113,6 @@ DRV_WPA_CFLAGS += -DCONFIG_DRIVER_WEXT
CONFIG_WIRELESS_EXTENSION=y
NEED_NETLINK=y
NEED_LINUX_IOCTL=y
@@ -231,7 +16,7 @@
endif
ifdef CONFIG_DRIVER_NDIS
-@@ -135,7 +133,6 @@ endif
+@@ -140,7 +138,6 @@ endif
ifdef CONFIG_WIRELESS_EXTENSION
DRV_WPA_CFLAGS += -DCONFIG_WIRELESS_EXTENSION
DRV_WPA_OBJS += ../src/drivers/driver_wext.o
@@ -239,7 +24,7 @@
endif
ifdef NEED_NETLINK
-@@ -148,6 +145,7 @@ endif
+@@ -153,6 +150,7 @@ endif
ifdef NEED_RFKILL
DRV_OBJS += ../src/drivers/rfkill.o
@@ -247,15 +32,30 @@
endif
...
...
@@ -595,35 +697,38 @@ index 7ec51b1..b0ea38f 100644
+
+ #endif /* RFKILL_H */
diff --git a/package/hostapd/patches/330-nl80211_fix_set_freq.patch b/package/hostapd/patches/330-nl80211_fix_set_freq.patch
index a505a60..
864ac5e
100644
index a505a60..
dbc9ef8
100644
--- a/package/hostapd/patches/330-nl80211_fix_set_freq.patch
+++ b/package/hostapd/patches/330-nl80211_fix_set_freq.patch
@@ -1,
6
+1,
6
@@
@@ -1,
15
+1,
15
@@
--- a/src/drivers/driver_nl80211.c
+++ b/src/drivers/driver_nl80211.c
-@@ -6860,7 +6860,7 @@ static int wpa_driver_nl80211_set_freq(s
+@@ -7380,7 +7380,7 @@ static int wpa_driver_nl80211_set_freq(s
nl80211_cmd(drv, msg, 0, NL80211_CMD_SET_WIPHY);
-
- nl80211_cmd(drv, msg, 0, NL80211_CMD_SET_WIPHY);
+@@ -7488,7 +7488,7 @@ static int nl80211_set_channel(struct i8
+ nl80211_cmd(drv, msg, 0, set_chan ? NL80211_CMD_SET_CHANNEL :
+ NL80211_CMD_SET_WIPHY);
@@ -9,7 +9,7 @@
- NLA_PUT_U32(msg, NL80211_ATTR_IFINDEX, drv->ifindex);
+ NLA_PUT_U32(msg, NL80211_ATTR_IFINDEX, bss->ifindex);
if (nl80211_put_freq_params(msg, freq) < 0)
goto nla_put_failure;
-@@ -11322,7 +11322,7 @@ static int nl80211_switch_channel(void *
+@@ -1
1905
,7 +1
1905
,7 @@ static int nl80211_switch_channel(void *
+@@ -1
2047
,7 +1
2047
,7 @@ static int nl80211_switch_channel(void *
return -ENOMEM;
nl80211_cmd(drv, msg, 0, NL80211_CMD_CHANNEL_SWITCH);
diff --git a/package/hostapd/patches/340-reload_freq_change.patch b/package/hostapd/patches/340-reload_freq_change.patch
index 9316794..d
76f9de
100644
index 9316794..d
3e8918
100644
--- a/package/hostapd/patches/340-reload_freq_change.patch
+++ b/package/hostapd/patches/340-reload_freq_change.patch
@@ -1,6 +1,6 @@
--- a/src/ap/hostapd.c
+++ b/src/ap/hostapd.c
-@@ -72,6 +72,16 @@ static void hostapd_reload_bss(struct ho
+@@ -
68
,6 +
68
,16 @@ static void hostapd_reload_bss(struct ho
+@@ -
70
,6 +
70
,16 @@ static void hostapd_reload_bss(struct ho
#endif /* CONFIG_NO_RADIUS */
ssid = &hapd->conf->ssid;
...
...
@@ -632,7 +737,7 @@ index 9316794..d76f9de 100644
ssid->wpa_passphrase_set && ssid->wpa_passphrase) {
/*
-@@ -172,6 +182,9 @@ int hostapd_reload_config(struct hostapd
+@@ -1
68
,20 +1
7
8,12 @@ int hostapd_reload_config(struct hostapd
+@@ -1
70
,20 +18
0
,12 @@ int hostapd_reload_config(struct hostapd
oldconf = hapd->iconf;
iface->conf = newconf;
...
...
@@ -655,14 +760,14 @@ index 9316794..d76f9de 100644
+ hostapd_reload_bss(hapd);
+ }
diff --git a/package/hostapd/patches/350-nl80211_del_beacon_bss.patch b/package/hostapd/patches/350-nl80211_del_beacon_bss.patch
index 885922c..
8da6372
100644
index 885922c..
e6f6cf3
100644
--- a/package/hostapd/patches/350-nl80211_del_beacon_bss.patch
+++ b/package/hostapd/patches/350-nl80211_del_beacon_bss.patch
@@ -1,6 +1,6 @@
--- a/src/drivers/driver_nl80211.c
+++ b/src/drivers/driver_nl80211.c
-@@ -4290,18 +4290,20 @@ wpa_driver_nl80211_finish_drv_init(struc
+@@ -4
748
,18 +4
748
,20 @@ wpa_driver_nl80211_finish_drv_init(struc
+@@ -4
817
,18 +4
817
,20 @@ wpa_driver_nl80211_finish_drv_init(struc
}
...
...
@@ -671,7 +776,7 @@ index 885922c..8da6372 100644
return send_and_recv_msgs(drv, msg, NULL, NULL);
nla_put_failure:
-@@ -4309,6 +4311,15 @@ static int wpa_driver_nl80211_del_beacon
+@@ -4
767
,6 +4
769
,15 @@ static int wpa_driver_nl80211_del_beacon
+@@ -4
836
,6 +4
838
,15 @@ static int wpa_driver_nl80211_del_beacon
return -ENOBUFS;
}
...
...
@@ -680,7 +785,7 @@ index 885922c..8da6372 100644
/**
* wpa_driver_nl80211_deinit - Deinitialize nl80211 driver interface
-@@ -9911,7 +9922,6 @@ static int wpa_driver_nl80211_stop_ap(vo
+@@ -10
475
,7 +10
486
,6 @@ static int wpa_driver_nl80211_stop_ap(vo
+@@ -10
617
,7 +10
628
,6 @@ static int wpa_driver_nl80211_stop_ap(vo
if (!is_ap_interface(drv->nlmode))
return -1;
wpa_driver_nl80211_del_beacon(drv);
...
...
@@ -737,7 +842,7 @@ index 170d4f2..e69c3d3 100644
+ } else {
+ os_memcpy(reply, "UNKNOWN COMMAND\n", 16);
diff --git a/package/hostapd/patches/370-ap_sta_support.patch b/package/hostapd/patches/370-ap_sta_support.patch
index a3d0572..
5e82252
100644
index a3d0572..
8a92ead
100644
--- a/package/hostapd/patches/370-ap_sta_support.patch
+++ b/package/hostapd/patches/370-ap_sta_support.patch
@@ -1,6 +1,6 @@
...
...
@@ -789,61 +894,98 @@ index a3d0572..5e82252 100644
-@@ -109,6 +109,46 @@ extern int wpa_debug_show_keys;
- extern int wpa_debug_timestamp;
- extern struct wpa_driver_ops *wpa_drivers[];
+@@ -10
4
,6 +10
4,46
@@ const char *wpa_supplicant_full_license5
+@@ -10
5
,6 +10
5,55
@@ const char *wpa_supplicant_full_license5
+ "\n";
+ #endif /* CONFIG_NO_STDOUT_DEBUG */
+static int hostapd_stop(struct wpa_supplicant *wpa_s)
+{
@@ -92,7 +92,7 @@
@@ -69,14 +69,23 @@
+ int len = sizeof(buf);
+ enum hostapd_hw_mode hw_mode;
+ u8 channel;
++ int sec_chan = 0;
+ int ret;
+
+ if (!bss)
+ return;
+
++ if (bss->ht_param & HT_INFO_HT_PARAM_STA_CHNL_WIDTH) {
++ int sec = bss->ht_param & HT_INFO_HT_PARAM_SECONDARY_CHNL_OFF_MASK;
++ if (sec == HT_INFO_HT_PARAM_SECONDARY_CHNL_ABOVE)
++ sec_chan = 1;
++ else if (sec == HT_INFO_HT_PARAM_SECONDARY_CHNL_BELOW)
++ sec_chan = -1;
++ }
++
+ hw_mode = ieee80211_freq_to_chan(bss->freq, &channel);
-+ if (asprintf(&cmd, "UPDATE channel=%d sec_chan=0 hw_mode=%d ieee80211n=%d",
-+ channel, hw_mode, !!bss->ht_capab) < 0)
++ if (asprintf(&cmd, "UPDATE channel=%d sec_chan=%d hw_mode=%d ieee80211n=%d",
++ channel, sec_chan, hw_mode, !!bss->ht_capab) < 0)
+ return -1;
+
+ ret = wpa_ctrl_request(wpa_s->hostapd, cmd, os_strlen(cmd), buf, &len, NULL);
@@ -92,7 +101,7 @@
/* Configure default/group WEP keys for static WEP */
int wpa_set_wep_keys(struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid)
{
-@@ -685,8 +725,12 @@ void wpa_supplicant_set_state(struct wpa
+@@ -7
05
,8 +7
45
,12 @@ void wpa_supplicant_set_state(struct wpa
+@@ -7
11
,8 +7
60
,12 @@ void wpa_supplicant_set_state(struct wpa
#endif /* CONFIG_P2P */
sme_sched_obss_scan(wpa_s, 1);
@@ -105,7 +1
05
,7 @@
@@ -105,7 +1
14
,7 @@
wpa_s->new_connection = 1;
wpa_drv_set_operstate(wpa_s, 0);
#ifndef IEEE8021X_EAPOL
-@@ -2906,6 +2950,20 @@ static int wpa_supplicant_init_iface(str
+@@ -35
16
,6 +3
560
,20 @@ static int wpa_supplicant_init_iface(str
+@@ -35
95
,6 +3
648
,20 @@ static int wpa_supplicant_init_iface(str
sizeof(wpa_s->bridge_ifname));
}
@@ -126,7 +1
26
,7 @@
@@ -126,7 +1
35
,7 @@
/* RSNA Supplicant Key Management - INITIALIZE */
eapol_sm_notify_portEnabled(wpa_s->eapol, FALSE);
eapol_sm_notify_portValid(wpa_s->eapol, FALSE);
-@@ -3125,6 +3183,11 @@ static void wpa_supplicant_deinit_iface(
+@@ -37
11
,6 +3
769
,11 @@ static void wpa_supplicant_deinit_iface(
+@@ -37
98
,6 +3
865
,11 @@ static void wpa_supplicant_deinit_iface(
if (terminate)
wpa_msg(wpa_s, MSG_INFO, WPA_EVENT_TERMINATING);
@@ -148,
9
+1
48,9
@@
@@ -148,
41
+1
57,45
@@
#include "drivers/driver.h"
#include "wpa_supplicant_i.h"
#include "config.h"
-@@ -245,6 +246,9 @@ static void calculate_update_time(const
+@@ -247,6 +248,
9
@@ static void calculate_update_time(const
+@@ -247,6 +248,
10
@@ static void calculate_update_time(const
static void wpa_bss_copy_res(struct wpa_bss *dst, struct wpa_scan_res *src,
- struct os_time *fetch_time)
+ struct os_reltime *fetch_time)
{
+ struct ieee80211_ht_capabilities *capab;
++ struct ieee80211_ht_operation *oper;
+ struct ieee802_11_elems elems;
@@ -158,7 +158,7 @@
+
dst->flags = src->flags;
os_memcpy(dst->bssid, src->bssid, ETH_ALEN);
dst->freq = src->freq;
-@@ -255,6 +259,12 @@ static void wpa_bss_copy_res(struct wpa_
+@@ -257,6 +26
1
,1
2
@@ static void wpa_bss_copy_res(struct wpa_
+@@ -257,6 +26
2
,1
5
@@ static void wpa_bss_copy_res(struct wpa_
dst->level = src->level;
dst->tsf = src->tsf;
@@ -173,16 +173,16 @@
+ memset(&elems, 0, sizeof(elems));
+ ieee802_11_parse_elems((u8 *) (src + 1), src->ie_len, &elems, 0);
+ capab = (struct ieee80211_ht_capabilities *) elems.ht_capabilities;
++ oper = (struct ieee80211_ht_operation *) elems.ht_operation;
+ if (capab)
+ dst->ht_capab = le_to_host16(capab->ht_capabilities_info);
++ if (oper)
++ dst->ht_param = oper->ht_param;
+
calculate_update_time(fetch_time, src->age, &dst->last_update);
}
--- a/wpa_supplicant/main.c
+++ b/wpa_supplicant/main.c
...
...
@@ -865,7 +1007,7 @@ index a3d0572..5e82252 100644
#endif /* CONFIG_DEBUG_LINUX_TRACING */
printf(" -t = include timestamp in debug messages\n"
" -h = show this help text\n"
@@ -190,16 +
190
,16 @@
@@ -190,16 +
203
,16 @@
" -L = show license (BSD)\n"
" -o = override driver parameter for new interfaces\n"
" -O = override ctrl_interface parameter for new interfaces\n"
...
...
@@ -886,17 +1028,24 @@ index a3d0572..5e82252 100644
usage();
exitcode = 0;
goto out;
@@ -211,
7
+2
11,7
@@
@@ -211,
12
+2
24,14
@@
break;
--- a/wpa_supplicant/bss.h
+++ b/wpa_supplicant/bss.h
-@@ -69,6 +69,8 @@ struct wpa_bss {
+@@ -70,6 +70,
8
@@ struct wpa_bss {
+@@ -70,6 +70,
10
@@ struct wpa_bss {
u8 ssid[32];
/** Length of SSID */
size_t ssid_len;
+ /** HT caapbilities */
+ u16 ht_capab;
++ /* Five octets of HT Operation Information */
++ u8 ht_param;
/** Frequency of the channel in MHz (e.g., 2412 = channel 1) */
int freq;
/** Beacon interval in TUs (host byte order) */
diff --git a/package/hostapd/patches/380-disable_ctrl_iface_mib.patch b/package/hostapd/patches/380-disable_ctrl_iface_mib.patch
index 27f21bd..d
39ba2e
100644
index 27f21bd..d
ee1ab3
100644
--- a/package/hostapd/patches/380-disable_ctrl_iface_mib.patch
+++ b/package/hostapd/patches/380-disable_ctrl_iface_mib.patch
@@ -1,6 +1,6 @@
...
...
@@ -945,7 +1094,7 @@ index 27f21bd..d39ba2e 100644
--- a/wpa_supplicant/Makefile
+++ b/wpa_supplicant/Makefile
-@@ -778,6 +778,9 @@ ifdef CONFIG_WNM
+@@ -
797
,6 +
797
,9 @@ ifdef CONFIG_WNM
+@@ -
805
,6 +
805
,9 @@ ifdef CONFIG_WNM
OBJS += ../src/ap/wnm_ap.o
endif
ifdef CONFIG_CTRL_IFACE
...
...
@@ -954,7 +1103,7 @@ index 27f21bd..d39ba2e 100644
--- a/wpa_supplicant/ctrl_iface.c
+++ b/wpa_supplicant/ctrl_iface.c
-@@ -5262,6 +5262,7 @@ char * wpa_supplicant_ctrl_iface_process
+@@ -6
075
,6 +6
075
,7 @@ char * wpa_supplicant_ctrl_iface_process
+@@ -6
243
,6 +6
243
,7 @@ char * wpa_supplicant_ctrl_iface_process
reply_len = -1;
} else if (os_strncmp(buf, "NOTE ", 5) == 0) {
wpa_printf(MSG_INFO, "NOTE: %s", buf + 5);
...
...
@@ -963,7 +1112,7 @@ index 27f21bd..d39ba2e 100644
reply_len = wpa_sm_get_mib(wpa_s->wpa, reply, reply_size);
if (reply_len >= 0) {
-@@ -5273,6 +5274,7 @@ char * wpa_supplicant_ctrl_iface_process
+@@ -6
086
,6 +6
087
,7 @@ char * wpa_supplicant_ctrl_iface_process
+@@ -6
254
,6 +6
255
,7 @@ char * wpa_supplicant_ctrl_iface_process
else
reply_len += res;
}
...
...
@@ -972,7 +1121,7 @@ index 27f21bd..d39ba2e 100644
reply_len = wpa_supplicant_ctrl_iface_status(
wpa_s, buf + 6, reply, reply_size);
-@@ -5687,6 +5689,7 @@ char * wpa_supplicant_ctrl_iface_process
+@@ -6
490
,6 +6
492
,7 @@ char * wpa_supplicant_ctrl_iface_process
+@@ -6
661
,6 +6
663
,7 @@ char * wpa_supplicant_ctrl_iface_process
reply_len = wpa_supplicant_ctrl_iface_bss(
wpa_s, buf + 4, reply, reply_size);
#ifdef CONFIG_AP
...
...
@@ -981,7 +1130,7 @@ index 27f21bd..d39ba2e 100644
reply_len = ap_ctrl_iface_sta_first(wpa_s, reply, reply_size);
} else if (os_strncmp(buf, "STA ", 4) == 0) {
-@@ -5695,6 +5698,7 @@ char * wpa_supplicant_ctrl_iface_process
+@@ -6
498
,6 +6
501
,7 @@ char * wpa_supplicant_ctrl_iface_process
+@@ -6
669
,6 +6
672
,7 @@ char * wpa_supplicant_ctrl_iface_process
} else if (os_strncmp(buf, "STA-NEXT ", 9) == 0) {
reply_len = ap_ctrl_iface_sta_next(wpa_s, buf + 9, reply,
reply_size);
...
...
@@ -1010,7 +1159,7 @@ index 27f21bd..d39ba2e 100644
#ifdef CONFIG_P2P_MANAGER
static int p2p_manager_disconnect(struct hostapd_data *hapd, u16 stype,
-@@ -423,3 +425,4 @@ int hostapd_parse_csa_settings(const cha
+@@ -52
4
,3 +52
6
,4 @@ int hostapd_parse_csa_settings(const cha
+@@ -52
6
,3 +52
8
,4 @@ int hostapd_parse_csa_settings(const cha
return 0;
}
...
...
@@ -1039,7 +1188,7 @@ index 27f21bd..d39ba2e 100644
--- a/src/ap/wpa_auth.c
+++ b/src/ap/wpa_auth.c
-@@ -2708,6 +2708,7 @@ static const char * wpa_bool_txt(int boo
+@@ -283
0
,6 +283
0
,7 @@ static const char * wpa_bool_txt(int boo
+@@ -283
2
,6 +283
2
,7 @@ static const char * wpa_bool_txt(int boo
return bool ? "TRUE" : "FALSE";
}
...
...
@@ -1048,7 +1197,7 @@ index 27f21bd..d39ba2e 100644
#define RSN_SUITE "%02x-%02x-%02x-%d"
#define RSN_SUITE_ARG(s) \
-@@ -2852,7 +2853,7 @@ int wpa_get_mib_sta(struct wpa_state_mac
+@@ -297
4
,7 +297
5
,7 @@ int wpa_get_mib_sta(struct wpa_state_mac
+@@ -297
6
,7 +297
7
,7 @@ int wpa_get_mib_sta(struct wpa_state_mac
return len;
}
...
...
@@ -1057,7 +1206,7 @@ index 27f21bd..d39ba2e 100644
--- a/src/rsn_supp/wpa.c
+++ b/src/rsn_supp/wpa.c
-@@ -1844,6 +1844,8 @@ static u32 wpa_key_mgmt_suite(struct wpa
+@@ -191
2
,6 +191
2
,8 @@ static u32 wpa_key_mgmt_suite(struct wpa
+@@ -191
1
,6 +191
1
,8 @@ static u32 wpa_key_mgmt_suite(struct wpa
}
...
...
@@ -1066,7 +1215,7 @@ index 27f21bd..d39ba2e 100644
#define RSN_SUITE_ARG(s) \
((s) >> 24) & 0xff, ((s) >> 16) & 0xff, ((s) >> 8) & 0xff, (s) & 0xff
-@@ -1927,6 +1929,7 @@ int wpa_sm_get_mib(struct wpa_sm *sm, ch
+@@ -199
5
,6 +199
7
,7 @@ int wpa_sm_get_mib(struct wpa_sm *sm, ch
+@@ -199
4
,6 +199
6
,7 @@ int wpa_sm_get_mib(struct wpa_sm *sm, ch
return (int) len;
}
...
...
@@ -1183,14 +1332,14 @@ index 0d9065a..0000000
-
-
diff --git a/package/hostapd/patches/410-bring_down_interface.patch b/package/hostapd/patches/410-bring_down_interface.patch
index 31033a0..
5a57249
100644
index 31033a0..
165484b
100644
--- a/package/hostapd/patches/410-bring_down_interface.patch
+++ b/package/hostapd/patches/410-bring_down_interface.patch
@@ -1,6 +1,6 @@
--- a/src/drivers/driver_nl80211.c
+++ b/src/drivers/driver_nl80211.c
-@@ -8480,12 +8480,7 @@ static int wpa_driver_nl80211_set_mode(s
+@@ -
8936
,12 +
8936
,7 @@ static int wpa_driver_nl80211_set_mode(s
+@@ -
9070
,12 +
9070
,7 @@ static int wpa_driver_nl80211_set_mode(s
/* Try to set the mode again while the interface is
* down */
ret = nl80211_set_mode(drv, drv->ifindex, nlmode);
...
...
@@ -1199,7 +1348,7 @@ index 31033a0..5a57249 100644
} else
wpa_printf(MSG_DEBUG, "nl80211: Failed to set "
-@@ -8498,6 +8493,8 @@ static int wpa_driver_nl80211_set_mode(s
+@@ -
8954,6 +8949
,8 @@ static int wpa_driver_nl80211_set_mode(s
+@@ -
9088,6 +9083
,8 @@ static int wpa_driver_nl80211_set_mode(s
"interface is down");
drv->nlmode = nlmode;
drv->ignore_if_down_event = 1;
...
...
@@ -1237,12 +1386,13 @@ index 6e86658..8dae52b 100644
if (conf->wpa_pairwise & WPA_CIPHER_CCMP)
wps->encr_types |= WPS_ENCR_AES;
diff --git a/package/hostapd/patches/440-dynamic_20_40_mhz.patch b/package/hostapd/patches/440-dynamic_20_40_mhz.patch
index 905ec2c..af2fb26 100644
deleted file mode 100644
index 905ec2c..0000000
--- a/package/hostapd/patches/440-dynamic_20_40_mhz.patch
+++
b/package/hostapd/patches/440-dynamic_20_40_mhz.patch
@@ -1,
19 +1,19
@@
--- a/hostapd/config_file.c
+++ b/hostapd/config_file.c
+++
/dev/null
@@ -1,
206 +0,0
@@
-
--- 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++;
...
...
@@ -1254,90 +1404,96 @@ index 905ec2c..af2fb26 100644
- } else if (os_strcmp(buf, "require_ht") == 0) {
- conf->require_ht = atoi(pos);
- } else if (os_strcmp(buf, "obss_interval") == 0) {
+@@ -2648,6 +2648,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
---- 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;
@@ -23,7 +23,7 @@
int ieee80211ac;
--- a/src/ap/hostapd.c
+++ b/src/ap/hostapd.c
- int ieee80211n;
- int secondary_channel;
- int require_ht;
-+ int dynamic_ht40;
- int obss_interval;
- u32 vht_capab;
- 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"
@@ -31,7 +31,7 @@
#include "ieee802_11_auth.h"
#include "vlan_init.h"
#include "wpa_auth.h"
- #include "beacon.h"
- #include "iapp.h"
- #include "ieee802_1x.h"
-+#include "ieee802_11.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);
@@ -41,7 +41,7 @@
os_free(iface->current_rates);
--- a/src/ap/hostapd.h
+++ b/src/ap/hostapd.h
- static void hostapd_cleanup_iface_partial(struct hostapd_iface *iface)
- {
- wpa_printf(MSG_DEBUG, "%s(%p)", __func__, iface);
-+ hostapd_deinit_ht(iface);
- hostapd_free_hw_features(iface->hw_features, iface->num_hw_features);
- iface->hw_features = NULL;
- 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;
@@ -53,7 +53,7 @@
/* surveying helpers */
--- a/src/ap/ieee802_11.c
+++ b/src/ap/ieee802_11.c
- /* Overlapping BSS information */
- int olbc_ht;
-
-+ int force_20mhz;
-+ struct os_time last_20mhz_trigger;
-+
- u16 ht_op_mode;
-
- /* 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);
@@ -65,7 +65,7 @@
--- a/src/ap/ieee802_11.h
+++ b/src/ap/ieee802_11.h
- sizeof(mgmt->u.beacon)), &elems,
- 0);
-
-+ if (!elems.ht_capabilities)
-+ hostapd_trigger_20mhz(hapd->iface);
-+
- ap_list_process_beacon(hapd->iface, mgmt, &elems, fi);
- }
-
---- 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);
@@ -85,8 +85,8 @@
#endif /* IEEE802_11_H */
--- a/src/ap/ieee802_11_ht.c
+++ b/src/ap/ieee802_11_ht.c
- 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);
-
-+#ifdef CONFIG_IEEE80211N
-+void hostapd_trigger_20mhz(struct hostapd_iface *iface);
-+void hostapd_deinit_ht(struct hostapd_iface *iface);
-+
-+#else
-+static inline void hostapd_deinit_ht(struct hostapd_iface *iface)
-+{
-+}
-+static inline void hostapd_trigger_20mhz(struct hostapd_iface *iface)
-+{
-+}
-+#endif /* CONFIG_IEEE80211N */
-+
- #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"
@@ -97,29 +97,25 @@
u8 * hostapd_eid_ht_capabilities(struct hostapd_data *hapd, u8 *eid)
- #include "hostapd.h"
- #include "ap_config.h"
-+#include "ap_drv_ops.h"
- #include "sta_info.h"
- #include "beacon.h"
- #include "ieee802_11.h"
-+#include "utils/eloop.h"
-
-
- u8 * hostapd_eid_ht_capabilities(struct hostapd_data *hapd, u8 *eid)
-@@ -86,12 +88,15 @@ u8 * hostapd_eid_ht_operation(struct hos
+@@ -92,6 +94,9 @@ u8 * hostapd_eid_ht_operation(struct hos
-
- oper->control_chan = hapd->iconf->channel;
+ oper->primary_chan = hapd->iconf->channel;
oper->operation_mode = host_to_le16(hapd->iface->ht_op_mode);
- oper->operation_mode = host_to_le16(hapd->iface->ht_op_mode);
-- if (hapd->iconf->secondary_channel == 1)
-- oper->ht_param |= HT_INFO_HT_PARAM_SECONDARY_CHNL_ABOVE |
-- HT_INFO_HT_PARAM_REC_TRANS_CHNL_WIDTH;
...
...
@@ -1353,25 +1509,94 @@ index 905ec2c..af2fb26 100644
-+ oper->ht_param |= HT_INFO_HT_PARAM_SECONDARY_CHNL_BELOW |
-+ HT_INFO_HT_PARAM_REC_TRANS_CHNL_WIDTH;
-+ }
++ if (hapd->iface->force_20mhz)
++ goto skip;
++
+ if (hapd->iconf->secondary_channel == 1)
+ oper->ht_param |= HT_INFO_HT_PARAM_SECONDARY_CHNL_ABOVE |
+ HT_INFO_HT_PARAM_STA_CHNL_WIDTH;
+@@ -99,6 +104,7 @@ u8 * hostapd_eid_ht_operation(struct hos
+ oper->ht_param |= HT_INFO_HT_PARAM_SECONDARY_CHNL_BELOW |
+ HT_INFO_HT_PARAM_STA_CHNL_WIDTH;
++skip:
pos += sizeof(*oper);
-
- pos += sizeof(*oper);
-
-@@ -286,3 +291,84 @@ void hostapd_get_ht_capab(struct hostapd
+ return pos;
+@@ -288,3 +294,84 @@ void hostapd_get_ht_capab(struct hostapd
neg_ht_cap->ht_capabilities_info = host_to_le16(cap);
}
-
- neg_ht_cap->ht_capabilities_info = host_to_le16(cap);
- }
-+
-+static void hostapd_set_force_20mhz(struct hostapd_iface *iface);
-+
-+static void hostapd_restore_40mhz(void *eloop_data, void *user_ctx)
-+{
-+ struct hostapd_iface *iface = eloop_data;
-+ struct os_time time;
-+ int timeout;
-+
-+ if (!iface->last_20mhz_trigger.sec)
-+ return;
-+
-+ os_get_time(&time);
-+ timeout = iface->last_20mhz_trigger.sec + iface->conf->dynamic_ht40 -
-+ time.sec;
-+
-+ if (timeout > 0) {
-+ eloop_register_timeout(timeout, 0, hostapd_restore_40mhz,
-+ iface, NULL);
-+ return;
-+ }
-+
-+ iface->last_20mhz_trigger.sec = 0;
-+ iface->last_20mhz_trigger.usec = 0;
-+
-+ iface->force_20mhz = 0;
-+ hostapd_set_force_20mhz(iface);
-+}
-+
-+static void hostapd_set_force_20mhz(struct hostapd_iface *iface)
-+{
-+ int secondary_channel;
-+ int i;
-+
-+ ieee802_11_set_beacons(iface);
-+
-+ for (i = 0; i < iface->num_bss; i++) {
-+ struct hostapd_data *hapd = iface->bss[i];
-+
-+ if (iface->force_20mhz)
-+ secondary_channel = 0;
-+ else
-+ secondary_channel = hapd->iconf->secondary_channel;
-+
-+ if (hostapd_set_freq(hapd, hapd->iconf->hw_mode, iface->freq,
-+ 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");
-+ }
-+ }
-+}
-+
-+void hostapd_deinit_ht(struct hostapd_iface *iface)
-+{
-+ eloop_cancel_timeout(hostapd_restore_40mhz, iface, NULL);
-+}
-+
-+void hostapd_trigger_20mhz(struct hostapd_iface *iface)
-+{
-+ if (!iface->conf->dynamic_ht40)
-+ return;
-+
-+ if (!iface->force_20mhz) {
-+ iface->force_20mhz = 1;
-+ hostapd_set_force_20mhz(iface);
-+ }
-+
-+ if (!iface->last_20mhz_trigger.sec) {
-+ eloop_cancel_timeout(hostapd_restore_40mhz, iface, NULL);
-+ eloop_register_timeout(iface->conf->dynamic_ht40, 0,
-+ hostapd_restore_40mhz, iface, NULL);
-+ }
-+
-+ os_get_time(&iface->last_20mhz_trigger);
-+}
diff --git a/package/hostapd/patches/450-limit_debug_messages.patch b/package/hostapd/patches/450-limit_debug_messages.patch
index aaea941..08f17dc 100644
--- a/package/hostapd/patches/450-limit_debug_messages.patch
...
...
@@ -1733,7 +1958,7 @@ index 61715d6..3459a61 100644
int ret = 1;
size_t i, j;
diff --git a/package/hostapd/patches/500-wpa_supplicant-add-new-config-params-to-be-used-with.patch b/package/hostapd/patches/500-wpa_supplicant-add-new-config-params-to-be-used-with.patch
index 544151e..
5656970
100644
index 544151e..
9f4a5f5
100644
--- a/package/hostapd/patches/500-wpa_supplicant-add-new-config-params-to-be-used-with.patch
+++ b/package/hostapd/patches/500-wpa_supplicant-add-new-config-params-to-be-used-with.patch
@@ -22,9 +22,9 @@
Signed-hostap: Antonio Quartulli <ordex@autistici.org>
...
...
@@ -1773,7 +1998,7 @@ index 544151e..5656970 100644
#endif /* CONFIG_P2P */
@@ -142,
7
+142,
7
@@
Signed-hostap: Antonio Quartulli <ordex@autistici.org>
@@ -142,
16
+142,
16
@@
Signed-hostap: Antonio Quartulli <ordex@autistici.org>
/* Helper macros for network block parser */
#ifdef OFFSET
...
...
@@ -1782,17 +2007,39 @@ index 544151e..5656970 100644
{ INT(ap_max_inactivity) },
{ INT(dtim_period) },
{ INT(beacon_int) },
@@ -162,7 +162,7 @@
Signed-hostap: Antonio Quartulli <ordex@autistici.org>
+ { INT_RANGE(fixed_freq, 0, 1) },
+ { FUNC(rates) },
+ { FUNC(mcast_rate) },
- };
-
- #undef OFFSET
+ #ifdef CONFIG_MACSEC
+ { INT_RANGE(macsec_policy, 0, 1) },
+ #endif /* CONFIG_MACSEC */
--- a/wpa_supplicant/config_ssid.h
+++ b/wpa_supplicant/config_ssid.h
@@ -12,6 +12,7 @@
@@ -162,37 +162,24 @@
Signed-hostap: Antonio Quartulli <ordex@autistici.org>
#define MAX_SSID_LEN 32
-@@ -620,6 +621,10 @@ struct wpa_ssid {
+@@ -636,6 +637,10 @@ struct wpa_ssid {
* dereferences since it may not be updated in all cases.
- * dereferences since it may not be updated in all cases.
+@@ -637,6 +638,10 @@ struct wpa_ssid {
*/
void *parent_cred;
@@ -175,24 +175,11 @@
Signed-hostap: Antonio Quartulli <ordex@autistici.org>
#endif /* CONFIG_SSID_H */
-+
+
+ int fixed_freq;
+ unsigned char rates[NL80211_MAX_SUPP_RATES];
+ double mcast_rate;
- };
-
- #endif /* CONFIG_SSID_H */
++
+ #ifdef CONFIG_MACSEC
+ /**
+ * macsec_policy - Determines the policy for MACsec secure session
--- a/wpa_supplicant/wpa_supplicant.c
+++ b/wpa_supplicant/wpa_supplicant.c
-@@ -1623,15 +1623,24 @@ void wpa_supplicant_associate(struct wpa
...
...
@@ -1811,7 +2058,7 @@ index 544151e..5656970 100644
-+ if (ssid->frequency > 0 && params.freq == 0)
-+ /* Initial channel for IBSS */
-+ params.freq = ssid->frequency;
+@@ -1
791
,6 +1
791
,13 @@ static void wpas_start_assoc_cb(struct w
+@@ -1
806
,6 +1
806
,13 @@ static void wpas_start_assoc_cb(struct w
+ params.beacon_int = ssid->beacon_int;
+ else
+ params.beacon_int = wpa_s->conf->beacon_int;
...
...
@@ -1831,7 +2078,7 @@ index 544151e..5656970 100644
- params.wpa_ie_len = wpa_ie_len;
- params.pairwise_suite = cipher_pairwise;
diff --git a/package/hostapd/patches/501-driver_nl80211-use-new-parameters-during-ibss-join.patch b/package/hostapd/patches/501-driver_nl80211-use-new-parameters-during-ibss-join.patch
index 565bbc9..
c774682
100644
index 565bbc9..
e7484d9
100644
--- a/package/hostapd/patches/501-driver_nl80211-use-new-parameters-during-ibss-join.patch
+++ b/package/hostapd/patches/501-driver_nl80211-use-new-parameters-during-ibss-join.patch
@@ -10,7 +10,7 @@
Signed-hostap: Antonio Quartulli <ordex@autistici.org>
...
...
@@ -1839,7 +2086,7 @@ index 565bbc9..c774682 100644
--- a/src/drivers/driver_nl80211.c
+++ b/src/drivers/driver_nl80211.c
-@@ -7903,7 +7903,7 @@ static int wpa_driver_nl80211_ibss(struc
+@@ -8
455
,7 +8
455
,7 @@ static int wpa_driver_nl80211_ibss(struc
+@@ -8
581
,7 +8
581
,7 @@ static int wpa_driver_nl80211_ibss(struc
struct wpa_driver_associate_params *params)
{
struct nl_msg *msg;
...
...
@@ -1850,14 +2097,14 @@ index 565bbc9..c774682 100644
-@@ -7936,6 +7936,37 @@ retry:
- wpa_printf(MSG_DEBUG, " * freq=%d", params->freq);
- NLA_PUT_U32(msg, NL80211_ATTR_WIPHY_FREQ, params->freq);
+@@ -8
494
,6 +8
494
,37 @@ retry:
+@@ -8
620
,6 +8
620
,37 @@ retry:
+ params->beacon_int);
+ }
+ if (params->fixed_freq) {
+ wpa_printf(MSG_DEBUG, " * fixed_freq");
diff --git a/package/hostapd/patches/502-wpa_s-support-htmode-param.patch b/package/hostapd/patches/502-wpa_s-support-htmode-param.patch
index adb20a2..
fdba6d7
100644
index adb20a2..
b4c4034
100644
--- a/package/hostapd/patches/502-wpa_s-support-htmode-param.patch
+++ b/package/hostapd/patches/502-wpa_s-support-htmode-param.patch
@@ -16,7 +16,7 @@
Signed-off-by: Antonio Quartulli <ordex@autistici.org>
...
...
@@ -1878,7 +2125,7 @@ index adb20a2..fdba6d7 100644
--- a/src/drivers/driver_nl80211.c
+++ b/src/drivers/driver_nl80211.c
-@@ -7967,6 +7967,22 @@ retry:
+@@ -8
525
,6 +8
525
,22 @@ retry:
+@@ -8
651
,6 +8
651
,22 @@ retry:
NLA_PUT_U32(msg, NL80211_ATTR_MCAST_RATE, params->mcast_rate);
}
...
...
@@ -1891,7 +2138,7 @@ index adb20a2..fdba6d7 100644
}
#endif /* NO_CONFIG_WRITE */
@@ -124,
7
+124,
7
@@
Signed-off-by: Antonio Quartulli <ordex@autistici.org>
@@ -124,
28
+124,
28
@@
Signed-off-by: Antonio Quartulli <ordex@autistici.org>
static int wpa_config_parse_rates(const struct parse_data *data,
struct wpa_ssid *ssid, int line,
const char *value)
...
...
@@ -1900,8 +2147,13 @@ index adb20a2..fdba6d7 100644
{ INT_RANGE(fixed_freq, 0, 1) },
{ FUNC(rates) },
{ FUNC(mcast_rate) },
@@ -134,7 +134,7 @@
Signed-off-by: Antonio Quartulli <ordex@autistici.org>
#undef OFFSET
+ { FUNC(htmode) },
- };
-
- #undef OFFSET
+ #ifdef CONFIG_MACSEC
+ { INT_RANGE(macsec_policy, 0, 1) },
+ #endif /* CONFIG_MACSEC */
--- a/wpa_supplicant/config_ssid.h
+++ b/wpa_supplicant/config_ssid.h
-@@ -625,6 +625,8 @@ struct wpa_ssid {
...
...
@@ -1909,12 +2161,17 @@ index adb20a2..fdba6d7 100644
int fixed_freq;
unsigned char rates[NL80211_MAX_SUPP_RATES];
double mcast_rate;
@@ -145,7 +145,7 @@
Signed-off-by: Antonio Quartulli <ordex@autistici.org>
#endif /* CONFIG_SSID_H */
+ int ht_set;
+ unsigned int htmode;
- };
- #endif /* CONFIG_SSID_H */
+ #ifdef CONFIG_MACSEC
+ /**
--- a/wpa_supplicant/wpa_supplicant.c
+++ b/wpa_supplicant/wpa_supplicant.c
-@@ -1639,6 +1639,8 @@ void wpa_supplicant_associate(struct wpa
+@@ -1
798
,6 +1
798
,8 @@ static void wpas_start_assoc_cb(struct w
+@@ -1
813
,6 +1
813
,8 @@ static void wpas_start_assoc_cb(struct w
i++;
}
params.mcast_rate = ssid->mcast_rate;
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment