中断处理函数会:
1.把帧拷贝到sk_buff数据结构。
2.对一些sk_buff参数做初始化,以便在稍后由上面的网络层使用。
3.更新其他一些该设备私用的参数。
4.为NET_RX_SOFTIRQ软IRQ调度以准备执行,借此通知内核新帧的事。
Netpoll:是一个通用的架构,可通过轮询网络适配卡(NIC)而传送及接收帧,把中断事件的需求删除掉。任何内核功能都可使用Netpoll,以受益于其功能。例如可以通过UDP把内核信息发送到远程主机。
backlog_dev:并不是一个实际上存在的网络设备,netif_rx_schedule()只是利用了其中的poll函数而已。在net_dev_init()中已经将其poll()初始化成process_backlog函数,故转入process_backlog()函数,再调用netif_receive_skb()根据包的类型送入上一层的协议栈。
netif_rx主要任务:
1.对sk_buff数据结构的一些字段做初始化(如接收帧的时间)。
2.把已接收的帧存储到CPU的私有输入队列,然后触发相关联的softirq(NET_RX_SOFTIRQ)以通知内核。
3.更新有关拥塞等级的统计数据。
《深入理解Linux网络技术内幕》阅读笔记(十)
最新推荐文章于 2022-12-08 10:55:47 发布