Whamcloud - gitweb
LU-3570 libcfs: accelerate crc32c with pclmulqdq
[fs/lustre-release.git] / libcfs / libcfs / linux / linux-crypto.c
index 2e0c9b5..8398e9e 100644 (file)
@@ -221,7 +221,7 @@ static void cfs_crypto_performance_test(unsigned char alg_id,
                       1000) / (1024 * 1024);
                cfs_crypto_hash_speeds[alg_id] = (int)tmp;
        }
                       1000) / (1024 * 1024);
                cfs_crypto_hash_speeds[alg_id] = (int)tmp;
        }
-       CDEBUG(D_INFO, "Crypto hash algorithm %s speed = %d MB/s\n",
+       CDEBUG(D_CONFIG, "Crypto hash algorithm %s speed = %d MB/s\n",
               cfs_crypto_hash_name(alg_id), cfs_crypto_hash_speeds[alg_id]);
 }
 
               cfs_crypto_hash_name(alg_id), cfs_crypto_hash_speeds[alg_id]);
 }
 
@@ -262,38 +262,59 @@ static int cfs_crypto_test_hashes(void)
        return 0;
 }
 
        return 0;
 }
 
-static int crc32, adler32;
+static int adler32;
 
 
+#ifdef HAVE_CRC32
+static int crc32;
+#endif
 #ifdef HAVE_PCLMULQDQ
 #ifdef HAVE_PCLMULQDQ
+#ifdef NEED_CRC32_ACCEL
 static int crc32pclmul;
 #endif
 static int crc32pclmul;
 #endif
+#ifdef NEED_CRC32C_ACCEL
+static int crc32c_pclmul;
+#endif
+#endif
 
 int cfs_crypto_register(void)
 {
        request_module("crc32c");
 
 
 int cfs_crypto_register(void)
 {
        request_module("crc32c");
 
-       crc32 = cfs_crypto_crc32_register();
        adler32 = cfs_crypto_adler32_register();
 
        adler32 = cfs_crypto_adler32_register();
 
+#ifdef HAVE_CRC32
+       crc32 = cfs_crypto_crc32_register();
+#endif
 #ifdef HAVE_PCLMULQDQ
 #ifdef HAVE_PCLMULQDQ
+#ifdef NEED_CRC32_ACCEL
        crc32pclmul = cfs_crypto_crc32_pclmul_register();
 #endif
        crc32pclmul = cfs_crypto_crc32_pclmul_register();
 #endif
-
+#ifdef NEED_CRC32C_ACCEL
+       crc32c_pclmul = cfs_crypto_crc32c_pclmul_register();
+#endif
+#endif
        /* check all algorithms and do performance test */
        cfs_crypto_test_hashes();
        return 0;
 }
 void cfs_crypto_unregister(void)
 {
        /* check all algorithms and do performance test */
        cfs_crypto_test_hashes();
        return 0;
 }
 void cfs_crypto_unregister(void)
 {
-       if (crc32 == 0)
-               cfs_crypto_crc32_unregister();
        if (adler32 == 0)
                cfs_crypto_adler32_unregister();
 
        if (adler32 == 0)
                cfs_crypto_adler32_unregister();
 
+#ifdef HAVE_CRC32
+       if (crc32 == 0)
+               cfs_crypto_crc32_unregister();
+#endif
 #ifdef HAVE_PCLMULQDQ
 #ifdef HAVE_PCLMULQDQ
+#ifdef NEED_CRC32_ACCEL
        if (crc32pclmul == 0)
                cfs_crypto_crc32_pclmul_unregister();
 #endif
        if (crc32pclmul == 0)
                cfs_crypto_crc32_pclmul_unregister();
 #endif
-
+#ifdef NEED_CRC32C_ACCEL
+       if (crc32c_pclmul == 0)
+               cfs_crypto_crc32c_pclmul_unregister();
+#endif
+#endif
        return;
 }
        return;
 }