Реклама скорости соединения Linux

Реклама скорости соединения Linux

Насколько мне известно, следующая команда установит скорость и дуплекс, объявленные автосогласованием.

ethtool -s eth0 advertise 0x020

где 0x020указывает 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

Команда, которую я применил, 1000baseT Fullтолько рекламирует. Интересно, как мне настроить сервер на рекламирование нескольких режимов связи, как 1000baseT Full 100baseT Full 100baseT Halfвсе сразу.

Я пробовал применять одну и ту же команду для нужных режимов связи по одному, но каждый раз новый режим связи заменяет текущий режим, а не добавляется к нему.

Я также упомянул гексакоды режимов связи последовательно, как показано ниже, но это возвращает ошибку.

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

Когда все они объявлены, они отображаются в ethtoolвыводе следующим образом:

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

Есть идеи?

решение1

Сложите числа. Обратите внимание, что:

  • 0x001является 0b000000000001,
  • 0x002является 0b000000000010,
  • 0x004является 0b000000000100,

и так далее, каждый из них представляет один бит (флаг) в некотором регистре, который хранит все включенные режимы. Вам просто нужно включить все нужные биты.

В вашем случае 1000baseT Full, 100baseT Fullи 100baseT Halfбудет 0x020 + 0x008 + 0x004 = 0x02c:

ethtool -s eth0 advertise 0x02c

Связанный контент