全志平台动态mac地址解决办法记录
代码路径:lichee\linux-3.4\drivers\net\ethernet\sunxi\emac\sunxi_emac.c 在此网口驱动中找到mac获取函数:wemac_get_macaddr()
更改后的代码为:
static void wemac_get_macaddr(wemac_board_info_t *db)
{
struct net_device *ndev = db->ndev;
int i,flag=1,result=0;
char *p = mac_str;
struct file *filp=NULL;
mm_segment_t old_fs;
old_fs = get_fs();
set_fs(KERNEL_DS);
set_fs(get_ds());
filp = filp_open("/data/existMacAddr",O_CREAT|O_RDWR,0666);//由于内核中此驱动挂起较早,多数文件系统还没挂载,因此如果将模块打到内核中,是实现不了目的的,我暂时选择将模块开机挂载,不打入内核,望大牛看到此文,能给出更好的文件路径方案,最好是能打入内核。
if(IS_ERR(filp)){
printk("open /data/existMacAddr err,maybe it's exist!!");
goto err1;
}
for(i=0;i<6;i++,p++)
ndev->dev_addr[i] = simple_strtoul(p, &p, 16);
#ifdef DYNAMIC_MAC_SYSCONFIG
script_item_u emac_mac;
if(SCIRPT_ITEM_VALUE_TYPE_STR != script_get_item("dynameic", "MAC", &emac_mac)){
printk(KERN_WARNING "In sysconfig.fex emac mac address is not valid!\n");
} else if(!is_valid_ether_addr(ndev->dev_addr)){
emac_mac.str[12] = '\0';
for (i=0; i < 6; i++){
char emac_tmp[3]=":::";
memcpy(emac_tmp, (char *)(emac_mac.str+i*2), 2);
emac_tmp[2]=':';
ndev->dev_addr[i] = simple_strtoul(emac_tmp, NULL, 16);
}
}
#endif
if(!(filp->f_op)|| !(filp->f_op->read) || !(filp->f_op->write)){
printk("file /data/existMacAddr cann't readable or writable?\n");
goto err1;
}
char cmp_buf[6] = {0};
filp->f_op->llseek(filp, 0, 0);
int ret = filp->f_op->read(filp,ndev->dev_addr,6,&filp->f_pos);
if(ret<0) {
printk("read file error?\n");
goto err1;
}
printk("result of file [/data/existMacAddr] read=%d\n",ret);
if(0 != memcmp(ndev->dev_addr,cmp_buf,6))
{
flag = 0;
printk(" /data/existMacAddr is not empty!\n");
}
if (!is_valid_ether_addr(ndev->dev_addr) && flag){
eth_hw_addr_random(ndev);
if(filp->f_op->write(filp,ndev->dev_addr,strlen(ndev->dev_addr),&filp->f_pos)<0){
printk("write file error?\n");
goto err1;
}
}
if (!is_valid_ether_addr(ndev->dev_addr))
printk(KERN_ERR "Invalid MAC address. Please set it using ifconfig\n");
err1:
set_fs(old_fs);
if(filp_close(filp,NULL))
printk("Config_FileOperation:close file fail\n");
};
全志平台动态mac地址解决办法记录相关推荐
- 修改mac地址导致计算机无法上网,win7系统更换MAC地址解决无法连接网络问题的解决方法...
很多小伙伴都遇到过win7系统更换MAC地址解决无法连接网络问题的困惑吧,一些朋友看过网上零散的win7系统更换MAC地址解决无法连接网络问题的处理方法,并没有完完全全明白win7系统更换MAC地址解 ...
- 使用echart的雷达图的时候,如果文字越界的解决办法记录,标签文字自动换行
使用echart的雷达图的时候,如果文字越界的解决办法记录,标签文字自动换行 前几天项目中有一个图表的是用echart生成的,遇到一个问题,就是在手机端显示的售时候,如果文字太长就会超出div,之前的 ...
- Microsoft Edge 和 Google Chrome更新后,出现错误代码:STATUS_STACK_BUFFER_OVERRUN,有效解决办法记录【已解决】
Microsoft Edge 和 Google Chrome更新后,出现错误代码:STATUS_STACK_BUFFER_OVERRUN,有效解决办法记录[已解决] Google Chrome网页错误 ...
- centos ifconfig不显示IP地址解决办法之一(亲测有效)
centos ifconfig不显示IP地址解决办法之一(亲测有效) 原因 解决: 虚拟机使用命令ifconfig不显示IP地址,情况如下(盗个图) 原因 我们的虚拟机网络服务没有设置为开机自启动 解 ...
- AirPods 无法连接到iPhone、iPad或Mac的解决办法
macw小编带来 AirPods 无法连接到 iPhone.iPad或Mac的解决办法,希望对大家有所帮助. 无法连接到 iPhone.iPad 或 iPod touch 1.确保您的 iOS 或 i ...
- 以太网2出现两个ip地址-解决办法
现象: 有线连接上后,出现两个ip地址,一个手动获取一个自动获取,在cmd命令行中输入ipconfig,显示自动获取的ip地址,导致不能连接内网 目标: cmd输入ipconfig,只显示 手动输入的 ...
- VMware检测不到vulnhub靶机IP地址解决办法
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 vulnhub靶机检测不到IP地址解决办法 原因一:查看网络适配器是否为NAT模式 原因二:虚拟网络编辑器配置出错 原因三:靶机网卡配 ...
- ubuntu20.04耳机和外放同时有声音,解决办法记录。
ubuntu20.04耳机和外放同时有声音,解决办法记录!!! 对耳机和外放同时有声音的解决办法,网上说了很多,但不是很具体,这里简单描述一下 1.首先在终端中输入: alsamixer 2.在进入后 ...
- ubuntu文件管理器打不开,出现假死现象的解决办法记录
ubuntu文件管理器打不开,出现假死现象的解决办法记录 无论新建多少窗口,多少次双击一直出现这种文件管理器界面,一直进不去. 经了解, 一般是nautilus出错了,才出现假死现象,可以卸载之后重新 ...
- 遇到的Exception/error及解决办法记录汇总
一.java.net.SocketException 1.java.net.SocketException:Connection reset 首先,如果一端的Socket被关闭(或主动关闭,或因为异常 ...
最新文章
- DllMain中不当操作导致死锁问题的分析--导致DllMain中死锁的关键隐藏因子
- Docker run 命令【转】
- [Google Guava] 3-缓存
- 现代密码学8.1--密码学所涉及的数论和群论
- ORACLE中关于外键缺少索引的探讨和总结
- 根据经纬度算出两个位置之间的距离
- eclipse启动web项目时,spring会初始化两次
- mysql 新增返回主键自增id_详解mysql插入数据后返回自增ID的七种方法
- vs2008上QT中增加智能提示功能
- python面试题No2
- 最近的一些感想(关于移动客户端开发android,ios)
- 动态为GridView控件创建列
- mysql大于等于怎么写_MySQL 对于千万级的大表要怎么优化?我写了6000字的深度解读...
- exception java doc_在javadoc中,標簽@throws和@exception之間有什么區別?
- Centos 7.X 安装 supervisord
- Jquery 网站保存信息提示消息实现,提示后自动消失
- SILVACO 学习笔记第一章
- 无损音频wav音乐格式怎么转换成mp3格式
- cmake未找到命令解决
- 支付宝(Alipay)支付,超详细使用教程讲解!
热门文章
- python选股软件编写
- c++一本通在线测评网站 1002:输出第二个整数
- 屡败屡战,攻克中项(系统集成项目管理师考试经历分享)
- linux麦克风增强软件,如何在Windows,Mac,Linux中消除背景麦克风噪音
- 图像处理之灰度化和二值化
- 异常点检测算法分析与选择
- 海思 Hi3559A Sample_vdec视频解码及编译
- 北京地区能收到的FM广播电台频率表(基于手机)
- 大数据驱动教育变革,产教融合呈现新高度——数据科学与大数据技术教育分论坛顺利召开...
- Web项目 引入Editormd