我正在开发以太网网络设备驱动程序,我遵循的步骤将设备注册为eth1并为其分配MAC地址(a0:b0,c0,d0,e0,f0),IPV4地址(192.168.10.127),甚至可以查看 /sys/class/net devices 中创建的设备。有关信息,我遵循了构建内核设备驱动程序的所有步骤,它生成了一个 .ko 文件并使用 insmod 加载了驱动程序。
当我使用 ifconfig eth1 up --> 调用设备打开时, ifconfig eth1 down --> 调用设备关闭, 但是当我 ping 它时 ping -I eth1 www.google.com(something) 我看不到设备传输 ndo_start_xmit 回调 未触发/调用。
有人可以指导我如何触发 ndo_start_xmit 回调/将数据传输到以太网网络设备驱动程序吗?
在 Linux 源代码中搜索包装器
netdev_start_xmit
。
当然,调用驱动程序的 start_xmit 例程是您的责任。因为现在只有您可以看到您的司机:-@),这意味着您需要查看清单:
如果您要在已知工作的驱动程序上建模并选择尽可能简单的驱动程序,则所有这些要点都应该从该驱动程序的代码中清晰可见。如果您这样做,您就有更好的机会使任何设备驱动程序正常工作,而不是尝试从头开始编写整个驱动程序。