/* * Copyright (c) 2017-2020 The Linux Foundation. All rights reserved. * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. * * * Permission to use, copy, modify, and/or distribute this software for * any purpose with or without fee is hereby granted, provided that the * above copyright notice and this permission notice appear in all * copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */ #ifndef _SPECTRAL_DEFS_I_H_ #define _SPECTRAL_DEFS_I_H_ #include #include #include #include #include #include #include #include #include #include #include #define spectral_fatal(format, args...) \ QDF_TRACE_FATAL(QDF_MODULE_ID_SPECTRAL, format, ## args) #define spectral_err(format, args...) \ QDF_TRACE_ERROR(QDF_MODULE_ID_SPECTRAL, format, ## args) #define spectral_warn(format, args...) \ QDF_TRACE_WARN(QDF_MODULE_ID_SPECTRAL, format, ## args) #define spectral_info(format, args...) \ QDF_TRACE_INFO(QDF_MODULE_ID_SPECTRAL, format, ## args) #define spectral_debug(format, args...) \ QDF_TRACE_DEBUG(QDF_MODULE_ID_SPECTRAL, format, ## args) #define spectral_fatal_nofl(format, args...) \ QDF_TRACE_FATAL_NO_FL(QDF_MODULE_ID_SPECTRAL, format, ## args) #define spectral_err_nofl(format, args...) \ QDF_TRACE_ERROR_NO_FL(QDF_MODULE_ID_SPECTRAL, format, ## args) #define spectral_warn_nofl(format, args...) \ QDF_TRACE_WARN_NO_FL(QDF_MODULE_ID_SPECTRAL, format, ## args) #define spectral_info_nofl(format, args...) \ QDF_TRACE_INFO_NO_FL(QDF_MODULE_ID_SPECTRAL, format, ## args) #define spectral_debug_nofl(format, args...) \ QDF_TRACE_DEBUG_NO_FL(QDF_MODULE_ID_SPECTRAL, format, ## args) #define spectral_fatal_rl(format, args...) \ QDF_TRACE_FATAL_RL(QDF_MODULE_ID_SPECTRAL, format, ## args) #define spectral_err_rl(format, args...) \ QDF_TRACE_ERROR_RL(QDF_MODULE_ID_SPECTRAL, format, ## args) #define spectral_warn_rl(format, args...) \ QDF_TRACE_WARN_RL(QDF_MODULE_ID_SPECTRAL, format, ## args) #define spectral_info_rl(format, args...) \ QDF_TRACE_INFO_RL(QDF_MODULE_ID_SPECTRAL, format, ## args) #define spectral_debug_rl(format, args...) \ QDF_TRACE_DEBUG_RL(QDF_MODULE_ID_SPECTRAL, format, ## args) #define spectral_fatal_rl_nofl(format, args...) \ QDF_TRACE_FATAL_RL_NO_FL(QDF_MODULE_ID_SPECTRAL, format, ## args) #define spectral_err_rl_nofl(format, args...) \ QDF_TRACE_ERROR_RL_NO_FL(QDF_MODULE_ID_SPECTRAL, format, ## args) #define spectral_warn_rl_nofl(format, args...) \ QDF_TRACE_WARN_RL_NO_FL(QDF_MODULE_ID_SPECTRAL, format, ## args) #define spectral_info_rl_nofl(format, args...) \ QDF_TRACE_INFO_RL_NO_FL(QDF_MODULE_ID_SPECTRAL, format, ## args) #define spectral_debug_rl_nofl(format, args...) \ QDF_TRACE_DEBUG_RL_NO_FL(QDF_MODULE_ID_SPECTRAL, format, ## args) /** * struct pdev_spectral - Radio specific spectral object * @psptrl_pdev: Back-pointer to struct wlan_objmgr_pdev * @spectral_sock: Spectral Netlink socket for sending samples to * applications * @psptrl_target_handle: reference to spectral lmac object * @skb: Socket buffer for sending samples to applications * @spectral_pid : Spectral port ID */ struct pdev_spectral { struct wlan_objmgr_pdev *psptrl_pdev; struct sock *spectral_sock; void *psptrl_target_handle; struct sk_buff *skb[SPECTRAL_MSG_TYPE_MAX]; uint32_t spectral_pid; }; 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 * @legacy_cbacks: Spectral legacy callbacks * * Call back functions to invoke independent of OL/DA * @sptrlc_spectral_control: * @sptrlc_ucfg_phyerr_config: ucfg handler for phyerr * @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 * @sptrlc_stop_spectral_scan: Stop spectral scan * @sptrlc_is_spectral_active: Check if spectral scan is active * @sptrlc_is_spectral_enabled: Check if spectral is enabled * @sptrlc_set_debug_level: Set debug level * @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_spectral_wmi_ops: Register Spectral WMI operations * @sptrlc_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 * @sptrlc_process_spectral_report: Process spectral report * @sptrlc_set_dma_debug: Set DMA debug */ 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, struct spectral_cp_request *sscan_req); int (*sptrlc_ucfg_phyerr_config)(struct wlan_objmgr_pdev *pdev, 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, const enum spectral_scan_mode smode, enum spectral_cp_error_code *err); QDF_STATUS (*sptrlc_get_spectral_config) (struct wlan_objmgr_pdev *pdev, struct spectral_config *sptrl_config, const enum spectral_scan_mode smode); QDF_STATUS (*sptrlc_start_spectral_scan) (struct wlan_objmgr_pdev *pdev, uint8_t vdev_id, const enum spectral_scan_mode smode, enum spectral_cp_error_code *err); QDF_STATUS (*sptrlc_stop_spectral_scan) (struct wlan_objmgr_pdev *pdev, enum spectral_scan_mode smode, enum spectral_cp_error_code *err); bool (*sptrlc_is_spectral_active)(struct wlan_objmgr_pdev *pdev, enum spectral_scan_mode smode); bool (*sptrlc_is_spectral_enabled)(struct wlan_objmgr_pdev *pdev, enum spectral_scan_mode smode); QDF_STATUS (*sptrlc_set_debug_level)(struct wlan_objmgr_pdev *pdev, uint32_t debug_level); uint32_t (*sptrlc_get_debug_level)(struct wlan_objmgr_pdev *pdev); QDF_STATUS (*sptrlc_get_spectral_capinfo)(struct wlan_objmgr_pdev *pdev, struct spectral_caps *scaps); QDF_STATUS (*sptrlc_get_spectral_diagstats) (struct wlan_objmgr_pdev *pdev, struct spectral_diag_stats *stats); 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); bool (*sptrlc_use_nl_bcast)(struct wlan_objmgr_pdev *pdev); void (*sptrlc_deregister_netlink_cb)(struct wlan_objmgr_pdev *pdev); int (*sptrlc_process_spectral_report)( struct wlan_objmgr_pdev *pdev, void *payload); QDF_STATUS (*sptrlc_set_dma_debug)( struct wlan_objmgr_pdev *pdev, enum spectral_dma_debug dma_debug_type, bool dma_debug_enable); }; #endif /* _SPECTRAL_DEFS_I_H_ */