Объявление скорости соединения в 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

Есть идеи, пожалуйста?

0
задан 31 August 2021 в 08:44
1 ответ

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

  • 0x001— это 0b000000000001,
  • 0x002— это 0b000000000010,
  • 0x004— это 0b000000000100,

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

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

ethtool -s eth0 advertise 0x02c
1
ответ дан 31 August 2021 в 09:12

Теги

Похожие вопросы