Message ID | 20210212010531.2722925-1-olteanv@gmail.com (mailing list archive) |
---|---|
Headers | show |
Series | Cleanup in brport flags switchdev offload for DSA | expand |
On 12/02/2021 03:05, Vladimir Oltean wrote: > From: Vladimir Oltean <vladimir.oltean@nxp.com> > > The initial goal of this series was to have better support for > standalone ports mode on the DSA drivers like ocelot/felix and sja1105. > This turned out to require some API adjustments in both directions: > to the information presented to and by the switchdev notifier, and to > the API presented to the switch drivers by the DSA layer. > > Vladimir Oltean (9): > net: switchdev: propagate extack to port attributes > net: bridge: offload all port flags at once in br_setport > net: bridge: don't print in br_switchdev_set_port_flag > net: dsa: configure better brport flags when ports leave the bridge > net: switchdev: pass flags and mask to both {PRE_,}BRIDGE_FLAGS > attributes > net: dsa: act as ass passthrough for bridge port flags > net: mscc: ocelot: use separate flooding PGID for broadcast > net: mscc: ocelot: offload bridge port flags to device > net: dsa: sja1105: offload bridge port flags to device > > drivers/net/dsa/b53/b53_common.c | 91 ++++--- > drivers/net/dsa/b53/b53_priv.h | 2 - > drivers/net/dsa/mv88e6xxx/chip.c | 163 ++++++++++--- > drivers/net/dsa/mv88e6xxx/chip.h | 6 +- > drivers/net/dsa/mv88e6xxx/port.c | 52 ++-- > drivers/net/dsa/mv88e6xxx/port.h | 19 +- > drivers/net/dsa/ocelot/felix.c | 22 ++ > drivers/net/dsa/sja1105/sja1105.h | 2 + > drivers/net/dsa/sja1105/sja1105_main.c | 222 +++++++++++++++++- > drivers/net/dsa/sja1105/sja1105_spi.c | 6 + > .../marvell/prestera/prestera_switchdev.c | 26 +- > .../mellanox/mlxsw/spectrum_switchdev.c | 53 +++-- > drivers/net/ethernet/mscc/ocelot.c | 100 +++++++- > drivers/net/ethernet/mscc/ocelot_net.c | 52 +++- > drivers/net/ethernet/rocker/rocker_main.c | 10 +- > drivers/net/ethernet/ti/cpsw_switchdev.c | 27 ++- > drivers/staging/fsl-dpaa2/ethsw/ethsw.c | 34 ++- > include/net/dsa.h | 10 +- > include/net/switchdev.h | 13 +- > include/soc/mscc/ocelot.h | 20 +- > net/bridge/br_netlink.c | 116 +++------ > net/bridge/br_private.h | 6 +- > net/bridge/br_switchdev.c | 23 +- > net/bridge/br_sysfs_if.c | 7 +- > net/dsa/dsa_priv.h | 11 +- > net/dsa/port.c | 76 ++++-- > net/dsa/slave.c | 10 +- > net/switchdev/switchdev.c | 11 +- > 28 files changed, 870 insertions(+), 320 deletions(-) > Sorry, but we seems just added more work for you. https://lore.kernel.org/patchwork/cover/1379380/
Hi Vladimir, On 2/12/21 7:47 PM, Grygorii Strashko wrote: > > > On 12/02/2021 03:05, Vladimir Oltean wrote: >> From: Vladimir Oltean <vladimir.oltean@nxp.com> [...] > > Sorry, but we seems just added more work for you. > https://lore.kernel.org/patchwork/cover/1379380/ > Could you squash these when you post new version: Sorry for not noticing earlier. -- >8 -- From 69f3a1ff1ea0777f5deceefdb0e79ce625e6488a Mon Sep 17 00:00:00 2001 From: Vignesh Raghavendra <vigneshr@ti.com> Date: Fri, 12 Feb 2021 19:34:46 +0530 Subject: [PATCH 1/2] fixup! net: switchdev: propagate extack to port attributes --- drivers/net/ethernet/ti/am65-cpsw-switchdev.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/ti/am65-cpsw-switchdev.c b/drivers/net/ethernet/ti/am65-cpsw-switchdev.c index 1067e7772dbf..314825acf0a0 100644 --- a/drivers/net/ethernet/ti/am65-cpsw-switchdev.c +++ b/drivers/net/ethernet/ti/am65-cpsw-switchdev.c @@ -81,7 +81,8 @@ static int am65_cpsw_port_attr_br_flags_pre_set(struct net_device *netdev, } static int am65_cpsw_port_attr_set(struct net_device *ndev, - const struct switchdev_attr *attr) + const struct switchdev_attr *attr, + struct netlink_ext_ack *extack) { struct am65_cpsw_port *port = am65_ndev_to_port(ndev); int ret; -- >8 -- From 7d7fdb79a8b255a1e9fe5d205b0ff1824a16ce56 Mon Sep 17 00:00:00 2001 From: Vignesh Raghavendra <vigneshr@ti.com> Date: Fri, 12 Feb 2021 19:40:48 +0530 Subject: [PATCH 2/2] fixup! net: switchdev: pass flags and mask to both {PRE_,}BRIDGE_FLAGS attributes --- drivers/net/ethernet/ti/am65-cpsw-switchdev.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/ti/am65-cpsw-switchdev.c b/drivers/net/ethernet/ti/am65-cpsw-switchdev.c index 314825acf0a0..03c7a012f5c5 100644 --- a/drivers/net/ethernet/ti/am65-cpsw-switchdev.c +++ b/drivers/net/ethernet/ti/am65-cpsw-switchdev.c @@ -55,12 +55,12 @@ static int am65_cpsw_port_stp_state_set(struct am65_cpsw_port *port, u8 state) static int am65_cpsw_port_attr_br_flags_set(struct am65_cpsw_port *port, struct net_device *orig_dev, - unsigned long brport_flags) + struct switchdev_brport_flags flags) { struct am65_cpsw_common *cpsw = port->common; bool unreg_mcast_add = false; - if (brport_flags & BR_MCAST_FLOOD) + if (flags.mask & BR_MCAST_FLOOD) unreg_mcast_add = true; netdev_dbg(port->ndev, "BR_MCAST_FLOOD: %d port %u\n", unreg_mcast_add, port->port_id); @@ -72,9 +72,9 @@ static int am65_cpsw_port_attr_br_flags_set(struct am65_cpsw_port *port, } static int am65_cpsw_port_attr_br_flags_pre_set(struct net_device *netdev, - unsigned long flags) + struct switchdev_brport_flags flags) { - if (flags & ~(BR_LEARNING | BR_MCAST_FLOOD)) + if (flags.mask & ~(BR_LEARNING | BR_MCAST_FLOOD)) return -EINVAL; return 0;
On Fri, Feb 12, 2021 at 08:01:33PM +0530, Vignesh Raghavendra wrote: > Hi Vladimir, > > On 2/12/21 7:47 PM, Grygorii Strashko wrote: > > > > > > On 12/02/2021 03:05, Vladimir Oltean wrote: > >> From: Vladimir Oltean <vladimir.oltean@nxp.com> > [...] > > > > Sorry, but we seems just added more work for you. > > https://lore.kernel.org/patchwork/cover/1379380/ > > > > Could you squash these when you post new version: > Sorry for not noticing earlier. Hey, thanks for the fixup patch and congrats on the new driver support for the AM65 NUSS! What's functionally different compared to the other CPSW instantiations? Also, do I get it right that you also tested the bridge port flags passed in the new format and that they still work ok? May I add your Tested-by tag?
Hi, On 2/12/21 8:10 PM, Vladimir Oltean wrote: > On Fri, Feb 12, 2021 at 08:01:33PM +0530, Vignesh Raghavendra wrote: >> Hi Vladimir, >> >> On 2/12/21 7:47 PM, Grygorii Strashko wrote: >>> >>> >>> On 12/02/2021 03:05, Vladimir Oltean wrote: >>>> From: Vladimir Oltean <vladimir.oltean@nxp.com> >> [...] >>> >>> Sorry, but we seems just added more work for you. >>> https://lore.kernel.org/patchwork/cover/1379380/ >>> >> >> Could you squash these when you post new version: >> Sorry for not noticing earlier. > > Hey, thanks for the fixup patch and congrats on the new driver support > for the AM65 NUSS! What's functionally different compared to the other > CPSW instantiations? > CPSW is mostly present on older TI's 32 bit SoCs and can support upto 2 external ports. AM65 NUSS is next generation multi port switch IP (up to 8 external ports) present on TI's newer 64 bit platform. It also has different DMA integration and has native HW support to work as both Multi Mac and Switch mode. > Also, do I get it right that you also tested the bridge port flags > passed in the new format and that they still work ok? May I add your > Tested-by tag? > Sorry, I have not done extensive testing but tried couple of cmds. Those worked as expected: root@evm:~# ip link set eth0 type bridge_slave flood off mcast_flood off learning off Error: bridge: bridge flag offload is not supported. root@evm:~# ip link set eth0 type bridge_slave mcast_flood off [ 65.025285] am65-cpsw-nuss 8000000.ethernet eth0: BR_MCAST_FLOOD: 0 port 1 Regards Vignesh
From: Vladimir Oltean <vladimir.oltean@nxp.com> The initial goal of this series was to have better support for standalone ports mode on the DSA drivers like ocelot/felix and sja1105. This turned out to require some API adjustments in both directions: to the information presented to and by the switchdev notifier, and to the API presented to the switch drivers by the DSA layer. Vladimir Oltean (9): net: switchdev: propagate extack to port attributes net: bridge: offload all port flags at once in br_setport net: bridge: don't print in br_switchdev_set_port_flag net: dsa: configure better brport flags when ports leave the bridge net: switchdev: pass flags and mask to both {PRE_,}BRIDGE_FLAGS attributes net: dsa: act as ass passthrough for bridge port flags net: mscc: ocelot: use separate flooding PGID for broadcast net: mscc: ocelot: offload bridge port flags to device net: dsa: sja1105: offload bridge port flags to device drivers/net/dsa/b53/b53_common.c | 91 ++++--- drivers/net/dsa/b53/b53_priv.h | 2 - drivers/net/dsa/mv88e6xxx/chip.c | 163 ++++++++++--- drivers/net/dsa/mv88e6xxx/chip.h | 6 +- drivers/net/dsa/mv88e6xxx/port.c | 52 ++-- drivers/net/dsa/mv88e6xxx/port.h | 19 +- drivers/net/dsa/ocelot/felix.c | 22 ++ drivers/net/dsa/sja1105/sja1105.h | 2 + drivers/net/dsa/sja1105/sja1105_main.c | 222 +++++++++++++++++- drivers/net/dsa/sja1105/sja1105_spi.c | 6 + .../marvell/prestera/prestera_switchdev.c | 26 +- .../mellanox/mlxsw/spectrum_switchdev.c | 53 +++-- drivers/net/ethernet/mscc/ocelot.c | 100 +++++++- drivers/net/ethernet/mscc/ocelot_net.c | 52 +++- drivers/net/ethernet/rocker/rocker_main.c | 10 +- drivers/net/ethernet/ti/cpsw_switchdev.c | 27 ++- drivers/staging/fsl-dpaa2/ethsw/ethsw.c | 34 ++- include/net/dsa.h | 10 +- include/net/switchdev.h | 13 +- include/soc/mscc/ocelot.h | 20 +- net/bridge/br_netlink.c | 116 +++------ net/bridge/br_private.h | 6 +- net/bridge/br_switchdev.c | 23 +- net/bridge/br_sysfs_if.c | 7 +- net/dsa/dsa_priv.h | 11 +- net/dsa/port.c | 76 ++++-- net/dsa/slave.c | 10 +- net/switchdev/switchdev.c | 11 +- 28 files changed, 870 insertions(+), 320 deletions(-)