From 10d8c472720093425bcaf1166d8d088115b187f2 Mon Sep 17 00:00:00 2001 From: John Crispin Date: Wed, 19 Jun 2024 13:54:58 +0200 Subject: [PATCH 1/4] hostapd: drop wispr rate patch this was breaking EAP-TTLS roaming Signed-off-by: John Crispin --- .../hostapd/patches/751-wispr-ft.patch | 559 ------------------ 1 file changed, 559 deletions(-) delete mode 100644 feeds/ipq807x_v5.4/hostapd/patches/751-wispr-ft.patch diff --git a/feeds/ipq807x_v5.4/hostapd/patches/751-wispr-ft.patch b/feeds/ipq807x_v5.4/hostapd/patches/751-wispr-ft.patch deleted file mode 100644 index ac2d9b568..000000000 --- a/feeds/ipq807x_v5.4/hostapd/patches/751-wispr-ft.patch +++ /dev/null @@ -1,559 +0,0 @@ -Index: hostapd-2021-02-20-59e9794c/src/ap/wpa_auth.h -=================================================================== ---- hostapd-2021-02-20-59e9794c.orig/src/ap/wpa_auth.h -+++ hostapd-2021-02-20-59e9794c/src/ap/wpa_auth.h -@@ -15,6 +15,10 @@ - #include "common/ieee802_11_defs.h" - - struct vlan_description; -+struct rate_description { -+ u32 rx; -+ u32 tx; -+}; - - #define MAX_OWN_IE_OVERRIDE 256 - -@@ -87,6 +91,7 @@ struct ft_rrb_frame { - #define FT_RRB_IDENTITY 15 - #define FT_RRB_RADIUS_CUI 16 - #define FT_RRB_SESSION_TIMEOUT 17 /* le32 seconds */ -+#define FT_RRB_RATE_LIMIT 18 - - struct ft_rrb_tlv { - le16 type; -@@ -327,6 +332,10 @@ struct wpa_auth_callbacks { - struct vlan_description *vlan); - int (*get_vlan)(void *ctx, const u8 *sta_addr, - struct vlan_description *vlan); -+ int (*set_rate_limit)(void *ctx, const u8 *sta_addr, -+ struct rate_description *rate); -+ int (*get_rate_limit)(void *ctx, const u8 *sta_addr, -+ struct rate_description *rate); - int (*set_identity)(void *ctx, const u8 *sta_addr, - const u8 *identity, size_t identity_len); - size_t (*get_identity)(void *ctx, const u8 *sta_addr, const u8 **buf); -@@ -479,7 +488,7 @@ int wpa_ft_fetch_pmk_r1(struct wpa_authe - struct vlan_description *vlan, - const u8 **identity, size_t *identity_len, - const u8 **radius_cui, size_t *radius_cui_len, -- int *session_timeout); -+ int *session_timeout, struct rate_description *rate); - - #endif /* CONFIG_IEEE80211R_AP */ - -Index: hostapd-2021-02-20-59e9794c/src/ap/wpa_auth_glue.c -=================================================================== ---- hostapd-2021-02-20-59e9794c.orig/src/ap/wpa_auth_glue.c -+++ hostapd-2021-02-20-59e9794c/src/ap/wpa_auth_glue.c -@@ -1153,6 +1153,40 @@ static int hostapd_wpa_auth_get_vlan(voi - } - - -+static int hostapd_wpa_auth_set_rate_limit(void *ctx, const u8 *sta_addr, -+ struct rate_description *rate) -+{ -+ struct hostapd_data *hapd = ctx; -+ struct sta_info *sta; -+ -+ sta = ap_get_sta(hapd, sta_addr); -+ if (!sta || !sta->wpa_sm) -+ return -1; -+ -+ memcpy(sta->bandwidth, rate, sizeof(*rate)); -+ hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211, -+ HOSTAPD_LEVEL_INFO, "rate-limit %d %d", sta->bandwidth[0], sta->bandwidth[1]); -+ -+ return 0; -+} -+ -+ -+static int hostapd_wpa_auth_get_rate_limit(void *ctx, const u8 *sta_addr, -+ struct rate_description *rate) -+{ -+ struct hostapd_data *hapd = ctx; -+ struct sta_info *sta; -+ -+ sta = ap_get_sta(hapd, sta_addr); -+ if (!sta) -+ return -1; -+ -+ memcpy(rate, sta->bandwidth, sizeof(*rate)); -+ -+ return 0; -+} -+ -+ - static int - hostapd_wpa_auth_set_identity(void *ctx, const u8 *sta_addr, - const u8 *identity, size_t identity_len) -@@ -1471,6 +1505,8 @@ int hostapd_setup_wpa(struct hostapd_dat - .add_tspec = hostapd_wpa_auth_add_tspec, - .set_vlan = hostapd_wpa_auth_set_vlan, - .get_vlan = hostapd_wpa_auth_get_vlan, -+ .set_rate_limit = hostapd_wpa_auth_set_rate_limit, -+ .get_rate_limit = hostapd_wpa_auth_get_rate_limit, - .set_identity = hostapd_wpa_auth_set_identity, - .get_identity = hostapd_wpa_auth_get_identity, - .set_radius_cui = hostapd_wpa_auth_set_radius_cui, -Index: hostapd-2021-02-20-59e9794c/src/ap/ieee802_11.c -=================================================================== ---- hostapd-2021-02-20-59e9794c.orig/src/ap/ieee802_11.c -+++ hostapd-2021-02-20-59e9794c/src/ap/ieee802_11.c -@@ -3240,7 +3240,7 @@ static void handle_auth_pasn_1(struct ho - rsn_data.pmkid, - pmk_r1, &pmk_r1_len, NULL, - NULL, NULL, NULL, -- NULL, NULL, NULL); -+ NULL, NULL, NULL, NULL); - if (ret) { - wpa_printf(MSG_DEBUG, - "PASN: FT: Failed getting PMK-R1"); -Index: hostapd-2021-02-20-59e9794c/src/ap/wpa_auth_ft.c -=================================================================== ---- hostapd-2021-02-20-59e9794c.orig/src/ap/wpa_auth_ft.c -+++ hostapd-2021-02-20-59e9794c/src/ap/wpa_auth_ft.c -@@ -375,6 +375,14 @@ static size_t wpa_ft_vlan_len(const stru - return tlv_len; - } - -+static size_t wpa_ft_rate_limit_len(const struct rate_description *rate) -+{ -+ if (!rate) -+ return 0; -+ -+ return (sizeof(*rate)); -+} -+ - - static size_t wpa_ft_vlan_lin(const struct vlan_description *vlan, - u8 *start, u8 *endpos) -@@ -430,10 +438,47 @@ static size_t wpa_ft_vlan_lin(const stru - } - - -+static size_t wpa_ft_rate_limit_lin(const struct rate_description *rate, -+ u8 *start, u8 *endpos) -+{ -+ size_t tlv_len; -+ int i, len; -+ struct ft_rrb_tlv *hdr; -+ u8 *pos = start; -+ -+ if (!rate) -+ return 0; -+ -+ tlv_len = 0; -+ if (rate->rx || rate->tx) { -+ tlv_len += sizeof(*hdr); -+ if (start + tlv_len > endpos) -+ return tlv_len; -+ hdr = (struct ft_rrb_tlv *) pos; -+ hdr->type = host_to_le16(FT_RRB_RATE_LIMIT); -+ hdr->len = host_to_le16(sizeof(le16)); -+ pos = start + tlv_len; -+ -+ tlv_len += sizeof(u32); -+ if (start + tlv_len > endpos) -+ return tlv_len; -+ WPA_PUT_LE32(pos, rate->rx); -+ tlv_len += sizeof(u32); -+ if (start + tlv_len > endpos) -+ return tlv_len; -+ WPA_PUT_LE32(pos, rate->tx); -+ pos = start + tlv_len; -+ } -+ -+ return tlv_len; -+} -+ -+ - static int wpa_ft_rrb_lin(const struct tlv_list *tlvs1, - const struct tlv_list *tlvs2, - const struct vlan_description *vlan, -- u8 **plain, size_t *plain_len) -+ u8 **plain, size_t *plain_len, -+ const struct rate_description *rate) - { - u8 *pos, *endpos; - size_t tlv_len; -@@ -441,6 +486,7 @@ static int wpa_ft_rrb_lin(const struct t - tlv_len = wpa_ft_tlv_len(tlvs1); - tlv_len += wpa_ft_tlv_len(tlvs2); - tlv_len += wpa_ft_vlan_len(vlan); -+ tlv_len += wpa_ft_rate_limit_len(rate); - - *plain_len = tlv_len; - *plain = os_zalloc(tlv_len); -@@ -454,6 +500,7 @@ static int wpa_ft_rrb_lin(const struct t - pos += wpa_ft_tlv_lin(tlvs1, pos, endpos); - pos += wpa_ft_tlv_lin(tlvs2, pos, endpos); - pos += wpa_ft_vlan_lin(vlan, pos, endpos); -+ pos += wpa_ft_rate_limit_lin(rate, pos, endpos); - - /* sanity check */ - if (pos != endpos) { -@@ -522,7 +569,8 @@ static int wpa_ft_rrb_build(const u8 *ke - const struct tlv_list *tlvs_auth, - const struct vlan_description *vlan, - const u8 *src_addr, u8 type, -- u8 **packet, size_t *packet_len) -+ u8 **packet, size_t *packet_len, -+ const struct rate_description *rate) - { - u8 *plain = NULL, *auth = NULL, *pos, *tmp; - size_t plain_len = 0, auth_len = 0; -@@ -530,10 +578,10 @@ static int wpa_ft_rrb_build(const u8 *ke - size_t pad_len = 0; - - *packet = NULL; -- if (wpa_ft_rrb_lin(tlvs_enc0, tlvs_enc1, vlan, &plain, &plain_len) < 0) -+ if (wpa_ft_rrb_lin(tlvs_enc0, tlvs_enc1, vlan, &plain, &plain_len, rate) < 0) - goto out; - -- if (wpa_ft_rrb_lin(tlvs_auth, NULL, NULL, &auth, &auth_len) < 0) -+ if (wpa_ft_rrb_lin(tlvs_auth, NULL, NULL, &auth, &auth_len, NULL) < 0) - goto out; - - *packet_len = sizeof(u16) + auth_len + plain_len; -@@ -696,6 +744,24 @@ static int wpa_ft_get_vlan(struct wpa_au - } - - -+static int wpa_ft_get_rate_limit(struct wpa_authenticator *wpa_auth, -+ const u8 *sta_addr, struct rate_description *rate) -+{ -+ if (!wpa_auth->cb->get_rate_limit) -+ return -1; -+ return wpa_auth->cb->get_rate_limit(wpa_auth->cb_ctx, sta_addr, rate); -+} -+ -+ -+static int wpa_ft_set_rate_limit(struct wpa_authenticator *wpa_auth, -+ const u8 *sta_addr, struct rate_description *rate) -+{ -+ if (!wpa_auth->cb->set_rate_limit) -+ return -1; -+ return wpa_auth->cb->set_rate_limit(wpa_auth->cb_ctx, sta_addr, rate); -+} -+ -+ - static int - wpa_ft_set_identity(struct wpa_authenticator *wpa_auth, const u8 *sta_addr, - const u8 *identity, size_t identity_len) -@@ -991,7 +1057,7 @@ wpa_ft_rrb_seq_req(struct wpa_authentica - - if (wpa_ft_rrb_build(key, key_len, NULL, NULL, seq_req_auth, NULL, - wpa_auth->addr, FT_PACKET_R0KH_R1KH_SEQ_REQ, -- &packet, &packet_len) < 0) { -+ &packet, &packet_len, NULL) < 0) { - item = NULL; /* some other seq resp might still accept this */ - goto err; - } -@@ -1174,6 +1240,7 @@ struct wpa_ft_pmk_r0_sa { - u8 spa[ETH_ALEN]; - int pairwise; /* Pairwise cipher suite, WPA_CIPHER_* */ - struct vlan_description *vlan; -+ struct rate_description *rate; - os_time_t expiration; /* 0 for no expiration */ - u8 *identity; - size_t identity_len; -@@ -1192,6 +1259,7 @@ struct wpa_ft_pmk_r1_sa { - u8 spa[ETH_ALEN]; - int pairwise; /* Pairwise cipher suite, WPA_CIPHER_* */ - struct vlan_description *vlan; -+ struct rate_description *rate; - u8 *identity; - size_t identity_len; - u8 *radius_cui; -@@ -1220,6 +1288,7 @@ static void wpa_ft_free_pmk_r0(struct wp - - os_memset(r0->pmk_r0, 0, PMK_LEN_MAX); - os_free(r0->vlan); -+ os_free(r0->rate); - os_free(r0->identity); - os_free(r0->radius_cui); - os_free(r0); -@@ -1273,6 +1342,7 @@ static void wpa_ft_free_pmk_r1(struct wp - eloop_cancel_timeout(wpa_ft_expire_pmk_r1, r1, NULL); - - os_memset(r1->pmk_r1, 0, PMK_LEN_MAX); -+ os_free(r1->rate); - os_free(r1->vlan); - os_free(r1->identity); - os_free(r1->radius_cui); -@@ -1326,7 +1396,8 @@ static int wpa_ft_store_pmk_r0(struct wp - const struct vlan_description *vlan, - int expires_in, int session_timeout, - const u8 *identity, size_t identity_len, -- const u8 *radius_cui, size_t radius_cui_len) -+ const u8 *radius_cui, size_t radius_cui_len, -+ struct rate_description *rate) - { - struct wpa_ft_pmk_cache *cache = wpa_auth->ft_pmk_cache; - struct wpa_ft_pmk_r0_sa *r0; -@@ -1354,6 +1425,14 @@ static int wpa_ft_store_pmk_r0(struct wp - } - *r0->vlan = *vlan; - } -+ if (rate) { -+ r0->rate = os_zalloc(sizeof(*rate)); -+ if (!r0->rate) { -+ bin_clear_free(r0, sizeof(*r0)); -+ return -1; -+ } -+ *r0->rate = *rate; -+ } - if (identity) { - r0->identity = os_malloc(identity_len); - if (r0->identity) { -@@ -1413,7 +1492,8 @@ static int wpa_ft_store_pmk_r1(struct wp - const struct vlan_description *vlan, - int expires_in, int session_timeout, - const u8 *identity, size_t identity_len, -- const u8 *radius_cui, size_t radius_cui_len) -+ const u8 *radius_cui, size_t radius_cui_len, -+ struct rate_description *rate) - { - struct wpa_ft_pmk_cache *cache = wpa_auth->ft_pmk_cache; - int max_expires_in = wpa_auth->conf.r1_max_key_lifetime; -@@ -1443,6 +1523,14 @@ static int wpa_ft_store_pmk_r1(struct wp - } - *r1->vlan = *vlan; - } -+ if (rate) { -+ r1->rate = os_zalloc(sizeof(*rate)); -+ if (!r1->rate) { -+ bin_clear_free(r1, sizeof(*r1)); -+ return -1; -+ } -+ *r1->rate = *rate; -+ } - if (identity) { - r1->identity = os_malloc(identity_len); - if (r1->identity) { -@@ -1479,7 +1567,7 @@ int wpa_ft_fetch_pmk_r1(struct wpa_authe - struct vlan_description *vlan, - const u8 **identity, size_t *identity_len, - const u8 **radius_cui, size_t *radius_cui_len, -- int *session_timeout) -+ int *session_timeout, struct rate_description *rate) - { - struct wpa_ft_pmk_cache *cache = wpa_auth->ft_pmk_cache; - struct wpa_ft_pmk_r1_sa *r1; -@@ -1499,6 +1587,12 @@ int wpa_ft_fetch_pmk_r1(struct wpa_authe - *vlan = *r1->vlan; - if (vlan && !r1->vlan) - os_memset(vlan, 0, sizeof(*vlan)); -+ if (rate) { -+ if (r1->rate) -+ *rate = *r1->rate; -+ else -+ memset(rate, 0, sizeof(*rate)); -+ } - if (identity && identity_len) { - *identity = r1->identity; - *identity_len = r1->identity_len; -@@ -2025,7 +2119,7 @@ static int wpa_ft_pull_pmk_r1(struct wpa - - if (wpa_ft_rrb_build(key, key_len, req_enc, NULL, req_auth, NULL, - sm->wpa_auth->addr, FT_PACKET_R0KH_R1KH_PULL, -- &packet, &packet_len) < 0) -+ &packet, &packet_len, NULL) < 0) - return -1; - - ft_pending_req_ies = wpabuf_alloc_copy(ies, ies_len); -@@ -2054,6 +2148,7 @@ int wpa_ft_store_pmk_fils(struct wpa_sta - { - int expires_in = sm->wpa_auth->conf.r0_key_lifetime; - struct vlan_description vlan; -+ struct rate_description rate; - const u8 *identity, *radius_cui; - size_t identity_len, radius_cui_len; - int session_timeout; -@@ -2065,6 +2160,7 @@ int wpa_ft_store_pmk_fils(struct wpa_sta - MAC2STR(sm->addr)); - return -1; - } -+ wpa_ft_get_rate_limit(sm->wpa_auth, sm->addr, &rate); - - identity_len = wpa_ft_get_identity(sm->wpa_auth, sm->addr, &identity); - radius_cui_len = wpa_ft_get_radius_cui(sm->wpa_auth, sm->addr, -@@ -2074,7 +2170,7 @@ int wpa_ft_store_pmk_fils(struct wpa_sta - return wpa_ft_store_pmk_r0(sm->wpa_auth, sm->addr, pmk_r0, pmk_r0_len, - pmk_r0_name, sm->pairwise, &vlan, expires_in, - session_timeout, identity, identity_len, -- radius_cui, radius_cui_len); -+ radius_cui, radius_cui_len, &rate); - } - - -@@ -2095,6 +2191,7 @@ int wpa_auth_derive_ptk_ft(struct wpa_st - int psk_local = sm->wpa_auth->conf.ft_psk_generate_local; - int expires_in = sm->wpa_auth->conf.r0_key_lifetime; - struct vlan_description vlan; -+ struct rate_description rate; - const u8 *identity, *radius_cui; - size_t identity_len, radius_cui_len; - int session_timeout; -@@ -2119,6 +2216,8 @@ int wpa_auth_derive_ptk_ft(struct wpa_st - return -1; - } - -+ wpa_ft_get_rate_limit(sm->wpa_auth, sm->addr, &rate); -+ - identity_len = wpa_ft_get_identity(sm->wpa_auth, sm->addr, &identity); - radius_cui_len = wpa_ft_get_radius_cui(sm->wpa_auth, sm->addr, - &radius_cui); -@@ -2134,7 +2233,7 @@ int wpa_auth_derive_ptk_ft(struct wpa_st - pmk_r0_name, - sm->pairwise, &vlan, expires_in, - session_timeout, identity, identity_len, -- radius_cui, radius_cui_len); -+ radius_cui, radius_cui_len, &rate); - - if (wpa_derive_pmk_r1(pmk_r0, pmk_r0_len, pmk_r0_name, r1kh, sm->addr, - pmk_r1, sm->pmk_r1_name) < 0) -@@ -2143,7 +2242,8 @@ int wpa_auth_derive_ptk_ft(struct wpa_st - wpa_ft_store_pmk_r1(sm->wpa_auth, sm->addr, pmk_r1, pmk_r1_len, - sm->pmk_r1_name, sm->pairwise, &vlan, - expires_in, session_timeout, identity, -- identity_len, radius_cui, radius_cui_len); -+ identity_len, radius_cui, radius_cui_len, -+ &rate); - - return wpa_pmk_r1_to_ptk(pmk_r1, pmk_r1_len, sm->SNonce, sm->ANonce, - sm->addr, sm->wpa_auth->addr, sm->pmk_r1_name, -@@ -2986,7 +3086,8 @@ static int wpa_ft_local_derive_pmk_r1(st - const u8 **identity, size_t *identity_len, - const u8 **radius_cui, - size_t *radius_cui_len, -- int *out_session_timeout) -+ int *out_session_timeout, -+ struct rate_description *rate) - { - struct wpa_auth_config *conf = &wpa_auth->conf; - const struct wpa_ft_pmk_r0_sa *r0; -@@ -3023,7 +3124,8 @@ static int wpa_ft_local_derive_pmk_r1(st - pmk_r1_name, - sm->pairwise, r0->vlan, expires_in, session_timeout, - r0->identity, r0->identity_len, -- r0->radius_cui, r0->radius_cui_len); -+ r0->radius_cui, r0->radius_cui_len, -+ r0->rate); - - *out_pairwise = sm->pairwise; - if (vlan) { -@@ -3033,6 +3135,13 @@ static int wpa_ft_local_derive_pmk_r1(st - os_memset(vlan, 0, sizeof(*vlan)); - } - -+ if (rate) { -+ if (r0->rate) -+ *rate = *r0->rate; -+ else -+ os_memset(rate, 0, sizeof(*rate)); -+ } -+ - if (identity && identity_len) { - *identity = r0->identity; - *identity_len = r0->identity_len; -@@ -3063,6 +3172,7 @@ static int wpa_ft_process_auth_req(struc - u8 *pos, *end; - int pairwise, session_timeout = 0; - struct vlan_description vlan; -+ struct rate_description rate; - const u8 *identity, *radius_cui; - size_t identity_len = 0, radius_cui_len = 0; - int use_sha384; -@@ -3153,7 +3263,7 @@ static int wpa_ft_process_auth_req(struc - } else if (wpa_ft_fetch_pmk_r1(sm->wpa_auth, sm->addr, pmk_r1_name, - pmk_r1, &pmk_r1_len, &pairwise, &vlan, - &identity, &identity_len, &radius_cui, -- &radius_cui_len, &session_timeout) < 0) { -+ &radius_cui_len, &session_timeout, &rate) < 0) { - wpa_printf(MSG_DEBUG, - "FT: No PMK-R1 available in local cache for the requested PMKR1Name"); - if (wpa_ft_local_derive_pmk_r1(sm->wpa_auth, sm, -@@ -3162,7 +3272,7 @@ static int wpa_ft_process_auth_req(struc - pmk_r1_name, pmk_r1, &pairwise, - &vlan, &identity, &identity_len, - &radius_cui, &radius_cui_len, -- &session_timeout) == 0) { -+ &session_timeout, &rate) == 0) { - wpa_printf(MSG_DEBUG, - "FT: Generated PMK-R1 based on local PMK-R0"); - goto pmk_r1_derived; -@@ -3229,6 +3339,7 @@ pmk_r1_derived: - wpa_printf(MSG_DEBUG, "FT: Failed to configure VLAN"); - return WLAN_STATUS_UNSPECIFIED_FAILURE; - } -+ wpa_ft_set_rate_limit(sm->wpa_auth, sm->addr, &rate); - if (wpa_ft_set_identity(sm->wpa_auth, sm->addr, - identity, identity_len) < 0 || - wpa_ft_set_radius_cui(sm->wpa_auth, sm->addr, -@@ -3801,7 +3912,7 @@ static int wpa_ft_rrb_build_r0(const u8 - - ret = wpa_ft_rrb_build(key, key_len, tlvs, sess_tlv, tlv_auth, - pmk_r0->vlan, src_addr, type, -- packet, packet_len); -+ packet, packet_len, pmk_r0->rate); - - forced_memzero(pmk_r1, sizeof(pmk_r1)); - -@@ -3941,7 +4052,7 @@ static int wpa_ft_rrb_rx_pull(struct wpa - ret = wpa_ft_rrb_build(key, key_len, resp, NULL, resp_auth, - NULL, wpa_auth->addr, - FT_PACKET_R0KH_R1KH_RESP, -- &packet, &packet_len); -+ &packet, &packet_len, NULL); - } else { - ret = wpa_ft_rrb_build_r0(key, key_len, resp, r0, f_r1kh_id, - f_s1kh_id, resp_auth, wpa_auth->addr, -@@ -3993,11 +4104,15 @@ static int wpa_ft_rrb_rx_r1(struct wpa_a - size_t f_expires_in_len; - size_t f_identity_len, f_radius_cui_len; - size_t f_session_timeout_len; -+ size_t f_rate_len; -+ const u8 *f_rate; - int pairwise; - int ret = -1; - int expires_in; - int session_timeout; - struct vlan_description vlan; -+ struct rate_description rate; -+ int has_rate = 0; - size_t pmk_r1_len; - - RRB_GET_AUTH(FT_RRB_R0KH_ID, r0kh_id, msgtype, -1); -@@ -4106,6 +4221,13 @@ static int wpa_ft_rrb_rx_r1(struct wpa_a - wpa_printf(MSG_DEBUG, "FT: vlan %d%s", - le_to_host16(vlan.untagged), vlan.tagged[0] ? "+" : ""); - -+ RRB_GET_OPTIONAL(FT_RRB_RATE_LIMIT, rate, msgtype, 2 * sizeof(le32)); -+ if (f_rate) { -+ memcpy(&rate, f_rate, sizeof(rate)); -+ rate.rx = le_to_host32(rate.rx); -+ rate.tx = le_to_host32(rate.tx); -+ has_rate = 1; -+ }; - RRB_GET_OPTIONAL(FT_RRB_IDENTITY, identity, msgtype, -1); - if (f_identity) - wpa_hexdump_ascii(MSG_DEBUG, "FT: Identity", f_identity, -@@ -4128,7 +4250,7 @@ static int wpa_ft_rrb_rx_r1(struct wpa_a - f_pmk_r1_name, - pairwise, &vlan, expires_in, session_timeout, - f_identity, f_identity_len, f_radius_cui, -- f_radius_cui_len) < 0) -+ f_radius_cui_len, has_rate ? &rate : 0) < 0) - goto out; - - ret = 0; -@@ -4441,7 +4563,7 @@ static int wpa_ft_rrb_rx_seq_req(struct - - if (wpa_ft_rrb_build(key, key_len, NULL, NULL, seq_resp_auth, NULL, - wpa_auth->addr, FT_PACKET_R0KH_R1KH_SEQ_RESP, -- &packet, &packet_len) < 0) -+ &packet, &packet_len, NULL) < 0) - goto out; - - wpa_ft_rrb_oui_send(wpa_auth, src_addr, From 962f84ca249b0a369b3551781d679e3fd2ced1cf Mon Sep 17 00:00:00 2001 From: John Crispin Date: Wed, 19 Jun 2024 16:32:52 +0200 Subject: [PATCH 2/4] ucentral-schema: update to latest HEAD 83218cf use the correct path when removing old config files Signed-off-by: John Crispin --- feeds/ucentral/ucentral-schema/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/feeds/ucentral/ucentral-schema/Makefile b/feeds/ucentral/ucentral-schema/Makefile index bb44c4218..2b1b55dbc 100644 --- a/feeds/ucentral/ucentral-schema/Makefile +++ b/feeds/ucentral/ucentral-schema/Makefile @@ -4,10 +4,10 @@ PKG_NAME:=ucentral-schema PKG_RELEASE:=1 PKG_SOURCE_URL=https://github.com/Telecominfraproject/wlan-ucentral-schema.git -PKG_MIRROR_HASH:=c455f08d92be5a0f75fbc784f06b6154df80794f86e5a0f70d2e98e3a147e16c +PKG_MIRROR_HASH:=38f54f46cd9203316bd48987088e85b40a2240ca3447d10a4275505832e8f30e PKG_SOURCE_PROTO:=git PKG_SOURCE_DATE:=2024-04-26 -PKG_SOURCE_VERSION:=6e90f22d54537032c6b8374df508913592b31670 +PKG_SOURCE_VERSION:=83218cf4c560705fdcf375053678968ee569de9a PKG_MAINTAINER:=John Crispin PKG_LICENSE:=BSD-3-Clause From 276f03996429ee84dac69feebb7606f708cb8c73 Mon Sep 17 00:00:00 2001 From: "tanya.singh" Date: Thu, 20 Jun 2024 13:57:17 +0800 Subject: [PATCH 3/4] ipq53xx: Update board data file for EAP102 to support DFS channels correctly on India (IN) country code Fixes: WIFI-13858 Signed-off-by: Tanya Singh --- .../board-edgecore-eap102.bin.IPQ8074 | Bin 131072 -> 131072 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/feeds/ipq807x_v5.4/ath11k-wifi/board-edgecore-eap102.bin.IPQ8074 b/feeds/ipq807x_v5.4/ath11k-wifi/board-edgecore-eap102.bin.IPQ8074 index 211b995352b2e3992825da0f1e3f64e3fc07f651..7a01c6b726c3d7f0d160df76bb156a6c5602a5ce 100644 GIT binary patch literal 131072 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 T0tx|zfI>hapb$_9L=pJ^wl@k( From 431ad6c09dd050fb69bbbafb4df8df89b11d912f Mon Sep 17 00:00:00 2001 From: John Crispin Date: Thu, 20 Jun 2024 11:43:15 +0200 Subject: [PATCH 4/4] ath11k-wifi: update CIG WF-188n BDF files Signed-off-by: John Crispin --- .../board-cig-wf188n-us.bin.IPQ6018 | Bin 65536 -> 65536 bytes .../ath11k-wifi/board-cig-wf188n.bin.IPQ6018 | Bin 65536 -> 65536 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/feeds/ipq807x_v5.4/ath11k-wifi/board-cig-wf188n-us.bin.IPQ6018 b/feeds/ipq807x_v5.4/ath11k-wifi/board-cig-wf188n-us.bin.IPQ6018 index 7259522a4f7e84efdb3fa9b8ac112bcad9f9cceb..273b08305340b1b836aa9e25e02fd1b960704178 100644 GIT binary patch delta 59 zcmZo@U}-igbPHbkB+PPF5c@4q$VHSKarVT Le8J|>1FP);>5UUl diff --git a/feeds/ipq807x_v5.4/ath11k-wifi/board-cig-wf188n.bin.IPQ6018 b/feeds/ipq807x_v5.4/ath11k-wifi/board-cig-wf188n.bin.IPQ6018 index ec70a62e97d7b0672f789e6131fb5f3336a51f04..273b08305340b1b836aa9e25e02fd1b960704178 100644 GIT binary patch delta 3414 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 ZB7)Fo(O9g{qEy3+rT&++J3l*A_g}Z~{D%Ml