Revert "[wpa_supplicant] cumilative patch from commit 3a5d1a7e6"
Revert submission 26533062-Supplicant_merge_June24
Reason for revert: https://b.corp.google.com/issues/349780869
Reverted changes: /q/submissionid:26533062-Supplicant_merge_June24
Change-Id: I4a7a5b8ccb6b4822353bacc29649587cd5a3cb80
diff --git a/src/ap/drv_callbacks.c b/src/ap/drv_callbacks.c
index 533cc54..98794c2 100644
--- a/src/ap/drv_callbacks.c
+++ b/src/ap/drv_callbacks.c
@@ -42,7 +42,6 @@
#include "dpp_hostapd.h"
#include "fils_hlp.h"
#include "neighbor_db.h"
-#include "nan_usd_ap.h"
#ifdef CONFIG_FILS
@@ -53,7 +52,6 @@
struct ieee802_11_elems elems;
u8 buf[IEEE80211_MAX_MMPDU_SIZE], *p = buf;
int new_assoc;
- bool updated;
wpa_printf(MSG_DEBUG, "%s FILS: Finish association with " MACSTR,
__func__, MAC2STR(sta->addr));
@@ -78,13 +76,11 @@
sta->fils_pending_assoc_is_reassoc,
WLAN_STATUS_SUCCESS,
buf, p - buf);
- updated = ap_sta_set_authorized_flag(hapd, sta, 1);
+ ap_sta_set_authorized(hapd, sta, 1);
new_assoc = (sta->flags & WLAN_STA_ASSOC) == 0;
sta->flags |= WLAN_STA_AUTH | WLAN_STA_ASSOC;
sta->flags &= ~WLAN_STA_WNM_SLEEP_MODE;
hostapd_set_sta_flags(hapd, sta);
- if (updated)
- ap_sta_set_authorized_event(hapd, sta, 1);
wpa_auth_sm_event(sta->wpa_sm, WPA_ASSOC_FILS);
ieee802_1x_notify_port_enabled(sta->eapol_sm, 1);
hostapd_new_assoc_sta(hapd, sta, !new_assoc);
@@ -162,7 +158,7 @@
return -1;
}
- mlebuf = ieee802_11_defrag(elems.basic_mle, elems.basic_mle_len, true);
+ mlebuf = ieee802_11_defrag_mle(&elems, MULTI_LINK_CONTROL_TYPE_BASIC);
if (!mlebuf) {
wpa_printf(MSG_ERROR,
"MLO: Basic Multi-Link element not found in (Re)Association Response frame");
@@ -267,7 +263,6 @@
#ifdef CONFIG_OWE
struct hostapd_iface *iface = hapd->iface;
#endif /* CONFIG_OWE */
- bool updated = false;
if (addr == NULL) {
/*
@@ -284,7 +279,7 @@
if (is_multicast_ether_addr(addr) ||
is_zero_ether_addr(addr) ||
- ether_addr_equal(addr, hapd->own_addr)) {
+ os_memcmp(addr, hapd->own_addr, ETH_ALEN) == 0) {
/* Do not process any frames with unexpected/invalid SA so that
* we do not add any state for unexpected STA addresses or end
* up sending out frames to unexpected destination. */
@@ -363,7 +358,7 @@
int i, num_valid_links = 0;
u8 link_id = hapd->mld_link_id;
- ap_sta_set_mld(sta, true);
+ info->mld_sta = true;
sta->mld_assoc_link_id = link_id;
os_memcpy(info->common_info.mld_addr, addr, ETH_ALEN);
info->links[link_id].valid = true;
@@ -514,7 +509,7 @@
return -1;
}
#ifdef CONFIG_IEEE80211BE
- if (ap_sta_is_mld(hapd, sta)) {
+ if (sta->mld_info.mld_sta) {
wpa_printf(MSG_DEBUG,
"MLD: Set ML info in RSN Authenticator");
wpa_auth_set_ml_info(sta->wpa_sm, hapd->mld_addr,
@@ -850,30 +845,18 @@
sta->auth_alg == WLAN_AUTH_FILS_SK ||
sta->auth_alg == WLAN_AUTH_FILS_SK_PFS ||
sta->auth_alg == WLAN_AUTH_FILS_PK)
- updated = ap_sta_set_authorized_flag(hapd, sta, 1);
+ ap_sta_set_authorized(hapd, sta, 1);
#else /* CONFIG_IEEE80211R_AP || CONFIG_FILS */
/* Keep compiler silent about unused variables */
if (status) {
}
#endif /* CONFIG_IEEE80211R_AP || CONFIG_FILS */
-#ifdef CONFIG_IEEE80211BE
- if (hostapd_process_assoc_ml_info(hapd, sta, req_ies, req_ies_len,
- !!reassoc, WLAN_STATUS_SUCCESS,
- true)) {
- status = WLAN_STATUS_UNSPECIFIED_FAILURE;
- reason = WLAN_REASON_UNSPECIFIED;
- goto fail;
- }
-#endif /* CONFIG_IEEE80211BE */
-
new_assoc = (sta->flags & WLAN_STA_ASSOC) == 0;
sta->flags |= WLAN_STA_AUTH | WLAN_STA_ASSOC;
sta->flags &= ~WLAN_STA_WNM_SLEEP_MODE;
hostapd_set_sta_flags(hapd, sta);
- if (updated)
- ap_sta_set_authorized_event(hapd, sta, 1);
if (reassoc && (sta->auth_alg == WLAN_AUTH_FT))
wpa_auth_sm_event(sta->wpa_sm, WPA_ASSOC_FT);
@@ -1181,8 +1164,6 @@
hostapd_set_oper_chwidth(hapd->iconf, chwidth);
hostapd_set_oper_centr_freq_seg0_idx(hapd->iconf, seg0_idx);
hostapd_set_oper_centr_freq_seg1_idx(hapd->iconf, seg1_idx);
- /* Auto-detect new bw320_offset */
- hostapd_set_and_check_bw320_offset(hapd->iconf, 0);
#ifdef CONFIG_IEEE80211BE
hapd->iconf->punct_bitmap = punct_bitmap;
#endif /* CONFIG_IEEE80211BE */
@@ -1289,18 +1270,6 @@
int err = 0;
struct hostapd_channel_data *pri_chan;
-#ifdef CONFIG_IEEE80211BE
- if (acs_res->link_id != -1) {
- hapd = hostapd_mld_get_link_bss(hapd, acs_res->link_id);
- if (!hapd) {
- wpa_printf(MSG_ERROR,
- "MLD: Failed to get link BSS for EVENT_ACS_CHANNEL_SELECTED link_id=%d",
- acs_res->link_id);
- return;
- }
- }
-#endif /* CONFIG_IEEE80211BE */
-
if (hapd->iconf->channel) {
wpa_printf(MSG_INFO, "ACS: Channel was already set to %d",
hapd->iconf->channel);
@@ -1607,7 +1576,6 @@
#endif /* CONFIG_FST */
#ifdef CONFIG_DPP
if (plen >= 2 + 4 &&
- mgmt->u.action.category == WLAN_ACTION_PUBLIC &&
mgmt->u.action.u.vs_public_action.action ==
WLAN_PA_VENDOR_SPECIFIC &&
WPA_GET_BE24(mgmt->u.action.u.vs_public_action.oui) ==
@@ -1623,23 +1591,6 @@
return;
}
#endif /* CONFIG_DPP */
-#ifdef CONFIG_NAN_USD
- if (mgmt->u.action.category == WLAN_ACTION_PUBLIC && plen >= 5 &&
- mgmt->u.action.u.vs_public_action.action ==
- WLAN_PA_VENDOR_SPECIFIC &&
- WPA_GET_BE24(mgmt->u.action.u.vs_public_action.oui) ==
- OUI_WFA &&
- mgmt->u.action.u.vs_public_action.variable[0] == NAN_OUI_TYPE) {
- const u8 *pos, *end;
-
- pos = mgmt->u.action.u.vs_public_action.variable;
- end = drv_mgmt->frame + drv_mgmt->frame_len;
- pos++;
- hostapd_nan_usd_rx_sdf(hapd, mgmt->sa, drv_mgmt->freq,
- pos, end - pos);
- return;
- }
-#endif /* CONFIG_NAN_USD */
}
#endif /* NEED_AP_MLME */
@@ -1677,7 +1628,7 @@
return HAPD_BROADCAST;
for (i = 0; i < iface->num_bss; i++) {
- if (ether_addr_equal(bssid, iface->bss[i]->own_addr))
+ if (os_memcmp(bssid, iface->bss[i]->own_addr, ETH_ALEN) == 0)
return iface->bss[i];
}
@@ -1731,7 +1682,7 @@
#ifdef CONFIG_IEEE80211BE
if (hapd->conf->mld_ap &&
- ether_addr_equal(hapd->mld_addr, bssid))
+ os_memcmp(hapd->mld_addr, bssid, ETH_ALEN) == 0)
is_mld = true;
#endif /* CONFIG_IEEE80211BE */
@@ -1803,7 +1754,8 @@
hapd = tmp_hapd;
#ifdef CONFIG_IEEE80211BE
} else if (hapd->conf->mld_ap &&
- ether_addr_equal(hapd->mld_addr, get_hdr_bssid(hdr, len))) {
+ os_memcmp(hapd->mld_addr, get_hdr_bssid(hdr, len),
+ ETH_ALEN) == 0) {
/* AP MLD address match - use hapd pointer as-is */
#endif /* CONFIG_IEEE80211BE */
} else {
@@ -1851,15 +1803,14 @@
static struct hostapd_data * hostapd_find_by_sta(struct hostapd_iface *iface,
- const u8 *src, bool rsn)
+ const u8 *src)
{
struct sta_info *sta;
unsigned int j;
for (j = 0; j < iface->num_bss; j++) {
sta = ap_get_sta(iface->bss[j], src);
- if (sta && (sta->flags & WLAN_STA_ASSOC) &&
- (!rsn || sta->wpa_sm))
+ if (sta && sta->flags & WLAN_STA_ASSOC)
return iface->bss[j];
}
@@ -1867,40 +1818,6 @@
}
-#ifdef CONFIG_IEEE80211BE
-static bool search_mld_sta(struct hostapd_data **p_hapd, const u8 *src)
-{
- struct hostapd_data *hapd = *p_hapd;
- unsigned int i;
-
- /* Search for STA on other MLO BSSs */
- for (i = 0; i < hapd->iface->interfaces->count; i++) {
- struct hostapd_iface *h =
- hapd->iface->interfaces->iface[i];
- struct hostapd_data *h_hapd = h->bss[0];
- struct hostapd_bss_config *hconf = h_hapd->conf;
-
- if (!hconf->mld_ap ||
- hconf->mld_id != hapd->conf->mld_id)
- continue;
-
- h_hapd = hostapd_find_by_sta(h, src, false);
- if (h_hapd) {
- struct sta_info *sta = ap_get_sta(h_hapd, src);
-
- if (sta && sta->mld_info.mld_sta &&
- sta->mld_assoc_link_id != h_hapd->mld_link_id)
- continue;
- *p_hapd = h_hapd;
- return true;
- }
- }
-
- return false;
-}
-#endif /* CONFIG_IEEE80211BE */
-
-
static void hostapd_event_eapol_rx(struct hostapd_data *hapd, const u8 *src,
const u8 *data, size_t data_len,
enum frame_encryption encrypted,
@@ -1913,24 +1830,36 @@
struct hostapd_data *h_hapd;
hapd = switch_link_hapd(hapd, link_id);
- h_hapd = hostapd_find_by_sta(hapd->iface, src, true);
+ h_hapd = hostapd_find_by_sta(hapd->iface, src);
if (!h_hapd)
- h_hapd = hostapd_find_by_sta(orig_hapd->iface, src,
- true);
- if (!h_hapd)
- h_hapd = hostapd_find_by_sta(hapd->iface, src, false);
- if (!h_hapd)
- h_hapd = hostapd_find_by_sta(orig_hapd->iface, src,
- false);
+ h_hapd = hostapd_find_by_sta(orig_hapd->iface, src);
if (h_hapd)
hapd = h_hapd;
} else if (hapd->conf->mld_ap) {
- search_mld_sta(&hapd, src);
+ unsigned int i;
+
+ /* Search for STA on other MLO BSSs */
+ for (i = 0; i < hapd->iface->interfaces->count; i++) {
+ struct hostapd_iface *h =
+ hapd->iface->interfaces->iface[i];
+ struct hostapd_data *h_hapd = h->bss[0];
+ struct hostapd_bss_config *hconf = h_hapd->conf;
+
+ if (!hconf->mld_ap ||
+ hconf->mld_id != hapd->conf->mld_id)
+ continue;
+
+ h_hapd = hostapd_find_by_sta(h, src);
+ if (h_hapd) {
+ hapd = h_hapd;
+ break;
+ }
+ }
} else {
- hapd = hostapd_find_by_sta(hapd->iface, src, false);
+ hapd = hostapd_find_by_sta(hapd->iface, src);
}
#else /* CONFIG_IEEE80211BE */
- hapd = hostapd_find_by_sta(hapd->iface, src, false);
+ hapd = hostapd_find_by_sta(hapd->iface, src);
#endif /* CONFIG_IEEE80211BE */
if (!hapd) {
@@ -2235,8 +2164,8 @@
struct mld_info *info = &sta->mld_info;
u8 link_id = hapd->mld_link_id;
- ap_sta_set_mld(sta, true);
- sta->mld_assoc_link_id = link_id;
+ info->mld_sta = true;
+ sta->mld_assoc_link_id = link_id;;
os_memcpy(info->common_info.mld_addr, peer, ETH_ALEN);
info->links[link_id].valid = true;
os_memcpy(info->links[link_id].local_addr, hapd->own_addr,
@@ -2435,18 +2364,6 @@
case EVENT_CH_SWITCH:
if (!data)
break;
-#ifdef CONFIG_IEEE80211BE
- if (data->ch_switch.link_id != -1) {
- hapd = hostapd_mld_get_link_bss(
- hapd, data->ch_switch.link_id);
- if (!hapd) {
- wpa_printf(MSG_ERROR,
- "MLD: Failed to get link (ID %d) BSS for EVENT_CH_SWITCH/EVENT_CH_SWITCH_STARTED",
- data->ch_switch.link_id);
- break;
- }
- }
-#endif /* CONFIG_IEEE80211BE */
hostapd_event_ch_switch(hapd, data->ch_switch.freq,
data->ch_switch.ht_enabled,
data->ch_switch.ch_offset,
@@ -2473,31 +2390,26 @@
case EVENT_DFS_RADAR_DETECTED:
if (!data)
break;
- hapd = switch_link_hapd(hapd, data->dfs_event.link_id);
hostapd_event_dfs_radar_detected(hapd, &data->dfs_event);
break;
case EVENT_DFS_PRE_CAC_EXPIRED:
if (!data)
break;
- hapd = switch_link_hapd(hapd, data->dfs_event.link_id);
hostapd_event_dfs_pre_cac_expired(hapd, &data->dfs_event);
break;
case EVENT_DFS_CAC_FINISHED:
if (!data)
break;
- hapd = switch_link_hapd(hapd, data->dfs_event.link_id);
hostapd_event_dfs_cac_finished(hapd, &data->dfs_event);
break;
case EVENT_DFS_CAC_ABORTED:
if (!data)
break;
- hapd = switch_link_hapd(hapd, data->dfs_event.link_id);
hostapd_event_dfs_cac_aborted(hapd, &data->dfs_event);
break;
case EVENT_DFS_NOP_FINISHED:
if (!data)
break;
- hapd = switch_link_hapd(hapd, data->dfs_event.link_id);
hostapd_event_dfs_nop_finished(hapd, &data->dfs_event);
break;
case EVENT_CHANNEL_LIST_CHANGED:
@@ -2511,7 +2423,6 @@
case EVENT_DFS_CAC_STARTED:
if (!data)
break;
- hapd = switch_link_hapd(hapd, data->dfs_event.link_id);
hostapd_event_dfs_cac_started(hapd, &data->dfs_event);
break;
#endif /* NEED_AP_MLME */