mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: netdev-bot+sashiko@kernel.org
To: hsu.chih.kai@realtek.com
Cc: davem@davemloft.net, kuba@kernel.org, netdev@vger.kernel.org,
	nic_swsd@realtek.com, linux-kernel@vger.kernel.org,
	linux-usb@vger.kernel.org, edumazet@google.com, bjorn@mork.no,
	pabeni@redhat.com, andrew+netdev@lunn.ch, mail@birger-koblitz.de
Subject: Re: [PATCH net-next v8 02/11] r8152: add rtl8157_unload() for RTL8157 and RTL8159
Date: Sat, 14 Nov 2026 09:28:31 +0000	[thread overview]
Message-ID: <179464851113.2199510.6038830098036518229@kernel.org> (raw)
In-Reply-To: <20261110032416.16968-3-nic_swsd@realtek.com>

Thank you for your contribution! Sashiko AI review found more severe
issue(s) in other patches of this series. This mail is only an FYI, in case
you want to address the nit picks below when you respin.

Low priority / nit picks for your consideration:

- [Low] The commit message for "r8152: add rtl8157_unload() for RTL8157
  and RTL8159" does not say what goes wrong for users.

Pre-existing issues:
- [Medium] This problem wasn't introduced by this patch, but older
  sibling chips have the same init/unload mismatch the patch removes for…

--

r8152: add rtl8157_unload() for RTL8157 and RTL8159

This patch adds rtl8157_unload() for RTL8157 and RTL8159. On unload,
power cut is now disabled with r8157_power_cut_en() instead of
r8153_power_cut_en(). The Interrupt Mitigation clear of 0xcf04 also moves
out of rtl8153_unload() and into the new helper.

> diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
> index d00cc911ae135..bb4106f238a3a 100644
> --- a/drivers/net/usb/r8152.c
> +++ b/drivers/net/usb/r8152.c

[ ... ]

> @@ -9711,6 +9706,16 @@ static void rtl8153b_unload(struct r8152 *tp)
>  	r8153b_power_cut_en(tp, false);
>  }
>  
> +static void rtl8157_unload(struct r8152 *tp)
> +{
> +	if (test_bit(RTL8152_INACCESSIBLE, &tp->flags))
> +		return;
> +
> +	r8157_power_cut_en(tp, false);

[Severity: Low]

Could the commit message say what goes wrong for users with the old
sequence? The patch has two Fixes: tags (fd3c7d080df5 and ad2a55b63b41),
but the only reason given is:

  Per the datasheet they need r8157_power_cut_en(), which r8156_init()
  already calls for them.

At unbind, the two helpers change different registers. The old path does:

r8153_power_cut_en(tp, false):
	ocp_word_clr_bits(tp, MCU_TYPE_USB, USB_POWER_CUT,
			  PWR_EN | PHASE2_EN);
	ocp_word_clr_bits(tp, MCU_TYPE_USB, USB_MISC_0, PCUT_STATUS);

The new path does:

r8157_power_cut_en(tp, false):
	ocp_word_clr_bits(tp, MCU_TYPE_USB, USB_POWER_CUT, PWR_EN);
	ocp_word_clr_bits(tp, MCU_TYPE_USB, USB_MISC_0, PCUT_STATUS);
	ocp_byte_clr_bits(tp, MCU_TYPE_USB, USB_MISC_2, BIT(1));

With this patch, unload no longer clears PHASE2_EN in USB_POWER_CUT, and
it now clears BIT(1) in USB_MISC_2. PHASE2_EN can be set at this point,
because r8156_ups_en(tp, true) sets it.

This runs from rtl8152_disconnect() and from the probe error path, but
only while RTL8152_INACCESSIBLE is clear. In practice that means unbind
or rmmod with the adapter still attached, or a probe failure.

Did the old sequence cause a visible problem, such as a failed re-bind,
a power or wake issue, or a stuck device? If so, could the commit
message describe it along with the register change above?

> +	ocp_byte_clr_bits(tp, MCU_TYPE_USB, 0xcf04,
> +			  BIT(0) | BIT(1) | BIT(2) | BIT(7));
> +}
> +

[ ... ]

> @@ -9889,7 +9894,7 @@ static int rtl_ops_init(struct r8152 *tp)
>  		ops->disable		= rtl8153_disable;
>  		ops->up			= rtl8156_up;
>  		ops->down		= rtl8156_down;
> -		ops->unload		= rtl8153_unload;
> +		ops->unload		= rtl8157_unload;

[Severity: Medium]

This isn't a bug introduced by this patch, but do the older sibling
chips have the same init/unload mismatch that this patch removes for
RTL8157 and RTL8159?

