SOK*_*OKS 5 linux kernel embedded ethernet network-interface
我的情况是,我有一个支持 10/100/1000 的 PHY,仅用于支持 10/100。
默认行为是使用自动协商找到最佳模式。在另一端,使用具有千兆功能的路由器以非工作接口结束。我猜自动协商永远不会收敛。我听说有些人尝试过使用 100Mbps 交换机,并且效果很好。
我可以使用它,ethtool但这很令人沮丧:
ethtool -s eth1 duplex full speed 100 autoneg off
我想要做的是保持自动协商,但从选择中撤回 1000baseT/Full,以便它最终以 100Mbps 的速度无缝运行。有什么方法可以使用ethtool或内核选项来实现?(在我的 2.6.32 内核上没有找到任何东西......)
(让我们说一些奇怪的家伙带着 10Mbps 交换机来找我,我需要这个 eth 来使用另一个世纪的这个交换机)
自动协商的问题是,如果从一端关闭它,另一端可以检测速度,但不能检测双工模式,默认为一半。然后你会得到一个双工不匹配,这几乎与链路不工作相同。因此,如果您在一端禁用自动协商,实际上您也必须在另一端禁用它。
(然后,自动协商实际上并没有测试电缆,而只是测试端点可以做什么。这可能会导致在只有两对的电缆上产生千兆链路,并且不能支持 1000Base-T。)
但是 ethtool 似乎能够告诉驱动程序要宣传的速度/双工模式。ethtool -s eth1 advertise 0x0f将允许所有 10/100 模式但不允许 1G。
advertise N
Sets the speed and duplex advertised by autonegotiation. The
argument is a hexadecimal value using one or a combination of
the following values:
0x001 10baseT Half
0x002 10baseT Full
0x004 100baseT Half
0x008 100baseT Full
0x010 1000baseT Half (not supported by IEEE standards)
0x020 1000baseT Full
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7179 次 |
| 最近记录: |