Forráskód Böngészése

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
Mohit Khanna 8 éve
szülő
commit
3aee13142b

+ 4 - 0
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;
 				}
 			}

+ 4 - 0
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;
 				}

+ 16 - 2
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);
 	}
 }

+ 27 - 4
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;
 	}

+ 10 - 6
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) {