qcacmn: Provide 20/40/80MHz Agile DFS support

In the current Agile DFS design it is assumed that the agile detector's
bandwidth is always 80Mhz. However, the agile detector inherits the
bandwidth of the current operating channel with the following
mapping:
Current Chan BW --- > AGILE BW
20                    20
40                    40
80/80+80/160          80

Provide support for Agile DFS on 20/40/80MHz channels based on the
current channel's bandwidth. Maintain a Binary Search Forest,
with each Binary Search Tree (BSTree) rooted by an 80MHz channel
structure. These BSTrees are connected by the preCAC list.
The primary key (identifier) of each node in the BSTree is an IEEE
channel. Each level of the BSTree has a unique bandwidth.

Remove the three existing precac lists: precac_required_list,
precac_done_list, precac nol_list.
Maintain
1) regular CAC and preCAC
2) regular  NOL and preCAC NOL
information in the same Binary Search Forest.

Modify the following APIs to support the new framework.
 1. Pick a channel for preCAC / Agile CAC.
    (dfs_get_chan_from_precac_list, dfs_find_chan_for_agile_precac)
 2. Reset the preCAC lists. (dfs_reset_precaclists)
 3. If preCAC is done on a channel. (dfs_is_precac_done_on_ht20_40_80_chan,
    dfs_is_precac_done_on_ht8080_ht160_chan)
 4. Mark the channel as preCAC done / NOL. (dfs_mark_precac_nol,
    dfs_mark_precac_done)

CRs-Fixed: 2464929
Change-Id: I6029ed919bd2275f46c4712ce1637ede4995557f
diff --git a/umac/dfs/core/src/misc/dfs_nol.c b/umac/dfs/core/src/misc/dfs_nol.c
index 85ec6fa..5ebe1a9 100644
--- a/umac/dfs/core/src/misc/dfs_nol.c
+++ b/umac/dfs/core/src/misc/dfs_nol.c
@@ -253,6 +253,7 @@
 				WLAN_EV_NOL_FINISHED);
 	dfs_debug(dfs, WLAN_DEBUG_DFS_NOL,
 		    "remove channel %d from nol", chan);
+	utils_dfs_unmark_precac_nol(dfs->dfs_pdev_obj, chan);
 	utils_dfs_add_to_etsi_precac_required_list(dfs->dfs_pdev_obj,
 						   &chan);
 	utils_dfs_reg_update_nol_ch(dfs->dfs_pdev_obj,