RE: [PATCH net] net: enetc: fix the netc-lib driver build dependency

From: Wei Fang
Date: Tue Jun 03 2025 - 22:44:46 EST


> Ok, so to summarize, you want nxp-netc-lib.ko to be separate from
> fsl-enetc-core.ko, because when you upstream the switch driver (also a
> consumer of ntmp.o), you want it to depend just on nxp-netc-lib.ko but
> not on the full fsl-enetc-core.ko.
> If the only reverse dependency of NXP_NETC_LIB, NXP_ENETC4, becomes m,
> then NXP_NETC_LIB also becomes m, but in reality, FSL_ENETC_CORE, via
> cbdr.o, still depends on symbols from NXP_NETC_LIB.
>
> So you influence NXP_NETC_LIB to not become m when its only selecter is m,
> instead stay y.
>
> Won't this need to change, and become even more complicated when
> NXP_NETC_LIB gains another selecter, the switch driver?

The dependency needs to be updated as follows when switch driver is
added, to avoid the compilation errors.

default y if FSL_ENETC_CORE=y && (NXP_ENETC4=m || NET_DSA_NETC_SWITCH=m)

>
> > help
> > This module provides common functionalities for both ENETC and NETC
> > Switch, such as NETC Table Management Protocol (NTMP) 2.0, common tc
> > --
> > 2.34.1
> >
>
> What about this interpretation? cbdr.o uses symbols from NXP_NETC_LIB,
> so the Kconfig option controlling cbdr.o, aka FSL_ENETC_CORE, should
> select NXP_NETC_LIB. This solves the problem in a way which is more
> logical to me, and doesn't need to change when the switch is later added.
>

Yes, this is also a solution. I thought that LS1028A does not need the netc-lib
driver at all. Doing so will result in netc-lib being compiled on the LS1028A
platform, which may be unacceptable, so I did not do this. Since you think
this is better, I will apply this solution next. Thanks.

> Then you can drop "select NXP_NETC_LIB" from NXP_ENETC4, because the
> dependency will transfer transitively via FSL_ENETC_CORE.
>
> diff --git a/drivers/net/ethernet/freescale/enetc/Kconfig
> b/drivers/net/ethernet/freescale/enetc/Kconfig
> index 616ea22ceabc..ef31eea0fc50 100644
> --- a/drivers/net/ethernet/freescale/enetc/Kconfig
> +++ b/drivers/net/ethernet/freescale/enetc/Kconfig
> @@ -1,6 +1,7 @@
> # SPDX-License-Identifier: GPL-2.0
> config FSL_ENETC_CORE
> tristate
> + select NXP_NETC_LIB
> help
> This module supports common functionality between the PF and VF
> drivers for the NXP ENETC controller.
> @@ -47,7 +48,6 @@ config NXP_ENETC4
> select FSL_ENETC_CORE
> select FSL_ENETC_MDIO
> select NXP_ENETC_PF_COMMON
> - select NXP_NETC_LIB
> select PHYLINK
> select DIMLIB
> help