summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohit Khanna <mkhannaqca@codeaurora.org>2016-07-28 19:07:05 -0700
committerVishwajith Upendra <vishwaji@codeaurora.org>2016-08-01 12:34:05 -0700
commit3aee13142b47cf31ed00919e7acb450b58c973a0 (patch)
treea084f657e6679662758be98bd0a95fbbfd6cbab0
parent7f2d07eede0a00e2f3680fbe2ccb47b8e1838fde (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.c4
-rw-r--r--core/dp/txrx/ol_tx_queue.c4
-rw-r--r--core/dp/txrx/ol_txrx.c18
-rw-r--r--core/dp/txrx/ol_txrx_peer_find.c31
-rw-r--r--core/wma/src/wma_dev_if.c16
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) {