good02xaut的笔记 https://passport2.21ic.com/?183157 [收藏] [复制] [RSS]

日志

linux网卡驱动的关键就是处理两个问题

已有 2269 次阅读2007-8-7 23:55 |个人分类:netdriver|系统分类:嵌入式系统

linux网卡驱动的关键就是处理两个问题

1。如何发送数据

也就是ndev->hard_start_xmit 函数的实现啦。

从上层扔下来的sk_buff中拿到数据,放到网卡的缓冲区里面。

 

2。如何接收数据

数据的接收是不用提供驱动接口的。

目前多采用中断接收,然后将网卡缓冲区的数据重新打包为sk_buff,扔给上层即可。

netif_rx(skb);

 

既然接收程序不是驱动提供的接口,可以很灵活的实现。

我们可以另外写个驱动,启动个定时器,周期构造sk_buff,扔给上层即可。

这样做没有什么意义,但可以更好的理解接收是怎么回事。

 

3。对于多个网卡共用一个驱动,处理起来可能要小心了

     系统有2个PCI网卡,使用一个linux RTL8139驱动。

  从上层扔下来的sk_buff中拿到数据,这时该怎么办呢???

  扔到哪个网卡的缓冲区里面呢?

  网卡驱动是看不到IP的,如何做到正确处理的呢?

  这点留给今后吧。当然,内核早已经很好的解决这个问题,不用担心。

路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)