fix: save mac address
authorHan Gao <gaohan@iscas.ac.cn>
Thu, 13 Jul 2023 23:02:31 +0000 (07:02 +0800)
committerHan Gao <rabenda.cn@gmail.com>
Fri, 14 Jul 2023 12:30:10 +0000 (20:30 +0800)
Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
board/thead/light-c910/light.c

index 48fd41a9f577f3448c3e677202545bbd2c8f6771..88ddbdfc075211a278cadecef38a1a85200ffe2b 100644 (file)
@@ -1867,45 +1867,37 @@ static void light_usb_boot_check(void)
 #endif
 
        run_command("env default -a -f", 0);
-       run_command("env save", 0);
+       env_save();
        run_command("run gpt_partition", 0);
        run_command("fastboot usb 0", 0);
 }
 
 static void light_mac_vaild_check(void)
 {
-       uchar env_enetaddr[6]={0};
-       uchar env_enet1addr[6]={0};
+       uchar env_enetaddr[6];
+       uchar env_enet1addr[6];
        int env_ethaddr_flag,env_eth1addr_flag;
 
        /*Get this version ethaddr(mac addr) env,which follows one board, trans to next version env*/
        env_ethaddr_flag  = eth_env_get_enetaddr_by_index("eth", 0, env_enetaddr);
        env_eth1addr_flag = eth_env_get_enetaddr_by_index("eth", 1, env_enet1addr);
 
-       /*If mac addr in last version env  is valid, before save,inherit env mac addr */
-       if(env_ethaddr_flag){
-               eth_env_set_enetaddr_by_index("eth", 0, env_enetaddr);
-               run_command("printenv ethaddr",0);
-       }else{
+       if (!env_ethaddr_flag || !env_eth1addr_flag) {
                net_random_ethaddr(env_enetaddr);
+               if (env_enetaddr[5] == (uchar)(0xff)) {
+                       env_enetaddr[5] = 0xfe;
+               }
                eth_env_set_enetaddr_by_index("eth", 0, env_enetaddr);
                env_enetaddr[5] += 0x01;
                eth_env_set_enetaddr_by_index("eth", 1, env_enetaddr);
-               //printf("env ethaddr not exist or invalid\n");
-               printf("use random addr as fixed mac addr\n");
+               printf("Use random addr as fixed mac addr\n");
+               env_save();
        }
 
-       if(env_eth1addr_flag){
-               eth_env_set_enetaddr_by_index("eth", 1, env_enet1addr);
-               run_command("printenv eth1addr",0);
-       }else{
-               net_random_ethaddr(env_enet1addr);
-               eth_env_set_enetaddr_by_index("eth", 1, env_enet1addr);
-               env_enet1addr[5] -= 0x01;
-               eth_env_set_enetaddr_by_index("eth", 0, env_enet1addr);
-               //printf("env eth1addr not exist or invalid\n");
-               printf("use random addr as fixed mac addr\n");
-       }
+       printf("ethaddr: %s\n", env_get("ethaddr"));
+       printf("eth1addr: %s\n", env_get("eth1addr"));
+
+       return;
 }
 
 int board_late_init(void)