qcacmn: Store and populate the DFS channel state array

Add an enum to encode various DFS channel states.

The dfs channel states are represented using a per dfs array object rather
than maintaining a channel state field for each channel (since dfs channel
states are not required for 2G and 6G channels).

The size of the array is approximately 30 because
first_dfs_chan = 52
last_dfs_chan = 161(in case of ETSI EN302 502)
channel_spacing = difference between 2 consecutive 5G channels = 4

size_of_the_array = (last_dfs_chan - first_dfs_chan) / channel_spacing
                  = (161 - 52) / 4
                  = 27.25
                  ~= 30;

The dfs channel array is indexed by hashing the frequency. The conversion
(hash function) is as follows:

given_chan_number = (given_chan_frequency - 5000) / 5;
where 5 is: 5Mhz  = minimum IEEE chan bandwidth.

array_index = (given_chan_number - first_dfs_chan) / channel_spacing;

Add the following functionalities:
1) initialize the DFS channel state array.
2) update the channel state array.
3) read the channel state array.
4) convert the channel frequency to channel state array index.
5) convert the dfs channel event to dfs channel state.

Change-Id: I7921571fcc80b43a7ef7caf92c34b016fe396e45
CRs-Fixed: 2823529
这个提交包含在:
Vignesh U
2020-11-05 20:42:12 +05:30
提交者 snandini
父节点 f7248d774e
当前提交 336f699034
修改 5 个文件,包含 260 行新增1 行删除

查看文件

@@ -280,20 +280,26 @@ struct wlan_dfs_phyerr_param {
/**
* enum WLAN_DFS_EVENTS - DFS Events that will be sent to userspace
* @WLAN_EV_RADAR_DETECTED: Radar is detected
* @WLAN_EV_CAC_RESET: CAC started or CAC completed status is reset
* @WLAN_EV_CAC_STARTED: CAC timer has started
* @WLAN_EV_CAC_COMPLETED: CAC timer completed
* @WLAN_EV_NOL_STARTED: NOL started
* @WLAN_EV_NOL_FINISHED: NOL Completed
* @WLAN_EV_PCAC_STARTED: PreCAC Started
* @WLAN_EV_PCAC_COMPLETED: PreCAC Completed
*
* DFS events such as radar detected, CAC started,
* CAC completed, NOL started, NOL finished
*/
enum WLAN_DFS_EVENTS {
WLAN_EV_RADAR_DETECTED,
WLAN_EV_CAC_RESET,
WLAN_EV_CAC_STARTED,
WLAN_EV_CAC_COMPLETED,
WLAN_EV_NOL_STARTED,
WLAN_EV_NOL_FINISHED,
WLAN_EV_PCAC_STARTED,
WLAN_EV_PCAC_COMPLETED,
};
#if defined(WLAN_DFS_PARTIAL_OFFLOAD) && defined(WLAN_DFS_SYNTHETIC_RADAR)