qcacmn: Add global dispatcher for host DFS confirmation check

Add tx_ops and rx_ops for host dfs confirmation check.

Change-Id: Id77b1561d933cae79276532f01de8ae7843f3bba
CRs-Fixed: 2211883
This commit is contained in:
Vignesh U 2018-04-18 11:22:16 +05:30 • committed by nshrivas
commit 0dc7935c0f
2 changed files with 52 additions and 16 deletions

View file

@ -573,6 +573,9 @@ struct wlan_lmac_if_reg_tx_ops {
* @dfs_is_pdev_5ghz: Check if the given pdev is 5GHz.
* @dfs_set_phyerr_filter_offload: Config phyerr filter offload.
* @dfs_send_offload_enable_cmd: Send dfs offload enable command to fw.
* @dfs_host_dfs_check_support: To check Host DFS confirmation feature
* support.
* @dfs_send_avg_radar_params_to_fw: Send average radar parameters to FW.
*/
struct wlan_lmac_if_dfs_tx_ops {
@ -616,6 +619,11 @@ struct wlan_lmac_if_dfs_tx_ops {
QDF_STATUS (*dfs_send_offload_enable_cmd)(
struct wlan_objmgr_pdev *pdev,
bool enable);
QDF_STATUS (*dfs_host_dfs_check_support)(struct wlan_objmgr_pdev *pdev,
bool *enabled);
QDF_STATUS (*dfs_send_avg_radar_params_to_fw)(
struct wlan_objmgr_pdev *pdev,
struct dfs_radar_found_params *params);
};
/**
@ -1023,6 +1031,7 @@ struct wlan_lmac_if_nan_rx_ops {
* @dfs_process_phyerr: Process phyerr.
* @dfs_destroy_object: Destroys the DFS object.
* @dfs_radar_enable: Enables the radar.
* @dfs_is_radar_enabled: Check if the radar is enabled.
* @dfs_control: Used to process ioctls related to DFS.
* @dfs_is_precac_timer_running: Check whether precac timer is running.
* @dfs_find_vht80_chan_for_precac: Find VHT80 channel for precac.
@ -1037,6 +1046,13 @@ struct wlan_lmac_if_nan_rx_ops {
* @dfs_stop: Clear dfs timers.
* @dfs_process_phyerr_filter_offload:Process radar event.
* @dfs_is_phyerr_filter_offload: Check whether phyerr filter is offload.
* @dfs_action_on_status: Trigger the action to be taken based on
* on host dfs status received from fw.
* @dfs_override_status_timeout: Override the value of host dfs status
* wait timeout.
* @dfs_get_override_status_timeout: Get the value of host dfs status wait
* timeout.
* @dfs_reset_spoof_test: Checks if radar detection is enabled.
*/
struct wlan_lmac_if_dfs_rx_ops {
QDF_STATUS (*dfs_get_radars)(struct wlan_objmgr_pdev *pdev);
@ -1051,24 +1067,27 @@ struct wlan_lmac_if_dfs_rx_ops {
QDF_STATUS (*dfs_radar_enable)(struct wlan_objmgr_pdev *pdev,
int no_cac,
uint32_t opmode);
void (*dfs_is_radar_enabled)(struct wlan_objmgr_pdev *pdev,
int *ignore_dfs);
QDF_STATUS (*dfs_control)(struct wlan_objmgr_pdev *pdev,
u_int id,
void *indata,
uint32_t insize,
void *outdata,
uint32_t *outsize,
int *error);
u_int id,
void *indata,
uint32_t insize,
void *outdata,
uint32_t *outsize,
int *error);
QDF_STATUS (*dfs_is_precac_timer_running)(struct wlan_objmgr_pdev *pdev,
bool *is_precac_timer_running);
QDF_STATUS (*dfs_find_vht80_chan_for_precac)(
struct wlan_objmgr_pdev *pdev,
uint32_t chan_mode,
uint8_t ch_freq_seg1,
uint32_t *cfreq1,
uint32_t *cfreq2,
uint32_t *phy_mode,
bool *dfs_set_cfreq2,
bool *set_agile);
bool *is_precac_timer_running
);
QDF_STATUS
(*dfs_find_vht80_chan_for_precac)(struct wlan_objmgr_pdev *pdev,
uint32_t chan_mode,
uint8_t ch_freq_seg1,
uint32_t *cfreq1,
uint32_t *cfreq2,
uint32_t *phy_mode,
bool *dfs_set_cfreq2,
bool *set_agile);
QDF_STATUS (*dfs_cancel_precac_timer)(struct wlan_objmgr_pdev *pdev);
QDF_STATUS (*dfs_override_precac_timeout)(
struct wlan_objmgr_pdev *pdev,
@ -1100,6 +1119,15 @@ struct wlan_lmac_if_dfs_rx_ops {
QDF_STATUS (*dfs_is_phyerr_filter_offload)(
struct wlan_objmgr_psoc *psoc,
bool *is_phyerr_filter_offload);
QDF_STATUS (*dfs_action_on_status)(struct wlan_objmgr_pdev *pdev,
u_int32_t *dfs_status_check);
QDF_STATUS (*dfs_override_status_timeout)(
struct wlan_objmgr_pdev *pdev,
int status_timeout);
QDF_STATUS (*dfs_get_override_status_timeout)(
struct wlan_objmgr_pdev *pdev,
int *status_timeout);
QDF_STATUS (*dfs_reset_spoof_test)(struct wlan_objmgr_pdev *pdev);
};
struct wlan_lmac_if_mlme_rx_ops {

View file

@ -312,6 +312,7 @@ wlan_lmac_if_umac_dfs_rx_ops_register(struct wlan_lmac_if_rx_ops *rx_ops)
dfs_rx_ops->dfs_process_phyerr = tgt_dfs_process_phyerr;
dfs_rx_ops->dfs_destroy_object = tgt_dfs_destroy_object;
dfs_rx_ops->dfs_radar_enable = tgt_dfs_radar_enable;
dfs_rx_ops->dfs_is_radar_enabled = tgt_dfs_is_radar_enabled;
dfs_rx_ops->dfs_control = tgt_dfs_control;
dfs_rx_ops->dfs_is_precac_timer_running =
tgt_dfs_is_precac_timer_running;
@ -332,6 +333,13 @@ wlan_lmac_if_umac_dfs_rx_ops_register(struct wlan_lmac_if_rx_ops *rx_ops)
tgt_dfs_process_phyerr_filter_offload;
dfs_rx_ops->dfs_is_phyerr_filter_offload =
tgt_dfs_is_phyerr_filter_offload;
dfs_rx_ops->dfs_action_on_status = tgt_dfs_action_on_status_from_fw;
dfs_rx_ops->dfs_override_status_timeout =
ucfg_dfs_set_override_status_timeout;
dfs_rx_ops->dfs_get_override_status_timeout =
ucfg_dfs_get_override_status_timeout;
dfs_rx_ops->dfs_reset_spoof_test =
tgt_dfs_reset_spoof_test;
return QDF_STATUS_SUCCESS;
}