xref: /wlan-dirver/qca-wifi-host-cmn/os_if/linux/wifi_pos/inc/os_if_wifi_pos.h (revision 6d768494e5ce14eb1603a695c86739d12ecc6ec2)
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