当前位置: 代码迷 >> 驱动开发 >> 关于linux网卡驱动解决思路
  详细解决方案

关于linux网卡驱动解决思路

热度:23   发布时间:2016-04-28 10:34:44.0
关于linux网卡驱动
小弟目前在看网卡驱动的代码,有一点疑惑,望各位大虾指点:
问题1.在一般的网卡模型中,若采用 ZERO COPY 方式,当网卡受到数据包时,是否在触发中断的时候,数据包已经从网卡硬件缓存DMA到了内存的环形缓冲区???
问题2.究竟收包的中断是在何时被触发,是在环形缓冲区已满的时候,还是每收到一个包就触发一次中断??
问题3.若环形缓冲区已满,那么网卡该如何处理?收到的包放在哪里???


------解决方案--------------------
1  网卡接收的buffer直接给应用或者驱动用,不需要拷贝。这个buffer是硬件必须的,驱动给配置的。如果有拷贝,就要将这段内存再拷贝到其他内存。
2。有中断触发,也可以查询,看硬件手册。
3。可能丢弃,看硬件手册,每个buffer都应该还有个状态标志。