qcacld-3.0: SAP: Add radar pulse table for KR and CN

Add radar pulse table for new DFS domain KR and CN.

Change-Id: I75708a215f51b558a6b7573bcc730a08d2e4bd11
CRs-Fixed: 1047817
This commit is contained in:
Arif Hussain
2016-07-28 17:25:00 -07:00
committed by qcabuildsw
parent 604ba6cf04
commit aca67305b5
3 changed files with 122 additions and 38 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2011-2015 The Linux Foundation. All rights reserved.
* Copyright (c) 2011-2016 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -140,3 +140,56 @@ struct dfs_pulse dfs_etsi_radars[] = {
/* 20-30us, 2000-4000 PRF, 20 pulses */
{20, 30, 2000, 4000, 0, 24, 6, 19, 33, 24, 0, 0, 0, 36}, /* Type 4 */
};
struct dfs_pulse dfs_korea_radars[] = {
/* Korea Type 1 */
{18, 1, 700, 700, 0, 6, 5, 0, 1, 18, 0, 3, 1, 40},
/* Korea Type 2 */
{10, 1, 1800, 1800, 0, 6, 4, 0, 1, 18, 0, 3, 1, 41},
/* Korea Type 3 */
{70, 1, 330, 330, 0, 6, 20, 0, 2, 18, 0, 3, 1, 42},
/* Korea Type 4 */
{3, 1, 3003, 3003, 1, 7, 2, 0, 1, 18, 0, 0, 1, 43},
};
struct dfs_pulse dfs_china_radars[] = {
/* FCC NEW TYPE 0 */
{18, 1, 700, 700, 0, 6, 5, 0, 1, 18, 0, 3, 1, 0},
{18, 1, 350, 350, 0, 6, 5, 0, 1, 18, 0, 3, 0, 0},
/* FCC TYPE 6 */
{ 9, 1, 3003, 3003, 1, 7, 5, 0, 1, 18, 0, 0, 1, 1},
/* FCC TYPE 2 */
{23, 5, 4347, 6666, 0, 18, 8, 0, 7, 22, 0, 3, 0, 2},
/* FCC TYPE 3 */
{18, 10, 2000, 5000, 0, 23, 6, 6, 13, 22, 0, 3, 0, 5},
/* FCC TYPE 4 */
{16, 15, 2000, 5000, 0, 25, 5, 11, 23, 22, 0, 3, 0, 11},
/*
* FCC NEW TYPE 1
* 518us to 938us pulses (min 56 pulses)
*/
{57, 1, 1066, 1930, 0, 6, 20, 0, 1, 22, 0, 3, 0, 21},
/*
* FCC NEW TYPE 1
* 938us to 2000 pulses (min 26 pulses)
*/
{27, 1, 500, 1066, 0, 6, 13, 0, 1, 22, 0, 3, 0, 22},
/*
* FCC NEW TYPE 1
* 2000 to 3067us pulses (min 17 pulses)
*/
{18, 1, 325, 500, 0, 6, 9, 0, 1, 22, 0, 3, 0, 23},
/* CN TYPE 1 */
{20, 1, 1000, 1000, 0, 6, 5, 0, 1, 18, 0, 3, 1, 24},
};

View File

