mbox series

[net-next,v4,0/6] net: dsa: mv88e6xxx: qca8k: rmon: Add RMU support

Message ID 20220906063450.3698671-1-mattias.forsblad@gmail.com (mailing list archive)
Headers show
Series net: dsa: mv88e6xxx: qca8k: rmon: Add RMU support | expand

Message

Mattias Forsblad Sept. 6, 2022, 6:34 a.m. UTC
The Marvell SOHO switches have the ability to receive and transmit
Remote Management Frames (Frame2Reg) to the CPU through the
attached network interface.
This is handled by the Remote Management Unit (RMU) in the switch
These frames can contain different payloads:
single switch register read and writes, daisy chained switch
register read and writes, RMON/MIB dump/dump clear and ATU dump.
The dump functions are very costly over MDIO but it's
only a couple of network packets via the RMU.

Next step could be to implement ATU dump.
We've found that the gain to use RMU for single register
read and writes is neglible.

qca8k
=====
There's a newly introduced convenience function for sending
and waiting for frames. Changes have been made for the qca8k
driver to use this. Please test for regressions.

RFC -> v1:
  - Track master interface availability.
  - Validate destination MAC for incoming frames.
  - Rate limit outputs.
  - Cleanup setup function validating upstream port on switch.
  - Fix return values when setting up RMU.
  - Prefix defines correctly.
  - Fix aligned accesses.
  - Validate that switch exists for incoming frames.
  - Split RMON stats function.

v1 -> v2:
  - Remove unused variable.

v2 -> v3:
  - Rewrite after feedback. Use tagger_data to handle
    frames more like qca8k.
  - qca8k: Change to use convenience functions introduced.
    Requesting test of this.
    
v3 -> v4:
  - Separated patches more granular.
  
Regards,
Mattias Forsblad

Mattias Forsblad (6):
  net: dsa: mv88e6xxx: Add RMU enable for select switches.
  net: dsa: Add convenience functions for frame handling
  net: dsa: Introduce dsa tagger data operation.
  net: dsa: mv88e6xxxx: Add RMU functionality.
  net: dsa: mv88e6xxx: rmon: Use RMU for reading RMON data
  net: dsa: qca8k: Use new convenience functions

 drivers/net/dsa/mv88e6xxx/Makefile  |   1 +
 drivers/net/dsa/mv88e6xxx/chip.c    |  73 +++++--
 drivers/net/dsa/mv88e6xxx/chip.h    |  21 ++
 drivers/net/dsa/mv88e6xxx/global1.c |  76 +++++++
 drivers/net/dsa/mv88e6xxx/global1.h |   3 +
 drivers/net/dsa/mv88e6xxx/rmu.c     | 307 ++++++++++++++++++++++++++++
 drivers/net/dsa/mv88e6xxx/rmu.h     |  28 +++
 drivers/net/dsa/qca/qca8k-8xxx.c    |  61 ++----
 include/net/dsa.h                   |  18 ++
 net/dsa/dsa.c                       |  28 +++
 net/dsa/dsa2.c                      |   2 +
 net/dsa/tag_dsa.c                   |  32 ++-
 12 files changed, 588 insertions(+), 62 deletions(-)
 create mode 100644 drivers/net/dsa/mv88e6xxx/rmu.c
 create mode 100644 drivers/net/dsa/mv88e6xxx/rmu.h

Comments

Marek BehĂșn Sept. 6, 2022, 8:07 a.m. UTC | #1
On Tue,  6 Sep 2022 08:34:44 +0200
Mattias Forsblad <mattias.forsblad@gmail.com> wrote:

> The Marvell SOHO switches have the ability to receive and transmit
> Remote Management Frames (Frame2Reg) to the CPU through the
> attached network interface.
> This is handled by the Remote Management Unit (RMU) in the switch
> These frames can contain different payloads:
> single switch register read and writes, daisy chained switch
> register read and writes, RMON/MIB dump/dump clear and ATU dump.
> The dump functions are very costly over MDIO but it's
> only a couple of network packets via the RMU.
> 
> Next step could be to implement ATU dump.
> We've found that the gain to use RMU for single register
> read and writes is neglible.
> 
> qca8k
> =====
> There's a newly introduced convenience function for sending
> and waiting for frames. Changes have been made for the qca8k
> driver to use this. Please test for regressions.
> 
> RFC -> v1:
>   - Track master interface availability.
>   - Validate destination MAC for incoming frames.
>   - Rate limit outputs.
>   - Cleanup setup function validating upstream port on switch.
>   - Fix return values when setting up RMU.
>   - Prefix defines correctly.
>   - Fix aligned accesses.
>   - Validate that switch exists for incoming frames.
>   - Split RMON stats function.
> 
> v1 -> v2:
>   - Remove unused variable.
> 
> v2 -> v3:
>   - Rewrite after feedback. Use tagger_data to handle
>     frames more like qca8k.
>   - qca8k: Change to use convenience functions introduced.
>     Requesting test of this.
>     
> v3 -> v4:
>   - Separated patches more granular.
>   
> Regards,
> Mattias Forsblad

Nitpick: in subject, the order of components separated by ':' infers
hierarchy, so your subject
  net: dsa: mv88e6xxx: qca8k: rmon: Add RMU support
means:
  component net
    subcompoment dsa
      subcomponent mv88e6xxx
        subcomponent qca8k (this is wrong since qca8k is separate
                            driver, not a subcomponent of mv88e6xxx)

You should use ',' to separate mv88e6xxx and qca8k, something like
  net: dsa: mv88e6xxx, qca8k: rmon: Add RMU support

Since this is not an actual patch, but instead a cover letter only,
it's not a problem (at least not for me). But please try not to do it
in actual patches.

Marek
Mattias Forsblad Sept. 6, 2022, 9:45 a.m. UTC | #2
On 2022-09-06 10:07, Marek BehĂșn wrote:
> Nitpick: in subject, the order of components separated by ':' infers
> hierarchy, so your subject
>   net: dsa: mv88e6xxx: qca8k: rmon: Add RMU support
> means:
>   component net
>     subcompoment dsa
>       subcomponent mv88e6xxx
>         subcomponent qca8k (this is wrong since qca8k is separate
>                             driver, not a subcomponent of mv88e6xxx)
> 
> You should use ',' to separate mv88e6xxx and qca8k, something like
>   net: dsa: mv88e6xxx, qca8k: rmon: Add RMU support
> 
> Since this is not an actual patch, but instead a cover letter only,
> it's not a problem (at least not for me). But please try not to do it
> in actual patches.
> 
> Marek

Ah, ok I see your point. Thanks.

/Mattias