内核在调用驱动发送函数dev_queue_xmit的时候流程大概是这样的:
dev_queue_xmit()->->qdisc_run()->__qdisc_run(dev)->qdisc_restart()->dev_hard_start_xmit()->驱动发送函数,这里有几个问题想不明白:
(1)在这个过程当中并没有出现发送软中断处理函数net_tx_action(),那么net_tx_action()是在什么时候被调用呢?
(2)我看资料说驱动发送函数把数据发送出去以后要把skb加入到completion_queue中,然后再让net_tx_action()去释放这些数据,
那么就是说驱动中并不释放数据,而是在net_tx_action中一次性释放多个数据,是这样的吗?
(3)net_tx_action()中还有一部分代码也是进行发送数据,那么这部分又是什么数据呢?
这部分看的有点晕,然后还有数据接收的软中断调用时机也有点迷糊,跪求高手不吝赐教啊~~
[ 本帖最后由 ppb0320 于 2008-12-18 10:05 编辑 ]
meimei890 于 2008-12-19 14:10:39发表:
很强大,很含色,很暴力,非常楼主。