qcacmn: Add start scan response WMI event

Add support for processing the start scan response
WMI event. FW provides the necessary information to
segregate FFT bins to pri80, 5 MHz and sec80 in
160/165 MHz. Also, cfreq2 and the channel width is
provided to FW via WMI command.

CRs-Fixed: 2672081
Change-Id: I666b6c18a63d5d01117aa9cbd611691c6f8b2793
This commit is contained in:
Edayilliam Jayadev
2020-04-29 21:54:25 +05:30
committad av nshrivas
förälder 18bbaf7484
incheckning abdb33bb00
20 ändrade filer med 1621 tillägg och 385 borttagningar

Visa fil

@@ -483,6 +483,8 @@ spectral_ctx_deinit(struct spectral_context *sc)
sc->sptrlc_ucfg_phyerr_config = NULL;
sc->sptrlc_pdev_spectral_init = NULL;
sc->sptrlc_pdev_spectral_deinit = NULL;
sc->sptrlc_psoc_spectral_init = NULL;
sc->sptrlc_psoc_spectral_deinit = NULL;
sc->sptrlc_set_spectral_config = NULL;
sc->sptrlc_get_spectral_config = NULL;
sc->sptrlc_start_spectral_scan = NULL;

Visa fil

@@ -93,16 +93,21 @@ struct pdev_spectral {
uint32_t spectral_pid;
};
struct wmi_spectral_cmd_ops;
struct spectral_wmi_ops;
struct spectral_tgt_ops;
/**
* struct spectral_context - spectral global context
* @psoc_obj: Reference to psoc global object
* @psoc_target_handle: Reference to psoc target_if object
* @spectral_legacy_cbacks: Spectral legacy callbacks
*
* Call back functions to invoke independent of OL/DA
* @sptrlc_ucfg_phyerr_config: ucfg handler for phyerr
* @sptrlc_pdev_spectral_init: Init spectral
* @sptrlc_pdev_spectral_deinit: Deinit spectral
* @sptrlc_pdev_spectral_init: Init pdev Spectral
* @sptrlc_pdev_spectral_deinit: Deinit pdev Spectral
* @sptrlc_psoc_spectral_init: Spectral psoc init
* @sptrlc_psoc_spectral_deinit: Spectral psoc deinit
* @sptrlc_set_spectral_config: Set spectral configurations
* @sptrlc_get_spectral_config: Get spectral configurations
* @sptrlc_start_spectral_scan: Start spectral scan
@@ -113,7 +118,8 @@ struct wmi_spectral_cmd_ops;
* @sptrlc_get_debug_level: Get debug level
* @sptrlc_get_spectral_capinfo: Get spectral capability info
* @sptrlc_get_spectral_diagstats: Get spectral diag status
* @sptrlc_register_wmi_spectral_cmd_ops: Register wmi_spectral_cmd operations
* @sptrlc_register_spectral_wmi_ops: Register Spectral WMI operations
* @ptrlc_register_spectral_tgt_ops: Register Spectral target operations
* @sptrlc_register_netlink_cb: Register Netlink callbacks
* @sptrlc_use_nl_bcast: Check whether to use Netlink broadcast/unicast
* @sptrlc_deregister_netlink_cb: De-register Netlink callbacks
@@ -122,6 +128,7 @@ struct wmi_spectral_cmd_ops;
*/
struct spectral_context {
struct wlan_objmgr_psoc *psoc_obj;
void *psoc_target_handle;
struct spectral_legacy_cbacks legacy_cbacks;
QDF_STATUS (*sptrlc_spectral_control)
(struct wlan_objmgr_pdev *pdev,
@@ -130,6 +137,8 @@ struct spectral_context {
void *ad);
void * (*sptrlc_pdev_spectral_init)(struct wlan_objmgr_pdev *pdev);
void (*sptrlc_pdev_spectral_deinit)(struct wlan_objmgr_pdev *pdev);
void * (*sptrlc_psoc_spectral_init)(struct wlan_objmgr_psoc *psoc);
void (*sptrlc_psoc_spectral_deinit)(struct wlan_objmgr_psoc *psoc);
QDF_STATUS (*sptrlc_set_spectral_config)
(struct wlan_objmgr_pdev *pdev,
const struct spectral_cp_param *param,
@@ -159,9 +168,12 @@ struct spectral_context {
QDF_STATUS (*sptrlc_get_spectral_diagstats)
(struct wlan_objmgr_pdev *pdev,
struct spectral_diag_stats *stats);
void (*sptrlc_register_wmi_spectral_cmd_ops)(
struct wlan_objmgr_pdev *pdev,
struct wmi_spectral_cmd_ops *cmd_ops);
QDF_STATUS (*sptrlc_register_spectral_wmi_ops)(
struct wlan_objmgr_psoc *psoc,
struct spectral_wmi_ops *wmi_ops);
QDF_STATUS (*sptrlc_register_spectral_tgt_ops)(
struct wlan_objmgr_psoc *psoc,
struct spectral_tgt_ops *tgt_ops);
void (*sptrlc_register_netlink_cb)(
struct wlan_objmgr_pdev *pdev,
struct spectral_nl_cb *nl_cb);

Visa fil

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2011,2017-2019 The Linux Foundation. All rights reserved.
* Copyright (c) 2011,2017-2020 The Linux Foundation. All rights reserved.
*
*
* Permission to use, copy, modify, and/or distribute this software for
@@ -26,6 +26,14 @@
MODULE_LICENSE("Dual BSD/GPL");
struct dispatcher_spectral_ops sops = {
.spectral_pdev_open_handler = spectral_pdev_open,
.spectral_psoc_open_handler = wlan_spectral_psoc_open,
.spectral_psoc_close_handler = wlan_spectral_psoc_close,
.spectral_psoc_enable_handler = wlan_spectral_psoc_enable,
.spectral_psoc_disable_handler = wlan_spectral_psoc_disable,
};
/**
* spectral_init_module() - Initialize Spectral module
*
@@ -43,9 +51,7 @@ int spectral_init_module(void)
/* register spectral rxops */
wlan_lmac_if_sptrl_set_rx_ops_register_cb
(wlan_lmac_if_sptrl_register_rx_ops);
/* register spectral pdev open handler */
dispatcher_register_spectral_pdev_open_handler(
spectral_pdev_open);
dispatcher_register_spectral_ops_handler(&sops);
return 0;
}

Visa fil

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2017-2019 The Linux Foundation. All rights reserved.
* Copyright (c) 2017-2020 The Linux Foundation. All rights reserved.
*
*
* Permission to use, copy, modify, and/or distribute this software for
@@ -48,6 +48,8 @@ spectral_ctx_init_ol(struct spectral_context *sc)
sc->sptrlc_spectral_control = tgt_spectral_control;
sc->sptrlc_pdev_spectral_init = tgt_pdev_spectral_init;
sc->sptrlc_pdev_spectral_deinit = tgt_pdev_spectral_deinit;
sc->sptrlc_psoc_spectral_init = tgt_psoc_spectral_init;
sc->sptrlc_psoc_spectral_deinit = tgt_psoc_spectral_deinit;
sc->sptrlc_set_spectral_config = tgt_set_spectral_config;
sc->sptrlc_get_spectral_config = tgt_get_spectral_config;
sc->sptrlc_start_spectral_scan = tgt_start_spectral_scan;
@@ -58,8 +60,8 @@ spectral_ctx_init_ol(struct spectral_context *sc)
sc->sptrlc_get_debug_level = tgt_get_debug_level;
sc->sptrlc_get_spectral_capinfo = tgt_get_spectral_capinfo;
sc->sptrlc_get_spectral_diagstats = tgt_get_spectral_diagstats;
sc->sptrlc_register_wmi_spectral_cmd_ops =
tgt_register_wmi_spectral_cmd_ops;
sc->sptrlc_register_spectral_wmi_ops = tgt_register_spectral_wmi_ops;
sc->sptrlc_register_spectral_tgt_ops = tgt_register_spectral_tgt_ops;
sc->sptrlc_register_netlink_cb = tgt_spectral_register_nl_cb;
sc->sptrlc_use_nl_bcast = tgt_spectral_use_nl_bcast;
sc->sptrlc_deregister_netlink_cb = tgt_spectral_deregister_nl_cb;