• RK: rk3288 以太网mac 地址 生成


    一.先上一份日志 

    1.1.eth_mac_idb

     lowmemorykiller: lowmem_shrink: convert oom_adj to oom_score_adj:
     lowmemorykiller: oom_adj 0 => oom_score_adj 0
     lowmemorykiller: oom_adj 1 => oom_score_adj 58
     lowmemorykiller: oom_adj 2 => oom_score_adj 117
     lowmemorykiller: oom_adj 3 => oom_score_adj 176
     lowmemorykiller: oom_adj 9 => oom_score_adj 529
     lowmemorykiller: oom_adj 15 => oom_score_adj 1000
     acc_open
     acc_release
     phy_power_on: enable = 1
     11111111  err = 0
     Read the Ethernet MAC address from IDB:e2:76:1e:08:31:07
     eth0: device MAC address e2:76:1e:08:31:07
     phy_rtl8201f_led_fixup in
     libphy: stmmac: probed
     eth0: PHY ID 001cc816 at 0 IRQ 0 (stmmac-0:00) active
    

    1.2.etherm_addr_from_cpuid

     lowmemorykiller: lowmem_shrink: convert oom_adj to oom_score_adj:
     lowmemorykiller: oom_adj 0 => oom_score_adj 0
     lowmemorykiller: oom_adj 1 => oom_score_adj 58
     lowmemorykiller: oom_adj 2 => oom_score_adj 117
     lowmemorykiller: oom_adj 3 => oom_score_adj 176
     lowmemorykiller: oom_adj 9 => oom_score_adj 529
     lowmemorykiller: oom_adj 15 => oom_score_adj 1000
     acc_open
     acc_release
     phy_power_on: enable = 1
     11111111  err = 0
     Read the Ethernet MAC address from IDB:00:00:00:00:00:00
     etherm_addr_from_cpuid system_serial_low=75cef2b1,system_serial_high=4666831a
     the vendor enable_mac=0x1
     use mac from vendor!
     the vendor mac e2:76:1e:08:31:23
     eth0: device MAC address e2:76:1e:08:31:23
     phy_rtl8201f_led_fixup in
     libphy: stmmac: probed
     eth0: PHY ID 001cc816 at 0 IRQ 0 (stmmac-0:00) active
    

     二.分析一下源码  驱动读取MAC address流程    

    stmmac_check_ether_addr
               eth_mac_idb
               etherm_addr_from_cpuid
               eth_hw_addr_random    

    2.1.Z:K_R32X_RK3288_ANDROID5.1K_R32X_RK3288_ANDROID5.1kerneldrivers etethernet ockchipgmacstmmac_main.c

    static void stmmac_check_ether_addr(struct stmmac_priv *priv)
    {
    	if (!is_valid_ether_addr(priv->dev->dev_addr)) {
    		priv->hw->mac->get_umac_addr((void __iomem *)
    					     priv->dev->base_addr,
    					     priv->dev->dev_addr, 0);
    		if (!is_valid_ether_addr(priv->dev->dev_addr))
                   //rk 烧写工具 eth_mac_idb(priv->dev->dev_addr); if (!is_valid_ether_addr(priv->dev->dev_addr))
                  //cpuid 计算 lan Mac 地址 etherm_addr_from_cpuid(priv->dev->dev_addr); if(!is_valid_ether_addr(priv->dev->dev_addr))
                  //随机生成 eth_hw_addr_random(priv->dev); } pr_warn("%s: device MAC address %pM ", priv->dev->name, priv->dev->dev_addr); }

    2.2. Z:K_R32X_RK3288_ANDROID5.1K_R32X_RK3288_ANDROID5.1kerneldrivers etethernet ockchipeth_mac.c 

    2.2.1.eth_mac_idb  

    int eth_mac_idb(u8 *eth_mac)
    {
    	int i;
    	int err = 0;
    	memset(eth_mac, 0, 6);
    	err = eth_mac_read_from_IDB(eth_mac);
    	if (err)
    		return -1;
    	printk("Read the Ethernet MAC address from IDB:");
    	for (i = 0; i < 5; i++)
    		printk("%2.2x:", eth_mac[i]);
    	printk("%2.2x
    ", eth_mac[i]);
    
    	return 0;
    }
    

    2.2.2.etherm_addr_from_cpuid md5 加密

     // Apply md5 process to system_serial_mac  

      

      

  • 相关阅读:
    TP5 try{}catch{}异常捕获不到 解决办法
    layui2.5 开关在confirm确认了之后在关/开
    JQuery 表单textarea控制字数
    Navicat Premium从远程Mysql数据库复制到本地数据库的方法
    dedecmsV5.7 任意文件上传漏洞修复
    PHP 利用PHPExcel到处数据到Excel;还有导出数据乱码的解决方案。
    Mac Pro 2017款自带php与用brew重装PHP后的地址
    用js传递当前页面的url,丢失了&后面的参数 解决办法
    PHP 超全局变量之$_SERVER
    Linux while和for循环简单分析
  • 原文地址:https://www.cnblogs.com/crushgirl/p/14592652.html
Copyright © 2020-2023  润新知