CentOS 7 XG-C100C 传输文件丢包问题 | 驱动更新

标签: none

拿着刚到手的10G网卡心情无比的激动.上机测试之后发现内网两台电脑传送文件只传了48M左右就出现报错的问题.
但是换成之前的网卡就没出现这个问题. 经过各种测试之后把问题确定在了网卡驱动上面.

经过多次查找确定了 多数人出现了丢包, 紧接着就遇到网卡停止工作了
在亚马逊上看到了几条评价 和我遇到的问题很相似.

Snipaste_2019-08-25_12-05-05.png
Snipaste_2019-08-25_12-08-03.png

亚马逊用户评论
Red Hat Bugzilla – Bug 1499321

驱动更新

CentOS 7 系统默认的驱动版本是 v2.0.4.0

华硕自家的支持里面也有驱动工具, 但是里面的版本非常低. 是 v2.0.15.0 截止本文发布的时候 AQC107驱动版本是v2.2.6.0.178
XG-C100C Support
Snipaste_2019-08-25_12-17-11.png

华硕的XG-C100C 使用的芯片组是Aquantia 的 型号是AQC107 所以可以直接安装Aquantia 的驱动.
Aquantia Driver Downloads
Snipaste_2019-08-25_12-23-17.png

lspci 可以看到网卡的芯片组是 AQC107 这个也是我们要去下载的驱动的信息.

# lspci -s 09:00.0 -vv
09:00.0 Ethernet controller: Aquantia Corp. AQC107 NBase-T/IEEE 802.3bz Ethernet Controller [AQtion] (rev 02)
        Subsystem: ASUSTeK Computer Inc. Device 8741

使用ethtool 可以查看当前网卡使用的驱动版本.

# ethtool -i enp2s0
driver: atlantic
version: 2.0.4.0-kern
firmware-version: 3.0.33
expansion-rom-version:
bus-info: 0000:09:00.0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: yes
supports-priv-flags: no

在上一步的信息里面找到了 驱动名称atlantic 接下来就可以查看驱动信息

# modinfo atlantic
filename:       /lib/modules/4.20.11-1.el7.elrepo.x86_64/kernel/drivers/net/ethernet/aquantia/atlantic/atlantic.ko
description:    aQuantia Corporation(R) Network Driver
author:         aQuantia
version:        2.0.4.0-kern
license:        GPL v2
srcversion:     65B2095FA0FFCABF9686A7B
alias:          pci:v00001D6Ad000052B1sv*sd*bc*sc*i*
alias:          pci:v00001D6Ad000051B1sv*sd*bc*sc*i*
alias:          pci:v00001D6Ad000092B1sv*sd*bc*sc*i*
alias:          pci:v00001D6Ad000091B1sv*sd*bc*sc*i*
alias:          pci:v00001D6Ad000089B1sv*sd*bc*sc*i*
alias:          pci:v00001D6Ad000088B1sv*sd*bc*sc*i*
alias:          pci:v00001D6Ad000087B1sv*sd*bc*sc*i*
alias:          pci:v00001D6Ad000080B1sv*sd*bc*sc*i*
alias:          pci:v00001D6Ad000012B1sv*sd*bc*sc*i*
alias:          pci:v00001D6Ad000011B1sv*sd*bc*sc*i*
alias:          pci:v00001D6Ad000009B1sv*sd*bc*sc*i*
alias:          pci:v00001D6Ad000008B1sv*sd*bc*sc*i*
alias:          pci:v00001D6Ad000007B1sv*sd*bc*sc*i*
alias:          pci:v00001D6Ad000000B1sv*sd*bc*sc*i*
alias:          pci:v00001D6Ad0000D109sv*sd*bc*sc*i*
alias:          pci:v00001D6Ad0000D108sv*sd*bc*sc*i*
alias:          pci:v00001D6Ad0000D107sv*sd*bc*sc*i*
alias:          pci:v00001D6Ad0000D100sv*sd*bc*sc*i*
alias:          pci:v00001D6Ad00000001sv*sd*bc*sc*i*
depends:
retpoline:      Y
intree:         Y
name:           atlantic
vermagic:       4.20.11-1.el7.elrepo.x86_64 SMP mod_unload modversions
parm:           aq_itr:Interrupt throttling mode (uint)
parm:           aq_itr_tx:TX interrupt throttle rate (uint)
parm:           aq_itr_rx:RX interrupt throttle rate (uint)

这一步可以看到我的内核是自己升级过的 4.20.11 还有就是网卡的驱动版本是 2.0.4.0-kern
如果是自己升级内核就需要同时安装内核的 kernel-devel 我这个则需要修改安装脚本在 kernel-devel 中间加上 -ml 才可以正常安装.

这个可以查看当前安装的内核

