qcacld-3.0: Add GET_KEEP_ALIVE_INTERVAL command support

Add support to handle GET_KEEP_ALIVE_INETRVAL command.
If received command in connected state return keep alive
period configured to firmware but if command received in
disconnected state, if user space has set keep alive
period then return the user space configured value or
else return INI configured value.

Change-Id: I5d386ecd141531795b471198bd70afa20210bdc5
CRs-Fixed: 3818096
This commit is contained in:
Asutosh Mohapatra
2024-05-15 05:01:36 -07:00
committed by Ravindra Konda
parent a3def36f0b
commit b927e5af83
6 changed files with 114 additions and 1 deletions

View File

@@ -4985,4 +4985,21 @@ wlan_mlme_send_csa_event_status_ind(struct wlan_objmgr_vdev *vdev,
QDF_STATUS
wlan_mlme_is_hs_20_btm_offload_disabled(struct wlan_objmgr_psoc *psoc,
bool *val);
/**
* wlan_mlme_set_keepalive_period() - Save keep alive period
* @vdev: VDEV object
* @keep_alive_period: Keep alive period
*
* Return: None
*/
void wlan_mlme_set_keepalive_period(struct wlan_objmgr_vdev *vdev,
uint16_t keep_alive_period);
/**
* wlan_mlme_get_keepalive_period() - Get keep alive period
* @vdev: VDEV object
*
* Return: Keep alive period.
*/
uint16_t wlan_mlme_get_keepalive_period(struct wlan_objmgr_vdev *vdev);
#endif /* _WLAN_MLME_API_H_ */

View File

@@ -5436,4 +5436,16 @@ ucfg_mlme_assemble_rate_code(uint8_t preamble, uint8_t nss, uint8_t rate)
{
return wlan_mlme_assemble_rate_code(preamble, nss, rate);
}
/**
* ucfg_mlme_get_keepalive_period() - Get keep alive period
* @vdev: VDEV object
*
* Return: Keep alive period.
*/
static inline
uint16_t ucfg_mlme_get_keepalive_period(struct wlan_objmgr_vdev *vdev)
{
return wlan_mlme_get_keepalive_period(vdev);
}
#endif /* _WLAN_MLME_UCFG_API_H_ */

View File

@@ -8406,3 +8406,29 @@ wlan_mlme_is_hs_20_btm_offload_disabled(struct wlan_objmgr_psoc *psoc,
return QDF_STATUS_SUCCESS;
}
void wlan_mlme_set_keepalive_period(struct wlan_objmgr_vdev *vdev,
uint16_t keep_alive_period)
{
struct mlme_legacy_priv *mlme_priv;
mlme_priv = wlan_vdev_mlme_get_ext_hdl(vdev);
if (!mlme_priv) {
mlme_err("vdev legacy private object is NULL");
return;
}
mlme_priv->keep_alive_period = keep_alive_period;
}
uint16_t wlan_mlme_get_keepalive_period(struct wlan_objmgr_vdev *vdev)
{
struct mlme_legacy_priv *mlme_priv;
mlme_priv = wlan_vdev_mlme_get_ext_hdl(vdev);
if (!mlme_priv) {
mlme_err("vdev legacy private object is NULL");
return 0;
}
return mlme_priv->keep_alive_period;
}