qcacld-3.0: Add support for TWT session state in status query
Add support to include the session state in TWT status query response. Session state is set to active once setup is complete and when resume response event is received from firmware. Session state is suspend when suspend response event is received from firmware. Change-Id: I1f47947c05f80bd85199fd81b951dc54deacdc09 CRs-Fixed: 2854500
This commit is contained in:

committed by
snandini

parent
f3b6093c65
commit
ef10a16a2a
@@ -85,23 +85,28 @@ bool mlme_is_twt_setup_done(struct wlan_objmgr_psoc *psoc,
|
||||
* mlme_set_twt_session_state() - Set the TWT session state for the given dialog
|
||||
* id in TWT context
|
||||
* @peer: Pointer to peer object
|
||||
* @peer_mac: Pointer to peer mac address
|
||||
* @dialog_id: Dialog id
|
||||
* @state: TWT session state
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
void mlme_set_twt_session_state(struct wlan_objmgr_peer *peer,
|
||||
void mlme_set_twt_session_state(struct wlan_objmgr_psoc *psoc,
|
||||
struct qdf_mac_addr *peer_mac,
|
||||
uint8_t dialog_id,
|
||||
enum wlan_twt_session_state state);
|
||||
|
||||
/**
|
||||
* mlme_get_twt_session_state() - Get TWT session state for given dialog id
|
||||
* @peer: Pointer to peer object
|
||||
* @psoc: Pointer to psoc object
|
||||
* @peer_mac: Pointer to peer mac address
|
||||
* @dialog_id: Dialog id
|
||||
*
|
||||
* Return: TWT session state.
|
||||
*/
|
||||
enum wlan_twt_session_state
|
||||
mlme_get_twt_session_state(struct wlan_objmgr_peer *peer, uint8_t dialog_id);
|
||||
mlme_get_twt_session_state(struct wlan_objmgr_psoc *psoc,
|
||||
struct qdf_mac_addr *peer_mac, uint8_t dialog_id);
|
||||
|
||||
/**
|
||||
* mlme_get_twt_peer_capabilities - Get TWT peer capabilities
|
||||
|
@@ -269,16 +269,26 @@ bool mlme_twt_is_notify_done(struct wlan_objmgr_psoc *psoc,
|
||||
return notify_done;
|
||||
}
|
||||
|
||||
void mlme_set_twt_session_state(struct wlan_objmgr_peer *peer,
|
||||
void mlme_set_twt_session_state(struct wlan_objmgr_psoc *psoc,
|
||||
struct qdf_mac_addr *peer_mac,
|
||||
uint8_t dialog_id,
|
||||
enum wlan_twt_session_state state)
|
||||
{
|
||||
struct wlan_objmgr_peer *peer;
|
||||
struct peer_mlme_priv_obj *peer_priv;
|
||||
uint8_t i;
|
||||
|
||||
peer = wlan_objmgr_get_peer_by_mac(psoc, peer_mac->bytes,
|
||||
WLAN_MLME_NB_ID);
|
||||
if (!peer) {
|
||||
mlme_legacy_err("Peer object not found");
|
||||
return;
|
||||
}
|
||||
|
||||
peer_priv = wlan_objmgr_peer_get_comp_private_obj(peer,
|
||||
WLAN_UMAC_COMP_MLME);
|
||||
if (!peer_priv) {
|
||||
wlan_objmgr_peer_release_ref(peer, WLAN_MLME_NB_ID);
|
||||
mlme_err(" peer mlme component object is NULL");
|
||||
return;
|
||||
}
|
||||
@@ -290,27 +300,43 @@ void mlme_set_twt_session_state(struct wlan_objmgr_peer *peer,
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
wlan_objmgr_peer_release_ref(peer, WLAN_MLME_NB_ID);
|
||||
}
|
||||
|
||||
enum wlan_twt_session_state
|
||||
mlme_get_twt_session_state(struct wlan_objmgr_peer *peer,
|
||||
uint8_t dialog_id)
|
||||
mlme_get_twt_session_state(struct wlan_objmgr_psoc *psoc,
|
||||
struct qdf_mac_addr *peer_mac, uint8_t dialog_id)
|
||||
{
|
||||
struct wlan_objmgr_peer *peer;
|
||||
struct peer_mlme_priv_obj *peer_priv;
|
||||
uint8_t i;
|
||||
|
||||
peer = wlan_objmgr_get_peer_by_mac(psoc, peer_mac->bytes,
|
||||
WLAN_MLME_NB_ID);
|
||||
if (!peer) {
|
||||
mlme_legacy_err("Peer object not found");
|
||||
return WLAN_TWT_SETUP_STATE_NOT_ESTABLISHED;
|
||||
}
|
||||
|
||||
peer_priv = wlan_objmgr_peer_get_comp_private_obj(peer,
|
||||
WLAN_UMAC_COMP_MLME);
|
||||
if (!peer_priv) {
|
||||
wlan_objmgr_peer_release_ref(peer, WLAN_MLME_NB_ID);
|
||||
mlme_legacy_err(" peer mlme object is NULL");
|
||||
return WLAN_TWT_SETUP_STATE_NOT_ESTABLISHED;
|
||||
}
|
||||
|
||||
for (i = 0; i < peer_priv->twt_ctx.num_twt_sessions; i++) {
|
||||
if (peer_priv->twt_ctx.session_info[i].dialog_id == dialog_id)
|
||||
if (peer_priv->twt_ctx.session_info[i].dialog_id == dialog_id &&
|
||||
dialog_id != WLAN_ALL_SESSIONS_DIALOG_ID) {
|
||||
wlan_objmgr_peer_release_ref(peer, WLAN_MLME_NB_ID);
|
||||
return peer_priv->twt_ctx.session_info[i].state;
|
||||
}
|
||||
}
|
||||
|
||||
wlan_objmgr_peer_release_ref(peer, WLAN_MLME_NB_ID);
|
||||
|
||||
return WLAN_TWT_SETUP_STATE_NOT_ESTABLISHED;
|
||||
}
|
||||
|
||||
|
@@ -376,6 +376,40 @@ ucfg_mlme_set_twt_statistics_tgt_cap(struct wlan_objmgr_psoc *psoc, bool val);
|
||||
*/
|
||||
QDF_STATUS
|
||||
ucfg_mlme_get_twt_statistics_tgt_cap(struct wlan_objmgr_psoc *psoc, bool *val);
|
||||
|
||||
/**
|
||||
* ucfg_mlme_set_twt_session_state() - Set TWT session state
|
||||
* @psoc: Pointer to global psoc object
|
||||
* @peer_mac: Pointer to peer mac address
|
||||
* @dialog_id: TWT session dialog id
|
||||
* @state: TWT state
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
static inline
|
||||
void ucfg_mlme_set_twt_session_state(struct wlan_objmgr_psoc *psoc,
|
||||
struct qdf_mac_addr *peer_mac,
|
||||
uint8_t dialog_id,
|
||||
enum wlan_twt_session_state state)
|
||||
{
|
||||
mlme_set_twt_session_state(psoc, peer_mac, dialog_id, state);
|
||||
}
|
||||
|
||||
/**
|
||||
* ucfg_mlme_get_twt_session_state() - Get TWT session state
|
||||
* @psoc: Pointer to global psoc object
|
||||
* @peer_mac: Pointer to peer mac address
|
||||
* @dialog_id: TWT session dialog id
|
||||
*
|
||||
* Return: enum wlan_twt_session_state
|
||||
*/
|
||||
static inline enum wlan_twt_session_state
|
||||
ucfg_mlme_get_twt_session_state(struct wlan_objmgr_psoc *psoc,
|
||||
struct qdf_mac_addr *peer_mac,
|
||||
uint8_t dialog_id)
|
||||
{
|
||||
return mlme_get_twt_session_state(psoc, peer_mac, dialog_id);
|
||||
}
|
||||
#else
|
||||
static inline QDF_STATUS
|
||||
ucfg_mlme_get_twt_requestor(struct wlan_objmgr_psoc *psoc,
|
||||
@@ -580,5 +614,20 @@ ucfg_mlme_set_twt_statistics_tgt_cap(struct wlan_objmgr_psoc *psoc, bool val)
|
||||
{
|
||||
return QDF_STATUS_E_NOSUPPORT;
|
||||
}
|
||||
|
||||
static inline
|
||||
void ucfg_mlme_set_twt_session_state(struct wlan_objmgr_psoc *psoc,
|
||||
struct qdf_mac_addr *peer_mac,
|
||||
uint8_t dialog_id,
|
||||
enum wlan_twt_session_state state)
|
||||
{}
|
||||
|
||||
static inline enum wlan_twt_session_state
|
||||
ucfg_mlme_get_twt_session_state(struct wlan_objmgr_psoc *psoc,
|
||||
struct qdf_mac_addr *peer_mac,
|
||||
uint8_t dialog_id)
|
||||
{
|
||||
return WLAN_TWT_SETUP_STATE_NOT_ESTABLISHED;
|
||||
}
|
||||
#endif /* defined(WLAN_SUPPORT_TWT) && defined(WLAN_FEATURE_11AX) */
|
||||
#endif /* _WLAN_MLME_TWT_UCFG_API_H_ */
|
||||
|
Reference in New Issue
Block a user