40、网络接口卡驱动程序详解

网络接口卡驱动程序详解

1. 打开和关闭网络接口

当授权用户(如管理员)使用 ifconfig ip 等用户空间工具配置网络接口时,内核会调用 ndo_open() 函数。该函数接收一个 struct net_device 对象作为参数,驱动程序应从中获取存储在 priv 字段中的特定设备对象。

网络控制器在接收或完成数据包传输时通常会引发中断,驱动程序需要注册一个中断处理程序。注册可以在 init()/probe() 例程或 open 函数中进行。有些设备需要通过在硬件的特殊寄存器中设置来启用中断,此时可以在 probe 函数中请求中断,并在 open/close 方法中设置/清除启用位。

open 函数应执行以下操作:
1. 更新接口 MAC 地址(如果用户更改了它,并且设备允许)。
2. 必要时重置硬件,并将其从低功耗模式中取出。
3. 请求任何资源(I/O 内存、DMA 通道、IRQ)。
4. 映射 IRQ 并注册中断处理程序。
5. 检查接口链接状态。
6. 调用 net_if_start_queue() 通知内核设备已准备好传输数据包。

以下是一个 open 函数的示例:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值