/*
* Copyright <2014> Alcatel-Lucent
* All Rights Reserved
* This is unpublished proprietary source code of Alcatel-Lucent.
* The copyrightr notice above does not evidence any actual
* or intended publication of such source code.
* Authors: Yu.Lu<Yu.C.Lu@alcatel-sbell.com.cn>
*
* Not to be disclosed or used except in accordance with applicable
* agreements
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <linux/mii.h>
#include <unistd.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <net/if.h>
#include <linux/sockios.h>
#include <netinet/in.h>
#define reteck(ret) \
if(ret < 0){ \
printf("[%s()#%d] %m!,ret = 0x%x\n", __func__, __LINE__, ret); \
goto err; \
}
#define help() \
printf("mdio:\n"); \
printf("read operation: mdio reg_addr\n"); \
printf("write operation: mdio reg_addr value\n"); \
printf("For example:\n"); \
printf("mdio eth0 1\n"); \
printf("mdio eth0 0 0x12\n\n"); \
exit(0);
int sockfd;
int main(int argc, char *argv[]){
if(argc == 1 || !strcmp(argv[1], "-h")){
help();
}
struct mii_ioctl_data *mii = NULL;
struct ifreq ifr;
int ret;
memset(&ifr, 0, sizeof(ifr));
strncpy(ifr.ifr_name, argv[1], IFNAMSIZ - 1);
sockfd = socket(PF_LOCAL, SOCK_DGRAM, 0);
reteck(sockfd);
//get phy address in smi bus
ret = ioctl(sockfd, SIOCGMIIPHY, &ifr);
reteck(ret);
mii = (struct mii_ioctl_data*)&ifr.ifr_data;
if(argc == 3){
mii->reg_num = (uint16_t)strtoul(argv[2], NULL, 0);
ret = ioctl(sockfd, SIOCGMIIREG, &ifr);
reteck(ret);
printf("MDIO Read: \tphy addr: 0x%x \treg: 0x%x \tvalue : 0x%x\n", mii->phy_id, mii->reg_num, mii->val_out);
}else if(argc == 4){
mii->reg_num = (uint16_t)strtoul(argv[2], NULL, 0);
mii->val_in = (uint16_t)strtoul(argv[3], NULL, 0);
ret = ioctl(sockfd, SIOCSMIIREG, &ifr);
reteck(ret);
printf("MDIO Write: \tphy addr: 0x%x \treg: 0x%x \tvalue : 0x%x\n", mii->phy_id, mii->reg_num, mii->val_in);
}
err:
close(sockfd);
return 0;
}
Kinonoyomeo
- 粉丝: 95
- 资源: 1万+
最新资源
- Java毕业设计-ssm-vue-购物商场(源码+sql脚本+32页零基础部署图文详解+33页论文+环境工具+教程+视频+模板).zip
- Java毕业设计-ssm-vue-孩童收养信息管理(源码+sql脚本+32页零基础部署图文详解+32页论文+环境工具+教程+视频+模板).zip
- Java毕业设计-ssm-vue-果蔬商品管理系统(源码+sql脚本+32页零基础部署图文详解+36页论文+环境工具+教程+视频+模板).zip
- Java毕业设计-ssm-vue-怀旧唱片售卖系统(源码+sql脚本+32页零基础部署图文详解+33页论文+环境工具+教程+视频+模板).zip
- Java毕业设计-ssm-vue-航空信息管理系统(源码+sql脚本+32页零基础部署图文详解+29页论文+环境工具+教程+视频+模板).zip
- Java毕业设计-ssm-vue-汇编课程网站(源码+sql脚本+32页零基础部署图文详解+30页论文+环境工具+教程+视频+模板).zip
- Java毕业设计-ssm-vue-家政公司服务平台(源码+sql脚本+32页零基础部署图文详解+37页论文+环境工具+教程+视频+模板).zip
- Java毕业设计-ssm-vue-基于web办事大厅政务预约系统(源码+sql脚本+32页零基础部署图文详解+32页论文+环境工具+教程+视频+模板).zip
- Java毕业设计-ssm-vue-家乡特产网上商城(源码+sql脚本+32页零基础部署图文详解+30页论文+环境工具+教程+视频+模板).zip
- Java毕业设计-ssm-vue-江苏融汇房地产营销策划有限公司的宣传网站(源码+sql脚本+32页零基础部署图文详解+30页论文+环境工具+教程+视频+模板).zip
- Java毕业设计-ssm-vue-健身房会员管理系统(源码+sql脚本+29页零基础部署图文详解+35页论文+环境工具+教程+视频+模板).zip
- Java毕业设计-ssm-vue-教务管理系统(源码+sql脚本+32页零基础部署图文详解+33页论文+环境工具+教程+视频+模板).zip
- 源码基于Python的微信智能聊天机器人.zip
- Java毕业设计-ssm-vue-酒店客房管理系统(源码+sql脚本+32页零基础部署图文详解+31页论文+环境工具+教程+视频+模板).zip
- Java毕业设计-ssm-vue-课程辅助教学网站(源码+sql脚本+32页零基础部署图文详解+29页论文+环境工具+教程+视频+模板).zip
- Java毕业设计-ssm-vue-课程管理系统(源码+sql脚本+32页零基础部署图文详解+37页论文+环境工具+教程+视频+模板).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0