xref: /wlan-dirver/qcacld-3.0/os_if/nan/inc/os_if_nan.h (revision a24510696edc222f9e9b89d388912a346710831d)
1 /*
2  * Copyright (c) 2012-2021 The Linux Foundation. All rights reserved.
3  * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
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 /**
21  * DOC: declares nan component os interface APIs
22  */
23 
24 #ifndef _OS_IF_NAN_H_
25 #define _OS_IF_NAN_H_
26 
27 #include "qdf_types.h"
28 #ifdef WLAN_FEATURE_NAN
29 #include "nan_public_structs.h"
30 #include "nan_ucfg_api.h"
31 #include "qca_vendor.h"
32 
33 /* QCA_NL80211_VENDOR_SUBCMD_NAN_EXT policy */
34 extern const struct nla_policy nan_attr_policy[
35 			QCA_WLAN_VENDOR_ATTR_NAN_PARAMS_MAX + 1];
36 
37 /* QCA_NL80211_VENDOR_SUBCMD_NDP policy */
38 extern const struct nla_policy vendor_attr_policy[
39 			QCA_WLAN_VENDOR_ATTR_NDP_PARAMS_MAX + 1];
40 
41 /**
42  * struct ndi_find_vdev_filter - find vdev filter object. this can be extended
43  * @ifname:           interface name of vdev
44  * @found_vdev:       found vdev object matching one or more of above params
45  */
46 struct ndi_find_vdev_filter {
47 	const char *ifname;
48 	struct wlan_objmgr_vdev *found_vdev;
49 };
50 
51 /**
52  * os_if_nan_process_ndp_cmd: os_if api to handle nan request message
53  * @psoc: pointer to psoc object
54  * @data: request data. contains vendor cmd tlvs
55  * @data_len: length of data
56  * @is_ndp_allowed: Indicates whether to allow NDP creation.
57  *		    NDI creation is always allowed.
58  * @wdev: Wireless device structure pointer
59  *
60  * Return: status of operation
61  */
62 int os_if_nan_process_ndp_cmd(struct wlan_objmgr_psoc *psoc,
63 			      const void *data, int data_len,
64 			      bool is_ndp_allowed,
65 			      struct wireless_dev *wdev);
66 
67 /**
68  * os_if_nan_register_hdd_callbacks: os_if api to register hdd callbacks
69  * @psoc: pointer to psoc object
70  * @cb_obj: struct pointer containing callbacks
71  *
72  * Return: status of operation
73  */
74 int os_if_nan_register_hdd_callbacks(struct wlan_objmgr_psoc *psoc,
75 				     struct nan_callbacks *cb_obj);
76 
77 /**
78  * os_if_nan_register_lim_callbacks: os_if api to register lim callbacks
79  * @psoc: pointer to psoc object
80  * @cb_obj: struct pointer containing callbacks
81  *
82  * Return: status of operation
83  */
84 int os_if_nan_register_lim_callbacks(struct wlan_objmgr_psoc *psoc,
85 				     struct nan_callbacks *cb_obj);
86 
87 /**
88  * os_if_nan_post_ndi_create_rsp: os_if api to pos ndi create rsp to umac nan
89  * component
90  * @psoc: pointer to psoc object
91  * @vdev_id: vdev id of ndi
92  * @success: if create was success or failure
93  *
94  * Return: None
95  */
96 void os_if_nan_post_ndi_create_rsp(struct wlan_objmgr_psoc *psoc,
97 				   uint8_t vdev_id, bool success);
98 
99 /**
100  * os_if_nan_post_ndi_delete_rsp: os_if api to pos ndi delete rsp to umac nan
101  * component
102  * @psoc: pointer to psoc object
103  * @vdev_id: vdev id of ndi
104  * @success: if delete was success or failure
105  *
106  * Return: None
107  */
108 void os_if_nan_post_ndi_delete_rsp(struct wlan_objmgr_psoc *psoc,
109 				   uint8_t vdev_id, bool success);
110 
111 /**
112  * os_if_nan_ndi_session_end: os_if api to process ndi session end
113  * component
114  * @vdev: pointer to vdev deleted
115  *
116  * Return: None
117  */
118 void os_if_nan_ndi_session_end(struct wlan_objmgr_vdev *vdev);
119 
120 /**
121  * os_if_nan_set_ndi_state: os_if api set NDI state
122  * @vdev: pointer to vdev deleted
123  * @state: value to set
124  *
125  * Return: status of operation
126  */
127 static inline QDF_STATUS os_if_nan_set_ndi_state(struct wlan_objmgr_vdev *vdev,
128 						 uint32_t state)
129 {
130 	return ucfg_nan_set_ndi_state(vdev, state);
131 }
132 
133 /**
134  * os_if_nan_set_ndp_create_transaction_id: set ndp create transaction id
135  * @vdev: pointer to vdev object
136  * @val: value to set
137  *
138  * Return: status of operation
139  */
140 static inline QDF_STATUS os_if_nan_set_ndp_create_transaction_id(
141 						struct wlan_objmgr_vdev *vdev,
142 						uint16_t val)
143 {
144 	return ucfg_nan_set_ndp_create_transaction_id(vdev, val);
145 }
146 
147 /**
148  * os_if_nan_set_ndp_delete_transaction_id: set ndp delete transaction id
149  * @vdev: pointer to vdev object
150  * @val: value to set
151  *
152  * Return: status of operation
153  */
154 static inline QDF_STATUS os_if_nan_set_ndp_delete_transaction_id(
155 						struct wlan_objmgr_vdev *vdev,
156 						uint16_t val)
157 {
158 	return ucfg_nan_set_ndp_delete_transaction_id(vdev, val);
159 }
160 
161 /**
162  * os_if_process_nan_req: os_if api to handle NAN requests attached to the
163  * vendor command QCA_NL80211_VENDOR_SUBCMD_NAN_EXT
164  * @pdev: pointer to pdev object
165  * @vdev_id: NAN vdev id
166  * @data: request data. contains vendor cmd tlvs
167  * @data_len: length of data
168  *
169  * Return: status of operation
170  */
171 int os_if_process_nan_req(struct wlan_objmgr_pdev *pdev, uint8_t vdev_id,
172 			  const void *data, int data_len);
173 #else
174 
175 static inline void os_if_nan_post_ndi_create_rsp(struct wlan_objmgr_psoc *psoc,
176 						 uint8_t vdev_id, bool success)
177 {
178 }
179 
180 static inline void os_if_nan_post_ndi_delete_rsp(struct wlan_objmgr_psoc *psoc,
181 						 uint8_t vdev_id, bool success)
182 {
183 }
184 
185 #endif /* WLAN_FEATURE_NAN */
186 
187 #endif
188