Linux - 网卡的标志配置

标签 linux network-programming initialization flags nic

上下文

Debian 64 位。内核3.18.x

很难理解网络驱动程序是如何初始化的。

我的意思是如何选择要设置的标志。我现在已经在内核中挖掘了好几天来训练自己了。卡设置是我唯一错过的一点。

我以intel 82574为例。我下载了该卡的数据表,看到了很多信息,但没有关于如何设置硬件的线索。

问题

从哪里开始了解要设置哪些标志?数据表对我没有帮助(我经验不是很丰富,但愿意学习)。

请给我一个起点、提示或任何内容,以帮助我理解已经编写的开源驱动程序中发生的情况。

开发人员如何知道如何初始化他的网卡? (是的,重新发明轮子是时候理解)

最佳答案

您需要阅读处理特定 NIC 的内核模块的源代码。

编辑:当然,要开发这样的模块,您通常只需使用数据表或应用程序节点中指定的寄存器映射;通常,制造商自己开发他们的 Linux 驱动程序,因此驱动程序开发人员甚至可能是开发芯片组的同一个人(因为有一个测试平台确实很方便 - 如果没有驱动程序之类的东西就不可能测试硬件,所以您不妨编写一个合适的驱动程序)。

此外,设备通常附带代码示例——没有人会基于他没有见过实际应用的 IC 来构 build 备。

如果您无法访问适当的文档或源代码,则只能进行逆向工程 - 这是一个非常大的领域。

关于Linux - 网卡的标志配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28393504/

相关文章:

linux - mxe 交叉编译 linux 到 windows vtk 示例

linux - 修改之前在linux上执行的命令

java - 在初始化时检查 null

c# - IPAddress.Any 和 IPAddress.IPv6Any 字段有什么区别?

c++ - 澄清 C++ 中的初始化

c++ - 阐明我对复制初始化和直接初始化的见解

linux - 如何比较一个linux文件的2个文件列与另一个文件的第二列进行比较并获得差异

linux - 在linux中,用户空间程序如何使用内核函数?我真的需要一些灵感

java - 为什么 iPad 和 iPhone 拒绝套接字连接?

java - 如何在 Java 中生成用于通过网络发送数据的字节数组