LINUXIntel E100 网卡驱动实例分析Lenn liangvy@gmail.com MSN liangvy@bigfoot.com QQ:28663 专注于零拷贝网卡与网络控制的研究,目前开发有 e100/e1000 零拷贝收发版驱 动程序; 旁路 TCP 拦截与 WEB 推送系统等;欢迎转载、共同学习:) 2006-1-17 本来是做 zero-copy 的,顺便把分析记录写下来,供大家参考,如果有错误清大家多包涵。只 挑重要的来说,一些细节的地方我也不大懂,要看芯片手册才行,我们作软件的就别看那么 细了,最重要是把主要流程弄清除。1、 系统结构定义 以下定义的结构,要保证长度是 32bit 的整数,也就是 4bytes 对齐,在自己添加成员的时候尤 其小心。 struct cb 字面理解为 control block; struct nic 网卡的基本信息,该结构是针对单个网卡的,而不是针对网卡驱动整个系统; 2、 子例程分析 static inline void e100_enable_irq(struct nic *nic) { unsigned long flags; spin_lock_irqsave(&nic->cmd_lock, flags); writeb(irq_mask_none, &nic->csr->scb.cmd_hi); spin_unlock_irqrestore(&nic->cmd_lock, flags); e100_write_flush(nic); } static inline void e100_disable_irq(struct nic *nic) { unsigned long flags; spin_lock_irqsave(&nic->cmd_lock, flags);1writeb(irq_mask_a……
猜您喜欢
推荐内容
开源项目推荐 更多
热门活动
热门器件
用户搜过
随便看看
热门下载
热门标签
评论