1 /* 2 * Copyright (c) 2017-2018 The Linux Foundation. All rights reserved. 3 * 4 * 5 * Permission to use, copy, modify, and/or distribute this software for 6 * any purpose with or without fee is hereby granted, provided that the 7 * above copyright notice and this permission notice appear in all 8 * copies. 9 * 10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 11 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 12 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 13 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 14 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 15 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 16 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 17 * PERFORMANCE OF THIS SOFTWARE. 18 */ 19 20 #ifndef _SPECTRAL_DEFS_I_H_ 21 #define _SPECTRAL_DEFS_I_H_ 22 23 #include <wlan_objmgr_cmn.h> 24 #include <wlan_objmgr_global_obj.h> 25 #include <wlan_objmgr_psoc_obj.h> 26 #include <wlan_objmgr_pdev_obj.h> 27 #include <wlan_objmgr_vdev_obj.h> 28 #include <qdf_list.h> 29 #include <qdf_timer.h> 30 #include <qdf_util.h> 31 #include <wlan_spectral_public_structs.h> 32 #include <wlan_spectral_utils_api.h> 33 #include <spectral_ioctl.h> 34 35 #define spectral_fatal(format, args...) \ 36 QDF_TRACE_FATAL(QDF_MODULE_ID_SPECTRAL, format, ## args) 37 #define spectral_err(format, args...) \ 38 QDF_TRACE_ERROR(QDF_MODULE_ID_SPECTRAL, format, ## args) 39 #define spectral_warn(format, args...) \ 40 QDF_TRACE_WARN(QDF_MODULE_ID_SPECTRAL, format, ## args) 41 #define spectral_info(format, args...) \ 42 QDF_TRACE_INFO(QDF_MODULE_ID_SPECTRAL, format, ## args) 43 #define spectral_debug(format, args...) \ 44 QDF_TRACE_DEBUG(QDF_MODULE_ID_SPECTRAL, format, ## args) 45 46 #define spectral_fatal_nofl(format, args...) \ 47 QDF_TRACE_FATAL_NO_FL(QDF_MODULE_ID_SPECTRAL, format, ## args) 48 #define spectral_err_nofl(format, args...) \ 49 QDF_TRACE_ERROR_NO_FL(QDF_MODULE_ID_SPECTRAL, format, ## args) 50 #define spectral_warn_nofl(format, args...) \ 51 QDF_TRACE_WARN_NO_FL(QDF_MODULE_ID_SPECTRAL, format, ## args) 52 #define spectral_info_nofl(format, args...) \ 53 QDF_TRACE_INFO_NO_FL(QDF_MODULE_ID_SPECTRAL, format, ## args) 54 #define spectral_debug_nofl(format, args...) \ 55 QDF_TRACE_DEBUG_NO_FL(QDF_MODULE_ID_SPECTRAL, format, ## args) 56 57 /** 58 * struct pdev_spectral - Radio specific spectral object 59 * @psptrl_pdev: Back-pointer to struct wlan_objmgr_pdev 60 * @spectral_sock: Spectral Netlink socket for sending samples to 61 * applications 62 * @psptrl_target_handle: reference to spectral lmac object 63 * @skb: Socket buffer for sending samples to applications 64 * @spectral_pid : Spectral port ID 65 */ 66 struct pdev_spectral { 67 struct wlan_objmgr_pdev *psptrl_pdev; 68 struct sock *spectral_sock; 69 void *psptrl_target_handle; 70 struct sk_buff *skb; 71 uint32_t spectral_pid; 72 }; 73 74 struct wmi_spectral_cmd_ops; 75 /** 76 * struct spectral_context - spectral global context 77 * @psoc_obj: Reference to psoc global object 78 * @spectral_legacy_cbacks: Spectral legacy callbacks 79 * 80 * Call back functions to invoke independent of OL/DA 81 * @sptrlc_ucfg_phyerr_config: ucfg handler for phyerr 82 * @sptrlc_pdev_spectral_init: Init spectral 83 * @sptrlc_pdev_spectral_deinit: Deinit spectral 84 * @sptrlc_set_spectral_config: Set spectral configurations 85 * @sptrlc_get_spectral_config: Get spectral configurations 86 * @sptrlc_start_spectral_scan: Start spectral scan 87 * @sptrlc_stop_spectral_scan: Stop spectral scan 88 * @sptrlc_is_spectral_active: Check if spectral scan is active 89 * @sptrlc_is_spectral_enabled: Check if spectral is enabled 90 * @sptrlc_set_debug_level: Set debug level 91 * @sptrlc_get_debug_level: Get debug level 92 * @sptrlc_get_spectral_capinfo: Get spectral capability info 93 * @sptrlc_get_spectral_diagstats: Get spectral diag status 94 * @sptrlc_register_wmi_spectral_cmd_ops: Register wmi_spectral_cmd operations 95 * @sptrlc_register_netlink_cb: Register Netlink callbacks 96 * @sptrlc_use_nl_bcast: Check whether to use Netlink broadcast/unicast 97 * @sptrlc_deregister_netlink_cb: De-register Netlink callbacks 98 * @sptrlc_process_spectral_report: Process spectral report 99 */ 100 struct spectral_context { 101 struct wlan_objmgr_psoc *psoc_obj; 102 struct spectral_legacy_cbacks legacy_cbacks; 103 int (*sptrlc_spectral_control)(struct wlan_objmgr_pdev *pdev, 104 u_int id, void *indata, 105 uint32_t insize, void *outdata, 106 uint32_t *outsize); 107 int (*sptrlc_ucfg_phyerr_config)(struct wlan_objmgr_pdev *pdev, 108 void *ad); 109 void * (*sptrlc_pdev_spectral_init)(struct wlan_objmgr_pdev *pdev); 110 void (*sptrlc_pdev_spectral_deinit)(struct wlan_objmgr_pdev *pdev); 111 int (*sptrlc_set_spectral_config)(struct wlan_objmgr_pdev *pdev, 112 const uint32_t threshtype, 113 const uint32_t value); 114 void (*sptrlc_get_spectral_config)( 115 struct wlan_objmgr_pdev *pdev, 116 struct spectral_config *sptrl_config); 117 int (*sptrlc_start_spectral_scan)(struct wlan_objmgr_pdev *pdev); 118 void (*sptrlc_stop_spectral_scan)(struct wlan_objmgr_pdev *pdev); 119 bool (*sptrlc_is_spectral_active)(struct wlan_objmgr_pdev *pdev); 120 bool (*sptrlc_is_spectral_enabled)(struct wlan_objmgr_pdev *pdev); 121 int (*sptrlc_set_debug_level)(struct wlan_objmgr_pdev *pdev, 122 uint32_t debug_level); 123 uint32_t (*sptrlc_get_debug_level)(struct wlan_objmgr_pdev *pdev); 124 void (*sptrlc_get_spectral_capinfo)(struct wlan_objmgr_pdev *pdev, 125 void *outdata); 126 void (*sptrlc_get_spectral_diagstats)(struct wlan_objmgr_pdev *pdev, 127 void *outdata); 128 void (*sptrlc_register_wmi_spectral_cmd_ops)( 129 struct wlan_objmgr_pdev *pdev, 130 struct wmi_spectral_cmd_ops *cmd_ops); 131 void (*sptrlc_register_netlink_cb)( 132 struct wlan_objmgr_pdev *pdev, 133 struct spectral_nl_cb *nl_cb); 134 bool (*sptrlc_use_nl_bcast)(struct wlan_objmgr_pdev *pdev); 135 void (*sptrlc_deregister_netlink_cb)(struct wlan_objmgr_pdev *pdev); 136 int (*sptrlc_process_spectral_report)( 137 struct wlan_objmgr_pdev *pdev, 138 void *payload); 139 }; 140 141 #endif /* _SPECTRAL_DEFS_I_H_ */ 142