数据包在网卡驱动的中断处理中enqueue后,
由process_backlog做后续的处理。process_backlog是由软中断处理函数net_rx_action调用的。
每次软中断net_rx_action最多允许处理netdev_budget(300)个数据包,最长运行时间为2jiffies(2ms).超过这个限制重新再触发一次软中断。
net_rx_action调用的是n->poll(n, weight),这个poll实际是process_backlog,这个process_backlog是在net_dev_init函数中赋值给queue->backlog.poll的。
process_backlog调用netif_receive_skb(已经到协议栈的入口了)对在queue中的报文进行处理(有个时间的配额).
阅读(2212) | 评论(0) | 转发(0) |