소스 검색

qcacld-3.0: Add debug log to capture vdev attach and detach events

There are certain stability issues reported and from the logs, it
has been concluded that vdev detach is missing which causes memory
leaks.

Add debug logs around vdev attach and detach paths to recognize any
memory leaks.

CRs-Fixed: 2244033
Change-Id: I9ee751fff8f51c7ad2ca2d7ec1e894cbbf60d201
Krunal Soni 7 년 전
부모
커밋
ee5d1ad681
1개의 변경된 파일18개의 추가작업 그리고 3개의 파일을 삭제
  1. 18 3
      core/wma/src/wma_dev_if.c

+ 18 - 3
core/wma/src/wma_dev_if.c

@@ -1404,6 +1404,8 @@ void wma_remove_peer(tp_wma_handle wma, uint8_t *bssid,
 	struct peer_flush_params param = {0};
 	uint8_t *peer_mac_addr;
 	void *soc = cds_get_context(QDF_MODULE_ID_SOC);
+	void *pdev = cds_get_context(QDF_MODULE_ID_TXRX);
+	void *vdev;
 	QDF_STATUS qdf_status;
 	uint32_t bitmap = 1 << CDP_PEER_DELETE_NO_SPECIAL;
 
@@ -1465,12 +1467,16 @@ peer_detach:
 	WMA_LOGE("%s: Remove peer %pK with peer_addr %pM vdevid %d peer_count %d",
 		 __func__, peer, bssid, vdev_id,
 		 wma->interfaces[vdev_id].peer_count);
-
+	vdev = cdp_get_vdev_from_vdev_id(soc, pdev, vdev_id);
 	if (peer) {
-		if (roam_synch_in_progress)
+		if (roam_synch_in_progress) {
 			cdp_peer_detach_force_delete(soc, peer);
-		else
+		} else {
 			cdp_peer_delete(soc, peer, bitmap);
+			WMA_LOGD("%s: vdev %p has detached peer:%p peer_addr %pM to vdev_id %d, peer_count - %d",
+				 __func__, vdev, peer, peer_mac_addr, vdev_id,
+				 wma->interfaces[vdev_id].peer_count);
+		}
 	}
 
 	wma->interfaces[vdev_id].peer_count--;
@@ -1580,6 +1586,9 @@ QDF_STATUS wma_create_peer(tp_wma_handle wma, struct cdp_pdev *pdev,
 		WMA_LOGE("%s : Unable to attach peer %pM", __func__, peer_addr);
 		goto err;
 	}
+	WMA_LOGD("%s: vdev %p has attached peer:%p peer_addr %pM to vdev_id %d, peer_count - %d",
+		 __func__, vdev, peer, peer_addr, vdev_id,
+		 wma->interfaces[vdev_id].peer_count);
 
 	if (roam_synch_in_progress) {
 		WMA_LOGI("%s: LFR3: Created peer %pK with peer_addr %pM vdev_id %d, peer_count - %d",
@@ -1595,6 +1604,9 @@ QDF_STATUS wma_create_peer(tp_wma_handle wma, struct cdp_pdev *pdev,
 		WMA_LOGE("%s : Unable to create peer in Target", __func__);
 		cdp_peer_delete(dp_soc, peer,
 				1 << CDP_PEER_DO_NOT_START_UNMAP_TIMER);
+		WMA_LOGD("%s: vdev %p has detached peer:%p peer_addr %pM to vdev_id %d, peer_count - %d",
+			 __func__, vdev, peer, peer_addr, vdev_id,
+			 wma->interfaces[vdev_id].peer_count);
 		goto err;
 	} else {
 		qdf_atomic_inc(&wma->interfaces[vdev_id].fw_peer_count);
@@ -5491,6 +5503,9 @@ void wma_delete_bss_ho_fail(tp_wma_handle wma, tpDeleteBssParams params)
 	if (peer)
 		cdp_peer_delete(soc, peer, 1 << CDP_PEER_DELETE_NO_SPECIAL);
 	iface->peer_count--;
+	WMA_LOGD("%s: vdev %p has detached peer:%p peer_addr %pM to vdev_id %d, peer_count - %d",
+		 __func__, txrx_vdev, peer, params->bssid, params->smesessionId,
+		iface->peer_count);
 	WMA_LOGI("%s: Removed peer %pK with peer_addr %pM vdevid %d peer_count %d",
 		 __func__, peer, params->bssid,  params->smesessionId,
 		 iface->peer_count);