'netifd' treats all devices with a "." in their name as vlan devices.
Modify the name of virtual/WDS interfaces created by broadcom-wl to use
an "_" instead of a ".", so they will be treated as simple devices
by 'netifd'.

Signed-off-by: Nathan Hintz <nlhi...@hotmail.com>
---
 .../broadcom-wl/files/etc/hotplug.d/net/20-broadcom_wds       |  2 +-
 package/kernel/broadcom-wl/files/lib/wifi/broadcom.sh         |  4 ++--
 package/kernel/broadcom-wl/patches/013-interface-name.patch   | 11 +++++++++++
 3 files changed, 14 insertions(+), 3 deletions(-)
 create mode 100644 package/kernel/broadcom-wl/patches/013-interface-name.patch

diff --git a/package/kernel/broadcom-wl/files/etc/hotplug.d/net/20-broadcom_wds 
b/package/kernel/broadcom-wl/files/etc/hotplug.d/net/20-broadcom_wds
index 0a563c2..24853f3 100644
--- a/package/kernel/broadcom-wl/files/etc/hotplug.d/net/20-broadcom_wds
+++ b/package/kernel/broadcom-wl/files/etc/hotplug.d/net/20-broadcom_wds
@@ -56,6 +56,6 @@ setup_broadcom_wds() {
 
 case "$ACTION" in
        add|register)
-               [ "${INTERFACE%%0.*}" = wds ] && setup_broadcom_wds "$INTERFACE"
+               [ "${INTERFACE%%0_*}" = wds ] && setup_broadcom_wds "$INTERFACE"
        ;;
 esac
diff --git a/package/kernel/broadcom-wl/files/lib/wifi/broadcom.sh 
b/package/kernel/broadcom-wl/files/lib/wifi/broadcom.sh
index 4d81bcb..26ebea5 100644
--- a/package/kernel/broadcom-wl/files/lib/wifi/broadcom.sh
+++ b/package/kernel/broadcom-wl/files/lib/wifi/broadcom.sh
@@ -45,7 +45,7 @@ scan_broadcom() {
 
        local _c=
        for vif in ${adhoc_if:-$sta_if $ap_if $mon_if}; do
-               config_set "$vif" ifname "${device}${_c:+.$_c}"
+               config_set "$vif" ifname "${device}${_c:+_$_c}"
                _c=$((${_c:-0} + 1))
        done
        config_set "$device" vifs "${adhoc_if:-$sta_if $ap_if $mon_if}"
@@ -102,7 +102,7 @@ disable_broadcom() {
                include /lib/network
 
                # make sure the interfaces are down and removed from all bridges
-               for dev in $device ${device}.1 ${device}.2 ${device}.3; do
+               for dev in $device ${device}_1 ${device}_2 ${device}_3; do
                        ifconfig "$dev" down 2>/dev/null >/dev/null && {
                                unbridge "$dev"
                        }
diff --git a/package/kernel/broadcom-wl/patches/013-interface-name.patch 
b/package/kernel/broadcom-wl/patches/013-interface-name.patch
new file mode 100644
index 0000000..8aa0ca2
--- /dev/null
+++ b/package/kernel/broadcom-wl/patches/013-interface-name.patch
@@ -0,0 +1,11 @@
+--- a/driver/wl_linux.c
++++ b/driver/wl_linux.c
+@@ -1556,7 +1556,7 @@ wl_add_if(wl_info_t *wl, struct wlc_if*
+ 
+       wl_if_setup(wlif->dev);
+ 
+-      sprintf(wlif->dev->name, "%s%d.%d", devname, wl->pub->unit, 
wlif->subunit);
++      sprintf(wlif->dev->name, "%s%d_%d", devname, wl->pub->unit, 
wlif->subunit);
+       if (remote)
+               bcopy(remote, &wlif->remote, ETHER_ADDR_LEN);
+ 
-- 
1.8.3.1
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to