@@ -384,53 +384,67 @@ int dfs_init_radar_filters(struct ieee80211com *ic,
dfs_print_filters(ic);
#endif
dfs->dfs_rinfo.rn_numbin5radars = numb5radars;
if (dfs->dfs_b5radars != NULL)
if (dfs->dfs_b5radars != NULL) {
OS_FREE(dfs->dfs_b5radars);
dfs->dfs_b5radars = (struct dfs_bin5radars *)os_malloc(NULL,
numb5radars *
sizeof(struct
dfs_bin5radars),
GFP_KERNEL);
if (dfs->dfs_b5radars == NULL) {
DFS_DPRINTK(dfs, ATH_DEBUG_DFS,
"%s: cannot allocate memory for bin5 radars",
__func__);
goto bad4;
dfs->dfs_b5radars = NULL;
}
if (ic->dfs_hw_bd_id != DFS_HWBD_QCA6174) {
dfs->dfs_b5radars_ext_seg =
(struct dfs_bin5radars *)os_malloc(NULL, numb5radars *
sizeof(struct dfs_bin5radars),
GFP_KERNEL);
if (dfs->dfs_b5radars_ext_seg == NULL) {
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_ERROR,
"%s:Fail allocate memory for ext bin5 radars",
__func__);
if (dfs->dfs_b5radars_ext_seg != NULL) {
OS_FREE(dfs->dfs_b5radars_ext_seg);
dfs->dfs_b5radars_ext_seg = NULL;
}
if (numb5radars) {
dfs->dfs_b5radars = (struct dfs_bin5radars *)os_malloc(NULL,
numb5radars *
sizeof(struct dfs_bin5radars),
GFP_KERNEL);
if (dfs->dfs_b5radars == NULL) {
DFS_DPRINTK(dfs, ATH_DEBUG_DFS,
"%s: cannot allocate memory for bin5 radars",
__func__);
goto bad4;
}
}
for (n = 0; n < numb5radars; n++) {
dfs->dfs_b5radars[n].br_pulse = b5pulses[n];
dfs->dfs_b5radars[n].br_pulse.b5_timewindow *=
DFS_BIN5_TIME_WINDOW_UNITS_MULTIPLIER;
if (dfs->dfs_b5radars[n].br_pulse.b5_rssithresh <
min_rssithresh)
min_rssithresh =
dfs->dfs_b5radars[n].br_pulse.b5_rssithresh;
if (dfs->dfs_b5radars[n].br_pulse.b5_maxdur > max_pulsedur)
max_pulsedur = dfs->dfs_b5radars[n].br_pulse.b5_maxdur;
}
if (ic->dfs_hw_bd_id != DFS_HWBD_QCA6174) {
dfs->dfs_b5radars_ext_seg =
(struct dfs_bin5radars *)os_malloc(NULL,
numb5radars *
sizeof(struct dfs_bin5radars),
GFP_KERNEL);
if (dfs->dfs_b5radars_ext_seg == NULL) {
QDF_TRACE(QDF_MODULE_ID_SAP,
QDF_TRACE_LEVEL_ERROR,
"%s:Fail allocate memory for ext bin5 radars",
__func__);
goto bad4;
}
}
if (ic->dfs_hw_bd_id != DFS_HWBD_QCA6174) {
for (n = 0; n < numb5radars; n++) {
dfs->dfs_b5radars_ext_seg[n].br_pulse = b5pulses[n];
dfs->dfs_b5radars[n].br_pulse = b5pulses[n];
dfs->dfs_b5radars[n].br_pulse.b5_timewindow *=
DFS_BIN5_TIME_WINDOW_UNITS_MULTIPLIER;
if (dfs->dfs_b5radars[n].br_pulse.b5_rssithresh <
min_rssithresh)
min_rssithresh =
dfs->dfs_b5radars[n].br_pulse.b5_rssithresh;
if (dfs->dfs_b5radars[n].br_pulse.b5_maxdur >
max_pulsedur)
max_pulsedur =
dfs->dfs_b5radars[n].br_pulse.b5_maxdur;
}
if (ic->dfs_hw_bd_id != DFS_HWBD_QCA6174) {
for (n = 0; n < numb5radars; n++) {
dfs->dfs_b5radars_ext_seg[n].br_pulse =
b5pulses[n];
dfs->dfs_b5radars_ext_seg[n].br_pulse.b5_timewindow *=
DFS_BIN5_TIME_WINDOW_UNITS_MULTIPLIER;
DFS_BIN5_TIME_WINDOW_UNITS_MULTIPLIER;
b5_rssithresh =
dfs->dfs_b5radars_ext_seg[n].br_pulse.b5_rssithresh;
dfs->dfs_b5radars_ext_seg[n].br_pulse.b5_rssithresh;
if (b5_rssithresh < min_rssithresh)
min_rssithresh = b5_rssithresh;
@@ -439,6 +453,7 @@ int dfs_init_radar_filters(struct ieee80211com *ic,
if (b5_maxdur > max_pulsedur)
max_pulsedur = b5_maxdur;
}
}
}