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
This commit is contained in:

committed by
Rahul Choudhary

orang tua
0d36189af1
melakukan
7f898dfcc2
@@ -3963,6 +3963,29 @@ wlan_soc_tx_packet_inspect_attach(struct cdp_ctrl_objmgr_psoc *psoc,
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef DP_UMAC_HW_RESET_SUPPORT
|
||||
/**
|
||||
* wlan_soc_umac_reset_cfg_attach() - Update umac reset buffer window config
|
||||
* @psoc: object manager psoc
|
||||
* @wlan_cfg_ctx: dp soc cfg ctx
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
static void
|
||||
wlan_soc_umac_reset_cfg_attach(struct cdp_ctrl_objmgr_psoc *psoc,
|
||||
struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx)
|
||||
{
|
||||
wlan_cfg_ctx->umac_reset_buffer_window =
|
||||
cfg_get(psoc, CFG_DP_UMAC_RESET_BUFFER_WINDOW);
|
||||
}
|
||||
#else
|
||||
static void
|
||||
wlan_soc_umac_reset_cfg_attach(struct cdp_ctrl_objmgr_psoc *psoc,
|
||||
struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx)
|
||||
{
|
||||
}
|
||||
#endif /* DP_UMAC_HW_RESET_SUPPORT */
|
||||
|
||||
#ifdef WLAN_SOFTUMAC_SUPPORT
|
||||
struct wlan_cfg_dp_soc_ctxt *
|
||||
wlan_cfg_soc_attach(struct cdp_ctrl_objmgr_psoc *psoc)
|
||||
@@ -4137,6 +4160,7 @@ wlan_cfg_soc_attach(struct cdp_ctrl_objmgr_psoc *psoc)
|
||||
cfg_get(psoc, CFG_DP_TXMON_SW_PEER_FILTERING);
|
||||
wlan_soc_tx_packet_inspect_attach(psoc, wlan_cfg_ctx);
|
||||
wlan_soc_local_pkt_capture_cfg_attach(psoc, wlan_cfg_ctx);
|
||||
wlan_soc_umac_reset_cfg_attach(psoc, wlan_cfg_ctx);
|
||||
return wlan_cfg_ctx;
|
||||
}
|
||||
|
||||
@@ -4383,6 +4407,7 @@ wlan_cfg_soc_attach(struct cdp_ctrl_objmgr_psoc *psoc)
|
||||
wlan_soc_local_pkt_capture_cfg_attach(psoc, wlan_cfg_ctx);
|
||||
wlan_cfg_ctx->special_frame_msk =
|
||||
cfg_get(psoc, CFG_SPECIAL_FRAME_MSK);
|
||||
wlan_soc_umac_reset_cfg_attach(psoc, wlan_cfg_ctx);
|
||||
|
||||
return wlan_cfg_ctx;
|
||||
}
|
||||
@@ -5257,6 +5282,14 @@ wlan_cfg_get_rx_rings_mapping(struct wlan_cfg_dp_soc_ctxt *cfg)
|
||||
return cfg->rx_rings_mapping;
|
||||
}
|
||||
|
||||
#ifdef DP_UMAC_HW_RESET_SUPPORT
|
||||
uint32_t
|
||||
wlan_cfg_get_umac_reset_buffer_window_ms(struct wlan_cfg_dp_soc_ctxt *cfg)
|
||||
{
|
||||
return cfg->umac_reset_buffer_window;
|
||||
}
|
||||
#endif
|
||||
|
||||
bool
|
||||
wlan_cfg_get_dp_caps(struct wlan_cfg_dp_soc_ctxt *cfg,
|
||||
enum cdp_capabilities dp_caps)
|
||||
|
Reference in New Issue
Block a user