TX offload

July 7, 2021

As it used to be some features developed for good may become evil. TX offload is such an example. In retrospection my minor networking troubles seemed to be related with this feature for years, but real problems arose when I upgraded my internet connection to 300Mbit/s.

As long as this needed gigabit network, I upgraded my router from OrangePI R1 to NanoPi R2S

I had problems immediately. The second network adapter attached by USB internally, started to disconnect literally every minute. Thanks to search engines I've found the solution very quickly: turn TX offload off.

TX offload is a feature which can do some tasks in the hardware, in particular, calculating checksums of packets. It would work like a charm if it was implemented properly. But implementors were just people, and as it used to be in IT, they screwed things up. Here's a bit more comprehensive reading: https://networkengineering.stackexchange.com/questions/56083/does-it-make-sense-to-generally-disable-tcp-checksum-offload#56084.

By the way, turning TX offload feature off is recommended for FreeBSD in-kernel NAT, mentioned in my previous note. This did not help, though.