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