qcacmn: Remove freed DP structures from minidump
Remove entries previously added to minidump during
data-path detach.
Change-Id: Ib69803e8ea58e5b4e0f045d3037730a5b6700c8d
diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c
index 914eea9..7f23f89 100644
--- a/dp/wifi3.0/dp_main.c
+++ b/dp/wifi3.0/dp_main.c
@@ -2091,8 +2091,11 @@
FL("Link descriptor memory alloc failed"));
goto fail;
}
- qdf_minidump_log((void *)(soc->link_desc_banks[i].base_vaddr),
- soc->link_desc_banks[i].size, "link_desc_bank");
+ if (!dp_is_soc_reinit(soc)) {
+ qdf_minidump_log(soc->link_desc_banks[i].base_vaddr,
+ soc->link_desc_banks[i].size,
+ "link_desc_bank");
+ }
}
if (last_bank_size) {
@@ -2123,8 +2126,11 @@
(unsigned long)(
soc->link_desc_banks[i].base_vaddr_unaligned));
- qdf_minidump_log((void *)(soc->link_desc_banks[i].base_vaddr),
- soc->link_desc_banks[i].size, "link_desc_bank");
+ if (!dp_is_soc_reinit(soc)) {
+ qdf_minidump_log(soc->link_desc_banks[i].base_vaddr,
+ soc->link_desc_banks[i].size,
+ "link_desc_bank");
+ }
}
@@ -2142,10 +2148,9 @@
goto fail;
}
- qdf_minidump_log(
- (void *)(soc->wbm_idle_link_ring.base_vaddr_unaligned),
- soc->wbm_idle_link_ring.alloc_size,
- "wbm_idle_link_ring");
+ qdf_minidump_log(soc->wbm_idle_link_ring.base_vaddr_unaligned,
+ soc->wbm_idle_link_ring.alloc_size,
+ "wbm_idle_link_ring");
hal_srng_access_start_unlocked(soc->hal_soc,
soc->wbm_idle_link_ring.hal_srng);
@@ -2304,6 +2309,8 @@
int i;
if (soc->wbm_idle_link_ring.hal_srng) {
+ qdf_minidump_remove(
+ soc->wbm_idle_link_ring.base_vaddr_unaligned);
dp_srng_cleanup(soc, &soc->wbm_idle_link_ring,
WBM_IDLE_LINK, 0);
}
@@ -2320,6 +2327,7 @@
for (i = 0; i < MAX_LINK_DESC_BANKS; i++) {
if (soc->link_desc_banks[i].base_vaddr_unaligned) {
+ qdf_minidump_remove(soc->link_desc_banks[i].base_vaddr);
qdf_mem_free_consistent(soc->osdev, soc->osdev->dev,
soc->link_desc_banks[i].size,
soc->link_desc_banks[i].base_vaddr_unaligned,
@@ -2756,9 +2764,9 @@
goto fail1;
}
- qdf_minidump_log(
- (void *)(soc->wbm_desc_rel_ring.base_vaddr_unaligned),
- soc->wbm_desc_rel_ring.alloc_size, "wbm_desc_rel_ring");
+ qdf_minidump_log(soc->wbm_desc_rel_ring.base_vaddr_unaligned,
+ soc->wbm_desc_rel_ring.alloc_size,
+ "wbm_desc_rel_ring");
soc->num_tcl_data_rings = 0;
/* Tx data rings */
@@ -3379,17 +3387,18 @@
struct dp_soc *soc = (struct dp_soc *)txrx_soc;
struct dp_pdev *pdev = NULL;
- if (dp_is_soc_reinit(soc))
+ if (dp_is_soc_reinit(soc)) {
pdev = soc->pdev_list[pdev_id];
- else
+ } else {
pdev = qdf_mem_malloc(sizeof(*pdev));
+ qdf_minidump_log(pdev, sizeof(*pdev), "dp_pdev");
+ }
if (!pdev) {
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR,
FL("DP PDEV memory allocation failed"));
goto fail0;
}
- qdf_minidump_log((void *)pdev, sizeof(*pdev), "dp_pdev");
/*
* Variable to prevent double pdev deinitialization during
@@ -3940,6 +3949,7 @@
}
soc->pdev_list[pdev->pdev_id] = NULL;
+ qdf_minidump_remove(pdev);
qdf_mem_free(pdev);
}
@@ -4135,6 +4145,7 @@
/* Free the ring memories */
/* Common rings */
+ qdf_minidump_remove(soc->wbm_desc_rel_ring.base_vaddr_unaligned);
dp_srng_cleanup(soc, &soc->wbm_desc_rel_ring, SW2WBM_RELEASE, 0);
dp_tx_soc_detach(soc);
@@ -4188,6 +4199,7 @@
wlan_cfg_soc_detach(soc->wlan_cfg_ctx);
+ qdf_minidump_remove(soc);
qdf_mem_free(soc);
}
@@ -4543,7 +4555,7 @@
/* initialize work queue for stats processing */
qdf_create_work(0, &soc->htt_stats.work, htt_t2h_stats_handler, soc);
- qdf_minidump_log((void *)soc, sizeof(*soc), "dp_soc");
+ qdf_minidump_log(soc, sizeof(*soc), "dp_soc");
return QDF_STATUS_SUCCESS;
}
diff --git a/hal/wifi3.0/hal_srng.c b/hal/wifi3.0/hal_srng.c
index a49f4fd..9fe5101 100644
--- a/hal/wifi3.0/hal_srng.c
+++ b/hal/wifi3.0/hal_srng.c
@@ -300,7 +300,7 @@
"%s: hal_soc allocation failed", __func__);
goto fail0;
}
- qdf_minidump_log((void *)hal, sizeof(*hal), "hal_soc");
+ qdf_minidump_log(hal, sizeof(*hal), "hal_soc");
hal->hif_handle = hif_handle;
hal->dev_base_addr = hif_get_dev_ba(hif_handle);
hal->qdf_dev = qdf_dev;
@@ -393,6 +393,7 @@
qdf_mem_free_consistent(hal->qdf_dev, hal->qdf_dev->dev,
sizeof(*(hal->shadow_wrptr_mem_vaddr)) * HAL_MAX_LMAC_RINGS,
hal->shadow_wrptr_mem_vaddr, hal->shadow_wrptr_mem_paddr, 0);
+ qdf_minidump_remove(hal);
qdf_mem_free(hal);
return;