Linux
使用 ethtool 刪除一些廣告連結模式
我的情況是,我有一個支持 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