24.02.2015 20:57, Bruce Richardson ?????: > +#define CRC32_ITERATIONS (1U << 16) > This test takes almost no time at all, so maybe we want to do a few more > iterations e.g. 2^18 - 2^20. Noted, I'll put (1U << 20). >> + printf("# CRC32 implementations equivalence test\n"); >> + for (i = 0; i < CRC32_ITERATIONS; i++) { >> + /* Randomizing data_len of data set */ >> + data_len = (size_t) (rte_rand() % sizeof(data64) + 1); > I suggest parenthesis around the % operation for clarity. Noted. >> + init_val = (uint32_t) rte_rand(); >> + >> + /* Fill the data set */ >> + for (j = 0; j < CRC32_DWORDS; j++) { >> + data64[j] = rte_rand(); >> + } > As a matter of style, we generally omit braces for single-statement loop > bodies. Noted. >> + >> + /* Calculate software CRC32 */ >> + rte_hash_crc_set_alg(CRC32_SW); >> + hash_val = rte_hash_crc(data64, data_len, init_val); >> + >> + /* Check against 4-byte-operand sse4.2 CRC32 if available */ >> + rte_hash_crc_set_alg(CRC32_SSE42); >> + if (hash_val != rte_hash_crc(data64, data_len, init_val)) { >> + res = -1; > I think you need a print statement here, stating that the test failed, and > why exactly it failed. > Also, rather than setting res to -1, you can just do a print and break, and > change "return res" below to "return i == CRC32_ITERATIONS ? 0 : -1", making > use of the fact that you can check i to detect early termination on error.
Noted; then I suggest I'll print out test data which caused the break as well. It might be handy for further investigation. -- Sincerely, Yerden Zhumabekov State Technical Service Astana, KZ