Насколько мне известно, следующая команда установит скорость и дуплекс, объявленные при автосогласовании.
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
Есть идеи, пожалуйста?
Сложите числа. Обратите внимание, что:
0x001
— это 0b000000000001
,0x002
— это 0b000000000010
,0x004
— это 0b000000000100
,и т. д. Каждое из них представляет один бит (флага )в некотором регистре, в котором хранятся все включенные режимы. Вам нужно просто включить все нужные биты.
В вашем случае 1000baseT Full
, 100baseT Full
и 100baseT Half
будут0x020 + 0x008 + 0x004 = 0x02c
:
ethtool -s eth0 advertise 0x02c