Lines Matching refs:pde
158 static struct pulse_elem *pulse_queue_get_tail(struct pri_detector *pde) in pulse_queue_get_tail() argument
160 struct list_head *l = &pde->pulses; in pulse_queue_get_tail()
166 static bool pulse_queue_dequeue(struct pri_detector *pde) in pulse_queue_dequeue() argument
168 struct pulse_elem *p = pulse_queue_get_tail(pde); in pulse_queue_dequeue()
171 pde->count--; in pulse_queue_dequeue()
175 return (pde->count > 0); in pulse_queue_dequeue()
179 static void pulse_queue_check_window(struct pri_detector *pde) in pulse_queue_check_window() argument
185 if (pde->count < 2) in pulse_queue_check_window()
188 if (pde->last_ts <= pde->window_size) in pulse_queue_check_window()
191 min_valid_ts = pde->last_ts - pde->window_size; in pulse_queue_check_window()
192 while ((p = pulse_queue_get_tail(pde)) != NULL) { in pulse_queue_check_window()
195 pulse_queue_dequeue(pde); in pulse_queue_check_window()
199 static bool pulse_queue_enqueue(struct pri_detector *pde, u64 ts) in pulse_queue_enqueue() argument
213 list_add(&p->head, &pde->pulses); in pulse_queue_enqueue()
214 pde->count++; in pulse_queue_enqueue()
215 pde->last_ts = ts; in pulse_queue_enqueue()
216 pulse_queue_check_window(pde); in pulse_queue_enqueue()
217 if (pde->count >= pde->max_count) in pulse_queue_enqueue()
218 pulse_queue_dequeue(pde); in pulse_queue_enqueue()
222 static bool pseq_handler_create_sequences(struct pri_detector *pde, in pseq_handler_create_sequences() argument
226 list_for_each_entry(p, &pde->pulses, head) { in pseq_handler_create_sequences()
233 if (delta_ts < pde->rs->pri_min) in pseq_handler_create_sequences()
237 if (delta_ts > pde->rs->pri_max) in pseq_handler_create_sequences()
247 ps.dur = ps.pri * (pde->rs->ppb - 1) in pseq_handler_create_sequences()
248 + 2 * pde->rs->max_pri_tolerance; in pseq_handler_create_sequences()
254 list_for_each_entry_continue(p2, &pde->pulses, head) { in pseq_handler_create_sequences()
261 pde->rs->max_pri_tolerance); in pseq_handler_create_sequences()
294 list_add(&new_ps->head, &pde->sequences); in pseq_handler_create_sequences()
301 pseq_handler_add_to_existing_seqs(struct pri_detector *pde, u64 ts) in pseq_handler_add_to_existing_seqs() argument
305 list_for_each_entry_safe(ps, ps2, &pde->sequences, head) { in pseq_handler_add_to_existing_seqs()
318 pde->rs->max_pri_tolerance); in pseq_handler_add_to_existing_seqs()
333 pseq_handler_check_detection(struct pri_detector *pde) in pseq_handler_check_detection() argument
337 if (list_empty(&pde->sequences)) in pseq_handler_check_detection()
340 list_for_each_entry(ps, &pde->sequences, head) { in pseq_handler_check_detection()
346 if ((ps->count >= pde->rs->ppb_thresh) && in pseq_handler_check_detection()
347 (ps->count * pde->rs->num_pri >= ps->count_falses)) in pseq_handler_check_detection()
355 static void pri_detector_reset(struct pri_detector *pde, u64 ts) in pri_detector_reset() argument
359 list_for_each_entry_safe(ps, ps0, &pde->sequences, head) { in pri_detector_reset()
363 list_for_each_entry_safe(p, p0, &pde->pulses, head) { in pri_detector_reset()
367 pde->count = 0; in pri_detector_reset()
368 pde->last_ts = ts; in pri_detector_reset()