[PATCH] switchdev: add Kconfig dependencies for bridge

Subsystems: mellanox ethernet switch drivers, mellanox mlx5 core vpi driver, netronome ethernet drivers, networking drivers, networking [general], switchdev, the rest

STALE1831d

9 messages, 3 authors, 2021-08-02 · open the first message on its own page

[PATCH] switchdev: add Kconfig dependencies for bridge

From: Arnd Bergmann <arnd@kernel.org>
Date: 2021-08-02 14:48:25

From: Arnd Bergmann <arnd@arndb.de>

Multiple switchdev drivers depend on CONFIG_NET_SWITCHDEV in Kconfig,
but have also gained a dependency on the bridge driver as they now
call switchdev_bridge_port_offload():

drivers/net/ethernet/microchip/sparx5/sparx5_switchdev.o: In function `sparx5_netdevice_event':
sparx5_switchdev.c:(.text+0x3cc): undefined reference to `switchdev_bridge_port_offload'
drivers/net/ethernet/ti/cpsw_new.o: In function `cpsw_netdevice_event':
cpsw_new.c:(.text+0x1098): undefined reference to `switchdev_bridge_port_offload'

Some of these drivers already have a 'BRIDGE || !BRIDGE' dependency
that avoids the link failure, but the 'rocker' driver was missing this

For MLXSW/MLX5, SPARX5_SWITCH, and TI_K3_AM65_CPSW_NUSS, the
driver can conditionally use switchdev support, which is then guarded
by another Kconfig symbol. For these, add a dependency on a new Kconfig
symbol NET_MAY_USE_SWITCHDEV that is defined to correctly model the
dependency: if switchdev support is enabled, these drivers cannot be
built-in when bridge support is in a module, but if either bridge or
switchdev is disabled, or both are built-in, there is no such restriction.

Fixes: 2f5dc00f7a3e ("net: bridge: switchdev: let drivers inform which bridge ports are offloaded")
Fixes: b0e81817629a ("net: build all switchdev drivers as modules when the bridge is a module")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
This version seems to pass my randconfig builds for the moment,
but that doesn't mean it's correct either. Please have a closer
look before this gets applied.
---
 drivers/net/ethernet/mellanox/mlx5/core/Kconfig | 1 +
 drivers/net/ethernet/mellanox/mlxsw/Kconfig     | 1 +
 drivers/net/ethernet/netronome/Kconfig          | 1 +
 drivers/net/ethernet/ti/Kconfig                 | 1 +
 net/switchdev/Kconfig                           | 5 +++++
 5 files changed, 9 insertions(+)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/Kconfig b/drivers/net/ethernet/mellanox/mlx5/core/Kconfig
index e1a5a79e27c7..3a752e57c1e5 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/Kconfig
+++ b/drivers/net/ethernet/mellanox/mlx5/core/Kconfig
@@ -12,6 +12,7 @@ config MLX5_CORE
 	depends on MLXFW || !MLXFW
 	depends on PTP_1588_CLOCK || !PTP_1588_CLOCK
 	depends on PCI_HYPERV_INTERFACE || !PCI_HYPERV_INTERFACE
+	depends on NET_MAY_USE_SWITCHDEV
 	help
 	  Core driver for low level functionality of the ConnectX-4 and
 	  Connect-IB cards by Mellanox Technologies.
diff --git a/drivers/net/ethernet/mellanox/mlxsw/Kconfig b/drivers/net/ethernet/mellanox/mlxsw/Kconfig
index 12871c8dc7c1..dee3925bdaea 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/Kconfig
+++ b/drivers/net/ethernet/mellanox/mlxsw/Kconfig
@@ -5,6 +5,7 @@
 
 config MLXSW_CORE
 	tristate "Mellanox Technologies Switch ASICs support"
+	depends on NET_MAY_USE_SWITCHDEV
 	select NET_DEVLINK
 	select MLXFW
 	help
