O Linux desabilita a autonegociação ethernet ao conectar o cabo?

6

Recentemente, notei que estou recebendo apenas 100Mbit / s de througput na minha rede doméstica gigabit.

Ao olhar para ele com ethtool , descobri que minha caixa ArchLinux estava usando 100baseT/Half como velocidade de link em vez de 1000baseT/Full , que a NIC e o switch conectado a ela suportam.Não sei por que, mas a NIC parece não esteja anunciando seus modos de link de acordo com ethtool :

Settings for enp0s31f6:
    Supported ports: [ TP ]
    Supported link modes:   10baseT/Half 10baseT/Full
                            100baseT/Half 100baseT/Full
                            1000baseT/Full
    Supported pause frame use: No
    Supports auto-negotiation: Yes
    Advertised link modes:  Not reported
    Advertised pause frame use: No
    Advertised auto-negotiation: No
    Speed: 100Mb/s
    Duplex: Half
    Port: Twisted Pair
    PHYAD: 1
    Transceiver: internal
    Auto-negotiation: off
    MDI-X: on (auto)
    Supports Wake-on: pumbg
    Wake-on: g
    Current message level: 0x00000007 (7)
                           drv probe link
    Link detected: yes

Ao ativar explicitamente a negociação automática executando ethtool --change enp0s31f6 autoneg on , ela parece anunciar todos os seus modos para o switch e usa 1000baseT/Full .

Isso só funciona na maior parte do tempo e por um tempo. Quando eu desconectar o cabo e ligá-lo de volta em desligar automaticamente a maioria das vezes , mas nem sempre. Além disso, algumas vezes, a configuração do autoneg como ativado o desativa novamente. A reinicialização também desativa novamente.

Observe que a negociação automática não fica desativada ao desconectar, mas ao fazer a replicação. dsmeg registra isso quando o autoneg foi ativado e eu conecto um cabo:

[153692.029252] e1000e: enp0s31f6 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx
[153699.577779] e1000e: enp0s31f6 NIC Link is Up 100 Mbps Half Duplex, Flow Control: None
[153699.577782] e1000e 0000:00:1f.6 enp0s31f6: 10/100 speed: disabling TSO

Estou usando a placa de rede Intel da minha placa-mãe asrock (de ~ 2015) e um switch não gerenciado (Netgear GS208).

    
por BMicraft 27.01.2018 / 16:05

1 resposta

3

Depois de horas de pesquisa, encontrei a solução no lugar mais óbvio:

O NetworkManager parece de alguma forma ter desativado a negociação automática nas configurações da minha porta ethernet:

A parte estranha é que, mesmo sabendo que o NetworkManager pode mudar o modo de link ethernet, não consigo encontrar nem uma única fonte on-line detalhando essa funcionalidade. A única maneira, de acordo com os resultados da pesquisa do Google que encontrei, é configurá-lo via ethtool .

    
por 28.01.2018 / 23:53