diff options
author | Shiji Yang <yangshiji66@qq.com> | 2022-03-15 00:16:15 +0800 |
---|---|---|
committer | Christian Lamparter <chunkeey@gmail.com> | 2022-03-26 02:02:44 +0100 |
commit | 2e6d19ee32399e37c7545aefc57d41541a406d55 (patch) | |
tree | 4c1db4f7f6e2dd0f2bcce741d92abdbff8a1b070 /target/linux | |
parent | 638771509383cf36617c49b9cc1e0c4a9aedaa0d (diff) | |
download | upstream-2e6d19ee32399e37c7545aefc57d41541a406d55.tar.gz upstream-2e6d19ee32399e37c7545aefc57d41541a406d55.tar.bz2 upstream-2e6d19ee32399e37c7545aefc57d41541a406d55.zip |
ramips: fix wifi mac address of HiWiFi series devices
For HiWiFi series devices, label_mac can be read from bdinfo partition,
and lan_mac, wlan2g_mac are same as the label_mac. Converting label_mac
to wlan5g_mac only needs to unset 6th bit. (It seems that all HiWiFi's
label_mac start with D4:EE)
For example:
label D4:EE:07:32:84:88
lan D4:EE:07:32:84:88
wan D4:EE:07:32:84:89
wlan2g D4:EE:07:32:84:88
wlan5g D0:EE:07:32:84:88
Tested on HiWiFi HC5661.
Signed-off-by: Shiji Yang <yangshiji66@qq.com>
Diffstat (limited to 'target/linux')
3 files changed, 55 insertions, 0 deletions
diff --git a/target/linux/ramips/mt7620/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac b/target/linux/ramips/mt7620/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac new file mode 100644 index 0000000000..aa0ad99158 --- /dev/null +++ b/target/linux/ramips/mt7620/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac @@ -0,0 +1,26 @@ +[ "$ACTION" == "add" ] || exit 0 + +PHYNBR=${DEVPATH##*/phy} + +[ -n $PHYNBR ] || exit 0 + +. /lib/functions.sh +. /lib/functions/system.sh + +board=$(board_name) + +case "$board" in + hiwifi,hc5661) + label_mac=$(mtd_get_mac_ascii bdinfo "Vfac_mac ") + [ "$PHYNBR" = "0" ] && [ -n "$label_mac" ] && \ + echo -n "$label_mac" > /sys${DEVPATH}/macaddress + ;; + hiwifi,hc5761|\ + hiwifi,hc5861) + label_mac=$(mtd_get_mac_ascii bdinfo "Vfac_mac ") + [ "$PHYNBR" = "1" ] && [ -n "$label_mac" ] && \ + echo -n "$label_mac" > /sys${DEVPATH}/macaddress + [ "$PHYNBR" = "0" ] && [ -n "$label_mac" ] && \ + macaddr_unsetbit "$label_mac" 6 > /sys${DEVPATH}/macaddress + ;; +esac diff --git a/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac b/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac index d018c1de1b..2a47f926be 100644 --- a/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac +++ b/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac @@ -32,6 +32,13 @@ case "$board" in [ "$PHYNBR" = "1" ] && \ macaddr_add "$(mtd_get_mac_binary factory 0x4)" 1 > /sys${DEVPATH}/macaddress ;; + hiwifi,hc5962) + label_mac=$(mtd_get_mac_ascii bdinfo "Vfac_mac ") + [ "$PHYNBR" = "0" ] && [ -n "$label_mac" ] && \ + echo -n "$label_mac" > /sys${DEVPATH}/macaddress + [ "$PHYNBR" = "1" ] && [ -n "$label_mac" ] && \ + macaddr_unsetbit "$label_mac" 6 > /sys${DEVPATH}/macaddress + ;; iptime,a3002mesh|\ iptime,a3004t) hw_mac_addr="$(mtd_get_mac_binary factory 0x4)" diff --git a/target/linux/ramips/mt76x8/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac b/target/linux/ramips/mt76x8/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac new file mode 100644 index 0000000000..b8f8faee9c --- /dev/null +++ b/target/linux/ramips/mt76x8/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac @@ -0,0 +1,22 @@ +[ "$ACTION" == "add" ] || exit 0 + +PHYNBR=${DEVPATH##*/phy} + +[ -n $PHYNBR ] || exit 0 + +. /lib/functions.sh +. /lib/functions/system.sh + +board=$(board_name) + +case "$board" in + hiwifi,hc5661a|\ + hiwifi,hc5761a|\ + hiwifi,hc5861b) + label_mac=$(mtd_get_mac_ascii bdinfo "Vfac_mac ") + [ "$PHYNBR" = "0" ] && [ -n "$label_mac" ] && \ + echo -n "$label_mac" > /sys${DEVPATH}/macaddress + [ "$PHYNBR" = "1" ] && [ -n "$label_mac" ] && \ + macaddr_unsetbit "$label_mac" 6 > /sys${DEVPATH}/macaddress + ;; +esac |