Linux-Verbindungsgeschwindigkeit ankündigen

Linux-Verbindungsgeschwindigkeit ankündigen

Soweit ich weiß, würde der folgende Befehl die durch Auto-Negotiation angekündigte Geschwindigkeit und den Duplexbetrieb einstellen.

ethtool -s eth0 advertise 0x020

wobei gemäß folgender Anleitung 0x020bedeutet :1000baseT Full

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

Der von mir verwendete Befehl gibt 1000baseT Fullnur Werbung. Ich frage mich, wie ich den Server so einstelle, dass er mehrere Linkmodi 1000baseT Full 100baseT Full 100baseT Halfgleichzeitig ankündigt.

Ich habe versucht, denselben Befehl nacheinander für die gewünschten Verknüpfungsmodi anzuwenden, aber jedes Mal ersetzt der neue Verknüpfungsmodus den aktuellen Modus und wird ihm nicht hinzugefügt.

Ich habe die Hexacodes der Linkmodi auch nacheinander wie folgt aufgeführt, aber es wird ein Fehler zurückgegeben.

ethtool -s eth0 advertise 0x020 0x008 0x004
    ethtool: bad command line argument(s)
    For more information run ethtool -h

Wenn alle angekündigt sind, werden sie in der ethtoolAusgabe folgendermaßen angezeigt:

ethtool eth0
Settings for eth0:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
                                1000baseT/Half 1000baseT/Full 
        Supported pause frame use: No
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
                                1000baseT/Half 1000baseT/Full

Irgendeine Idee, bitte?

Antwort1

Addieren Sie die Zahlen. Beachten Sie:

  • 0x001Ist 0b000000000001,
  • 0x002Ist 0b000000000010,
  • 0x004Ist 0b000000000100,

und so weiter, jedes davon stellt ein Bit (Flag) in einem Register dar, das die aktivierten Modi speichert. Sie müssen nur alle gewünschten Bits aktivieren.

In Ihrem Fall wären und 1000baseT Full:100baseT Full100baseT Half0x020 + 0x008 + 0x004 = 0x02c

ethtool -s eth0 advertise 0x02c

verwandte Informationen