IPQ40xx修改默认的MAC地址

QSDK默认情况下是从ART分区读入MAC地址并初始化系统,主要通过fdt_fixup_ethernet函数修改fdt的mac对应的local-mac-address实现,修改后的代码默认从ethaddr读取mac地址并初始化系统,如果ethaddr的地址无效则继续使用ART分区的地址,这个方案只使用LAN口和WAN的MAC地址,无线的MAC地址可在系统起来后从LAN作为基地址计算写入UCI文件即可,此代码是QSDK SPF11.1的uboot修改方案

复制代码
Index: board/qca/arm/common/ethaddr.c
===================================================================
--- board/qca/arm/common/ethaddr.c	(revision 108)
+++ board/qca/arm/common/ethaddr.c	(working copy)
@@ -103,6 +103,43 @@
 	uchar *mac_addr;
 	char ethaddr[16] = "ethaddr";
 	char mac[64];
+
+	/*
+ 	 * if ethaddr valid
+	 */
+	if (eth_getenv_enetaddr("ethaddr", enetaddr)) {
+		mac_addr = enetaddr;
+		snprintf(mac, sizeof(mac), "%x:%x:%x:%x:%x:%x",
+			mac_addr[0], mac_addr[1],
+			mac_addr[2], mac_addr[3],
+			mac_addr[4], mac_addr[5]);
+		printf("ENV Base MAC: %s\n", mac);
+		for (i = 0; i < CONFIG_IPQ_NO_MACS; i++) {
+			if (0 == i) {
+				continue;
+			}
+			if (0xFF == mac_addr[5]) {
+				mac_addr[5] = 0x00;
+				if (0xFF == mac_addr[4]) {
+					mac_addr[4] = 0x00;
+					mac_addr[3] = mac_addr[3] + 1;
+				} else {
+					mac_addr[4] = mac_addr[4] + 1;
+				}
+			} else {
+				mac_addr[5] = mac_addr[5] + 1;
+			}
+			snprintf(mac, sizeof(mac), "%x:%x:%x:%x:%x:%x",
+				mac_addr[0], mac_addr[1],
+				mac_addr[2], mac_addr[3],
+				mac_addr[4], mac_addr[5]);
+			snprintf(ethaddr, sizeof(ethaddr), "eth%daddr", i);
+			setenv(ethaddr, mac);
+			printf("Set tmp env %s=%s From ENV\n", ethaddr, mac);
+		}
+		return;
+	}
+
 	/* Get the MAC address from ART partition */
 	ret = get_eth_mac_address(enetaddr, CONFIG_IPQ_NO_MACS);
 	for (i = 0; (ret >= 0) && (i < CONFIG_IPQ_NO_MACS); i++) {
@@ -120,6 +157,7 @@
 					mac_addr[2], mac_addr[3],
 					mac_addr[4], mac_addr[5]);
 			setenv(ethaddr, mac);
+			printf("Set tmp env %s=%s From ART\n", ethaddr, mac);
 		}
 		snprintf(ethaddr, sizeof(ethaddr), "eth%daddr", (i + 1));
 	}
复制代码

 

posted on   sudochen  阅读(432)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示