qcacmn: Enable ADFS 320 MHz capability bit

A new capability bit from FW is introduced that provides
ADFS 320 MHz support information. supports_adfs_320 signifies
chainmask capability service bit if FW supports ADFS on 320 MHz
channel width. Add this capability bit(supports_adfs_320) in host.

Change-Id: I09c689658ef495d8a8707425ecc9ba922fce4d41
CRs-Fixed: 3317795
This commit is contained in:
Divya R
2022-10-20 10:46:19 +05:30
committed by Madan Koyyalamudi
parent 2ac8820056
commit 2c0d802926
6 changed files with 63 additions and 9 deletions

View File

@@ -354,6 +354,7 @@ struct wlan_psoc_host_spectral_scaling_params {
* @supports_aSpectral: Agile Spectral support for this chain mask.
* @supports_aSpectral_160: Agile Spectral support in 160 MHz.
* @supports_aDFS_160: Agile DFS support in 160 MHz for this chain mask.
* @supports_aDFS_320: Agile DFS support in 320 MHz for this chain mask.
* @chain_mask_2G: 2G support for this chain mask.
* @chain_mask_5G: 5G support for this chain mask.
* @chain_mask_tx: Tx support for this chain mask.
@@ -373,7 +374,10 @@ struct wlan_psoc_host_chainmask_capabilities {
supports_aSpectral:1,
supports_aSpectral_160:1,
supports_aDFS_160:1,
reserved:19,
#ifdef WLAN_FEATURE_11BE
supports_aDFS_320:1,
#endif
reserved:17,
chain_mask_2G:1,
chain_mask_5G:1,
chain_mask_tx:1,

View File

@@ -410,6 +410,7 @@
* Agile detector in true 160MHz supported devices).
* @DETECTOR_ID_2: Detector ID 2 (Agile detector in 80p80MHZ supported devices).
* @AGILE_DETECTOR_ID_TRUE_160MHZ: Agile detector ID in true 160MHz devices.
* @AGILE_DETECTOR_11BE: Agile detector ID in true 320 MHz devices.
* @AGILE_DETECTOR_ID_80p80: Agile detector ID in 80p80MHz supported devices.
* @INVALID_DETECTOR_ID: Invalid detector id.
*/
@@ -418,6 +419,7 @@ enum detector_id {
DETECTOR_ID_1,
DETECTOR_ID_2,
AGILE_DETECTOR_ID_TRUE_160MHZ = DETECTOR_ID_1,
AGILE_DETECTOR_11BE = DETECTOR_ID_1,
AGILE_DETECTOR_ID_80P80 = DETECTOR_ID_2,
INVALID_DETECTOR_ID,
};
@@ -1125,6 +1127,7 @@ struct dfs_rcac_params {
* @dfs_use_puncture: User configured value for enabling or
* disabling DFS puncturing feature.
* @dfs_agile_rcac_ucfg: User configuration for Rolling CAC.
* @dfs_fw_adfs_support_320: Target Agile DFS support for 320 BW.
* @dfs_fw_adfs_support_non_160: Target Agile DFS support for non-160 BWs.
* @dfs_fw_adfs_support_160: Target Agile DFS support for 160 BW.
* @dfs_allow_hw_pulses: Allow/Block HW pulses. When synthetic
@@ -1304,6 +1307,9 @@ struct wlan_dfs {
uint8_t dfs_agile_precac_ucfg:1,
#if defined(QCA_SUPPORT_ADFS_RCAC)
dfs_agile_rcac_ucfg:1,
#endif
#ifdef WLAN_FEATURE_11BE
dfs_fw_adfs_support_320:1,
#endif
dfs_fw_adfs_support_non_160:1,
dfs_fw_adfs_support_160:1;

View File

@@ -394,7 +394,7 @@ dfs_decide_precac_preferred_chan_for_freq(struct wlan_dfs *dfs,
uint16_t dfs_get_ieeechan_for_precac_for_freq(struct wlan_dfs *dfs,
uint16_t exclude_pri_chan_freq,
uint16_t exclude_sec_chan_freq,
uint8_t bandwidth);
uint16_t bandwidth);
#endif
/**
@@ -480,6 +480,18 @@ void dfs_set_agilecac_chan_for_freq(struct wlan_dfs *dfs,
uint16_t sec_chan_freq);
#endif
/**
* dfs_compute_agile_and_curchan_width() - Compute the agile/current channel
* width from dfs structure.
* @dfs: Pointer to wlan_dfs structure.
* @agile_ch_width: Agile channel width.
* @cur_ch_width: Current home channel width.
*/
void
dfs_compute_agile_and_curchan_width(struct wlan_dfs *dfs,
enum phy_ch_width *agile_ch_width,
enum phy_ch_width *cur_ch_width);
/**
* dfs_agile_precac_start() - Start agile precac.
* @dfs: Pointer to wlan_dfs structure.
@@ -506,12 +518,14 @@ void dfs_start_agile_precac_timer(struct wlan_dfs *dfs,
* @dfs: Pointer to wlan_dfs structure.
* @fw_adfs_support_160: aDFS enabled when pdev is on 160/80P80MHz.
* @fw_adfs_support_non_160: aDFS enabled when pdev is on 20/40/80MHz.
* @fw_adfs_support_320: aDFS enabled when pdev is on 320 MHz.
*
* Return: void.
*/
void dfs_set_fw_adfs_support(struct wlan_dfs *dfs,
bool fw_adfs_support_160,
bool fw_adfs_support_non_160);
bool fw_adfs_support_non_160,
bool fw_adfs_support_320);
#else
static inline void dfs_find_pdev_for_agile_precac(struct wlan_objmgr_pdev *pdev,
uint8_t *cur_agile_dfs_index)
@@ -542,6 +556,13 @@ dfs_set_agilecac_chan_for_freq(struct wlan_dfs *dfs,
}
#endif
static inline void
dfs_compute_agile_and_curchan_width(struct wlan_dfs *dfs,
enum phy_ch_width *agile_ch_width,
enum phy_ch_width *cur_ch_width)
{
}
static inline void dfs_agile_precac_start(struct wlan_dfs *dfs)
{
}
@@ -556,7 +577,8 @@ dfs_start_agile_precac_timer(struct wlan_dfs *dfs,
static inline void
dfs_set_fw_adfs_support(struct wlan_dfs *dfs,
bool fw_adfs_support_160,
bool fw_adfs_support_non_160)
bool fw_adfs_support_non_160,
bool fw_adfs_support_320)
{
}
#endif
@@ -1041,6 +1063,16 @@ QDF_STATUS dfs_agile_sm_destroy(struct dfs_soc_priv_obj *dfs_soc_obj);
*/
bool dfs_is_agile_cac_enabled(struct wlan_dfs *dfs);
/* dfs_translate_chwidth_enum2val() - Translate the given channel width enum
* to it's value.
* @dfs: Pointer to WLAN DFS structure.
* @chwidth: Channel width enum of the pdev's current channel.
*
* Return: The Bandwidth value for the given channel width enum.
*/
uint16_t
dfs_translate_chwidth_enum2val(struct wlan_dfs *dfs,
enum phy_ch_width chwidth);
#else
static inline
@@ -1068,6 +1100,12 @@ static inline bool dfs_is_agile_cac_enabled(struct wlan_dfs *dfs)
{
return false;
}
static inline uint16_t dfs_translate_chwidth_enum2val(struct wlan_dfs *dfs,
enum phy_ch_width chwidth)
{
return false;
}
#endif /* QCA_SUPPORT_AGILE_DFS */
#ifdef QCA_SUPPORT_ADFS_RCAC

View File

@@ -554,17 +554,20 @@ tgt_dfs_send_subchan_marking(struct wlan_objmgr_pdev *pdev, bool subchanmark)
* @pdev: Pointer to pdev object.
* @fw_adfs_support_160: aDFS enabled when pdev is on 160/80P80MHz.
* @fw_adfs_support_non_160: aDFS enabled when pdev is on 20/40/80MHz.
* @fw_adfs_support_320: aDFS enabled when pdev is on 320 MHz.
*
* Return: void.
*/
void tgt_dfs_set_fw_adfs_support(struct wlan_objmgr_pdev *pdev,
bool fw_adfs_support_160,
bool fw_adfs_support_non_160);
bool fw_adfs_support_non_160,
bool fw_adfs_support_320);
#else
static inline
void tgt_dfs_set_fw_adfs_support(struct wlan_objmgr_pdev *pdev,
bool fw_adfs_support_160,
bool fw_adfs_support_non_160)
bool fw_adfs_support_non_160,
bool fw_adfs_support_320)
{
}
#endif

