linux-kernel - 重新接通交流电源后以太网端口不工作
问题描述
我有一个运行yocto
嵌入式系统的设备。Super Capacitors(supercap)
当突然关闭交流电源时,设备必须提供几分钟的备份。请注意,当设备开启时Supercap
,外围设备电源会被切断,以便为 CPU 提供更多时间以安全关闭。
在以下情况下,以太网端口不工作(甚至端口上的 LED 也不闪烁):
- 交流电被拉断,因此设备从中获取电源
Supercap
(因此我假设以太网端口突然暂停) - 当设备开启
supercap
且以太网端口不再出现时,重新应用交流电源
注意:r8169
内核驱动程序用于以太网。
有一些建议可以删除和插入r8169
驱动程序,但驱动程序是内核中的一个内置模块,我觉得这不是解决问题的正确方法。应该有一些初始化/配置来解决这个问题。
我还尝试了几个命令,例如“ifconfig enp2s0 up/down”,但没有任何结果。
编辑1 :从目录unbind/bind
中的驱动程序对设备执行以下步骤/sys/bus/pci/drivers/r8169
- echo -n "0000:02:00.0" > 解除绑定(成功)
- echo -n "0000:02:00.0" > bind (sh: echo: write error: No such device)
编辑 2:
这是lspci -v -kn
执行后显示的有关设备的内容unbind
。
02:00.0 0200: 10ec:8168 (rev 15)
Subsystem: 10ec:0123
Flags: fast devsel, IRQ 23
[virtual] I/O ports at d000 [size=256]
[virtual] Memory at 92104000 (64-bit, non-prefetchable) [size=4K]
[virtual] Memory at 92100000 (64-bit, non-prefetchable) [size=16K]
Capabilities: [40] Power Management version 3
Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+
Capabilities: [70] Express Endpoint, MSI 01
Capabilities: [b0] MSI-X: Enable- Count=4 Masked-
Capabilities: [d0] Vital Product Data
Capabilities: [100] Advanced Error Reporting
Capabilities: [140] Virtual Channel
Capabilities: [160] Device Serial Number 01-00-00-00-68-4c-e0-00
Capabilities: [170] Latency Tolerance Reporting
Capabilities: [178] L1 PM Substates
dmesg
发出后的结果echo -n "0000:02:00.0" > bind
r8169 0000:02:00.0: unknown MAC, using family default
r8169 0000:02:00.0 (unnamed net_device) (uninitialized): rtl_chipcmd_cond == 1 (loop: 100, delay: 100).
libphy: r8169: probed
然后我尝试enp2s0
使用以下命令删除以太网接口并重新扫描 PCI 总线:
- 回声 1 > /sys/devices/pci0000:00/0000:00:14.1/0000:02:00.0/remove
- 回声 1 > /sys/devices/pci0000:00/0000:00:14.1/rescan
耶!我的界面正常工作,但它带有eth0
而不是enp2s0
.
我检查了引导日志,r8169
似乎正在重命名它。我可以重命名它而不重新启动它吗?
r8169 0000:02:00.0 enp2s0: renamed from eth1
解决方案
推荐阅读
- vue.js - vuejs 有效负载仅发出数组中的第一个元素
- python - 有没有办法让动态网页在使用 Python 进行网页抓取时自动运行其 JavaScript?
- python-3.x - selenium 试图抓取网站上的多个页面,但在转到下一页时出错
- html - 弹出窗口中的 amp-story-player 不加载视频
- c - C中的拉马努金数
- angular - 在 Observable 中调用 Promise
- vue.js - VueJS 和 Jest。使用本地导入的 mixin 测试组件
- r - 使用图像作为点 ggplot2
- c# - API 在本地返回 EF Core 记录,但在 Azure 中托管时不返回
- spring-boot - 使用 spring-kafka 的 KTable 中的 ReadOnlyKeyValueStore