免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4047 | 回复: 4
打印 上一主题 下一主题

【转】《Linux设备驱劝程序第三版》网卡驱动的注释笔记 [复制链接]

论坛徽章:
0
1 [报告]
发表于 2008-08-22 13:59 |显示全部楼层

回复 #1 dreamice 的帖子

LZ你好,请教一个关于应用程序中自动检测设备是否插网线的问题,我现在不确认是否跟网卡的驱动有关系的;

现象是这样的,我之前使用的开发板上有两个网卡,但是实际测试使用的时候只用一个网卡,网卡芯片是DM9000的,驱动
是动态加载的,然后我做了个应用程序,里面实现了自动检测网口是否插网线的功能,经过实际的测试,软件能够自动检测出
设备是否插网线;

现在公司刚买回来一些新的板子,上面的网卡(AC101)驱动是编译进内核的,内核映像文件由经销商提供的,我们没有办法接触到驱动源码,我把自己的应用程序写进板子后自动检测网卡的功能就不能用了,一直认为网口没有插网线;

另外我还在其他的硬件上也测试过我的应用软件,网卡也是(AC101)的,测试后发现也是好的;

我想问下据此是否可以确认跟网卡的驱动有关呢?


另外我还想问下如何在网卡驱动里加支持IFCONFIG命令配置网络参数的功能呢?

论坛徽章:
0
2 [报告]
发表于 2008-08-22 14:26 |显示全部楼层
哦,那么LZ帮忙分析下下面这个代码为什么不能在那个板子上检测到是否插网线的功能好啊:


short get_flags(const char *dev)
{
        struct ifreq ifr;

        bzero((char *)&ifr, sizeof(ifr));
        strcpy(ifr.ifr_name, dev);
        
        if (ioctl(tSock,SIOCGIFFLAGS, (char *)&ifr) < 0){
                close(tSock);
            return(0);
        }
        
         
        return(ifr.ifr_flags);
}

void * dectwire(void *t)
{               

        while(1)
        {       
                if (((get_flags("eth0")) & IFF_RUNNING) == 0){                       
                        printf("---------------------------------------------wireless---------------------------\n");
                }else{               
                        printf("---------------------------------------------wire---------------------------\n");               
                }               
               
                sleep(1);
        }
}

论坛徽章:
0
3 [报告]
发表于 2008-08-22 14:36 |显示全部楼层
一直打印出这个,不管有没有插网线,
          printf("---------------------------------------------wireless---------------------------\n");

因为驱动程序不是我们自己做的,不知道是否支持ioctl的,我可以确认传递的参数是正确的,因为我在两种不同的机器上测试过此功能的;

论坛徽章:
0
4 [报告]
发表于 2008-08-22 14:58 |显示全部楼层
LZ,上面的关于ifconfig命令使用的问题也请帮忙分析下吧:

现象是这样的:我在之前的开发板上可以同ifconfig命令来设置设备的MAC地址,以及其它一些网络参数,如IP地址等;

                     现在用这个新的板子的时候,ifconfig命令可以设置IP地址等,但是网卡的MAC导致却无法设置;

                     另外我在linux的字符界面下敲man ifconfig的时候有下面的提示:
                                      
                                       hw class address
              Set the hardware address of this interface, if the device driver
              supports this operation.
  The keyword must be  followed  by  the
              name of the hardware class and the printable ASCII equivalent of
              the hardware  address.   Hardware  classes  currently  supported
              include  ether  (Ethernet), ax25 (AMPR AX.25), ARCnet and netrom
              (AMPR NET/ROM).

这些是否可以证明ifconfig命令不能设置MAC地址跟驱动有关系呢?

论坛徽章:
0
5 [报告]
发表于 2008-08-22 15:15 |显示全部楼层
哦,是这样的啊,那是不是可以通过修改驱动来让此功能可以使用呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP