mbox series

[net-next,00/15] mlxsw: spectrum: Prepare for XM implementation - prefix insertion and removal

Message ID 20201110094900.1920158-1-idosch@idosch.org
Headers show
Series mlxsw: spectrum: Prepare for XM implementation - prefix insertion and removal | expand

Message

Ido Schimmel Nov. 10, 2020, 9:48 a.m. UTC
From: Ido Schimmel <idosch@nvidia.com>

Jiri says:

This is a preparation patchset for follow-up support of boards with
extended mezzanine (XM), which is going to allow extended (scale-wise)
router offload.

XM requires a separate PRM register named XMDR to be used instead of
RALUE to insert/update/remove FIB entries. Therefore, this patchset
extends the previously introduces low-level ops to be able to have
XM-specific FIB entry config implementation.

Currently the existing original RALUE implementation is moved to "basic"
low-level ops.

Unlike legacy router, insertion/update/removal of FIB entries into XM
could be done in bulks up to 4 items in a single PRM register write.
That is why this patchset implements "an op context", that allows the
future XM ops implementation to squash multiple FIB events to single
register write. For that, the way in which the FIB events are processed
by the work queue has to be changed.

The conversion from 1:1 FIB event - work callback call to event queue is
implemented in patch #3.

Patch #4 introduces "an op context" that will allow in future to squash
multiple FIB events into one XMDR register write. Patch #12 converts it
from stack to be allocated per instance.

Existing RALUE manipulations are pushed to ops in patch #10.

Patch #13 is introducing a possibility for low-level implementation to
have per FIB entry private memory.

The rest of the patches are either cosmetics or smaller preparations.

Jiri Pirko (15):
  mlxsw: spectrum_router: Pass non-register proto enum to
    __mlxsw_sp_router_set_abort_trap()
  mlxsw: spectrum_router: Use RALUE-independent op arg
  mlxsw: spectrum_router: Introduce FIB event queue instead of separate
    works
  mlxsw: spectrum: Propagate context from work handler containing RALUE
    payload
  mlxsw: spectrum_router: Push out RALUE pack into separate helper
  mlxsw: spectrum: Export RALUE pack helper and use it from IPIP
  mlxsw: spectrum_router: Pass destination IP as a pointer to
    mlxsw_reg_ralue_pack4()
  mlxsw: reg: Allow to pass NULL pointer to mlxsw_reg_ralue_pack4/6()
  mlxsw: spectrum_router: Use RALUE pack helper from abort function
  mlxsw: spectrum: Push RALUE packing and writing into low-level router
    ops
  mlxsw: spectrum_router: Prepare work context for possible bulking
  mlxsw: spectrum_router: Have FIB entry op context allocated for the
    instance
  mlxsw: spectrum_router: Introduce fib_entry priv for low-level ops
  mlxsw: spectrum_router: Track FIB entry committed state and skip
    uncommitted on delete
  mlxsw: spectrum_router: Introduce FIB entry update op

 drivers/net/ethernet/mellanox/mlxsw/reg.h     |   8 +-
 .../ethernet/mellanox/mlxsw/spectrum_ipip.c   |  34 +-
 .../ethernet/mellanox/mlxsw/spectrum_ipip.h   |   7 +-
 .../ethernet/mellanox/mlxsw/spectrum_router.c | 761 +++++++++++++-----
 .../ethernet/mellanox/mlxsw/spectrum_router.h |  59 ++
 5 files changed, 635 insertions(+), 234 deletions(-)

Comments

Jakub Kicinski Nov. 12, 2020, 11:59 p.m. UTC | #1
On Tue, 10 Nov 2020 11:48:45 +0200 Ido Schimmel wrote:
> Jiri says:
> 
> This is a preparation patchset for follow-up support of boards with
> extended mezzanine (XM), which is going to allow extended (scale-wise)
> router offload.
> 
> XM requires a separate PRM register named XMDR to be used instead of
> RALUE to insert/update/remove FIB entries. Therefore, this patchset
> extends the previously introduces low-level ops to be able to have
> XM-specific FIB entry config implementation.
> 
> Currently the existing original RALUE implementation is moved to "basic"
> low-level ops.
> 
> Unlike legacy router, insertion/update/removal of FIB entries into XM
> could be done in bulks up to 4 items in a single PRM register write.
> That is why this patchset implements "an op context", that allows the
> future XM ops implementation to squash multiple FIB events to single
> register write. For that, the way in which the FIB events are processed
> by the work queue has to be changed.
> 
> The conversion from 1:1 FIB event - work callback call to event queue is
> implemented in patch #3.
> 
> Patch #4 introduces "an op context" that will allow in future to squash
> multiple FIB events into one XMDR register write. Patch #12 converts it
> from stack to be allocated per instance.
> 
> Existing RALUE manipulations are pushed to ops in patch #10.
> 
> Patch #13 is introducing a possibility for low-level implementation to
> have per FIB entry private memory.
> 
> The rest of the patches are either cosmetics or smaller preparations.

Applied, thanks!