These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / net / wireless / ath / dfs_pri_detector.c
index 43b6081..05b0464 100644 (file)
@@ -25,6 +25,9 @@ struct ath_dfs_pool_stats global_dfs_pool_stats = {};
 
 #define DFS_POOL_STAT_INC(c) (global_dfs_pool_stats.c++)
 #define DFS_POOL_STAT_DEC(c) (global_dfs_pool_stats.c--)
+#define GET_PRI_TO_USE(MIN, MAX, RUNTIME) \
+       (MIN + PRI_TOLERANCE == MAX - PRI_TOLERANCE ? \
+       MIN + PRI_TOLERANCE : RUNTIME)
 
 /**
  * struct pulse_elem - elements in pulse queue
@@ -243,7 +246,8 @@ static bool pseq_handler_create_sequences(struct pri_detector *pde,
                ps.count_falses = 0;
                ps.first_ts = p->ts;
                ps.last_ts = ts;
-               ps.pri = ts - p->ts;
+               ps.pri = GET_PRI_TO_USE(pde->rs->pri_min,
+                       pde->rs->pri_max, ts - p->ts);
                ps.dur = ps.pri * (pde->rs->ppb - 1)
                                + 2 * pde->rs->max_pri_tolerance;
 
@@ -273,7 +277,7 @@ static bool pseq_handler_create_sequences(struct pri_detector *pde,
                                tmp_false_count++;
                        }
                }
-               if (ps.count < min_count)
+               if (ps.count <= min_count)
                        /* did not reach minimum count, drop sequence */
                        continue;
 
@@ -390,6 +394,10 @@ static struct pri_sequence *pri_detector_add_pulse(struct pri_detector *de,
        if ((ts - de->last_ts) < rs->max_pri_tolerance)
                /* if delta to last pulse is too short, don't use this pulse */
                return NULL;
+       /* radar detector spec needs chirp, but not detected */
+       if (rs->chirp && rs->chirp != event->chirp)
+               return NULL;
+
        de->last_ts = ts;
 
        max_updated_seq = pseq_handler_add_to_existing_seqs(de, ts);