我正在阅读Understanding linux networking Internal book and the pdf Network packet capture in Linux kernelspace on the link networkkernel.pdf
在主题 9.2.2 下的理解 linux 网络内部 ,给出了
处理输入帧的代码分为两部分:首先驱动程序将帧复制到内核可访问的输入队列中,然后内核对其进行处理(通常将其传递给专用于相关协议的处理程序,例如知识产权)。第一部分在中断上下文中执行,可以抢占第二部分的执行。
现在查询的是第二部分何时安排?谁安排他们?调用是否在中断处理程序中给出?在Linux 内核空间的网络数据包捕获中,数据包输入流被描述为:-
When working in interrupt driven model, the nic registers an
interrupt handler;
• This interrupt handler will be called when a frame is received;
• Typically in the handler, we allocate sk buff by calling
dev alloc skb();
• Copies data from nic’s buffer to this struct just created;
• nic call generic reception routine `netif_rx();`
• `netif rx()` put frame in per cpu queue;
• if queue is full, drop!
• net rx action() decision based on skb->protocol;
• This function basically dequeues the frame and delivery a copy
for every protocol handler;
• ptype all and ptype base queues
我想知道 netif rx(); 和 net rx action() 被调用?谁给他们打电话我的意思是谁安排他们。
请指导。