我现在的情况是,我有一个10/100 /1000功能的PHY电报,只能支持10/100。
默认行为是使用自动autonegociation来找到最佳模式。在另一端,使用一个千兆位的路由器结束在一个不工作的接口.我想自我认识永远不会汇合。我听说有些人试着用100 fine的交换机,它工作得很好。
我可以使用ethtool让它正常工作,但这非常令人沮丧:
ethtool -s eth1 duplex full speed 100 autoneg off
我想要做的是保持自动生成,但从选择中提取1000 but /满,这样它就可以以100 ends的速度运行。可以使用ethtool或内核选项来实现这一点吗?(在我的2.6.32内核中没有发现任何东西.)
(假设有个奇怪的家伙拿着10 10Mbps的交换机来找我,我需要这个eth来处理另一个世纪的交换机)
发布于 2017-12-01 16:53:06
自动协商的问题是,如果你从一端关闭它,另一边可以检测速度,而不是双工模式,默认为一半。然后你得到一个双工失配,这几乎与链接不起作用一样。因此,如果你在一端禁用自动协商,你实际上也必须在另一端禁用它。
(还有一件事是,自动协商并没有真正测试电缆,而是终端可以做什么。)这可能导致在只有两对电缆的电缆上产生千兆位链路,并且不能支持1000BASE-T)。
但是种族工具似乎能够告诉司机什么速度/双工模式来做广告。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发布于 2021-01-28 01:02:55
我也有类似的问题,你的回答帮助我树立了正确的自我。问题是,现在我想回到以前的配置,在这里我有更多的选项:
现在我可以设置:
ethtool -s eth0 advertise 0x1000但这只给了我10G。我可以
ethtool -s eth0 advertise 0x020但同样,这将导致只有1000基T。
伦理工具手册指出,我们可以结合这些,但我不知道如何。我尝试过多种组合,但我无法破译这个组合。
所以就在这篇文章之后我顿悟了。简单地说,您需要对这些值进行求和。要么将浴缸转换为十进制,将它们相加,然后将结果转换回HEX。或者直接在HEX做如果你知道怎么做。程序员计算器能帮上忙..。
对我来说,结果是:
ethtool -s eth0 advertise 0x1020这导致了严重的谷类作物情况:
Supported link modes: 1000baseT/Full
10000baseT/Full
1000baseX/Full
10000baseSR/Full
10000baseLR/Full
Supported pause frame use: Symmetric
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 1000baseT/Full
10000baseT/Full
1000baseX/Full
10000baseSR/Full
10000baseLR/Full我希望这对某人有用。
https://unix.stackexchange.com/questions/408224
复制相似问题