qcacld-3.0: Add support for TWT get_status
In TWT component, add support for TWT get_status command i.e when host wants to query current status of TWT sessions. Change-Id: Ib43009e5f6a90c589db25f78e1ca43563f2950fe CRs-Fixed: 3085483
This commit is contained in:

committed by
Madan Koyyalamudi

parent
8d529074a0
commit
22c05ef081
@@ -804,7 +804,6 @@ end:
|
||||
*
|
||||
* Return: Return true if TWT session exists for given dialog ID.
|
||||
*/
|
||||
static
|
||||
bool wlan_twt_is_setup_done(struct wlan_objmgr_psoc *psoc,
|
||||
struct qdf_mac_addr *peer_mac, uint8_t dialog_id)
|
||||
{
|
||||
@@ -1602,6 +1601,47 @@ wlan_twt_set_session_state(struct wlan_objmgr_psoc *psoc,
|
||||
wlan_objmgr_peer_release_ref(peer, WLAN_TWT_ID);
|
||||
}
|
||||
|
||||
enum wlan_twt_session_state
|
||||
wlan_twt_get_session_state(struct wlan_objmgr_psoc *psoc,
|
||||
struct qdf_mac_addr *peer_mac, uint8_t dialog_id)
|
||||
{
|
||||
struct wlan_objmgr_peer *peer;
|
||||
struct twt_peer_priv_obj *peer_priv;
|
||||
uint8_t i;
|
||||
|
||||
peer = wlan_objmgr_get_peer_by_mac(psoc, peer_mac->bytes,
|
||||
WLAN_TWT_ID);
|
||||
|
||||
if (!peer) {
|
||||
twt_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_TWT);
|
||||
|
||||
if (!peer_priv) {
|
||||
wlan_objmgr_peer_release_ref(peer, WLAN_TWT_ID);
|
||||
twt_err(" peer twt component object is NULL");
|
||||
return WLAN_TWT_SETUP_STATE_NOT_ESTABLISHED;
|
||||
}
|
||||
|
||||
qdf_mutex_acquire(&peer_priv->twt_peer_lock);
|
||||
for (i = 0; i < peer_priv->num_twt_sessions; i++) {
|
||||
if (peer_priv->session_info[i].dialog_id == dialog_id &&
|
||||
dialog_id != TWT_ALL_SESSIONS_DIALOG_ID) {
|
||||
qdf_mutex_release(&peer_priv->twt_peer_lock);
|
||||
wlan_objmgr_peer_release_ref(peer, WLAN_TWT_ID);
|
||||
return peer_priv->session_info[i].state;
|
||||
}
|
||||
}
|
||||
|
||||
qdf_mutex_release(&peer_priv->twt_peer_lock);
|
||||
wlan_objmgr_peer_release_ref(peer, WLAN_TWT_ID);
|
||||
|
||||
return WLAN_TWT_SETUP_STATE_NOT_ESTABLISHED;
|
||||
}
|
||||
|
||||
/**
|
||||
* wlan_twt_process_renego_failure() - Process TWT re-negotiation failure
|
||||
* @psoc: psoc
|
||||
|
@@ -239,3 +239,25 @@ wlan_twt_init_context(struct wlan_objmgr_psoc *psoc,
|
||||
*/
|
||||
QDF_STATUS wlan_twt_update_beacon_template(void);
|
||||
|
||||
/**
|
||||
* wlan_twt_is_setup_done() - Check if TWT setup exists for a given dialog id
|
||||
* @psoc: Pointer to psoc object
|
||||
* @peer_mac: Pointer to peer mac address
|
||||
* @dialog_id: Dialog id
|
||||
*
|
||||
* Return: true if TWT setup exists, false otherwise
|
||||
*/
|
||||
bool wlan_twt_is_setup_done(struct wlan_objmgr_psoc *psoc,
|
||||
struct qdf_mac_addr *peer_mac, uint8_t dialog_id);
|
||||
|
||||
/**
|
||||
* wlan_twt_get_session_state() - Get TWT session state
|
||||
* @psoc: Pointer to psoc object
|
||||
* @peer_mac: Pointer to peer mac address
|
||||
* @dialog_id: Dialog id
|
||||
*
|
||||
* Return: enum wlan_twt_session_state
|
||||
*/
|
||||
enum wlan_twt_session_state
|
||||
wlan_twt_get_session_state(struct wlan_objmgr_psoc *psoc,
|
||||
struct qdf_mac_addr *peer_mac, uint8_t dialog_id);
|
||||
|
@@ -226,6 +226,32 @@ ucfg_twt_set_osif_cb(osif_twt_get_global_ops_cb osif_twt_ops);
|
||||
* Return: QDF_STATUS_SUCCESS
|
||||
*/
|
||||
QDF_STATUS ucfg_twt_update_beacon_template(void);
|
||||
|
||||
/**
|
||||
* ucfg_twt_is_setup_done() - check if TWT setup is done or not
|
||||
* for given dialog id
|
||||
* @psoc: Pointer to global psoc object
|
||||
* @peer_mac: Global peer mac address
|
||||
* @dialog_id: Dialog ID
|
||||
*
|
||||
* Return: True if Setup is done, false otherwise
|
||||
*/
|
||||
bool
|
||||
ucfg_twt_is_setup_done(struct wlan_objmgr_psoc *psoc,
|
||||
struct qdf_mac_addr *peer_mac,
|
||||
uint8_t dialog_id);
|
||||
|
||||
/**
|
||||
* ucfg_twt_get_session_state() - get TWT session state for a given dialog id
|
||||
* @psoc: Pointer to global psoc object
|
||||
* @peer_mac: Global peer mac address
|
||||
* @dialog_id: Dialog ID
|
||||
*
|
||||
* Return: TWT session state
|
||||
*/
|
||||
enum wlan_twt_session_state
|
||||
ucfg_twt_get_session_state(struct wlan_objmgr_psoc *psoc,
|
||||
struct qdf_mac_addr *peer_mac, uint8_t dialog_id);
|
||||
#else
|
||||
static inline
|
||||
QDF_STATUS ucfg_twt_psoc_open(struct wlan_objmgr_psoc *psoc)
|
||||
@@ -290,6 +316,20 @@ ucfg_twt_set_osif_cb(osif_twt_get_global_ops_cb osif_twt_ops)
|
||||
{
|
||||
return QDF_STATUS_E_NOSUPPORT;
|
||||
}
|
||||
#endif
|
||||
|
||||
static inline bool
|
||||
ucfg_twt_is_setup_done(struct wlan_objmgr_psoc *psoc,
|
||||
struct qdf_mac_addr *peer_mac,
|
||||
uint8_t dialog_id)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline enum wlan_twt_session_state
|
||||
ucfg_twt_get_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
|
||||
#endif
|
||||
|
@@ -170,3 +170,16 @@ QDF_STATUS ucfg_twt_update_beacon_template(void)
|
||||
return wlan_twt_update_beacon_template();
|
||||
}
|
||||
|
||||
bool
|
||||
ucfg_twt_is_setup_done(struct wlan_objmgr_psoc *psoc,
|
||||
struct qdf_mac_addr *peer_mac, uint8_t dialog_id)
|
||||
{
|
||||
return wlan_twt_is_setup_done(psoc, peer_mac, dialog_id);
|
||||
}
|
||||
|
||||
enum wlan_twt_session_state
|
||||
ucfg_twt_get_session_state(struct wlan_objmgr_psoc *psoc,
|
||||
struct qdf_mac_addr *peer_mac, uint8_t dialog_id)
|
||||
{
|
||||
return wlan_twt_get_session_state(psoc, peer_mac, dialog_id);
|
||||
}
|
||||
|
Reference in New Issue
Block a user