xref: /wlan-dirver/qca-wifi-host-cmn/os_if/linux/ftm/inc/wlan_cfg80211_ftm.h (revision fa47688f04ef001a6dcafaebdcc3c031f15ee75e)
1 /*
2  * Copyright (c) 2018-2019 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: declares driver FTM functions interfacing with linux kernel
21  */
22 
23 #ifndef _WLAN_CFG80211_FTM_H_
24 #define _WLAN_CFG80211_FTM_H_
25 
26 /**
27  * enum wlan_cfg80211_ftm_attr - FTM Netlink attributes
28  * @WLAN_CFG80211_FTM_ATTR_INVALID: attribute is invalid
29  * @WLAN_CFG80211_FTM_ATTR_CMD: attribute type is FTM command
30  * @WLAN_CFG80211_FTM_ATTR_DATA: attribute type is data
31  *
32  * @WLAN_CFG80211_FTM_ATTR_MAX: Max number of attributes
33  */
34 enum wlan_cfg80211_ftm_attr {
35 	WLAN_CFG80211_FTM_ATTR_INVALID = 0,
36 	WLAN_CFG80211_FTM_ATTR_CMD = 1,
37 	WLAN_CFG80211_FTM_ATTR_DATA = 2,
38 
39 	/* keep last */
40 	WLAN_CFG80211_FTM_ATTR_MAX,
41 };
42 
43 /**
44  * enum wlan_cfg80211_ftm_cmd - FTM command types
45  * @WLAN_CFG80211_FTM_CMD_WLAN_FTM: command is of type FTM
46  */
47 enum wlan_cfg80211_ftm_cmd {
48 	WLAN_CFG80211_FTM_CMD_WLAN_FTM = 0,
49 };
50 
51 #define WLAN_FTM_DATA_MAX_LEN 2048
52 
53 /**
54  * wlan_cfg80211_ftm_testmode_cmd() - process cfg80211 testmode command
55  * @pdev: pdev object
56  * @data: ftm testmode command data of type void
57  * @len: length of the data
58  *
59  * Return: 0 on success or -Eerrno otherwise
60  */
61 int wlan_cfg80211_ftm_testmode_cmd(struct wlan_objmgr_pdev *pdev,
62 				void *data, uint32_t len);
63 
64 /**
65  * wlan_cfg80211_ftm_rx_event() - handle the received ftm event
66  * @pdev: pdev object
67  * @data: ftm event data
68  * @len: length of the data
69  *
70  * Return: QDF_STATUS_SUCCESS on success or QDF_STATUS_E errno otherwise
71  */
72 #ifdef QCA_WIFI_FTM_NL80211
73 QDF_STATUS wlan_cfg80211_ftm_rx_event(struct wlan_objmgr_pdev *pdev,
74 					uint8_t *data, uint32_t len);
75 #else
76 static inline QDF_STATUS
77 wlan_cfg80211_ftm_rx_event(struct wlan_objmgr_pdev *pdev,
78 			   uint8_t *data, uint32_t len)
79 {
80 	return QDF_STATUS_E_NOSUPPORT;
81 }
82 #endif
83 #endif
84