diff options
| author | Mohit Khanna <mkhannaqca@codeaurora.org> | 2016-07-28 19:07:05 -0700 |
|---|---|---|
| committer | Vishwajith Upendra <vishwaji@codeaurora.org> | 2016-08-01 12:34:05 -0700 |
| commit | 3aee13142b47cf31ed00919e7acb450b58c973a0 (patch) | |
| tree | a084f657e6679662758be98bd0a95fbbfd6cbab0 | |
| parent | 7f2d07eede0a00e2f3680fbe2ccb47b8e1838fde (diff) | |
qcacld-3.0: Debug commit to track peer refcount
Add prints to track how peer->ref_cnt and peer_id_ref_cnt change
Change-Id: I518f58ec053e53ec2d82bcce85f872cd48029c99
CRs-Fixed: 1046458
| -rw-r--r-- | core/dp/txrx/ol_tx_classify.c | 4 | ||||
| -rw-r--r-- | core/dp/txrx/ol_tx_queue.c | 4 | ||||
| -rw-r--r-- | core/dp/txrx/ol_txrx.c | 18 | ||||
| -rw-r--r-- | core/dp/txrx/ol_txrx_peer_find.c | 31 | ||||
| -rw-r--r-- | core/wma/src/wma_dev_if.c | 16 |
5 files changed, 61 insertions, 12 deletions
diff --git a/core/dp/txrx/ol_tx_classify.c b/core/dp/txrx/ol_tx_classify.c index 879b21946b65..1cf50a625e33 100644 --- a/core/dp/txrx/ol_tx_classify.c +++ b/core/dp/txrx/ol_tx_classify.c @@ -692,6 +692,10 @@ ol_tx_classify_mgmt( mac_addr, &peer->mac_addr) != 0) { qdf_atomic_dec(&peer->ref_cnt); + qdf_print("%s: peer %p peer->ref_cnt %d", + __func__, peer, + qdf_atomic_read + (&peer->ref_cnt)); peer = NULL; } } diff --git a/core/dp/txrx/ol_tx_queue.c b/core/dp/txrx/ol_tx_queue.c index c57db12adbd3..b9f348699e1c 100644 --- a/core/dp/txrx/ol_tx_queue.c +++ b/core/dp/txrx/ol_tx_queue.c @@ -92,6 +92,10 @@ ol_tx_queue_vdev_flush(struct ol_txrx_pdev_t *pdev, struct ol_txrx_vdev_t *vdev) txq = &peer->txqs[i]; if (txq->frms) { qdf_atomic_inc(&peer->ref_cnt); + qdf_print("%s: peer %p peer->ref_cnt %d", + __func__, peer, + qdf_atomic_read + (&peer->ref_cnt)); peers[peer_count++] = peer; break; } diff --git a/core/dp/txrx/ol_txrx.c b/core/dp/txrx/ol_txrx.c index b713a4b8af10..72eb0a76493e 100644 --- a/core/dp/txrx/ol_txrx.c +++ b/core/dp/txrx/ol_txrx.c @@ -258,6 +258,8 @@ ol_txrx_find_peer_by_addr_and_vdev(ol_txrx_pdev_handle pdev, return NULL; *peer_id = peer->local_id; qdf_atomic_dec(&peer->ref_cnt); + qdf_print("%s: peer %p peer->ref_cnt %d", __func__, peer, + qdf_atomic_read(&peer->ref_cnt)); return peer; } @@ -312,6 +314,8 @@ ol_txrx_peer_handle ol_txrx_find_peer_by_addr(ol_txrx_pdev_handle pdev, return NULL; *peer_id = peer->local_id; qdf_atomic_dec(&peer->ref_cnt); + qdf_print("%s: peer %p peer->ref_cnt %d", __func__, peer, + qdf_atomic_read(&peer->ref_cnt)); return peer; } @@ -2149,6 +2153,8 @@ ol_txrx_peer_attach(ol_txrx_vdev_handle vdev, uint8_t *peer_mac_addr) /* keep one reference for ol_rx_peer_map_handler */ qdf_atomic_inc(&peer->ref_cnt); + qdf_print("%s: peer %p peer->ref_cnt %d", __func__, peer, + qdf_atomic_read(&peer->ref_cnt)); peer->valid = 1; @@ -2546,6 +2552,8 @@ QDF_STATUS ol_txrx_peer_state_update(struct ol_txrx_pdev_t *pdev, __func__); #endif qdf_atomic_dec(&peer->ref_cnt); + qdf_print("%s: peer %p peer->ref_cnt %d", __func__, peer, + qdf_atomic_read(&peer->ref_cnt)); return QDF_STATUS_SUCCESS; } @@ -2576,7 +2584,8 @@ QDF_STATUS ol_txrx_peer_state_update(struct ol_txrx_pdev_t *pdev, } } qdf_atomic_dec(&peer->ref_cnt); - + qdf_print("%s: peer %p peer->ref_cnt %d", __func__, peer, + qdf_atomic_read(&peer->ref_cnt)); /* Set the state after the Pause to avoid the race condiction with ADDBA check in tx path */ peer->state = state; @@ -2679,6 +2688,8 @@ ol_txrx_peer_update(ol_txrx_vdev_handle vdev, } } qdf_atomic_dec(&peer->ref_cnt); + qdf_print("%s: peer %p peer->ref_cnt %d", __func__, peer, + qdf_atomic_read(&peer->ref_cnt)); } uint8_t @@ -2801,7 +2812,7 @@ void ol_txrx_peer_unref_delete(ol_txrx_peer_handle peer) */ qdf_spin_unlock_bh(&pdev->peer_ref_mutex); - TXRX_PRINT(TXRX_PRINT_LEVEL_INFO1, + TXRX_PRINT(TXRX_PRINT_LEVEL_ERR, "%s: deleting vdev object %p " "(%02x:%02x:%02x:%02x:%02x:%02x)" " - its last peer is done\n", @@ -2847,6 +2858,9 @@ void ol_txrx_peer_unref_delete(ol_txrx_peer_handle peer) qdf_mem_free(peer); } else { + TXRX_PRINT(TXRX_PRINT_LEVEL_ERR, + "%s: peer %p peer->ref_cnt = %d\n", __func__, peer, + qdf_atomic_read(&peer->ref_cnt)); qdf_spin_unlock_bh(&pdev->peer_ref_mutex); } } diff --git a/core/dp/txrx/ol_txrx_peer_find.c b/core/dp/txrx/ol_txrx_peer_find.c index 6f13af569689..db96fcd69db1 100644 --- a/core/dp/txrx/ol_txrx_peer_find.c +++ b/core/dp/txrx/ol_txrx_peer_find.c @@ -195,6 +195,9 @@ struct ol_txrx_peer_t *ol_txrx_peer_vdev_find_hash(struct ol_txrx_pdev_t *pdev, /* found it - increment the ref count before releasing the lock */ qdf_atomic_inc(&peer->ref_cnt); + qdf_print("%s: peer %p peer->ref_cnt %d", + __func__, peer, + qdf_atomic_read(&peer->ref_cnt)); qdf_spin_unlock_bh(&pdev->peer_ref_mutex); return peer; } @@ -228,6 +231,9 @@ struct ol_txrx_peer_t *ol_txrx_peer_find_hash_find(struct ol_txrx_pdev_t *pdev, releasing the lock */ qdf_atomic_inc(&peer->ref_cnt); qdf_spin_unlock_bh(&pdev->peer_ref_mutex); + qdf_print("%s: peer %p peer->ref_cnt %d", + __func__, peer, + qdf_atomic_read(&peer->ref_cnt)); return peer; } } @@ -293,8 +299,9 @@ void ol_txrx_peer_find_hash_erase(struct ol_txrx_pdev_t *pdev) qdf_atomic_init(&peer->ref_cnt); /* set to 0 */ qdf_atomic_inc(&peer->ref_cnt); /* incr to 1 */ TXRX_PRINT(TXRX_PRINT_LEVEL_ERR, - "%s: Delete Peer %p\n", __func__, - peer); + "%s: Delete Peer %p ref_cnt %d\n", __func__, + peer, + qdf_atomic_read(&peer->ref_cnt)); ol_txrx_peer_unref_delete(peer); } } @@ -353,6 +360,16 @@ ol_txrx_peer_find_add_id(struct ol_txrx_pdev_t *pdev, } qdf_atomic_inc (&pdev->peer_id_to_obj_map[peer_id].peer_id_ref_cnt); + + TXRX_PRINT(TXRX_PRINT_LEVEL_ERR, + "%s: peer %p ID %d peer_id_ref_cnt %d peer->ref_cnt %d\n", + __func__, + peer, peer_id, + qdf_atomic_read(&pdev-> + peer_id_to_obj_map[peer_id]. + peer_id_ref_cnt), + qdf_atomic_read(&peer->ref_cnt)); + /* * remove the reference added in ol_txrx_peer_find_hash_find. * the reference for the first peer id is already added in @@ -503,8 +520,10 @@ void ol_rx_peer_unmap_handler(ol_txrx_pdev_handle pdev, uint16_t peer_id) * If there are no more references, delete the peer object. */ TXRX_PRINT(TXRX_PRINT_LEVEL_ERR, - "%s: Remove the ID %d reference to peer %p\n", - __func__, peer_id, peer); + "%s: Remove the ID %d reference to peer %p peer_id_ref_cnt %d\n", + __func__, peer_id, peer, + qdf_atomic_read + (&pdev->peer_id_to_obj_map[peer_id].peer_id_ref_cnt)); ol_txrx_peer_unref_delete(peer); } @@ -521,6 +540,10 @@ struct ol_txrx_peer_t *ol_txrx_assoc_peer_find(struct ol_txrx_vdev_t *vdev) && vdev->last_real_peer->peer_ids[0] != HTT_INVALID_PEER_ID) { qdf_atomic_inc(&vdev->last_real_peer->ref_cnt); peer = vdev->last_real_peer; + qdf_print("%s: peer %p peer->ref_cnt %d", + __func__, peer, + qdf_atomic_read + (&peer->ref_cnt)); } else { peer = NULL; } diff --git a/core/wma/src/wma_dev_if.c b/core/wma/src/wma_dev_if.c index d43a1ddf579f..ca129ce2a4af 100644 --- a/core/wma/src/wma_dev_if.c +++ b/core/wma/src/wma_dev_if.c @@ -1070,8 +1070,9 @@ void wma_remove_peer(tp_wma_handle wma, uint8_t *bssid, } wma->interfaces[vdev_id].peer_count--; - WMA_LOGE("%s: Removed peer with peer_addr %pM vdevid %d peer_count %d", - __func__, bssid, vdev_id, wma->interfaces[vdev_id].peer_count); + WMA_LOGE("%s: Removed peer %p with peer_addr %pM vdevid %d peer_count %d", + __func__, peer, bssid, vdev_id, + wma->interfaces[vdev_id].peer_count); if (roam_synch_in_progress) return; /* Flush all TIDs except MGMT TID for this peer in Target */ @@ -1126,8 +1127,9 @@ QDF_STATUS wma_create_peer(tp_wma_handle wma, ol_txrx_pdev_handle pdev, } if (roam_synch_in_progress) { - WMA_LOGE("%s: LFR3: Created peer with peer_addr %pM vdev_id %d," - "peer_count - %d", __func__, peer_addr, vdev_id, + WMA_LOGE("%s: LFR3: Created peer %p with peer_addr %pM vdev_id %d," + "peer_count - %d", + __func__, peer, peer_addr, vdev_id, wma->interfaces[vdev_id].peer_count); return QDF_STATUS_SUCCESS; } @@ -1140,8 +1142,10 @@ QDF_STATUS wma_create_peer(tp_wma_handle wma, ol_txrx_pdev_handle pdev, ol_txrx_peer_detach(peer); goto err; } - WMA_LOGE("%s: Created peer with peer_addr %pM vdev_id %d, peer_count - %d", - __func__, peer_addr, vdev_id, wma->interfaces[vdev_id].peer_count); + WMA_LOGE("%s: Created peer %p ref_cnt %d with peer_addr %pM vdev_id %d, peer_count - %d", + __func__, peer, qdf_atomic_read(&peer->ref_cnt), + peer_addr, vdev_id, + wma->interfaces[vdev_id].peer_count); mac_addr_raw = ol_txrx_get_vdev_mac_addr(vdev); if (mac_addr_raw == NULL) { |
