网络驱动开发:接口管理、数据传输与中断处理
1. 网络设备结构体字段
在网络驱动开发中,struct net_device结构体包含多个重要字段,用于处理不同的网络操作:
-struct dev_mc_list *mc_list和int mc_count:用于处理多播传输。mc_count表示mc_list中的条目数量。
-spinlock_t xmit_lock和int xmit_lock_owner:xmit_lock用于避免同时多次调用驱动的hard_start_xmit函数,xmit_lock_owner表示获取该锁的 CPU 编号,驱动不应修改这些字段。
-struct module *owner:表示“拥有”此设备结构的模块,用于维护模块的使用计数。
2. 接口的打开与关闭
在模块加载或内核启动时,驱动可以探测网络接口。但在接口能够传输数据包之前,内核必须打开它并分配地址。内核会根据ifconfig命令来打开或关闭接口,其具体操作如下:
| 操作 | 命令 | 说明 |
| ---- | ---- | ---- |
| 分配地址 |ioctl(SIOCSIFADDR)|