openwrt 出现间接性网络中断问题解决

发布于 2024-02-24 12:02:14 阅读 107

春节前把家里的旁路由关闭了,节后回来打开后,网络经常性的出现间歇中断,就很莫名其妙。

我们首先需要看下日志,openwrt提供了系统日志和内核日志,我们需要看下这2个日志是否有相关的错误信息,当我在看着2个日志的时候,发现内核日志会多次的报错日志

[ 2194.952156] e1000e 0000:00:19.0 eno1: Detected Hardware Unit Hang:
[ 2194.952156]   TDH                  <e6>
[ 2194.952156]   TDT                  <87>
[ 2194.952156]   next_to_use          <87>
[ 2194.952156]   next_to_clean        <e4>
[ 2194.952156] buffer_info[next_to_clean]:
[ 2194.952156]   time_stamp           <100073730>
[ 2194.952156]   next_to_watch        <e6>
[ 2194.952156]   jiffies              <100073a60>
[ 2194.952156]   next_to_watch.status <0>
[ 2194.952156] MAC Status             <40080083>
[ 2194.952156] PHY Status             <796d>
[ 2194.952156] PHY 1000BASE-T Status  <3800>
[ 2194.952156] PHY Extended Status    <3000>
[ 2194.952156] PCI Status             <10>
[ 2196.968147] e1000e 0000:00:19.0 eno1: Detected Hardware Unit Hang:
[ 2196.968147]   TDH                  <e6>
[ 2196.968147]   TDT                  <87>
[ 2196.968147]   next_to_use          <87>
[ 2196.968147]   next_to_clean        <e4>
[ 2196.968147] buffer_info[next_to_clean]:
[ 2196.968147]   time_stamp           <100073730>
[ 2196.968147]   next_to_watch        <e6>
[ 2196.968147]   jiffies              <100073c58>
[ 2196.968147]   next_to_watch.status <0>
[ 2196.968147] MAC Status             <40080083>
[ 2196.968147] PHY Status             <796d>
[ 2196.968147] PHY 1000BASE-T Status  <3800>
[ 2196.968147] PHY Extended Status    <3000>
[ 2196.968147] PCI Status             <10>

上面的大概意思是就是发现了硬件单元卡住, 那么去网上搜索下,发现是因为网卡固件有问题导致的,那么我们需要执行下面的命令即可。

ethtool -K eno1 tso off

顺便问了下chatgpt下这个命令是什么意思

ethtool -K eno1 tso off 这个命令用于在 Linux 系统下配置网络接口的参数。
ethtool: 这是一个 Linux 命令行工具,用于显示和更改以太网卡的设置。
-K: 这是 ethtool 命令的一个选项,用于改变指定网络设备的一些选项。
eno1: 这是你要更改设置的网络接口的名称。在这个例子中,接口名称是 eno1,这通常是第一个以太网接口的默认名称。
tso: 是“TCP Segmentation Offload”的缩写。当开启这个选项时,TCP/IP 数据包的分段过程会被卸载到网络适配器上,从而降低 CPU 的使用率。但在某些情况下,这可能会引发一些问题,如网络性能下降等。
off: 这表示关闭 tso 选项。如果你想打开 tso,你可以使用 on 参数。
因此,ethtool -K eno1 tso off 这个命令的意思是关闭 eno1 网络接口的 TCP Segmentation Offload 功能。

其中eno1就是你的网卡标识,当然你也可以开机就执行这个命令,防止下一次重启后又出现网络间断性断连。

sudo vim /etc/profile.d/e1000e.sh

然后将上面的命令粘贴到vim中即可。