Files
wlan-ap/feeds/wifi-ax/hostapd/patches/h00-003-hostapd-allow-AP_VLAN-creation-for-dynamic-VLAN.patch
Felix Fietkau 5b397d54ce wifi-ax: backport hostapd reload support
Signed-off-by: Felix Fietkau <nbd@nbd.name>
2023-08-31 16:08:34 +02:00

96 lines
3.0 KiB
Diff

commit 120f4976cdb83e421459242db7a1b41c16b772f6
Author: Sathishkumar Muruganandam <murugana@codeaurora.org>
Date: Wed Jan 13 16:51:07 2021 +0530
hostapd: allow AP_VLAN creation with wpa_psk_file having vlan_id
When WPA_DRIVER_FLAGS_VLAN_OFFLOAD is advertised from driver during
NSS offload enabled case, vlan_id is sent to mac80211 which is stored
in key_conf for dynamic VLAN support on NSS offload case.
This flag blocks the AP_VLAN creation when using wpa_psk_file with
vlan_id which is needed for dynamic VLAN support on NSS offload case.
Hence removing the check associated with _VLAN_OFFLOAD flag which is
advertised only when NSS offload is enabled to allow AP_VLAN creation.
Signed-off-by: Sathishkumar Muruganandam <murugana@codeaurora.org>
--- a/src/ap/sta_info.c
+++ b/src/ap/sta_info.c
@@ -1097,8 +1097,7 @@ int ap_sta_bind_vlan(struct hostapd_data
if (sta->vlan_id == old_vlanid)
goto skip_counting;
- if (sta->vlan_id > 0 && !vlan &&
- !(hapd->iface->drv_flags & WPA_DRIVER_FLAGS_VLAN_OFFLOAD)) {
+ if (sta->vlan_id > 0 && !vlan) {
hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,
HOSTAPD_LEVEL_DEBUG, "could not find VLAN for "
"binding station to (vlan_id=%d)",
--- a/src/ap/wpa_auth_glue.c
+++ b/src/ap/wpa_auth_glue.c
@@ -444,12 +444,8 @@ static int hostapd_wpa_auth_set_key(void
if (vlan_id > 0) {
ifname = hostapd_get_vlan_id_ifname(hapd->conf->vlan, vlan_id);
- if (!ifname) {
- if (!(hapd->iface->drv_flags &
- WPA_DRIVER_FLAGS_VLAN_OFFLOAD))
- return -1;
- ifname = hapd->conf->iface;
- }
+ if (!ifname)
+ return -1;
}
#ifdef CONFIG_TESTING_OPTIONS
@@ -945,32 +941,27 @@ static int hostapd_wpa_auth_update_vlan(
#ifndef CONFIG_NO_VLAN
struct hostapd_data *hapd = ctx;
struct sta_info *sta;
+ struct vlan_description vlan_desc;
sta = ap_get_sta(hapd, addr);
if (!sta)
return -1;
- if (!(hapd->iface->drv_flags & WPA_DRIVER_FLAGS_VLAN_OFFLOAD)) {
- struct vlan_description vlan_desc;
-
- os_memset(&vlan_desc, 0, sizeof(vlan_desc));
- vlan_desc.notempty = 1;
- vlan_desc.untagged = vlan_id;
- if (!hostapd_vlan_valid(hapd->conf->vlan, &vlan_desc)) {
- wpa_printf(MSG_INFO,
- "Invalid VLAN ID %d in wpa_psk_file",
- vlan_id);
- return -1;
- }
+ os_memset(&vlan_desc, 0, sizeof(vlan_desc));
+ vlan_desc.notempty = 1;
+ vlan_desc.untagged = vlan_id;
+ if (!hostapd_vlan_valid(hapd->conf->vlan, &vlan_desc)) {
+ wpa_printf(MSG_INFO,
+ "Invalid VLAN ID %d in wpa_psk_file",
+ vlan_id);
+ return -1;
+ }
- if (ap_sta_set_vlan(hapd, sta, &vlan_desc) < 0) {
- wpa_printf(MSG_INFO,
- "Failed to assign VLAN ID %d from wpa_psk_file to "
- MACSTR, vlan_id, MAC2STR(sta->addr));
- return -1;
- }
- } else {
- sta->vlan_id = vlan_id;
+ if (ap_sta_set_vlan(hapd, sta, &vlan_desc) < 0) {
+ wpa_printf(MSG_INFO,
+ "Failed to assign VLAN ID %d from wpa_psk_file to "
+ MACSTR, vlan_id, MAC2STR(sta->addr));
+ return -1;
}
wpa_printf(MSG_INFO,