Linux USB
 help / color / mirror / Atom feed
From: Linmao Li <lilinmao@kylinos.cn>
To: Andrew Lunn <andrew@lunn.ch>, Hayes Wang <hayeswang@realtek.com>
Cc: Andrew Lunn <andrew+netdev@lunn.ch>,
	"David S . Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@kernel.org>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Chih Kai Hsu <hsu.chih.kai@realtek.com>,
	nic_swsd <nic_swsd@realtek.com>,
	Birger Koblitz <mail@birger-koblitz.de>,
	Xiangqian Zhang <zhangxiangqian@kylinos.cn>,
	"linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"stable@vger.kernel.org" <stable@vger.kernel.org>
Subject: Re: [PATCH net v2] r8152: Use BMSR to detect the link state
Date: Fri, 9 Oct 2026 15:16:14 +0800	[thread overview]
Message-ID: <2bd3886a-da6e-4703-bd7a-9baa32bfd2f4@kylinos.cn> (raw)
In-Reply-To: <7a8d21bd-3484-4120-abd6-f7290f919b7d@lunn.ch>


在 2026/10/7 0:10, Andrew Lunn 写道:
> On Tue, Oct 06, 2026 at 08:28:21AM +0000, Hayes Wang wrote:
>> Linmao Li <lilinmao@kylinos.cn>
>>> Sent: Monday, October 5, 2026 6:53 PM
>> [...]
>>> r8152 detects carrier from PLA_PHYSTATUS without reading BMSR, so
>>> BMSR_LSTATUS can still be latched low when the carrier comes up.
>>> Since commit f6f2e946aa4d ("net: mii: Fix the Speed display when the network
>>> cable is not connected"), the first speed query after link up can then report
>>> SPEED_UNKNOWN, leaving NetworkManager at 0 Mb/s until the next carrier
>>> change.
>>>
>>> Use BMSR_LSTATUS in set_carrier() and rtl8152_runtime_resume(), so the
>>> driver consumes the latched link down itself. If the first read still reports link
>>> down, the next link-up notification triggers another read and brings the carrier
>>> up.
>>>
>>> Tested on an RTL8153B with a 6.6-based kernel. In 5 rebinds and 6 cable
>>> replugs, the first read returned LSTATUS=0, a second link-up notification came
>>> about 32 ms later, the second read returned
>>> LSTATUS=1 and the carrier went up; NetworkManager reported 1000 Mb/s.
>>> Runtime suspend/resume with the link up did not change the carrier.
>> I think this patch may introduce a new issue.
>>
>> Our newer ICs do not generate periodic link-status notifications. They generate a
>> notification only when the link status changes. Therefore, with your patch, BMSR
>> will not be read a second time until the next link-status change.
> But the link status in BMSR does change.
>
> You read it once and get the latched value. That clears the latch, so
> the link status changes to the current version.
>
> Now, 802.3 C22 has no support for interrupts, that is a vendor
> extension. But if you are not generating an interrupt when BMSR
> changes, i would say that is broken.
>
> 	 Andrew
Hi Hayes, Andrew,

Thanks. Since the newer ICs notify only when the link status changes,
the driver cannot rely on another link up notification after the link
has settled, so v2 can leave the carrier off when the first read
returns the latched link down.

Before sending v3, which approach would you prefer? Both fixed the
problem in my tests on an RTL8153B with v7.3-rc6:

a) Keep carrier detection on PLA_PHYSTATUS and read BMSR once before
    carrier on, only to clear the latch. This is the option I asked
    about on v1.

b) Detect carrier from BMSR and read it again when the first read
    returns link down, as genphy_update_link() does in interrupt mode.

Neither depends on another notification. Neither reports a short link
drop that recovers before the link work runs: with a) a later speed
query still sees the latched link down, with b) the latch is cleared.

Hayes, for b): is BMSR_LSTATUS reliable as the carrier source on all
chips supported by r8152?

Thanks,
Linmao

pw-bot: cr

  reply	other threads:[~2026-10-09  7:16 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-05 10:52 [PATCH net v2] r8152: Use BMSR to detect the link state Linmao Li
2026-10-05 18:32 ` Birger Koblitz
2026-10-09  7:18   ` Linmao Li
2026-10-06  8:28 ` Hayes Wang
2026-10-06 16:10   ` Andrew Lunn
2026-10-09  7:16     ` Linmao Li [this message]
2026-10-09 12:22       ` Andrew Lunn
2026-10-06 22:55 ` netdev-bot+sashiko

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=2bd3886a-da6e-4703-bd7a-9baa32bfd2f4@kylinos.cn \
    --to=lilinmao@kylinos.cn \
    --cc=andrew+netdev@lunn.ch \
    --cc=andrew@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=edumazet@kernel.org \
    --cc=hayeswang@realtek.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 \
    --cc=stable@vger.kernel.org \
    --cc=zhangxiangqian@kylinos.cn \
    /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