aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
diff options
context:
space:
mode:
authorMikhail Zhilkin <csharper2005@gmail.com>2022-07-09 17:09:57 +0000
committerChristian Marangi <ansuelsmth@gmail.com>2022-08-19 14:44:44 +0200
commitecd8f7e294a73d56906f7edcd8206ac6e304875c (patch)
treec01b910d52c15253f49fc7cc94e8a608fee8cd53 /target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac
parent290ace2fe6ffbbf22c841e10d79267871f4d5748 (diff)
downloadupstream-ecd8f7e294a73d56906f7edcd8206ac6e304875c.tar.gz
upstream-ecd8f7e294a73d56906f7edcd8206ac6e304875c.tar.bz2
upstream-ecd8f7e294a73d56906f7edcd8206ac6e304875c.zip
ramips: get MAC addr from the encrypted partition (WG4хх223)
This commit resolves #10062. Adds decryption of the Arcadyan WG4xx223 configuration partition (board_data)to get base MAC address from it. As a result, after this change the hack with saving MAC addressees to u-boot-env before installation of OpenWrt is no longer necessary. This is necessary for the following devices: - Beeline Smartbox Flash (Arcadyan WG443223) - MTS WG430223 (Arcadyan WG430223) Example: +----------------+-------------------+------------------------+ | | MTS WG430223 | Beeline Smartbox Flash | +----------------+-------------------+------------------------+ | base mac (mtd) | A4:xx:xx:51:xx:F4 | 30:xx:xx:51:xx:06 | | label | A4:xx:xx:51:xx:F4 | 30:xx:xx:51:xx:09 | | LAN | A4:xx:xx:51:xx:F6 | 30:xx:xx:51:xx:09 | | WAN | A4:xx:xx:51:xx:F4 | 30:xx:xx:51:xx:06 | | WLAN_2g | A4:xx:xx:51:xx:F5 | 30:xx:xx:51:xx:07 | | WLAN_5g | A6:xx:xx:21:xx:F5 | 32:xx:xx:41:xx:07 | +----------------+-------------------+------------------------+ Collected statistic shows that the 2-4th bits of the 7th byte of the WLAN_5g MAC are the constant (see #10062 for more details): - Beeline Smartbox Flash - 100 - MTS WG430223 - 010 Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com> (cherry picked from commit a6b0d0806055a53a2538df83f8322c38ee9f3441)
Diffstat (limited to 'target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac')
-rw-r--r--target/linux/ramips/mt7621/base-files/etc/hotplug.d/ieee80211/10_fix_wifi_mac21
1 files changed, 15 insertions, 6 deletions
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 265cd2eb28..0e08fb6df3 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
@@ -10,12 +10,13 @@ PHYNBR=${DEVPATH##*/phy}
board=$(board_name)
case "$board" in
- beeline,smartbox-flash|\
- mts,wg430223)
- hw_mac_addr_ra0="$(mtd_get_mac_ascii u-boot-env ra0macaddr)"
- hw_mac_addr_rax0="$(mtd_get_mac_ascii u-boot-env rax0macaddr)"
- [ "$PHYNBR" = "0" ] && echo -n $hw_mac_addr_ra0 > /sys${DEVPATH}/macaddress
- [ "$PHYNBR" = "1" ] && echo -n $hw_mac_addr_rax0 > /sys${DEVPATH}/macaddress
+ beeline,smartbox-flash)
+ hw_mac_addr=$(macaddr_add $(mtd_get_mac_encrypted_arcadyan "board_data") 1)
+ [ "$PHYNBR" = "0" ] && echo -n "$hw_mac_addr" > /sys${DEVPATH}/macaddress
+ hw_mac_addr=$(macaddr_setbit $hw_mac_addr 26)
+ hw_mac_addr=$(macaddr_unsetbit $hw_mac_addr 27)
+ hw_mac_addr=$(macaddr_unsetbit $hw_mac_addr 28)
+ [ "$PHYNBR" = "1" ] && macaddr_setbit_la $hw_mac_addr > /sys${DEVPATH}/macaddress
;;
cudy,x6)
hw_mac_addr="$(mtd_get_mac_binary factory 0x4)"
@@ -74,6 +75,14 @@ case "$board" in
[ "$PHYNBR" = "0" ] && macaddr_add $hw_mac_addr 2 > /sys${DEVPATH}/macaddress
[ "$PHYNBR" = "1" ] && macaddr_add $hw_mac_addr 3 > /sys${DEVPATH}/macaddress
;;
+ mts,wg430223)
+ hw_mac_addr=$(macaddr_add $(mtd_get_mac_encrypted_arcadyan "board_data") 1)
+ [ "$PHYNBR" = "0" ] && echo -n "$hw_mac_addr" > /sys${DEVPATH}/macaddress
+ hw_mac_addr=$(macaddr_unsetbit $hw_mac_addr 26)
+ hw_mac_addr=$(macaddr_setbit $hw_mac_addr 27)
+ hw_mac_addr=$(macaddr_unsetbit $hw_mac_addr 28)
+ [ "$PHYNBR" = "1" ] && macaddr_setbit_la $hw_mac_addr > /sys${DEVPATH}/macaddress
+ ;;
oraybox,x3a)
if [ "$PHYNBR" = "1" ]; then
hw_mac_addr="$(mtd_get_mac_binary factory 0x4)"