Parcourir la source

qcacmn: Check CAC status on RCAC channel

In case of RCAC, check if CAC is completed only on the RCAC
channel and do not check the CAC info on current operating
channel.

After RCAC complete is sent to FW, the RCAC tree info is
cleared. In case of RCAC, check the CAC done info only
on RCAC channel.

CRs-Fixed: 3231140
Change-Id: I976b2b5e29ebdf2dc4fb2e5df1f2feb700c972af
Vijay Krishnan il y a 3 ans
Parent
commit
3452af5abe
1 fichiers modifiés avec 9 ajouts et 1 suppressions
  1. 9 1
      umac/dfs/core/src/misc/dfs_cac.c

+ 9 - 1
umac/dfs/core/src/misc/dfs_cac.c

@@ -467,6 +467,13 @@ bool dfs_is_cac_required(struct wlan_dfs *dfs,
 		return false;
 	}
 
+	/* In case of RCAC, check if CAC is completed only on the RCAC channel
+	 * and do not check the CAC info on current operating channel.
+	 */
+	if (dfs_is_agile_rcac_enabled(dfs) &&
+	    dfs_is_rcac_cac_done(dfs, cur_chan, prev_chan))
+		return false;
+
 	/* If the channel has completed PRE-CAC then CAC can be skipped here. */
 	if (dfs_is_precac_done(dfs, cur_chan)) {
 		dfs_debug(dfs, WLAN_DEBUG_DFS,
@@ -487,7 +494,8 @@ bool dfs_is_cac_required(struct wlan_dfs *dfs,
 		if (dfs_is_new_chan_subset_of_old_chan(dfs,
 						       cur_chan,
 						       cac_started_chan)) {
-			*continue_current_cac = true;
+			if (continue_current_cac)
+				*continue_current_cac = true;
 		} else {
 			/* New CAC is needed, cancel the running CAC
 			 * timer.