qcacld-3.0: Bring up SAP in VLP if country supports VLP
In STA+SAP concurrency, if the STA is connected in indoor power, and if the country/channel supports VLP, then bringup the SAP in VLP. Move the STA to VLP as well. Restore the power of the STA, when the SAP is disconnected. Add changes to: a) Decide the power type for the concurrency during start bss, stop bss, change channel request calls of the SAP interface. b) Allow the 6 GHz SCC channel in ACS computation if the channel supports VLP power or if the channel is indoor and enabled. Change-Id: I151e2e3e8910a406bb5c1526f4f01715854d173f CRs-Fixed: 3268100
This commit is contained in:

committad av
Madan Koyyalamudi

förälder
1051484cb6
incheckning
538f94a3fa
@@ -406,9 +406,14 @@ struct wait_for_key_timer {
|
||||
* struct mlme_ap_config - VDEV MLME legacy private SAP
|
||||
* related configurations
|
||||
* @user_config_sap_ch_freq : Frequency from userspace to start SAP
|
||||
* @update_required_scc_sta_power: Change the 6 GHz power type of the
|
||||
* concurrent STA
|
||||
*/
|
||||
struct mlme_ap_config {
|
||||
qdf_freq_t user_config_sap_ch_freq;
|
||||
#ifdef CONFIG_BAND_6GHZ
|
||||
bool update_required_scc_sta_power;
|
||||
#endif
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -1182,6 +1187,42 @@ QDF_STATUS
|
||||
wlan_set_sap_user_config_freq(struct wlan_objmgr_vdev *vdev,
|
||||
qdf_freq_t freq);
|
||||
|
||||
#ifdef CONFIG_BAND_6GHZ
|
||||
/**
|
||||
* wlan_get_tpc_update_required_for_sta() - Get the tpc update required config
|
||||
* to identify whether the tpc power has changed for concurrent STA interface
|
||||
*
|
||||
* @vdev: pointer to SAP vdev
|
||||
*
|
||||
* Return: Change scc power config
|
||||
*/
|
||||
bool
|
||||
wlan_get_tpc_update_required_for_sta(struct wlan_objmgr_vdev *vdev);
|
||||
|
||||
/**
|
||||
* wlan_set_tpc_update_required_for_sta() - Set the tpc update required config
|
||||
* for the concurrent STA interface
|
||||
*
|
||||
* @vdev: pointer to SAP vdev
|
||||
* @value: change scc power config
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS
|
||||
wlan_set_tpc_update_required_for_sta(struct wlan_objmgr_vdev *vdev, bool value);
|
||||
#else
|
||||
static inline bool
|
||||
wlan_get_tpc_update_required_for_sta(struct wlan_objmgr_vdev *vdev)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
wlan_set_tpc_update_required_for_sta(struct wlan_objmgr_vdev *vdev, bool value)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
#endif
|
||||
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
|
||||
/**
|
||||
* wlan_mlme_defer_pmk_set_in_roaming() - Set the set_key pending status
|
||||
|
@@ -4115,3 +4115,50 @@ wlan_set_sap_user_config_freq(struct wlan_objmgr_vdev *vdev,
|
||||
mlme_priv->mlme_ap.user_config_sap_ch_freq = freq;
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_BAND_6GHZ
|
||||
bool
|
||||
wlan_get_tpc_update_required_for_sta(struct wlan_objmgr_vdev *vdev)
|
||||
{
|
||||
struct mlme_legacy_priv *mlme_priv;
|
||||
enum QDF_OPMODE opmode;
|
||||
|
||||
mlme_priv = wlan_vdev_mlme_get_ext_hdl(vdev);
|
||||
if (!mlme_priv) {
|
||||
mlme_legacy_err("vdev legacy private object is NULL");
|
||||
return false;
|
||||
}
|
||||
|
||||
opmode = wlan_vdev_mlme_get_opmode(vdev);
|
||||
if (opmode != QDF_SAP_MODE && opmode != QDF_P2P_GO_MODE) {
|
||||
mlme_debug("Invalid opmode %d", opmode);
|
||||
return false;
|
||||
}
|
||||
|
||||
return mlme_priv->mlme_ap.update_required_scc_sta_power;
|
||||
}
|
||||
|
||||
QDF_STATUS
|
||||
wlan_set_tpc_update_required_for_sta(struct wlan_objmgr_vdev *vdev, bool value)
|
||||
{
|
||||
struct mlme_legacy_priv *mlme_priv;
|
||||
enum QDF_OPMODE opmode;
|
||||
|
||||
mlme_priv = wlan_vdev_mlme_get_ext_hdl(vdev);
|
||||
if (!mlme_priv) {
|
||||
mlme_legacy_err("vdev legacy private object is NULL");
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
opmode = wlan_vdev_mlme_get_opmode(vdev);
|
||||
if (opmode != QDF_SAP_MODE && opmode != QDF_P2P_GO_MODE) {
|
||||
mlme_debug("Invalid mode %d", opmode);
|
||||
QDF_ASSERT(0);
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
mlme_priv->mlme_ap.update_required_scc_sta_power = value;
|
||||
mlme_debug("Set change scc power as %d", value);
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
#endif
|
||||
|
Referens i nytt ärende
Block a user