qcacld-3.0: Move get sta tx/rx nss functionality to mlme
Move get_sta_tx_nss and get_sta_rx_nss functionality to mlme Change-Id: I7b317c164d98bf7ed29f5a212c64322a5325aa4b CRs-Fixed: 3546201
Tento commit je obsažen v:
@@ -1673,6 +1673,35 @@ wlan_set_tpc_update_required_for_sta(struct wlan_objmgr_vdev *vdev, bool value)
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* wlan_mlme_get_sta_tx_nss() - API to get station tx NSS
|
||||
*
|
||||
* @psoc: psoc context
|
||||
* @vdev: pointer to vdev
|
||||
* @tx_nss : tx_nss out parameter
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE
|
||||
*/
|
||||
QDF_STATUS
|
||||
wlan_mlme_get_sta_tx_nss(struct wlan_objmgr_psoc *psoc,
|
||||
struct wlan_objmgr_vdev *vdev,
|
||||
uint8_t *tx_nss);
|
||||
|
||||
/**
|
||||
* wlan_mlme_get_sta_rx_nss() - API to get station rx NSS
|
||||
*
|
||||
* @psoc: psoc context
|
||||
* @vdev: pointer to vdev
|
||||
* @rx_nss : rx_nss out parameter
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE
|
||||
*/
|
||||
QDF_STATUS
|
||||
wlan_mlme_get_sta_rx_nss(struct wlan_objmgr_psoc *psoc,
|
||||
struct wlan_objmgr_vdev *vdev,
|
||||
uint8_t *rx_nss);
|
||||
|
||||
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
|
||||
/**
|
||||
* wlan_mlme_defer_pmk_set_in_roaming() - Set the set_key pending status
|
||||
|
@@ -5150,3 +5150,97 @@ wlan_set_tpc_update_required_for_sta(struct wlan_objmgr_vdev *vdev, bool value)
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
#endif
|
||||
|
||||
QDF_STATUS wlan_mlme_get_sta_tx_nss(struct wlan_objmgr_psoc *psoc,
|
||||
struct wlan_objmgr_vdev *vdev,
|
||||
uint8_t *tx_nss)
|
||||
{
|
||||
uint8_t proto_generic_nss;
|
||||
bool dynamic_nss_chains_support;
|
||||
struct wlan_mlme_nss_chains *dynamic_cfg;
|
||||
enum band_info operating_band;
|
||||
QDF_STATUS status;
|
||||
|
||||
status = wlan_mlme_cfg_get_dynamic_nss_chains_support
|
||||
(psoc, &dynamic_nss_chains_support);
|
||||
if (QDF_IS_STATUS_ERROR(status)) {
|
||||
mlme_err("Failed to get dynamic_nss_chains_support");
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
proto_generic_nss = wlan_vdev_mlme_get_nss(vdev);
|
||||
if (dynamic_nss_chains_support) {
|
||||
dynamic_cfg = mlme_get_dynamic_vdev_config(vdev);
|
||||
if (!dynamic_cfg) {
|
||||
mlme_err("nss chain dynamic config NULL");
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
operating_band = ucfg_cm_get_connected_band(vdev);
|
||||
switch (operating_band) {
|
||||
case BAND_2G:
|
||||
*tx_nss = dynamic_cfg->tx_nss[NSS_CHAINS_BAND_2GHZ];
|
||||
break;
|
||||
case BAND_5G:
|
||||
*tx_nss = dynamic_cfg->tx_nss[NSS_CHAINS_BAND_5GHZ];
|
||||
break;
|
||||
default:
|
||||
mlme_err("Band %d Not 2G or 5G", operating_band);
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
if (*tx_nss > proto_generic_nss)
|
||||
*tx_nss = proto_generic_nss;
|
||||
} else {
|
||||
*tx_nss = proto_generic_nss;
|
||||
}
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS wlan_mlme_get_sta_rx_nss(struct wlan_objmgr_psoc *psoc,
|
||||
struct wlan_objmgr_vdev *vdev,
|
||||
uint8_t *rx_nss)
|
||||
{
|
||||
uint8_t proto_generic_nss;
|
||||
bool dynamic_nss_chains_support;
|
||||
struct wlan_mlme_nss_chains *dynamic_cfg;
|
||||
enum band_info operating_band;
|
||||
QDF_STATUS status;
|
||||
|
||||
status = wlan_mlme_cfg_get_dynamic_nss_chains_support
|
||||
(psoc, &dynamic_nss_chains_support);
|
||||
if (QDF_IS_STATUS_ERROR(status)) {
|
||||
mlme_err("Failed to get dynamic_nss_chains_support");
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
proto_generic_nss = wlan_vdev_mlme_get_nss(vdev);
|
||||
if (dynamic_nss_chains_support) {
|
||||
dynamic_cfg = mlme_get_dynamic_vdev_config(vdev);
|
||||
if (!dynamic_cfg) {
|
||||
mlme_err("nss chain dynamic config NULL");
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
operating_band = ucfg_cm_get_connected_band(vdev);
|
||||
switch (operating_band) {
|
||||
case BAND_2G:
|
||||
*rx_nss = dynamic_cfg->rx_nss[NSS_CHAINS_BAND_2GHZ];
|
||||
break;
|
||||
case BAND_5G:
|
||||
*rx_nss = dynamic_cfg->rx_nss[NSS_CHAINS_BAND_5GHZ];
|
||||
break;
|
||||
default:
|
||||
mlme_err("Band %d Not 2G or 5G", operating_band);
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
if (*rx_nss > proto_generic_nss)
|
||||
*rx_nss = proto_generic_nss;
|
||||
} else {
|
||||
*rx_nss = proto_generic_nss;
|
||||
}
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
@@ -2323,6 +2323,37 @@ wlan_mlme_get_restart_sap_on_dynamic_nss_chains_cfg(
|
||||
struct wlan_objmgr_psoc *psoc,
|
||||
bool *value);
|
||||
|
||||
/**
|
||||
* wlan_mlme_cfg_set_dynamic_nss_chains_support() - API to update
|
||||
* dynamic_nss_chains_support
|
||||
*
|
||||
* @psoc: psoc context
|
||||
* @value: data to be set
|
||||
*
|
||||
* API to update dynamic_nss_chains_support in wlan_mlme_cfg object to
|
||||
* maintain this value in mlme context
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE
|
||||
*/
|
||||
QDF_STATUS
|
||||
wlan_mlme_cfg_set_dynamic_nss_chains_support(struct wlan_objmgr_psoc *psoc,
|
||||
bool value);
|
||||
|
||||
/**
|
||||
* wlan_mlme_cfg_get_dynamic_nss_chains_support() - API to get current value of
|
||||
* dynamic_nss_chains_support
|
||||
*
|
||||
* @psoc: psoc context
|
||||
* @value: data to be set
|
||||
*
|
||||
* API to get current value of dynamic_nss_chains_support
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE
|
||||
*/
|
||||
QDF_STATUS
|
||||
wlan_mlme_cfg_get_dynamic_nss_chains_support(struct wlan_objmgr_psoc *psoc,
|
||||
bool *value);
|
||||
|
||||
/**
|
||||
* wlan_mlme_get_vht_enable2x2() - Enables/disables VHT Tx/Rx MCS values for 2x2
|
||||
* @psoc: psoc context
|
||||
|
@@ -2735,6 +2735,8 @@ struct wlan_mlme_iot {
|
||||
* @connection_roaming_ini_flag: To indicate whether connection_roaming related
|
||||
* ini file is present or not.
|
||||
* @eml_cap: EML capability subfield present in ML IE common info
|
||||
* @dynamic_nss_chains_support : intersection of host and fw capability of
|
||||
* dynamic NSS chain support
|
||||
*/
|
||||
struct wlan_mlme_cfg {
|
||||
struct wlan_mlme_chainmask chainmask_cfg;
|
||||
@@ -2785,6 +2787,7 @@ struct wlan_mlme_cfg {
|
||||
struct wlan_mlme_iot iot;
|
||||
bool connection_roaming_ini_flag;
|
||||
struct wlan_mlme_eml_cap eml_cap;
|
||||
bool dynamic_nss_chains_support;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@@ -2673,6 +2673,58 @@ ucfg_mlme_get_restart_sap_on_dynamic_nss_chains_cfg(
|
||||
return wlan_mlme_get_restart_sap_on_dynamic_nss_chains_cfg(psoc, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* ucfg_mlme_update_dynamic_nss_chains_support() - API to update
|
||||
* dynamic_nss_chains_support
|
||||
*
|
||||
* @psoc: psoc context
|
||||
* @val: data to be set
|
||||
*
|
||||
* API is used to update dynamic_nss_chains_support flag in wlan_mlme_cfg
|
||||
* to maintain this value in mlme context
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE
|
||||
*/
|
||||
static inline QDF_STATUS
|
||||
ucfg_mlme_update_dynamic_nss_chains_support(struct wlan_objmgr_psoc *psoc,
|
||||
bool val)
|
||||
{
|
||||
return wlan_mlme_cfg_set_dynamic_nss_chains_support(psoc, val);
|
||||
}
|
||||
|
||||
/**
|
||||
* ucfg_mlme_get_sta_tx_nss() - UCFG API to get station tx NSS
|
||||
*
|
||||
* @psoc: psoc context
|
||||
* @vdev: pointer to vdev
|
||||
* @tx_nss : tx_nss out parameter
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE
|
||||
*/
|
||||
static inline QDF_STATUS
|
||||
ucfg_mlme_get_sta_tx_nss(struct wlan_objmgr_psoc *psoc,
|
||||
struct wlan_objmgr_vdev *vdev, uint8_t *tx_nss)
|
||||
{
|
||||
return wlan_mlme_get_sta_tx_nss(psoc, vdev, tx_nss);
|
||||
}
|
||||
|
||||
/**
|
||||
* ucfg_mlme_get_sta_rx_nss() - UCFG API to get station rx NSS
|
||||
*
|
||||
* @psoc: psoc context
|
||||
* @vdev: pointer to vdev
|
||||
* @rx_nss : rx_nss out parameter
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS or QDF_STATUS_FAILURE
|
||||
*/
|
||||
static inline QDF_STATUS
|
||||
ucfg_mlme_get_sta_rx_nss(struct wlan_objmgr_psoc *psoc,
|
||||
struct wlan_objmgr_vdev *vdev,
|
||||
uint8_t *rx_nss)
|
||||
{
|
||||
return wlan_mlme_get_sta_rx_nss(psoc, vdev, rx_nss);
|
||||
}
|
||||
|
||||
/**
|
||||
* ucfg_mlme_get_vht_enable2x2() - Enables/disables VHT Tx/Rx MCS values for 2x2
|
||||
* @psoc: psoc context
|
||||
|
@@ -4086,6 +4086,36 @@ wlan_mlme_get_restart_sap_on_dynamic_nss_chains_cfg(
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS
|
||||
wlan_mlme_cfg_get_dynamic_nss_chains_support(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)
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
|
||||
*value = mlme_obj->cfg.dynamic_nss_chains_support;
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS
|
||||
wlan_mlme_cfg_set_dynamic_nss_chains_support(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)
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
|
||||
mlme_obj->cfg.dynamic_nss_chains_support = value;
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS
|
||||
wlan_mlme_get_vht_enable2x2(struct wlan_objmgr_psoc *psoc, bool *value)
|
||||
{
|
||||
|
Odkázat v novém úkolu
Zablokovat Uživatele