本文我们主要来分析.probe的第一个操作函数组dm9000_netdev_ops(一个结构体),贴出该结构体代码如下
这里定义了操作net_device的一些重要操作,分别介绍如下:
www.cj-pilot.com.cn9000_open
www.cj-pilot.com.cn9000_stop
其工作与open函数基本是相对应的,主要是资源的释放和停止设备发送队列。
www.cj-pilot.com.cn9000_start_xmit
主要功能是将从上层传入的数据发送到media中。
www.cj-pilot.com.cn9000_timeout
看门狗被触发后调用此函数,主要执行设备的重启动作。
www.cj-pilot.com.cn9000_hash_table
核心函数dm9000_hash_table_unlocked(dev)完成设置组播地址的功能。
www.cj-pilot.com.cn9000_ioctl
核心函数 generic_mii_ioctl(&dm->mii, if_mii(req), cmd, NULL)代码如下
一个非常熟悉的switch case 结构函数,具体完成的动作这里不细讲啦~
7.eth_change_mtu
修改MTU值
8.eth_validate_addr
判断地址是否全0xff或全0,非法
9.eth_mac_addr
把addr的sa_data成员绑定到设备地址
www.cj-pilot.com.cn9000_poll_controller
函数dm9000_interrupt如下
到此为止,已经粗略的介绍完dm9000_netdev_ops的各个重要的操作。本博文应该是这个系列的倒数第二篇了,最后一篇用来分析dm9000_ethtod_ops的操作,敬请关注~
本系列课程链接地址
DM9000网卡驱动(1)http://www.cj-pilot.com.cn/jarvis_xian/archive/2011/06/10/6537446.aspx
DM9000网卡驱动(2)http://www.cj-pilot.com.cn/jarvis_xian/archive/2011/06/12/6539931.aspx
DM9000网卡驱动(3)http://www.cj-pilot.com.cn/jarvis_xian/archive/2011/06/13/6542411.aspx
DM9000网卡驱动(4)http://www.cj-pilot.com.cn/jarvis_xian/archive/2011/06/15/6545109.aspx
DM9000网卡驱动(5)http://www.cj-pilot.com.cn/jarvis_xian/archive/2011/06/15/6547203.aspx