diff --git a/drivers/net/ethernet/netronome/Kconfig b/drivers/net/ethernet/netronome/Kconfig
index b82758d5beed..a298d19e8383 100644
--- a/drivers/net/ethernet/netronome/Kconfig
+++ b/drivers/net/ethernet/netronome/Kconfig
@@ -21,6 +21,7 @@ config NFP
 	depends on PCI && PCI_MSI
 	depends on VXLAN || VXLAN=n
 	depends on TLS && TLS_DEVICE || TLS_DEVICE=n
+	depends on NET_MAY_USE_SWITCHDEV
 	select NET_DEVLINK
 	select CRC32
 	help
diff --git a/drivers/net/ethernet/ti/Kconfig b/drivers/net/ethernet/ti/Kconfig
index 07192613256e..a73c6c236b25 100644
--- a/drivers/net/ethernet/ti/Kconfig
+++ b/drivers/net/ethernet/ti/Kconfig
@@ -93,6 +93,7 @@ config TI_CPTS
 config TI_K3_AM65_CPSW_NUSS
 	tristate "TI K3 AM654x/J721E CPSW Ethernet driver"
 	depends on OF && TI_K3_UDMA_GLUE_LAYER
+	depends on NET_MAY_USE_SWITCHDEV
 	select NET_DEVLINK
 	select TI_DAVINCI_MDIO
 	imply PHY_TI_GMII_SEL
diff --git a/net/switchdev/Kconfig b/net/switchdev/Kconfig
index 18a2d980e11d..3b0e627a4519 100644
--- a/net/switchdev/Kconfig
+++ b/net/switchdev/Kconfig
@@ -12,3 +12,8 @@ config NET_SWITCHDEV
 	  meaning of the word "switch". This include devices supporting L2/L3 but
 	  also various flow offloading chips, including switches embedded into
 	  SR-IOV NICs.
+
+config NET_MAY_USE_SWITCHDEV
+	def_tristate y
+	depends on NET_SWITCHDEV || NET_SWITCHDEV=n
+	depends on BRIDGE || NET_SWITCHDEV=n
-- 
2.29.2

Re: [PATCH] switchdev: add Kconfig dependencies for bridge

From: Simon Horman <hidden>
Date: 2021-08-02 16:23:07

On Mon, Aug 02, 2021 at 04:47:28PM +0200, Arnd Bergmann wrote:
quoted hunk
From: Arnd Bergmann <arnd@arndb.de>

Multiple switchdev drivers depend on CONFIG_NET_SWITCHDEV in Kconfig,
but have also gained a dependency on the bridge driver as they now
call switchdev_bridge_port_offload():

drivers/net/ethernet/microchip/sparx5/sparx5_switchdev.o: In function `sparx5_netdevice_event':
sparx5_switchdev.c:(.text+0x3cc): undefined reference to `switchdev_bridge_port_offload'
drivers/net/ethernet/ti/cpsw_new.o: In function `cpsw_netdevice_event':
cpsw_new.c:(.text+0x1098): undefined reference to `switchdev_bridge_port_offload'

Some of these drivers already have a 'BRIDGE || !BRIDGE' dependency
that avoids the link failure, but the 'rocker' driver was missing this

For MLXSW/MLX5, SPARX5_SWITCH, and TI_K3_AM65_CPSW_NUSS, the
driver can conditionally use switchdev support, which is then guarded
by another Kconfig symbol. For these, add a dependency on a new Kconfig
symbol NET_MAY_USE_SWITCHDEV that is defined to correctly model the
dependency: if switchdev support is enabled, these drivers cannot be
built-in when bridge support is in a module, but if either bridge or
switchdev is disabled, or both are built-in, there is no such restriction.

