Commit f9b274ce authored by Jiri Pirko's avatar Jiri Pirko Committed by David S. Miller

mlxsw: spectrum_acl: Push rehash dw struct into rehash sub-struct

More rehash related fields are going to come. Push "dw" into sub-struct
that will accommodate the others as well.
Signed-off-by: default avatarJiri Pirko <jiri@mellanox.com>
Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 91cf8ece
...@@ -192,7 +192,9 @@ struct mlxsw_sp_acl_tcam_vregion { ...@@ -192,7 +192,9 @@ struct mlxsw_sp_acl_tcam_vregion {
struct mlxsw_afk_key_info *key_info; struct mlxsw_afk_key_info *key_info;
struct mlxsw_sp_acl_tcam *tcam; struct mlxsw_sp_acl_tcam *tcam;
struct mlxsw_sp_acl_tcam_vgroup *vgroup; struct mlxsw_sp_acl_tcam_vgroup *vgroup;
struct delayed_work rehash_dw; struct {
struct delayed_work dw;
} rehash;
struct mlxsw_sp *mlxsw_sp; struct mlxsw_sp *mlxsw_sp;
bool failed_rollback; /* Indicates failed rollback during migration */ bool failed_rollback; /* Indicates failed rollback during migration */
unsigned int ref_count; unsigned int ref_count;
...@@ -718,7 +720,7 @@ mlxsw_sp_acl_tcam_vregion_rehash_work_schedule(struct mlxsw_sp_acl_tcam_vregion ...@@ -718,7 +720,7 @@ mlxsw_sp_acl_tcam_vregion_rehash_work_schedule(struct mlxsw_sp_acl_tcam_vregion
if (!interval) if (!interval)
return; return;
mlxsw_core_schedule_dw(&vregion->rehash_dw, mlxsw_core_schedule_dw(&vregion->rehash.dw,
msecs_to_jiffies(interval)); msecs_to_jiffies(interval));
} }
...@@ -730,7 +732,7 @@ static void mlxsw_sp_acl_tcam_vregion_rehash_work(struct work_struct *work) ...@@ -730,7 +732,7 @@ static void mlxsw_sp_acl_tcam_vregion_rehash_work(struct work_struct *work)
{ {
struct mlxsw_sp_acl_tcam_vregion *vregion = struct mlxsw_sp_acl_tcam_vregion *vregion =
container_of(work, struct mlxsw_sp_acl_tcam_vregion, container_of(work, struct mlxsw_sp_acl_tcam_vregion,
rehash_dw.work); rehash.dw.work);
mlxsw_sp_acl_tcam_vregion_rehash(vregion->mlxsw_sp, vregion); mlxsw_sp_acl_tcam_vregion_rehash(vregion->mlxsw_sp, vregion);
mlxsw_sp_acl_tcam_vregion_rehash_work_schedule(vregion); mlxsw_sp_acl_tcam_vregion_rehash_work_schedule(vregion);
...@@ -778,7 +780,7 @@ mlxsw_sp_acl_tcam_vregion_create(struct mlxsw_sp *mlxsw_sp, ...@@ -778,7 +780,7 @@ mlxsw_sp_acl_tcam_vregion_create(struct mlxsw_sp *mlxsw_sp,
if (vgroup->vregion_rehash_enabled && ops->region_rehash_hints_get) { if (vgroup->vregion_rehash_enabled && ops->region_rehash_hints_get) {
/* Create the delayed work for vregion periodic rehash */ /* Create the delayed work for vregion periodic rehash */
INIT_DELAYED_WORK(&vregion->rehash_dw, INIT_DELAYED_WORK(&vregion->rehash.dw,
mlxsw_sp_acl_tcam_vregion_rehash_work); mlxsw_sp_acl_tcam_vregion_rehash_work);
mlxsw_sp_acl_tcam_vregion_rehash_work_schedule(vregion); mlxsw_sp_acl_tcam_vregion_rehash_work_schedule(vregion);
mutex_lock(&tcam->lock); mutex_lock(&tcam->lock);
...@@ -809,7 +811,7 @@ mlxsw_sp_acl_tcam_vregion_destroy(struct mlxsw_sp *mlxsw_sp, ...@@ -809,7 +811,7 @@ mlxsw_sp_acl_tcam_vregion_destroy(struct mlxsw_sp *mlxsw_sp,
mutex_lock(&tcam->lock); mutex_lock(&tcam->lock);
list_del(&vregion->tlist); list_del(&vregion->tlist);
mutex_unlock(&tcam->lock); mutex_unlock(&tcam->lock);
cancel_delayed_work_sync(&vregion->rehash_dw); cancel_delayed_work_sync(&vregion->rehash.dw);
} }
mlxsw_sp_acl_tcam_vgroup_vregion_detach(mlxsw_sp, vregion); mlxsw_sp_acl_tcam_vgroup_vregion_detach(mlxsw_sp, vregion);
if (vregion->region2) if (vregion->region2)
...@@ -847,9 +849,9 @@ int mlxsw_sp_acl_tcam_vregion_rehash_intrvl_set(struct mlxsw_sp *mlxsw_sp, ...@@ -847,9 +849,9 @@ int mlxsw_sp_acl_tcam_vregion_rehash_intrvl_set(struct mlxsw_sp *mlxsw_sp,
mutex_lock(&tcam->lock); mutex_lock(&tcam->lock);
list_for_each_entry(vregion, &tcam->vregion_list, tlist) { list_for_each_entry(vregion, &tcam->vregion_list, tlist) {
if (val) if (val)
mlxsw_core_schedule_dw(&vregion->rehash_dw, 0); mlxsw_core_schedule_dw(&vregion->rehash.dw, 0);
else else
cancel_delayed_work_sync(&vregion->rehash_dw); cancel_delayed_work_sync(&vregion->rehash.dw);
} }
mutex_unlock(&tcam->lock); mutex_unlock(&tcam->lock);
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment