NAPI也用process_backlog?
时间:2010-04-19
来源:互联网
今天我在跟踪e1000驱动的NAPI流程时,无意中发现在系统启动的过程中,虽然采用NAPI方式,但还是会使用process_backlog进行软中断的处理,并且这个过程很短,只出现了一瞬间。不理解是为什么!
我在关键流程的函数里都加入了调试信息,在系统启动时,刚开始显示的net_rx_action后的函数都是e1000_clean(也就是NAPI的poll函数),这个是正确的,可是,在后面的一个很短的时间,屏幕打印出现在在process_backlog函数中,这个是非NAPI的poll函数啊,为什么在NAPI模式下也会调用呢?这个只是在启动过程中一闪而现,之后就没再有了。而且,在进行这个软中断处理之前,并没有出发硬中断,而是直接进入的__netif_rx_schedule函数,然后调用的软中断处理函数net_rx_action和poll函数process_backlog。
截图如下,请高手给小弟解释下,谢谢!
正确的NAPI流程,先触发硬中断,然后进行软中断的处理,poll函数为e1000_clean
在正常的NAPI流程中突然出现的process_backlog。请注意,这里没有先触发硬中断,而直接进行了软中断处理。
作者: cs_student 发布时间: 2010-04-19
一种更高层面的抽像,普通中断被抽像成NAPI的一种而已……和谐的统一。
作者: 独孤九贱 发布时间: 2010-04-19
没有明白九贱兄的意思,如果是抽象成NAPI的话,应该是即使用process_backlog的时候也使用NAPI的整体机制,这个我能理解。不过我现在面对的问题,是在使用NAPI的时候,出现了process_backlog函数,是该用NAPI的地方,却用了非NAPI的机制,这个我就不理解了,而且只有这一瞬间,并且没有硬中断的触发。请九贱兄再解释一下,谢谢!
作者: cs_student 发布时间: 2010-04-19
作者: fan11xy 发布时间: 2010-04-20
有 些 通过NAPI交给 IP的 skb也 会 被 netif_rx(skb)重新交回给 rx_softirq吧, 比 如 tunnel之类 的 .
作者: Arthur_ 发布时间: 2010-04-20
但是我跟踪的过程中,发现如果走NAPI流程的话,在__netif_rx_schedule()中能得到net_dev,能打印出名字,如eth0。但是如果通过__netif_rx_schedule()调用了process_backlog的话,就没有任何dev的名字了,那这个process_backlog到底在做些什么呢?
作者: cs_student 发布时间: 2010-04-20

作者: neyshule 发布时间: 2010-08-24
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28