Fixes: 2f5dc00f7a3e ("net: bridge: switchdev: let drivers inform which bridge ports are offloaded")
Fixes: b0e81817629a ("net: build all switchdev drivers as modules when the bridge is a module")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
This version seems to pass my randconfig builds for the moment,
but that doesn't mean it's correct either. Please have a closer
look before this gets applied.
---
 drivers/net/ethernet/mellanox/mlx5/core/Kconfig | 1 +
 drivers/net/ethernet/mellanox/mlxsw/Kconfig     | 1 +
 drivers/net/ethernet/netronome/Kconfig          | 1 +
 drivers/net/ethernet/ti/Kconfig                 | 1 +
 net/switchdev/Kconfig                           | 5 +++++
 5 files changed, 9 insertions(+)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/Kconfig b/drivers/net/ethernet/mellanox/mlx5/core/Kconfig
index e1a5a79e27c7..3a752e57c1e5 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/Kconfig
+++ b/drivers/net/ethernet/mellanox/mlx5/core/Kconfig
@@ -12,6 +12,7 @@ config MLX5_CORE
 	depends on MLXFW || !MLXFW
 	depends on PTP_1588_CLOCK || !PTP_1588_CLOCK
 	depends on PCI_HYPERV_INTERFACE || !PCI_HYPERV_INTERFACE
+	depends on NET_MAY_USE_SWITCHDEV
 	help
 	  Core driver for low level functionality of the ConnectX-4 and
 	  Connect-IB cards by Mellanox Technologies.
MLX5_CORE does not appear to cover code that calls
switchdev_bridge_port_offload.
quoted hunk
diff --git a/drivers/net/ethernet/mellanox/mlxsw/Kconfig b/drivers/net/ethernet/mellanox/mlxsw/Kconfig
index 12871c8dc7c1..dee3925bdaea 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/Kconfig
+++ b/drivers/net/ethernet/mellanox/mlxsw/Kconfig
@@ -5,6 +5,7 @@
 
 config MLXSW_CORE
 	tristate "Mellanox Technologies Switch ASICs support"
+	depends on NET_MAY_USE_SWITCHDEV
 	select NET_DEVLINK
 	select MLXFW
 	help
I think it is MLXSW_SPECTRUM rather than MLXSW_CORE
that controls compilation of spectrum_switchdev.c
which calls switchdev_bridge_port_offload.

But MLXSW_SPECTRUM seems to already depend on BRIDGE || BRIDGE=n
quoted hunk
diff --git a/drivers/net/ethernet/netronome/Kconfig b/drivers/net/ethernet/netronome/Kconfig
index b82758d5beed..a298d19e8383 100644
--- a/drivers/net/ethernet/netronome/Kconfig
+++ b/drivers/net/ethernet/netronome/Kconfig
@@ -21,6 +21,7 @@ config NFP
 	depends on PCI && PCI_MSI
 	depends on VXLAN || VXLAN=n
 	depends on TLS && TLS_DEVICE || TLS_DEVICE=n
+	depends on NET_MAY_USE_SWITCHDEV
 	select NET_DEVLINK
 	select CRC32
 	help
This seems wrong, the NFP driver doesn't call
switchdev_bridge_port_offload()
quoted hunk
diff --git a/drivers/net/ethernet/ti/Kconfig b/drivers/net/ethernet/ti/Kconfig
index 07192613256e..a73c6c236b25 100644
--- a/drivers/net/ethernet/ti/Kconfig
+++ b/drivers/net/ethernet/ti/Kconfig
@@ -93,6 +93,7 @@ config TI_CPTS
 config TI_K3_AM65_CPSW_NUSS
 	tristate "TI K3 AM654x/J721E CPSW Ethernet driver"
 	depends on OF && TI_K3_UDMA_GLUE_LAYER
+	depends on NET_MAY_USE_SWITCHDEV
 	select NET_DEVLINK
 	select TI_DAVINCI_MDIO
 	imply PHY_TI_GMII_SEL
I believe this has already been addressed by the following patch in net

