Jiri says:

When rehash happens on a vregion with many rules and they are being
migrated, it might take significant time to finish the job. During that
time vregion->lock is taken which prevents rules from being
added/deleted from the vregion.

Aim of this patchset is to allow to interrupt migration of rules during
rehash, reschedule and give chance for rules to be added/deleted. Then
continue migration in another execution of scheduled work.

Jiri Pirko (14):
  mlxsw: spectrum_acl: Push rehash dw struct into rehash sub-struct
  mlxsw: spectrum_acl: Don't migrate already migrated entry
  mlxsw: spectrum_acl: Introduce new rehash context struct and save
    hint_priv there
  mlxsw: spectrum_acl: Push rehash start/end code into separate
    functions
  mlxsw: spectrum_acl: Push code start/end from
    mlxsw_sp_acl_tcam_vregion_migrate()
  mlxsw: spectrum_acl: assign vregion->region by the newly created
    region
  mlxsw: spectrum_acl: assign vchunk->chunk by the newly created chunk
  mlxsw: spectrum_acl: Rename variables in
    mlxsw_sp_acl_tcam_ventry_migrate()
  mlxsw: spectrum_acl: Put this_is_rollback to rehash context struct
  mlxsw: spectrum_acl: Put vchunk migrate start/end code into separate
    functions
  mlxsw: spectrum_acl: Do rollback as another call to
    mlxsw_sp_acl_tcam_vchunk_migrate_all()
  mlxsw: spectrum_acl: Allow to interrupt/continue rehash work
  mlxsw: spectrum_acl: Remember where to continue rehash migration
  mlxsw: spectrum_acl: Make mlxsw_sp_acl_tcam_vregion_rehash() return
    void

 .../mellanox/mlxsw/spectrum_acl_tcam.c        | 411 ++++++++++++------
 1 file changed, 286 insertions(+), 125 deletions(-)

-- 
2.20.1

Reply via email to