请教网卡中的中断问题
大家好,我最近在研究网卡驱动,看了很多文章都说,网卡在接收到报文后会产生中断,从而调用中断处理函数,于是我在中断处理函数中加入printk打印日志,发现当我把网线拔掉之后,也就是根本没有报文接收到的情况下,中断处理函数仍然会被不断的调用。请问这是什么在调用它呢?是什么在不停中断呢?
PS.我研究的是e1000的网卡,驱动比较新,其中的中断处理函数为e1000_intr()
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
我觉得是这样的,虽然拔掉了网线,但是网卡还是存在的,且接通了电源,所以属于正常工作状态的。
中断的发生可能基于一个原因:就是上层仍可能会发送数据包出去(没有网线就只是把数据包丢到网口),这样发送结束仍旧会产生中断。
我建议你看一下e1000手册,了解清楚中断发生的条件,这个是解决疑惑的关键。等你把结果告知出来。
谢谢版主的回答,你说的这个原因我也想到过,就是不清楚发送数据会调用中断处理函数吗?
PS.我的网卡工作在NAPI模式下
应该有一个发包结束的中断,就是说包成功发送出去后,会有一个中断,告知已发送成功。我觉得应该是这歌原因。
哦,如果是这样的话也是有可能的,因为我对网卡发送没有研究过,所以不清楚,我不知道发送也可能引发中断,呵呵。
应该是这个问题。
通常,发送网络数据包的时候,如果此时网卡正在发送数据,那么只要把数据包发送到发送队列就是了;
如果网卡此时并没有发送数据,则需要把数据包投递到网卡,触发执行包的发送;包发送完了,肯定需要通知内核,这就是发送结束中断吧。
恩,谢谢啦