网络设备之开启

__dev_open函数,完成对设备的启用操作,并进行一些必要初始化和通知,调用关系如下,本文主要对这几个函数进行分析;

 

在标志改变时,__dev_change_flags会对新旧标志进行检查处理,若果发现其IFF_UP标识位有所变化,则根据其原来是否处理开启状态做对应处理,若原来处理启用状态,则关闭之,若原来处理关闭状态,则开启之;

 

dev_open完成设备的启用,其首先会进行当前状态的判断,若处于关闭状态,则执行启用设备操作,并在启用后发送通知消息;

 

__dev_open为设备启用核心函数,该函数执行设备启用,设置启用标记,并且设置接收模式,排队规则等;

 

设备启用过程中,会设置接收模式,若设备实现了ndo_set_rx_mode则调用设备的该函数进行模式设置,如果设备没有实现该函数,那么将会根据单播和混杂标志进行设置;

关于该问题的详细介绍,请参考本博客的另外一篇文章:

网络设备之uc_promisc

 

上面函数分支会调用__dev_set_promiscuity函数设置混杂模式,该函数根据混杂模式计数开启或者关闭设备的混杂模式;

 

本文链接:网络设备之开启

转载声明:转载请注明来源:Linux TCP/IP Stack,谢谢!


发表评论

电子邮件地址不会被公开。 必填项已用*标注