From: Felix Fietkau Date: Tue, 26 Aug 2025 20:06:25 +0000 (+0200) Subject: hostapd: update to Git HEAD (2025-08-26) X-Git-Url: http://git.openwrt.org/?a=commitdiff_plain;h=95c8b385e58f8c73ef3f01b3757cb066f6ec8b95;p=openwrt%2Fstaging%2Fthess.git hostapd: update to Git HEAD (2025-08-26) 33fb6c738bc4 P2P2: Enable some testing parameters without CONFIG_TESTING_OPTIONS 56616c4183a6 P2P2: Update device name with USD device found 1d791939dcdf Cancel pending connect radio work when network is removed 8235e21d7fe3 P2P: Fix preferred frequency list size handling in p2p_check_pref_chan() 4bc754d9c727 Add QCA vendor interface to enable/disable TX power limit d65f5705df98 Add QCA vendor attribute to disable A-MSDU address check validation 74881765b7fb nl80211: Use i802_bss in qca_set_allowed_ap_freqs() to use correct ifindex ca8303135cbb P2P2: Set P2P mode to the driver on P2P GO device 063ae7af68dc ACS: Fix incorrect index calculation for primary channel 4aa3a58377c1 ACS: Validate all channels in a segment before selection 02c9d3376224 ACS: Extend support to exclude 6 GHz non-PSC in non-offloaded ACS 307365eb57bb tests: Add test for ACS exclude 6 GHz non-PSC 0721e4886316 Add QCA vendor attribute to configure EHT RTWT support 76b39db44c77 QCA vendor attribute to configure BTM MLD Recommendation For Multiple APs support 2faeffdeca22 AP MLD: Properly deinit sm of non-ML STA connected to ML AP e4f4e5a872a5 AP MLD: Fix STA's flag wrongly updated in SME-in-driver cases ec6cade42c0f Increase buffer size to handle long freq_list entries in config 0522585da7b0 Write freq_list as per-network item in wpa_supplicant.conf 5e527704b912 Use SCS reconfiguration logic under CONFIG_NO_ROBUST_AV 5d6214a724c1 PASN: Clear driver/firwmare ranging context if PASN Auth 1 fails 14dc782d50db DPP: Avoid generating DPP shared secret(z) for non-association links 40326b60b17a RSNO: Allow OWE to be configured in RSN overrides in AP processing acadef1b04d5 hostapd_cli: Open a new hostapd connection on ping failure when using -a ac0d9bd80ec5 Add QCA vendor attributes to configure global TX chain mask f5b8ef6c966a Add QCA vendor attributes for MSDU TX statistics 6c11fcefe4fc hostapd: Prevent blocking sends on control interface monitor socket 0bbb8a66f64c AP MLD: Remove redundant outer loop in hostapd_notif_disassoc_mld() 52fb5ccd91f3 AP MLD: Avoid using mld_id to identify partners 7bb930d50b5f wpa_supplicant: Add option to disable 80+80 MHz opclass advertisement 9001059bd6ad tests: Make dbus_connect_oom more robust 663fb1940231 AP MLD: Fix hostapd_is_mld_ap() check 590f3bdb4c61 AP MLD: Rename hostapd_is_mld_ap() to hostapd_is_multiple_link_mld() b13b69a235f7 Add VLANID in the AP-STA-CONNECTED events c1e8b1c6462b SAE: Assign VLAN when using PMKSA caching 9bc29dcdfdee SAE: Default password binding through control interface 9de127c31c40 tests: More testing coverage for SAE with multiple passwords 5ce1d4180386 nl80211: Fix crash by cancelling scan timeout before a BSS is removed ca266cc24d87 nl80211: Fix crash by setting the drv->ctx properly Signed-off-by: Felix Fietkau --- diff --git a/package/network/services/hostapd/Makefile b/package/network/services/hostapd/Makefile index 4522eec8d4..8968f08029 100644 --- a/package/network/services/hostapd/Makefile +++ b/package/network/services/hostapd/Makefile @@ -9,9 +9,9 @@ PKG_RELEASE:=1 PKG_SOURCE_URL:=https://w1.fi/hostap.git PKG_SOURCE_PROTO:=git -PKG_SOURCE_DATE:=2025-06-27 -PKG_SOURCE_VERSION:=ea08700a762f13c415e319993720bed83ad9aa2c -PKG_MIRROR_HASH:=8bfd23188058611a7efb3b0064a7601f8073ceedbf1538a99f93abc743608d46 +PKG_SOURCE_DATE:=2025-08-26 +PKG_SOURCE_VERSION:=ca266cc24d8705eb1a2a0857ad326e48b1408b20 +PKG_MIRROR_HASH:=59ac677093f524ff98588abd9f33805a336a6e929d6814222f0d784c854f2343 PKG_MAINTAINER:=Felix Fietkau PKG_LICENSE:=BSD-3-Clause diff --git a/package/network/services/hostapd/patches/010-mesh-Allow-DFS-channels-to-be-selected-if-dfs-is-ena.patch b/package/network/services/hostapd/patches/010-mesh-Allow-DFS-channels-to-be-selected-if-dfs-is-ena.patch index aba2ff08bc..1b43b1df2b 100644 --- a/package/network/services/hostapd/patches/010-mesh-Allow-DFS-channels-to-be-selected-if-dfs-is-ena.patch +++ b/package/network/services/hostapd/patches/010-mesh-Allow-DFS-channels-to-be-selected-if-dfs-is-ena.patch @@ -14,7 +14,7 @@ Signed-off-by: Peter Oh --- a/wpa_supplicant/wpa_supplicant.c +++ b/wpa_supplicant/wpa_supplicant.c -@@ -2974,7 +2974,7 @@ static int drv_supports_vht(struct wpa_s +@@ -2976,7 +2976,7 @@ static int drv_supports_vht(struct wpa_s } @@ -23,7 +23,7 @@ Signed-off-by: Peter Oh { int i; -@@ -2983,7 +2983,10 @@ static bool ibss_mesh_is_80mhz_avail(int +@@ -2985,7 +2985,10 @@ static bool ibss_mesh_is_80mhz_avail(int chan = hw_get_channel_chan(mode, i, NULL); if (!chan || @@ -35,7 +35,7 @@ Signed-off-by: Peter Oh return false; } -@@ -3110,7 +3113,7 @@ static void ibss_mesh_select_40mhz(struc +@@ -3112,7 +3115,7 @@ static void ibss_mesh_select_40mhz(struc const struct wpa_ssid *ssid, struct hostapd_hw_modes *mode, struct hostapd_freq_params *freq, @@ -44,7 +44,7 @@ Signed-off-by: Peter Oh { int chan_idx; struct hostapd_channel_data *pri_chan = NULL, *sec_chan = NULL; -@@ -3141,8 +3144,11 @@ static void ibss_mesh_select_40mhz(struc +@@ -3143,8 +3146,11 @@ static void ibss_mesh_select_40mhz(struc return; /* Check primary channel flags */ @@ -58,7 +58,7 @@ Signed-off-by: Peter Oh #ifdef CONFIG_HT_OVERRIDES if (ssid->disable_ht40) -@@ -3177,8 +3183,11 @@ static void ibss_mesh_select_40mhz(struc +@@ -3179,8 +3185,11 @@ static void ibss_mesh_select_40mhz(struc return; /* Check secondary channel flags */ @@ -72,7 +72,7 @@ Signed-off-by: Peter Oh if (freq->ht_enabled) { if (ht40 == -1) { -@@ -3256,7 +3265,7 @@ static bool ibss_mesh_select_80_160mhz(s +@@ -3258,7 +3267,7 @@ static bool ibss_mesh_select_80_160mhz(s const struct wpa_ssid *ssid, struct hostapd_hw_modes *mode, struct hostapd_freq_params *freq, @@ -81,7 +81,7 @@ Signed-off-by: Peter Oh static const int bw80[] = { 5180, 5260, 5500, 5580, 5660, 5745, 5825, 5955, 6035, 6115, 6195, 6275, 6355, 6435, -@@ -3309,7 +3318,7 @@ static bool ibss_mesh_select_80_160mhz(s +@@ -3311,7 +3320,7 @@ static bool ibss_mesh_select_80_160mhz(s goto skip_80mhz; /* Use 40 MHz if channel not usable */ @@ -90,7 +90,7 @@ Signed-off-by: Peter Oh goto skip_80mhz; chwidth = CONF_OPER_CHWIDTH_80MHZ; -@@ -3351,7 +3360,7 @@ static bool ibss_mesh_select_80_160mhz(s +@@ -3353,7 +3362,7 @@ static bool ibss_mesh_select_80_160mhz(s HE_PHYCAP_CHANNEL_WIDTH_SET_160MHZ_IN_5G) && (ssid->max_oper_chwidth == CONF_OPER_CHWIDTH_160MHZ || ssid->max_oper_chwidth == CONF_OPER_CHWIDTH_320MHZ) && @@ -99,7 +99,7 @@ Signed-off-by: Peter Oh for (j = 0; j < ARRAY_SIZE(bw160); j++) { u8 start_chan; -@@ -3374,11 +3383,11 @@ static bool ibss_mesh_select_80_160mhz(s +@@ -3376,11 +3385,11 @@ static bool ibss_mesh_select_80_160mhz(s EHT_PHYCAP_320MHZ_IN_6GHZ_SUPPORT_MASK) && is_6ghz && ssid->max_oper_chwidth == CONF_OPER_CHWIDTH_320MHZ && ibss_mesh_is_80mhz_avail(channel + 16 - @@ -114,7 +114,7 @@ Signed-off-by: Peter Oh for (j = 0; j < ARRAY_SIZE(bw320); j += 2) { if (freq->freq >= bw320[j] && freq->freq <= bw320[j + 1]) { -@@ -3407,10 +3416,12 @@ static bool ibss_mesh_select_80_160mhz(s +@@ -3409,10 +3418,12 @@ static bool ibss_mesh_select_80_160mhz(s if (!chan) continue; @@ -131,7 +131,7 @@ Signed-off-by: Peter Oh /* Found a suitable second segment for 80+80 */ chwidth = CONF_OPER_CHWIDTH_80P80MHZ; -@@ -3465,6 +3476,7 @@ void ibss_mesh_setup_freq(struct wpa_sup +@@ -3467,6 +3478,7 @@ void ibss_mesh_setup_freq(struct wpa_sup int obss_scan = 1; u8 channel; bool is_6ghz, is_24ghz; @@ -139,7 +139,7 @@ Signed-off-by: Peter Oh freq->freq = ssid->frequency; -@@ -3508,9 +3520,9 @@ void ibss_mesh_setup_freq(struct wpa_sup +@@ -3510,9 +3522,9 @@ void ibss_mesh_setup_freq(struct wpa_sup /* Setup higher BW only for 5 and 6 GHz */ if (mode->mode == HOSTAPD_MODE_IEEE80211A) { ibss_mesh_select_40mhz(wpa_s, ssid, mode, freq, obss_scan, diff --git a/package/network/services/hostapd/patches/011-mesh-use-deterministic-channel-on-channel-switch.patch b/package/network/services/hostapd/patches/011-mesh-use-deterministic-channel-on-channel-switch.patch index 6a8bf0773b..f1cf715b69 100644 --- a/package/network/services/hostapd/patches/011-mesh-use-deterministic-channel-on-channel-switch.patch +++ b/package/network/services/hostapd/patches/011-mesh-use-deterministic-channel-on-channel-switch.patch @@ -68,7 +68,7 @@ Signed-off-by: Markus Theil chan_idx, num_available_chandefs); --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c -@@ -11658,6 +11658,10 @@ static int nl80211_switch_channel(void * +@@ -11668,6 +11668,10 @@ static int nl80211_switch_channel(void * if (ret) goto error; diff --git a/package/network/services/hostapd/patches/021-fix-sta-add-after-previous-connection.patch b/package/network/services/hostapd/patches/021-fix-sta-add-after-previous-connection.patch index a7cf9a7c5c..b23e6a4ca2 100644 --- a/package/network/services/hostapd/patches/021-fix-sta-add-after-previous-connection.patch +++ b/package/network/services/hostapd/patches/021-fix-sta-add-after-previous-connection.patch @@ -4,7 +4,7 @@ Subject: [PATCH] fix adding back stations after a missed deauth/disassoc --- a/src/ap/ieee802_11.c +++ b/src/ap/ieee802_11.c -@@ -5076,6 +5076,13 @@ static int add_associated_sta(struct hos +@@ -5136,6 +5136,13 @@ static int add_associated_sta(struct hos * drivers to accept the STA parameter configuration. Since this is * after a new FT-over-DS exchange, a new TK has been derived, so key * reinstallation is not a concern for this case. @@ -18,7 +18,7 @@ Subject: [PATCH] fix adding back stations after a missed deauth/disassoc */ wpa_printf(MSG_DEBUG, "Add associated STA " MACSTR " (added_unassoc=%d auth_alg=%u ft_over_ds=%u reassoc=%d authorized=%d ft_tk=%d fils_tk=%d)", -@@ -5089,7 +5096,8 @@ static int add_associated_sta(struct hos +@@ -5149,7 +5156,8 @@ static int add_associated_sta(struct hos (!(sta->flags & WLAN_STA_AUTHORIZED) || (reassoc && sta->ft_over_ds && sta->auth_alg == WLAN_AUTH_FT) || (!wpa_auth_sta_ft_tk_already_set(sta->wpa_sm) && diff --git a/package/network/services/hostapd/patches/030-Revert-nl80211-Accept-a-global-nl80211-event-to-a-br.patch b/package/network/services/hostapd/patches/030-Revert-nl80211-Accept-a-global-nl80211-event-to-a-br.patch index 4d9574b9e9..24647a5c46 100644 --- a/package/network/services/hostapd/patches/030-Revert-nl80211-Accept-a-global-nl80211-event-to-a-br.patch +++ b/package/network/services/hostapd/patches/030-Revert-nl80211-Accept-a-global-nl80211-event-to-a-br.patch @@ -37,7 +37,7 @@ This reverts commit 1c994da117ad795766270cf04bc923971e27412f. return drv; } return NULL; -@@ -8583,7 +8585,7 @@ static void add_ifidx(struct wpa_driver_ +@@ -8586,7 +8588,7 @@ static void add_ifidx(struct wpa_driver_ wpa_printf(MSG_DEBUG, "nl80211: Add own interface ifindex %d (ifidx_reason %d)", ifidx, ifidx_reason); @@ -46,7 +46,7 @@ This reverts commit 1c994da117ad795766270cf04bc923971e27412f. wpa_printf(MSG_DEBUG, "nl80211: ifindex %d already in the list", ifidx); return; -@@ -8643,7 +8645,7 @@ static void del_ifidx(struct wpa_driver_ +@@ -8646,7 +8648,7 @@ static void del_ifidx(struct wpa_driver_ } @@ -55,7 +55,7 @@ This reverts commit 1c994da117ad795766270cf04bc923971e27412f. int ifidx_reason) { int i; -@@ -8750,7 +8752,7 @@ static void handle_eapol(int sock, void +@@ -8753,7 +8755,7 @@ static void handle_eapol(int sock, void return; } diff --git a/package/network/services/hostapd/patches/051-nl80211-add-extra-ies-only-if-allowed-by-driver.patch b/package/network/services/hostapd/patches/051-nl80211-add-extra-ies-only-if-allowed-by-driver.patch index 45ce573f2c..1b6c71c720 100644 --- a/package/network/services/hostapd/patches/051-nl80211-add-extra-ies-only-if-allowed-by-driver.patch +++ b/package/network/services/hostapd/patches/051-nl80211-add-extra-ies-only-if-allowed-by-driver.patch @@ -26,7 +26,7 @@ Signed-off-by: David Bauer --- a/src/drivers/driver.h +++ b/src/drivers/driver.h -@@ -2442,6 +2442,9 @@ struct wpa_driver_capa { +@@ -2447,6 +2447,9 @@ struct wpa_driver_capa { /** Maximum number of iterations in a single scan plan */ u32 max_sched_scan_plan_iterations; diff --git a/package/network/services/hostapd/patches/140-tests-Makefile-make-run-tests-with-CONFIG_TLS.patch b/package/network/services/hostapd/patches/140-tests-Makefile-make-run-tests-with-CONFIG_TLS.patch index a6c495cb55..733b2a74db 100644 --- a/package/network/services/hostapd/patches/140-tests-Makefile-make-run-tests-with-CONFIG_TLS.patch +++ b/package/network/services/hostapd/patches/140-tests-Makefile-make-run-tests-with-CONFIG_TLS.patch @@ -1124,7 +1124,7 @@ Signed-off-by: Glenn Strauss heavy_groups = [14, 15, 16] suitable_groups = [15, 16, 17, 18, 19, 20, 21] groups = [str(g) for g in sae_groups] -@@ -2285,6 +2290,8 @@ def run_sae_pwe_group(dev, apdev, group) +@@ -2387,6 +2392,8 @@ def run_sae_pwe_group(dev, apdev, group) logger.info("Add Brainpool EC groups since OpenSSL is new enough") elif tls.startswith("wolfSSL"): logger.info("Make sure Brainpool EC groups were enabled when compiling wolfSSL") diff --git a/package/network/services/hostapd/patches/200-multicall.patch b/package/network/services/hostapd/patches/200-multicall.patch index ffa9117288..53d89ef89b 100644 --- a/package/network/services/hostapd/patches/200-multicall.patch +++ b/package/network/services/hostapd/patches/200-multicall.patch @@ -94,7 +94,7 @@ This allows building both hostapd and wpa_supplicant as a single binary if (c < 0) --- a/src/ap/drv_callbacks.c +++ b/src/ap/drv_callbacks.c -@@ -2566,8 +2566,8 @@ static void hostapd_mld_iface_disable(st +@@ -2561,8 +2561,8 @@ static void hostapd_mld_iface_disable(st #endif /* CONFIG_IEEE80211BE */ @@ -105,7 +105,7 @@ This allows building both hostapd and wpa_supplicant as a single binary { struct hostapd_data *hapd = ctx; struct sta_info *sta; -@@ -2925,7 +2925,7 @@ void wpa_supplicant_event(void *ctx, enu +@@ -2920,7 +2920,7 @@ void wpa_supplicant_event(void *ctx, enu } @@ -116,7 +116,7 @@ This allows building both hostapd and wpa_supplicant as a single binary struct hapd_interfaces *interfaces = ctx; --- a/src/drivers/driver.h +++ b/src/drivers/driver.h -@@ -7161,8 +7161,8 @@ union wpa_event_data { +@@ -7166,8 +7166,8 @@ union wpa_event_data { * Driver wrapper code should call this function whenever an event is received * from the driver. */ @@ -127,7 +127,7 @@ This allows building both hostapd and wpa_supplicant as a single binary /** * wpa_supplicant_event_global - Report a driver event for wpa_supplicant -@@ -7174,7 +7174,7 @@ void wpa_supplicant_event(void *ctx, enu +@@ -7179,7 +7179,7 @@ void wpa_supplicant_event(void *ctx, enu * Same as wpa_supplicant_event(), but we search for the interface in * wpa_global. */ @@ -278,7 +278,7 @@ This allows building both hostapd and wpa_supplicant as a single binary os_memset(&eapol_test, 0, sizeof(eapol_test)); --- a/wpa_supplicant/events.c +++ b/wpa_supplicant/events.c -@@ -6255,8 +6255,8 @@ static int wpas_pasn_auth(struct wpa_sup +@@ -6257,8 +6257,8 @@ static int wpas_pasn_auth(struct wpa_sup #endif /* CONFIG_PASN */ @@ -289,7 +289,7 @@ This allows building both hostapd and wpa_supplicant as a single binary { struct wpa_supplicant *wpa_s = ctx; int resched; -@@ -7228,7 +7228,7 @@ void wpa_supplicant_event(void *ctx, enu +@@ -7232,7 +7232,7 @@ void wpa_supplicant_event(void *ctx, enu } @@ -331,7 +331,7 @@ This allows building both hostapd and wpa_supplicant as a single binary os_memset(&global, 0, sizeof(global)); --- a/wpa_supplicant/wpa_supplicant.c +++ b/wpa_supplicant/wpa_supplicant.c -@@ -8128,7 +8128,6 @@ struct wpa_interface * wpa_supplicant_ma +@@ -8156,7 +8156,6 @@ struct wpa_interface * wpa_supplicant_ma return NULL; } @@ -339,7 +339,7 @@ This allows building both hostapd and wpa_supplicant as a single binary /** * wpa_supplicant_match_existing - Match existing interfaces * @global: Pointer to global data from wpa_supplicant_init() -@@ -8163,6 +8162,11 @@ static int wpa_supplicant_match_existing +@@ -8191,6 +8190,11 @@ static int wpa_supplicant_match_existing #endif /* CONFIG_MATCH_IFACE */ @@ -351,7 +351,7 @@ This allows building both hostapd and wpa_supplicant as a single binary /** * wpa_supplicant_add_iface - Add a new network interface -@@ -8419,6 +8423,8 @@ struct wpa_global * wpa_supplicant_init( +@@ -8447,6 +8451,8 @@ struct wpa_global * wpa_supplicant_init( #ifndef CONFIG_NO_WPA_MSG wpa_msg_register_ifname_cb(wpa_supplicant_msg_ifname_cb); #endif /* CONFIG_NO_WPA_MSG */ diff --git a/package/network/services/hostapd/patches/211-ctrl-make-WNM_AP-functions-dependant-on-CONFIG_AP.patch b/package/network/services/hostapd/patches/211-ctrl-make-WNM_AP-functions-dependant-on-CONFIG_AP.patch index 7b77e26c14..b3ac512e4c 100644 --- a/package/network/services/hostapd/patches/211-ctrl-make-WNM_AP-functions-dependant-on-CONFIG_AP.patch +++ b/package/network/services/hostapd/patches/211-ctrl-make-WNM_AP-functions-dependant-on-CONFIG_AP.patch @@ -13,7 +13,7 @@ Signed-off-by: David Bauer --- a/wpa_supplicant/ctrl_iface.c +++ b/wpa_supplicant/ctrl_iface.c -@@ -13678,7 +13678,7 @@ char * wpa_supplicant_ctrl_iface_process +@@ -13676,7 +13676,7 @@ char * wpa_supplicant_ctrl_iface_process if (wpas_ctrl_iface_coloc_intf_report(wpa_s, buf + 18)) reply_len = -1; #endif /* CONFIG_WNM */ @@ -22,7 +22,7 @@ Signed-off-by: David Bauer } else if (os_strncmp(buf, "DISASSOC_IMMINENT ", 18) == 0) { if (ap_ctrl_iface_disassoc_imminent(wpa_s, buf + 18)) reply_len = -1; -@@ -13688,7 +13688,7 @@ char * wpa_supplicant_ctrl_iface_process +@@ -13686,7 +13686,7 @@ char * wpa_supplicant_ctrl_iface_process } else if (os_strncmp(buf, "BSS_TM_REQ ", 11) == 0) { if (ap_ctrl_iface_bss_tm_req(wpa_s, buf + 11)) reply_len = -1; diff --git a/package/network/services/hostapd/patches/252-disable_ctrl_iface_mib.patch b/package/network/services/hostapd/patches/252-disable_ctrl_iface_mib.patch index 187211731e..387a19b2bf 100644 --- a/package/network/services/hostapd/patches/252-disable_ctrl_iface_mib.patch +++ b/package/network/services/hostapd/patches/252-disable_ctrl_iface_mib.patch @@ -16,7 +16,7 @@ Subject: [PATCH] Remove some unnecessary control interface functionality else --- a/hostapd/ctrl_iface.c +++ b/hostapd/ctrl_iface.c -@@ -4096,6 +4096,7 @@ static int hostapd_ctrl_iface_receive_pr +@@ -4115,6 +4115,7 @@ static int hostapd_ctrl_iface_receive_pr reply_size); } else if (os_strcmp(buf, "STATUS-DRIVER") == 0) { reply_len = hostapd_drv_status(hapd, reply, reply_size); @@ -24,7 +24,7 @@ Subject: [PATCH] Remove some unnecessary control interface functionality } else if (os_strcmp(buf, "MIB") == 0) { reply_len = ieee802_11_get_mib(hapd, reply, reply_size); if (reply_len >= 0) { -@@ -4137,6 +4138,7 @@ static int hostapd_ctrl_iface_receive_pr +@@ -4156,6 +4157,7 @@ static int hostapd_ctrl_iface_receive_pr } else if (os_strncmp(buf, "STA-NEXT ", 9) == 0) { reply_len = hostapd_ctrl_iface_sta_next(hapd, buf + 9, reply, reply_size); @@ -113,7 +113,7 @@ Subject: [PATCH] Remove some unnecessary control interface functionality if (os_snprintf_error(buflen - len, ret)) --- a/src/ap/ieee802_1x.c +++ b/src/ap/ieee802_1x.c -@@ -2831,6 +2831,7 @@ static const char * bool_txt(bool val) +@@ -2836,6 +2836,7 @@ static const char * bool_txt(bool val) return val ? "TRUE" : "FALSE"; } @@ -121,7 +121,7 @@ Subject: [PATCH] Remove some unnecessary control interface functionality int ieee802_1x_get_mib(struct hostapd_data *hapd, char *buf, size_t buflen) { -@@ -3017,6 +3018,7 @@ int ieee802_1x_get_mib_sta(struct hostap +@@ -3022,6 +3023,7 @@ int ieee802_1x_get_mib_sta(struct hostap return len; } @@ -181,7 +181,7 @@ Subject: [PATCH] Remove some unnecessary control interface functionality --- a/wpa_supplicant/ap.c +++ b/wpa_supplicant/ap.c -@@ -1523,7 +1523,7 @@ int wpas_ap_wps_nfc_report_handover(stru +@@ -1525,7 +1525,7 @@ int wpas_ap_wps_nfc_report_handover(stru #endif /* CONFIG_WPS */ @@ -201,7 +201,7 @@ Subject: [PATCH] Remove some unnecessary control interface functionality if (wpa_s->ap_iface) { pos += ap_ctrl_iface_wpa_get_status(wpa_s, pos, end - pos, -@@ -13007,6 +13007,7 @@ char * wpa_supplicant_ctrl_iface_process +@@ -13005,6 +13005,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); @@ -209,7 +209,7 @@ Subject: [PATCH] Remove some unnecessary control interface functionality } else if (os_strcmp(buf, "MIB") == 0) { reply_len = wpa_sm_get_mib(wpa_s->wpa, reply, reply_size); if (reply_len >= 0) { -@@ -13019,6 +13020,7 @@ char * wpa_supplicant_ctrl_iface_process +@@ -13017,6 +13018,7 @@ char * wpa_supplicant_ctrl_iface_process reply_size - reply_len); #endif /* CONFIG_MACSEC */ } @@ -217,7 +217,7 @@ Subject: [PATCH] Remove some unnecessary control interface functionality } else if (os_strncmp(buf, "STATUS", 6) == 0) { reply_len = wpa_supplicant_ctrl_iface_status( wpa_s, buf + 6, reply, reply_size); -@@ -13506,6 +13508,7 @@ char * wpa_supplicant_ctrl_iface_process +@@ -13504,6 +13506,7 @@ char * wpa_supplicant_ctrl_iface_process reply_len = wpa_supplicant_ctrl_iface_bss( wpa_s, buf + 4, reply, reply_size); #ifdef CONFIG_AP @@ -225,7 +225,7 @@ Subject: [PATCH] Remove some unnecessary control interface functionality } else if (os_strcmp(buf, "STA-FIRST") == 0) { reply_len = ap_ctrl_iface_sta_first(wpa_s, reply, reply_size); } else if (os_strncmp(buf, "STA ", 4) == 0) { -@@ -13514,12 +13517,15 @@ char * wpa_supplicant_ctrl_iface_process +@@ -13512,12 +13515,15 @@ 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); diff --git a/package/network/services/hostapd/patches/301-mesh-noscan.patch b/package/network/services/hostapd/patches/301-mesh-noscan.patch index f7a4628bd2..7e4aed800d 100644 --- a/package/network/services/hostapd/patches/301-mesh-noscan.patch +++ b/package/network/services/hostapd/patches/301-mesh-noscan.patch @@ -15,7 +15,7 @@ Subject: [PATCH] Allow HT40 also on 2.4GHz if noscan option is set, which also { STR(id_str) }, --- a/wpa_supplicant/config_file.c +++ b/wpa_supplicant/config_file.c -@@ -868,6 +868,7 @@ static void wpa_config_write_network(FIL +@@ -869,6 +869,7 @@ static void wpa_config_write_network(FIL INT(mode); #ifdef CONFIG_MESH INT(no_auto_peer); @@ -47,7 +47,7 @@ Subject: [PATCH] Allow HT40 also on 2.4GHz if noscan option is set, which also /* --- a/wpa_supplicant/wpa_supplicant.c +++ b/wpa_supplicant/wpa_supplicant.c -@@ -3046,7 +3046,7 @@ static bool ibss_mesh_can_use_vht(struct +@@ -3048,7 +3048,7 @@ static bool ibss_mesh_can_use_vht(struct const struct wpa_ssid *ssid, struct hostapd_hw_modes *mode) { @@ -56,7 +56,7 @@ Subject: [PATCH] Allow HT40 also on 2.4GHz if noscan option is set, which also return false; if (!drv_supports_vht(wpa_s, ssid)) -@@ -3120,7 +3120,7 @@ static void ibss_mesh_select_40mhz(struc +@@ -3122,7 +3122,7 @@ static void ibss_mesh_select_40mhz(struc int i, res; unsigned int j; static const int ht40plus_5ghz[] = { @@ -65,7 +65,7 @@ Subject: [PATCH] Allow HT40 also on 2.4GHz if noscan option is set, which also 149, 157, 165, 173, 184, 192 }; static const int ht40plus_6ghz[] = { -@@ -3473,7 +3473,7 @@ void ibss_mesh_setup_freq(struct wpa_sup +@@ -3475,7 +3475,7 @@ void ibss_mesh_setup_freq(struct wpa_sup int ieee80211_mode = wpas_mode_to_ieee80211_mode(ssid->mode); enum hostapd_hw_mode hw_mode; struct hostapd_hw_modes *mode = NULL; @@ -74,7 +74,7 @@ Subject: [PATCH] Allow HT40 also on 2.4GHz if noscan option is set, which also u8 channel; bool is_6ghz, is_24ghz; bool dfs_enabled = wpa_s->conf->country[0] && (wpa_s->drv_flags & WPA_DRIVER_FLAGS_RADAR); -@@ -3517,6 +3517,8 @@ void ibss_mesh_setup_freq(struct wpa_sup +@@ -3519,6 +3519,8 @@ void ibss_mesh_setup_freq(struct wpa_sup freq->he_enabled = ibss_mesh_can_use_he(wpa_s, ssid, mode, ieee80211_mode); freq->channel = channel; diff --git a/package/network/services/hostapd/patches/310-rescan_immediately.patch b/package/network/services/hostapd/patches/310-rescan_immediately.patch index a3083c4f67..c64b2afd32 100644 --- a/package/network/services/hostapd/patches/310-rescan_immediately.patch +++ b/package/network/services/hostapd/patches/310-rescan_immediately.patch @@ -5,7 +5,7 @@ Subject: [PATCH] rescan_immediately.patch --- a/wpa_supplicant/wpa_supplicant.c +++ b/wpa_supplicant/wpa_supplicant.c -@@ -6401,7 +6401,7 @@ wpa_supplicant_alloc(struct wpa_supplica +@@ -6404,7 +6404,7 @@ wpa_supplicant_alloc(struct wpa_supplica if (wpa_s == NULL) return NULL; wpa_s->scan_req = INITIAL_SCAN_REQ; diff --git a/package/network/services/hostapd/patches/341-mesh-ctrl-iface-channel-switch.patch b/package/network/services/hostapd/patches/341-mesh-ctrl-iface-channel-switch.patch index 8e2d7fc8a4..cd96dcac74 100644 --- a/package/network/services/hostapd/patches/341-mesh-ctrl-iface-channel-switch.patch +++ b/package/network/services/hostapd/patches/341-mesh-ctrl-iface-channel-switch.patch @@ -5,7 +5,7 @@ Subject: [PATCH] wpa_supplicant: fix calling channel switch via wpa_cli on --- a/wpa_supplicant/ap.c +++ b/wpa_supplicant/ap.c -@@ -1849,17 +1849,37 @@ int ap_switch_channel(struct wpa_supplic +@@ -1851,17 +1851,37 @@ int ap_switch_channel(struct wpa_supplic #ifdef CONFIG_CTRL_IFACE diff --git a/package/network/services/hostapd/patches/370-preserve_radio_mask.patch b/package/network/services/hostapd/patches/370-preserve_radio_mask.patch index a60e9c4aa9..a4347c4750 100644 --- a/package/network/services/hostapd/patches/370-preserve_radio_mask.patch +++ b/package/network/services/hostapd/patches/370-preserve_radio_mask.patch @@ -105,7 +105,7 @@ } if (ret >= 0 && is_p2p_net_interface(iftype)) { -@@ -8685,8 +8707,8 @@ static int i802_set_wds_sta(void *priv, +@@ -8688,8 +8710,8 @@ static int i802_set_wds_sta(void *priv, if (!if_nametoindex(name)) { if (nl80211_create_iface(drv, name, NL80211_IFTYPE_AP_VLAN, @@ -116,7 +116,7 @@ return -1; if (bridge_ifname) -@@ -9057,7 +9079,8 @@ static int wpa_driver_nl80211_if_add(voi +@@ -9060,7 +9082,8 @@ static int wpa_driver_nl80211_if_add(voi os_memset(&p2pdev_info, 0, sizeof(p2pdev_info)); ifidx = nl80211_create_iface(drv, ifname, nlmode, addr, @@ -126,7 +126,7 @@ &p2pdev_info, use_existing); if (!p2pdev_info.wdev_id_set || ifidx != 0) { wpa_printf(MSG_ERROR, "nl80211: Failed to create a P2P Device interface %s", -@@ -9074,7 +9097,8 @@ static int wpa_driver_nl80211_if_add(voi +@@ -9077,7 +9100,8 @@ static int wpa_driver_nl80211_if_add(voi (long long unsigned int) p2pdev_info.wdev_id); } else { ifidx = nl80211_create_iface(drv, ifname, nlmode, addr, @@ -136,7 +136,7 @@ if (use_existing && ifidx == -ENFILE) { added = 0; ifidx = if_nametoindex(ifname); -@@ -9144,6 +9168,8 @@ static int wpa_driver_nl80211_if_add(voi +@@ -9147,6 +9171,8 @@ static int wpa_driver_nl80211_if_add(voi new_bss->ctx = bss_ctx; new_bss->added_if = added; diff --git a/package/network/services/hostapd/patches/460-wpa_supplicant-add-new-config-params-to-be-used-with.patch b/package/network/services/hostapd/patches/460-wpa_supplicant-add-new-config-params-to-be-used-with.patch index 8e65244f60..11941e3b4e 100644 --- a/package/network/services/hostapd/patches/460-wpa_supplicant-add-new-config-params-to-be-used-with.patch +++ b/package/network/services/hostapd/patches/460-wpa_supplicant-add-new-config-params-to-be-used-with.patch @@ -155,7 +155,7 @@ Signed-hostap: Antonio Quartulli * macsec_policy - Determines the policy for MACsec secure session --- a/wpa_supplicant/wpa_supplicant.c +++ b/wpa_supplicant/wpa_supplicant.c -@@ -4685,6 +4685,12 @@ static void wpas_start_assoc_cb(struct w +@@ -4687,6 +4687,12 @@ static void wpas_start_assoc_cb(struct w params.beacon_int = ssid->beacon_int; else params.beacon_int = wpa_s->conf->beacon_int; diff --git a/package/network/services/hostapd/patches/463-add-mcast_rate-to-11s.patch b/package/network/services/hostapd/patches/463-add-mcast_rate-to-11s.patch index 0bcb75187a..1f77818a94 100644 --- a/package/network/services/hostapd/patches/463-add-mcast_rate-to-11s.patch +++ b/package/network/services/hostapd/patches/463-add-mcast_rate-to-11s.patch @@ -19,7 +19,7 @@ Tested-by: Simon Wunderlich --- a/src/drivers/driver.h +++ b/src/drivers/driver.h -@@ -1960,6 +1960,7 @@ struct wpa_driver_mesh_join_params { +@@ -1965,6 +1965,7 @@ struct wpa_driver_mesh_join_params { #define WPA_DRIVER_MESH_FLAG_AMPE 0x00000008 unsigned int flags; bool handle_dfs; @@ -29,7 +29,7 @@ Tested-by: Simon Wunderlich struct wpa_driver_set_key_params { --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c -@@ -12363,6 +12363,18 @@ static int nl80211_put_mesh_id(struct nl +@@ -12373,6 +12373,18 @@ static int nl80211_put_mesh_id(struct nl } @@ -48,7 +48,7 @@ Tested-by: Simon Wunderlich static int nl80211_put_mesh_config(struct nl_msg *msg, struct wpa_driver_mesh_bss_params *params) { -@@ -12424,6 +12436,7 @@ static int nl80211_join_mesh(struct i802 +@@ -12434,6 +12446,7 @@ static int nl80211_join_mesh(struct i802 nl80211_put_basic_rates(msg, params->basic_rates) || nl80211_put_mesh_id(msg, params->meshid, params->meshid_len) || nl80211_put_beacon_int(msg, params->beacon_int) || diff --git a/package/network/services/hostapd/patches/464-fix-mesh-obss-check.patch b/package/network/services/hostapd/patches/464-fix-mesh-obss-check.patch index f0841258b3..225b6ab296 100644 --- a/package/network/services/hostapd/patches/464-fix-mesh-obss-check.patch +++ b/package/network/services/hostapd/patches/464-fix-mesh-obss-check.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix issues with disabling obss scan when using fixed_freq on --- a/wpa_supplicant/wpa_supplicant.c +++ b/wpa_supplicant/wpa_supplicant.c -@@ -3480,6 +3480,10 @@ void ibss_mesh_setup_freq(struct wpa_sup +@@ -3482,6 +3482,10 @@ void ibss_mesh_setup_freq(struct wpa_sup freq->freq = ssid->frequency; diff --git a/package/network/services/hostapd/patches/600-ubus_support.patch b/package/network/services/hostapd/patches/600-ubus_support.patch index b66d61bad5..66cc75f37d 100644 --- a/package/network/services/hostapd/patches/600-ubus_support.patch +++ b/package/network/services/hostapd/patches/600-ubus_support.patch @@ -116,7 +116,7 @@ probe/assoc/auth requests via object subscribe. #ifdef CONFIG_P2P if (elems.p2p) { wpabuf_free(sta->p2p_ie); -@@ -1414,6 +1424,7 @@ void hostapd_event_ch_switch(struct host +@@ -1409,6 +1419,7 @@ void hostapd_event_ch_switch(struct host wpa_msg(hapd->msg_ctx, MSG_INFO, AP_CSA_FINISHED "freq=%d dfs=%d", freq, is_dfs); @@ -195,7 +195,7 @@ probe/assoc/auth requests via object subscribe. struct hostapd_iface * hostapd_alloc_iface(void); --- a/src/ap/ieee802_11.c +++ b/src/ap/ieee802_11.c -@@ -3091,7 +3091,7 @@ static void handle_auth(struct hostapd_d +@@ -3134,7 +3134,7 @@ static void handle_auth(struct hostapd_d u16 auth_alg, auth_transaction, status_code; u16 resp = WLAN_STATUS_SUCCESS; struct sta_info *sta = NULL; @@ -204,7 +204,7 @@ probe/assoc/auth requests via object subscribe. u16 fc; const u8 *challenge = NULL; u8 resp_ies[2 + WLAN_AUTH_CHALLENGE_LEN]; -@@ -3102,6 +3102,11 @@ static void handle_auth(struct hostapd_d +@@ -3145,6 +3145,11 @@ static void handle_auth(struct hostapd_d #ifdef CONFIG_IEEE80211BE bool mld_sta = false; #endif /* CONFIG_IEEE80211BE */ @@ -216,7 +216,7 @@ probe/assoc/auth requests via object subscribe. if (len < IEEE80211_HDRLEN + sizeof(mgmt->u.auth)) { wpa_printf(MSG_INFO, "handle_auth - too short payload (len=%lu)", -@@ -3298,6 +3303,13 @@ static void handle_auth(struct hostapd_d +@@ -3341,6 +3346,13 @@ static void handle_auth(struct hostapd_d resp = WLAN_STATUS_UNSPECIFIED_FAILURE; goto fail; } @@ -230,7 +230,7 @@ probe/assoc/auth requests via object subscribe. if (res == HOSTAPD_ACL_PENDING) return; -@@ -5659,7 +5671,7 @@ static void handle_assoc(struct hostapd_ +@@ -5723,7 +5735,7 @@ static void handle_assoc(struct hostapd_ int resp = WLAN_STATUS_SUCCESS; u16 reply_res = WLAN_STATUS_UNSPECIFIED_FAILURE; const u8 *pos; @@ -239,7 +239,7 @@ probe/assoc/auth requests via object subscribe. struct sta_info *sta; u8 *tmp = NULL; #ifdef CONFIG_FILS -@@ -5901,6 +5913,11 @@ static void handle_assoc(struct hostapd_ +@@ -5965,6 +5977,11 @@ static void handle_assoc(struct hostapd_ left = res; } #endif /* CONFIG_FILS */ @@ -251,7 +251,7 @@ probe/assoc/auth requests via object subscribe. /* followed by SSID and Supported rates; and HT capabilities if 802.11n * is used */ -@@ -6009,6 +6026,13 @@ static void handle_assoc(struct hostapd_ +@@ -6073,6 +6090,13 @@ static void handle_assoc(struct hostapd_ if (set_beacon) ieee802_11_update_beacons(hapd->iface); @@ -265,7 +265,7 @@ probe/assoc/auth requests via object subscribe. fail: /* -@@ -6238,6 +6262,7 @@ static void handle_disassoc(struct hosta +@@ -6302,6 +6326,7 @@ static void handle_disassoc(struct hosta (unsigned long) len); return; } @@ -273,7 +273,7 @@ probe/assoc/auth requests via object subscribe. sta = ap_get_sta(hapd, mgmt->sa); if (!sta) { -@@ -6269,6 +6294,8 @@ static void handle_deauth(struct hostapd +@@ -6333,6 +6358,8 @@ static void handle_deauth(struct hostapd /* Clear the PTKSA cache entries for PASN */ ptksa_cache_flush(hapd->ptksa, mgmt->sa, WPA_CIPHER_NONE); @@ -321,7 +321,7 @@ probe/assoc/auth requests via object subscribe. ap_free_sta(hapd, sta); break; } -@@ -1590,15 +1592,28 @@ void ap_sta_set_authorized_event(struct +@@ -1590,17 +1592,30 @@ void ap_sta_set_authorized_event(struct os_snprintf(buf, sizeof(buf), MACSTR, MAC2STR(sta->addr)); if (authorized) { @@ -341,16 +341,18 @@ probe/assoc/auth requests via object subscribe. char dpp_pkhash_buf[100]; char keyid_buf[100]; char ip_addr[100]; + char vlanid_buf[20]; + char alg_buf[100]; dpp_pkhash_buf[0] = '\0'; keyid_buf[0] = '\0'; ip_addr[0] = '\0'; + vlanid_buf[0] = '\0'; + alg_buf[0] = '\0'; + #ifdef CONFIG_P2P if (wpa_auth_get_ip_addr(sta->wpa_sm, ip_addr_buf) == 0) { - os_snprintf(ip_addr, sizeof(ip_addr), -@@ -1609,6 +1624,13 @@ void ap_sta_set_authorized_event(struct +@@ -1612,6 +1627,13 @@ void ap_sta_set_authorized_event(struct } #endif /* CONFIG_P2P */ @@ -364,24 +366,24 @@ probe/assoc/auth requests via object subscribe. keyid = ap_sta_wpa_get_keyid(hapd, sta); if (keyid) { os_snprintf(keyid_buf, sizeof(keyid_buf), -@@ -1627,17 +1649,19 @@ void ap_sta_set_authorized_event(struct - dpp_pkhash, SHA256_MAC_LEN); - } +@@ -1636,17 +1658,19 @@ void ap_sta_set_authorized_event(struct + " vlanid=%u", sta->vlan_id); + #endif /* CONFIG_NO_VLAN */ -- wpa_msg(hapd->msg_ctx, MSG_INFO, AP_STA_CONNECTED "%s%s%s%s", -- buf, ip_addr, keyid_buf, dpp_pkhash_buf); +- wpa_msg(hapd->msg_ctx, MSG_INFO, AP_STA_CONNECTED "%s%s%s%s%s", +- buf, ip_addr, keyid_buf, dpp_pkhash_buf, vlanid_buf); + hostapd_ubus_notify_authorized(hapd, sta, auth_alg); -+ wpa_msg(hapd->msg_ctx, MSG_INFO, AP_STA_CONNECTED "%s%s%s%s%s", -+ buf, ip_addr, keyid_buf, dpp_pkhash_buf, alg_buf); ++ wpa_msg(hapd->msg_ctx, MSG_INFO, AP_STA_CONNECTED "%s%s%s%s%s%s", ++ buf, ip_addr, keyid_buf, dpp_pkhash_buf, vlanid_buf, alg_buf); if (hapd->msg_ctx_parent && hapd->msg_ctx_parent != hapd->msg_ctx) wpa_msg_no_global(hapd->msg_ctx_parent, MSG_INFO, -- AP_STA_CONNECTED "%s%s%s%s", -+ AP_STA_CONNECTED "%s%s%s%s%s", +- AP_STA_CONNECTED "%s%s%s%s%s", ++ AP_STA_CONNECTED "%s%s%s%s%s%s", buf, ip_addr, keyid_buf, -- dpp_pkhash_buf); -+ dpp_pkhash_buf, alg_buf); +- dpp_pkhash_buf, vlanid_buf); ++ dpp_pkhash_buf, vlanid_buf, alg_buf); } else { wpa_msg(hapd->msg_ctx, MSG_INFO, AP_STA_DISCONNECTED "%s", buf); + hostapd_ubus_notify(hapd, "disassoc", sta->addr); @@ -683,7 +685,7 @@ probe/assoc/auth requests via object subscribe. break; --- a/wpa_supplicant/wpa_supplicant.c +++ b/wpa_supplicant/wpa_supplicant.c -@@ -8261,6 +8261,8 @@ struct wpa_supplicant * wpa_supplicant_a +@@ -8289,6 +8289,8 @@ struct wpa_supplicant * wpa_supplicant_a } #endif /* CONFIG_P2P */ @@ -692,7 +694,7 @@ probe/assoc/auth requests via object subscribe. return wpa_s; } -@@ -8287,6 +8289,8 @@ int wpa_supplicant_remove_iface(struct w +@@ -8315,6 +8317,8 @@ int wpa_supplicant_remove_iface(struct w struct wpa_supplicant *parent = wpa_s->parent; #endif /* CONFIG_MESH */ @@ -701,7 +703,7 @@ probe/assoc/auth requests via object subscribe. /* Remove interface from the global list of interfaces */ prev = global->ifaces; if (prev == wpa_s) { -@@ -8633,8 +8637,12 @@ int wpa_supplicant_run(struct wpa_global +@@ -8661,8 +8665,12 @@ int wpa_supplicant_run(struct wpa_global eloop_register_signal_terminate(wpa_supplicant_terminate, global); eloop_register_signal_reconfig(wpa_supplicant_reconfig, global); diff --git a/package/network/services/hostapd/patches/601-ucode_support.patch b/package/network/services/hostapd/patches/601-ucode_support.patch index 44705efa37..30780ca76e 100644 --- a/package/network/services/hostapd/patches/601-ucode_support.patch +++ b/package/network/services/hostapd/patches/601-ucode_support.patch @@ -34,7 +34,7 @@ as adding/removing interfaces. ifdef CONFIG_CODE_COVERAGE --- a/hostapd/ctrl_iface.c +++ b/hostapd/ctrl_iface.c -@@ -6037,6 +6037,7 @@ try_again: +@@ -6061,6 +6061,7 @@ try_again: return -1; } @@ -42,7 +42,7 @@ as adding/removing interfaces. wpa_msg_register_cb(hostapd_ctrl_iface_msg_cb); return 0; -@@ -6138,6 +6139,7 @@ fail: +@@ -6162,6 +6163,7 @@ fail: os_free(fname); interface->global_ctrl_sock = s; @@ -312,7 +312,7 @@ as adding/removing interfaces. void hostapd_switch_color(struct hostapd_data *hapd, u64 bitmap); --- a/src/drivers/driver.h +++ b/src/drivers/driver.h -@@ -4067,6 +4067,25 @@ struct wpa_driver_ops { +@@ -4072,6 +4072,25 @@ struct wpa_driver_ops { const char *ifname); /** @@ -338,7 +338,7 @@ as adding/removing interfaces. * set_sta_vlan - Bind a station into a specific interface (AP only) * @priv: Private driver interface data * @ifname: Interface (main or virtual BSS or VLAN) -@@ -6896,6 +6915,7 @@ union wpa_event_data { +@@ -6901,6 +6920,7 @@ union wpa_event_data { /** * struct ch_switch @@ -346,7 +346,7 @@ as adding/removing interfaces. * @freq: Frequency of new channel in MHz * @ht_enabled: Whether this is an HT channel * @ch_offset: Secondary channel offset -@@ -6906,6 +6926,7 @@ union wpa_event_data { +@@ -6911,6 +6931,7 @@ union wpa_event_data { * @punct_bitmap: Puncturing bitmap */ struct ch_switch { @@ -444,7 +444,7 @@ as adding/removing interfaces. nl_cb_set(bss->nl_cb, NL_CB_SEQ_CHECK, NL_CB_CUSTOM, no_seq_check, NULL); nl_cb_set(bss->nl_cb, NL_CB_VALID, NL_CB_CUSTOM, -@@ -8851,6 +8872,7 @@ static void *i802_init(struct hostapd_da +@@ -8854,6 +8875,7 @@ static void *i802_init(struct hostapd_da char master_ifname[IFNAMSIZ]; int ifindex, br_ifindex = 0; int br_added = 0; @@ -452,7 +452,7 @@ as adding/removing interfaces. bss = wpa_driver_nl80211_drv_init(hapd, params->ifname, params->global_priv, 1, -@@ -8911,21 +8933,17 @@ static void *i802_init(struct hostapd_da +@@ -8914,21 +8936,17 @@ static void *i802_init(struct hostapd_da (params->num_bridge == 0 || !params->bridge[0])) add_ifidx(drv, br_ifindex, drv->ifindex); @@ -484,7 +484,7 @@ as adding/removing interfaces. } if (drv->capa.flags2 & WPA_DRIVER_FLAGS2_CONTROL_PORT_RX) { -@@ -9304,6 +9322,50 @@ static int wpa_driver_nl80211_if_remove( +@@ -9307,6 +9325,50 @@ static int wpa_driver_nl80211_if_remove( return 0; } @@ -535,7 +535,7 @@ as adding/removing interfaces. static int cookie_handler(struct nl_msg *msg, void *arg) { -@@ -11182,6 +11244,37 @@ static bool nl80211_is_drv_shared(void * +@@ -11192,6 +11254,37 @@ static bool nl80211_is_drv_shared(void * #endif /* CONFIG_IEEE80211BE */ @@ -573,7 +573,7 @@ as adding/removing interfaces. static int driver_nl80211_send_mlme(void *priv, const u8 *data, size_t data_len, int noack, unsigned int freq, -@@ -15001,6 +15094,8 @@ const struct wpa_driver_ops wpa_driver_n +@@ -15011,6 +15104,8 @@ const struct wpa_driver_ops wpa_driver_n .set_acl = wpa_driver_nl80211_set_acl, .if_add = wpa_driver_nl80211_if_add, .if_remove = driver_nl80211_if_remove, @@ -702,7 +702,7 @@ as adding/removing interfaces. CFLAGS += -DEAP_SERVER -DEAP_SERVER_IDENTITY --- a/wpa_supplicant/events.c +++ b/wpa_supplicant/events.c -@@ -6291,6 +6291,7 @@ void supplicant_event(void *ctx, enum wp +@@ -6293,6 +6293,7 @@ void supplicant_event(void *ctx, enum wp event_to_string(event), event); #endif /* CONFIG_NO_STDOUT_DEBUG */ @@ -712,7 +712,7 @@ as adding/removing interfaces. #ifdef CONFIG_FST --- a/wpa_supplicant/wpa_supplicant.c +++ b/wpa_supplicant/wpa_supplicant.c -@@ -1276,6 +1276,7 @@ void wpa_supplicant_set_state(struct wpa +@@ -1278,6 +1278,7 @@ void wpa_supplicant_set_state(struct wpa sme_sched_obss_scan(wpa_s, 0); } wpa_s->wpa_state = state; @@ -720,7 +720,7 @@ as adding/removing interfaces. #ifndef CONFIG_NO_ROBUST_AV if (state == WPA_COMPLETED && dl_list_len(&wpa_s->active_scs_ids) && -@@ -8262,6 +8263,7 @@ struct wpa_supplicant * wpa_supplicant_a +@@ -8290,6 +8291,7 @@ struct wpa_supplicant * wpa_supplicant_a #endif /* CONFIG_P2P */ wpas_ubus_add_bss(wpa_s); @@ -728,7 +728,7 @@ as adding/removing interfaces. return wpa_s; } -@@ -8289,6 +8291,7 @@ int wpa_supplicant_remove_iface(struct w +@@ -8317,6 +8319,7 @@ int wpa_supplicant_remove_iface(struct w struct wpa_supplicant *parent = wpa_s->parent; #endif /* CONFIG_MESH */ @@ -736,7 +736,7 @@ as adding/removing interfaces. wpas_ubus_free_bss(wpa_s); /* Remove interface from the global list of interfaces */ -@@ -8599,6 +8602,7 @@ struct wpa_global * wpa_supplicant_init( +@@ -8627,6 +8630,7 @@ struct wpa_global * wpa_supplicant_init( eloop_register_timeout(WPA_SUPPLICANT_CLEANUP_INTERVAL, 0, wpas_periodic, global, NULL); @@ -744,7 +744,7 @@ as adding/removing interfaces. return global; } -@@ -8637,12 +8641,8 @@ int wpa_supplicant_run(struct wpa_global +@@ -8665,12 +8669,8 @@ int wpa_supplicant_run(struct wpa_global eloop_register_signal_terminate(wpa_supplicant_terminate, global); eloop_register_signal_reconfig(wpa_supplicant_reconfig, global); @@ -757,7 +757,7 @@ as adding/removing interfaces. return 0; } -@@ -8675,6 +8675,8 @@ void wpa_supplicant_deinit(struct wpa_gl +@@ -8703,6 +8703,8 @@ void wpa_supplicant_deinit(struct wpa_gl wpas_notify_supplicant_deinitialized(global); @@ -786,7 +786,7 @@ as adding/removing interfaces. #endif /* CONFIG_MATCH_IFACE */ --- a/src/ap/ieee802_11.c +++ b/src/ap/ieee802_11.c -@@ -631,12 +631,17 @@ const char * sae_get_password(struct hos +@@ -659,12 +659,17 @@ const char * sae_get_password(struct hos struct sae_pt **s_pt, const struct sae_pk **s_pk) { @@ -805,7 +805,7 @@ as adding/removing interfaces. /* With sae_track_password functionality enabled, try to first find the * next viable wildcard-address password if a password identifier was * not used. Select an wildcard-addr entry if the STA is known to have -@@ -697,12 +702,30 @@ const char * sae_get_password(struct hos +@@ -725,12 +730,30 @@ const char * sae_get_password(struct hos pt = hapd->conf->ssid.pt; } @@ -838,7 +838,7 @@ as adding/removing interfaces. } } -@@ -3446,6 +3469,12 @@ static void handle_auth(struct hostapd_d +@@ -3489,6 +3512,12 @@ static void handle_auth(struct hostapd_d goto fail; } @@ -896,7 +896,7 @@ as adding/removing interfaces. if (vlan_id) *vlan_id = 0; if (psk_len) -@@ -438,13 +439,18 @@ static const u8 * hostapd_wpa_auth_get_p +@@ -442,13 +443,18 @@ static const u8 * hostapd_wpa_auth_get_p * returned psk which should not be returned again. * logic list (all hostapd_get_psk; all sta->psk) */ @@ -916,7 +916,7 @@ as adding/removing interfaces. if (pos->is_passphrase) { if (pbkdf2_sha1(pos->passphrase, hapd->conf->ssid.ssid, -@@ -458,9 +464,13 @@ static const u8 * hostapd_wpa_auth_get_p +@@ -462,9 +468,13 @@ static const u8 * hostapd_wpa_auth_get_p } if (pos->psk == prev_psk) { psk = pos->next ? pos->next->psk : NULL; diff --git a/package/network/services/hostapd/patches/730-ft_iface.patch b/package/network/services/hostapd/patches/730-ft_iface.patch index e1573bd1fa..4f97b923ab 100644 --- a/package/network/services/hostapd/patches/730-ft_iface.patch +++ b/package/network/services/hostapd/patches/730-ft_iface.patch @@ -29,7 +29,7 @@ a VLAN interface on top of the bridge, instead of using the bridge directly int bridge_hairpin; /* hairpin_mode on bridge members */ --- a/src/ap/wpa_auth_glue.c +++ b/src/ap/wpa_auth_glue.c -@@ -1844,8 +1844,12 @@ int hostapd_setup_wpa(struct hostapd_dat +@@ -1848,8 +1848,12 @@ int hostapd_setup_wpa(struct hostapd_dat wpa_key_mgmt_ft(hapd->conf->wpa_key_mgmt)) { const char *ft_iface; diff --git a/package/network/services/hostapd/patches/740-snoop_iface.patch b/package/network/services/hostapd/patches/740-snoop_iface.patch index 105f99e311..f40356ad23 100644 --- a/package/network/services/hostapd/patches/740-snoop_iface.patch +++ b/package/network/services/hostapd/patches/740-snoop_iface.patch @@ -112,7 +112,7 @@ untagged DHCP packets hapd->x_snoop_initialized = false; --- a/src/drivers/driver.h +++ b/src/drivers/driver.h -@@ -4493,7 +4493,7 @@ struct wpa_driver_ops { +@@ -4498,7 +4498,7 @@ struct wpa_driver_ops { * Returns: 0 on success, negative (<0) on failure */ int (*br_set_net_param)(void *priv, enum drv_br_net_param param, @@ -123,7 +123,7 @@ untagged DHCP packets * get_wowlan - Get wake-on-wireless status --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c -@@ -12883,7 +12883,7 @@ static const char * drv_br_net_param_str +@@ -12893,7 +12893,7 @@ static const char * drv_br_net_param_str static int wpa_driver_br_set_net_param(void *priv, enum drv_br_net_param param, @@ -132,7 +132,7 @@ untagged DHCP packets { struct i802_bss *bss = priv; char path[128]; -@@ -12909,8 +12909,11 @@ static int wpa_driver_br_set_net_param(v +@@ -12919,8 +12919,11 @@ static int wpa_driver_br_set_net_param(v return -EINVAL; } diff --git a/package/network/services/hostapd/patches/760-dynamic_own_ip.patch b/package/network/services/hostapd/patches/760-dynamic_own_ip.patch index f46ba6b2e7..bcdf443dbe 100644 --- a/package/network/services/hostapd/patches/760-dynamic_own_ip.patch +++ b/package/network/services/hostapd/patches/760-dynamic_own_ip.patch @@ -28,7 +28,7 @@ Some servers use the NAS-IP-Address attribute as a destination address int radius_require_message_authenticator; --- a/src/ap/ieee802_1x.c +++ b/src/ap/ieee802_1x.c -@@ -597,6 +597,10 @@ int add_common_radius_attr(struct hostap +@@ -602,6 +602,10 @@ int add_common_radius_attr(struct hostap struct hostapd_radius_attr *attr; int len; diff --git a/package/network/services/hostapd/patches/763-radius-wispr.patch b/package/network/services/hostapd/patches/763-radius-wispr.patch index 1b1797318c..c96ef11919 100644 --- a/package/network/services/hostapd/patches/763-radius-wispr.patch +++ b/package/network/services/hostapd/patches/763-radius-wispr.patch @@ -1,6 +1,6 @@ --- a/src/ap/ieee802_1x.c +++ b/src/ap/ieee802_1x.c -@@ -2000,6 +2000,25 @@ static int ieee802_1x_update_vlan(struct +@@ -2005,6 +2005,25 @@ static int ieee802_1x_update_vlan(struct } #endif /* CONFIG_NO_VLAN */ @@ -26,7 +26,7 @@ /** * ieee802_1x_receive_auth - Process RADIUS frames from Authentication Server -@@ -2116,6 +2135,7 @@ ieee802_1x_receive_auth(struct radius_ms +@@ -2121,6 +2140,7 @@ ieee802_1x_receive_auth(struct radius_ms ieee802_1x_check_hs20(hapd, sta, msg, session_timeout_set ? (int) session_timeout : -1); diff --git a/package/network/services/hostapd/patches/780-Implement-APuP-Access-Point-Micro-Peering.patch b/package/network/services/hostapd/patches/780-Implement-APuP-Access-Point-Micro-Peering.patch index 271b88c7c0..514ffaf509 100644 --- a/package/network/services/hostapd/patches/780-Implement-APuP-Access-Point-Micro-Peering.patch +++ b/package/network/services/hostapd/patches/780-Implement-APuP-Access-Point-Micro-Peering.patch @@ -373,7 +373,7 @@ Hotfix-by: Sebastian Gottschall https://github.com/mirror/dd-wrt/commit/0c3001a6 #ifdef CONFIG_FILS static struct wpabuf * -@@ -3837,8 +3840,8 @@ static u16 check_multi_ap(struct hostapd +@@ -3880,8 +3883,8 @@ static u16 check_multi_ap(struct hostapd } @@ -384,7 +384,7 @@ Hotfix-by: Sebastian Gottschall https://github.com/mirror/dd-wrt/commit/0c3001a6 { /* Supported rates not used in IEEE 802.11ad/DMG */ if (hapd->iface->current_mode && -@@ -4283,7 +4286,7 @@ static int __check_assoc_ies(struct host +@@ -4326,7 +4329,7 @@ static int __check_assoc_ies(struct host elems->ext_capab_len); if (resp != WLAN_STATUS_SUCCESS) return resp; @@ -393,7 +393,7 @@ Hotfix-by: Sebastian Gottschall https://github.com/mirror/dd-wrt/commit/0c3001a6 if (resp != WLAN_STATUS_SUCCESS) return resp; -@@ -6358,6 +6361,11 @@ static void handle_beacon(struct hostapd +@@ -6422,6 +6425,11 @@ static void handle_beacon(struct hostapd 0); ap_list_process_beacon(hapd->iface, mgmt, &elems, fi); @@ -418,7 +418,7 @@ Hotfix-by: Sebastian Gottschall https://github.com/mirror/dd-wrt/commit/0c3001a6 u16 copy_sta_vendor_vht(struct hostapd_data *hapd, struct sta_info *sta, --- a/src/drivers/driver.h +++ b/src/drivers/driver.h -@@ -4187,7 +4187,7 @@ struct wpa_driver_ops { +@@ -4192,7 +4192,7 @@ struct wpa_driver_ops { * Returns: 0 on success, -1 on failure */ int (*set_wds_sta)(void *priv, const u8 *addr, int aid, int val, @@ -429,7 +429,7 @@ Hotfix-by: Sebastian Gottschall https://github.com/mirror/dd-wrt/commit/0c3001a6 * send_action - Transmit an Action frame --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c -@@ -8703,25 +8703,15 @@ static int have_ifidx(struct wpa_driver_ +@@ -8706,25 +8706,15 @@ static int have_ifidx(struct wpa_driver_ static int i802_set_wds_sta(void *priv, const u8 *addr, int aid, int val, diff --git a/package/network/services/hostapd/patches/803-hostapd-fix-80211be-build.patch b/package/network/services/hostapd/patches/803-hostapd-fix-80211be-build.patch index 180fe742a6..78034fbb80 100644 --- a/package/network/services/hostapd/patches/803-hostapd-fix-80211be-build.patch +++ b/package/network/services/hostapd/patches/803-hostapd-fix-80211be-build.patch @@ -1,6 +1,6 @@ --- a/src/ap/sta_info.c +++ b/src/ap/sta_info.c -@@ -1972,3 +1972,22 @@ void ap_sta_free_sta_profile(struct mld_ +@@ -1981,3 +1981,22 @@ void ap_sta_free_sta_profile(struct mld_ } } #endif /* CONFIG_IEEE80211BE */