View File

@@ -789,7 +789,8 @@ qdf_export_symbol(tgt_dfs_send_subchan_marking);
#ifdef QCA_SUPPORT_AGILE_DFS
void tgt_dfs_set_fw_adfs_support(struct wlan_objmgr_pdev *pdev,
bool fw_adfs_support_160,
bool fw_adfs_support_non_160)
bool fw_adfs_support_non_160,
bool fw_adfs_support_320)
{
struct wlan_dfs *dfs;
@@ -801,7 +802,8 @@ void tgt_dfs_set_fw_adfs_support(struct wlan_objmgr_pdev *pdev,
dfs_set_fw_adfs_support(dfs,
fw_adfs_support_160,
fw_adfs_support_non_160);
fw_adfs_support_non_160,
fw_adfs_support_320);
}
qdf_export_symbol(tgt_dfs_set_fw_adfs_support);

View File

@@ -2263,7 +2263,8 @@ struct wlan_lmac_if_dfs_rx_ops {
bool (*dfs_is_hw_pulses_allowed)(struct wlan_objmgr_pdev *pdev);
void (*dfs_set_fw_adfs_support)(struct wlan_objmgr_pdev *pdev,
bool fw_adfs_support_160,
bool fw_adfs_support_non_160);
bool fw_adfs_support_non_160,
bool fw_adfs_support_320);
void (*dfs_reset_dfs_prevchan)(struct wlan_objmgr_pdev *pdev);
void (*dfs_init_tmp_psoc_nol)(struct wlan_objmgr_pdev *pdev,
uint8_t num_radios);