qcacmn: Add cfg command to enable umac reset skeleton debug
Add cfg command to enable umac reset skeleton debug, which when enabled will skip post reset procedure handling. Change-Id: Ieca393e6292660bb3ada40408fd6e71ac78d0a1f CRs-Fixed: 3296960
This commit is contained in:

committed by
Madan Koyyalamudi

parent
238555b44c
commit
7dee89e9ec
@@ -1288,6 +1288,7 @@ enum cdp_pdev_param_type {
|
|||||||
* @cdp_psoc_param_vdev_stats_hw_offload: Configure HW vdev stats offload
|
* @cdp_psoc_param_vdev_stats_hw_offload: Configure HW vdev stats offload
|
||||||
* @cdp_pdev_param_undecoded_metadata_enable: Undecoded metadata capture enable
|
* @cdp_pdev_param_undecoded_metadata_enable: Undecoded metadata capture enable
|
||||||
* @cdp_vdev_param_traffic_end_ind: Traffic end indication enable/disable
|
* @cdp_vdev_param_traffic_end_ind: Traffic end indication enable/disable
|
||||||
|
* @cdp_skel_enable : Enable/Disable skeleton code for Umac reset debug
|
||||||
*/
|
*/
|
||||||
typedef union cdp_config_param_t {
|
typedef union cdp_config_param_t {
|
||||||
/* peer params */
|
/* peer params */
|
||||||
@@ -1374,6 +1375,7 @@ typedef union cdp_config_param_t {
|
|||||||
bool cdp_sawf_enabled;
|
bool cdp_sawf_enabled;
|
||||||
bool cdp_drop_3addr_mcast;
|
bool cdp_drop_3addr_mcast;
|
||||||
bool cdp_vdev_param_traffic_end_ind;
|
bool cdp_vdev_param_traffic_end_ind;
|
||||||
|
bool cdp_umac_rst_skel;
|
||||||
} cdp_config_param_type;
|
} cdp_config_param_type;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1510,6 +1512,7 @@ enum cdp_vdev_param_type {
|
|||||||
* @CDP_CFG_PEER_EXT_STATS: Peer extended stats mode.
|
* @CDP_CFG_PEER_EXT_STATS: Peer extended stats mode.
|
||||||
* @CDP_IPA_ENABLE : set IPA enable mode.
|
* @CDP_IPA_ENABLE : set IPA enable mode.
|
||||||
* @CDP_CFG_VDEV_STATS_HW_OFFLOAD: HW Vdev stats config
|
* @CDP_CFG_VDEV_STATS_HW_OFFLOAD: HW Vdev stats config
|
||||||
|
* @CDP_UMAC_RST_SKEL_ENABLE: Enable Umac reset skeleton code for debug
|
||||||
*/
|
*/
|
||||||
enum cdp_psoc_param_type {
|
enum cdp_psoc_param_type {
|
||||||
CDP_ENABLE_RATE_STATS,
|
CDP_ENABLE_RATE_STATS,
|
||||||
@@ -1519,6 +1522,7 @@ enum cdp_psoc_param_type {
|
|||||||
CDP_IPA_ENABLE,
|
CDP_IPA_ENABLE,
|
||||||
CDP_CFG_VDEV_STATS_HW_OFFLOAD,
|
CDP_CFG_VDEV_STATS_HW_OFFLOAD,
|
||||||
CDP_SAWF_ENABLE,
|
CDP_SAWF_ENABLE,
|
||||||
|
CDP_UMAC_RST_SKEL_ENABLE,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define TXRX_FW_STATS_TXSTATS 1
|
#define TXRX_FW_STATS_TXSTATS 1
|
||||||
|
@@ -10063,6 +10063,42 @@ static void dp_txrx_stats_help(void)
|
|||||||
dp_info(" 37 -- Host SRNG usage watermark stats");
|
dp_info(" 37 -- Host SRNG usage watermark stats");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef DP_UMAC_HW_RESET_SUPPORT
|
||||||
|
/**
|
||||||
|
* dp_umac_rst_skel_enable_update(): Update skel dbg flag for umac reset
|
||||||
|
* @soc: dp soc handle
|
||||||
|
* @en: ebable/disable
|
||||||
|
*
|
||||||
|
* Return: void
|
||||||
|
*/
|
||||||
|
static void dp_umac_rst_skel_enable_update(struct dp_soc *soc, bool en)
|
||||||
|
{
|
||||||
|
soc->umac_reset_ctx.skel_enable = en;
|
||||||
|
dp_cdp_debug("UMAC HW reset debug skelton code enabled :%u",
|
||||||
|
soc->umac_reset_ctx.skel_enable);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* dp_umac_rst_skel_enable_get(): Get skel dbg flag for umac reset
|
||||||
|
* @soc: dp soc handle
|
||||||
|
*
|
||||||
|
* Return: enable/disable flag
|
||||||
|
*/
|
||||||
|
static bool dp_umac_rst_skel_enable_get(struct dp_soc *soc)
|
||||||
|
{
|
||||||
|
return soc->umac_reset_ctx.skel_enable;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static void dp_umac_rst_skel_enable_update(struct dp_soc *soc, bool en)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool dp_umac_rst_skel_enable_get(struct dp_soc *soc)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* dp_print_host_stats()- Function to print the stats aggregated at host
|
* dp_print_host_stats()- Function to print the stats aggregated at host
|
||||||
* @vdev_handle: DP_VDEV handle
|
* @vdev_handle: DP_VDEV handle
|
||||||
@@ -10953,6 +10989,9 @@ dp_set_psoc_param(struct cdp_soc_t *cdp_soc,
|
|||||||
case CDP_SAWF_ENABLE:
|
case CDP_SAWF_ENABLE:
|
||||||
wlan_cfg_set_sawf_config(wlan_cfg_ctx, val.cdp_sawf_enabled);
|
wlan_cfg_set_sawf_config(wlan_cfg_ctx, val.cdp_sawf_enabled);
|
||||||
break;
|
break;
|
||||||
|
case CDP_UMAC_RST_SKEL_ENABLE:
|
||||||
|
dp_umac_rst_skel_enable_update(soc, val.cdp_umac_rst_skel);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -10986,6 +11025,9 @@ static QDF_STATUS dp_get_psoc_param(struct cdp_soc_t *cdp_soc,
|
|||||||
val->cdp_psoc_param_vdev_stats_hw_offload =
|
val->cdp_psoc_param_vdev_stats_hw_offload =
|
||||||
wlan_cfg_get_vdev_stats_hw_offload_config(soc->wlan_cfg_ctx);
|
wlan_cfg_get_vdev_stats_hw_offload_config(soc->wlan_cfg_ctx);
|
||||||
break;
|
break;
|
||||||
|
case CDP_UMAC_RST_SKEL_ENABLE:
|
||||||
|
val->cdp_umac_rst_skel = dp_umac_rst_skel_enable_get(soc);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
dp_warn("Invalid param");
|
dp_warn("Invalid param");
|
||||||
break;
|
break;
|
||||||
@@ -13426,19 +13468,21 @@ static QDF_STATUS dp_umac_reset_handle_pre_reset(struct dp_soc *soc)
|
|||||||
*/
|
*/
|
||||||
static QDF_STATUS dp_umac_reset_handle_post_reset(struct dp_soc *soc)
|
static QDF_STATUS dp_umac_reset_handle_post_reset(struct dp_soc *soc)
|
||||||
{
|
{
|
||||||
qdf_nbuf_t *nbuf_list = &soc->umac_reset_ctx.nbuf_list;
|
if (!soc->umac_reset_ctx.skel_enable) {
|
||||||
|
qdf_nbuf_t *nbuf_list = &soc->umac_reset_ctx.nbuf_list;
|
||||||
|
|
||||||
dp_set_umac_regs(soc);
|
dp_set_umac_regs(soc);
|
||||||
|
|
||||||
dp_reinit_rings(soc);
|
dp_reinit_rings(soc);
|
||||||
|
|
||||||
dp_rx_desc_reuse(soc, nbuf_list);
|
dp_rx_desc_reuse(soc, nbuf_list);
|
||||||
|
|
||||||
dp_cleanup_reo_cmd_module(soc);
|
dp_cleanup_reo_cmd_module(soc);
|
||||||
|
|
||||||
dp_tx_desc_pool_cleanup(soc, nbuf_list);
|
dp_tx_desc_pool_cleanup(soc, nbuf_list);
|
||||||
|
|
||||||
dp_reset_tid_q_setup(soc);
|
dp_reset_tid_q_setup(soc);
|
||||||
|
}
|
||||||
|
|
||||||
return dp_umac_reset_notify_action_completion(soc,
|
return dp_umac_reset_notify_action_completion(soc,
|
||||||
UMAC_RESET_ACTION_DO_POST_RESET_START);
|
UMAC_RESET_ACTION_DO_POST_RESET_START);
|
||||||
|
@@ -136,6 +136,7 @@ struct umac_reset_rx_actions {
|
|||||||
* @rx_actions: callbacks for handling UMAC reset actions
|
* @rx_actions: callbacks for handling UMAC reset actions
|
||||||
* @intr_ctx_bkp: DP Interrupts ring masks backup
|
* @intr_ctx_bkp: DP Interrupts ring masks backup
|
||||||
* @nbuf_list: skb list for delayed free
|
* @nbuf_list: skb list for delayed free
|
||||||
|
* @skel_enable: Enable skeleton code for umac reset
|
||||||
*/
|
*/
|
||||||
struct dp_soc_umac_reset_ctx {
|
struct dp_soc_umac_reset_ctx {
|
||||||
qdf_dma_addr_t shmem_paddr_unaligned;
|
qdf_dma_addr_t shmem_paddr_unaligned;
|
||||||
@@ -149,6 +150,7 @@ struct dp_soc_umac_reset_ctx {
|
|||||||
struct umac_reset_rx_actions rx_actions;
|
struct umac_reset_rx_actions rx_actions;
|
||||||
struct dp_intr_bkp *intr_ctx_bkp;
|
struct dp_intr_bkp *intr_ctx_bkp;
|
||||||
qdf_nbuf_t nbuf_list;
|
qdf_nbuf_t nbuf_list;
|
||||||
|
bool skel_enable;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user