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:
Priyadarshnee S
2019-10-17 13:25:25 +05:30
işlemeyi yapan: nshrivas
ebeveyn d273250207
işleme 70e1b6f859
7 değiştirilmiş dosya ile 767 ekleme ve 13 silme

Dosyayı Görüntüle

@@ -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;
}

Dosyayı Görüntüle

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

Dosyayı Görüntüle

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

Dosyayı Görüntüle

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

Dosyayı Görüntüle

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

Dosyayı Görüntüle

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

Dosyayı Görüntüle

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