Lines Matching refs:ec

149 static void jent_apt_reset(struct rand_data *ec, unsigned int delta_masked)  in jent_apt_reset()  argument
152 ec->apt_count = 0; in jent_apt_reset()
153 ec->apt_base = delta_masked; in jent_apt_reset()
154 ec->apt_observations = 0; in jent_apt_reset()
163 static void jent_apt_insert(struct rand_data *ec, unsigned int delta_masked) in jent_apt_insert() argument
166 if (!ec->apt_base_set) { in jent_apt_insert()
167 ec->apt_base = delta_masked; in jent_apt_insert()
168 ec->apt_base_set = 1; in jent_apt_insert()
172 if (delta_masked == ec->apt_base) { in jent_apt_insert()
173 ec->apt_count++; in jent_apt_insert()
175 if (ec->apt_count >= JENT_APT_CUTOFF) in jent_apt_insert()
176 ec->health_failure = 1; in jent_apt_insert()
179 ec->apt_observations++; in jent_apt_insert()
181 if (ec->apt_observations >= JENT_APT_WINDOW_SIZE) in jent_apt_insert()
182 jent_apt_reset(ec, delta_masked); in jent_apt_insert()
207 static void jent_rct_insert(struct rand_data *ec, int stuck) in jent_rct_insert() argument
213 if (ec->rct_count < 0) in jent_rct_insert()
217 ec->rct_count++; in jent_rct_insert()
233 if ((unsigned int)ec->rct_count >= (31 * ec->osr)) { in jent_rct_insert()
234 ec->rct_count = -1; in jent_rct_insert()
235 ec->health_failure = 1; in jent_rct_insert()
238 ec->rct_count = 0; in jent_rct_insert()
251 static int jent_rct_failure(struct rand_data *ec) in jent_rct_failure() argument
253 if (ec->rct_count < 0) in jent_rct_failure()
280 static int jent_stuck(struct rand_data *ec, __u64 current_delta) in jent_stuck() argument
282 __u64 delta2 = jent_delta(ec->last_delta, current_delta); in jent_stuck()
283 __u64 delta3 = jent_delta(ec->last_delta2, delta2); in jent_stuck()
285 ec->last_delta = current_delta; in jent_stuck()
286 ec->last_delta2 = delta2; in jent_stuck()
292 jent_apt_insert(ec, current_delta); in jent_stuck()
296 jent_rct_insert(ec, 1); in jent_stuck()
301 jent_rct_insert(ec, 0); in jent_stuck()
315 static int jent_health_failure(struct rand_data *ec) in jent_health_failure() argument
321 return ec->health_failure; in jent_health_failure()
340 static __u64 jent_loop_shuffle(struct rand_data *ec, in jent_loop_shuffle() argument
353 if (ec) in jent_loop_shuffle()
354 time ^= ec->data; in jent_loop_shuffle()
396 static void jent_lfsr_time(struct rand_data *ec, __u64 time, __u64 loop_cnt, in jent_lfsr_time() argument
405 jent_loop_shuffle(ec, MAX_FOLD_LOOP_BIT, MIN_FOLD_LOOP_BIT); in jent_lfsr_time()
414 new = ec->data; in jent_lfsr_time()
450 ec->data = new; in jent_lfsr_time()
477 static void jent_memaccess(struct rand_data *ec, __u64 loop_cnt) in jent_memaccess() argument
484 jent_loop_shuffle(ec, MAX_ACC_LOOP_BIT, MIN_ACC_LOOP_BIT); in jent_memaccess()
486 if (NULL == ec || NULL == ec->mem) in jent_memaccess()
488 wrap = ec->memblocksize * ec->memblocks; in jent_memaccess()
497 for (i = 0; i < (ec->memaccessloops + acc_loop_cnt); i++) { in jent_memaccess()
498 unsigned char *tmpval = ec->mem + ec->memlocation; in jent_memaccess()
510 ec->memlocation = ec->memlocation + ec->memblocksize - 1; in jent_memaccess()
511 ec->memlocation = ec->memlocation % wrap; in jent_memaccess()
531 static int jent_measure_jitter(struct rand_data *ec) in jent_measure_jitter() argument
538 jent_memaccess(ec, 0); in jent_measure_jitter()
545 current_delta = jent_delta(ec->prev_time, time); in jent_measure_jitter()
546 ec->prev_time = time; in jent_measure_jitter()
549 stuck = jent_stuck(ec, current_delta); in jent_measure_jitter()
552 jent_lfsr_time(ec, current_delta, 0, stuck); in jent_measure_jitter()
563 static void jent_gen_entropy(struct rand_data *ec) in jent_gen_entropy() argument
571 jent_measure_jitter(ec); in jent_gen_entropy()
575 if (jent_measure_jitter(ec)) in jent_gen_entropy()
582 if (++k >= ((DATA_SIZE_BITS + safety_factor) * ec->osr)) in jent_gen_entropy()
610 int jent_read_entropy(struct rand_data *ec, unsigned char *data, in jent_read_entropy() argument
615 if (!ec) in jent_read_entropy()
621 jent_gen_entropy(ec); in jent_read_entropy()
623 if (jent_health_failure(ec)) { in jent_read_entropy()
626 if (jent_rct_failure(ec)) in jent_read_entropy()
642 jent_apt_reset(ec, 0); in jent_read_entropy()
643 ec->apt_base_set = 0; in jent_read_entropy()
646 ec->rct_count = 0; in jent_read_entropy()
649 ec->health_failure = 0; in jent_read_entropy()
662 jent_memcpy(p, &ec->data, tocopy); in jent_read_entropy()
725 struct rand_data ec = { 0 }; in jent_entropy_init() local
728 ec.osr = 1; in jent_entropy_init()
765 ec.prev_time = time; in jent_entropy_init()
766 jent_lfsr_time(&ec, time, 0, 0); in jent_entropy_init()
781 stuck = jent_stuck(&ec, delta); in jent_entropy_init()
807 jent_apt_reset(&ec, in jent_entropy_init()
809 if (jent_health_failure(&ec)) in jent_entropy_init()
815 if (jent_rct_failure(&ec)) in jent_entropy_init()