|
@@ -56,6 +56,7 @@
|
|
#ifdef WIFI_MONITOR_SUPPORT
|
|
#ifdef WIFI_MONITOR_SUPPORT
|
|
#include <dp_mon.h>
|
|
#include <dp_mon.h>
|
|
#endif
|
|
#endif
|
|
|
|
+#include "qdf_ssr_driver_dump.h"
|
|
|
|
|
|
#ifdef WLAN_FEATURE_STATS_EXT
|
|
#ifdef WLAN_FEATURE_STATS_EXT
|
|
#define INIT_RX_HW_STATS_LOCK(_soc) \
|
|
#define INIT_RX_HW_STATS_LOCK(_soc) \
|
|
@@ -2016,6 +2017,9 @@ static void dp_deinit_tx_pair_by_index(struct dp_soc *soc, int index)
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ dp_ssr_dump_srng_unregister("tcl_data_ring", index);
|
|
|
|
+ dp_ssr_dump_srng_unregister("tx_comp_ring", index);
|
|
|
|
+
|
|
wlan_minidump_remove(soc->tcl_data_ring[index].base_vaddr_unaligned,
|
|
wlan_minidump_remove(soc->tcl_data_ring[index].base_vaddr_unaligned,
|
|
soc->tcl_data_ring[index].alloc_size,
|
|
soc->tcl_data_ring[index].alloc_size,
|
|
soc->ctrl_psoc,
|
|
soc->ctrl_psoc,
|
|
@@ -2088,6 +2092,11 @@ static QDF_STATUS dp_init_tx_ring_pair_by_index(struct dp_soc *soc,
|
|
goto fail1;
|
|
goto fail1;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ dp_ssr_dump_srng_register("tcl_data_ring",
|
|
|
|
+ &soc->tcl_data_ring[index], index);
|
|
|
|
+ dp_ssr_dump_srng_register("tx_comp_ring",
|
|
|
|
+ &soc->tx_comp_ring[index], index);
|
|
|
|
+
|
|
wlan_minidump_log(soc->tx_comp_ring[index].base_vaddr_unaligned,
|
|
wlan_minidump_log(soc->tx_comp_ring[index].base_vaddr_unaligned,
|
|
soc->tx_comp_ring[index].alloc_size,
|
|
soc->tx_comp_ring[index].alloc_size,
|
|
soc->ctrl_psoc,
|
|
soc->ctrl_psoc,
|
|
@@ -3736,6 +3745,7 @@ void dp_soc_srng_deinit(struct dp_soc *soc)
|
|
soc->ctrl_psoc, WLAN_MD_DP_SRNG_WBM_DESC_REL,
|
|
soc->ctrl_psoc, WLAN_MD_DP_SRNG_WBM_DESC_REL,
|
|
"wbm_desc_rel_ring");
|
|
"wbm_desc_rel_ring");
|
|
dp_srng_deinit(soc, &soc->wbm_desc_rel_ring, SW2WBM_RELEASE, 0);
|
|
dp_srng_deinit(soc, &soc->wbm_desc_rel_ring, SW2WBM_RELEASE, 0);
|
|
|
|
+ dp_ssr_dump_srng_unregister("wbm_desc_rel_ring", -1);
|
|
|
|
|
|
/* Tx data rings */
|
|
/* Tx data rings */
|
|
for (i = 0; i < soc->num_tcl_data_rings; i++)
|
|
for (i = 0; i < soc->num_tcl_data_rings; i++)
|
|
@@ -3754,6 +3764,7 @@ void dp_soc_srng_deinit(struct dp_soc *soc)
|
|
/* TODO: Get number of rings and ring sizes
|
|
/* TODO: Get number of rings and ring sizes
|
|
* from wlan_cfg
|
|
* from wlan_cfg
|
|
*/
|
|
*/
|
|
|
|
+ dp_ssr_dump_srng_unregister("reo_dest_ring", i);
|
|
wlan_minidump_remove(soc->reo_dest_ring[i].base_vaddr_unaligned,
|
|
wlan_minidump_remove(soc->reo_dest_ring[i].base_vaddr_unaligned,
|
|
soc->reo_dest_ring[i].alloc_size,
|
|
soc->reo_dest_ring[i].alloc_size,
|
|
soc->ctrl_psoc, WLAN_MD_DP_SRNG_REO_DEST,
|
|
soc->ctrl_psoc, WLAN_MD_DP_SRNG_REO_DEST,
|
|
@@ -3761,6 +3772,7 @@ void dp_soc_srng_deinit(struct dp_soc *soc)
|
|
dp_srng_deinit(soc, &soc->reo_dest_ring[i], REO_DST, i);
|
|
dp_srng_deinit(soc, &soc->reo_dest_ring[i], REO_DST, i);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ dp_ssr_dump_srng_unregister("reo_reinject_ring", -1);
|
|
/* REO reinjection ring */
|
|
/* REO reinjection ring */
|
|
wlan_minidump_remove(soc->reo_reinject_ring.base_vaddr_unaligned,
|
|
wlan_minidump_remove(soc->reo_reinject_ring.base_vaddr_unaligned,
|
|
soc->reo_reinject_ring.alloc_size,
|
|
soc->reo_reinject_ring.alloc_size,
|
|
@@ -3768,6 +3780,7 @@ void dp_soc_srng_deinit(struct dp_soc *soc)
|
|
"reo_reinject_ring");
|
|
"reo_reinject_ring");
|
|
dp_srng_deinit(soc, &soc->reo_reinject_ring, REO_REINJECT, 0);
|
|
dp_srng_deinit(soc, &soc->reo_reinject_ring, REO_REINJECT, 0);
|
|
|
|
|
|
|
|
+ dp_ssr_dump_srng_unregister("rx_rel_ring", -1);
|
|
/* Rx release ring */
|
|
/* Rx release ring */
|
|
wlan_minidump_remove(soc->rx_rel_ring.base_vaddr_unaligned,
|
|
wlan_minidump_remove(soc->rx_rel_ring.base_vaddr_unaligned,
|
|
soc->rx_rel_ring.alloc_size,
|
|
soc->rx_rel_ring.alloc_size,
|
|
@@ -3779,6 +3792,7 @@ void dp_soc_srng_deinit(struct dp_soc *soc)
|
|
/* TODO: Better to store ring_type and ring_num in
|
|
/* TODO: Better to store ring_type and ring_num in
|
|
* dp_srng during setup
|
|
* dp_srng during setup
|
|
*/
|
|
*/
|
|
|
|
+ dp_ssr_dump_srng_unregister("reo_exception_ring", -1);
|
|
wlan_minidump_remove(soc->reo_exception_ring.base_vaddr_unaligned,
|
|
wlan_minidump_remove(soc->reo_exception_ring.base_vaddr_unaligned,
|
|
soc->reo_exception_ring.alloc_size,
|
|
soc->reo_exception_ring.alloc_size,
|
|
soc->ctrl_psoc, WLAN_MD_DP_SRNG_REO_EXCEPTION,
|
|
soc->ctrl_psoc, WLAN_MD_DP_SRNG_REO_EXCEPTION,
|
|
@@ -3786,11 +3800,13 @@ void dp_soc_srng_deinit(struct dp_soc *soc)
|
|
dp_srng_deinit(soc, &soc->reo_exception_ring, REO_EXCEPTION, 0);
|
|
dp_srng_deinit(soc, &soc->reo_exception_ring, REO_EXCEPTION, 0);
|
|
|
|
|
|
/* REO command and status rings */
|
|
/* REO command and status rings */
|
|
|
|
+ dp_ssr_dump_srng_unregister("reo_cmd_ring", -1);
|
|
wlan_minidump_remove(soc->reo_cmd_ring.base_vaddr_unaligned,
|
|
wlan_minidump_remove(soc->reo_cmd_ring.base_vaddr_unaligned,
|
|
soc->reo_cmd_ring.alloc_size,
|
|
soc->reo_cmd_ring.alloc_size,
|
|
soc->ctrl_psoc, WLAN_MD_DP_SRNG_REO_CMD,
|
|
soc->ctrl_psoc, WLAN_MD_DP_SRNG_REO_CMD,
|
|
"reo_cmd_ring");
|
|
"reo_cmd_ring");
|
|
dp_srng_deinit(soc, &soc->reo_cmd_ring, REO_CMD, 0);
|
|
dp_srng_deinit(soc, &soc->reo_cmd_ring, REO_CMD, 0);
|
|
|
|
+ dp_ssr_dump_srng_unregister("reo_status_ring", -1);
|
|
wlan_minidump_remove(soc->reo_status_ring.base_vaddr_unaligned,
|
|
wlan_minidump_remove(soc->reo_status_ring.base_vaddr_unaligned,
|
|
soc->reo_status_ring.alloc_size,
|
|
soc->reo_status_ring.alloc_size,
|
|
soc->ctrl_psoc, WLAN_MD_DP_SRNG_REO_STATUS,
|
|
soc->ctrl_psoc, WLAN_MD_DP_SRNG_REO_STATUS,
|
|
@@ -3820,6 +3836,8 @@ QDF_STATUS dp_soc_srng_init(struct dp_soc *soc)
|
|
dp_init_err("%pK: dp_srng_init failed for wbm_desc_rel_ring", soc);
|
|
dp_init_err("%pK: dp_srng_init failed for wbm_desc_rel_ring", soc);
|
|
goto fail1;
|
|
goto fail1;
|
|
}
|
|
}
|
|
|
|
+ dp_ssr_dump_srng_register("wbm_desc_rel_ring",
|
|
|
|
+ &soc->wbm_desc_rel_ring, -1);
|
|
|
|
|
|
wlan_minidump_log(soc->wbm_desc_rel_ring.base_vaddr_unaligned,
|
|
wlan_minidump_log(soc->wbm_desc_rel_ring.base_vaddr_unaligned,
|
|
soc->wbm_desc_rel_ring.alloc_size,
|
|
soc->wbm_desc_rel_ring.alloc_size,
|
|
@@ -3843,6 +3861,8 @@ QDF_STATUS dp_soc_srng_init(struct dp_soc *soc)
|
|
dp_init_err("%pK: dp_srng_init failed for reo_reinject_ring", soc);
|
|
dp_init_err("%pK: dp_srng_init failed for reo_reinject_ring", soc);
|
|
goto fail1;
|
|
goto fail1;
|
|
}
|
|
}
|
|
|
|
+ dp_ssr_dump_srng_register("reo_reinject_ring",
|
|
|
|
+ &soc->reo_reinject_ring, -1);
|
|
|
|
|
|
wlan_minidump_log(soc->reo_reinject_ring.base_vaddr_unaligned,
|
|
wlan_minidump_log(soc->reo_reinject_ring.base_vaddr_unaligned,
|
|
soc->reo_reinject_ring.alloc_size,
|
|
soc->reo_reinject_ring.alloc_size,
|
|
@@ -3857,6 +3877,7 @@ QDF_STATUS dp_soc_srng_init(struct dp_soc *soc)
|
|
dp_init_err("%pK: dp_srng_init failed for rx_rel_ring", soc);
|
|
dp_init_err("%pK: dp_srng_init failed for rx_rel_ring", soc);
|
|
goto fail1;
|
|
goto fail1;
|
|
}
|
|
}
|
|
|
|
+ dp_ssr_dump_srng_register("rx_rel_ring", &soc->rx_rel_ring, -1);
|
|
|
|
|
|
wlan_minidump_log(soc->rx_rel_ring.base_vaddr_unaligned,
|
|
wlan_minidump_log(soc->rx_rel_ring.base_vaddr_unaligned,
|
|
soc->rx_rel_ring.alloc_size,
|
|
soc->rx_rel_ring.alloc_size,
|
|
@@ -3870,6 +3891,8 @@ QDF_STATUS dp_soc_srng_init(struct dp_soc *soc)
|
|
dp_init_err("%pK: dp_srng_init failed - reo_exception", soc);
|
|
dp_init_err("%pK: dp_srng_init failed - reo_exception", soc);
|
|
goto fail1;
|
|
goto fail1;
|
|
}
|
|
}
|
|
|
|
+ dp_ssr_dump_srng_register("reo_exception_ring",
|
|
|
|
+ &soc->reo_exception_ring, -1);
|
|
|
|
|
|
wlan_minidump_log(soc->reo_exception_ring.base_vaddr_unaligned,
|
|
wlan_minidump_log(soc->reo_exception_ring.base_vaddr_unaligned,
|
|
soc->reo_exception_ring.alloc_size,
|
|
soc->reo_exception_ring.alloc_size,
|
|
@@ -3882,6 +3905,7 @@ QDF_STATUS dp_soc_srng_init(struct dp_soc *soc)
|
|
dp_init_err("%pK: dp_srng_init failed for reo_cmd_ring", soc);
|
|
dp_init_err("%pK: dp_srng_init failed for reo_cmd_ring", soc);
|
|
goto fail1;
|
|
goto fail1;
|
|
}
|
|
}
|
|
|
|
+ dp_ssr_dump_srng_register("reo_cmd_ring", &soc->reo_cmd_ring, -1);
|
|
|
|
|
|
wlan_minidump_log(soc->reo_cmd_ring.base_vaddr_unaligned,
|
|
wlan_minidump_log(soc->reo_cmd_ring.base_vaddr_unaligned,
|
|
soc->reo_cmd_ring.alloc_size,
|
|
soc->reo_cmd_ring.alloc_size,
|
|
@@ -3897,6 +3921,7 @@ QDF_STATUS dp_soc_srng_init(struct dp_soc *soc)
|
|
dp_init_err("%pK: dp_srng_init failed for reo_status_ring", soc);
|
|
dp_init_err("%pK: dp_srng_init failed for reo_status_ring", soc);
|
|
goto fail1;
|
|
goto fail1;
|
|
}
|
|
}
|
|
|
|
+ dp_ssr_dump_srng_register("reo_status_ring", &soc->reo_status_ring, -1);
|
|
|
|
|
|
wlan_minidump_log(soc->reo_status_ring.base_vaddr_unaligned,
|
|
wlan_minidump_log(soc->reo_status_ring.base_vaddr_unaligned,
|
|
soc->reo_status_ring.alloc_size,
|
|
soc->reo_status_ring.alloc_size,
|
|
@@ -3926,6 +3951,8 @@ QDF_STATUS dp_soc_srng_init(struct dp_soc *soc)
|
|
goto fail1;
|
|
goto fail1;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ dp_ssr_dump_srng_register("reo_dest_ring",
|
|
|
|
+ &soc->reo_dest_ring[i], i);
|
|
wlan_minidump_log(soc->reo_dest_ring[i].base_vaddr_unaligned,
|
|
wlan_minidump_log(soc->reo_dest_ring[i].base_vaddr_unaligned,
|
|
soc->reo_dest_ring[i].alloc_size,
|
|
soc->reo_dest_ring[i].alloc_size,
|
|
soc->ctrl_psoc,
|
|
soc->ctrl_psoc,
|