qcacld-3.0: Add support for TWT ack event
In case if TWT command (i.e setup, terminate, pause, resume, nudge) comes from userspace and if the firmware is in below mode 1. scan in progress 2. roam in progress 3. CSA is in progress 4. any other error then the command needs to be rejected in userspace context Synchronize the TWT commands so that whenever command goes from driver to firmware, then driver will receive ack event first followed by respective event (i.e add dialog, delete dialog, pause, resume, nudge) with below condition 1. If driver receives the ack event as successful then driver waits for this ack event, respective event with status of the TWT action frame over the air is expected. 2. If driver receives the ack event as failure then it will reject the TWT command request in userspace context. Change-Id: Ib68b89b74b5e44f28106884efd7412cee49f5bd8 CRs-Fixed: 2987978
Цей коміт міститься в:

зафіксовано
Madan Koyyalamudi

джерело
3ca620bc89
коміт
f93a29459a
@@ -219,6 +219,21 @@ QDF_STATUS ucfg_mlme_set_twt_requestor_flag(struct wlan_objmgr_psoc *psoc,
|
||||
QDF_STATUS ucfg_mlme_set_twt_responder_flag(struct wlan_objmgr_psoc *psoc,
|
||||
bool val);
|
||||
|
||||
/**
|
||||
* ucfg_mlme_reset_twt_init_context() - Reset twt init if ack fail
|
||||
* This is to handle back to back command. If ack failed for previous
|
||||
* command and again new commad comes then init context should reset to
|
||||
* allow new command.
|
||||
* @psoc: pointer to psoc object
|
||||
* @peer_mac: peer mac address
|
||||
* @dialog_id: dialog id
|
||||
*
|
||||
* Return: QDF Status
|
||||
*/
|
||||
QDF_STATUS ucfg_mlme_reset_twt_init_context(struct wlan_objmgr_psoc *psoc,
|
||||
struct qdf_mac_addr *peer_mac,
|
||||
uint8_t dialog_id);
|
||||
|
||||
/**
|
||||
* ucfg_mlme_is_twt_setup_in_progress() - Get TWT setup in progress for
|
||||
* given dialog id
|
||||
@@ -624,6 +639,14 @@ ucfg_mlme_set_twt_responder_flag(struct wlan_objmgr_psoc *psoc,
|
||||
return QDF_STATUS_E_NOSUPPORT;
|
||||
}
|
||||
|
||||
static inline QDF_STATUS
|
||||
ucfg_mlme_reset_twt_init_context(struct wlan_objmgr_psoc *psoc,
|
||||
struct qdf_mac_addr *peer_mac,
|
||||
uint8_t dialog_id)
|
||||
{
|
||||
return QDF_STATUS_E_NOSUPPORT;
|
||||
}
|
||||
|
||||
static inline
|
||||
bool ucfg_mlme_is_flexible_twt_enabled(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
|
@@ -117,6 +117,18 @@ ucfg_mlme_set_twt_responder_flag(struct wlan_objmgr_psoc *psoc, bool val)
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS
|
||||
ucfg_mlme_reset_twt_init_context(struct wlan_objmgr_psoc *psoc,
|
||||
struct qdf_mac_addr *peer_macaddr,
|
||||
uint8_t dialog_id)
|
||||
{
|
||||
mlme_set_twt_command_in_progress(psoc, peer_macaddr, dialog_id,
|
||||
WLAN_TWT_NONE);
|
||||
mlme_init_twt_context(psoc, peer_macaddr, dialog_id);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
QDF_STATUS
|
||||
ucfg_mlme_get_twt_congestion_timeout(struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t *val)
|
||||
|
Посилання в новій задачі
Заблокувати користувача