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:

committed by
Madan Koyyalamudi

parent
9cce6d9b2d
commit
100c310363
@@ -3317,4 +3317,23 @@ wlan_mlme_set_last_delba_sent_time(struct wlan_objmgr_vdev *vdev,
|
||||
*/
|
||||
qdf_time_t
|
||||
wlan_mlme_get_last_delba_sent_time(struct wlan_objmgr_vdev *vdev);
|
||||
|
||||
/**
|
||||
* mlme_set_user_ps() - Set the PS user config
|
||||
* @vdev: Vdev object pointer
|
||||
* @ps_enable: User PS enable
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS mlme_set_user_ps(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
|
||||
bool ps_enable);
|
||||
|
||||
/**
|
||||
* mlme_get_user_ps() - Set the user ps flag
|
||||
* @psoc: Pointer to psoc object
|
||||
* @vdev_id: vdev id
|
||||
*
|
||||
* Return: True if user_ps flag is set
|
||||
*/
|
||||
bool mlme_get_user_ps(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id);
|
||||
#endif /* _WLAN_MLME_API_H_ */
|
||||
|
@@ -4271,6 +4271,34 @@ ucfg_mlme_set_roam_reason_vsie_status(struct wlan_objmgr_psoc *psoc,
|
||||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* ucfg_mlme_set_user_ps() - Set the PS user config
|
||||
* @psoc: pointer to psoc object
|
||||
* @vdev_id: Vdev id
|
||||
* @ps_enable: Flag to indicate if user PS is enabled
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
static inline
|
||||
QDF_STATUS ucfg_mlme_set_user_ps(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
|
||||
bool ps_enable)
|
||||
{
|
||||
return mlme_set_user_ps(psoc, vdev_id, ps_enable);
|
||||
}
|
||||
|
||||
/**
|
||||
* ucfg_mlme_get_user_ps() - Get user PS flag
|
||||
* @psoc: pointer to psoc object
|
||||
* @vdev_id: Vdev id
|
||||
*
|
||||
* Return: True if user ps is enabled else false
|
||||
*/
|
||||
static inline
|
||||
bool ucfg_mlme_get_user_ps(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id)
|
||||
{
|
||||
return mlme_get_user_ps(psoc, vdev_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* ucfg_mlme_set_ft_over_ds() - update ft_over_ds status with user configured
|
||||
* value
|
||||
|
@@ -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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user