zoukankan      html  css  js  c++  java
  • 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  

      

      

  • 相关阅读:
    使用SecureCRTP 连接生产环境的web服务器和数据库服务器
    CSS之浮动
    CSS之定位
    Session的过期时间如何计算?
    浏览器关闭后,Session会话结束了么?
    Spring事务注意点
    Lucene 的索引文件锁原理
    Mysql数据库的触发程序
    记一次jar包冲突
    关于jvm的OutOfMemory:PermGen space异常的解决
  • 原文地址:https://www.cnblogs.com/crushgirl/p/14592652.html
Copyright © 2011-2022 走看看