【问题标题】:Controlling two NICs with one driver一个驱动控制两个网卡
【发布时间】:2014-09-07 14:13:01
【问题描述】:
我目前正在尝试修改 e1000e 驱动程序以在具有环形拓扑的网络中使用标准网络适配器 (82574L)(我不是指任何特定的环形拓扑)。我想在驱动程序级别执行此操作(我仍在学习驱动程序,主要来自“Linux 设备驱动程序”)。
所以我的问题是:
是否可以使用一个驱动程序控制 2 个网络适配器?我的意思是,是否可以为可以控制2个物理适配器的“虚拟适配器”编写驱动程序,并使它们被系统视为一个设备?
【问题讨论】:
标签:
linux
networking
driver
linux-device-driver
nic
【解决方案1】:
是的,很多司机实际上都是这样做的。通常的方法是创建一个“总线”驱动程序,这意味着您的驱动程序将服务于某种总线,例如 PCI。但是没有人阻止您创建自己的虚拟总线。
这样,总线驱动程序将为您总线上出现或消失的所有设备调用。当您收到有关总线上设备的通知时,您将为 Linux 内核创建和注册结构,例如struct net_device 或更一般的struct device。
实际上,作为设备驱动程序开发人员,您有很多选择。您可以为每个设备创建/注册(例如您的 e1000 驱动程序),以某种方式对设备进行分组并将大量物理设备表示为单个逻辑 (RAID),将它们包装到非常特定的东西(设备映射器)等等。