b0e81817629a ("net: build all switchdev drivers as modules when the bridge is a module")
quoted hunk
diff --git a/net/switchdev/Kconfig b/net/switchdev/Kconfig
index 18a2d980e11d..3b0e627a4519 100644
--- a/net/switchdev/Kconfig
+++ b/net/switchdev/Kconfig
@@ -12,3 +12,8 @@ config NET_SWITCHDEV
 	  meaning of the word "switch". This include devices supporting L2/L3 but
 	  also various flow offloading chips, including switches embedded into
 	  SR-IOV NICs.
+
+config NET_MAY_USE_SWITCHDEV
+	def_tristate y
+	depends on NET_SWITCHDEV || NET_SWITCHDEV=n
+	depends on BRIDGE || NET_SWITCHDEV=n
-- 
2.29.2

Re: [PATCH] switchdev: add Kconfig dependencies for bridge

From: Arnd Bergmann <arnd@kernel.org>
Date: 2021-08-02 18:29:45

On Mon, Aug 2, 2021 at 6:23 PM Simon Horman [off-list ref] wrote:
On Mon, Aug 02, 2021 at 04:47:28PM +0200, Arnd Bergmann wrote:
quoted
---
This version seems to pass my randconfig builds for the moment,
but that doesn't mean it's correct either. Please have a closer
look before this gets applied.
Thank you for taking a look, it seems I have done a particularly bad
job rebasing
the patch on top of the previous fix, leaving only the wrong bits ;-)
quoted
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/Kconfig b/drivers/net/ethernet/mellanox/mlx5/core/Kconfig
index e1a5a79e27c7..3a752e57c1e5 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/Kconfig
+++ b/drivers/net/ethernet/mellanox/mlx5/core/Kconfig
@@ -12,6 +12,7 @@ config MLX5_CORE
      depends on MLXFW || !MLXFW
      depends on PTP_1588_CLOCK || !PTP_1588_CLOCK
      depends on PCI_HYPERV_INTERFACE || !PCI_HYPERV_INTERFACE
+     depends on NET_MAY_USE_SWITCHDEV
      help
        Core driver for low level functionality of the ConnectX-4 and
        Connect-IB cards by Mellanox Technologies.
MLX5_CORE does not appear to cover code that calls
switchdev_bridge_port_offload.
Ah right, I did get a link failure with my test build, but it was an
unrelated one:

ld: drivers/net/ethernet/mellanox/mlx5/core/esw/sample.o: in function
`mlx5_esw_sample_skb':
sample.c:(.text+0x5b4): undefined reference to `psample_sample_packet'

I think that one needs
--- a/drivers/net/ethernet/mellanox/mlx5/core/Kconfig
+++ b/drivers/net/ethernet/mellanox/mlx5/core/Kconfig
@@ -90,6 +90,7 @@ config MLX5_BRIDGE
 config MLX5_CLS_ACT
        bool "MLX5 TC classifier action support"
        depends on MLX5_ESWITCH && NET_CLS_ACT
+       depends on PSAMPLE=y || PSAMPLE=MLX5_CORE
        default y
        help
          mlx5 ConnectX offloads support for TC classifier action (NET_CLS_ACT),
but this is unrelated and I have not tested that.
quoted
diff --git a/drivers/net/ethernet/mellanox/mlxsw/Kconfig b/drivers/net/ethernet/mellanox/mlxsw/Kconfig
index 12871c8dc7c1..dee3925bdaea 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/Kconfig
+++ b/drivers/net/ethernet/mellanox/mlxsw/Kconfig
@@ -5,6 +5,7 @@

 config MLXSW_CORE
      tristate "Mellanox Technologies Switch ASICs support"
+     depends on NET_MAY_USE_SWITCHDEV
      select NET_DEVLINK
      select MLXFW
      help
I think it is MLXSW_SPECTRUM rather than MLXSW_CORE
that controls compilation of spectrum_switchdev.c
which calls switchdev_bridge_port_offload.

