]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
r8169: fix packet truncation after S4 resume on RTL8168H/RTL8111H
authorLinmao Li <lilinmao@kylinos.cn>
Thu, 9 Oct 2025 12:25:49 +0000 (20:25 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 29 Oct 2025 13:03:08 +0000 (14:03 +0100)
[ Upstream commit 70f92ab97042f243e1c8da1c457ff56b9b3e49f1 ]

After resume from S4 (hibernate), RTL8168H/RTL8111H truncates incoming
packets. Packet captures show messages like "IP truncated-ip - 146 bytes
missing!".

The issue is caused by RxConfig not being properly re-initialized after
resume. Re-initializing the RxConfig register before the chip
re-initialization sequence avoids the truncation and restores correct
packet reception.

This follows the same pattern as commit ef9da46ddef0 ("r8169: fix data
corruption issue on RTL8402").

Fixes: 6e1d0b898818 ("r8169:add support for RTL8168H and RTL8107E")
Signed-off-by: Linmao Li <lilinmao@kylinos.cn>
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Reviewed-by: Heiner Kallweit <hkallweit1@gmail.com>
Link: https://patch.msgid.link/20251009122549.3955845-1-lilinmao@kylinos.cn
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/realtek/r8169_main.c

index 1ea30c9b8c07ce147fb35bd76ee3bbaa481d021a..07dc9fdeea54cb9bf43753abe56e84c1aed9eefc 100644 (file)
@@ -4962,8 +4962,9 @@ static int rtl8169_resume(struct device *device)
        if (!device_may_wakeup(tp_to_dev(tp)))
                clk_prepare_enable(tp->clk);
 
-       /* Reportedly at least Asus X453MA truncates packets otherwise */
-       if (tp->mac_version == RTL_GIGA_MAC_VER_37)
+       /* Some chip versions may truncate packets without this initialization */
+       if (tp->mac_version == RTL_GIGA_MAC_VER_37 ||
+           tp->mac_version == RTL_GIGA_MAC_VER_46)
                rtl_init_rxcfg(tp);
 
        return rtl8169_runtime_resume(device);