# rpm -qa | grep kernel-ml

安装步骤在 README.txt 写的很详细. 这里只讲一种方法.
安装前需要安装几个基础工具

yum install kernel-devel-`uname -r` gcc gcc-c++ make dkms

安装好基础工具之后解压 驱动程序

cd ~/aquantia
tar zxf Aquantia-AQtion-x.y.z.tar.gz

执行安装脚本

./dkms.sh install

驱动安装位置在

/lib/modules/`uname -r`/extra/atlantic.ko

在使用 modinfo 查看版本就是新的了

# modinfo atlantic
filename:       /lib/modules/4.20.11-1.el7.elrepo.x86_64/extra/atlantic.ko
description:    aQuantia Corporation(R) Network Driver
author:         aQuantia
version:        2.2.6.0
license:        GPL v2
firmware:       aquantia/91B1.fw
firmware:       aquantia/87B1.fw
firmware:       aquantia/80B1.fw
srcversion:     3BD2BA33B9C3E4A2B0556D9
alias:          pci:v00001D6Ad000092B1sv*sd*bc*sc*i*
alias:          pci:v00001D6Ad000091B1sv*sd*bc*sc*i*
alias:          pci:v00001D6Ad000089B1sv*sd*bc*sc*i*
alias:          pci:v00001D6Ad000088B1sv*sd*bc*sc*i*
alias:          pci:v00001D6Ad000087B1sv*sd*bc*sc*i*
alias:          pci:v00001D6Ad000080B1sv*sd*bc*sc*i*
alias:          pci:v00001D6Ad000012B1sv*sd*bc*sc*i*
alias:          pci:v00001D6Ad000011B1sv*sd*bc*sc*i*
alias:          pci:v00001D6Ad000009B1sv*sd*bc*sc*i*
alias:          pci:v00001D6Ad000008B1sv*sd*bc*sc*i*
alias:          pci:v00001D6Ad000007B1sv*sd*bc*sc*i*
alias:          pci:v00001D6Ad000000B1sv*sd*bc*sc*i*
alias:          pci:v00001D6Ad0000D109sv*sd*bc*sc*i*
alias:          pci:v00001D6Ad0000D108sv*sd*bc*sc*i*
alias:          pci:v00001D6Ad0000D107sv*sd*bc*sc*i*
alias:          pci:v00001D6Ad0000D100sv*sd*bc*sc*i*
alias:          pci:v00001D6Ad00000001sv*sd*bc*sc*i*
depends:        crc-itu-t,ptp
retpoline:      Y
name:           atlantic
vermagic:       4.20.11-1.el7.elrepo.x86_64 SMP mod_unload modversions
parm:           aq_ptp_offset_forced:Force to use the driver parameters (uint)
parm:           aq_ptp_offset_100:PTP offset for 100M (uint)
parm:           aq_ptp_offset_1000:PTP offset for 1G (uint)
parm:           aq_ptp_offset_2500:PTP offset for 2,5G (uint)
parm:           aq_ptp_offset_5000:PTP offset for 5G (uint)
parm:           aq_ptp_offset_10000:PTP offset for 10G (uint)
parm:           aq_itr:Interrupt throttling mode (uint)
parm:           aq_itr_tx:TX interrupt throttle rate (uint)
parm:           aq_itr_rx:RX interrupt throttle rate (uint)
parm:           aq_rxpageorder:RX page order override (uint)
parm:           aq_rx_refill_thres:RX refill threshold (uint)
parm:           aq_fw_did:Use FW image for this DID (array of uint)
parm:           aq_fw_sid:Use provisioning data for this SID (array of uint)
parm:           aq_force_host_boot:Force host boot (array of uint)

这里结束后还需要使用 ethtool 查看一下当前使用的版本. 发现正在使用的版本没有变化.

# ethtool -i enp2s0
driver: atlantic
version: 2.0.4.0-kern
firmware-version: 3.0.33
expansion-rom-version:
bus-info: 0000:09:00.0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: yes

首先移除当前模块

rmmod atlantic

加载新模块

insmod /lib/modules/4.20.11-1.el7.elrepo.x86_64/extra/atlantic.ko

分析所有可用模块

depmod -a

重启网络

service network restart

最后使用 ethtool 查看当前使用的版本. 现在版本已经变成新的了, 成功!

# ethtool -i enp2s0
driver: atlantic
version: 2.2.6.0
firmware-version: 3.0.33
expansion-rom-version:
bus-info: 0000:09:00.0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: yes
supports-priv-flags: yes

还有一些看到了但没有使用的命令

modprobe atlantic 等同于 rmmod atlantic

linux更新网卡驱动
检查Linux服务器网卡驱动版本并更新


扫描二维码,在手机上阅读!

添加新评论