qcacld-3.0: Reset twt active command if ack fail

Reset twt active command if ack fails due to firmware internal
error.

Change-Id: Ic980314261ab4f6deb437b36e525ea59c286eee2
CRs-Fixed: 2997509
Esse commit está contido em:
Jyoti Kumari
2021-07-22 13:55:53 +05:30
commit de Madan Koyyalamudi
commit bf9589ac92
3 arquivos alterados com 29 adições e 19 exclusões

Ver arquivo

@@ -239,19 +239,18 @@ QDF_STATUS
ucfg_mlme_get_twt_res_service_cap(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.
* ucfg_mlme_reset_twt_active_cmd() - Reset twt active cmd if ack fail
* This is to handle back to back command. If ack failed for active
* command then reset this command to allow new twt 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);
QDF_STATUS ucfg_mlme_reset_twt_active_cmd(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
@@ -659,9 +658,9 @@ ucfg_mlme_set_twt_responder_flag(struct wlan_objmgr_psoc *psoc,
}
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)
ucfg_mlme_reset_twt_reset_cmd(struct wlan_objmgr_psoc *psoc,
struct qdf_mac_addr *peer_mac,
uint8_t dialog_id)
{
return QDF_STATUS_E_NOSUPPORT;
}
@@ -760,5 +759,13 @@ ucfg_mlme_get_twt_res_service_cap(struct wlan_objmgr_psoc *psoc, bool *val)
return QDF_STATUS_E_NOSUPPORT;
}
static inline QDF_STATUS
ucfg_mlme_reset_twt_active_cmd(struct wlan_objmgr_psoc *psoc,
struct qdf_mac_addr *peer_mac,
uint8_t dialog_id)
{
return QDF_STATUS_E_NOSUPPORT;
}
#endif /* defined(WLAN_SUPPORT_TWT) && defined(WLAN_FEATURE_11AX) */
#endif /* _WLAN_MLME_TWT_UCFG_API_H_ */

Ver arquivo

@@ -118,13 +118,12 @@ ucfg_mlme_set_twt_responder_flag(struct wlan_objmgr_psoc *psoc, bool val)
}
QDF_STATUS
ucfg_mlme_reset_twt_init_context(struct wlan_objmgr_psoc *psoc,
struct qdf_mac_addr *peer_macaddr,
uint8_t dialog_id)
ucfg_mlme_reset_twt_active_cmd(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;
}

Ver arquivo

@@ -1714,7 +1714,11 @@ int hdd_send_twt_add_dialog_cmd(struct hdd_context *hdd_ctx,
ack_priv = osif_request_priv(request);
if (ack_priv->status) {
hdd_err("Received TWT ack error. Reset twt command");
ucfg_mlme_reset_twt_init_context(
ucfg_mlme_reset_twt_active_cmd(
hdd_ctx->psoc,
(struct qdf_mac_addr *)twt_params->peer_macaddr,
twt_params->dialog_id);
ucfg_mlme_init_twt_context(
hdd_ctx->psoc,
(struct qdf_mac_addr *)twt_params->peer_macaddr,
twt_params->dialog_id);
@@ -2102,7 +2106,7 @@ int hdd_send_twt_del_dialog_cmd(struct hdd_context *hdd_ctx,
ack_priv = osif_request_priv(request);
if (ack_priv->status) {
hdd_err("Received TWT ack error. Reset twt command");
ucfg_mlme_reset_twt_init_context(
ucfg_mlme_reset_twt_active_cmd(
hdd_ctx->psoc,
(struct qdf_mac_addr *)twt_params->peer_macaddr,
twt_params->dialog_id);
@@ -2647,7 +2651,7 @@ int hdd_send_twt_pause_dialog_cmd(struct hdd_context *hdd_ctx,
ack_priv = osif_request_priv(request);
if (ack_priv->status) {
hdd_err("Received TWT ack error. Reset twt command");
ucfg_mlme_reset_twt_init_context(
ucfg_mlme_reset_twt_active_cmd(
hdd_ctx->psoc,
(struct qdf_mac_addr *)twt_params->peer_macaddr,
twt_params->dialog_id);
@@ -2806,7 +2810,7 @@ int hdd_send_twt_nudge_dialog_cmd(struct hdd_context *hdd_ctx,
ack_priv = osif_request_priv(request);
if (ack_priv->status) {
hdd_err("Received TWT ack error. Reset twt command");
ucfg_mlme_reset_twt_init_context(
ucfg_mlme_reset_twt_active_cmd(
hdd_ctx->psoc,
(struct qdf_mac_addr *)twt_params->peer_macaddr,
twt_params->dialog_id);
@@ -3107,7 +3111,7 @@ hdd_send_twt_resume_dialog_cmd(struct hdd_context *hdd_ctx,
ack_priv = osif_request_priv(request);
if (ack_priv->status) {
hdd_err("Received TWT ack error. Reset twt command");
ucfg_mlme_reset_twt_init_context(
ucfg_mlme_reset_twt_active_cmd(
hdd_ctx->psoc,
(struct qdf_mac_addr *)twt_params->peer_macaddr,
twt_params->dialog_id);