qcacld-3.0: Add ini to retain the NOL across reg domain change

Currently driver sets the NOL state of the channels to false
on every regulatory updated, which indicates the channel is
not in NOL. Which may lead to some issues where the channel
is actually in NOL but host treats it as non-NOL channel.

Ideally NOL list should be maintained throughout the driver
lifetime and across the regulatory changes.

To address this issue add a logic to not update the NOL state
of the channels whenever the regulatory update is received.

CRs-Fixed: 2744916
Change-Id: If96b22ab29a60a2aa752bbf01aaae46fc37362eb
This commit is contained in:
Ashish Kumar Dhanotiya
2020-07-30 18:46:41 +05:30
committed by snandini
vanhempi 9ea15e9db6
commit e20db7ae44
6 muutettua tiedostoa jossa 58 lisäystä ja 0 poistoa

Näytä tiedosto

@@ -296,6 +296,29 @@
0, \
"Enable Pending list req")
/*
* <ini>
* retain_nol_across_regdmn - Retain NOL across reg domain
* @Min: 0
* @Max: 1
* @Default: 1
*
* This ini is used to set if NOL needs to be retained
* on the reg domain change.
*
* Related: None
*
* Supported Feature: SAP
*
* Usage: External
*
* </ini>
*/
#define CFG_RETAIN_NOL_ACROSS_REG_DOMAIN CFG_INI_BOOL( \
"retain_nol_across_regdmn", \
1, \
"Retain NOL even if the regdomain changes")
#define CFG_REG_ALL \
CFG(CFG_SELF_GEN_FRM_PWR) \
CFG(CFG_ENABLE_PENDING_CHAN_LIST_REQ) \
@@ -307,6 +330,7 @@
CFG(CFG_SCAN_11D_INTERVAL) \
CFG(CFG_VALID_CHANNEL_LIST) \
CFG(CFG_IGNORE_FW_REG_OFFLOAD_IND) \
CFG(CFG_RETAIN_NOL_ACROSS_REG_DOMAIN) \
CFG_SAP_AVOID_ACS_FREQ_LIST_ALL
#endif /* CFG_MLME_REG_H__ */

Näytä tiedosto

@@ -2152,6 +2152,7 @@ struct wlan_mlme_mwc {
* @ignore_fw_reg_offload_ind: Ignore fw regulatory offload indication
* @enable_pending_chan_list_req: enables/disables scan channel
* list command to FW till the current scan is complete.
* @retain_nol_across_regdmn_update: Retain the NOL list across the regdomain.
*/
struct wlan_mlme_reg {
uint32_t self_gen_frm_pwr;
@@ -2170,6 +2171,7 @@ struct wlan_mlme_reg {
#endif
bool ignore_fw_reg_offload_ind;
bool enable_pending_chan_list_req;
bool retain_nol_across_regdmn_update;
};
/**

Näytä tiedosto

@@ -3854,6 +3854,17 @@ QDF_STATUS
ucfg_mlme_get_scan_11d_interval(struct wlan_objmgr_psoc *psoc,
uint32_t *value);
/**
* ucfg_mlme_get_nol_across_regdmn() - get scan 11d interval
* @psoc: pointer to psoc object
* @value: Pointer to the value which will be filled for the caller
*
* Return: QDF Status
*/
QDF_STATUS
ucfg_mlme_get_nol_across_regdmn(struct wlan_objmgr_psoc *psoc, bool *value);
/**
* ucfg_mlme_get_valid_channel_freq_list() - get valid channel
* list

Näytä tiedosto

@@ -1609,6 +1609,22 @@ ucfg_mlme_get_scan_11d_interval(struct wlan_objmgr_psoc *psoc,
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
ucfg_mlme_get_nol_across_regdmn(struct wlan_objmgr_psoc *psoc, bool *value)
{
struct wlan_mlme_psoc_ext_obj *mlme_obj;
mlme_obj = mlme_get_psoc_ext_obj(psoc);
if (!mlme_obj) {
*value = cfg_default(CFG_RETAIN_NOL_ACROSS_REG_DOMAIN);
mlme_legacy_err("Failed to get MLME Obj");
return QDF_STATUS_E_INVAL;
}
*value = mlme_obj->cfg.reg.retain_nol_across_regdmn_update;
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
ucfg_mlme_get_valid_channel_freq_list(struct wlan_objmgr_psoc *psoc,
uint32_t *channel_list,