Setting 4addr mode on fronthaul BSS breaks WPS association on backhaul
STA which is still on 3addr mode.
Fix the interop issue by not setting 4addr mode on fronthaul BSS with
WPS instead of setting by default for multi-ap case.
Fronthaul BSS for non-WPS STA shall continue to use 4addr mode.
Signed-off-by: Sathishkumar Muruganandam <quic_murugana@quicinc.com>
sta->flags |= WLAN_STA_WDS;
}
- if (sta->flags & (WLAN_STA_WDS | WLAN_STA_MULTI_AP)) {
+ /* WPS not supported on backhaul BSS. Disable 4addr mode on fronthaul */
+ if ((sta->flags & WLAN_STA_WDS) ||
+ (sta->flags & WLAN_STA_MULTI_AP &&
+ !(hapd->conf->multi_ap & FRONTHAUL_BSS) &&
+ !(sta->flags & WLAN_STA_WPS))) {
int ret;
char ifname_wds[IFNAMSIZ + 1];
ap_sta_set_authorized(hapd, sta, 0);
hostapd_set_sta_flags(hapd, sta);
- if (sta->flags & (WLAN_STA_WDS | WLAN_STA_MULTI_AP))
+ if ((sta->flags & WLAN_STA_WDS) ||
+ (sta->flags & WLAN_STA_MULTI_AP &&
+ !(hapd->conf->multi_ap & FRONTHAUL_BSS) &&
+ !(sta->flags & WLAN_STA_WPS)))
hostapd_set_wds_sta(hapd, NULL, sta->addr, sta->aid, 0);
if (sta->ipaddr)