
Насколько мне известно, следующая команда установит скорость и дуплекс, объявленные автосогласованием.
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