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
这个提交包含在:
Priyadarshnee S
2019-10-17 13:25:25 +05:30
提交者 nshrivas
父节点 d273250207
当前提交 70e1b6f859
修改 7 个文件,包含 767 行新增13 行删除

查看文件

@@ -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)