Lines Matching refs:ec

125 static __u64 jent_loop_shuffle(struct rand_data *ec,  in jent_loop_shuffle()  argument
138 if (ec) in jent_loop_shuffle()
139 time ^= ec->data; in jent_loop_shuffle()
185 static __u64 jent_lfsr_time(struct rand_data *ec, __u64 time, __u64 loop_cnt) in jent_lfsr_time() argument
193 jent_loop_shuffle(ec, MAX_FOLD_LOOP_BIT, MIN_FOLD_LOOP_BIT); in jent_lfsr_time()
202 new = ec->data; in jent_lfsr_time()
228 ec->data = new; in jent_lfsr_time()
260 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 unsigned char *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 int 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()
347 static int 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_lfsr_time(ec, current_delta, 0); in jent_measure_jitter()
367 return jent_stuck(ec, current_delta); in jent_measure_jitter()
377 static void jent_gen_entropy(struct rand_data *ec) in jent_gen_entropy() argument
382 jent_measure_jitter(ec); in jent_gen_entropy()
386 if (jent_measure_jitter(ec)) in jent_gen_entropy()
393 if (++k >= (DATA_SIZE_BITS * ec->osr)) in jent_gen_entropy()
406 static void jent_fips_test(struct rand_data *ec) in jent_fips_test() argument
412 if (!ec->old_data) { in jent_fips_test()
413 ec->old_data = ec->data; in jent_fips_test()
414 jent_gen_entropy(ec); in jent_fips_test()
417 if (ec->data == ec->old_data) in jent_fips_test()
420 ec->old_data = ec->data; in jent_fips_test()
445 int jent_read_entropy(struct rand_data *ec, unsigned char *data, in jent_read_entropy() argument
450 if (!ec) in jent_read_entropy()
456 jent_gen_entropy(ec); in jent_read_entropy()
457 jent_fips_test(ec); in jent_read_entropy()
462 jent_memcpy(p, &ec->data, tocopy); in jent_read_entropy()
524 struct rand_data ec = { 0 }; in jent_entropy_init() local
559 ec.prev_time = time; in jent_entropy_init()
560 jent_lfsr_time(&ec, time, 0); in jent_entropy_init()
575 stuck = jent_stuck(&ec, delta); in jent_entropy_init()