But MLXSW_SPECTRUM seems to already depend on BRIDGE || BRIDGE=n
Ok.
quoted
diff --git a/drivers/net/ethernet/netronome/Kconfig b/drivers/net/ethernet/netronome/Kconfig
index b82758d5beed..a298d19e8383 100644
--- a/drivers/net/ethernet/netronome/Kconfig
+++ b/drivers/net/ethernet/netronome/Kconfig
@@ -21,6 +21,7 @@ config NFP
      depends on PCI && PCI_MSI
      depends on VXLAN || VXLAN=n
      depends on TLS && TLS_DEVICE || TLS_DEVICE=n
+     depends on NET_MAY_USE_SWITCHDEV
      select NET_DEVLINK
      select CRC32
      help
This seems wrong, the NFP driver doesn't call
switchdev_bridge_port_offload()
Ah right, I actually noticed that earlier and then forgot to remove that hunk.

Also: is this actually intended or should the driver call
switchdev_bridge_port_offload() like the other switchdev drivers do?
quoted
diff --git a/drivers/net/ethernet/ti/Kconfig b/drivers/net/ethernet/ti/Kconfig
index 07192613256e..a73c6c236b25 100644
--- a/drivers/net/ethernet/ti/Kconfig
+++ b/drivers/net/ethernet/ti/Kconfig
@@ -93,6 +93,7 @@ config TI_CPTS
 config TI_K3_AM65_CPSW_NUSS
      tristate "TI K3 AM654x/J721E CPSW Ethernet driver"
      depends on OF && TI_K3_UDMA_GLUE_LAYER
+     depends on NET_MAY_USE_SWITCHDEV
      select NET_DEVLINK
      select TI_DAVINCI_MDIO
      imply PHY_TI_GMII_SEL
I believe this has already been addressed by the following patch in net

b0e81817629a ("net: build all switchdev drivers as modules when the bridge is a module")
I think the fix was wrong here, and that hunk should be reverted.
The dependency was added to a bool option, where it does not have
the intended effect.

I think this is the only remaining thing needed from my patch, so
the NET_MAY_USE_SWITCHDEV option is not needed either,
and it could be written as:
diff --git a/drivers/net/ethernet/ti/Kconfig b/drivers/net/ethernet/ti/Kconfig
index 07192613256e..e49006a96d49 100644
--- a/drivers/net/ethernet/ti/Kconfig
+++ b/drivers/net/ethernet/ti/Kconfig
@@ -93,6 +93,7 @@ config TI_CPTS
 config TI_K3_AM65_CPSW_NUSS
        tristate "TI K3 AM654x/J721E CPSW Ethernet driver"
        depends on OF && TI_K3_UDMA_GLUE_LAYER
+       depends on (BRIDGE && NET_SWITCHDEV) || BRIDGE=n || NET_SWITCHDEV=n
        select NET_DEVLINK
        select TI_DAVINCI_MDIO
        imply PHY_TI_GMII_SEL
@@ -110,7 +111,6 @@ config TI_K3_AM65_CPSW_NUSS
 config TI_K3_AM65_CPSW_SWITCHDEV
        bool "TI K3 AM654x/J721E CPSW Switch mode support"
        depends on TI_K3_AM65_CPSW_NUSS
-       depends on BRIDGE || BRIDGE=n
        depends on NET_SWITCHDEV
        help
         This enables switchdev support for TI K3 CPSWxG Ethernet
If this looks correct to you, I can submit it as a standalone patch.

      Arnd

Re: [PATCH] switchdev: add Kconfig dependencies for bridge

From: Simon Horman <hidden>
Date: 2021-08-02 18:51:34

On Mon, Aug 02, 2021 at 08:29:25PM +0200, Arnd Bergmann wrote:
On Mon, Aug 2, 2021 at 6:23 PM Simon Horman [off-list ref] wrote:
quoted
On Mon, Aug 02, 2021 at 04:47:28PM +0200, Arnd Bergmann wrote:
quoted
---
This version seems to pass my randconfig builds for the moment,
but that doesn't mean it's correct either. Please have a closer
look before this gets applied.
Thank you for taking a look, it seems I have done a particularly bad
job rebasing
the patch on top of the previous fix, leaving only the wrong bits ;-)
:)

