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
Bu işleme şunda yer alıyor:

işlemeyi yapan:
nshrivas

ebeveyn
d273250207
işleme
70e1b6f859
@@ -44,12 +44,29 @@ void dfs_mlme_start_rcsa(struct wlan_objmgr_pdev *pdev,
|
||||
* @vhtop_ch_freq_seg2: VHT80 Cfreq2.
|
||||
* @flags: channel flags.
|
||||
*/
|
||||
#ifdef CONFIG_CHAN_NUM_API
|
||||
void dfs_mlme_mark_dfs(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t ieee,
|
||||
uint16_t freq,
|
||||
uint8_t vhtop_ch_freq_seg2,
|
||||
uint64_t flags);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* dfs_mlme_mark_dfs_for_freq() - Mark the channel in the channel list.
|
||||
* @pdev: Pointer to DFS pdev object.
|
||||
* @ieee: Channel number.
|
||||
* @freq: Channel frequency.
|
||||
* @vhtop_ch_freq_seg2_mhz: VHT80 Cfreq2 in Mhz.
|
||||
* @flags: channel flags.
|
||||
*/
|
||||
#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_mhz_seg2,
|
||||
uint64_t flags);
|
||||
#endif
|
||||
/**
|
||||
* dfs_mlme_start_csa() - Sends CSA in ieeeChan
|
||||
* @pdev: Pointer to DFS pdev object.
|
||||
@@ -58,12 +75,29 @@ void dfs_mlme_mark_dfs(struct wlan_objmgr_pdev *pdev,
|
||||
* @cfreq2: HT80 cfreq2.
|
||||
* @flags: channel flags.
|
||||
*/
|
||||
#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);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* dfs_mlme_start_csa_for_freq() - Sends CSA in ieeeChan
|
||||
* @pdev: Pointer to DFS pdev object.
|
||||
* @ieee_chan: Channel number.
|
||||
* @freq: Channel frequency.
|
||||
* @cfreq2: HT80 cfreq2 in Mhz.
|
||||
* @flags: channel flags.
|
||||
*/
|
||||
#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_mhz,
|
||||
uint64_t flags);
|
||||
#endif
|
||||
/**
|
||||
* dfs_mlme_proc_cac() - Process the CAC completion event.
|
||||
* @pdev: Pointer to DFS pdev object.
|
||||
@@ -96,6 +130,7 @@ void dfs_mlme_get_dfs_ch_nchans(struct wlan_objmgr_pdev *pdev, int *nchans);
|
||||
* @dfs_ch_vhtop_ch_freq_seg2: Channel Center frequency applicable for 80+80MHz
|
||||
* mode of operation.
|
||||
*/
|
||||
#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,
|
||||
@@ -103,6 +138,34 @@ QDF_STATUS dfs_mlme_get_extchan(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t *dfs_ch_ieee,
|
||||
uint8_t *dfs_ch_vhtop_ch_freq_seg1,
|
||||
uint8_t *dfs_ch_vhtop_ch_freq_seg2);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* dfs_mlme_get_extchan() - Get extension channel.
|
||||
* @pdev: Pointer to DFS pdev object.
|
||||
* @dfs_chan_freq: Frequency in Mhz.
|
||||
* @dfs_chan_flags: Channel flags.
|
||||
* @dfs_chan_flagext: Extended channel flags.
|
||||
* @dfs_chan_ieee: IEEE channel number.
|
||||
* @dfs_chan_vhtop_ch_freq_seg1: Channel Center IEEE.
|
||||
* @dfs_chan_vhtop_ch_freq_seg2: Channel Center IEEE applicable for 80+80MHz
|
||||
* mode of operation.
|
||||
* @dfs_chan_mhz_freq_seg1: Primary channel center freq.
|
||||
* @dfs_chan_mhz_freq_seg2: Secondary channel center freq applicable for
|
||||
* 80+80 MHZ.
|
||||
*/
|
||||
|
||||
#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);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* dfs_mlme_set_no_chans_available() - Set no_chans_available flag.
|
||||
@@ -140,6 +203,7 @@ int dfs_mlme_ieee2mhz(struct wlan_objmgr_pdev *pdev,
|
||||
* * QDF_STATUS_SUCCESS : Channel found.
|
||||
* * QDF_STATUS_E_FAILURE: Channel not found.
|
||||
*/
|
||||
#ifdef CONFIG_CHAN_NUM_API
|
||||
QDF_STATUS
|
||||
dfs_mlme_find_dot11_channel(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t ieee,
|
||||
@@ -151,6 +215,46 @@ dfs_mlme_find_dot11_channel(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t *dfs_ch_ieee,
|
||||
uint8_t *dfs_ch_vhtop_ch_freq_seg1,
|
||||
uint8_t *dfs_ch_vhtop_ch_freq_seg2);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* dfs_mlme_find_dot11_chan_for_freq() - Find a channel pointer given the mode,
|
||||
* frequency and channel flags.
|
||||
* @pdev: Pointer to DFS pdev object.
|
||||
* @ch_freq: Channel frequency.
|
||||
* @des_cfreq2_mhz: cfreq2 in MHZ.
|
||||
* @mode: Phymode
|
||||
* @dfs_chan_freq: Frequency in Mhz.
|
||||
* @dfs_chan_flags: Channel flags.
|
||||
* @dfs_chan_flagext: Extended channel flags.
|
||||
* @dfs_chan_ieee: IEEE channel number.
|
||||
* @dfs_chan_vhtop_ch_freq_seg1: Channel Center IEEE for primary 80 segment.
|
||||
* @dfs_chan_vhtop_ch_freq_seg2: Channel Center frequency applicable for
|
||||
* 80+80MHz mode of operation.
|
||||
* @dfs_chan_mhz_freq_seg1: Channel center frequency of primary 80 segment.
|
||||
* @dfs_chan_mhz_freq_seg2: Channel center frequency for secondary 80
|
||||
* segment applicable only for 80+80MHZ mode of
|
||||
* operation.
|
||||
*
|
||||
* Return:
|
||||
* * QDF_STATUS_SUCCESS : Channel found.
|
||||
* * QDF_STATUS_E_FAILURE: Channel not found.
|
||||
*/
|
||||
#ifdef CONFIG_CHAN_FREQ_API
|
||||
QDF_STATUS
|
||||
dfs_mlme_find_dot11_chan_for_freq(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t chan_freq,
|
||||
uint16_t des_cfreq2_mhz,
|
||||
int mode,
|
||||
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);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* dfs_mlme_get_dfs_ch_channels() - Get channel from channel list.
|
||||
@@ -164,6 +268,7 @@ dfs_mlme_find_dot11_channel(struct wlan_objmgr_pdev *pdev,
|
||||
* mode of operation.
|
||||
* @index: Index into channel list.
|
||||
*/
|
||||
#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,
|
||||
@@ -172,6 +277,36 @@ void dfs_mlme_get_dfs_ch_channels(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t *dfs_ch_vhtop_ch_freq_seg1,
|
||||
uint8_t *dfs_ch_vhtop_ch_freq_seg2,
|
||||
int index);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* dfs_mlme_get_dfs_channels_for_freq() - Get DFS channel from channel list.
|
||||
* @pdev: Pointer to DFS pdev object.
|
||||
* @dfs_chan_freq: Frequency in Mhz.
|
||||
* @dfs_chan_flags: Channel flags.
|
||||
* @dfs_chan_flagext: Extended channel flags.
|
||||
* @dfs_chan_ieee: IEEE channel number.
|
||||
* @dfs_chan_vhtop_ch_freq_seg1: Channel Center IEEE number.
|
||||
* @dfs_chan_vhtop_ch_freq_seg2: Channel Center IEEE applicable for 80+80MHz
|
||||
* mode of operation.
|
||||
* @dfs_chan_mhz_freq_seg1 : Primary 80 Channel Center frequency.
|
||||
* @dfs_chan_mhz_freq_seg2 : Channel center frequency applicable only for
|
||||
* 80+80 mode of operation.
|
||||
* @index: Index into channel list.
|
||||
*/
|
||||
#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_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,
|
||||
int index);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* dfs_mlme_dfs_ch_flags_ext() - Get extension channel flags.
|
||||
@@ -209,11 +344,27 @@ void dfs_mlme_clist_update(struct wlan_objmgr_pdev *pdev,
|
||||
* mode of operation.
|
||||
* @dfs_ch_flags: Channel flags.
|
||||
*/
|
||||
#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,
|
||||
uint64_t dfs_ch_flags);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* dfs_mlme_get_cac_timeout_for_freq() - Get cac_timeout.
|
||||
* @pdev: Pointer to DFS pdev object.
|
||||
* @dfs_chan_freq: Frequency in Mhz.
|
||||
* @dfs_chan_vhtop_freq_seg2: Channel Center frequency applicable for 80+80MHz
|
||||
* mode of operation.
|
||||
* @dfs_chan_flags: Channel flags.
|
||||
*/
|
||||
#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_chan_vhtop_freq_seg2_mhz,
|
||||
uint64_t dfs_chan_flags);
|
||||
#endif
|
||||
/**
|
||||
* dfs_mlme_rebuild_chan_list_with_non_dfs_channels() - Rebuild the channel list
|
||||
* with only non DFS channels.
|
||||
@@ -257,12 +408,12 @@ 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);
|
||||
|
||||
#else
|
||||
static inline
|
||||
bool dfs_mlme_check_allowed_prim_chanlist(struct wlan_objmgr_pdev *pdev,
|
||||
uint32_t chan_num)
|
||||
uint32_t chan_freq)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@@ -128,12 +128,14 @@ struct dfs_radar_found_params {
|
||||
/**
|
||||
* struct dfs_agile_cac_params - Agile DFS-CAC parameters.
|
||||
* @precac_chan: Agile preCAC channel.
|
||||
* @precac_chan_freq: Agile preCAC channel frequency in MHZ.
|
||||
* @precac_chwidth: Agile preCAC channel width.
|
||||
* @min_precac_timeout: Minimum agile preCAC timeout.
|
||||
* @max_precac_timeout: Maximum agile preCAC timeout.
|
||||
*/
|
||||
struct dfs_agile_cac_params {
|
||||
uint8_t precac_chan;
|
||||
uint16_t precac_chan_freq;
|
||||
enum phy_ch_width precac_chwidth;
|
||||
uint32_t min_precac_timeout;
|
||||
uint32_t max_precac_timeout;
|
||||
|
@@ -97,7 +97,7 @@ struct dfs_emulate_bang_radar_test_cmd {
|
||||
* @vdev_id: Physical device identifier
|
||||
* @chan_freq: Channel number
|
||||
* @chan_width: Channel Width
|
||||
* @center_freq: Center Frequency channel number
|
||||
* @center_freq: Center channel number
|
||||
* @ocac_status: off channel cac status
|
||||
*/
|
||||
struct vdev_adfs_complete_status {
|
||||
@@ -122,6 +122,7 @@ extern struct dfs_to_mlme global_dfs_to_mlme;
|
||||
* @dfs_ch_vhtop_ch_freq_seg2: Channel Center frequency2.
|
||||
*/
|
||||
#ifdef DFS_COMPONENT_ENABLE
|
||||
#ifdef CONFIG_CHAN_NUM_API
|
||||
QDF_STATUS tgt_dfs_set_current_channel(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t dfs_ch_freq,
|
||||
uint64_t dfs_ch_flags,
|
||||
@@ -129,6 +130,34 @@ QDF_STATUS tgt_dfs_set_current_channel(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t dfs_ch_ieee,
|
||||
uint8_t dfs_ch_vhtop_ch_freq_seg1,
|
||||
uint8_t dfs_ch_vhtop_ch_freq_seg2);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* tgt_dfs_set_current_channel_for_freq() - Fill dfs channel structure from
|
||||
* dfs_channel structure.
|
||||
* @pdev: Pointer to DFS pdev object.
|
||||
* @dfs_ch_freq: Frequency in Mhz.
|
||||
* @dfs_ch_flags: Channel flags.
|
||||
* @dfs_ch_flagext: Extended channel flags.
|
||||
* @dfs_ch_ieee: IEEE channel number.
|
||||
* @dfs_ch_vhtop_ch_freq_seg1: Channel Center frequency1.
|
||||
* @dfs_ch_vhtop_ch_freq_seg2: Channel Center frequency2.
|
||||
* @dfs_ch_mhz_freq_seg1: Channel center frequency of primary segment in MHZ.
|
||||
* @dfs_ch_mhz_freq_seg2: Channel center frequency of secondary segment in MHZ
|
||||
* applicable only for 80+80MHZ mode of operation.
|
||||
*/
|
||||
#ifdef CONFIG_CHAN_FREQ_API
|
||||
QDF_STATUS
|
||||
tgt_dfs_set_current_channel_for_freq(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t dfs_ch_freq,
|
||||
uint64_t dfs_ch_flags,
|
||||
uint16_t dfs_ch_flagext,
|
||||
uint8_t dfs_ch_ieee,
|
||||
uint8_t dfs_ch_vhtop_ch_freq_seg1,
|
||||
uint8_t dfs_ch_vhtop_ch_freq_seg2,
|
||||
uint16_t dfs_ch_mhz_freq_seg1,
|
||||
uint16_t dfs_ch_mhz_freq_seg2);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* tgt_dfs_radar_enable() - Enables the radar.
|
||||
@@ -347,6 +376,7 @@ QDF_STATUS tgt_dfs_ocac_complete(struct wlan_objmgr_pdev *pdev,
|
||||
* wrapper function for dfs_find_vht80_chan_for_precacdfs_cancel_cac_timer().
|
||||
* This function called from outside of dfs component.
|
||||
*/
|
||||
#ifdef CONFIG_CHAN_NUM_API
|
||||
QDF_STATUS tgt_dfs_find_vht80_chan_for_precac(struct wlan_objmgr_pdev *pdev,
|
||||
uint32_t chan_mode,
|
||||
uint8_t ch_freq_seg1,
|
||||
@@ -355,6 +385,32 @@ QDF_STATUS tgt_dfs_find_vht80_chan_for_precac(struct wlan_objmgr_pdev *pdev,
|
||||
uint32_t *phy_mode,
|
||||
bool *dfs_set_cfreq2,
|
||||
bool *set_agile);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* tgt_dfs_find_vht80_precac_chan_freq() - Find VHT80 channel for precac
|
||||
* @pdev: Pointer to DFS pdev object.
|
||||
* @chan_mode: Channel mode.
|
||||
* @ch_freq_seg1_mhz: Segment1 channel freq in MHZ.
|
||||
* @cfreq1: cfreq1.
|
||||
* @cfreq2: cfreq2.
|
||||
* @phy_mode: Precac phymode.
|
||||
* @dfs_set_cfreq2: Precac cfreq2
|
||||
* @set_agile: Agile mode flag.
|
||||
*
|
||||
* wrapper function for dfs_find_vht80_chan_for_precac_for_freq().
|
||||
*/
|
||||
#ifdef CONFIG_CHAN_FREQ_API
|
||||
QDF_STATUS
|
||||
tgt_dfs_find_vht80_precac_chan_freq(struct wlan_objmgr_pdev *pdev,
|
||||
uint32_t chan_mode,
|
||||
uint16_t ch_freq_mhz_seg1,
|
||||
uint32_t *cfreq1,
|
||||
uint32_t *cfreq2,
|
||||
uint32_t *phy_mode,
|
||||
bool *dfs_set_cfreq2,
|
||||
bool *set_agile);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* tgt_dfs_cac_complete() - Process cac complete indication.
|
||||
|
@@ -64,6 +64,15 @@
|
||||
* @mlme_update_scan_channel_list: Update the scan channel list sent to FW.
|
||||
* @mlme_bringdown_vaps: Bringdown vaps if no chans is present.
|
||||
* @mlme_dfs_deliver_event: Deliver DFS events to user space
|
||||
* @mlme_precac_chan_change_csa_for_freq:Channel change triggered by PrCAC using
|
||||
* Channel Switch Announcement.
|
||||
* @mlme_mark_dfs_for_freq: Mark DFS channel frequency as radar.
|
||||
* @mlme_get_extchan_for_freq: Get the extension channel.
|
||||
* @mlme_find_dot11_chan_for_freq: Find a channel pointer.
|
||||
* @mlme_get_dfs_channels_for_freq: Get DFS channels from current channel
|
||||
* list.
|
||||
* @mlme_get_cac_timeout_for_freq: Get CAC timeout for a given channel
|
||||
* frequency.
|
||||
*/
|
||||
struct dfs_to_mlme {
|
||||
QDF_STATUS (*pdev_component_obj_attach)(struct wlan_objmgr_pdev *pdev,
|
||||
@@ -75,19 +84,37 @@ struct dfs_to_mlme {
|
||||
void *comp_priv_obj);
|
||||
QDF_STATUS (*dfs_start_rcsa)(struct wlan_objmgr_pdev *pdev,
|
||||
bool *wait_for_csa);
|
||||
#ifdef CONFIG_CHAN_NUM_API
|
||||
QDF_STATUS (*mlme_mark_dfs)(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t ieee,
|
||||
uint16_t freq,
|
||||
uint8_t vhtop_ch_freq_seg2,
|
||||
uint64_t flags);
|
||||
#endif
|
||||
#ifdef CONFIG_CHAN_FREQ_API
|
||||
QDF_STATUS (*mlme_mark_dfs_for_freq)(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t ieee,
|
||||
uint16_t freq,
|
||||
uint16_t ic_mhz_freq_seg2,
|
||||
uint64_t flags);
|
||||
#endif
|
||||
#ifdef CONFIG_CHAN_NUM_API
|
||||
QDF_STATUS (*mlme_start_csa)(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t ieee_chan, uint16_t freq,
|
||||
uint8_t cfreq2, uint64_t flags);
|
||||
#endif
|
||||
#ifdef CONFIG_CHAN_FREQ_API
|
||||
QDF_STATUS (*mlme_start_csa_for_freq)(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t ieee_chan, uint16_t freq,
|
||||
uint16_t cfreq2, uint64_t flags);
|
||||
#endif
|
||||
|
||||
QDF_STATUS (*mlme_proc_cac)(struct wlan_objmgr_pdev *pdev);
|
||||
QDF_STATUS (*mlme_deliver_event_up_after_cac)(
|
||||
struct wlan_objmgr_pdev *pdev);
|
||||
QDF_STATUS (*mlme_get_dfs_ch_nchans)(struct wlan_objmgr_pdev *pdev,
|
||||
int *nchans);
|
||||
#ifdef CONFIG_CHAN_NUM_API
|
||||
QDF_STATUS (*mlme_get_extchan)(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t *dfs_ch_freq,
|
||||
uint64_t *dfs_ch_flags,
|
||||
@@ -95,12 +122,25 @@ struct dfs_to_mlme {
|
||||
uint8_t *dfs_ch_ieee,
|
||||
uint8_t *dfs_ch_vhtop_ch_freq_seg1,
|
||||
uint8_t *dfs_ch_vhtop_ch_freq_seg2);
|
||||
#endif
|
||||
#ifdef CONFIG_CHAN_FREQ_API
|
||||
QDF_STATUS (*mlme_get_extchan_for_freq)(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t *dfs_ch_freq,
|
||||
uint64_t *dfs_ch_flags,
|
||||
uint16_t *dfs_ch_flagext,
|
||||
uint8_t *dfs_ch_ieee,
|
||||
uint8_t *dfs_vhtop_ch_freq_seg1,
|
||||
uint8_t *dfs_vhtop_ch_freq_seg2,
|
||||
uint16_t *dfs_ch_mhz_freq_seg1,
|
||||
uint16_t *dfs_ch_mhz_freq_seg2);
|
||||
#endif
|
||||
QDF_STATUS (*mlme_set_no_chans_available)(struct wlan_objmgr_pdev *pdev,
|
||||
int val);
|
||||
QDF_STATUS (*mlme_ieee2mhz)(struct wlan_objmgr_pdev *pdev,
|
||||
int ieee,
|
||||
uint64_t flag,
|
||||
int *freq);
|
||||
#ifdef CONFIG_CHAN_NUM_API
|
||||
QDF_STATUS (*mlme_find_dot11_channel)(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t ieee,
|
||||
uint8_t des_cfreq2,
|
||||
@@ -111,7 +151,22 @@ struct dfs_to_mlme {
|
||||
uint8_t *dfs_ch_ieee,
|
||||
uint8_t *dfs_ch_vhtop_ch_freq_seg1,
|
||||
uint8_t *dfs_ch_vhtop_ch_freq_seg2);
|
||||
|
||||
#endif
|
||||
#ifdef CONFIG_CHAN_FREQ_API
|
||||
QDF_STATUS (*mlme_find_dot11_chan_for_freq)(struct wlan_objmgr_pdev *,
|
||||
uint16_t freq,
|
||||
uint16_t des_cfreq2_mhz,
|
||||
int mode,
|
||||
uint16_t *dfs_ch_freq,
|
||||
uint64_t *dfs_ch_flags,
|
||||
uint16_t *dfs_ch_flagext,
|
||||
uint8_t *dfs_ch_ieee,
|
||||
uint8_t *dfs_ch_freq_seg1,
|
||||
uint8_t *dfs_ch_freq_seg2,
|
||||
uint16_t *dfs_cfreq1_mhz,
|
||||
uint16_t *dfs_cfreq2_mhz);
|
||||
#endif
|
||||
#ifdef CONFIG_CHAN_NUM_API
|
||||
QDF_STATUS (*mlme_get_dfs_ch_channels)(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t *dfs_ch_freq,
|
||||
uint64_t *dfs_ch_flags,
|
||||
@@ -120,14 +175,37 @@ struct dfs_to_mlme {
|
||||
uint8_t *dfs_ch_vhtop_ch_freq_seg1,
|
||||
uint8_t *dfs_ch_vhtop_ch_freq_seg2,
|
||||
int index);
|
||||
#endif
|
||||
#ifdef CONFIG_CHAN_FREQ_API
|
||||
QDF_STATUS (*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_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,
|
||||
int index);
|
||||
#endif
|
||||
QDF_STATUS (*mlme_dfs_ch_flags_ext)(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t *flag_ext);
|
||||
QDF_STATUS (*mlme_channel_change_by_precac)(
|
||||
struct wlan_objmgr_pdev *pdev);
|
||||
#ifdef WLAN_DFS_PRECAC_AUTO_CHAN_SUPPORT
|
||||
QDF_STATUS (*mlme_precac_chan_change_csa)(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t des_chan,
|
||||
enum wlan_phymode des_mode);
|
||||
#ifdef CONFIG_CHAN_FREQ_API
|
||||
QDF_STATUS
|
||||
(*mlme_precac_chan_change_csa_for_freq)(struct wlan_objmgr_pdev *,
|
||||
uint16_t des_chan_freq,
|
||||
enum wlan_phymode des_mode);
|
||||
#endif
|
||||
#ifdef CONFIG_CHAN_NUM_API
|
||||
QDF_STATUS
|
||||
(*mlme_precac_chan_change_csa)(struct wlan_objmgr_pdev *,
|
||||
uint8_t des_chan,
|
||||
enum wlan_phymode des_mode);
|
||||
#endif
|
||||
#endif
|
||||
QDF_STATUS (*mlme_nol_timeout_notification)(
|
||||
struct wlan_objmgr_pdev *pdev);
|
||||
@@ -135,17 +213,27 @@ struct dfs_to_mlme {
|
||||
void *nollist,
|
||||
int nentries);
|
||||
bool (*mlme_is_opmode_sta)(struct wlan_objmgr_pdev *pdev);
|
||||
#ifdef CONFIG_CHAN_NUM_API
|
||||
QDF_STATUS (*mlme_get_cac_timeout)(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t dfs_ch_freq,
|
||||
uint8_t c_vhtop_ch_freq_seg2,
|
||||
uint64_t dfs_ch_flags,
|
||||
int *cac_timeout);
|
||||
#endif
|
||||
#ifdef CONFIG_CHAN_FREQ_API
|
||||
QDF_STATUS
|
||||
(*mlme_get_cac_timeout_for_freq)(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t dfs_ch_freq,
|
||||
uint16_t c_vhtop_ch_freq_seg2,
|
||||
uint64_t dfs_ch_flags,
|
||||
int *cac_timeout);
|
||||
#endif
|
||||
QDF_STATUS (*mlme_rebuild_chan_list_with_non_dfs_channels)
|
||||
(struct wlan_objmgr_pdev *pdev);
|
||||
QDF_STATUS (*mlme_restart_vaps_with_non_dfs_chan)
|
||||
(struct wlan_objmgr_pdev *pdev, int no_chans_avail);
|
||||
bool (*mlme_check_allowed_prim_chanlist)
|
||||
(struct wlan_objmgr_pdev *pdev, uint32_t chan_num);
|
||||
(struct wlan_objmgr_pdev *pdev, uint32_t chan);
|
||||
QDF_STATUS (*mlme_update_scan_channel_list)
|
||||
(struct wlan_objmgr_pdev *pdev);
|
||||
QDF_STATUS (*mlme_bringdown_vaps)
|
||||
@@ -316,11 +404,32 @@ QDF_STATUS ucfg_dfs_get_precac_intermediate_chan(struct wlan_objmgr_pdev *pdev,
|
||||
*
|
||||
* Return: Precac state of the given channel.
|
||||
*/
|
||||
#ifdef CONFIG_CHAN_NUM_API
|
||||
enum precac_chan_state
|
||||
ucfg_dfs_get_precac_chan_state(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t precac_chan);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* ucfg_dfs_get_precac_chan_state_for_freq() - Get precac status for the
|
||||
* given channel.
|
||||
* @pdev: Pointer to DFS pdev object.
|
||||
* @precac_chan: Channel frequency for which precac state needs to be
|
||||
* determined.
|
||||
*
|
||||
* Wrapper function for dfs_get_precac_chan_state().
|
||||
* This function called from outside of dfs component.
|
||||
*
|
||||
* Return: Precac state of the given channel.
|
||||
*/
|
||||
#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_freq);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef QCA_MCL_DFS_SUPPORT
|
||||
/**
|
||||
* ucfg_dfs_update_config() - Update DFS user config.
|
||||
|
@@ -93,10 +93,26 @@ extern struct dfs_to_mlme global_dfs_to_mlme;
|
||||
* Wrapper function for dfs_cac_valid_reset(). This function called from
|
||||
* outside of DFS component.
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_CHAN_NUM_API
|
||||
QDF_STATUS utils_dfs_cac_valid_reset(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t prevchan_ieee,
|
||||
uint32_t prevchan_flags);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* utils_dfs_cac_valid_reset_for_freq() - Cancels the dfs_cac_valid_timer timer.
|
||||
* @pdev: Pointer to DFS pdev object.
|
||||
* @prevchan_freq: Prevchan frequency.
|
||||
* @prevchan_flags: Prevchan flags.
|
||||
*
|
||||
* Wrapper function for dfs_cac_valid_reset_for_freq(). This function called
|
||||
* from outside of DFS component.
|
||||
*/
|
||||
#ifdef CONFIG_CHAN_FREQ_API
|
||||
QDF_STATUS utils_dfs_cac_valid_reset_for_freq(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t prevchan_freq,
|
||||
uint32_t prevchan_flags);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* utils_dfs_reset() - Reset DFS members.
|
||||
@@ -131,7 +147,21 @@ QDF_STATUS utils_dfs_reset_precaclists(struct wlan_objmgr_pdev *pdev);
|
||||
*
|
||||
* Return void.
|
||||
*/
|
||||
#ifdef CONFIG_CHAN_NUM_API
|
||||
void utils_dfs_unmark_precac_nol(struct wlan_objmgr_pdev *pdev, uint8_t chan);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* utils_dfs_unmark_precac_nol_for_freq() - Clears precac channel marked as NOL.
|
||||
* @pdev: Pointer to DFS pdev object.
|
||||
* @chan_freq: channel freq to be unmarked as NOL.
|
||||
*
|
||||
* Return void.
|
||||
*/
|
||||
#ifdef CONFIG_CHAN_FREQ_API
|
||||
void utils_dfs_unmark_precac_nol_for_freq(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t chan_freq);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* utils_dfs_cancel_precac_timer() - Cancel the precac timer.
|
||||
@@ -167,12 +197,32 @@ QDF_STATUS utils_dfs_start_precac_timer(struct wlan_objmgr_pdev *pdev);
|
||||
*
|
||||
* Return: True if intermediate channel needs to configure. False otherwise.
|
||||
*/
|
||||
#ifdef CONFIG_CHAN_NUM_API
|
||||
bool
|
||||
utils_dfs_precac_decide_pref_chan(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t *ch_ieee,
|
||||
enum wlan_phymode mode);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* utils_dfs_precac_decide_pref_chan() - Choose preferred channel
|
||||
* @pdev: Pointer to DFS pdev object.
|
||||
* @ch_freq: Pointer to channel frequency.
|
||||
* @mode: Configured PHY mode.
|
||||
*
|
||||
* Wrapper function for dfs_decide_precac_preferred_chan(). This
|
||||
* function called from outside of dfs component.
|
||||
*
|
||||
* Return: True if intermediate channel needs to configure. False otherwise.
|
||||
*/
|
||||
#ifdef CONFIG_CHAN_FREQ_API
|
||||
bool
|
||||
utils_dfs_precac_decide_pref_chan_for_freq(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t *ch_freq,
|
||||
enum wlan_phymode mode);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/**
|
||||
* utils_dfs_cancel_cac_timer() - Cancels the CAC timer.
|
||||
* @pdev: Pointer to DFS pdev object.
|
||||
@@ -414,10 +464,35 @@ QDF_STATUS utils_dfs_get_nol_chfreq_and_chwidth(struct wlan_objmgr_pdev *pdev,
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
#ifdef CONFIG_CHAN_NUM_API
|
||||
QDF_STATUS utils_dfs_get_random_channel(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t flags, struct ch_params *ch_params,
|
||||
uint32_t *hw_mode, uint8_t *target_chan,
|
||||
struct dfs_acs_info *acs_info);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* utils_dfs_get_random_channel() - Get random channel.
|
||||
* @pdev: Pointer to DFS pdev object.
|
||||
* @flags: random channel selection flags.
|
||||
* @ch_params: current channel params.
|
||||
* @hw_mode: current operating mode.
|
||||
* @target_chan: Pointer to target_chan freq.
|
||||
* @acs_info: acs range info.
|
||||
*
|
||||
* wrapper function for get_random_chan(). this
|
||||
* function called from outside of dfs component.
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
#ifdef CONFIG_CHAN_FREQ_API
|
||||
QDF_STATUS
|
||||
utils_dfs_get_random_channel_for_freq(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t flags,
|
||||
struct ch_params *ch_params,
|
||||
uint32_t *hw_mode, uint16_t *target_chan,
|
||||
struct dfs_acs_info *acs_info);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* utils_dfs_get_vdev_random_channel() - Get random channel for vdev
|
||||
@@ -434,10 +509,35 @@ QDF_STATUS utils_dfs_get_random_channel(struct wlan_objmgr_pdev *pdev,
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
#ifdef CONFIG_CHAN_NUM_API
|
||||
QDF_STATUS utils_dfs_get_vdev_random_channel(
|
||||
struct wlan_objmgr_pdev *pdev, struct wlan_objmgr_vdev *vdev,
|
||||
uint16_t flags, struct ch_params *ch_params, uint32_t *hw_mode,
|
||||
uint8_t *target_chan, struct dfs_acs_info *acs_info);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* utils_dfs_get_vdev_random_channel() - Get random channel for vdev
|
||||
* @pdev: Pointer to DFS pdev object.
|
||||
* @vdev: vdev of the request
|
||||
* @flags: random channel selection flags.
|
||||
* @ch_params: current channel params.
|
||||
* @hw_mode: current operating mode.
|
||||
* @target_chan: Pointer to target_chan_freq.
|
||||
* @acs_info: acs range info.
|
||||
*
|
||||
* Get random channel based on vdev interface type. If the vdev is null,
|
||||
* the function will get random channel by SAP interface type.
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_CHAN_FREQ_API
|
||||
QDF_STATUS utils_dfs_get_vdev_random_channel_for_freq(
|
||||
struct wlan_objmgr_pdev *pdev, struct wlan_objmgr_vdev *vdev,
|
||||
uint16_t flags, struct ch_params *ch_params, uint32_t *hw_mode,
|
||||
uint16_t *target_chan_freq, struct dfs_acs_info *acs_info);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* utils_dfs_bw_reduced_channel() - Get BW reduced channel.
|
||||
@@ -451,10 +551,32 @@ QDF_STATUS utils_dfs_get_vdev_random_channel(
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
#ifdef CONFIG_CHAN_NUM_API
|
||||
QDF_STATUS utils_dfs_bw_reduced_channel(struct wlan_objmgr_pdev *pdev,
|
||||
struct ch_params *ch_params,
|
||||
uint32_t *hw_mode,
|
||||
uint8_t *target_chan);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* utils_dfs_bw_reduced_channel_for_freq() - Get BW reduced channel.
|
||||
* @pdev: Pointer to DFS pdev object.
|
||||
* @ch_params: current channel params.
|
||||
* @hw_mode: current operating mode.
|
||||
* @target_chan: Pointer to target_chan freq.
|
||||
*
|
||||
* wrapper function for get bw_reduced_channel. this
|
||||
* function called from outside of dfs component.
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
#ifdef CONFIG_CHAN_FREQ_API
|
||||
QDF_STATUS utils_dfs_bw_reduced_channel_for_freq(struct wlan_objmgr_pdev *pdev,
|
||||
struct ch_params *ch_params,
|
||||
uint32_t *hw_mode,
|
||||
uint16_t *target_chan_freq);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* utils_dfs_init_nol() - Initialize nol from platform driver.
|
||||
* @pdev: pdev handler.
|
||||
@@ -506,6 +628,23 @@ static inline void utils_dfs_print_nol_channels(struct wlan_objmgr_pdev *pdev)
|
||||
*/
|
||||
void utils_dfs_clear_nol_channels(struct wlan_objmgr_pdev *pdev);
|
||||
|
||||
/**
|
||||
* utils_is_dfs_chan_for_freq() - is channel dfs.
|
||||
* @pdev: pdev handler.
|
||||
* @chan_freq: Channel frequency in MHZ.
|
||||
*
|
||||
* is channel dfs.
|
||||
*
|
||||
* Return: True if channel dfs, else false.
|
||||
*/
|
||||
#ifdef CONFIG_CHAN_FREQ_API
|
||||
static inline bool utils_is_dfs_chan_for_freq(struct wlan_objmgr_pdev *pdev,
|
||||
uint32_t chan_freq)
|
||||
{
|
||||
return wlan_reg_is_dfs_for_freq(pdev, chan_freq);
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* utils_is_dfs_ch() - is channel dfs.
|
||||
* @pdev: pdev handler.
|
||||
@@ -514,10 +653,12 @@ void utils_dfs_clear_nol_channels(struct wlan_objmgr_pdev *pdev);
|
||||
*
|
||||
* Return: True if channel dfs, else false.
|
||||
*/
|
||||
#ifdef CONFIG_CHAN_NUM_API
|
||||
static inline bool utils_is_dfs_ch(struct wlan_objmgr_pdev *pdev, uint32_t chan)
|
||||
{
|
||||
return wlan_reg_is_dfs_ch(pdev, chan);
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* utils_is_dfs_cfreq2_ch() - is channel dfs cfreq2.
|
||||
@@ -547,11 +688,29 @@ bool utils_is_dfs_cfreq2_ch(struct wlan_objmgr_pdev *pdev)
|
||||
*
|
||||
* Return: void
|
||||
*/
|
||||
#ifdef CONFIG_CHAN_NUM_API
|
||||
void utils_dfs_reg_update_nol_ch(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t *ch_list,
|
||||
uint8_t num_ch,
|
||||
bool nol_ch);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* utils_dfs_reg_update_nol_chan_for_freq() - set nol channel
|
||||
*
|
||||
* @pdev: pdev ptr
|
||||
* @ch_list: freq channel list to be returned
|
||||
* @num_ch: number of channels
|
||||
* @nol_ch: nol flag
|
||||
*
|
||||
* Return: void
|
||||
*/
|
||||
#ifdef CONFIG_CHAN_FREQ_API
|
||||
void utils_dfs_reg_update_nol_chan_for_freq(struct wlan_objmgr_pdev *pdev,
|
||||
uint16_t *ch_list,
|
||||
uint8_t num_ch,
|
||||
bool nol_ch);
|
||||
#endif
|
||||
/**
|
||||
* utils_dfs_freq_to_chan () - convert channel freq to channel number
|
||||
* @freq: frequency
|
||||
@@ -600,11 +759,33 @@ QDF_STATUS utils_dfs_update_cur_chan_flags(struct wlan_objmgr_pdev *pdev,
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
#ifdef CONFIG_CHAN_NUM_API
|
||||
QDF_STATUS utils_dfs_mark_leaking_ch(struct wlan_objmgr_pdev *pdev,
|
||||
enum phy_ch_width ch_width,
|
||||
uint8_t temp_ch_lst_sz,
|
||||
uint8_t *temp_ch_lst);
|
||||
#endif
|
||||
/**
|
||||
* utils_dfs_mark_leaking_chan_for_freq() - to mark channel leaking in to nol
|
||||
* @pdev: Pointer to pdev structure.
|
||||
* @ch_width: channel width
|
||||
* @temp_ch_lst_sz: the target channel list
|
||||
* @temp_ch_lst: the target frequency list
|
||||
*
|
||||
* This function removes the channels from temp channel list that
|
||||
* (if selected as target channel) will cause leakage in one of
|
||||
* the NOL channels
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
#ifdef CONFIG_CHAN_FREQ_API
|
||||
QDF_STATUS utils_dfs_mark_leaking_chan_for_freq(struct wlan_objmgr_pdev *pdev,
|
||||
enum phy_ch_width ch_width,
|
||||
uint8_t temp_ch_lst_sz,
|
||||
uint16_t *temp_ch_lst);
|
||||
#endif
|
||||
#else
|
||||
#ifdef CONFIG_CHAN_NUM_API
|
||||
static inline QDF_STATUS utils_dfs_mark_leaking_ch
|
||||
(struct wlan_objmgr_pdev *pdev,
|
||||
enum phy_ch_width ch_width,
|
||||
@@ -614,6 +795,17 @@ static inline QDF_STATUS utils_dfs_mark_leaking_ch
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
#endif
|
||||
#ifdef CONFIG_CHAN_FREQ_API
|
||||
static inline QDF_STATUS utils_dfs_mark_leaking_chan_for_freq
|
||||
(struct wlan_objmgr_pdev *pdev,
|
||||
enum phy_ch_width ch_width,
|
||||
uint8_t temp_ch_lst_sz,
|
||||
uint16_t *temp_ch_lst)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
/**
|
||||
* utils_get_dfsdomain() - Get DFS domain.
|
||||
* @pdev: Pointer to PDEV structure.
|
||||
@@ -686,10 +878,29 @@ void utils_dfs_get_nol_history_chan_list(struct wlan_objmgr_pdev *pdev,
|
||||
*
|
||||
* Return: void
|
||||
*/
|
||||
#ifdef CONFIG_CHAN_NUM_API
|
||||
void utils_dfs_reg_update_nol_history_ch(struct wlan_objmgr_pdev *pdev,
|
||||
uint8_t *ch_list,
|
||||
uint8_t num_ch,
|
||||
bool nol_history_ch);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* utils_dfs_reg_update_nol_history_chan_for_freq() - set nol history channel
|
||||
*
|
||||
* @pdev: pdev ptr
|
||||
* @ch_list: freq channel list to be returned
|
||||
* @num_ch: number of channels
|
||||
* @nol_history_ch: nol history flag
|
||||
*
|
||||
* Return: void
|
||||
*/
|
||||
#ifdef CONFIG_CHAN_FREQ_API
|
||||
void utils_dfs_reg_update_nol_history_chan_for_freq(struct wlan_objmgr_pdev *,
|
||||
uint16_t *freq_list,
|
||||
uint8_t num_ch,
|
||||
bool nol_history_ch);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* utils_dfs_is_cac_required() - Check if CAC is required on the cur_chan.
|
||||
|
@@ -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)
|
||||
|
Yeni konuda referans
Bir kullanıcı engelle