qcacmn: Fix delta peak number counting for DFS

Every time when dfs_count_the_other_delay_elements is called,
delta_peak_match_count is set to 1, which is not correct.

delta_peak_match_count should be initialized once like numpulses
in dfs_bin_pri_check.

Change-Id: I9cf432cbe7b0ddb42a0c33adcbef07d0c48f42f8
CRs-Fixed: 2165538
This commit is contained in:
bings
2018-01-10 10:16:48 +08:00
gecommit door snandini
bovenliggende cb80e2f5d2
commit 88486ab463

Bestand weergeven

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2016-2017 The Linux Foundation. All rights reserved.
* Copyright (c) 2016-2018 The Linux Foundation. All rights reserved.
* Copyright (c) 2002-2010, Atheros Communications Inc.
*
* Permission to use, copy, modify, and/or distribute this software for any
@@ -760,6 +760,7 @@ static inline void dfs_check_pulses_for_delta_variance(
* @primargin: Primary margin.
* @durmargin: Duration margin.
* @numpulses: Number of pulses.
* @delta_peak_match_count: Pointer to delta_peak_match_count.
* @prev_good_timestamp: Previous good timestamp.
* @fundamentalpri: Highest PRI.
*/
@@ -773,6 +774,7 @@ static void dfs_count_the_other_delay_elements(
uint32_t primargin,
uint32_t durmargin,
int *numpulses,
uint8_t *delta_peak_match_count,
uint32_t *prev_good_timestamp,
int fundamentalpri)
{
@@ -782,7 +784,6 @@ static void dfs_count_the_other_delay_elements(
int dindex, primatch, numpulsetochk = 2;
int32_t sidx_min = DFS_BIG_SIDX;
int32_t sidx_max = -DFS_BIG_SIDX;
uint8_t delta_peak_match_count = 1;
delayindex = (dl->dl_firstelem + i) & DFS_MAX_DL_MASK;
searchpri = dl->dl_elems[delayindex].de_time;
@@ -820,7 +821,7 @@ static void dfs_count_the_other_delay_elements(
dl->dl_elems[delayindex].de_seq_num;
dfs_update_min_and_max_sidx(dl, delayindex,
&sidx_min, &sidx_max,
&delta_peak_match_count,
delta_peak_match_count,
rf);
(*numpulses)++;
} else {
@@ -840,19 +841,19 @@ static void dfs_count_the_other_delay_elements(
delta_time_stamps, fundamentalpri,
primargin, numpulses, delayindex,
&sidx_min, &sidx_max,
&delta_peak_match_count,
delta_peak_match_count,
dl);
}
*prev_good_timestamp = dl->dl_elems[delayindex].de_ts;
dl->dl_search_pri = searchpri;
dl->dl_min_sidx = sidx_min;
dl->dl_max_sidx = sidx_max;
dl->dl_delta_peak_match_count = delta_peak_match_count;
dl->dl_delta_peak_match_count = *delta_peak_match_count;
dfs_debug(dfs, WLAN_DEBUG_DFS2,
"rf->minpri=%d rf->maxpri=%d searchpri = %d index = %d numpulses = %d deltapri=%d j=%d",
rf->rf_minpri, rf->rf_maxpri, searchpri,
i, *numpulses, deltapri, j);
"rf->minpri=%d rf->maxpri=%d searchpri = %d index = %d numpulses = %d delta peak match count = %d deltapri=%d j=%d",
rf->rf_minpri, rf->rf_maxpri, searchpri, i,
*numpulses, *delta_peak_match_count, deltapri, j);
}
}
@@ -877,6 +878,7 @@ int dfs_bin_pri_check(
* maxfilterlen.
*/
int numpulses = 1;
uint8_t delta_peak_match_count = 1;
int priscorechk = 1;
/* Use the adjusted PRI margin to reduce false alarms
@@ -937,6 +939,7 @@ int dfs_bin_pri_check(
for (i = 0; i < dl->dl_numelems; i++)
dfs_count_the_other_delay_elements(dfs, rf, dl, i, refpri,
refdur, primargin, durmargin, &numpulses,
&delta_peak_match_count,
&prev_good_timestamp, fundamentalpri);
return numpulses;