高层网络代码负责分配SKB以存储网络数据包,然后将该SKB传到驱动程序的发送函数中。驱动程序的发送函数一般会使用DMA来将位于主存中的SKB传输到网络设备内存中,再由硬件逻辑发送出去。硬件在成功发送完一个数据帧后,通常会以中断的方式通知处理器,接下来相应驱动程序的中断处理函数被调用来处理这种情况。对于成功发送分组产生的中断,在其中断处理函数中会释放该分组所在的SKB。
接收数据路径:
底层网络设备在成功将一个分组传输到主存中后,也会调用中断的方式通知驱动程序,后者负责分配一个新的SKB来容纳该新入的分组,然后通过调用netif_rx函数通知网络子系统高层有新数据包的到达。