qcacmn: DFS API support for Rolling CAC

An extension of preCAC feature is Rolling CAC. The distinct difference
between these features is that the FW runs the off channel CAC
timer for a "finite" time for preCAC and runs the timer for "infinite"
time on an off channel. Hence the infrastructure built for
preCAC feature is being modified to accommodate RCAC feature as well.
Following are the modifications done:

1. Add an enum to represent various off-channel CAC modes.
2. Remove the 'static' declaration of few APIS so as to re-use them.
3. Add 'dfs_rcac_ch_params' to DFS PDEV object to store the RCAC
channel params so as to use the channel params after radar detect.
4. Rename DFS APIs to match its functionality.

CRs-Fixed: 2670419
Change-Id: I0bf0d33955706941cffb4e9cf6fcebfb465a6c74
This commit is contained in:
Priyadarshnee S
2020-04-20 18:04:41 +05:30
committato da nshrivas
parent 87dac440fd
commit 4c6b5c6f69
5 ha cambiato i file con 99 aggiunte e 42 eliminazioni

Vedi File

@@ -125,6 +125,22 @@ struct dfs_radar_found_params {
u_int32_t sidx_max;
};
/**
* enum adfs_ocac_mode - Various Off-Channel CAC modes.
* @QUICK_OCAC_MODE: Used for OCAC where the CAC timeout value is finite.
* This is also known as PreCAC.
* @EXTENSIVE_OCAC: Extensive OCAC.
* @QUICK_RCAC_MODE: Used for RollingCAC where the timeout value is assumed to
* be infinite by the Firmware code, that is, the FW has to
* be on the agile channel until host stop/aborts the agile
* CAC.
*/
enum adfs_ocac_mode {
QUICK_OCAC_MODE = 0,
EXTENSIVE_OCAC_MODE,
QUICK_RCAC_MODE,
};
/**
* struct dfs_agile_cac_params - Agile DFS-CAC parameters.
* @precac_chan: Agile preCAC channel.
@@ -137,6 +153,7 @@ struct dfs_radar_found_params {
* @precac_chwidth: Agile preCAC channel width.
* @min_precac_timeout: Minimum agile preCAC timeout.
* @max_precac_timeout: Maximum agile preCAC timeout.
* @ocac_mode: Off-Channel CAC mode.
*/
struct dfs_agile_cac_params {
uint8_t precac_chan;
@@ -145,5 +162,6 @@ struct dfs_agile_cac_params {
enum phy_ch_width precac_chwidth;
uint32_t min_precac_timeout;
uint32_t max_precac_timeout;
enum adfs_ocac_mode ocac_mode;
};
#endif