qcacmn: Enhancement in Minidump feature
Handle minidump logging using dynamic configurablity options. Data structures to be logged in minidump can be configured using internal INI file. Change-Id: I99f12b3f98c4a9c0e15c3e5d611019e6b8d0909a
This commit is contained in:
@@ -38,6 +38,7 @@
|
||||
#endif
|
||||
#include <cdp_txrx_handle.h>
|
||||
#include <wlan_cfg.h>
|
||||
#include <wlan_utility.h>
|
||||
#include "cdp_txrx_cmn_struct.h"
|
||||
#include "cdp_txrx_stats_struct.h"
|
||||
#include "cdp_txrx_cmn_reg.h"
|
||||
@@ -2167,11 +2168,11 @@ static int dp_hw_link_desc_pool_setup(struct dp_soc *soc)
|
||||
dp_err("Multi page alloc fail for hw link desc pool");
|
||||
goto fail_page_alloc;
|
||||
}
|
||||
qdf_minidump_log(
|
||||
(void *)(pages->dma_pages->page_v_addr_start),
|
||||
pages->num_pages *
|
||||
sizeof(struct qdf_mem_dma_page_t),
|
||||
"hw_link_desc_bank");
|
||||
wlan_minidump_log(pages->dma_pages->page_v_addr_start,
|
||||
pages->num_pages * pages->page_size,
|
||||
soc->ctrl_psoc,
|
||||
WLAN_MD_DP_SRNG_WBM_IDLE_LINK,
|
||||
"hw_link_desc_bank");
|
||||
}
|
||||
|
||||
/* Allocate and setup link descriptor idle list for HW internal use */
|
||||
@@ -2188,9 +2189,11 @@ static int dp_hw_link_desc_pool_setup(struct dp_soc *soc)
|
||||
goto fail;
|
||||
}
|
||||
|
||||
qdf_minidump_log(soc->wbm_idle_link_ring.base_vaddr_unaligned,
|
||||
soc->wbm_idle_link_ring.alloc_size,
|
||||
"wbm_idle_link_ring");
|
||||
wlan_minidump_log(soc->wbm_idle_link_ring.base_vaddr_unaligned,
|
||||
soc->wbm_idle_link_ring.alloc_size,
|
||||
soc->ctrl_psoc,
|
||||
WLAN_MD_DP_SRNG_WBM_IDLE_LINK,
|
||||
"wbm_idle_link_ring");
|
||||
|
||||
hal_srng_access_start_unlocked(soc->hal_soc,
|
||||
soc->wbm_idle_link_ring.hal_srng);
|
||||
@@ -2312,6 +2315,8 @@ static int dp_hw_link_desc_pool_setup(struct dp_soc *soc)
|
||||
|
||||
fail:
|
||||
if (soc->wbm_idle_link_ring.hal_srng) {
|
||||
wlan_minidump_remove(
|
||||
soc->wbm_idle_link_ring.base_vaddr_unaligned);
|
||||
dp_srng_cleanup(soc, &soc->wbm_idle_link_ring,
|
||||
WBM_IDLE_LINK, 0);
|
||||
}
|
||||
@@ -2346,7 +2351,7 @@ static void dp_hw_link_desc_pool_cleanup(struct dp_soc *soc)
|
||||
struct qdf_mem_multi_page_t *pages;
|
||||
|
||||
if (soc->wbm_idle_link_ring.hal_srng) {
|
||||
qdf_minidump_remove(
|
||||
wlan_minidump_remove(
|
||||
soc->wbm_idle_link_ring.base_vaddr_unaligned);
|
||||
dp_srng_cleanup(soc, &soc->wbm_idle_link_ring,
|
||||
WBM_IDLE_LINK, 0);
|
||||
@@ -2363,7 +2368,7 @@ static void dp_hw_link_desc_pool_cleanup(struct dp_soc *soc)
|
||||
}
|
||||
|
||||
pages = &soc->link_desc_pages;
|
||||
qdf_minidump_remove(
|
||||
wlan_minidump_remove(
|
||||
(void *)pages->dma_pages->page_v_addr_start);
|
||||
qdf_mem_multi_pages_free(soc->osdev,
|
||||
pages, 0, false);
|
||||
@@ -2837,6 +2842,11 @@ QDF_STATUS dp_setup_tx_ring_pair_by_index(struct dp_soc *soc, uint8_t index)
|
||||
dp_err("dp_srng_setup failed for tcl_data_ring");
|
||||
goto fail1;
|
||||
}
|
||||
wlan_minidump_log(soc->tcl_data_ring[index].base_vaddr_unaligned,
|
||||
soc->tcl_data_ring[index].alloc_size,
|
||||
soc->ctrl_psoc,
|
||||
WLAN_MD_DP_SRNG_TCL_DATA,
|
||||
"tcl_data_ring");
|
||||
|
||||
tx_comp_ring_size = wlan_cfg_tx_comp_ring_size(soc_cfg_ctx);
|
||||
/* Disable cached desc if NSS offload is enabled */
|
||||
@@ -2850,6 +2860,11 @@ QDF_STATUS dp_setup_tx_ring_pair_by_index(struct dp_soc *soc, uint8_t index)
|
||||
dp_err("dp_srng_setup failed for tx_comp_ring");
|
||||
goto fail1;
|
||||
}
|
||||
wlan_minidump_log(soc->tx_comp_ring[index].base_vaddr_unaligned,
|
||||
soc->tx_comp_ring[index].alloc_size,
|
||||
soc->ctrl_psoc,
|
||||
WLAN_MD_DP_SRNG_TX_COMP,
|
||||
"tcl_comp_ring");
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
|
||||
@@ -2896,9 +2911,11 @@ static int dp_soc_cmn_setup(struct dp_soc *soc)
|
||||
goto fail1;
|
||||
}
|
||||
|
||||
qdf_minidump_log(soc->wbm_desc_rel_ring.base_vaddr_unaligned,
|
||||
soc->wbm_desc_rel_ring.alloc_size,
|
||||
"wbm_desc_rel_ring");
|
||||
wlan_minidump_log(soc->wbm_desc_rel_ring.base_vaddr_unaligned,
|
||||
soc->wbm_desc_rel_ring.alloc_size,
|
||||
soc->ctrl_psoc,
|
||||
WLAN_MD_DP_SRNG_WBM_DESC_REL,
|
||||
"wbm_desc_rel_ring");
|
||||
|
||||
soc->num_tcl_data_rings = 0;
|
||||
/* Tx data rings */
|
||||
@@ -2939,6 +2956,11 @@ static int dp_soc_cmn_setup(struct dp_soc *soc)
|
||||
FL("dp_srng_setup failed for tcl_cmd_credit_ring."));
|
||||
goto fail2;
|
||||
}
|
||||
wlan_minidump_log(soc->tcl_cmd_credit_ring.base_vaddr_unaligned,
|
||||
soc->tcl_cmd_credit_ring.alloc_size,
|
||||
soc->ctrl_psoc,
|
||||
WLAN_MD_DP_SRNG_TCL_CMD,
|
||||
"tcl_cmd_credit_ring");
|
||||
|
||||
entries = wlan_cfg_get_dp_soc_tcl_status_ring_size(soc_cfg_ctx);
|
||||
if (dp_srng_setup(soc, &soc->tcl_status_ring, TCL_STATUS, 0, 0,
|
||||
@@ -2947,6 +2969,11 @@ static int dp_soc_cmn_setup(struct dp_soc *soc)
|
||||
FL("dp_srng_setup failed for tcl_status_ring"));
|
||||
goto fail2;
|
||||
}
|
||||
wlan_minidump_log(soc->tcl_status_ring.base_vaddr_unaligned,
|
||||
soc->tcl_status_ring.alloc_size,
|
||||
soc->ctrl_psoc,
|
||||
WLAN_MD_DP_SRNG_TCL_STATUS,
|
||||
"tcl_status_ring");
|
||||
|
||||
reo_dst_ring_size = wlan_cfg_get_reo_dst_ring_size(soc->wlan_cfg_ctx);
|
||||
|
||||
@@ -2975,6 +3002,12 @@ static int dp_soc_cmn_setup(struct dp_soc *soc)
|
||||
FL(RNG_ERR "reo_dest_ring [%d]"), i);
|
||||
goto fail2;
|
||||
}
|
||||
wlan_minidump_log(soc->reo_dest_ring[i].base_vaddr_unaligned,
|
||||
soc->reo_dest_ring[i].alloc_size,
|
||||
soc->ctrl_psoc,
|
||||
WLAN_MD_DP_SRNG_REO_DEST,
|
||||
"reo_dest_ring");
|
||||
|
||||
}
|
||||
} else {
|
||||
/* This will be incremented during per pdev ring setup */
|
||||
@@ -2993,6 +3026,12 @@ static int dp_soc_cmn_setup(struct dp_soc *soc)
|
||||
FL(RNG_ERR "rxdma_err_dst_ring"));
|
||||
goto fail2;
|
||||
}
|
||||
wlan_minidump_log(soc->rxdma_err_dst_ring[i].base_vaddr_unaligned,
|
||||
soc->rxdma_err_dst_ring[i].alloc_size,
|
||||
soc->ctrl_psoc,
|
||||
WLAN_MD_DP_SRNG_RXDMA_ERR_DST,
|
||||
"rxdma_err_dst");
|
||||
|
||||
}
|
||||
}
|
||||
/* TBD: call dp_rx_init to setup Rx SW descriptors */
|
||||
@@ -3005,7 +3044,11 @@ static int dp_soc_cmn_setup(struct dp_soc *soc)
|
||||
FL("dp_srng_setup failed for reo_reinject_ring"));
|
||||
goto fail2;
|
||||
}
|
||||
|
||||
wlan_minidump_log(soc->reo_reinject_ring.base_vaddr_unaligned,
|
||||
soc->reo_reinject_ring.alloc_size,
|
||||
soc->ctrl_psoc,
|
||||
WLAN_MD_DP_SRNG_REO_REINJECT,
|
||||
"reo_reinject_ring");
|
||||
|
||||
/* Rx release ring */
|
||||
if (dp_srng_setup(soc, &soc->rx_rel_ring, WBM2SW_RELEASE, 3, 0,
|
||||
@@ -3016,6 +3059,11 @@ static int dp_soc_cmn_setup(struct dp_soc *soc)
|
||||
goto fail2;
|
||||
}
|
||||
|
||||
wlan_minidump_log(soc->rx_rel_ring.base_vaddr_unaligned,
|
||||
soc->rx_rel_ring.alloc_size,
|
||||
soc->ctrl_psoc,
|
||||
WLAN_MD_DP_SRNG_RX_REL,
|
||||
"reo_release_ring");
|
||||
|
||||
/* Rx exception ring */
|
||||
entries = wlan_cfg_get_dp_soc_reo_exception_ring_size(soc_cfg_ctx);
|
||||
@@ -3026,6 +3074,11 @@ static int dp_soc_cmn_setup(struct dp_soc *soc)
|
||||
goto fail2;
|
||||
}
|
||||
|
||||
wlan_minidump_log(soc->reo_exception_ring.base_vaddr_unaligned,
|
||||
soc->reo_exception_ring.alloc_size,
|
||||
soc->ctrl_psoc,
|
||||
WLAN_MD_DP_SRNG_REO_EXCEPTION,
|
||||
"reo_exception_ring");
|
||||
|
||||
/* REO command and status rings */
|
||||
if (dp_srng_setup(soc, &soc->reo_cmd_ring, REO_CMD, 0, 0,
|
||||
@@ -3035,6 +3088,11 @@ static int dp_soc_cmn_setup(struct dp_soc *soc)
|
||||
FL("dp_srng_setup failed for reo_cmd_ring"));
|
||||
goto fail2;
|
||||
}
|
||||
wlan_minidump_log(soc->reo_cmd_ring.base_vaddr_unaligned,
|
||||
soc->reo_cmd_ring.alloc_size,
|
||||
soc->ctrl_psoc,
|
||||
WLAN_MD_DP_SRNG_REO_CMD,
|
||||
"reo_cmd_ring");
|
||||
|
||||
hal_reo_init_cmd_ring(soc->hal_soc, soc->reo_cmd_ring.hal_srng);
|
||||
TAILQ_INIT(&soc->rx.reo_cmd_list);
|
||||
@@ -3047,6 +3105,11 @@ static int dp_soc_cmn_setup(struct dp_soc *soc)
|
||||
FL("dp_srng_setup failed for reo_status_ring"));
|
||||
goto fail2;
|
||||
}
|
||||
wlan_minidump_log(soc->reo_status_ring.base_vaddr_unaligned,
|
||||
soc->reo_status_ring.alloc_size,
|
||||
soc->ctrl_psoc,
|
||||
WLAN_MD_DP_SRNG_REO_STATUS,
|
||||
"reo_status_ring");
|
||||
|
||||
/*
|
||||
* Skip registering hw ring interrupts for WMAC2 on IPQ6018
|
||||
@@ -3381,6 +3444,11 @@ QDF_STATUS dp_mon_rings_setup(struct dp_soc *soc, struct dp_pdev *pdev)
|
||||
FL(RNG_ERR "rxdma_mon_buf_ring "));
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
}
|
||||
wlan_minidump_log(soc->rxdma_mon_buf_ring[lmac_id].base_vaddr_unaligned,
|
||||
soc->rxdma_mon_buf_ring[lmac_id].alloc_size,
|
||||
soc->ctrl_psoc,
|
||||
WLAN_MD_DP_SRNG_RXDMA_MON_BUF,
|
||||
"rxdma_mon_buf_ring");
|
||||
|
||||
entries =
|
||||
wlan_cfg_get_dma_mon_dest_ring_size(pdev_cfg_ctx);
|
||||
@@ -3393,6 +3461,11 @@ QDF_STATUS dp_mon_rings_setup(struct dp_soc *soc, struct dp_pdev *pdev)
|
||||
FL(RNG_ERR "rxdma_mon_dst_ring"));
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
}
|
||||
wlan_minidump_log(soc->rxdma_mon_dst_ring[lmac_id].base_vaddr_unaligned,
|
||||
soc->rxdma_mon_dst_ring[lmac_id].alloc_size,
|
||||
soc->ctrl_psoc,
|
||||
WLAN_MD_DP_SRNG_RXDMA_MON_DST,
|
||||
"rxdma_mon_dst");
|
||||
|
||||
entries =
|
||||
wlan_cfg_get_dma_mon_stat_ring_size(pdev_cfg_ctx);
|
||||
@@ -3405,6 +3478,11 @@ QDF_STATUS dp_mon_rings_setup(struct dp_soc *soc, struct dp_pdev *pdev)
|
||||
FL(RNG_ERR "rxdma_mon_status_ring"));
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
}
|
||||
wlan_minidump_log(soc->rxdma_mon_status_ring[lmac_id].base_vaddr_unaligned,
|
||||
soc->rxdma_mon_status_ring[lmac_id].alloc_size,
|
||||
soc->ctrl_psoc,
|
||||
WLAN_MD_DP_SRNG_RXDMA_MON_STATUS,
|
||||
"rxdma_mon_status");
|
||||
|
||||
entries =
|
||||
wlan_cfg_get_dma_mon_desc_ring_size(pdev_cfg_ctx);
|
||||
@@ -3417,6 +3495,12 @@ QDF_STATUS dp_mon_rings_setup(struct dp_soc *soc, struct dp_pdev *pdev)
|
||||
FL(RNG_ERR "rxdma_mon_desc_ring"));
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
}
|
||||
wlan_minidump_log(soc->rxdma_mon_desc_ring[lmac_id].base_vaddr_unaligned,
|
||||
soc->rxdma_mon_desc_ring[lmac_id].alloc_size,
|
||||
soc->ctrl_psoc,
|
||||
WLAN_MD_DP_SRNG_RXDMA_MON_DESC,
|
||||
"rxdma_mon_desc");
|
||||
|
||||
} else {
|
||||
entries =
|
||||
wlan_cfg_get_dma_mon_stat_ring_size(pdev_cfg_ctx);
|
||||
@@ -3429,6 +3513,11 @@ QDF_STATUS dp_mon_rings_setup(struct dp_soc *soc, struct dp_pdev *pdev)
|
||||
FL(RNG_ERR "rxdma_mon_status_ring"));
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
}
|
||||
wlan_minidump_log(soc->rxdma_mon_status_ring[lmac_id].base_vaddr_unaligned,
|
||||
soc->rxdma_mon_status_ring[lmac_id].alloc_size,
|
||||
soc->ctrl_psoc,
|
||||
WLAN_MD_DP_SRNG_RXDMA_MON_STATUS,
|
||||
"rxdma_mon_status_ring");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3515,7 +3604,10 @@ static inline QDF_STATUS dp_pdev_attach_wifi3(struct cdp_soc_t *txrx_soc,
|
||||
pdev = soc->pdev_list[pdev_id];
|
||||
} else {
|
||||
pdev = qdf_mem_malloc(sizeof(*pdev));
|
||||
qdf_minidump_log(pdev, sizeof(*pdev), "dp_pdev");
|
||||
wlan_minidump_log(pdev, sizeof(*pdev),
|
||||
soc->ctrl_psoc,
|
||||
WLAN_MD_DP_PDEV,
|
||||
"dp_pdev");
|
||||
}
|
||||
|
||||
if (!pdev) {
|
||||
@@ -3607,6 +3699,10 @@ static inline QDF_STATUS dp_pdev_attach_wifi3(struct cdp_soc_t *txrx_soc,
|
||||
ret = QDF_STATUS_E_FAILURE;
|
||||
goto fail1;
|
||||
}
|
||||
wlan_minidump_log(soc->tcl_data_ring[pdev_id].base_vaddr_unaligned,
|
||||
soc->tcl_data_ring[pdev_id].alloc_size,
|
||||
soc->ctrl_psoc,
|
||||
WLAN_MD_DP_SRNG_TCL_DATA, "tcl_data");
|
||||
|
||||
ring_size =
|
||||
wlan_cfg_tx_comp_ring_size(soc_cfg_ctx);
|
||||
@@ -3619,6 +3715,12 @@ static inline QDF_STATUS dp_pdev_attach_wifi3(struct cdp_soc_t *txrx_soc,
|
||||
ret = QDF_STATUS_E_FAILURE;
|
||||
goto fail1;
|
||||
}
|
||||
wlan_minidump_log(soc->tcl_data_ring[pdev_id].base_vaddr_unaligned,
|
||||
soc->tcl_data_ring[pdev_id].alloc_size,
|
||||
soc->ctrl_psoc,
|
||||
WLAN_MD_DP_SRNG_TX_COMP,
|
||||
"tcl_comp_ring");
|
||||
|
||||
soc->num_tcl_data_rings++;
|
||||
}
|
||||
|
||||
@@ -3640,6 +3742,12 @@ static inline QDF_STATUS dp_pdev_attach_wifi3(struct cdp_soc_t *txrx_soc,
|
||||
ret = QDF_STATUS_E_FAILURE;
|
||||
goto fail1;
|
||||
}
|
||||
wlan_minidump_log(soc->reo_dest_ring[pdev_id].base_vaddr_unaligned,
|
||||
soc->reo_dest_ring[pdev_id].alloc_size,
|
||||
soc->ctrl_psoc,
|
||||
WLAN_MD_DP_SRNG_REO_DEST,
|
||||
"reo_dest_ring");
|
||||
|
||||
soc->num_reo_dest_rings++;
|
||||
}
|
||||
|
||||
@@ -3679,6 +3787,12 @@ static inline QDF_STATUS dp_pdev_attach_wifi3(struct cdp_soc_t *txrx_soc,
|
||||
ret = QDF_STATUS_E_FAILURE;
|
||||
goto fail1;
|
||||
}
|
||||
wlan_minidump_log(soc->rxdma_err_dst_ring[pdev->lmac_id].base_vaddr_unaligned,
|
||||
soc->rxdma_err_dst_ring[pdev->lmac_id].alloc_size,
|
||||
soc->ctrl_psoc,
|
||||
WLAN_MD_DP_SRNG_RXDMA_ERR_DST,
|
||||
"rxdma_err_dst_ring");
|
||||
|
||||
}
|
||||
|
||||
if (dp_setup_ipa_rx_refill_buf_ring(soc, pdev)) {
|
||||
@@ -3886,30 +4000,37 @@ void dp_mon_ring_cleanup(struct dp_soc *soc, struct dp_pdev *pdev,
|
||||
int mac_id)
|
||||
{
|
||||
if (soc->wlan_cfg_ctx->rxdma1_enable) {
|
||||
wlan_minidump_remove(soc->rxdma_mon_buf_ring[mac_id].base_vaddr_unaligned);
|
||||
dp_srng_cleanup(soc,
|
||||
&soc->rxdma_mon_buf_ring[mac_id],
|
||||
RXDMA_MONITOR_BUF, 0);
|
||||
|
||||
wlan_minidump_remove(soc->rxdma_mon_dst_ring[mac_id].base_vaddr_unaligned);
|
||||
dp_srng_cleanup(soc,
|
||||
&soc->rxdma_mon_dst_ring[mac_id],
|
||||
RXDMA_MONITOR_DST, 0);
|
||||
|
||||
wlan_minidump_remove(soc->rxdma_mon_status_ring[mac_id].base_vaddr_unaligned);
|
||||
dp_srng_cleanup(soc,
|
||||
&soc->rxdma_mon_status_ring[mac_id],
|
||||
RXDMA_MONITOR_STATUS, 0);
|
||||
|
||||
wlan_minidump_remove(soc->rxdma_mon_desc_ring[mac_id].base_vaddr_unaligned);
|
||||
dp_srng_cleanup(soc,
|
||||
&soc->rxdma_mon_desc_ring[mac_id],
|
||||
RXDMA_MONITOR_DESC, 0);
|
||||
|
||||
wlan_minidump_remove(soc->rxdma_err_dst_ring[mac_id].base_vaddr_unaligned);
|
||||
dp_srng_cleanup(soc,
|
||||
&soc->rxdma_err_dst_ring[mac_id],
|
||||
RXDMA_DST, 0);
|
||||
} else {
|
||||
wlan_minidump_remove(soc->rxdma_mon_status_ring[mac_id].base_vaddr_unaligned);
|
||||
dp_srng_cleanup(soc,
|
||||
&soc->rxdma_mon_status_ring[mac_id],
|
||||
RXDMA_MONITOR_STATUS, 0);
|
||||
|
||||
wlan_minidump_remove(soc->rxdma_err_dst_ring[mac_id].base_vaddr_unaligned);
|
||||
dp_srng_cleanup(soc,
|
||||
&soc->rxdma_err_dst_ring[mac_id],
|
||||
RXDMA_DST, 0);
|
||||
@@ -4149,8 +4270,12 @@ static void dp_pdev_detach(struct cdp_pdev *txrx_pdev, int force)
|
||||
int lmac_id;
|
||||
|
||||
if (wlan_cfg_per_pdev_tx_ring(soc->wlan_cfg_ctx)) {
|
||||
wlan_minidump_remove(
|
||||
soc->tcl_data_ring[pdev->pdev_id].base_vaddr_unaligned);
|
||||
dp_srng_cleanup(soc, &soc->tcl_data_ring[pdev->pdev_id],
|
||||
TCL_DATA, pdev->pdev_id);
|
||||
wlan_minidump_remove(
|
||||
soc->tx_comp_ring[pdev->pdev_id].base_vaddr_unaligned);
|
||||
dp_srng_cleanup(soc, &soc->tx_comp_ring[pdev->pdev_id],
|
||||
WBM2SW_RELEASE, pdev->pdev_id);
|
||||
}
|
||||
@@ -4159,6 +4284,8 @@ static void dp_pdev_detach(struct cdp_pdev *txrx_pdev, int force)
|
||||
|
||||
/* Cleanup per PDEV REO rings if configured */
|
||||
if (wlan_cfg_per_pdev_rx_ring(soc->wlan_cfg_ctx)) {
|
||||
wlan_minidump_remove(
|
||||
soc->reo_dest_ring[pdev->pdev_id].base_vaddr_unaligned);
|
||||
dp_srng_cleanup(soc, &soc->reo_dest_ring[pdev->pdev_id],
|
||||
REO_DST, pdev->pdev_id);
|
||||
}
|
||||
@@ -4173,6 +4300,7 @@ static void dp_pdev_detach(struct cdp_pdev *txrx_pdev, int force)
|
||||
lmac_id =
|
||||
dp_get_lmac_id_for_pdev_id(soc, mac_id, pdev->pdev_id);
|
||||
dp_mon_ring_cleanup(soc, pdev, lmac_id);
|
||||
|
||||
dp_srng_cleanup(soc, &soc->rxdma_err_dst_ring[lmac_id],
|
||||
RXDMA_DST, 0);
|
||||
|
||||
@@ -4193,7 +4321,7 @@ static void dp_pdev_detach(struct cdp_pdev *txrx_pdev, int force)
|
||||
}
|
||||
|
||||
soc->pdev_list[pdev->pdev_id] = NULL;
|
||||
qdf_minidump_remove(pdev);
|
||||
wlan_minidump_remove(pdev);
|
||||
qdf_mem_free(pdev);
|
||||
}
|
||||
|
||||
@@ -4408,7 +4536,7 @@ static void dp_soc_detach(struct cdp_soc_t *txrx_soc)
|
||||
|
||||
/* Free the ring memories */
|
||||
/* Common rings */
|
||||
qdf_minidump_remove(soc->wbm_desc_rel_ring.base_vaddr_unaligned);
|
||||
wlan_minidump_remove(soc->wbm_desc_rel_ring.base_vaddr_unaligned);
|
||||
dp_srng_cleanup(soc, &soc->wbm_desc_rel_ring, SW2WBM_RELEASE, 0);
|
||||
|
||||
if (dp_is_soc_reinit(soc)) {
|
||||
@@ -4418,8 +4546,10 @@ static void dp_soc_detach(struct cdp_soc_t *txrx_soc)
|
||||
/* Tx data rings */
|
||||
if (!wlan_cfg_per_pdev_tx_ring(soc->wlan_cfg_ctx)) {
|
||||
for (i = 0; i < soc->num_tcl_data_rings; i++) {
|
||||
wlan_minidump_remove(soc->tcl_data_ring[i].base_vaddr_unaligned);
|
||||
dp_srng_cleanup(soc, &soc->tcl_data_ring[i],
|
||||
TCL_DATA, i);
|
||||
TCL_DATA, i);
|
||||
wlan_minidump_remove(soc->tx_comp_ring[i].base_vaddr_unaligned);
|
||||
dp_srng_cleanup(soc, &soc->tx_comp_ring[i],
|
||||
WBM2SW_RELEASE, i);
|
||||
}
|
||||
@@ -4432,8 +4562,10 @@ static void dp_soc_detach(struct cdp_soc_t *txrx_soc)
|
||||
}
|
||||
|
||||
/* TCL command/credit ring */
|
||||
wlan_minidump_remove(soc->tcl_cmd_credit_ring.base_vaddr_unaligned);
|
||||
dp_srng_cleanup(soc, &soc->tcl_cmd_credit_ring, TCL_CMD_CREDIT, 0);
|
||||
/* TCL status rings */
|
||||
wlan_minidump_remove(soc->tcl_status_ring.base_vaddr_unaligned);
|
||||
dp_srng_cleanup(soc, &soc->tcl_status_ring, TCL_STATUS, 0);
|
||||
|
||||
/* Rx data rings */
|
||||
@@ -4444,14 +4576,17 @@ static void dp_soc_detach(struct cdp_soc_t *txrx_soc)
|
||||
/* TODO: Get number of rings and ring sizes
|
||||
* from wlan_cfg
|
||||
*/
|
||||
wlan_minidump_remove(soc->reo_dest_ring[i].base_vaddr_unaligned);
|
||||
dp_srng_cleanup(soc, &soc->reo_dest_ring[i],
|
||||
REO_DST, i);
|
||||
}
|
||||
}
|
||||
/* REO reinjection ring */
|
||||
wlan_minidump_remove(soc->reo_reinject_ring.base_vaddr_unaligned);
|
||||
dp_srng_cleanup(soc, &soc->reo_reinject_ring, REO_REINJECT, 0);
|
||||
|
||||
/* Rx release ring */
|
||||
wlan_minidump_remove(soc->rx_rel_ring.base_vaddr_unaligned);
|
||||
dp_srng_cleanup(soc, &soc->rx_rel_ring, WBM2SW_RELEASE, 0);
|
||||
dp_srng_cleanup(soc, &soc->rx_rel_ring, WBM2SW_RELEASE, 3);
|
||||
|
||||
@@ -4459,10 +4594,13 @@ static void dp_soc_detach(struct cdp_soc_t *txrx_soc)
|
||||
/* TODO: Better to store ring_type and ring_num in
|
||||
* dp_srng during setup
|
||||
*/
|
||||
wlan_minidump_remove(soc->reo_exception_ring.base_vaddr_unaligned);
|
||||
dp_srng_cleanup(soc, &soc->reo_exception_ring, REO_EXCEPTION, 0);
|
||||
|
||||
/* REO command and status rings */
|
||||
wlan_minidump_remove(soc->reo_cmd_ring.base_vaddr_unaligned);
|
||||
dp_srng_cleanup(soc, &soc->reo_cmd_ring, REO_CMD, 0);
|
||||
wlan_minidump_remove(soc->reo_status_ring.base_vaddr_unaligned);
|
||||
dp_srng_cleanup(soc, &soc->reo_status_ring, REO_STATUS, 0);
|
||||
dp_hw_link_desc_pool_cleanup(soc);
|
||||
|
||||
@@ -4471,7 +4609,7 @@ static void dp_soc_detach(struct cdp_soc_t *txrx_soc)
|
||||
|
||||
wlan_cfg_soc_detach(soc->wlan_cfg_ctx);
|
||||
|
||||
qdf_minidump_remove(soc);
|
||||
wlan_minidump_remove(soc);
|
||||
qdf_mem_free(soc);
|
||||
}
|
||||
|
||||
@@ -4957,7 +5095,11 @@ dp_soc_attach_target_wifi3(struct cdp_soc_t *cdp_soc)
|
||||
/* initialize work queue for stats processing */
|
||||
qdf_create_work(0, &soc->htt_stats.work, htt_t2h_stats_handler, soc);
|
||||
|
||||
qdf_minidump_log(soc, sizeof(*soc), "dp_soc");
|
||||
wlan_minidump_log(soc,
|
||||
sizeof(*soc),
|
||||
soc->ctrl_psoc,
|
||||
WLAN_MD_DP_SOC,
|
||||
"dp_soc");
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
@@ -4991,7 +5133,11 @@ static QDF_STATUS dp_vdev_attach_wifi3(struct cdp_soc_t *cdp_soc,
|
||||
qdf_mem_free(vdev);
|
||||
goto fail0;
|
||||
}
|
||||
|
||||
wlan_minidump_log(vdev,
|
||||
sizeof(*vdev),
|
||||
soc->ctrl_psoc,
|
||||
WLAN_MD_DP_VDEV,
|
||||
"dp_vdev");
|
||||
if (!vdev) {
|
||||
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR,
|
||||
FL("DP VDEV memory allocation failed"));
|
||||
@@ -5556,7 +5702,10 @@ dp_peer_create_wifi3(struct cdp_soc_t *soc_hdl, uint8_t vdev_id,
|
||||
#else
|
||||
peer = (struct dp_peer *)qdf_mem_malloc(sizeof(*peer));
|
||||
#endif
|
||||
|
||||
wlan_minidump_log(peer,
|
||||
sizeof(*peer),
|
||||
soc->ctrl_psoc,
|
||||
WLAN_MD_DP_PEER, "dp_peer");
|
||||
if (!peer)
|
||||
return QDF_STATUS_E_FAILURE; /* failure */
|
||||
|
||||
@@ -6403,6 +6552,7 @@ void dp_peer_unref_delete(struct dp_peer *peer)
|
||||
*/
|
||||
qdf_spin_unlock_bh(&soc->peer_ref_mutex);
|
||||
|
||||
wlan_minidump_remove(peer);
|
||||
/*
|
||||
* Invoke soc.ol_ops->peer_unref_delete out of
|
||||
* peer_ref_mutex in case deadlock issue.
|
||||
|
Reference in New Issue
Block a user