qcacmn: Add buffer window for umac reset in progress

When the peer delete timer/vdev manager response timer expires, host checks
if the umac reset is in progress. If so, host will retrigger the timer.
It is possible that the umac reset is just completed and either of these
two timers got expired. In this case, host will assert saying that the peer
delete response/vdev manager response is not received from FW. FW may take
a few milliseconds to send the peer delete/vdev manager response to the
host after the umac recovery completes.

Hence, to avoid the crash, check if the umac reset was in progress during
the umac reset buffer window.

Add the below changes as well,
1) INI support to get the umac reset buffer window value.
2) Renamed the API dp_umac_reset_is_inprogress as
   dp_get_umac_reset_in_progress_state to return either
   CDP_UMAC_RESET_IN_PROGRESS or
   CDP_UMAC_RESET_IN_PROGRESS_DURING_BUFFER_WINDOW.

Change-Id: Ie15ef0731bad4b0ed955a479f00e297b7ba10729
CRs-Fixed: 3522665
此提交包含在:
Shashikala Prabhu
2023-06-28 17:26:35 +05:30
提交者 Rahul Choudhary
父節點 0d36189af1
當前提交 7f898dfcc2
共有 9 個檔案被更改,包括 165 行新增23 行删除

查看文件

@@ -2825,12 +2825,14 @@ QDF_STATUS dp_mlo_umac_reset_stats_print(struct dp_soc *soc)
QDF_STATUS dp_umac_reset_notify_asserted_soc(struct dp_soc *soc);
/**
* dp_umac_reset_is_inprogress() - Check if umac reset is in progress
* dp_get_umac_reset_in_progress_state() - API to check umac reset in progress
* state
* @psoc: dp soc handle
*
* Return: true if umac reset is in progress, else false.
* Return: umac reset state
*/
bool dp_umac_reset_is_inprogress(struct cdp_soc_t *psoc);
enum cdp_umac_reset_state
dp_get_umac_reset_in_progress_state(struct cdp_soc_t *psoc);
#else
static inline
QDF_STATUS dp_umac_reset_notify_asserted_soc(struct dp_soc *soc)
@@ -2838,10 +2840,10 @@ QDF_STATUS dp_umac_reset_notify_asserted_soc(struct dp_soc *soc)
return QDF_STATUS_SUCCESS;
}
static inline
bool dp_umac_reset_is_inprogress(struct cdp_soc_t *psoc)
static inline enum cdp_umac_reset_state
dp_get_umac_reset_in_progress_state(struct cdp_soc_t *psoc)
{
return false;
return CDP_UMAC_RESET_NOT_IN_PROGRESS;
}
#endif