...
quoted
quoted
diff --git a/drivers/net/ethernet/netronome/Kconfig b/drivers/net/ethernet/netronome/Kconfig
index b82758d5beed..a298d19e8383 100644
--- a/drivers/net/ethernet/netronome/Kconfig
+++ b/drivers/net/ethernet/netronome/Kconfig
@@ -21,6 +21,7 @@ config NFP
      depends on PCI && PCI_MSI
      depends on VXLAN || VXLAN=n
      depends on TLS && TLS_DEVICE || TLS_DEVICE=n
+     depends on NET_MAY_USE_SWITCHDEV
      select NET_DEVLINK
      select CRC32
      help
This seems wrong, the NFP driver doesn't call
switchdev_bridge_port_offload()
Ah right, I actually noticed that earlier and then forgot to remove that hunk.

Also: is this actually intended or should the driver call
switchdev_bridge_port_offload() like the other switchdev drivers do?
The NFP driver doesn't implement /use this part of the switchdev API.
It is intentional given the current scope of features implemented.
quoted hunk
quoted
quoted
diff --git a/drivers/net/ethernet/ti/Kconfig b/drivers/net/ethernet/ti/Kconfig
index 07192613256e..a73c6c236b25 100644
--- a/drivers/net/ethernet/ti/Kconfig
+++ b/drivers/net/ethernet/ti/Kconfig
@@ -93,6 +93,7 @@ config TI_CPTS
 config TI_K3_AM65_CPSW_NUSS
      tristate "TI K3 AM654x/J721E CPSW Ethernet driver"
      depends on OF && TI_K3_UDMA_GLUE_LAYER
+     depends on NET_MAY_USE_SWITCHDEV
      select NET_DEVLINK
      select TI_DAVINCI_MDIO
      imply PHY_TI_GMII_SEL
I believe this has already been addressed by the following patch in net

b0e81817629a ("net: build all switchdev drivers as modules when the bridge is a module")
I think the fix was wrong here, and that hunk should be reverted.
The dependency was added to a bool option, where it does not have
the intended effect.

I think this is the only remaining thing needed from my patch, so
the NET_MAY_USE_SWITCHDEV option is not needed either,
and it could be written as:
diff --git a/drivers/net/ethernet/ti/Kconfig b/drivers/net/ethernet/ti/Kconfig
index 07192613256e..e49006a96d49 100644
--- a/drivers/net/ethernet/ti/Kconfig
+++ b/drivers/net/ethernet/ti/Kconfig
@@ -93,6 +93,7 @@ config TI_CPTS
 config TI_K3_AM65_CPSW_NUSS
        tristate "TI K3 AM654x/J721E CPSW Ethernet driver"
        depends on OF && TI_K3_UDMA_GLUE_LAYER
+       depends on (BRIDGE && NET_SWITCHDEV) || BRIDGE=n || NET_SWITCHDEV=n
        select NET_DEVLINK
        select TI_DAVINCI_MDIO
        imply PHY_TI_GMII_SEL
@@ -110,7 +111,6 @@ config TI_K3_AM65_CPSW_NUSS
 config TI_K3_AM65_CPSW_SWITCHDEV
        bool "TI K3 AM654x/J721E CPSW Switch mode support"
        depends on TI_K3_AM65_CPSW_NUSS
-       depends on BRIDGE || BRIDGE=n
        depends on NET_SWITCHDEV
        help
         This enables switchdev support for TI K3 CPSWxG Ethernet
If this looks correct to you, I can submit it as a standalone patch.
Is there a conflict between your proposed change and the
presence of "depends on NET_SWITCHDEV" ?

BTW, I'm not sure I know how to compile TI_K3_AM65_CPSW_NUSS.
So I'm perhaps not the best arbiter of correctness here.

Re: [PATCH] switchdev: add Kconfig dependencies for bridge

