From: Christian Marangi <ansuelsmth@gmail.com>
To: Benno Lossin <lossin@kernel.org>
Cc: FUJITA Tomonori <fujita.tomonori@gmail.com>,
andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com,
kuba@kernel.org, pabeni@redhat.com, robh@kernel.org,
krzk+dt@kernel.org, conor+dt@kernel.org, hkallweit1@gmail.com,
linux@armlinux.org.uk, florian.fainelli@broadcom.com,
bcm-kernel-feedback-list@broadcom.com, kabel@kernel.org,
andrei.botila@oss.nxp.com, tmgross@umich.edu, ojeda@kernel.org,
alex.gaynor@gmail.com, boqun.feng@gmail.com, gary@garyguo.net,
bjorn3_gh@protonmail.com, benno.lossin@proton.me,
a.hindborg@kernel.org, aliceryhl@google.com, dakr@kernel.org,
sd@queasysnail.net, michael@fossekall.de, daniel@makrotopia.org,
netdev@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org
Subject: Re: [net-next PATCH v10 7/7] rust: net::phy sync with match_phy_device C changes
Date: Fri, 16 May 2025 17:12:19 +0200 [thread overview]
Message-ID: <682755d8.050a0220.3c78c8.a604@mx.google.com> (raw)
In-Reply-To: <D9XO2721HEQI.3BGSHJXCHPTL@kernel.org>
On Fri, May 16, 2025 at 04:48:53PM +0200, Benno Lossin wrote:
> On Fri May 16, 2025 at 2:30 PM CEST, FUJITA Tomonori wrote:
> > On Thu, 15 May 2025 13:27:12 +0200
> > Christian Marangi <ansuelsmth@gmail.com> wrote:
> >> @@ -574,6 +577,23 @@ pub const fn create_phy_driver<T: Driver>() -> DriverVTable {
> >> /// This trait is used to create a [`DriverVTable`].
> >> #[vtable]
> >> pub trait Driver {
> >> + /// # Safety
> >> + ///
> >> + /// For the duration of `'a`,
> >> + /// - the pointer must point at a valid `phy_driver`, and the caller
> >> + /// must be in a context where all methods defined on this struct
> >> + /// are safe to call.
> >> + unsafe fn from_raw<'a>(ptr: *const bindings::phy_driver) -> &'a Self
> >> + where
> >> + Self: Sized,
> >> + {
> >> + // CAST: `Self` is a `repr(transparent)` wrapper around `bindings::phy_driver`.
> >> + let ptr = ptr.cast::<Self>();
> >> + // SAFETY: by the function requirements the pointer is valid and we have unique access for
> >> + // the duration of `'a`.
> >> + unsafe { &*ptr }
> >> + }
> >
> > We might need to update the comment. phy_driver is const so I think
> > that we can access to it any time.
>
> Why is any type implementing `Driver` a transparent wrapper around
> `bindings::phy_driver`?
>
Is this referred to a problem with using from_raw or more of a general
question on how the rust wrapper are done for phy code?
> >> /// Defines certain other features this PHY supports.
> >> /// It is a combination of the flags in the [`flags`] module.
> >> const FLAGS: u32 = 0;
> >> @@ -602,7 +622,7 @@ fn get_features(_dev: &mut Device) -> Result {
> >>
> >> /// Returns true if this is a suitable driver for the given phydev.
> >> /// If not implemented, matching is based on [`Driver::PHY_DEVICE_ID`].
> >> - fn match_phy_device(_dev: &Device) -> bool {
> >> + fn match_phy_device<T: Driver>(_dev: &mut Device, _drv: &T) -> bool {
> >> false
> >> }
> >
> > I think that it could be a bit simpler:
> >
> > fn match_phy_device(_dev: &mut Device, _drv: &Self) -> bool
> >
> > Or making it a trait method might be more idiomatic?
> >
> > fn match_phy_device(&self, _dev: &mut Device) -> bool
>
> Yeah that would make most sense.
>
I think
fn match_phy_device(_dev: &mut Device, _drv: &Self) -> bool
more resemble the C parallel function so I think this suite the best,
should make it easier to port if ever (am I wrong?)
--
Ansuel
next prev parent reply other threads:[~2025-05-16 15:12 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-15 11:27 [net-next PATCH v10 0/7] net: phy: Add support for new Aeonsemi PHYs Christian Marangi
2025-05-15 11:27 ` [net-next PATCH v10 1/7] net: phy: pass PHY driver to .match_phy_device OP Christian Marangi
2025-05-15 11:27 ` [net-next PATCH v10 2/7] net: phy: bcm87xx: simplify " Christian Marangi
2025-05-15 11:27 ` [net-next PATCH v10 3/7] net: phy: nxp-c45-tja11xx: " Christian Marangi
2025-05-15 11:27 ` [net-next PATCH v10 4/7] net: phy: introduce genphy_match_phy_device() Christian Marangi
2025-05-15 11:27 ` [net-next PATCH v10 5/7] net: phy: Add support for Aeonsemi AS21xxx PHYs Christian Marangi
2025-05-15 11:27 ` [net-next PATCH v10 6/7] dt-bindings: net: Document support for Aeonsemi PHYs Christian Marangi
2025-05-15 11:27 ` [net-next PATCH v10 7/7] rust: net::phy sync with match_phy_device C changes Christian Marangi
2025-05-15 11:49 ` Benno Lossin
2025-05-15 11:51 ` Christian Marangi
2025-05-15 12:01 ` Benno Lossin
2025-05-16 11:56 ` kernel test robot
2025-05-16 12:30 ` FUJITA Tomonori
2025-05-16 14:48 ` Benno Lossin
2025-05-16 15:12 ` Christian Marangi [this message]
2025-05-16 20:16 ` Benno Lossin
2025-05-17 6:27 ` FUJITA Tomonori
2025-05-17 8:06 ` Benno Lossin
2025-05-17 13:13 ` FUJITA Tomonori
2025-05-17 19:02 ` Benno Lossin
2025-05-17 20:09 ` Christian Marangi
2025-05-18 7:13 ` Benno Lossin
2025-05-19 12:00 ` FUJITA Tomonori
2025-05-19 12:32 ` Benno Lossin
2025-05-19 12:44 ` FUJITA Tomonori
2025-05-19 12:51 ` Benno Lossin
2025-05-19 12:58 ` FUJITA Tomonori
2025-05-16 15:10 ` Christian Marangi
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=682755d8.050a0220.3c78c8.a604@mx.google.com \
--to=ansuelsmth@gmail.com \
--cc=a.hindborg@kernel.org \
--cc=alex.gaynor@gmail.com \
--cc=aliceryhl@google.com \
--cc=andrei.botila@oss.nxp.com \
--cc=andrew+netdev@lunn.ch \
--cc=bcm-kernel-feedback-list@broadcom.com \
--cc=benno.lossin@proton.me \
--cc=bjorn3_gh@protonmail.com \
--cc=boqun.feng@gmail.com \
--cc=conor+dt@kernel.org \
--cc=dakr@kernel.org \
--cc=daniel@makrotopia.org \
--cc=davem@davemloft.net \
--cc=devicetree@vger.kernel.org \
--cc=edumazet@google.com \
--cc=florian.fainelli@broadcom.com \
--cc=fujita.tomonori@gmail.com \
--cc=gary@garyguo.net \
--cc=hkallweit1@gmail.com \
--cc=kabel@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=lossin@kernel.org \
--cc=michael@fossekall.de \
--cc=netdev@vger.kernel.org \
--cc=ojeda@kernel.org \
--cc=pabeni@redhat.com \
--cc=robh@kernel.org \
--cc=rust-for-linux@vger.kernel.org \
--cc=sd@queasysnail.net \
--cc=tmgross@umich.edu \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.