拿着刚到手的10G网卡心情无比的激动.上机测试之后发现内网两台电脑传送文件只传了48M左右就出现报错的问题.
但是换成之前的网卡就没出现这个问题. 经过各种测试之后把问题确定在了网卡驱动上面.
经过多次查找确定了 多数人出现了丢包, 紧接着就遇到网卡停止工作了
在亚马逊上看到了几条评价 和我遇到的问题很相似.
亚马逊用户评论
Red Hat Bugzilla – Bug 1499321
驱动更新
CentOS 7 系统默认的驱动版本是 v2.0.4.0
华硕自家的支持里面也有驱动工具, 但是里面的版本非常低. 是 v2.0.15.0 截止本文发布的时候 AQC107驱动版本是v2.2.6.0.178
XG-C100C Support
华硕的XG-C100C 使用的芯片组是Aquantia 的 型号是AQC107 所以可以直接安装Aquantia 的驱动.
Aquantia Driver Downloads
用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服务器网卡驱动版本并更新