From: Vladimir Oltean <vladimir.oltean@nxp.com>
Date: 2021-08-02 19:05:07

On Mon, Aug 02, 2021 at 08:29:25PM +0200, Arnd Bergmann wrote:
If this looks correct to you, I can submit it as a standalone patch.
I think it's easiest I just ask you to provide a .config that triggers
actual build failures and we can go from there.

Re: [PATCH] switchdev: add Kconfig dependencies for bridge

From: Arnd Bergmann <arnd@kernel.org>
Date: 2021-08-02 19:55:42

On Mon, Aug 2, 2021 at 9:05 PM Vladimir Oltean [off-list ref] wrote:
On Mon, Aug 02, 2021 at 08:29:25PM +0200, Arnd Bergmann wrote:
quoted
If this looks correct to you, I can submit it as a standalone patch.
I think it's easiest I just ask you to provide a .config that triggers
actual build failures and we can go from there.
This one is with an arm64 allmodconfig, plus

CONFIG_PTP_1588_CLOCK=y
CONFIG_TI_K3_AM65_CPTS=y
CONFIG_TI_K3_AM65_CPSW_NUSS=y

       Arnd

Re: [PATCH] switchdev: add Kconfig dependencies for bridge

From: Vladimir Oltean <vladimir.oltean@nxp.com>
Date: 2021-08-02 20:20:58

On Mon, Aug 02, 2021 at 09:55:20PM +0200, Arnd Bergmann wrote:
On Mon, Aug 2, 2021 at 9:05 PM Vladimir Oltean [off-list ref] wrote:
quoted
On Mon, Aug 02, 2021 at 08:29:25PM +0200, Arnd Bergmann wrote:
quoted
If this looks correct to you, I can submit it as a standalone patch.
I think it's easiest I just ask you to provide a .config that triggers
actual build failures and we can go from there.
This one is with an arm64 allmodconfig, plus

CONFIG_PTP_1588_CLOCK=y
CONFIG_TI_K3_AM65_CPTS=y
CONFIG_TI_K3_AM65_CPSW_NUSS=y
Yeah, ok, I remember now, I saw that TI_CPSW_SWITCHDEV is tristate, and
incorrectly thought that TI_K3_AM65_CPSW_SWITCHDEV (which is mostly a
copy-paste job of the main cpsw anyway, makes you cringe that they wrote
a separate driver for it) is tristate too.

The options are either to make TI_K3_AM65_CPSW_SWITCHDEV tristate like
TI_CPSW_SWITCHDEV is, and to edit the Makefile accordingly to make
am65-cpsw-switchdev.o part of obj-$(CONFIG_TI_K3_AM65_CPSW_SWITCHDEV),
or to extend the BRIDGE || BRIDGE=n dependency to TI_K3_AM65_CPSW_NUSS
which is the direct tristate dependency of CONFIG_TI_K3_AM65_CPSW_SWITCHDEV,
and to make CONFIG_TI_K3_AM65_CPSW_SWITCHDEV simply depend on BRIDGE.

Re: [PATCH] switchdev: add Kconfig dependencies for bridge

From: Arnd Bergmann <arnd@kernel.org>
Date: 2021-08-02 20:44:25

On Mon, Aug 2, 2021 at 10:21 PM Vladimir Oltean [off-list ref] wrote:
On Mon, Aug 02, 2021 at 09:55:20PM +0200, Arnd Bergmann wrote:
quoted
On Mon, Aug 2, 2021 at 9:05 PM Vladimir Oltean [off-list ref] wrote:
quoted
On Mon, Aug 02, 2021 at 08:29:25PM +0200, Arnd Bergmann wrote:
quoted
If this looks correct to you, I can submit it as a standalone patch.
I think it's easiest I just ask you to provide a .config that triggers
actual build failures and we can go from there.
This one is with an arm64 allmodconfig, plus

