qcacld-3.0: Set PS config per vdev

Currently the PS config received from kernel/userspace is set
to mac_ctx globally. This causes PS config set for one vdev to
override on the other vdev.

To avoid this, set the PS config per vdev.

Change-Id: I6a2e2a9d8fb67b94d9d5f1d4164077990bdaf4a5
CRs-Fixed: 3007060
This commit is contained in:
Pragaspathi Thilagaraj
2021-08-19 01:23:51 +05:30
committed by Madan Koyyalamudi
parent 9cce6d9b2d
commit 100c310363
10 changed files with 121 additions and 38 deletions

View File

@@ -5093,3 +5093,48 @@ wlan_mlme_get_last_delba_sent_time(struct wlan_objmgr_vdev *vdev)
return mlme_priv->last_delba_sent_time;
}
QDF_STATUS mlme_set_user_ps(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
bool ps_enable)
{
struct wlan_objmgr_vdev *vdev;
struct mlme_legacy_priv *mlme_priv;
QDF_STATUS status = QDF_STATUS_E_FAILURE;
vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id,
WLAN_MLME_OBJMGR_ID);
if (!vdev)
return status;
mlme_priv = wlan_vdev_mlme_get_ext_hdl(vdev);
if (mlme_priv) {
mlme_priv->is_usr_ps_enabled = ps_enable;
status = QDF_STATUS_SUCCESS;
mlme_legacy_debug("vdev:%d user PS:%d", vdev_id,
mlme_priv->is_usr_ps_enabled);
}
wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_OBJMGR_ID);
return status;
}
bool mlme_get_user_ps(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id)
{
struct wlan_objmgr_vdev *vdev;
struct mlme_legacy_priv *mlme_priv;
bool usr_ps_enable = false;
vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id,
WLAN_MLME_OBJMGR_ID);
if (!vdev)
return false;
mlme_priv = wlan_vdev_mlme_get_ext_hdl(vdev);
if (mlme_priv)
usr_ps_enable = mlme_priv->is_usr_ps_enabled;
wlan_objmgr_vdev_release_ref(vdev, WLAN_MLME_OBJMGR_ID);
return usr_ps_enable;
}