diff options
Diffstat (limited to 'package/hostapd/patches/320-wds_fix.patch')
-rw-r--r-- | package/hostapd/patches/320-wds_fix.patch | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/package/hostapd/patches/320-wds_fix.patch b/package/hostapd/patches/320-wds_fix.patch new file mode 100644 index 0000000000..984af95bd0 --- /dev/null +++ b/package/hostapd/patches/320-wds_fix.patch @@ -0,0 +1,28 @@ +--- a/src/drivers/driver_nl80211.c ++++ b/src/drivers/driver_nl80211.c +@@ -4987,9 +4987,11 @@ static int i802_set_wds_sta(void *priv, + wpa_printf(MSG_DEBUG, "nl80211: Set WDS STA addr=" MACSTR + " aid=%d val=%d name=%s", MAC2STR(addr), aid, val, name); + if (val) { +- if (nl80211_create_iface(drv, name, NL80211_IFTYPE_AP_VLAN, ++ if (!if_nametoindex(name)) { ++ if (nl80211_create_iface(drv, name, NL80211_IFTYPE_AP_VLAN, + NULL, 1) < 0) +- return -1; ++ return -1; ++ } + linux_set_iface_flags(drv->ioctl_sock, name, 1); + return i802_set_sta_vlan(priv, addr, name, 0); + } else { +--- a/src/ap/ieee802_11.c ++++ b/src/ap/ieee802_11.c +@@ -1659,6 +1659,9 @@ static void handle_assoc_cb(struct hosta + "Could not add STA to kernel driver"); + } + ++ if (sta->flags & WLAN_STA_WDS) ++ hapd->drv.set_wds_sta(hapd, sta->addr, sta->aid, 1); ++ + if (sta->eapol_sm == NULL) { + /* + * This STA does not use RADIUS server for EAP authentication, |