diff --git a/src/ap/ieee802_11.c b/src/ap/ieee802_11.c index dd5acd9c2..597a5df3c 100644 --- a/src/ap/ieee802_11.c +++ b/src/ap/ieee802_11.c @@ -907,23 +907,27 @@ void sae_accept_sta(struct hostapd_data *hapd, struct sta_info *sta) " to VLAN ID %d", MAC2STR(sta->addr), sta->sae->tmp->vlan_id); - os_memset(&vlan_desc, 0, sizeof(vlan_desc)); - vlan_desc.notempty = 1; - vlan_desc.untagged = sta->sae->tmp->vlan_id; - if (!hostapd_vlan_valid(hapd->conf->vlan, &vlan_desc)) { - wpa_printf(MSG_INFO, - "Invalid VLAN ID %d in sae_password", - sta->sae->tmp->vlan_id); - return; - } + if (!(hapd->iface->drv_flags & WPA_DRIVER_FLAGS_VLAN_OFFLOAD)) { + os_memset(&vlan_desc, 0, sizeof(vlan_desc)); + vlan_desc.notempty = 1; + vlan_desc.untagged = sta->sae->tmp->vlan_id; + if (!hostapd_vlan_valid(hapd->conf->vlan, &vlan_desc)) { + wpa_printf(MSG_INFO, + "Invalid VLAN ID %d in sae_password", + sta->sae->tmp->vlan_id); + return; + } - if (ap_sta_set_vlan(hapd, sta, &vlan_desc) < 0 || - ap_sta_bind_vlan(hapd, sta) < 0) { - wpa_printf(MSG_INFO, - "Failed to assign VLAN ID %d from sae_password to " - MACSTR, sta->sae->tmp->vlan_id, - MAC2STR(sta->addr)); - return; + if (ap_sta_set_vlan(hapd, sta, &vlan_desc) < 0 || + ap_sta_bind_vlan(hapd, sta) < 0) { + wpa_printf(MSG_INFO, + "Failed to assign VLAN ID %d from sae_password to " + MACSTR, sta->sae->tmp->vlan_id, + MAC2STR(sta->addr)); + return; + } + } else { + sta->vlan_id = sta->sae->tmp->vlan_id; } } #endif /* CONFIG_NO_VLAN */