{"id":6876,"date":"2026-08-24T17:56:58","date_gmt":"2026-08-24T09:56:58","guid":{"rendered":"https:\/\/www.alfredivy.sg\/blogger\/?p=6876"},"modified":"2026-08-26T22:26:47","modified_gmt":"2026-08-26T14:26:47","slug":"network-interface-hanging-on-debian-13","status":"publish","type":"post","link":"https:\/\/www.alfredivy.sg\/blogger\/2026\/08\/network-interface-hanging-on-debian-13\/","title":{"rendered":"Network interface hanging on Debian 13"},"content":{"rendered":"\n<p class=\"has-drop-cap wp-block-paragraph\">Every few days, the Debian 13 network interface of my homelab would mysteriously hang. When the network dies, I don&#8217;t have remote access, will require a local action.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p class=\"wp-block-paragraph\">The log shows the network module hangs.  All services are running properly.  Just no network access.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>root@home:~# journalctl -k -f \nJul 25 22:22:10 home kernel: e1000e 0000:00:1f.6 nic0: Detected Hardware Unit Hang: TDH &lt;c3> \nTDT &lt;d6> \nnext_to_use &lt;d6> \nnext_to_clean &lt;c2> \nbuffer_info&#91;next_to_clean]: \ntime_stamp &lt;1b2f434df> \nnext_to_watch &lt;c3> \njiffies &lt;1b4108200> next_to_watch.status &lt;0> MAC Status &lt;40080083> \nPHY Status &lt;796d> PHY 1000BASE-T Status &lt;3800> \nPHY Extended Status &lt;3000> \nPCI Status &lt;10> \nJul 25 22:22:12 home kernel: e1000e 0000:00:1f.6 nic0: Detected Hardware Unit Hang: TDH &lt;c3> \nTDT &lt;d6> \nnext_to_use &lt;d6> \nnext_to_clean &lt;c2> \nbuffer_info&#91;next_to_clean]: \n  time_stamp &lt;1b2f434df> \n  next_to_watch &lt;c3> \n  jiffies &lt;1b41089c0> \n  next_to_watch.status &lt;0> \nMAC Status &lt;40080083> \nPHY Status &lt;796d> \nPHY 1000BASE-T Status &lt;3800> \nPHY Extended Status &lt;3000> \nPCI Status &lt;10> \n\n&lt;snip>\n\nJul 25 22:22:18 home kernel: e1000e 0000:00:1f.6 nic0: Detected Hardware Unit Hang: TDH &lt;c3> \nTDT &lt;d6> \nnext_to_use &lt;d6> \nnext_to_clean &lt;c2> \nbuffer_info&#91;next_to_clean]: \n   time_stamp &lt;1b2f434df> \n   next_to_watch &lt;c3> \n   jiffies &lt;1b410a140> \n   next_to_watch.status &lt;0> \nMAC Status &lt;40080083> \nPHY Status &lt;796d> \nPHY 1000BASE-T Status &lt;3800> \nPHY Extended Status &lt;3000> \nPCI Status &lt;10> \nJul 25 22:22:20 home kernel: e1000e 0000:00:1f.6 nic0: NIC Link is Down \nJul 25 22:22:20 home kernel: vmbr0: port 1(nic0) entered disabled state \nJul 25 22:22:25 home kernel: e1000e 0000:00:1f.6 nic0: NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx\/Tx \nJul 25 22:22:25 fjulhome kernel: vmbr0: port 1(nic0) entered blocking state Jul 25 22:22:25 home kernel: vmbr0: port 1(nic0) entered forwarding state ^C \nroot@home:~#\n\nThe only resolution to the network hang is to unplug the network cable and plug it back.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">I tried changing the network cable, turning off EEE and ASPM, there was no success. There were numerous Reddit posts about the e1000 network card unable to perform TCP offloading.  This is a very common network chip found in lots of hardware including my Lenovo TinyPC. The next natural step is to try disabling offloading.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ethtool -K nic0 tso off<br>ethtool -K nic0 gso off<br>ethtool -K nic0 gro off<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The outcome was good.  It lasted for a week without any problems.  To disable the offloading  permanently, create a service.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">sudo nano \/etc\/systemd\/system\/tcp-offload.service<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Inside the file <strong>tcp-offload.service<\/strong> put the following text.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Unit]<br>Description=Disable TCP Offload Settings<br>After=network.target<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Service]<br>Type=oneshot<br>ExecStart=\/sbin\/ethtool -K eth0 tso off gso off gro off<br>RemainAfterExit=yes<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Install]<br>WantedBy=multi-user.target<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Restart the service.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl daemon-reload<br>sudo systemctl enable --now tcp-offload.service<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Every few days, the Debian 13 network interface of my homelab would mysteriously hang. When the network dies, I don&#8217;t have remote access, will require a local action.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[636],"tags":[645],"class_list":["post-6876","post","type-post","status-publish","format-standard","hentry","category-homelab","tag-debian"],"_links":{"self":[{"href":"https:\/\/www.alfredivy.sg\/blogger\/wp-json\/wp\/v2\/posts\/6876","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.alfredivy.sg\/blogger\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.alfredivy.sg\/blogger\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.alfredivy.sg\/blogger\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.alfredivy.sg\/blogger\/wp-json\/wp\/v2\/comments?post=6876"}],"version-history":[{"count":5,"href":"https:\/\/www.alfredivy.sg\/blogger\/wp-json\/wp\/v2\/posts\/6876\/revisions"}],"predecessor-version":[{"id":6883,"href":"https:\/\/www.alfredivy.sg\/blogger\/wp-json\/wp\/v2\/posts\/6876\/revisions\/6883"}],"wp:attachment":[{"href":"https:\/\/www.alfredivy.sg\/blogger\/wp-json\/wp\/v2\/media?parent=6876"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.alfredivy.sg\/blogger\/wp-json\/wp\/v2\/categories?post=6876"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.alfredivy.sg\/blogger\/wp-json\/wp\/v2\/tags?post=6876"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}