web-dev-qa-db-ja.com

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が必要です)

4
SOKS

自動ネゴシエーションの問題は、一端からオフにすると、反対側は速度を検出できますが、デュプレックスモードは検出できず、デフォルトで半分になります。次に、デュプレックスの不一致が発生します。これは、リンクが機能していないのとほぼ同じです。したがって、一方の端で自動ネゴシエーションを無効にすると、実際にはもう一方の端でもそれを無効にする必要があります。

(そして、自動ネゴシエーションが実際にケーブルをテストしないことがあり、エンドポイントが実行できることだけです。これにより、2ペアしか持たず、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
5
ilkkachu