From 0ca5cc44c875c8dc21bcd6171d2687f339fd12a0 Mon Sep 17 00:00:00 2001 From: Deepak Dhamdhere Date: Thu, 2 Mar 2017 17:54:56 -0800 Subject: qcacld-3.0: Initialize peer_unmap_timer during peer attach Initialize peer_unmap_timer during peer attach instead of at the time of peer detach. Then ol_txrx_unref_delete can destroy the timer without peer detach getting called earlier. CRs-Fixed: 2014183 Change-Id: Icebec27d5562350871a89b5cf71ae99f096feee8 --- core/dp/txrx/ol_txrx.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/core/dp/txrx/ol_txrx.c b/core/dp/txrx/ol_txrx.c index 8b7ee0e2cebb..f0705ce2ea3d 100644 --- a/core/dp/txrx/ol_txrx.c +++ b/core/dp/txrx/ol_txrx.c @@ -2446,6 +2446,8 @@ ol_txrx_peer_attach(ol_txrx_vdev_handle vdev, uint8_t *peer_mac_addr) OL_TXRX_PEER_INC_REF_CNT(peer); peer->valid = 1; + qdf_mc_timer_init(&peer->peer_unmap_timer, QDF_TIMER_TYPE_SW, + peer_unmap_timer_handler, peer); ol_txrx_peer_find_hash_add(pdev, peer); @@ -3107,10 +3109,8 @@ int ol_txrx_peer_unref_delete(ol_txrx_peer_handle peer, vdev->wait_on_peer_id = OL_TXRX_INVALID_LOCAL_PEER_ID; } - if (vdev->opmode == wlan_op_mode_sta) { - qdf_mc_timer_stop(&peer->peer_unmap_timer); - qdf_mc_timer_destroy(&peer->peer_unmap_timer); - } + qdf_mc_timer_destroy(&peer->peer_unmap_timer); + /* check whether the parent vdev has no peers left */ if (TAILQ_EMPTY(&vdev->peer_list)) { /* @@ -3326,8 +3326,6 @@ void ol_txrx_peer_detach(ol_txrx_peer_handle peer) * Create a timer to track unmap events when the sta peer gets deleted. */ if (vdev->opmode == wlan_op_mode_sta) { - qdf_mc_timer_init(&peer->peer_unmap_timer, QDF_TIMER_TYPE_SW, - peer_unmap_timer_handler, peer); qdf_mc_timer_start(&peer->peer_unmap_timer, OL_TXRX_PEER_UNMAP_TIMEOUT); TXRX_PRINT(TXRX_PRINT_LEVEL_ERR, -- cgit v1.2.3