qcacld-3.0: Add ini support to disable regulatory channels

Currently regulatory channels are disabled for
QCA_NL80211_VENDOR_SUBCMD_AVOID_FREQUENCY_EXT vendor command
event if ini coex_unsafe_chan_nb_user_prefer is not set and if
STA operates on disabled channels which results in crash for
STA interface in STA + SAP SCC case.

Hence coex_unsafe_chan_reg_disable ini is controlled based
on coex_unsafe_chan_nb_user_prefer.

Ini behavior summary:

|----------------|----------------------|-------------|--------------------------------|
|User prefer ini | Reg chan disable ini |   PLs       |  Expectation		       |
|	         |			| 	      |				       |
|----------------|----------------------|-------------|--------------------------------|
|   1	         |	  1	        |   LE        | accept freq ext command and    |
|                |                      |             |  disable the regulatory channel|
|----------------|----------------------|-------------|--------------------------------|
|   0            | 	  0	        | Non-Pixel SP| reject freq ext cmd driver and |
|                |                      |             | returns NOT SUPP               |
|----------------|----------------------|-------------|--------------------------------|
|   1		 |	  0             |  Pixel SP   |  accept freq ext command and   |
|                |                      |             |  Don't disable the reg channels|
|----------------|----------------------|-------------|--------------------------------|

Change-Id: Ia3acbc133cab4865d8ad69992e893be91439f856
CRs-Fixed: 3128908
This commit is contained in:
Balaji Pothunoori
2022-02-11 16:08:53 +05:30
committed by Madan Koyyalamudi
parent f8ac5388dc
commit 8fbe1e4593
6 changed files with 96 additions and 10 deletions

View File

@@ -2395,15 +2395,27 @@ static void mlme_init_acs_avoid_freq_list(struct wlan_objmgr_psoc *psoc,
#endif
#ifdef FEATURE_WLAN_CH_AVOID_EXT
static void mlme_init_unsafe_coex_cfg(struct wlan_objmgr_psoc *psoc,
struct wlan_mlme_reg *reg)
static void mlme_init_coex_unsafe_chan_cfg(struct wlan_objmgr_psoc *psoc,
struct wlan_mlme_reg *reg)
{
reg->coex_unsafe_chan_nb_user_prefer =
cfg_get(psoc, CFG_COEX_UNSAFE_CHAN_NB_USER_PREFER);
}
static void mlme_init_coex_unsafe_chan_reg_disable_cfg(
struct wlan_objmgr_psoc *psoc, struct wlan_mlme_reg *reg)
{
reg->coex_unsafe_chan_reg_disable =
cfg_get(psoc, CFG_COEX_UNSAFE_CHAN_REG_DISABLE);
}
#else
static void mlme_init_unsafe_coex_cfg(struct wlan_objmgr_psoc *psoc,
struct wlan_mlme_reg *reg)
static void mlme_init_coex_unsafe_chan_cfg(struct wlan_objmgr_psoc *psoc,
struct wlan_mlme_reg *reg)
{
}
static void mlme_init_coex_unsafe_chan_reg_disable_cfg(
struct wlan_objmgr_psoc *psoc, struct wlan_mlme_reg *reg)
{
}
#endif
@@ -2434,7 +2446,8 @@ static void mlme_init_reg_cfg(struct wlan_objmgr_psoc *psoc,
cfg_get(psoc, CFG_INDOOR_CHANNEL_SUPPORT_FOR_NAN);
mlme_init_acs_avoid_freq_list(psoc, reg);
mlme_init_unsafe_coex_cfg(psoc, reg);
mlme_init_coex_unsafe_chan_cfg(psoc, reg);
mlme_init_coex_unsafe_chan_reg_disable_cfg(psoc, reg);
}
static void