网卡驱动程序往外发送数据包的问题
在网卡驱动程序里,tcp/ip协议栈往外发包是自动调用dev->hard_start_xmit函数的,我的问题是如果dev->hard_start_xmit函数还没有执行结束,此时协议栈又有数据包发送出来怎么办?即是一个数据包还没有发送完成又来了一个数据包,此时内核是怎么处理的
------解决方案--------------------queue layer调用驱动发送函数前会首先取得对应的锁。同步机制由锁保证,多余的包留在队列中。
------解决方案--------------------没错,一个包没发完后面的就不会发出去了
这需要你逻辑上保证没错
发包从内存将包移到网卡这个过程是相当快的