Lines Matching refs:ec

133 static __u64 jent_loop_shuffle(struct rand_data *ec,  in jent_loop_shuffle()  argument
146 if (ec) in jent_loop_shuffle()
147 time ^= ec->data; in jent_loop_shuffle()
202 static __u64 jent_fold_time(struct rand_data *ec, __u64 time, in jent_fold_time() argument
211 jent_loop_shuffle(ec, MAX_FOLD_LOOP_BIT, MIN_FOLD_LOOP_BIT); in jent_fold_time()
259 static unsigned int jent_memaccess(struct rand_data *ec, __u64 loop_cnt) in jent_memaccess() argument
267 jent_loop_shuffle(ec, MAX_ACC_LOOP_BIT, MIN_ACC_LOOP_BIT); in jent_memaccess()
269 if (NULL == ec || NULL == ec->mem) in jent_memaccess()
271 wrap = ec->memblocksize * ec->memblocks; in jent_memaccess()
280 for (i = 0; i < (ec->memaccessloops + acc_loop_cnt); i++) { in jent_memaccess()
281 tmpval = ec->mem + ec->memlocation; in jent_memaccess()
293 ec->memlocation = ec->memlocation + ec->memblocksize - 1; in jent_memaccess()
294 ec->memlocation = ec->memlocation % wrap; in jent_memaccess()
319 static void jent_stuck(struct rand_data *ec, __u64 current_delta) in jent_stuck() argument
321 __s64 delta2 = ec->last_delta - current_delta; in jent_stuck()
322 __s64 delta3 = delta2 - ec->last_delta2; in jent_stuck()
324 ec->last_delta = current_delta; in jent_stuck()
325 ec->last_delta2 = delta2; in jent_stuck()
328 ec->stuck = 1; in jent_stuck()
346 static __u64 jent_measure_jitter(struct rand_data *ec) in jent_measure_jitter() argument
353 jent_memaccess(ec, 0); in jent_measure_jitter()
360 current_delta = time - ec->prev_time; in jent_measure_jitter()
361 ec->prev_time = time; in jent_measure_jitter()
364 jent_fold_time(ec, current_delta, &data, 0); in jent_measure_jitter()
371 jent_stuck(ec, current_delta); in jent_measure_jitter()
475 static void jent_gen_entropy(struct rand_data *ec) in jent_gen_entropy() argument
480 jent_measure_jitter(ec); in jent_gen_entropy()
485 if (ec->disable_unbias == 1) in jent_gen_entropy()
486 data = jent_measure_jitter(ec); in jent_gen_entropy()
488 data = jent_unbiased_bit(ec); in jent_gen_entropy()
491 if (ec->stuck) { in jent_gen_entropy()
502 ec->data ^= data; in jent_gen_entropy()
503 ec->stuck = 0; in jent_gen_entropy()
517 ec->data ^= data; in jent_gen_entropy()
518 ec->data ^= ((ec->data >> 63) & 1); in jent_gen_entropy()
519 ec->data ^= ((ec->data >> 60) & 1); in jent_gen_entropy()
520 ec->data ^= ((ec->data >> 55) & 1); in jent_gen_entropy()
521 ec->data ^= ((ec->data >> 30) & 1); in jent_gen_entropy()
522 ec->data ^= ((ec->data >> 27) & 1); in jent_gen_entropy()
523 ec->data ^= ((ec->data >> 22) & 1); in jent_gen_entropy()
524 ec->data = jent_rol64(ec->data, 1); in jent_gen_entropy()
530 if (++k >= (DATA_SIZE_BITS * ec->osr)) in jent_gen_entropy()
533 if (ec->stir) in jent_gen_entropy()
534 jent_stir_pool(ec); in jent_gen_entropy()
545 static void jent_fips_test(struct rand_data *ec) in jent_fips_test() argument
551 if (!ec->old_data) { in jent_fips_test()
552 ec->old_data = ec->data; in jent_fips_test()
553 jent_gen_entropy(ec); in jent_fips_test()
556 if (ec->data == ec->old_data) in jent_fips_test()
559 ec->old_data = ec->data; in jent_fips_test()
584 int jent_read_entropy(struct rand_data *ec, unsigned char *data, in jent_read_entropy() argument
589 if (!ec) in jent_read_entropy()
595 jent_gen_entropy(ec); in jent_read_entropy()
596 jent_fips_test(ec); in jent_read_entropy()
601 jent_memcpy(p, &ec->data, tocopy); in jent_read_entropy()