qcacmn: avoid FSE cache flush messages during runtime suspend
When runtime power management is enabled, until the system is fully resumed, we do not post any message to CE, instead they will be queued in HTC. Once the device is fully resumed, all HTT messages in the queues will be downloaded to CE at once. In some corner cases, it is found that too many FSE caches flush messages getting queued during the runtime resume; once the device is fully resumed, all these would be downloaded to the FW/HW at once causing unintended crashes. Avoid posting FSE cache flush messages until the device is fully resumed to fix the issue. Change-Id: I2be21406e8c7a9dcd86df3e93c2568797defcad0 CRs-Fixed: 2843541
Este commit está contenido en:

cometido por
snandini

padre
f3a732ed1c
commit
a5c11aabcb
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-2020 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and/or distribute this software for
|
* Permission to use, copy, modify, and/or distribute this software for
|
||||||
* any purpose with or without fee is hereby granted, provided that the
|
* any purpose with or without fee is hereby granted, provided that the
|
||||||
@@ -2328,12 +2328,20 @@ void dp_rx_dump_fisa_table(struct dp_soc *soc);
|
|||||||
*/
|
*/
|
||||||
void dp_rx_fst_update_cmem_params(struct dp_soc *soc, uint16_t num_entries,
|
void dp_rx_fst_update_cmem_params(struct dp_soc *soc, uint16_t num_entries,
|
||||||
uint32_t cmem_ba_lo, uint32_t cmem_ba_hi);
|
uint32_t cmem_ba_lo, uint32_t cmem_ba_hi);
|
||||||
|
|
||||||
|
void
|
||||||
|
dp_rx_fst_update_pm_suspend_status(struct dp_soc *soc, bool suspended);
|
||||||
#else
|
#else
|
||||||
static inline void
|
static inline void
|
||||||
dp_rx_fst_update_cmem_params(struct dp_soc *soc, uint16_t num_entries,
|
dp_rx_fst_update_cmem_params(struct dp_soc *soc, uint16_t num_entries,
|
||||||
uint32_t cmem_ba_lo, uint32_t cmem_ba_hi)
|
uint32_t cmem_ba_lo, uint32_t cmem_ba_hi)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
dp_rx_fst_update_pm_suspend_status(struct dp_soc *soc, bool suspended)
|
||||||
|
{
|
||||||
|
}
|
||||||
#endif /* WLAN_SUPPORT_RX_FISA */
|
#endif /* WLAN_SUPPORT_RX_FISA */
|
||||||
|
|
||||||
#ifdef MAX_ALLOC_PAGE_SIZE
|
#ifdef MAX_ALLOC_PAGE_SIZE
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-2020 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and/or distribute this software for
|
* Permission to use, copy, modify, and/or distribute this software for
|
||||||
* any purpose with or without fee is hereby granted, provided that the
|
* any purpose with or without fee is hereby granted, provided that the
|
||||||
@@ -11365,6 +11365,8 @@ static QDF_STATUS dp_runtime_suspend(struct cdp_soc_t *soc_hdl, uint8_t pdev_id)
|
|||||||
if (soc->intr_mode == DP_INTR_POLL)
|
if (soc->intr_mode == DP_INTR_POLL)
|
||||||
qdf_timer_stop(&soc->int_timer);
|
qdf_timer_stop(&soc->int_timer);
|
||||||
|
|
||||||
|
dp_rx_fst_update_pm_suspend_status(soc, true);
|
||||||
|
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -11412,6 +11414,7 @@ static QDF_STATUS dp_runtime_resume(struct cdp_soc_t *soc_hdl, uint8_t pdev_id)
|
|||||||
}
|
}
|
||||||
|
|
||||||
dp_flush_ring_hptp(soc, soc->reo_cmd_ring.hal_srng);
|
dp_flush_ring_hptp(soc, soc->reo_cmd_ring.hal_srng);
|
||||||
|
dp_rx_fst_update_pm_suspend_status(soc, false);
|
||||||
|
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2016-2020 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
|
||||||
*
|
*
|
||||||
* Permission to use, copy, modify, and/or distribute this software for
|
* Permission to use, copy, modify, and/or distribute this software for
|
||||||
* any purpose with or without fee is hereby granted, provided that the
|
* any purpose with or without fee is hereby granted, provided that the
|
||||||
@@ -3006,6 +3006,7 @@ struct dp_rx_fst {
|
|||||||
qdf_event_t cmem_resp_event;
|
qdf_event_t cmem_resp_event;
|
||||||
bool flow_deletion_supported;
|
bool flow_deletion_supported;
|
||||||
bool fst_in_cmem;
|
bool fst_in_cmem;
|
||||||
|
bool pm_suspended;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* WLAN_SUPPORT_RX_FISA */
|
#endif /* WLAN_SUPPORT_RX_FISA */
|
||||||
|
Referencia en una nueva incidencia
Block a user