CONFIG_PTP_1588_CLOCK=y
CONFIG_TI_K3_AM65_CPTS=y
CONFIG_TI_K3_AM65_CPSW_NUSS=y
Yeah, ok, I remember now, I saw that TI_CPSW_SWITCHDEV is tristate, and
incorrectly thought that TI_K3_AM65_CPSW_SWITCHDEV (which is mostly a
copy-paste job of the main cpsw anyway, makes you cringe that they wrote
a separate driver for it) is tristate too.
Right.
The options are either to make TI_K3_AM65_CPSW_SWITCHDEV tristate like
TI_CPSW_SWITCHDEV is, and to edit the Makefile accordingly to make
am65-cpsw-switchdev.o part of obj-$(CONFIG_TI_K3_AM65_CPSW_SWITCHDEV),
This probably won't work as this is currently part of the ti-am65-cpsw-nuss.ko
module, so I would assume that it's not easy to separate from the main module.
or to extend the BRIDGE || BRIDGE=n dependency to TI_K3_AM65_CPSW_NUSS
which is the direct tristate dependency of CONFIG_TI_K3_AM65_CPSW_SWITCHDEV,
That would work, but it's slightly more heavy-handed than my proposal, as this
prevents TI_K3_AM65_CPSW_NUSS from being built-in when BRIDGE is a module,
even when switchdev support is completely disabled.
and to make CONFIG_TI_K3_AM65_CPSW_SWITCHDEV simply depend on BRIDGE.
This would not be needed then I think.

       Arnd

Re: [PATCH] switchdev: add Kconfig dependencies for bridge

From: Vladimir Oltean <vladimir.oltean@nxp.com>
Date: 2021-08-02 20:53:40

On Mon, Aug 02, 2021 at 10:44:04PM +0200, Arnd Bergmann wrote:
quoted
or to extend the BRIDGE || BRIDGE=n dependency to TI_K3_AM65_CPSW_NUSS
which is the direct tristate dependency of CONFIG_TI_K3_AM65_CPSW_SWITCHDEV,
That would work, but it's slightly more heavy-handed than my proposal, as this
prevents TI_K3_AM65_CPSW_NUSS from being built-in when BRIDGE is a module,
even when switchdev support is completely disabled.
quoted
and to make CONFIG_TI_K3_AM65_CPSW_SWITCHDEV simply depend on BRIDGE.
This would not be needed then I think.
I've tested this change according to your suggestion:
diff --git a/drivers/net/ethernet/ti/Kconfig b/drivers/net/ethernet/ti/Kconfig
index 7ac8e5ecbe97..a9980cfc504b 100644
--- a/drivers/net/ethernet/ti/Kconfig
+++ b/drivers/net/ethernet/ti/Kconfig
@@ -93,6 +93,7 @@ config TI_CPTS
 config TI_K3_AM65_CPSW_NUSS
 	tristate "TI K3 AM654x/J721E CPSW Ethernet driver"
 	depends on ARCH_K3 && OF && TI_K3_UDMA_GLUE_LAYER
+	depends on (BRIDGE && NET_SWITCHDEV) || BRIDGE=n || NET_SWITCHDEV=n
 	select NET_DEVLINK
 	select TI_DAVINCI_MDIO
 	imply PHY_TI_GMII_SEL
(1/2) Stage this hunk [y,n,q,a,d,j,J,g,/,e,?]? y
@@ -110,7 +111,6 @@ config TI_K3_AM65_CPSW_NUSS
 config TI_K3_AM65_CPSW_SWITCHDEV
 	bool "TI K3 AM654x/J721E CPSW Switch mode support"
 	depends on TI_K3_AM65_CPSW_NUSS
-	depends on BRIDGE || BRIDGE=n
 	depends on NET_SWITCHDEV
 	help
 	 This enables switchdev support for TI K3 CPSWxG Ethernet
and it does appear to work, so when you resubmit please feel free to add:

Reviewed-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Tested-by: Vladimir Oltean <vladimir.oltean@nxp.com>

Thanks and sorry for breaking the dependency chain yet again! It takes
time to learn this stuff.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help