Linux 在插入电缆时禁用以太网自动协商?

Linux 在插入电缆时禁用以太网自动协商?

我最近注意到我的千兆家庭网络仅获得 100Mbit/s 的吞吐量。

当我查看它时,ethtool我发现我的 ArchLinux Box 使用的100baseT/Half是链接速度,而不是1000baseT/Full其 NIC 和连接到它的交换机支持的链接速度。我不知道为什么,但 NIC 似乎没有根据以下内容宣传其链接模式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

当通过运行显式启用自动协商时,ethtool --change enp0s31f6 autoneg on它似乎会向交换机通告其所有模式并使用1000baseT/Full.

这仅在大部分时间和一段时间内有效。当我拔下电缆并将其重新插入时,自动调节功能会关闭大多数时候, 但不总是。另外,有时将 autoneg 设置为 on 会立即再次禁用它。重新启动也会再次禁用它。

请注意,拔出插头时自动协商不会被禁用,而是重新插入时会被禁用。dsmeg当启用 autoneg 并插入电缆时记录此信息:

[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

我正在使用我的 asrock 主板(从 ~2015 年起)的英特尔网卡和非托管交换机 (Netgear GS208)。

答案1

经过几个小时的搜索,我在最明显的地方找到了解决方案:

NetworkManager 似乎以某种方式在我的以太网端口设置中禁用了自动协商:

连接 - KDE 系统设置

奇怪的是,即使在知道 NetworkManager 可以更改以太网链接模式之后,我也找不到详细说明该功能的在线来源。根据我找到的谷歌搜索结果,唯一的方法是通过设置它ethtool

答案2

我有完全相同的问题,我很确定我从来没有有意识地设置过这个......

ethtool --change enp0s31f6 autoneg on

立即修复它,网络正确自动协商为 1Gbit 全双工,然后当我查看 NetworkManager 时,它确实设置为 100mbit...

相关内容