mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-09 13:49:24 -04:00
qcacmn: Check ext cc event support before pouplating sec chan list
Currently host is populating secondary channel list from master channel list based on ap power type. In case fw doesn't support extd cc event then secondary channel list will not have 6g freq, which may break legacy 6g handling. Fix is to add validation check for ext cc event support, copy secondary channel list from ap power type in case ext cc event is supported by fw else copy secondary channel list from reg current channel list. Change-Id: I2e13be2936b624ccbee5e8e426987355076a0062 CRs-Fixed: 2987951
This commit is contained in:
parent
d8163bb398
commit
8fd69cb240
3 changed files with 28 additions and 6 deletions
|
|
@ -228,8 +228,12 @@ target_if_reg_is_reg_cc_ext_event_host_supported(struct wlan_objmgr_psoc *psoc)
|
|||
return reg_ext_cc_supp;
|
||||
}
|
||||
|
||||
if (reg_tx_ops->register_master_ext_handler)
|
||||
if (reg_tx_ops->register_master_ext_handler) {
|
||||
reg_ext_cc_supp = true;
|
||||
wlan_psoc_nif_fw_ext_cap_set(psoc,
|
||||
WLAN_SOC_EXT_EVENT_SUPPORTED);
|
||||
}
|
||||
|
||||
|
||||
return reg_ext_cc_supp;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -146,6 +146,8 @@
|
|||
#define WLAN_SOC_CEXT_SCAN_PER_CH_CONFIG 0x01000000
|
||||
/* CAPABILITY: csa offload in case of AP */
|
||||
#define WLAN_SOC_CEXT_CSA_TX_OFFLOAD 0x02000000
|
||||
/* ext event supported by fw */
|
||||
#define WLAN_SOC_EXT_EVENT_SUPPORTED 0x04000000
|
||||
|
||||
/* feature_flags */
|
||||
/* CONF: ATH FF enabled */
|
||||
|
|
|
|||
|
|
@ -1046,15 +1046,31 @@ static void
|
|||
reg_populate_secondary_cur_chan_list(struct wlan_regulatory_pdev_priv_obj
|
||||
*pdev_priv_obj)
|
||||
{
|
||||
qdf_mem_copy(pdev_priv_obj->secondary_cur_chan_list,
|
||||
pdev_priv_obj->cur_chan_list,
|
||||
(NUM_CHANNELS - NUM_6GHZ_CHANNELS) *
|
||||
sizeof(struct regulatory_channel));
|
||||
qdf_mem_copy(&pdev_priv_obj->
|
||||
struct wlan_objmgr_psoc *psoc;
|
||||
|
||||
psoc = wlan_pdev_get_psoc(pdev_priv_obj->pdev_ptr);
|
||||
if (!psoc) {
|
||||
reg_err("psoc is NULL");
|
||||
return;
|
||||
}
|
||||
if (wlan_psoc_nif_fw_ext_cap_get(psoc,
|
||||
WLAN_SOC_EXT_EVENT_SUPPORTED)) {
|
||||
qdf_mem_copy(pdev_priv_obj->secondary_cur_chan_list,
|
||||
pdev_priv_obj->cur_chan_list,
|
||||
(NUM_CHANNELS - NUM_6GHZ_CHANNELS) *
|
||||
sizeof(struct regulatory_channel));
|
||||
|
||||
qdf_mem_copy(&pdev_priv_obj->
|
||||
secondary_cur_chan_list[MIN_6GHZ_CHANNEL],
|
||||
pdev_priv_obj->mas_chan_list_6g_ap
|
||||
[pdev_priv_obj->reg_cur_6g_ap_pwr_type],
|
||||
NUM_6GHZ_CHANNELS * sizeof(struct regulatory_channel));
|
||||
} else {
|
||||
qdf_mem_copy(pdev_priv_obj->secondary_cur_chan_list,
|
||||
pdev_priv_obj->cur_chan_list,
|
||||
(NUM_CHANNELS) *
|
||||
sizeof(struct regulatory_channel));
|
||||
}
|
||||
}
|
||||
#else /* CONFIG_REG_CLIENT */
|
||||
static void
|
||||
|
|
|
|||
Loading…
Reference in a new issue