Anuncio de velocidad de enlace de Linux

Anuncio de velocidad de enlace de Linux

Hasta donde yo sé, el siguiente comando establecería la velocidad y el dúplex anunciados por la negociación automática.

ethtool -s eth0 advertise 0x020

donde 0x020indica 1000baseT Fullsegún la siguiente guía:

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

El comando que apliqué, 1000baseT Fullsolo publicidad. Me pregunto cómo configuro el servidor para anunciar múltiples modos de enlace, 1000baseT Full 100baseT Full 100baseT Halftodos a la vez.

Intenté aplicar el mismo comando para los modos de enlace deseados uno por uno, pero cada vez el nuevo modo de enlace reemplaza el modo actual y no se agrega a él.

También mencioné los modos de enlace hexacódigos consecutivamente como el siguiente, pero devuelve un error.

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

Cuando todos están anunciados, se muestran en el ethtoolresultado de esta manera:

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

¿Alguna idea por favor?

Respuesta1

Suma los números. Observa eso:

  • 0x001es 0b000000000001,
  • 0x002es 0b000000000010,
  • 0x004es 0b000000000100,

y así sucesivamente, cada uno de ellos representa un bit (bandera) en algún registro, que almacena los modos que estén habilitados. Solo necesita habilitar todos los bits deseados.

En tu caso 1000baseT Full, 100baseT Fully 100baseT Halfsería 0x020 + 0x008 + 0x004 = 0x02c:

ethtool -s eth0 advertise 0x02c

información relacionada