}
 EXPORT_SYMBOL(mlxsw_afa_block_first_kvdl_index);
 
+int mlxsw_afa_block_activity_get(struct mlxsw_afa_block *block, bool *activity)
+{
+       u32 kvdl_index = mlxsw_afa_block_first_kvdl_index(block);
+
+       return block->afa->ops->kvdl_set_activity_get(block->afa->ops_priv,
+                                                     kvdl_index, activity);
+}
+EXPORT_SYMBOL(mlxsw_afa_block_activity_get);
+
 int mlxsw_afa_block_continue(struct mlxsw_afa_block *block)
 {
        if (block->finished)
 
        int (*kvdl_set_add)(void *priv, u32 *p_kvdl_index,
                            char *enc_actions, bool is_first);
        void (*kvdl_set_del)(void *priv, u32 kvdl_index, bool is_first);
+       int (*kvdl_set_activity_get)(void *priv, u32 kvdl_index,
+                                    bool *activity);
        int (*kvdl_fwd_entry_add)(void *priv, u32 *p_kvdl_index, u8 local_port);
        void (*kvdl_fwd_entry_del)(void *priv, u32 kvdl_index);
        int (*counter_index_get)(void *priv, unsigned int *p_counter_index);
 int mlxsw_afa_block_commit(struct mlxsw_afa_block *block);
 char *mlxsw_afa_block_first_set(struct mlxsw_afa_block *block);
 u32 mlxsw_afa_block_first_kvdl_index(struct mlxsw_afa_block *block);
+int mlxsw_afa_block_activity_get(struct mlxsw_afa_block *block, bool *activity);
 int mlxsw_afa_block_continue(struct mlxsw_afa_block *block);
 int mlxsw_afa_block_jump(struct mlxsw_afa_block *block, u16 group_id);
 int mlxsw_afa_block_terminate(struct mlxsw_afa_block *block);
 
                           1, kvdl_index);
 }
 
+static int mlxsw_sp1_act_kvdl_set_activity_get(void *priv, u32 kvdl_index,
+                                              bool *activity)
+{
+       return -EOPNOTSUPP;
+}
+
+static int mlxsw_sp2_act_kvdl_set_activity_get(void *priv, u32 kvdl_index,
+                                              bool *activity)
+{
+       struct mlxsw_sp *mlxsw_sp = priv;
+       char pefa_pl[MLXSW_REG_PEFA_LEN];
+       int err;
+
+       mlxsw_reg_pefa_pack(pefa_pl, kvdl_index, true, NULL);
+       err = mlxsw_reg_query(mlxsw_sp->core, MLXSW_REG(pefa), pefa_pl);
+       if (err)
+               return err;
+       mlxsw_reg_pefa_unpack(pefa_pl, activity);
+       return 0;
+}
+
 static int mlxsw_sp_act_kvdl_fwd_entry_add(void *priv, u32 *p_kvdl_index,
                                           u8 local_port)
 {
 const struct mlxsw_afa_ops mlxsw_sp1_act_afa_ops = {
        .kvdl_set_add           = mlxsw_sp1_act_kvdl_set_add,
        .kvdl_set_del           = mlxsw_sp_act_kvdl_set_del,
+       .kvdl_set_activity_get  = mlxsw_sp1_act_kvdl_set_activity_get,
        .kvdl_fwd_entry_add     = mlxsw_sp_act_kvdl_fwd_entry_add,
        .kvdl_fwd_entry_del     = mlxsw_sp_act_kvdl_fwd_entry_del,
        .counter_index_get      = mlxsw_sp_act_counter_index_get,
 const struct mlxsw_afa_ops mlxsw_sp2_act_afa_ops = {
        .kvdl_set_add           = mlxsw_sp2_act_kvdl_set_add,
        .kvdl_set_del           = mlxsw_sp_act_kvdl_set_del,
+       .kvdl_set_activity_get  = mlxsw_sp2_act_kvdl_set_activity_get,
        .kvdl_fwd_entry_add     = mlxsw_sp_act_kvdl_fwd_entry_add,
        .kvdl_fwd_entry_del     = mlxsw_sp_act_kvdl_fwd_entry_del,
        .counter_index_get      = mlxsw_sp_act_counter_index_get,