1 /* 2 * Copyright (c) 2012-2017, 2020 The Linux Foundation. All rights reserved. 3 * 4 * Permission to use, copy, modify, and/or distribute this software for 5 * any purpose with or without fee is hereby granted, provided that the 6 * above copyright notice and this permission notice appear in all 7 * copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 10 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 11 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 12 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 13 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 14 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 15 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 16 * PERFORMANCE OF THIS SOFTWARE. 17 */ 18 19 /** 20 * DOC: os_if_wifi_pos.h 21 * This file provide declaration of wifi_pos's os_if APIs 22 */ 23 #ifndef _OS_IF_WIFI_POS_H_ 24 #define _OS_IF_WIFI_POS_H_ 25 26 #include "qdf_types.h" 27 #include "qdf_status.h" 28 29 30 /* forward declaration */ 31 struct wifi_pos_ch_info; 32 struct wlan_objmgr_psoc; 33 struct wifi_pos_driver_caps; 34 35 #ifdef WIFI_POS_CONVERGED 36 /** 37 * os_if_wifi_pos_register_nl() - abstration API to register callback with GENL 38 * socket. 39 * 40 * Return: status of operation 41 */ 42 int os_if_wifi_pos_register_nl(void); 43 44 /** 45 * os_if_wifi_pos_deregister_nl() - abstration API to deregister callback with 46 * GENL socket. 47 * 48 * Return: status of operation 49 */ 50 int os_if_wifi_pos_deregister_nl(void); 51 52 /** 53 * os_if_wifi_pos_send_peer_status() - Function to send peer status to a 54 * registered application 55 * @peer_mac: MAC address of peer 56 * @peer_status: ePeerConnected or ePeerDisconnected 57 * @peer_timing_meas_cap: 0: RTT/RTT2, 1: RTT3. Default is 0 58 * @session_id: SME session id, i.e. vdev_id 59 * @chan_info: operating channel information 60 * @dev_mode: dev mode for which indication is sent 61 * 62 * Return: none 63 */ 64 void os_if_wifi_pos_send_peer_status(struct qdf_mac_addr *peer_mac, 65 uint8_t peer_status, 66 uint8_t peer_timing_meas_cap, 67 uint8_t session_id, 68 struct wifi_pos_ch_info *chan_info, 69 enum QDF_OPMODE dev_mode); 70 71 /** 72 * os_if_wifi_pos_populate_caps() - populate oem capabilities 73 * @psoc: psoc object 74 * @caps: pointer to populate the capabilities 75 * 76 * Return: error code 77 */ 78 int os_if_wifi_pos_populate_caps(struct wlan_objmgr_psoc *psoc, 79 struct wifi_pos_driver_caps *caps); 80 #else 81 static inline int os_if_wifi_pos_register_nl(void) 82 { 83 return 0; 84 } 85 86 static inline int os_if_wifi_pos_deregister_nl(void) 87 { 88 return 0; 89 } 90 91 static inline void os_if_wifi_pos_send_peer_status( 92 struct qdf_mac_addr *peer_mac, 93 uint8_t peer_status, 94 uint8_t peer_timing_meas_cap, 95 uint8_t session_id, 96 struct wifi_pos_ch_info *chan_info, 97 enum QDF_OPMODE dev_mode) 98 { 99 } 100 101 static inline int os_if_wifi_pos_populate_caps(struct wlan_objmgr_psoc *psoc, 102 struct wifi_pos_driver_caps *caps) 103 { 104 return 0; 105 } 106 #endif 107 108 #ifdef CNSS_GENL 109 /** 110 * enum cld80211_vendor_sub_cmds 111 * @CLD80211_VENDOR_SUB_CMD_INVALID: invalid cmd type 112 * @CLD80211_VENDOR_SUB_CMD_REGISTRATION: app registration 113 * @CLD80211_VENDOR_SUB_CMD_SET_CAPS: set driver capabilities 114 * @CLD80211_VENDOR_SUB_CMD_GET_CAPS: get driver capabilities 115 * @CLD80211_VENDOR_SUB_CMD_GET_CH_INFO: get channel info 116 * @CLD80211_VENDOR_SUB_CMD_OEM_DATA: oem data req/rsp 117 * @CLD80211_VENDOR_SUB_CMD_OEM_ERROR: oem error rsp 118 * @CLD80211_VENDOR_SUB_CMD_PEER_STATUS_IND: peer status indication 119 * @CLD80211_VENDOR_SUB_CMD_MAX: Max cld80211 vendor sub cmds 120 */ 121 enum cld80211_vendor_sub_cmds { 122 CLD80211_VENDOR_SUB_CMD_INVALID = 0, 123 CLD80211_VENDOR_SUB_CMD_REGISTRATION = 1, 124 CLD80211_VENDOR_SUB_CMD_SET_CAPS = 2, 125 CLD80211_VENDOR_SUB_CMD_GET_CAPS = 3, 126 CLD80211_VENDOR_SUB_CMD_GET_CH_INFO = 4, 127 CLD80211_VENDOR_SUB_CMD_OEM_DATA = 5, 128 CLD80211_VENDOR_SUB_CMD_OEM_ERROR = 6, 129 CLD80211_VENDOR_SUB_CMD_PEER_STATUS_IND = 7, 130 /* keep last */ 131 CLD80211_VENDOR_SUB_CMD__AFTER_LAST, 132 CLD80211_VENDOR_SUB_CMD_MAX = 133 CLD80211_VENDOR_SUB_CMD__AFTER_LAST - 1 134 }; 135 136 /** 137 * enum cld80211_sub_attr_cap_rsp - Capability response sub attribute 138 * @CLD80211_SUB_ATTR_CAPS_INVALID: Invalid capability 139 * @CLD80211_SUB_ATTR_CAPS_OEM_TARGET_SIGNATURE: OEM target signature 140 * @CLD80211_SUB_ATTR_CAPS_OEM_TARGET_TYPE: OEM target type 141 * @CLD80211_SUB_ATTR_CAPS_OEM_FW_VERSION: OEM firmware version 142 * @CLD80211_SUB_ATTR_CAPS_DRIVER_VERSION_MAJOR: Driver version major 143 * @CLD80211_SUB_ATTR_CAPS_DRIVER_VERSION_MINOR: Driver version minor 144 * @CLD80211_SUB_ATTR_CAPS_DRIVER_VERSION_PATCH: Driver version patch 145 * @CLD80211_SUB_ATTR_CAPS_DRIVER_VERSION_BUILD: Driver version build 146 * @CLD80211_SUB_ATTR_CAPS_ALLOWED_DWELL_TIME_MIN: Allowed dwell time min 147 * @CLD80211_SUB_ATTR_CAPS_ALLOWED_DWELL_TIME_MAX: Allowed dwell time max 148 * @CLD80211_SUB_ATTR_CAPS_CURRENT_DWELL_TIME_MIN: Current dwell time min 149 * @CLD80211_SUB_ATTR_CAPS_CURRENT_DWELL_TIME_MAX: Current dwell time max 150 * @CLD80211_SUB_ATTR_CAPS_SUPPORTED_BANDS: Supported bands 151 * @CLD80211_SUB_ATTR_CAPS_USER_DEFINED_CAPS: User defined capabilities 152 * @CLD80211_SUB_ATTR_CAPS_MAX: Max number for CAP sub attribute 153 * 154 */ 155 enum cld80211_sub_attr_cap_rsp { 156 CLD80211_SUB_ATTR_CAPS_INVALID = 0, 157 CLD80211_SUB_ATTR_CAPS_OEM_TARGET_SIGNATURE = 1, 158 CLD80211_SUB_ATTR_CAPS_OEM_TARGET_TYPE = 2, 159 CLD80211_SUB_ATTR_CAPS_OEM_FW_VERSION = 3, 160 CLD80211_SUB_ATTR_CAPS_DRIVER_VERSION_MAJOR = 4, 161 CLD80211_SUB_ATTR_CAPS_DRIVER_VERSION_MINOR = 5, 162 CLD80211_SUB_ATTR_CAPS_DRIVER_VERSION_PATCH = 6, 163 CLD80211_SUB_ATTR_CAPS_DRIVER_VERSION_BUILD = 7, 164 CLD80211_SUB_ATTR_CAPS_ALLOWED_DWELL_TIME_MIN = 8, 165 CLD80211_SUB_ATTR_CAPS_ALLOWED_DWELL_TIME_MAX = 9, 166 CLD80211_SUB_ATTR_CAPS_CURRENT_DWELL_TIME_MIN = 10, 167 CLD80211_SUB_ATTR_CAPS_CURRENT_DWELL_TIME_MAX = 11, 168 CLD80211_SUB_ATTR_CAPS_SUPPORTED_BANDS = 12, 169 CLD80211_SUB_ATTR_CAPS_USER_DEFINED_CAPS = 13, 170 171 /* keep last */ 172 CLD80211_SUB_ATTR_CAPS_AFTER_LAST, 173 CLD80211_SUB_ATTR_CAPS_MAX = 174 CLD80211_SUB_ATTR_CAPS_AFTER_LAST - 1 175 }; 176 177 /** 178 * enum cld80211_sub_attr_channel_rsp - Chan info response sub attribute 179 * @CLD80211_SUB_ATTR_CH_RESP_INVALID: Invalid channel resp 180 * @CLD80211_SUB_ATTR_CH_MORE_DATA: More date sub attr for frag response 181 * @CLD80211_SUB_ATTR_CHANNEL_NUM_CHAN: Number of channels in response 182 * @CLD80211_SUB_ATTR_CHANNEL_LIST: Channel list nesting 183 * @CLD80211_SUB_ATTR_CH_CHAN_ID: Channel number 184 * @CLD80211_SUB_ATTR_CH_MHZ: Channel frequency 185 * @CLD80211_SUB_ATTR_CH_BAND_CF_1: Center frequency 1 186 * @CLD80211_SUB_ATTR_CH_BAND_CF_2: Center frequency 2 187 * @CLD80211_SUB_ATTR_CH_INFO: channel info 188 * @CLD80211_SUB_ATTR_CH_REG_INFO_1: regulatory info field 1 189 * @CLD80211_SUB_ATTR_CH_REG_INFO_2: regulatory info field 2 190 * @CLD80211_SUB_ATTR_CAPS_MAX: Max number for CHAN Info sub attribute 191 * 192 */ 193 enum cld80211_sub_attr_channel_rsp { 194 CLD80211_SUB_ATTR_CH_RESP_INVALID = 0, 195 CLD80211_SUB_ATTR_CH_MORE_DATA = 1, 196 CLD80211_SUB_ATTR_CHANNEL_NUM_CHAN = 2, 197 CLD80211_SUB_ATTR_CH_LIST = 3, 198 /* CH_* belongs to CH_LIST */ 199 CLD80211_SUB_ATTR_CH_CHAN_ID = 4, 200 CLD80211_SUB_ATTR_CH_MHZ = 5, 201 CLD80211_SUB_ATTR_CH_BAND_CF_1 = 6, 202 CLD80211_SUB_ATTR_CH_BAND_CF_2 = 7, 203 CLD80211_SUB_ATTR_CH_INFO = 8, 204 CLD80211_SUB_ATTR_CH_REG_INFO_1 = 9, 205 CLD80211_SUB_ATTR_CH_REG_INFO_2 = 10, 206 207 /* keep last */ 208 CLD80211_SUB_ATTR_CH_AFTER_LAST, 209 CLD80211_SUB_ATTR_CH_MAX = 210 CLD80211_SUB_ATTR_CH_AFTER_LAST - 1 211 212 }; 213 214 /** 215 * enum cld80211_sub_attr_oem_data_req - OEM data req sub attribute 216 * @CLD80211_SUB_ATTR_MSG_OEM_DATA_INVALID: Invalid OEM data request 217 * @CLD80211_SUB_ATTR_MSG_OEM_DATA_FW: Data to Firmware 218 * @CLD80211_SUB_ATTR_MSG_OEM_DATA_DRIVER: Data to driver 219 * @CLD80211_SUB_ATTR_MSG_OEM_DATA_REQ_MAX: Max number for OEM data req sub 220 * attribute 221 * 222 * OEM data request sub attributes are NLA attributes in NLA type OEM data 223 * request. 224 * 225 */ 226 enum cld80211_sub_attr_oem_data_req { 227 CLD80211_SUB_ATTR_MSG_OEM_DATA_INVALID = 0, 228 CLD80211_SUB_ATTR_MSG_OEM_DATA_FW = 1, 229 CLD80211_SUB_ATTR_MSG_OEM_DATA_DRIVER = 2, 230 231 /* keep last */ 232 CLD80211_SUB_ATTR_MSG_OEM_DATA_REQ_AFTER_LAST, 233 CLD80211_SUB_ATTR_MSG_OEM_DATA_REQ_MAX = 234 CLD80211_SUB_ATTR_MSG_OEM_DATA_REQ_AFTER_LAST - 1 235 }; 236 237 /** 238 * enum cld80211_sub_attr_oem_data_resp - OEM message sub attribute 239 * @CLD80211_SUB_ATTR_OEM_DATA_INVALID: Invalid oem data resp 240 * @CLD80211_SUB_ATTR_OEM_MORE_DATA: more date sub attribute 241 * @CLD80211_SUB_ATTR_BINARY_DATA: Binary data sub attribute 242 * @CLD80211_SUB_ATTR_OEM_DATA_RESP_MAX: Max number for OEM data resp 243 * sub attribute 244 * 245 * OEM message sub attributes are interface between apps and driver to 246 * process NLA type request and response messages. 247 * 248 */ 249 enum cld80211_sub_attr_oem_data_resp { 250 CLD80211_SUB_ATTR_OEM_DATA_INVALID = 0, 251 CLD80211_SUB_ATTR_OEM_MORE_DATA = 1, 252 CLD80211_SUB_ATTR_BINARY_DATA = 2, 253 254 /* keep last */ 255 CLD80211_SUB_ATTR_OEM_DATA_RESP_AFTER_LAST, 256 CLD80211_SUB_ATTR_OEM_DATA_RESP_MAX = 257 CLD80211_SUB_ATTR_OEM_DATA_RESP_AFTER_LAST - 1 258 }; 259 260 /** 261 * enum cld80211_sub_attr_peer_info - peer info sub attribute 262 * @CLD80211_SUB_ATTR_PEER_INVALID: Invalid peer info 263 * @CLD80211_SUB_ATTR_PEER_MAC_ADDR: peer mac address 264 * @CLD80211_SUB_ATTR_PEER_STATUS: peer status 265 * @CLD80211_SUB_ATTR_PEER_VDEV_ID: peer vdevid 266 * @CLD80211_SUB_ATTR_PEER_CAPABILITY: peer capabilities 267 * @CLD80211_SUB_ATTR_PEER_RESERVED: reserved bytes 268 * @CLD80211_SUB_ATTR_PEER_CHAN_INFO: peer channel info 269 * 270 */ 271 enum cld80211_sub_attr_peer_info { 272 CLD80211_SUB_ATTR_PEER_INVALID = 0, 273 CLD80211_SUB_ATTR_PEER_MAC_ADDR = 1, 274 CLD80211_SUB_ATTR_PEER_STATUS = 2, 275 CLD80211_SUB_ATTR_PEER_VDEV_ID = 3, 276 CLD80211_SUB_ATTR_PEER_CAPABILITY = 4, 277 CLD80211_SUB_ATTR_PEER_RESERVED = 5, 278 CLD80211_SUB_ATTR_PEER_CHAN_INFO = 6, 279 280 /* keep last */ 281 CLD80211_SUB_ATTR_PEER_AFTER_LAST, 282 CLD80211_SUB_ATTR_PEER_MAX = 283 CLD80211_SUB_ATTR_PEER_AFTER_LAST - 1 284 }; 285 #endif 286 #endif /* _OS_IF_WIFI_POS_H_ */ 287