Vladimir Oltean b0e8181762 net: build all switchdev drivers as modules when the bridge is a module
Currently, all drivers depend on the bool CONFIG_NET_SWITCHDEV, but only
the drivers that call some sort of function exported by the bridge, like
br_vlan_enabled() or whatever, have an extra dependency on CONFIG_BRIDGE.

Since the blamed commit, all switchdev drivers have a functional
dependency upon switchdev_bridge_port_{,un}offload(), which is a pair of
functions exported by the bridge module and not by the bridge-independent
part of CONFIG_NET_SWITCHDEV.

Problems appear when we have:

CONFIG_BRIDGE=m
CONFIG_NET_SWITCHDEV=y
CONFIG_TI_CPSW_SWITCHDEV=y

because cpsw, am65_cpsw and sparx5 will then be built-in but they will
call a symbol exported by a loadable module. This is not possible and
will result in the following build error:

drivers/net/ethernet/ti/cpsw_new.o: in function `cpsw_netdevice_event':
drivers/net/ethernet/ti/cpsw_new.c:1520: undefined reference to
					`switchdev_bridge_port_offload'
drivers/net/ethernet/ti/cpsw_new.c:1537: undefined reference to
					`switchdev_bridge_port_unoffload'

As mentioned, the other switchdev drivers don't suffer from this because
switchdev_bridge_port_offload() is not the first symbol exported by the
bridge that they are calling, so they already needed to deal with this
in the same way.

Fixes: 2f5dc00f7a3e ("net: bridge: switchdev: let drivers inform which bridge ports are offloaded")
Reported-by: Linux Kernel Functional Testing <lkft@linaro.org>
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2021-07-27 11:12:57 +01:00
..
2021-07-07 13:30:01 -07:00
2021-07-10 09:22:44 -07:00
2021-07-16 12:31:44 -07:00
2021-06-30 15:34:19 -06:00
2021-07-10 09:22:44 -07:00
2021-06-29 10:53:48 -07:00
2021-07-13 15:15:17 +02:00
2021-07-16 23:01:25 +02:00
2021-07-05 12:10:34 -07:00
2021-07-16 11:14:54 -07:00
2021-07-10 11:53:06 -07:00
2021-07-03 11:13:22 -07:00
2021-07-05 14:08:24 -07:00
2021-07-09 15:35:13 +02:00
2021-07-05 14:08:24 -07:00
2021-07-05 13:51:41 -07:00
2021-06-30 12:12:56 -07:00
2021-07-05 13:51:41 -07:00
2021-07-05 14:08:24 -07:00
2021-07-22 09:51:38 -07:00
2021-07-04 11:55:13 -07:00
2021-07-16 12:31:44 -07:00
2021-07-03 10:54:08 -07:00
2021-07-05 13:51:41 -07:00
2021-07-21 12:37:49 -07:00
2021-07-07 10:50:03 -07:00
2021-07-10 09:46:20 -07:00
2021-07-10 16:19:10 -07:00
2021-07-17 13:09:23 -07:00
2021-07-10 09:46:20 -07:00
2021-07-21 12:41:41 -07:00
2021-07-05 14:08:24 -07:00
2021-07-09 12:05:33 -07:00
2021-07-03 11:49:33 -07:00
2021-07-16 11:14:54 -07:00
2021-07-09 11:06:29 -07:00
2021-07-07 12:57:46 -07:00
2021-07-07 11:07:13 -07:00
2021-06-29 11:21:35 -07:00