Revert "crypto: remove CONFIG_CRYPTO_STATS"
[linux-2.6-microblaze.git] / crypto / hash.h
index cf9aee0..93f6ba0 100644 (file)
@@ -8,9 +8,39 @@
 #define _LOCAL_CRYPTO_HASH_H
 
 #include <crypto/internal/hash.h>
+#include <linux/cryptouser.h>
 
 #include "internal.h"
 
+static inline struct crypto_istat_hash *hash_get_stat(
+       struct hash_alg_common *alg)
+{
+#ifdef CONFIG_CRYPTO_STATS
+       return &alg->stat;
+#else
+       return NULL;
+#endif
+}
+
+static inline int crypto_hash_report_stat(struct sk_buff *skb,
+                                         struct crypto_alg *alg,
+                                         const char *type)
+{
+       struct hash_alg_common *halg = __crypto_hash_alg_common(alg);
+       struct crypto_istat_hash *istat = hash_get_stat(halg);
+       struct crypto_stat_hash rhash;
+
+       memset(&rhash, 0, sizeof(rhash));
+
+       strscpy(rhash.type, type, sizeof(rhash.type));
+
+       rhash.stat_hash_cnt = atomic64_read(&istat->hash_cnt);
+       rhash.stat_hash_tlen = atomic64_read(&istat->hash_tlen);
+       rhash.stat_err_cnt = atomic64_read(&istat->err_cnt);
+
+       return nla_put(skb, CRYPTOCFGA_STAT_HASH, sizeof(rhash), &rhash);
+}
+
 extern const struct crypto_type crypto_shash_type;
 
 int hash_prepare_alg(struct hash_alg_common *alg);