From f9df7db9b53f74457df18e926e9e030186a15f91 Mon Sep 17 00:00:00 2001 From: Abhijit Pradhan Date: Sun, 8 Oct 2017 10:33:28 +0530 Subject: [PATCH] qcacmn: Avoid functions with a very long list of arguments To avoid passing multiple parameters to MLME functions from DFS component, use a common structure between these components and pass the structure instead of long list of parameters. Define the common structure in cmn_services directory to access it in both the components. Change-Id: I02dde0780eebbce0886685d1f72a62c84e5b4eeb CRs-Fixed: 2146000 --- umac/cmn_services/dfs/inc/dfs_ioctl.h | 63 ++++++++++++++++++ umac/dfs/core/src/dfs_structs.h | 63 ------------------ umac/dfs/core/src/misc/dfs.c | 55 ++-------------- umac/dfs/dispatcher/inc/wlan_dfs_lmac_api.h | 64 ++----------------- umac/dfs/dispatcher/src/wlan_dfs_lmac_api.c | 58 ++--------------- .../lmac_if/inc/wlan_lmac_if_def.h | 28 +------- 6 files changed, 82 insertions(+), 249 deletions(-) diff --git a/umac/cmn_services/dfs/inc/dfs_ioctl.h b/umac/cmn_services/dfs/inc/dfs_ioctl.h index c9522c10f148..9278b5eeef5b 100644 --- a/umac/cmn_services/dfs/inc/dfs_ioctl.h +++ b/umac/cmn_services/dfs/inc/dfs_ioctl.h @@ -144,4 +144,67 @@ struct dfs_ioctl_params { /* Flag to exclude all 2.4GHz channels */ #define DFS_RANDOM_CH_FLAG_NO_2GHZ_CH 0x0040 /* 0000 0000 0100 0000 */ +/** + * struct wlan_dfs_caps - DFS capability structure. + * @wlan_dfs_ext_chan_ok: Can radar be detected on the extension chan? + * @wlan_dfs_combined_rssi_ok: Can use combined radar RSSI? + * @wlan_dfs_use_enhancement: This flag is used to indicate if radar + * detection scheme should use enhanced chirping + * detection algorithm. This flag also determines + * if certain radar data should be discarded to + * minimize false detection of radar. + * @wlan_strong_signal_diversiry: Strong Signal fast diversity count. + * @wlan_chip_is_bb_tlv: Chip is BB TLV? + * @wlan_chip_is_over_sampled: Is Over sampled. + * @wlan_chip_is_ht160: IS VHT160? + * @wlan_chip_is_false_detect: Is False detected? + * @wlan_fastdiv_val: Goes with wlan_strong_signal_diversiry: If we + * have fast diversity capability, read off + * Strong Signal fast diversity count set in the + * ini file, and store so we can restore the + * value when radar is disabled. + */ +struct wlan_dfs_caps { + uint32_t wlan_dfs_ext_chan_ok:1, + wlan_dfs_combined_rssi_ok:1, + wlan_dfs_use_enhancement:1, + wlan_strong_signal_diversiry:1, + wlan_chip_is_bb_tlv:1, + wlan_chip_is_over_sampled:1, + wlan_chip_is_ht160:1, + wlan_chip_is_false_detect:1; + uint32_t wlan_fastdiv_val; +}; + +/** + * struct wlan_dfs_phyerr_param - DFS Phyerr structure. + * @pe_firpwr: FIR pwr out threshold. + * @pe_rrssi: Radar rssi thresh. + * @pe_height: Pulse height thresh. + * @pe_prssi: Pulse rssi thresh. + * @pe_inband: Inband thresh. + * @pe_relpwr: Relative power threshold in 0.5dB steps. + * @pe_relstep: Pulse Relative step threshold in 0.5dB steps. + * @pe_maxlen: Max length of radar sign in 0.8us units. + * @pe_usefir128: Use the average in-band power measured over 128 cycles. + * @pe_blockradar: Enable to block radar check if pkt detect is done via OFDM + * weak signal detect or pkt is detected immediately after tx + * to rx transition. + * @pe_enmaxrssi: Enable to use the max rssi instead of the last rssi during + * fine gain changes for radar detection. + */ +struct wlan_dfs_phyerr_param { + int32_t pe_firpwr; + int32_t pe_rrssi; + int32_t pe_height; + int32_t pe_prssi; + int32_t pe_inband; + uint32_t pe_relpwr; + uint32_t pe_relstep; + uint32_t pe_maxlen; + bool pe_usefir128; + bool pe_blockradar; + bool pe_enmaxrssi; +}; + #endif /* _DFS_IOCTL_H_ */ diff --git a/umac/dfs/core/src/dfs_structs.h b/umac/dfs/core/src/dfs_structs.h index 92099b40bc31..6562c2a2e94b 100644 --- a/umac/dfs/core/src/dfs_structs.h +++ b/umac/dfs/core/src/dfs_structs.h @@ -41,38 +41,6 @@ enum { DFS_NOL_CLIST_CMD_UPDATE = 0x1, }; -/** - * struct wlan_dfs_caps - DFS capability structure. - * @wlan_dfs_ext_chan_ok: Can radar be detected on the extension chan? - * @wlan_dfs_combined_rssi_ok: Can use combined radar RSSI? - * @wlan_dfs_use_enhancement: This flag is used to indicate if radar - * detection scheme should use enhanced chirping - * detection algorithm. This flag also determines - * if certain radar data should be discarded to - * minimize false detection of radar. - * @wlan_strong_signal_diversiry: Strong Signal fast diversity count. - * @wlan_chip_is_bb_tlv: Chip is BB TLV? - * @wlan_chip_is_over_sampled: Is Over sampled. - * @wlan_chip_is_ht160: IS VHT160? - * @wlan_chip_is_false_detect: Is False detected? - * @wlan_fastdiv_val: Goes with wlan_strong_signal_diversiry: If we - * have fast diversity capability, read off - * Strong Signal fast diversity count set in the - * ini file, and store so we can restore the - * value when radar is disabled. - */ -struct wlan_dfs_caps { - uint32_t wlan_dfs_ext_chan_ok:1, - wlan_dfs_combined_rssi_ok:1, - wlan_dfs_use_enhancement:1, - wlan_strong_signal_diversiry:1, - wlan_chip_is_bb_tlv:1, - wlan_chip_is_over_sampled:1, - wlan_chip_is_ht160:1, - wlan_chip_is_false_detect:1; - uint32_t wlan_fastdiv_val; -}; - /** * struct dfs_pulse - DFS pulses. * @rp_numpulses: Num of pulses in radar burst. @@ -156,37 +124,6 @@ struct dfs_nol_chan_entry { uint32_t nol_timeout_ms; }; -/** - * struct wlan_dfs_phyerr_param - DFS Phyerr structure. - * @pe_firpwr: FIR pwr out threshold. - * @pe_rrssi: Radar rssi thresh. - * @pe_height: Pulse height thresh. - * @pe_prssi: Pulse rssi thresh. - * @pe_inband: Inband thresh. - * @pe_relpwr: Relative power threshold in 0.5dB steps. - * @pe_relstep: Pulse Relative step threshold in 0.5dB steps. - * @pe_maxlen: Max length of radar sign in 0.8us units. - * @pe_usefir128: Use the average in-band power measured over 128 cycles. - * @pe_blockradar: Enable to block radar check if pkt detect is done via OFDM - * weak signal detect or pkt is detected immediately after tx - * to rx transition. - * @pe_enmaxrssi: Enable to use the max rssi instead of the last rssi during - * fine gain changes for radar detection. - */ -struct wlan_dfs_phyerr_param { - int32_t pe_firpwr; - int32_t pe_rrssi; - int32_t pe_height; - int32_t pe_prssi; - int32_t pe_inband; - uint32_t pe_relpwr; - uint32_t pe_relstep; - uint32_t pe_maxlen; - bool pe_usefir128; - bool pe_blockradar; - bool pe_enmaxrssi; -}; - /** * wlan_dfs_phyerr_init_noval() - Fill wlan_dfs_phyerr_param with 0xFF. * @pe: Pointer to wlan_dfs_phyerr_param structure. diff --git a/umac/dfs/core/src/misc/dfs.c b/umac/dfs/core/src/misc/dfs.c index 19a6a5b0fdbd..5737475a574b 100644 --- a/umac/dfs/core/src/misc/dfs.c +++ b/umac/dfs/core/src/misc/dfs.c @@ -164,10 +164,6 @@ int dfs_main_attach(struct wlan_dfs *dfs) { int i, n; struct wlan_dfs_radar_tab_info radar_info; - bool ext_chan, combined_rssi, use_enhancement, strong_signal_diversiry; - bool chip_is_bb_tlv, chip_is_over_sampled, chip_is_ht160; - bool chip_is_false_detect; - uint32_t fastdiv_val; if (!dfs) { dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS, "dfs is NULL"); @@ -188,26 +184,7 @@ int dfs_main_attach(struct wlan_dfs *dfs) */ qdf_mem_zero(&radar_info, sizeof(radar_info)); - lmac_get_caps(dfs->dfs_pdev_obj, - &ext_chan, - &combined_rssi, - &use_enhancement, - &strong_signal_diversiry, - &chip_is_bb_tlv, - &chip_is_over_sampled, - &chip_is_ht160, - &chip_is_false_detect, - &fastdiv_val); - - dfs->dfs_caps.wlan_dfs_ext_chan_ok = ext_chan; - dfs->dfs_caps.wlan_dfs_combined_rssi_ok = combined_rssi; - dfs->dfs_caps.wlan_dfs_use_enhancement = use_enhancement; - dfs->dfs_caps.wlan_strong_signal_diversiry = strong_signal_diversiry; - dfs->dfs_caps.wlan_chip_is_bb_tlv = chip_is_bb_tlv; - dfs->dfs_caps.wlan_chip_is_over_sampled = chip_is_over_sampled; - dfs->dfs_caps.wlan_chip_is_ht160 = chip_is_ht160; - dfs->dfs_caps.wlan_chip_is_false_detect = chip_is_false_detect; - dfs->dfs_caps.wlan_fastdiv_val = fastdiv_val; + lmac_get_caps(dfs->dfs_pdev_obj, &(dfs->dfs_caps)); dfs_clear_stats(dfs); dfs->dfs_event_log_on = 1; @@ -633,15 +610,7 @@ void dfs_radar_enable(struct wlan_dfs *dfs, int no_cac, uint32_t opmode) pe.pe_maxlen); lmac_dfs_enable(dfs->dfs_pdev_obj, &is_fastclk, - pe.pe_firpwr, - pe.pe_rrssi, - pe.pe_height, - pe.pe_prssi, - pe.pe_inband, - pe.pe_relpwr, - pe.pe_relstep, - pe.pe_maxlen, - dfs->dfsdomain); + &pe, dfs->dfsdomain); dfs_debug(dfs, WLAN_DEBUG_DFS, "Enabled radar detection on channel %d", dfs->dfs_curchan->dfs_ch_freq); @@ -1062,15 +1031,7 @@ int dfs_set_thresholds(struct wlan_dfs *dfs, const uint32_t threshtype, * format. */ lmac_dfs_enable(dfs->dfs_pdev_obj, &is_fastclk, - pe.pe_firpwr, - pe.pe_rrssi, - pe.pe_height, - pe.pe_prssi, - pe.pe_inband, - pe.pe_relpwr, - pe.pe_relstep, - pe.pe_maxlen, - dfs->dfsdomain); + &pe, dfs->dfsdomain); return 1; } @@ -1080,15 +1041,7 @@ int dfs_get_thresholds(struct wlan_dfs *dfs, { qdf_mem_zero(param, sizeof(*param)); - lmac_dfs_get_thresholds(dfs->dfs_pdev_obj, - &(param->pe_firpwr), - &(param->pe_rrssi), - &(param->pe_height), - &(param->pe_prssi), - &(param->pe_inband), - &(param->pe_relpwr), - &(param->pe_relstep), - &(param->pe_maxlen)); + lmac_dfs_get_thresholds(dfs->dfs_pdev_obj, param); return 1; } diff --git a/umac/dfs/dispatcher/inc/wlan_dfs_lmac_api.h b/umac/dfs/dispatcher/inc/wlan_dfs_lmac_api.h index 35d25e7c3ca0..427a0f2a6469 100644 --- a/umac/dfs/dispatcher/inc/wlan_dfs_lmac_api.h +++ b/umac/dfs/dispatcher/inc/wlan_dfs_lmac_api.h @@ -31,34 +31,10 @@ /** * lmac_get_caps() - Get DFS capabilities. * @pdev: Pointer to PDEV structure. - * @ext_chan: Can radar be detected on the extension chan? - * @combined_rssi: Can use combined radar RSSI? - * @use_enhancement: This flag is used to indicate if radar - * detection scheme should use enhanced chirping - * detection algorithm. This flag also determines - * if certain radar data should be discarded to - * minimize false detection of radar. - * @strong_signal_diversiry: Strong Signal fast diversity count. - * @chip_is_bb_tlv: Chip is BB TLV? - * @chip_is_over_sampled: Is Over sampled. - * @chip_is_ht160: IS VHT160? - * @chip_is_false_detect: Is False detected? - * @fastdiv_val: Goes with wlan_strong_signal_diversiry: If we - * have fast diversity capability, read off - * Strong Signal fast diversity count set in the - * ini file, and store so we can restore the - * value when radar is disabled. + * @dfs_caps: Pointer to dfs_caps structure */ void lmac_get_caps(struct wlan_objmgr_pdev *pdev, - bool *ext_chan, - bool *combined_rssi, - bool *use_enhancement, - bool *strong_signal_diversiry, - bool *chip_is_bb_tlv, - bool *chip_is_over_sampled, - bool *chip_is_ht160, - bool *chip_is_false_detect, - uint32_t *fastdiv_val); + struct wlan_dfs_caps *dfs_caps); /** * lmac_get_tsf64() - Get tsf64 value. @@ -79,49 +55,21 @@ void lmac_dfs_disable(struct wlan_objmgr_pdev *pdev, int no_cac); * lmac_dfs_enable() - Enable DFS. * @pdev: Pointer to PDEV structure. * @is_fastclk: fastclk value. - * @pe_firpwr: FIR pwr out threshold. - * @pe_rrssi: Radar rssi thresh. - * @pe_height: Pulse height thresh. - * @pe_prssi: Pulse rssi thresh. - * @pe_inband: Inband thresh. - * @pe_relpwr: Relative power threshold in 0.5dB steps. - * @pe_relstep: Pulse Relative step threshold in 0.5dB steps. - * @pe_maxlen: Max length of radar sign in 0.8us units. + * @param: Pointer to wlan_dfs_phyerr_param structure. * @dfsdomain: DFS domain. */ void lmac_dfs_enable(struct wlan_objmgr_pdev *pdev, int *is_fastclk, - int32_t pe_firpwr, - int32_t pe_rrssi, - int32_t pe_height, - int32_t pe_prssi, - int32_t pe_inband, - uint32_t pe_relpwr, - uint32_t pe_relstep, - uint32_t pe_maxlen, + struct wlan_dfs_phyerr_param *param, int dfsdomain); /** * lmac_dfs_get_thresholds() - Get thresholds. * @pdev: Pointer to PDEV structure. - * @pe_firpwr: FIR pwr out threshold. - * @pe_rrssi: Radar rssi thresh. - * @pe_height: Pulse height thresh. - * @pe_prssi: Pulse rssi thresh. - * @pe_inband: Inband thresh. - * @pe_relpwr: Relative power threshold in 0.5dB steps. - * @pe_relstep: Pulse Relative step threshold in 0.5dB steps. - * @pe_maxlen: Max length of radar sign in 0.8us units. + * @param: Pointer to wlan_dfs_phyerr_param structure. */ void lmac_dfs_get_thresholds(struct wlan_objmgr_pdev *pdev, - int32_t *pe_firpwr, - int32_t *pe_rrssi, - int32_t *pe_height, - int32_t *pe_prssi, - int32_t *pe_inband, - uint32_t *pe_relpwr, - uint32_t *pe_relstep, - uint32_t *pe_maxlen); + struct wlan_dfs_phyerr_param *param); /** * lmac_is_mode_offload() - Check the radio for offload. diff --git a/umac/dfs/dispatcher/src/wlan_dfs_lmac_api.c b/umac/dfs/dispatcher/src/wlan_dfs_lmac_api.c index c1de48e04bc8..6681dba20a57 100644 --- a/umac/dfs/dispatcher/src/wlan_dfs_lmac_api.c +++ b/umac/dfs/dispatcher/src/wlan_dfs_lmac_api.c @@ -26,15 +26,7 @@ #include void lmac_get_caps(struct wlan_objmgr_pdev *pdev, - bool *ext_chan, - bool *combined_rssi, - bool *use_enhancement, - bool *strong_signal_diversiry, - bool *chip_is_bb_tlv, - bool *chip_is_over_sampled, - bool *chip_is_ht160, - bool *chip_is_false_detect, - uint32_t *fastdiv_val) + struct wlan_dfs_caps *dfs_caps) { struct wlan_objmgr_psoc *psoc; struct wlan_lmac_if_dfs_tx_ops *dfs_tx_ops; @@ -44,16 +36,7 @@ void lmac_get_caps(struct wlan_objmgr_pdev *pdev, dfs_tx_ops = &psoc->soc_cb.tx_ops.dfs_tx_ops; if (dfs_tx_ops->dfs_get_caps) - dfs_tx_ops->dfs_get_caps(pdev, - ext_chan, - combined_rssi, - use_enhancement, - strong_signal_diversiry, - chip_is_bb_tlv, - chip_is_over_sampled, - chip_is_ht160, - chip_is_false_detect, - fastdiv_val); + dfs_tx_ops->dfs_get_caps(pdev, dfs_caps); } uint64_t lmac_get_tsf64(struct wlan_objmgr_pdev *pdev) @@ -87,14 +70,7 @@ void lmac_dfs_disable(struct wlan_objmgr_pdev *pdev, int no_cac) void lmac_dfs_enable(struct wlan_objmgr_pdev *pdev, int *is_fastclk, - int32_t pe_firpwr, - int32_t pe_rrssi, - int32_t pe_height, - int32_t pe_prssi, - int32_t pe_inband, - uint32_t pe_relpwr, - uint32_t pe_relstep, - uint32_t pe_maxlen, + struct wlan_dfs_phyerr_param *param, int dfsdomain) { struct wlan_objmgr_psoc *psoc; @@ -107,26 +83,12 @@ void lmac_dfs_enable(struct wlan_objmgr_pdev *pdev, if (dfs_tx_ops->dfs_enable) dfs_tx_ops->dfs_enable(pdev, is_fastclk, - pe_firpwr, - pe_rrssi, - pe_height, - pe_prssi, - pe_inband, - pe_relpwr, - pe_relstep, - pe_maxlen, + param, dfsdomain); } void lmac_dfs_get_thresholds(struct wlan_objmgr_pdev *pdev, - int32_t *pe_firpwr, - int32_t *pe_rrssi, - int32_t *pe_height, - int32_t *pe_prssi, - int32_t *pe_inband, - uint32_t *pe_relpwr, - uint32_t *pe_relstep, - uint32_t *pe_maxlen) + struct wlan_dfs_phyerr_param *param) { struct wlan_objmgr_psoc *psoc; struct wlan_lmac_if_dfs_tx_ops *dfs_tx_ops; @@ -136,15 +98,7 @@ void lmac_dfs_get_thresholds(struct wlan_objmgr_pdev *pdev, dfs_tx_ops = &psoc->soc_cb.tx_ops.dfs_tx_ops; if (dfs_tx_ops->dfs_get_thresholds) - dfs_tx_ops->dfs_get_thresholds(pdev, - pe_firpwr, - pe_rrssi, - pe_height, - pe_prssi, - pe_inband, - pe_relpwr, - pe_relstep, - pe_maxlen); + dfs_tx_ops->dfs_get_thresholds(pdev, param); } bool lmac_is_mode_offload(struct wlan_objmgr_pdev *pdev) diff --git a/umac/global_umac_dispatcher/lmac_if/inc/wlan_lmac_if_def.h b/umac/global_umac_dispatcher/lmac_if/inc/wlan_lmac_if_def.h index 02461c3e8b3a..49824f384d04 100644 --- a/umac/global_umac_dispatcher/lmac_if/inc/wlan_lmac_if_def.h +++ b/umac/global_umac_dispatcher/lmac_if/inc/wlan_lmac_if_def.h @@ -448,39 +448,17 @@ struct wlan_lmac_if_reg_tx_ops { struct wlan_lmac_if_dfs_tx_ops { QDF_STATUS (*dfs_enable)(struct wlan_objmgr_pdev *pdev, int *is_fastclk, - int32_t pe_firpwr, - int32_t pe_rrssi, - int32_t pe_height, - int32_t pe_prssi, - int32_t pe_inband, - uint32_t pe_relpwr, - uint32_t pe_relstep, - uint32_t pe_maxlen, + struct wlan_dfs_phyerr_param *param, uint32_t dfsdomain); QDF_STATUS (*dfs_get_caps)(struct wlan_objmgr_pdev *pdev, - bool *wlan_dfs_ext_chan_ok, - bool *wlan_dfs_combined_rssi_ok, - bool *wlan_dfs_use_enhancement, - bool *wlan_strong_signal_diversiry, - bool *wlan_chip_is_bb_tlv, - bool *wlan_chip_is_over_sampled, - bool *wlan_chip_is_ht160, - bool *wlan_chip_is_false_detect, - uint32_t *wlan_fastdiv_val); + struct wlan_dfs_caps *dfs_caps); QDF_STATUS (*dfs_disable)(struct wlan_objmgr_pdev *pdev, int no_cac); QDF_STATUS (*dfs_gettsf64)(struct wlan_objmgr_pdev *pdev, uint64_t *tsf64); QDF_STATUS (*dfs_set_use_cac_prssi)(struct wlan_objmgr_pdev *pdev); QDF_STATUS (*dfs_get_thresholds)(struct wlan_objmgr_pdev *pdev, - int32_t *pe_firpwr, - int32_t *pe_rrssi, - int32_t *pe_height, - int32_t *pe_prssi, - int32_t *pe_inband, - uint32_t *pe_relpwr, - uint32_t *pe_relstep, - uint32_t *pe_maxlen); + struct wlan_dfs_phyerr_param *param); QDF_STATUS (*dfs_get_ext_busy)(struct wlan_objmgr_pdev *pdev, int *dfs_ext_chan_busy); QDF_STATUS (*dfs_get_target_type)(struct wlan_objmgr_pdev *pdev,