From f5bf6a10e8cc54b165836d2e453d592b3b96f1e9 Mon Sep 17 00:00:00 2001 From: Nandha Kishore Easwaran Date: Wed, 19 Feb 2020 14:15:49 +0530 Subject: [PATCH] qcacmn: Donot deinit timer if it expired Do not deinit timer if it has expired since expired timers are automatically removed from timer list. Only deiniit and delete timer if it is still running and FW response has been received Change-Id: I0eb839ba152a20d9da37e1249aa0e4c0543eb494 --- .../vdev_mgr/src/target_if_vdev_mgr_tx_ops.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/target_if/mlme/vdev_mgr/src/target_if_vdev_mgr_tx_ops.c b/target_if/mlme/vdev_mgr/src/target_if_vdev_mgr_tx_ops.c index a39c8c962a..9c8a63d964 100644 --- a/target_if/mlme/vdev_mgr/src/target_if_vdev_mgr_tx_ops.c +++ b/target_if/mlme/vdev_mgr/src/target_if_vdev_mgr_tx_ops.c @@ -70,13 +70,18 @@ target_if_vdev_mgr_rsp_timer_stop(struct wlan_objmgr_psoc *psoc, * This is triggered from timer expiry case only for * which timer stop is not required */ - if (vdev_rsp->timer_status != QDF_STATUS_E_TIMEOUT) - qdf_timer_stop(&vdev_rsp->rsp_timer); - - vdev_rsp->timer_status = QDF_STATUS_SUCCESS; - if (clear_bit == DELETE_RESPONSE_BIT) - txops->psoc_vdev_rsp_timer_deinit(psoc, - vdev_rsp->vdev_id); + if (vdev_rsp->timer_status == QDF_STATUS_E_TIMEOUT) { + qdf_atomic_set(&vdev_rsp->rsp_timer_inuse, 0); + vdev_rsp->psoc = NULL; + } else { + vdev_rsp->timer_status = QDF_STATUS_SUCCESS; + if (clear_bit == DELETE_RESPONSE_BIT) { + txops->psoc_vdev_rsp_timer_deinit(psoc, + vdev_rsp->vdev_id); + } else { + qdf_timer_stop(&vdev_rsp->rsp_timer); + } + } /* * Releasing reference taken at the time of