Lines Matching refs:pde

161 static struct pulse_elem *pulse_queue_get_tail(struct pri_detector *pde)  in pulse_queue_get_tail()  argument
163 struct list_head *l = &pde->pulses; in pulse_queue_get_tail()
169 static bool pulse_queue_dequeue(struct pri_detector *pde) in pulse_queue_dequeue() argument
171 struct pulse_elem *p = pulse_queue_get_tail(pde); in pulse_queue_dequeue()
174 pde->count--; in pulse_queue_dequeue()
178 return (pde->count > 0); in pulse_queue_dequeue()
182 static void pulse_queue_check_window(struct pri_detector *pde) in pulse_queue_check_window() argument
188 if (pde->count < 2) in pulse_queue_check_window()
191 if (pde->last_ts <= pde->window_size) in pulse_queue_check_window()
194 min_valid_ts = pde->last_ts - pde->window_size; in pulse_queue_check_window()
195 while ((p = pulse_queue_get_tail(pde)) != NULL) { in pulse_queue_check_window()
198 pulse_queue_dequeue(pde); in pulse_queue_check_window()
202 static bool pulse_queue_enqueue(struct pri_detector *pde, u64 ts) in pulse_queue_enqueue() argument
216 list_add(&p->head, &pde->pulses); in pulse_queue_enqueue()
217 pde->count++; in pulse_queue_enqueue()
218 pde->last_ts = ts; in pulse_queue_enqueue()
219 pulse_queue_check_window(pde); in pulse_queue_enqueue()
220 if (pde->count >= pde->max_count) in pulse_queue_enqueue()
221 pulse_queue_dequeue(pde); in pulse_queue_enqueue()
225 static bool pseq_handler_create_sequences(struct pri_detector *pde, in pseq_handler_create_sequences() argument
229 list_for_each_entry(p, &pde->pulses, head) { in pseq_handler_create_sequences()
236 if (delta_ts < pde->rs->pri_min) in pseq_handler_create_sequences()
240 if (delta_ts > pde->rs->pri_max) in pseq_handler_create_sequences()
249 ps.pri = GET_PRI_TO_USE(pde->rs->pri_min, in pseq_handler_create_sequences()
250 pde->rs->pri_max, ts - p->ts); in pseq_handler_create_sequences()
251 ps.dur = ps.pri * (pde->rs->ppb - 1) in pseq_handler_create_sequences()
252 + 2 * pde->rs->max_pri_tolerance; in pseq_handler_create_sequences()
258 list_for_each_entry_continue(p2, &pde->pulses, head) { in pseq_handler_create_sequences()
265 pde->rs->max_pri_tolerance); in pseq_handler_create_sequences()
298 list_add(&new_ps->head, &pde->sequences); in pseq_handler_create_sequences()
305 pseq_handler_add_to_existing_seqs(struct pri_detector *pde, u64 ts) in pseq_handler_add_to_existing_seqs() argument
309 list_for_each_entry_safe(ps, ps2, &pde->sequences, head) { in pseq_handler_add_to_existing_seqs()
322 pde->rs->max_pri_tolerance); in pseq_handler_add_to_existing_seqs()
337 pseq_handler_check_detection(struct pri_detector *pde) in pseq_handler_check_detection() argument
341 if (list_empty(&pde->sequences)) in pseq_handler_check_detection()
344 list_for_each_entry(ps, &pde->sequences, head) { in pseq_handler_check_detection()
350 if ((ps->count >= pde->rs->ppb_thresh) && in pseq_handler_check_detection()
351 (ps->count * pde->rs->num_pri >= ps->count_falses)) in pseq_handler_check_detection()
359 static void pri_detector_reset(struct pri_detector *pde, u64 ts) in pri_detector_reset() argument
363 list_for_each_entry_safe(ps, ps0, &pde->sequences, head) { in pri_detector_reset()
367 list_for_each_entry_safe(p, p0, &pde->pulses, head) { in pri_detector_reset()
371 pde->count = 0; in pri_detector_reset()
372 pde->last_ts = ts; in pri_detector_reset()