In rtl_opsx_init(), RTL_VER_10/11 (RTL8156), RTL_VER_12/13/15 (RTL8156B)
and RTL_VER_14 (RTL8153C) still use rtl8153_unload():

	case RTL_VER_10:
		ops->init		= r8156_init;
		...
		ops->unload		= rtl8153_unload;

	case RTL_VER_14:
		ops->init		= r8153c_init;
		...
		ops->unload		= rtl8153_unload;

rtl8153_unload() calls r8153_power_cut_en(tp, false), which clears both
PWR_EN and PHASE2_EN. The init and down paths for these chips use
r8153b_power_cut_en(tp, false) instead, which clears only PWR_EN:

r8156_init():
	if (tp->version >= RTL_VER_16)
		r8157_power_cut_en(tp, false);
	else
		r8153b_power_cut_en(tp, false);

rtl8156_down():
	if (tp->version < RTL_VER_16) {
		r8153_u2p3en(tp, false);
		r8153b_power_cut_en(tp, false);
	}

r8153c_init():
	r8153b_power_cut_en(tp, false);

These assignments go back to 195aae321c82 ("r8152: support RTL8156").
They also look unchanged later in this series, at 20694877fe24.

It isn't clear that clearing PHASE2_EN at unbind actually causes a
problem on these chips. Do the RTL8156, RTL8156B and RTL8153C datasheets
have the same requirement as RTL8157 and RTL8159?

>  		ops->eee_get		= r8153_get_eee;
>  		ops->eee_set		= r8152_set_eee;
>  		ops->in_nway		= rtl8153_in_nway;

[ ... ]

-- 
Sashiko AI review · https://netdev-ai.bots.linux.dev/sashiko/#/patchset/20261110032416.16968-1-nic_swsd%40realtek.com

  reply	other threads:[~2026-11-14  9:28 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-10  3:24 [PATCH net-next v8 00/11] r8152: refactor and extend RTL8157/8159 support Chih Kai Hsu
2026-11-10  3:24 ` [PATCH net-next v8 01/11] r8152: fix RTL8156/RTL8156B/RTL8157/RTL8159 up and down settings Chih Kai Hsu
2026-11-14  9:28   ` netdev-bot+sashiko
2026-11-10  3:24 ` [PATCH net-next v8 02/11] r8152: add rtl8157_unload() for RTL8157 and RTL8159 Chih Kai Hsu
2026-11-14  9:28   ` netdev-bot+sashiko [this message]
2026-11-10  3:24 ` [PATCH net-next v8 03/11] r8152: add rtl8157_change_mtu() " Chih Kai Hsu
2026-11-14  9:28   ` netdev-bot+sashiko
2026-11-10  3:24 ` [PATCH net-next v8 04/11] r8152: fix flow control for RTL8156/RTL8156B/RTL8157/RTL8159 Chih Kai Hsu
2026-11-14  9:28   ` netdev-bot+sashiko
2026-11-10  3:24 ` [PATCH net-next v8 05/11] r8152: split r8156_init by generation and factor out wait_autoload_done Chih Kai Hsu
2026-11-10  3:24 ` [PATCH net-next v8 06/11] r8152: add new init writes for RTL8156/8156B/8157/8159 Chih Kai Hsu
2026-11-14  9:28   ` netdev-bot+sashiko
2026-11-10  3:24 ` [PATCH net-next v8 07/11] r8152: split RTL_VER_17 into QFN68 and QFN100 package variants Chih Kai Hsu
2026-11-14  9:28   ` netdev-bot+sashiko
2026-11-10  3:24 ` [PATCH net-next v8 08/11] r8152: split rtl8156_enable/up/down into per-generation functions Chih Kai Hsu
2026-11-10  3:24 ` [PATCH net-next v8 09/11] r8152: split r8157_hw_phy_cfg into RTL8157 and RTL8159 variants Chih Kai Hsu
2026-11-14  9:28   ` netdev-bot+sashiko
2026-11-10  3:24 ` [PATCH net-next v8 10/11] r8152: add TGPHY register access for RTL8157 and RTL8159 Chih Kai Hsu
2026-11-14  9:28   ` netdev-bot+sashiko
2026-11-10  3:24 ` [PATCH net-next v8 11/11] r8152: enable UPS for RTL8157 and RTL8159 QFN68 Chih Kai Hsu
2026-11-14  9:28   ` netdev-bot+sashiko
2026-11-10  5:04 ` [PATCH net-next v8 00/11] r8152: refactor and extend RTL8157/8159 support netdev-bot+sinfo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=179464851113.2199510.6038830098036518229@kernel.org \
    --to=netdev-bot+sashiko@kernel.org \
    --cc=andrew+netdev@lunn.ch \
    --cc=bjorn@mork.no \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=hsu.chih.kai@realtek.com \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=mail@birger-koblitz.de \
    --cc=netdev@vger.kernel.org \
    --cc=nic_swsd@realtek.com \
    --cc=pabeni@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®