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:

committed by
Madan Koyyalamudi

parent
2ac8820056
commit
2c0d802926
@@ -354,6 +354,7 @@ struct wlan_psoc_host_spectral_scaling_params {
|
|||||||
* @supports_aSpectral: Agile Spectral support for this chain mask.
|
* @supports_aSpectral: Agile Spectral support for this chain mask.
|
||||||
* @supports_aSpectral_160: Agile Spectral support in 160 MHz.
|
* @supports_aSpectral_160: Agile Spectral support in 160 MHz.
|
||||||
* @supports_aDFS_160: Agile DFS support in 160 MHz for this chain mask.
|
* @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_2G: 2G support for this chain mask.
|
||||||
* @chain_mask_5G: 5G support for this chain mask.
|
* @chain_mask_5G: 5G support for this chain mask.
|
||||||
* @chain_mask_tx: Tx 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:1,
|
||||||
supports_aSpectral_160:1,
|
supports_aSpectral_160:1,
|
||||||
supports_aDFS_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_2G:1,
|
||||||
chain_mask_5G:1,
|
chain_mask_5G:1,
|
||||||
chain_mask_tx:1,
|
chain_mask_tx:1,
|
||||||
|
@@ -410,6 +410,7 @@
|
|||||||
* Agile detector in true 160MHz supported devices).
|
* Agile detector in true 160MHz supported devices).
|
||||||
* @DETECTOR_ID_2: Detector ID 2 (Agile detector in 80p80MHZ 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_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.
|
* @AGILE_DETECTOR_ID_80p80: Agile detector ID in 80p80MHz supported devices.
|
||||||
* @INVALID_DETECTOR_ID: Invalid detector id.
|
* @INVALID_DETECTOR_ID: Invalid detector id.
|
||||||
*/
|
*/
|
||||||
@@ -418,6 +419,7 @@ enum detector_id {
|
|||||||
DETECTOR_ID_1,
|
DETECTOR_ID_1,
|
||||||
DETECTOR_ID_2,
|
DETECTOR_ID_2,
|
||||||
AGILE_DETECTOR_ID_TRUE_160MHZ = DETECTOR_ID_1,
|
AGILE_DETECTOR_ID_TRUE_160MHZ = DETECTOR_ID_1,
|
||||||
|
AGILE_DETECTOR_11BE = DETECTOR_ID_1,
|
||||||
AGILE_DETECTOR_ID_80P80 = DETECTOR_ID_2,
|
AGILE_DETECTOR_ID_80P80 = DETECTOR_ID_2,
|
||||||
INVALID_DETECTOR_ID,
|
INVALID_DETECTOR_ID,
|
||||||
};
|
};
|
||||||
@@ -1125,6 +1127,7 @@ struct dfs_rcac_params {
|
|||||||
* @dfs_use_puncture: User configured value for enabling or
|
* @dfs_use_puncture: User configured value for enabling or
|
||||||
* disabling DFS puncturing feature.
|
* disabling DFS puncturing feature.
|
||||||
* @dfs_agile_rcac_ucfg: User configuration for Rolling CAC.
|
* @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_non_160: Target Agile DFS support for non-160 BWs.
|
||||||
* @dfs_fw_adfs_support_160: Target Agile DFS support for 160 BW.
|
* @dfs_fw_adfs_support_160: Target Agile DFS support for 160 BW.
|
||||||
* @dfs_allow_hw_pulses: Allow/Block HW pulses. When synthetic
|
* @dfs_allow_hw_pulses: Allow/Block HW pulses. When synthetic
|
||||||
@@ -1304,6 +1307,9 @@ struct wlan_dfs {
|
|||||||
uint8_t dfs_agile_precac_ucfg:1,
|
uint8_t dfs_agile_precac_ucfg:1,
|
||||||
#if defined(QCA_SUPPORT_ADFS_RCAC)
|
#if defined(QCA_SUPPORT_ADFS_RCAC)
|
||||||
dfs_agile_rcac_ucfg:1,
|
dfs_agile_rcac_ucfg:1,
|
||||||
|
#endif
|
||||||
|
#ifdef WLAN_FEATURE_11BE
|
||||||
|
dfs_fw_adfs_support_320:1,
|
||||||
#endif
|
#endif
|
||||||
dfs_fw_adfs_support_non_160:1,
|
dfs_fw_adfs_support_non_160:1,
|
||||||
dfs_fw_adfs_support_160:1;
|
dfs_fw_adfs_support_160:1;
|
||||||
|
@@ -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 dfs_get_ieeechan_for_precac_for_freq(struct wlan_dfs *dfs,
|
||||||
uint16_t exclude_pri_chan_freq,
|
uint16_t exclude_pri_chan_freq,
|
||||||
uint16_t exclude_sec_chan_freq,
|
uint16_t exclude_sec_chan_freq,
|
||||||
uint8_t bandwidth);
|
uint16_t bandwidth);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -480,6 +480,18 @@ void dfs_set_agilecac_chan_for_freq(struct wlan_dfs *dfs,
|
|||||||
uint16_t sec_chan_freq);
|
uint16_t sec_chan_freq);
|
||||||
#endif
|
#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_agile_precac_start() - Start agile precac.
|
||||||
* @dfs: Pointer to wlan_dfs structure.
|
* @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.
|
* @dfs: Pointer to wlan_dfs structure.
|
||||||
* @fw_adfs_support_160: aDFS enabled when pdev is on 160/80P80MHz.
|
* @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_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.
|
* Return: void.
|
||||||
*/
|
*/
|
||||||
void dfs_set_fw_adfs_support(struct wlan_dfs *dfs,
|
void dfs_set_fw_adfs_support(struct wlan_dfs *dfs,
|
||||||
bool fw_adfs_support_160,
|
bool fw_adfs_support_160,
|
||||||
bool fw_adfs_support_non_160);
|
bool fw_adfs_support_non_160,
|
||||||
|
bool fw_adfs_support_320);
|
||||||
#else
|
#else
|
||||||
static inline void dfs_find_pdev_for_agile_precac(struct wlan_objmgr_pdev *pdev,
|
static inline void dfs_find_pdev_for_agile_precac(struct wlan_objmgr_pdev *pdev,
|
||||||
uint8_t *cur_agile_dfs_index)
|
uint8_t *cur_agile_dfs_index)
|
||||||
@@ -542,6 +556,13 @@ dfs_set_agilecac_chan_for_freq(struct wlan_dfs *dfs,
|
|||||||
}
|
}
|
||||||
#endif
|
#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)
|
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
|
static inline void
|
||||||
dfs_set_fw_adfs_support(struct wlan_dfs *dfs,
|
dfs_set_fw_adfs_support(struct wlan_dfs *dfs,
|
||||||
bool fw_adfs_support_160,
|
bool fw_adfs_support_160,
|
||||||
bool fw_adfs_support_non_160)
|
bool fw_adfs_support_non_160,
|
||||||
|
bool fw_adfs_support_320)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
#endif
|
#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);
|
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
|
#else
|
||||||
|
|
||||||
static inline
|
static inline
|
||||||
@@ -1068,6 +1100,12 @@ static inline bool dfs_is_agile_cac_enabled(struct wlan_dfs *dfs)
|
|||||||
{
|
{
|
||||||
return false;
|
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 */
|
#endif /* QCA_SUPPORT_AGILE_DFS */
|
||||||
|
|
||||||
#ifdef QCA_SUPPORT_ADFS_RCAC
|
#ifdef QCA_SUPPORT_ADFS_RCAC
|
||||||
|
@@ -554,17 +554,20 @@ tgt_dfs_send_subchan_marking(struct wlan_objmgr_pdev *pdev, bool subchanmark)
|
|||||||
* @pdev: Pointer to pdev object.
|
* @pdev: Pointer to pdev object.
|
||||||
* @fw_adfs_support_160: aDFS enabled when pdev is on 160/80P80MHz.
|
* @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_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.
|
* Return: void.
|
||||||
*/
|
*/
|
||||||
void tgt_dfs_set_fw_adfs_support(struct wlan_objmgr_pdev *pdev,
|
void tgt_dfs_set_fw_adfs_support(struct wlan_objmgr_pdev *pdev,
|
||||||
bool fw_adfs_support_160,
|
bool fw_adfs_support_160,
|
||||||
bool fw_adfs_support_non_160);
|
bool fw_adfs_support_non_160,
|
||||||
|
bool fw_adfs_support_320);
|
||||||
#else
|
#else
|
||||||
static inline
|
static inline
|
||||||
void tgt_dfs_set_fw_adfs_support(struct wlan_objmgr_pdev *pdev,
|
void tgt_dfs_set_fw_adfs_support(struct wlan_objmgr_pdev *pdev,
|
||||||
bool fw_adfs_support_160,
|
bool fw_adfs_support_160,
|
||||||
bool fw_adfs_support_non_160)
|
bool fw_adfs_support_non_160,
|
||||||
|
bool fw_adfs_support_320)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@@ -789,7 +789,8 @@ qdf_export_symbol(tgt_dfs_send_subchan_marking);
|
|||||||
#ifdef QCA_SUPPORT_AGILE_DFS
|
#ifdef QCA_SUPPORT_AGILE_DFS
|
||||||
void tgt_dfs_set_fw_adfs_support(struct wlan_objmgr_pdev *pdev,
|
void tgt_dfs_set_fw_adfs_support(struct wlan_objmgr_pdev *pdev,
|
||||||
bool fw_adfs_support_160,
|
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;
|
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,
|
dfs_set_fw_adfs_support(dfs,
|
||||||
fw_adfs_support_160,
|
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);
|
qdf_export_symbol(tgt_dfs_set_fw_adfs_support);
|
||||||
|
@@ -2263,7 +2263,8 @@ struct wlan_lmac_if_dfs_rx_ops {
|
|||||||
bool (*dfs_is_hw_pulses_allowed)(struct wlan_objmgr_pdev *pdev);
|
bool (*dfs_is_hw_pulses_allowed)(struct wlan_objmgr_pdev *pdev);
|
||||||
void (*dfs_set_fw_adfs_support)(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_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_reset_dfs_prevchan)(struct wlan_objmgr_pdev *pdev);
|
||||||
void (*dfs_init_tmp_psoc_nol)(struct wlan_objmgr_pdev *pdev,
|
void (*dfs_init_tmp_psoc_nol)(struct wlan_objmgr_pdev *pdev,
|
||||||
uint8_t num_radios);
|
uint8_t num_radios);
|
||||||
|
Reference in New Issue
Block a user