Commit 70f92ab9 authored by Linmao Li's avatar Linmao Li Committed by Jakub Kicinski
Browse files

r8169: fix packet truncation after S4 resume on RTL8168H/RTL8111H



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 ef9da46d ("r8169: fix data
corruption issue on RTL8402").

Fixes: 6e1d0b89 ("r8169:add support for RTL8168H and RTL8107E")
Signed-off-by: default avatarLinmao Li <lilinmao@kylinos.cn>
Reviewed-by: default avatarJacob Keller <jacob.e.keller@intel.com>
Reviewed-by: default avatarHeiner Kallweit <hkallweit1@gmail.com>
Link: https://patch.msgid.link/20251009122549.3955845-1-lilinmao@kylinos.cn


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 25718fdc
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -4994,8 +4994,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);