From a6d77e7dbda6b17e8d5a0d5e53b35d4bd8129a1d Mon Sep 17 00:00:00 2001 From: Hariharan Basuthkar Date: Mon, 10 Feb 2020 20:14:09 +0530 Subject: [PATCH] qcacmn: Start Host wait timer and then send radar_params to FW When radar is detected on a channel and the radar parameters are sent to FW, the Host Wait Timer expires even though the action status is received from FW. At this point, the VAP state machine sends a multivdev restart on the target channel, and is in restart progress substate. Since the Host Timer expires due to some reason, radar detect event is posted to vdev state machine, that is currently in restart progress state and, this causes a target assert and leads to kernel panic. This issue is solved by the following 2 ways: 1) Start the host wait timer first, and then send the radar found params to the target. 2) Check if dfs_is_host_wait_running is true, in the Host Wait Timer's timeout, and only then call the radar_found_action_generic API. Change-Id: I9b93c7c1822966f7d6bc00c00229849fdb5627d9 CRs-Fixed: 2604173 --- umac/dfs/core/src/filtering/dfs_partial_offload_radar.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/umac/dfs/core/src/filtering/dfs_partial_offload_radar.c b/umac/dfs/core/src/filtering/dfs_partial_offload_radar.c index 83ad0b375382..24f7dbc3fcf2 100644 --- a/umac/dfs/core/src/filtering/dfs_partial_offload_radar.c +++ b/umac/dfs/core/src/filtering/dfs_partial_offload_radar.c @@ -646,13 +646,13 @@ void dfs_radarfound_action_fcc(struct wlan_dfs *dfs, uint8_t seg_id) qdf_mem_copy(&dfs->dfs_radar_found_chan, dfs->dfs_curchan, sizeof(dfs->dfs_radar_found_chan)); dfs_extract_radar_found_params(dfs, ¶ms); - dfs_send_avg_params_to_fw(dfs, ¶ms); dfs->dfs_is_host_wait_running = 1; - dfs->dfs_seg_id = seg_id; qdf_timer_mod(&dfs->dfs_host_wait_timer, (dfs->dfs_status_timeout_override == -1) ? HOST_DFS_STATUS_WAIT_TIMER_MS : dfs->dfs_status_timeout_override); + dfs->dfs_seg_id = seg_id; + dfs_send_avg_params_to_fw(dfs, ¶ms); } void dfs_host_wait_timer_reset(struct wlan_dfs *dfs)