mbox series

[v4,net-next,0/9] Cleanup in brport flags switchdev offload for DSA

Message ID 20210212010531.2722925-1-olteanv@gmail.com
Headers show
Series Cleanup in brport flags switchdev offload for DSA | expand

Message

Vladimir Oltean Feb. 12, 2021, 1:05 a.m. UTC
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(-)

Comments

Florian Fainelli Feb. 12, 2021, 3:20 a.m. UTC | #1
On 2/11/2021 5:05 PM, Vladimir Oltean wrote:
> From: Vladimir Oltean <vladimir.oltean@nxp.com>
> 
> When a struct switchdev_attr is notified through switchdev, there is no
> way to report informational messages, unlike for struct switchdev_obj.
> 
> Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
> Reviewed-by: Ido Schimmel <idosch@nvidia.com>

Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Grygorii Strashko Feb. 12, 2021, 2:17 p.m. UTC | #2
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/
Vladimir Oltean Feb. 12, 2021, 2:40 p.m. UTC | #3
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?
Vignesh Raghavendra Feb. 16, 2021, 11:22 a.m. UTC | #4
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