qcacmn: Add frequency APIs in DFS Dispatcher
To avoid "channel number" space collision with the introduction of 6GHZ frequency band, add frequency based APIs in DFS dispatcher. Change-Id: I349093e134b04ee31d046eb4da108522bc74a51a CRs-Fixed: 2526372
这个提交包含在:
@@ -39,6 +39,7 @@ void dfs_mlme_start_rcsa(struct wlan_objmgr_pdev *pdev,
|
||||
}
|
||||
|
||||
#ifndef QCA_MCL_DFS_SUPPORT
|
||||
#ifdef CONFIG_CHAN_NUM_API
|
||||
void dfs_mlme_mark_dfs(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t ieee,
|
||||
uint16_t freq,
|
||||
@@ -52,7 +53,24 @@ void dfs_mlme_mark_dfs(struct wlan_objmgr_pdev *pdev,
|
||||
vhtop_ch_freq_seg2,
|
||||
flags);
|
||||
}
|
||||
#else
|
||||
#endif
|
||||
#ifdef CONFIG_CHAN_FREQ_API
|
||||
void dfs_mlme_mark_dfs_for_freq(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t ieee,
|
||||
uint16_t freq,
|
||||
uint16_t vhtop_ch_freq_seg2,
|
||||
uint64_t flags)
|
||||
{
|
||||
if (global_dfs_to_mlme.mlme_mark_dfs_for_freq)
|
||||
global_dfs_to_mlme.mlme_mark_dfs_for_freq(pdev,
|
||||
ieee,
|
||||
freq,
|
||||
vhtop_ch_freq_seg2,
|
||||
flags);
|
||||
}
|
||||
#endif
|
||||
#else /* Else of ndef MCL_DFS_SUPPORT */
|
||||
#ifdef CONFIG_CHAN_NUM_API
|
||||
static void dfs_send_radar_ind(struct wlan_objmgr_pdev *pdev,
|
||||
void *object,
|
||||
void *arg)
|
||||
@@ -69,7 +87,33 @@ static void dfs_send_radar_ind(struct wlan_objmgr_pdev *pdev,
|
||||
dfs_info(NULL, WLAN_DEBUG_DFS_ALWAYS, "eWNI_SME_DFS_RADAR_FOUND pdev%d posted",
|
||||
vdev_id);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* dfs_send_radar_ind_for_freq() - Send radar found indication.
|
||||
* @pdev: Pointer to wlan_objmgr_pdev.
|
||||
* @object: Pointer to wlan_objmgr_vdev.
|
||||
* @arg : void pointer to args.
|
||||
*/
|
||||
#ifdef CONFIG_CHAN_FREQ_API
|
||||
static void dfs_send_radar_ind_for_freq(struct wlan_objmgr_pdev *pdev,
|
||||
void *object,
|
||||
void *arg)
|
||||
{
|
||||
struct scheduler_msg sme_msg = {0};
|
||||
uint8_t vdev_id = wlan_vdev_get_id((struct wlan_objmgr_vdev *)object);
|
||||
|
||||
sme_msg.type = eWNI_SME_DFS_RADAR_FOUND;
|
||||
sme_msg.bodyptr = NULL;
|
||||
sme_msg.bodyval = vdev_id;
|
||||
scheduler_post_message(QDF_MODULE_ID_DFS,
|
||||
QDF_MODULE_ID_SME,
|
||||
QDF_MODULE_ID_SME, &sme_msg);
|
||||
dfs_info(NULL, WLAN_DEBUG_DFS_ALWAYS, "eWNI_SME_DFS_RADAR_FOUND pdev%d posted",
|
||||
vdev_id);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CHAN_NUM_API
|
||||
void dfs_mlme_mark_dfs(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t ieee,
|
||||
uint16_t freq,
|
||||
@@ -92,7 +136,32 @@ void dfs_mlme_mark_dfs(struct wlan_objmgr_pdev *pdev,
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CHAN_FREQ_API
|
||||
void dfs_mlme_mark_dfs_for_freq(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t ieee,
|
||||
uint16_t freq,
|
||||
uint16_t vhtop_ch_freq_seg2,
|
||||
uint64_t flags)
|
||||
{
|
||||
struct wlan_objmgr_vdev *vdev;
|
||||
|
||||
if (!pdev) {
|
||||
dfs_err(NULL, WLAN_DEBUG_DFS_ALWAYS, "null pdev");
|
||||
return;
|
||||
}
|
||||
|
||||
vdev = wlan_pdev_peek_active_first_vdev(pdev, WLAN_DFS_ID);
|
||||
|
||||
if (vdev) {
|
||||
dfs_send_radar_ind_for_freq(pdev, vdev, NULL);
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_DFS_ID);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef QCA_MCL_DFS_SUPPORT
|
||||
#ifdef CONFIG_CHAN_NUM_API
|
||||
void dfs_mlme_start_csa(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t ieee_chan, uint16_t freq,
|
||||
uint8_t cfreq2, uint64_t flags)
|
||||
@@ -101,7 +170,19 @@ void dfs_mlme_start_csa(struct wlan_objmgr_pdev *pdev,
|
||||
global_dfs_to_mlme.mlme_start_csa(pdev, ieee_chan, freq, cfreq2,
|
||||
flags);
|
||||
}
|
||||
#endif
|
||||
#ifdef CONFIG_CHAN_FREQ_API
|
||||
void dfs_mlme_start_csa_for_freq(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t ieee_chan, uint16_t freq,
|
||||
uint16_t cfreq2, uint64_t flags)
|
||||
{
|
||||
if (global_dfs_to_mlme.mlme_start_csa_for_freq)
|
||||
global_dfs_to_mlme.mlme_start_csa_for_freq(pdev, ieee_chan,
|
||||
freq, cfreq2, flags);
|
||||
}
|
||||
#endif
|
||||
#else
|
||||
#ifdef CONFIG_CHAN_NUM_API
|
||||
void dfs_mlme_start_csa(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t ieee_chan, uint16_t freq,
|
||||
uint8_t cfreq2, uint64_t flags)
|
||||
@@ -121,6 +202,27 @@ void dfs_mlme_start_csa(struct wlan_objmgr_pdev *pdev,
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#ifdef CONFIG_CHAN_FREQ_API
|
||||
void dfs_mlme_start_csa_for_freq(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t ieee_chan, uint16_t freq,
|
||||
uint16_t cfreq2, uint64_t flags)
|
||||
{
|
||||
struct wlan_objmgr_vdev *vdev;
|
||||
|
||||
if (!pdev) {
|
||||
dfs_err(NULL, WLAN_DEBUG_DFS_ALWAYS, "null pdev");
|
||||
return;
|
||||
}
|
||||
|
||||
vdev = wlan_pdev_peek_active_first_vdev(pdev, WLAN_DFS_ID);
|
||||
|
||||
if (vdev) {
|
||||
dfs_send_radar_ind(pdev, vdev, NULL);
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_DFS_ID);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef QCA_MCL_DFS_SUPPORT
|
||||
void dfs_mlme_proc_cac(struct wlan_objmgr_pdev *pdev, uint32_t vdev_id)
|
||||
@@ -159,6 +261,7 @@ void dfs_mlme_get_dfs_ch_nchans(struct wlan_objmgr_pdev *pdev,
|
||||
nchans);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_CHAN_NUM_API
|
||||
QDF_STATUS dfs_mlme_get_extchan(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t *dfs_ch_freq,
|
||||
uint64_t *dfs_ch_flags,
|
||||
@@ -178,6 +281,33 @@ QDF_STATUS dfs_mlme_get_extchan(struct wlan_objmgr_pdev *pdev,
|
||||
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CHAN_FREQ_API
|
||||
QDF_STATUS dfs_mlme_get_extchan_for_freq(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t *dfs_chan_freq,
|
||||
uint64_t *dfs_chan_flags,
|
||||
uint16_t *dfs_chan_flagext,
|
||||
uint8_t *dfs_chan_ieee,
|
||||
uint8_t *dfs_chan_vhtop_ch_freq_seg1,
|
||||
uint8_t *dfs_chan_vhtop_ch_freq_seg2,
|
||||
uint16_t *dfs_chan_mhz_freq_seg1,
|
||||
uint16_t *dfs_chan_mhz_freq_seg2)
|
||||
{
|
||||
if (global_dfs_to_mlme.mlme_get_extchan_for_freq)
|
||||
return global_dfs_to_mlme.mlme_get_extchan_for_freq(pdev,
|
||||
dfs_chan_freq,
|
||||
dfs_chan_flags,
|
||||
dfs_chan_flagext,
|
||||
dfs_chan_ieee,
|
||||
dfs_chan_vhtop_ch_freq_seg1,
|
||||
dfs_chan_vhtop_ch_freq_seg2,
|
||||
dfs_chan_mhz_freq_seg1,
|
||||
dfs_chan_mhz_freq_seg2);
|
||||
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
#endif
|
||||
|
||||
void dfs_mlme_set_no_chans_available(struct wlan_objmgr_pdev *pdev,
|
||||
int val)
|
||||
@@ -201,6 +331,7 @@ int dfs_mlme_ieee2mhz(struct wlan_objmgr_pdev *pdev, int ieee, uint64_t flag)
|
||||
return freq;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_CHAN_NUM_API
|
||||
QDF_STATUS
|
||||
dfs_mlme_find_dot11_channel(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t ieee,
|
||||
@@ -226,7 +357,41 @@ dfs_mlme_find_dot11_channel(struct wlan_objmgr_pdev *pdev,
|
||||
dfs_ch_vhtop_ch_freq_seg2);
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CHAN_FREQ_API
|
||||
QDF_STATUS
|
||||
dfs_mlme_find_dot11_chan_for_freq(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t freq,
|
||||
uint16_t des_cfreq2,
|
||||
int mode,
|
||||
uint16_t *dfs_chan_freq,
|
||||
uint64_t *dfs_chan_flag,
|
||||
uint16_t *dfs_flagext,
|
||||
uint8_t *dfs_chan_ieee,
|
||||
uint8_t *dfs_cfreq1,
|
||||
uint8_t *dfs_cfreq2,
|
||||
uint16_t *cfreq1_mhz,
|
||||
uint16_t *cfreq2_mhz)
|
||||
{
|
||||
if (global_dfs_to_mlme.mlme_find_dot11_chan_for_freq)
|
||||
return global_dfs_to_mlme.mlme_find_dot11_chan_for_freq(pdev,
|
||||
freq,
|
||||
des_cfreq2,
|
||||
mode,
|
||||
dfs_chan_freq,
|
||||
dfs_chan_flag,
|
||||
dfs_flagext,
|
||||
dfs_chan_ieee,
|
||||
dfs_cfreq1,
|
||||
dfs_cfreq2,
|
||||
cfreq1_mhz,
|
||||
cfreq2_mhz);
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CHAN_NUM_API
|
||||
void dfs_mlme_get_dfs_ch_channels(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t *dfs_ch_freq,
|
||||
uint64_t *dfs_ch_flags,
|
||||
@@ -246,6 +411,33 @@ void dfs_mlme_get_dfs_ch_channels(struct wlan_objmgr_pdev *pdev,
|
||||
dfs_ch_vhtop_ch_freq_seg2,
|
||||
index);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CHAN_FREQ_API
|
||||
void dfs_mlme_get_dfs_channels_for_freq(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t *dfs_chan_freq,
|
||||
uint64_t *dfs_chan_flags,
|
||||
uint16_t *dfs_chan_flagext,
|
||||
uint8_t *dfs_chan_ieee,
|
||||
uint8_t *dfs_chan_vhtop_freq_seg1,
|
||||
uint8_t *dfs_chan_vhtop_freq_seg2,
|
||||
uint16_t *dfs_ch_mhz_freq_seg1,
|
||||
uint16_t *dfs_ch_mhz_freq_seg2,
|
||||
int index)
|
||||
{
|
||||
if (global_dfs_to_mlme.mlme_get_dfs_channels_for_freq)
|
||||
global_dfs_to_mlme.mlme_get_dfs_channels_for_freq(pdev,
|
||||
dfs_chan_freq,
|
||||
dfs_chan_flags,
|
||||
dfs_chan_flagext,
|
||||
dfs_chan_ieee,
|
||||
dfs_chan_vhtop_freq_seg1,
|
||||
dfs_chan_vhtop_freq_seg2,
|
||||
dfs_ch_mhz_freq_seg1,
|
||||
dfs_ch_mhz_freq_seg2,
|
||||
index);
|
||||
}
|
||||
#endif
|
||||
|
||||
uint32_t dfs_mlme_dfs_ch_flags_ext(struct wlan_objmgr_pdev *pdev)
|
||||
{
|
||||
@@ -282,6 +474,7 @@ void dfs_mlme_clist_update(struct wlan_objmgr_pdev *pdev,
|
||||
nentries);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_CHAN_NUM_API
|
||||
int dfs_mlme_get_cac_timeout(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t dfs_ch_freq,
|
||||
uint8_t dfs_ch_vhtop_ch_freq_seg2,
|
||||
@@ -298,6 +491,26 @@ int dfs_mlme_get_cac_timeout(struct wlan_objmgr_pdev *pdev,
|
||||
|
||||
return cac_timeout;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CHAN_FREQ_API
|
||||
int dfs_mlme_get_cac_timeout_for_freq(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t dfs_chan_freq,
|
||||
uint16_t dfs_cfreq2,
|
||||
uint64_t dfs_ch_flags)
|
||||
{
|
||||
int cac_timeout = 0;
|
||||
|
||||
if (global_dfs_to_mlme.mlme_get_cac_timeout_for_freq)
|
||||
global_dfs_to_mlme.mlme_get_cac_timeout_for_freq(pdev,
|
||||
dfs_chan_freq,
|
||||
dfs_cfreq2,
|
||||
dfs_ch_flags,
|
||||
&cac_timeout);
|
||||
|
||||
return cac_timeout;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(WLAN_DFS_PARTIAL_OFFLOAD) && defined(HOST_DFS_SPOOF_TEST)
|
||||
int dfs_mlme_rebuild_chan_list_with_non_dfs_channels(
|
||||
@@ -323,13 +536,13 @@ void dfs_mlme_restart_vaps_with_non_dfs_chan(struct wlan_objmgr_pdev *pdev,
|
||||
|
||||
#if defined(WLAN_SUPPORT_PRIMARY_ALLOWED_CHAN)
|
||||
bool dfs_mlme_check_allowed_prim_chanlist(struct wlan_objmgr_pdev *pdev,
|
||||
uint32_t chan_num)
|
||||
uint32_t chan_freq)
|
||||
{
|
||||
if (!global_dfs_to_mlme.mlme_check_allowed_prim_chanlist)
|
||||
return true;
|
||||
|
||||
return global_dfs_to_mlme.mlme_check_allowed_prim_chanlist(pdev,
|
||||
chan_num);
|
||||
chan_freq);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
@@ -249,6 +249,7 @@ QDF_STATUS ucfg_dfs_get_precac_intermediate_chan(struct wlan_objmgr_pdev *pdev,
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_CHAN_NUM_API
|
||||
enum precac_chan_state
|
||||
ucfg_dfs_get_precac_chan_state(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t precac_chan)
|
||||
@@ -263,7 +264,7 @@ ucfg_dfs_get_precac_chan_state(struct wlan_objmgr_pdev *pdev,
|
||||
}
|
||||
|
||||
retval = dfs_get_precac_chan_state(dfs, precac_chan);
|
||||
if (PRECAC_ERR == retval) {
|
||||
if (retval == PRECAC_ERR) {
|
||||
dfs_err(dfs, WLAN_DEBUG_DFS_ALWAYS,
|
||||
"Could not find precac channel state");
|
||||
}
|
||||
@@ -272,6 +273,17 @@ ucfg_dfs_get_precac_chan_state(struct wlan_objmgr_pdev *pdev,
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CHAN_FREQ_API
|
||||
enum precac_chan_state
|
||||
ucfg_dfs_get_precac_chan_state_for_freq(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t precac_chan_freq)
|
||||
{
|
||||
/* To be implemented when component dev changes are ready */
|
||||
return PRECAC_ERR;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef QCA_MCL_DFS_SUPPORT
|
||||
QDF_STATUS ucfg_dfs_update_config(struct wlan_objmgr_psoc *psoc,
|
||||
struct dfs_user_config *req)
|
||||
|
在新工单中引用
屏蔽一个用户