Re: [PATCH v2 3/3] net: phy: add Rust Asix PHY driver

Greg KH
2023-10-06T14:12:27Z

On Fri, Oct 06, 2023 at 10:53:25PM +0900, FUJITA Tomonori wrote:
> On Fri, 6 Oct 2023 12:31:59 +0200
> Greg KH <gregkh@linuxfoundation.org> wrote:
>
> > On Fri, Oct 06, 2023 at 06:49:11PM +0900, FUJITA Tomonori wrote:
> >> +config AX88796B_RUST_PHY
> >> + bool "Rust reference driver"
> >> + depends on RUST && AX88796B_PHY
> >> + default n
> >
> > Nit, "n" is always the default, there is no need for this line.
>
> Understood, I'll remove this line.
>
> >> + help
> >> + Uses the Rust version driver for Asix PHYs.
> >
> > You need more text here please. Provide a better description of what
> > hardware is supported and the name of the module if it is built aas a
> > module.
> >
> > Also that if you select this one, the C driver will not be built (which
> > is not expressed in the Kconfig language, why not?
>
> Because the way to load a PHY driver module can't handle multiple
> modules with the same phy id (a NIC driver loads a PHY driver module).
> There is no machinism to specify which PHY driver module should be
> loaded when multiple PHY modules have the same phy id (as far as I know).

Sorry, I know that, I mean I am pretty sure you can express this "one or
the other" type of restriction in Kconfig, no need to encode it in the
Makefile logic.

Try doing "depens on AX88796B_PHY=n" as the dependency for the rust
driver.

> The Kconfig file would be like the following. AX88796B_RUST_PHY
> depends on AX88796B_PHY so the description of AX88796B_PHY is enough?
> I'll add the name of the module.
>
>
> config AX88796B_PHY
> tristate "Asix PHYs"
> help
> Currently supports the Asix Electronics PHY found in the X-Surf 100
> AX88796B package.
>
> config AX88796B_RUST_PHY
> bool "Rust reference driver"
> depends on RUST && AX88796B_PHY
> default n
> help
> Uses the Rust version driver for Asix PHYs.

"This is the rust version of a driver to support... It will be
called..."

>
> >> +
> >> config BROADCOM_PHY
> >> tristate "Broadcom 54XX PHYs"
> >> select BCM_NET_PHYLIB
> >> diff --git a/drivers/net/phy/Makefile b/drivers/net/phy/Makefile
> >> index c945ed9bd14b..58d7dfb095ab 100644
> >> --- a/drivers/net/phy/Makefile
> >> +++ b/drivers/net/phy/Makefile
> >> @@ -41,7 +41,11 @@ aquantia-objs += aquantia_hwmon.o
> >> endif
> >> obj-$(CONFIG_AQUANTIA_PHY) += aquantia.o
> >> obj-$(CONFIG_AT803X_PHY) += at803x.o
> >> -obj-$(CONFIG_AX88796B_PHY) += ax88796b.o
> >> +ifdef CONFIG_AX88796B_RUST_PHY
> >> + obj-$(CONFIG_AX88796B_PHY) += ax88796b_rust.o
> >> +else
> >> + obj-$(CONFIG_AX88796B_PHY) += ax88796b.o
> >> +endif
> >
> > This can be expressed in Kconfig, no need to put this here, right?
>
> Not sure. Is it possible? If we allow both modules to be built, I
> guess it's possible though.

see above, this is expressed in the Kconfig language and then no ifdef
is needed here at all.

thanks,

greg k-h