From a647c5e032163a7a6c0e827b27cb40773e025261 Mon Sep 17 00:00:00 2001 From: Vignesh Mohan Date: Wed, 26 Dec 2018 12:04:02 +0530 Subject: [PATCH] qcacmn: Reorder function calls when radar found during precac During Zerowait DFS, when radar is hit, the NOL IE element that is being sent to its uplink is prepared after the precac timer is turned off, which returns wrong center frequency information for secondary segment. This center frequency is used to built the list of subchannels to be sent to root, which in turn are all 0s. Reorder the function calls to prepare the IE before the precac timer is turned off when radar is found so that the list of subchannels are built properly. Change-Id: I74e800cbbeb3730c862a72ddbe8f78219592e343 CRs-Fixed: 2373036 --- .../src/misc/dfs_process_radar_found_ind.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/umac/dfs/core/src/misc/dfs_process_radar_found_ind.c b/umac/dfs/core/src/misc/dfs_process_radar_found_ind.c index 50cea79f754c..59876b27035c 100644 --- a/umac/dfs/core/src/misc/dfs_process_radar_found_ind.c +++ b/umac/dfs/core/src/misc/dfs_process_radar_found_ind.c @@ -772,6 +772,15 @@ QDF_STATUS dfs_process_radar_ind(struct wlan_dfs *dfs, "radar event received on invalid channel"); return status; } + dfs->dfs_is_nol_ie_sent = false; + (dfs->is_radar_during_precac) ? + (dfs->dfs_is_rcsa_ie_sent = false) : + (dfs->dfs_is_rcsa_ie_sent = true); + if (dfs->dfs_use_nol_subchannel_marking) { + dfs_prepare_nol_ie_bitmap(dfs, radar_found, channels, + num_channels); + dfs->dfs_is_nol_ie_sent = true; + } /* * If precac is running and the radar found in secondary @@ -808,15 +817,7 @@ QDF_STATUS dfs_process_radar_ind(struct wlan_dfs *dfs, * saying not to send RCSA, but only the radar affected subchannel * information. */ - dfs->dfs_is_nol_ie_sent = false; - (dfs->is_radar_during_precac) ? - (dfs->dfs_is_rcsa_ie_sent = false) : - (dfs->dfs_is_rcsa_ie_sent = true); - if (dfs->dfs_use_nol_subchannel_marking) { - dfs_prepare_nol_ie_bitmap(dfs, radar_found, channels, - num_channels); - dfs->dfs_is_nol_ie_sent = true; - } + dfs_mlme_start_rcsa(dfs->dfs_pdev_obj, &wait_for_csa); if (!dfs->dfs_is_offload_enabled &&