1 /*
2 * Copyright (c) 2017-2019, 2021, The Linux Foundation. All rights reserved.
3 * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
4 *
5 * Permission to use, copy, modify, and/or distribute this software for any
6 * purpose with or without fee is hereby granted, provided that the above
7 * copyright notice and this permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 */
17
18 /**
19 * DOC: qdf_ipa_wdi3.h
20 * This file provides OS abstraction for IPA WDI APIs.
21 */
22
23 #ifndef _QDF_IPA_WDI3_H
24 #define _QDF_IPA_WDI3_H
25
26 #ifdef IPA_OFFLOAD
27
28 #include <qdf_ipa.h>
29 #include <i_qdf_ipa_wdi3.h>
30
31 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 10, 0)) || \
32 defined(CONFIG_IPA_WDI_UNIFIED_API)
33
34 /**
35 * qdf_ipa_wdi_version_t - IPA WDI version
36 */
37 typedef __qdf_ipa_wdi_version_t qdf_ipa_wdi_version_t;
38
39 /**
40 * qdf_ipa_wdi_hdl_t - IPA handle
41 */
42 typedef __qdf_ipa_wdi_hdl_t qdf_ipa_wdi_hdl_t;
43
44 /**
45 * qdf_ipa_wdi_capabilities_out_params_t - wdi capabilities output parameters
46 */
47 typedef __qdf_ipa_wdi_capabilities_out_params_t \
48 qdf_ipa_wdi_capabilities_out_params_t;
49
50 #define QDF_IPA_WDI_CAPABILITIES_OUT_PARAMS_NUM_INSTANCES(out_params) \
51 __QDF_IPA_WDI_CAPABILITIES_OUT_PARAMS_NUM_INSTANCES(out_params)
52
qdf_ipa_wdi_get_capabilities(qdf_ipa_wdi_capabilities_out_params_t * out)53 static inline int qdf_ipa_wdi_get_capabilities(
54 qdf_ipa_wdi_capabilities_out_params_t *out)
55 {
56 return __qdf_ipa_wdi_get_capabilities(out);
57 }
58
59 /**
60 * qdf_ipa_wdi_init_in_params_t - wdi init input parameters
61 */
62 typedef __qdf_ipa_wdi_init_in_params_t qdf_ipa_wdi_init_in_params_t;
63
64 #define QDF_IPA_WDI_INIT_IN_PARAMS_WDI_VERSION(in_params) \
65 __QDF_IPA_WDI_INIT_IN_PARAMS_WDI_VERSION(in_params)
66 #define QDF_IPA_WDI_INIT_IN_PARAMS_NOTIFY(in_params) \
67 __QDF_IPA_WDI_INIT_IN_PARAMS_NOTIFY(in_params)
68 #define QDF_IPA_WDI_INIT_IN_PARAMS_PRIV(in_params) \
69 __QDF_IPA_WDI_INIT_IN_PARAMS_PRIV(in_params)
70 #define QDF_IPA_WDI_INIT_IN_PARAMS_WDI_NOTIFY(in_params) \
71 __QDF_IPA_WDI_INIT_IN_PARAMS_WDI_NOTIFY(in_params)
72 #define QDF_IPA_WDI_INIT_IN_PARAMS_INSTANCE_ID(in_params) \
73 __QDF_IPA_WDI_INIT_IN_PARAMS_INSTANCE_ID(in_params)
74
75 #ifdef IPA_WDS_EASYMESH_FEATURE
76 #define QDF_IPA_WDI_INIT_IN_PARAMS_WDS_UPDATE(in_params) \
77 __QDF_IPA_WDI_INIT_IN_PARAMS_WDS_UPDATE(in_params)
78 #endif
79
80 /**
81 * qdf_ipa_wdi_init_out_params_t - wdi init output parameters
82 */
83 typedef __qdf_ipa_wdi_init_out_params_t qdf_ipa_wdi_init_out_params_t;
84
85 #define QDF_IPA_WDI_INIT_OUT_PARAMS_IS_UC_READY(out_params) \
86 __QDF_IPA_WDI_INIT_OUT_PARAMS_IS_UC_READY(out_params)
87 #define QDF_IPA_WDI_INIT_OUT_PARAMS_IS_SMMU_ENABLED(out_params) \
88 __QDF_IPA_WDI_INIT_OUT_PARAMS_IS_SMMU_ENABLED(out_params)
89 #define QDF_IPA_WDI_INIT_OUT_PARAMS_HANDLE(out_params) \
90 __QDF_IPA_WDI_INIT_OUT_PARAMS_HANDLE(out_params)
91 #define QDF_IPA_WDI_INIT_OUT_PARAMS_OPT_WIFI_DP(out_params) \
92 __QDF_IPA_WDI_INIT_OUT_PARAMS_OPT_WIFI_DP(out_params)
93
94 /**
95 * qdf_ipa_wdi_pipe_setup_info_smmu_t - WDI TX/Rx configuration
96 */
97 typedef __qdf_ipa_wdi_pipe_setup_info_smmu_t qdf_ipa_wdi_pipe_setup_info_smmu_t;
98
99 #define QDF_IPA_WDI_SETUP_INFO_SMMU_EP_CFG(txrx) \
100 __QDF_IPA_WDI_SETUP_INFO_SMMU_EP_CFG(txrx)
101
102 #define QDF_IPA_WDI_SETUP_INFO_SMMU_CLIENT(txrx) \
103 __QDF_IPA_WDI_SETUP_INFO_SMMU_CLIENT(txrx)
104 #define QDF_IPA_WDI_SETUP_INFO_SMMU_TRANSFER_RING_BASE(txrx) \
105 __QDF_IPA_WDI_SETUP_INFO_SMMU_TRANSFER_RING_BASE(txrx)
106 #define QDF_IPA_WDI_SETUP_INFO_SMMU_TRANSFER_RING_SIZE(txrx) \
107 __QDF_IPA_WDI_SETUP_INFO_SMMU_TRANSFER_RING_SIZE(txrx)
108 #define QDF_IPA_WDI_SETUP_INFO_SMMU_TRANSFER_RING_DOORBELL_PA(txrx) \
109 __QDF_IPA_WDI_SETUP_INFO_SMMU_TRANSFER_RING_DOORBELL_PA(txrx)
110 #define QDF_IPA_WDI_SETUP_INFO_SMMU_IS_TXR_RN_DB_PCIE_ADDR(txrx) \
111 __QDF_IPA_WDI_SETUP_INFO_SMMU_IS_TXR_RN_DB_PCIE_ADDR(txrx)
112 #define QDF_IPA_WDI_SETUP_INFO_SMMU_EVENT_RING_BASE(txrx) \
113 __QDF_IPA_WDI_SETUP_INFO_SMMU_EVENT_RING_BASE(txrx)
114 #define QDF_IPA_WDI_SETUP_INFO_SMMU_EVENT_RING_SIZE(txrx) \
115 __QDF_IPA_WDI_SETUP_INFO_SMMU_EVENT_RING_SIZE(txrx)
116 #define QDF_IPA_WDI_SETUP_INFO_SMMU_EVENT_RING_DOORBELL_PA(txrx) \
117 __QDF_IPA_WDI_SETUP_INFO_SMMU_EVENT_RING_DOORBELL_PA(txrx)
118 #define QDF_IPA_WDI_SETUP_INFO_SMMU_IS_EVT_RN_DB_PCIE_ADDR(txrx) \
119 __QDF_IPA_WDI_SETUP_INFO_SMMU_IS_EVT_RN_DB_PCIE_ADDR(txrx)
120 #define QDF_IPA_WDI_SETUP_INFO_SMMU_NUM_PKT_BUFFERS(txrx) \
121 __QDF_IPA_WDI_SETUP_INFO_SMMU_NUM_PKT_BUFFERS(txrx)
122 #define QDF_IPA_WDI_SETUP_INFO_SMMU_PKT_OFFSET(txrx) \
123 __QDF_IPA_WDI_SETUP_INFO_SMMU_PKT_OFFSET(txrx)
124 #define QDF_IPA_WDI_SETUP_INFO_SMMU_DESC_FORMAT_TEMPLATE(txrx) \
125 __QDF_IPA_WDI_SETUP_INFO_SMMU_DESC_FORMAT_TEMPLATE(txrx)
126 #define QDF_IPA_WDI_SETUP_INFO_SMMU_RX_BANK_ID(txrx, bid) \
127 __QDF_IPA_WDI_SETUP_INFO_SMMU_RX_BANK_ID(txrx, bid)
128 #define QDF_IPA_WDI_SETUP_INFO_SMMU_RX_PMAC_ID(txrx, pmac_id) \
129 __QDF_IPA_WDI_SETUP_INFO_SMMU_RX_PMAC_ID(txrx, pmac_id)
130
131 typedef __qdf_ipa_ep_cfg_t qdf_ipa_ep_cfg_t;
132
133 #define QDF_IPA_EP_CFG_NAT_EN(cfg) \
134 __QDF_IPA_EP_CFG_NAT_EN(cfg)
135 #define QDF_IPA_EP_CFG_HDR_LEN(cfg) \
136 __QDF_IPA_EP_CFG_HDR_LEN(cfg)
137 #define QDF_IPA_EP_CFG_HDR_OFST_METADATA_VALID(cfg) \
138 __QDF_IPA_EP_CFG_HDR_OFST_METADATA_VALID(cfg)
139 #define QDF_IPA_EP_CFG_HDR_METADATA_REG_VALID(cfg) \
140 __QDF_IPA_EP_CFG_HDR_METADATA_REG_VALID(cfg)
141 #define QDF_IPA_EP_CFG_HDR_OFST_PKT_SIZE_VALID(cfg) \
142 __QDF_IPA_EP_CFG_HDR_OFST_PKT_SIZE_VALID(cfg)
143 #define QDF_IPA_EP_CFG_HDR_OFST_PKT_SIZE(cfg) \
144 __QDF_IPA_EP_CFG_HDR_OFST_PKT_SIZE(cfg)
145 #define QDF_IPA_EP_CFG_HDR_ADDITIONAL_CONST_LEN(cfg) \
146 __QDF_IPA_EP_CFG_HDR_ADDITIONAL_CONST_LEN(cfg)
147 #define QDF_IPA_EP_CFG_MODE(cfg) \
148 __QDF_IPA_EP_CFG_MODE(cfg)
149 #define QDF_IPA_EP_CFG_HDR_LITTLE_ENDIAN(cfg) \
150 __QDF_IPA_EP_CFG_HDR_LITTLE_ENDIAN(cfg)
151
152 /**
153 * qdf_ipa_wdi_init - Client should call this function to
154 * init WDI IPA offload data path
155 *
156 * Note: Should not be called from atomic context and only
157 * after checking IPA readiness using ipa_register_ipa_ready_cb()
158 *
159 * @Return 0 on success, negative on failure
160 */
qdf_ipa_wdi_init(qdf_ipa_wdi_init_in_params_t * in,qdf_ipa_wdi_init_out_params_t * out)161 static inline int qdf_ipa_wdi_init(qdf_ipa_wdi_init_in_params_t *in,
162 qdf_ipa_wdi_init_out_params_t *out)
163 {
164 return __qdf_ipa_wdi_init(in, out);
165 }
166
167 /**
168 * qdf_ipa_wdi_cleanup - Client should call this function to
169 * clean up WDI IPA offload data path
170 * @hdl: IPA handle
171 *
172 * @Return 0 on success, negative on failure
173 */
qdf_ipa_wdi_cleanup(qdf_ipa_wdi_hdl_t hdl)174 static inline int qdf_ipa_wdi_cleanup(qdf_ipa_wdi_hdl_t hdl)
175 {
176 return __qdf_ipa_wdi_cleanup(hdl);
177 }
178 #endif /* CONFIG_IPA_WDI_UNIFIED_API */
179
180 /**
181 * qdf_ipa_wdi_hdr_info_t - Header to install on IPA HW
182 */
183 typedef __qdf_ipa_wdi_hdr_info_t qdf_ipa_wdi_hdr_info_t;
184
185 #define QDF_IPA_WDI_HDR_INFO_HDR(hdr_info) \
186 __QDF_IPA_WDI_HDR_INFO_HDR(hdr_info)
187 #define QDF_IPA_WDI_HDR_INFO_HDR_LEN(hdr_info) \
188 __QDF_IPA_WDI_HDR_INFO_HDR_LEN(hdr_info)
189 #define QDF_IPA_WDI_HDR_INFO_DST_MAC_ADDR_OFFSET(hdr_info) \
190 __QDF_IPA_WDI_HDR_INFO_DST_MAC_ADDR_OFFSET(hdr_info)
191 #define QDF_IPA_WDI_HDR_INFO_HDR_TYPE(hdr_info) \
192 __QDF_IPA_WDI_HDR_INFO_HDR_TYPE(hdr_info)
193
194 /**
195 * qdf_ipa_wdi_reg_intf_in_params_t - parameters for uC offload
196 * interface registration
197 */
198 typedef __qdf_ipa_wdi_reg_intf_in_params_t qdf_ipa_wdi_reg_intf_in_params_t;
199
200 #define QDF_IPA_WDI_REG_INTF_IN_PARAMS_NETDEV_NAME(in) \
201 __QDF_IPA_WDI_REG_INTF_IN_PARAMS_NETDEV_NAME(in)
202 #define QDF_IPA_WDI_REG_INTF_IN_PARAMS_HDR_INFO(in) \
203 __QDF_IPA_WDI_REG_INTF_IN_PARAMS_HDR_INFO(in)
204 #define QDF_IPA_WDI_REG_INTF_IN_PARAMS_ALT_DST_PIPE(in) \
205 __QDF_IPA_WDI_REG_INTF_IN_PARAMS_ALT_DST_PIPE(in)
206 #define QDF_IPA_WDI_REG_INTF_IN_PARAMS_IS_META_DATA_VALID(in) \
207 __QDF_IPA_WDI_REG_INTF_IN_PARAMS_IS_META_DATA_VALID(in)
208 #define QDF_IPA_WDI_REG_INTF_IN_PARAMS_META_DATA(in) \
209 __QDF_IPA_WDI_REG_INTF_IN_PARAMS_META_DATA(in)
210 #define QDF_IPA_WDI_REG_INTF_IN_PARAMS_META_DATA_MASK(in) \
211 __QDF_IPA_WDI_REG_INTF_IN_PARAMS_META_DATA_MASK(in)
212 #define QDF_IPA_WDI_REG_INTF_IN_PARAMS_HANDLE(in) \
213 __QDF_IPA_WDI_REG_INTF_IN_PARAMS_HANDLE(in)
214 #ifdef IPA_WDI3_TX_TWO_PIPES
215 #define QDF_IPA_WDI_REG_INTF_IN_PARAMS_IS_TX1_USED(in) \
216 __QDF_IPA_WDI_REG_INTF_IN_PARAMS_IS_TX1_USED(in)
217 #endif
218 #ifdef IPA_WDI3_VLAN_SUPPORT
219 #define QDF_IPA_WDI_REG_INTF_IN_PARAMS_IS_RX1_USED(in) \
220 __QDF_IPA_WDI_REG_INTF_IN_PARAMS_IS_RX1_USED(in)
221 #endif
222
223 /**
224 * qdf_ipa_wdi_pipe_setup_info_t - WDI TX/Rx configuration
225 */
226 typedef __qdf_ipa_wdi_pipe_setup_info_t qdf_ipa_wdi_pipe_setup_info_t;
227
228 #define QDF_IPA_WDI_SETUP_INFO_EP_CFG(txrx) \
229 __QDF_IPA_WDI_SETUP_INFO_EP_CFG(txrx)
230
231 #define QDF_IPA_WDI_SETUP_INFO_NAT_EN(txrx) \
232 __QDF_IPA_WDI_SETUP_INFO_NAT_EN(txrx)
233 #define QDF_IPA_WDI_SETUP_INFO_HDR_LEN(txrx) \
234 __QDF_IPA_WDI_SETUP_INFO_HDR_LEN(txrx)
235 #define QDF_IPA_WDI_SETUP_INFO_HDR_OFST_METADATA_VALID(txrx) \
236 __QDF_IPA_WDI_SETUP_INFO_HDR_OFST_METADATA_VALID(txrx)
237 #define QDF_IPA_WDI_SETUP_INFO_HDR_METADATA_REG_VALID(txrx) \
238 __QDF_IPA_WDI_SETUP_INFO_HDR_METADATA_REG_VALID(txrx)
239 #define QDF_IPA_WDI_SETUP_INFO_HDR_OFST_PKT_SIZE_VALID(txrx) \
240 __QDF_IPA_WDI_SETUP_INFO_HDR_OFST_PKT_SIZE_VALID(txrx)
241 #define QDF_IPA_WDI_SETUP_INFO_HDR_OFST_PKT_SIZE(txrx) \
242 __QDF_IPA_WDI_SETUP_INFO_HDR_OFST_PKT_SIZE(txrx)
243 #define QDF_IPA_WDI_SETUP_INFO_HDR_ADDITIONAL_CONST_LEN(txrx) \
244 __QDF_IPA_WDI_SETUP_INFO_HDR_ADDITIONAL_CONST_LEN(txrx)
245 #define QDF_IPA_WDI_SETUP_INFO_MODE(txrx) \
246 __QDF_IPA_WDI_SETUP_INFO_MODE(txrx)
247 #define QDF_IPA_WDI_SETUP_INFO_HDR_LITTLE_ENDIAN(txrx) \
248 __QDF_IPA_WDI_SETUP_INFO_HDR_LITTLE_ENDIAN(txrx)
249
250 #define QDF_IPA_WDI_SETUP_INFO_CLIENT(txrx) \
251 __QDF_IPA_WDI_SETUP_INFO_CLIENT(txrx)
252 #define QDF_IPA_WDI_SETUP_INFO_TRANSFER_RING_BASE_PA(txrx) \
253 __QDF_IPA_WDI_SETUP_INFO_TRANSFER_RING_BASE_PA(txrx)
254 #define QDF_IPA_WDI_SETUP_INFO_TRANSFER_RING_SIZE(txrx) \
255 __QDF_IPA_WDI_SETUP_INFO_TRANSFER_RING_SIZE(txrx)
256 #define QDF_IPA_WDI_SETUP_INFO_TRANSFER_RING_DOORBELL_PA(txrx) \
257 __QDF_IPA_WDI_SETUP_INFO_TRANSFER_RING_DOORBELL_PA(txrx)
258 #define QDF_IPA_WDI_SETUP_INFO_IS_TXR_RN_DB_PCIE_ADDR(txrx) \
259 __QDF_IPA_WDI_SETUP_INFO_IS_TXR_RN_DB_PCIE_ADDR(txrx)
260 #define QDF_IPA_WDI_SETUP_INFO_EVENT_RING_BASE_PA(txrx) \
261 __QDF_IPA_WDI_SETUP_INFO_EVENT_RING_BASE_PA(txrx)
262 #define QDF_IPA_WDI_SETUP_INFO_EVENT_RING_SIZE(txrx) \
263 __QDF_IPA_WDI_SETUP_INFO_EVENT_RING_SIZE(txrx)
264 #define QDF_IPA_WDI_SETUP_INFO_EVENT_RING_DOORBELL_PA(txrx) \
265 __QDF_IPA_WDI_SETUP_INFO_EVENT_RING_DOORBELL_PA(txrx)
266 #define QDF_IPA_WDI_SETUP_INFO_IS_EVT_RN_DB_PCIE_ADDR(txrx) \
267 __QDF_IPA_WDI_SETUP_INFO_IS_EVT_RN_DB_PCIE_ADDR(txrx)
268 #define QDF_IPA_WDI_SETUP_INFO_NUM_PKT_BUFFERS(txrx) \
269 __QDF_IPA_WDI_SETUP_INFO_NUM_PKT_BUFFERS(txrx)
270 #define QDF_IPA_WDI_SETUP_INFO_PKT_OFFSET(txrx) \
271 __QDF_IPA_WDI_SETUP_INFO_PKT_OFFSET(txrx)
272 #define QDF_IPA_WDI_SETUP_INFO_DESC_FORMAT_TEMPLATE(txrx) \
273 __QDF_IPA_WDI_SETUP_INFO_DESC_FORMAT_TEMPLATE(txrx)
274 #define QDF_IPA_WDI_SETUP_INFO_RX_BANK_ID(txrx, bid) \
275 __QDF_IPA_WDI_SETUP_INFO_RX_BANK_ID(txrx, bid)
276 #define QDF_IPA_WDI_SETUP_INFO_RX_PMAC_ID(txrx, pmac_id) \
277 __QDF_IPA_WDI_SETUP_INFO_RX_PMAC_ID(txrx, pmac_id)
278
279 /**
280 * qdf_ipa_wdi_conn_in_params_t - information provided by
281 * uC offload client
282 */
283 typedef __qdf_ipa_wdi_conn_in_params_t qdf_ipa_wdi_conn_in_params_t;
284
285 #define QDF_IPA_WDI_CONN_IN_PARAMS_NOTIFY(pipe_in) \
286 __QDF_IPA_WDI_CONN_IN_PARAMS_NOTIFY(pipe_in)
287 #define QDF_IPA_WDI_CONN_IN_PARAMS_PRIV(pipe_in) \
288 __QDF_IPA_WDI_CONN_IN_PARAMS_PRIV(pipe_in)
289 #define QDF_IPA_WDI_CONN_IN_PARAMS_SMMU_ENABLED(pipe_in) \
290 __QDF_IPA_WDI_CONN_IN_PARAMS_SMMU_ENABLED(pipe_in)
291 #define QDF_IPA_WDI_CONN_IN_PARAMS_NUM_SYS_PIPE_NEEDED(pipe_in) \
292 __QDF_IPA_WDI_CONN_IN_PARAMS_NUM_SYS_PIPE_NEEDED(pipe_in)
293 #define QDF_IPA_WDI_CONN_IN_PARAMS_SYS_IN(in) \
294 __QDF_IPA_WDI_CONN_IN_PARAMS_SYS_IN(in)
295 #define QDF_IPA_WDI_CONN_IN_PARAMS_TX(pipe_in) \
296 __QDF_IPA_WDI_CONN_IN_PARAMS_TX(pipe_in)
297 #define QDF_IPA_WDI_CONN_IN_PARAMS_TX_SMMU(pipe_in) \
298 __QDF_IPA_WDI_CONN_IN_PARAMS_TX_SMMU(pipe_in)
299 #define QDF_IPA_WDI_CONN_IN_PARAMS_RX(pipe_in) \
300 __QDF_IPA_WDI_CONN_IN_PARAMS_RX(pipe_in)
301 #define QDF_IPA_WDI_CONN_IN_PARAMS_RX_SMMU(pipe_in) \
302 __QDF_IPA_WDI_CONN_IN_PARAMS_RX_SMMU(pipe_in)
303 #define QDF_IPA_WDI_CONN_IN_PARAMS_HANDLE(pipe_in) \
304 __QDF_IPA_WDI_CONN_IN_PARAMS_HANDLE(pipe_in)
305
306 #ifdef IPA_WDS_EASYMESH_FEATURE
307 #define QDF_IPA_WDI_CONN_IN_PARAMS_AST_NOTIFY(pipe_in) \
308 __QDF_IPA_WDI_CONN_IN_PARAMS_AST_NOTIFY(pipe_in)
309 #endif
310
311 #ifdef IPA_WDI3_TX_TWO_PIPES
312 #define QDF_IPA_WDI_CONN_IN_PARAMS_IS_TX1_USED(pipe_in) \
313 __QDF_IPA_WDI_CONN_IN_PARAMS_IS_TX1_USED(pipe_in)
314 #define QDF_IPA_WDI_CONN_IN_PARAMS_TX_ALT_PIPE(pipe_in) \
315 __QDF_IPA_WDI_CONN_IN_PARAMS_TX_ALT_PIPE(pipe_in)
316 #define QDF_IPA_WDI_CONN_IN_PARAMS_TX_ALT_PIPE_SMMU(pipe_in) \
317 __QDF_IPA_WDI_CONN_IN_PARAMS_TX_ALT_PIPE_SMMU(pipe_in)
318 #define QDF_IPA_WDI_CONN_OUT_PARAMS_TX_UC_ALT_DB_PA(pipe_out) \
319 __QDF_IPA_WDI_CONN_OUT_PARAMS_TX_UC_ALT_DB_PA(pipe_out)
320 #endif
321 #ifdef IPA_WDI3_VLAN_SUPPORT
322 #define QDF_IPA_WDI_CONN_IN_PARAMS_IS_RX1_USED(pipe_in) \
323 __QDF_IPA_WDI_CONN_IN_PARAMS_IS_RX1_USED(pipe_in)
324 #define QDF_IPA_WDI_CONN_IN_PARAMS_RX_ALT(pipe_in) \
325 __QDF_IPA_WDI_CONN_IN_PARAMS_RX_ALT(pipe_in)
326 #define QDF_IPA_WDI_CONN_IN_PARAMS_RX_ALT_SMMU(pipe_in) \
327 __QDF_IPA_WDI_CONN_IN_PARAMS_RX_ALT_SMMU(pipe_in)
328 #endif
329 /**
330 * qdf_ipa_wdi_conn_out_params_t - information provided
331 * to WLAN druver
332 */
333 typedef __qdf_ipa_wdi_conn_out_params_t qdf_ipa_wdi_conn_out_params_t;
334
335 #define QDF_IPA_WDI_CONN_OUT_PARAMS_TX_UC_DB_PA(pipe_out) \
336 __QDF_IPA_WDI_CONN_OUT_PARAMS_TX_UC_DB_PA(pipe_out)
337 #define QDF_IPA_WDI_CONN_OUT_PARAMS_TX_UC_DB_VA(pipe_out) \
338 __QDF_IPA_WDI_CONN_OUT_PARAMS_TX_UC_DB_VA(pipe_out)
339 #define QDF_IPA_WDI_CONN_OUT_PARAMS_RX_UC_DB_PA(pipe_out) \
340 __QDF_IPA_WDI_CONN_OUT_PARAMS_RX_UC_DB_PA(pipe_out)
341 #ifdef IPA_WDI3_VLAN_SUPPORT
342 #define QDF_IPA_WDI_CONN_OUT_PARAMS_RX_ALT_UC_DB_PA(pipe_out) \
343 __QDF_IPA_WDI_CONN_OUT_PARAMS_RX_ALT_UC_DB_PA(pipe_out)
344 #endif
345 #define QDF_IPA_WDI_CONN_OUT_PARAMS_IS_DB_DDR_MAPPED(pipe_out) \
346 __QDF_IPA_WDI_CONN_OUT_PARAMS_IS_DB_DDR_MAPPED(pipe_out)
347
348 /**
349 * qdf_ipa_wdi_perf_profile_t - To set BandWidth profile
350 */
351 typedef __qdf_ipa_wdi_perf_profile_t qdf_ipa_wdi_perf_profile_t;
352
353 #define QDF_IPA_WDI_PERF_PROFILE_CLIENT(profile) \
354 __QDF_IPA_WDI_PERF_PROFILE_CLIENT(profile)
355 #define QDF_IPA_WDI_PERF_PROFILE_MAX_SUPPORTED_BW_MBPS(profile) \
356 __QDF_IPA_WDI_PERF_PROFILE_MAX_SUPPORTED_BW_MBPS(profile)
357
358 /**
359 * qdf_ipa_wdi_reg_intf - Client should call this function to
360 * init WDI IPA offload data path
361 *
362 * Note: Should not be called from atomic context and only
363 * after checking IPA readiness using ipa_register_ipa_ready_cb()
364 *
365 * @Return 0 on success, negative on failure
366 */
qdf_ipa_wdi_reg_intf(qdf_ipa_wdi_reg_intf_in_params_t * in)367 static inline int qdf_ipa_wdi_reg_intf(
368 qdf_ipa_wdi_reg_intf_in_params_t *in)
369 {
370 return __qdf_ipa_wdi_reg_intf(in);
371 }
372
373 /**
374 * qdf_ipa_wdi_dereg_intf - Client Driver should call this
375 * function to deregister before unload and after disconnect
376 * @netdev_name: Net device name
377 * @hdl: IPA handle
378 *
379 * @Return 0 on success, negative on failure
380 */
qdf_ipa_wdi_dereg_intf(const char * netdev_name,qdf_ipa_wdi_hdl_t hdl)381 static inline int qdf_ipa_wdi_dereg_intf(const char *netdev_name,
382 qdf_ipa_wdi_hdl_t hdl)
383 {
384 return __qdf_ipa_wdi_dereg_intf(netdev_name, hdl);
385 }
386
387 /**
388 * qdf_ipa_wdi_conn_pipes - Client should call this
389 * function to connect pipes
390 * @in: [in] input parameters from client
391 * @out: [out] output params to client
392 *
393 * Note: Should not be called from atomic context and only
394 * after checking IPA readiness using ipa_register_ipa_ready_cb()
395 *
396 * @Return 0 on success, negative on failure
397 */
qdf_ipa_wdi_conn_pipes(qdf_ipa_wdi_conn_in_params_t * in,qdf_ipa_wdi_conn_out_params_t * out)398 static inline int qdf_ipa_wdi_conn_pipes(qdf_ipa_wdi_conn_in_params_t *in,
399 qdf_ipa_wdi_conn_out_params_t *out)
400 {
401 return __qdf_ipa_wdi_conn_pipes(in, out);
402 }
403
404 /**
405 * qdf_ipa_wdi_disconn_pipes() - Client should call this
406 * function to disconnect pipes
407 * @hdl: IPA handle
408 *
409 * Note: Should not be called from atomic context
410 *
411 * Returns: 0 on success, negative on failure
412 */
qdf_ipa_wdi_disconn_pipes(qdf_ipa_wdi_hdl_t hdl)413 static inline int qdf_ipa_wdi_disconn_pipes(qdf_ipa_wdi_hdl_t hdl)
414 {
415 return __qdf_ipa_wdi_disconn_pipes(hdl);
416 }
417
418 /**
419 * qdf_ipa_wdi_enable_pipes() - Client should call this
420 * function to enable IPA offload data path
421 * @hdl: IPA handle
422 *
423 * Note: Should not be called from atomic context
424 *
425 * Returns: 0 on success, negative on failure
426 */
qdf_ipa_wdi_enable_pipes(qdf_ipa_wdi_hdl_t hdl)427 static inline int qdf_ipa_wdi_enable_pipes(qdf_ipa_wdi_hdl_t hdl)
428 {
429 return __qdf_ipa_wdi_enable_pipes(hdl);
430 }
431
432 /**
433 * qdf_ipa_wdi_disable_pipes() - Client should call this
434 * function to disable IPA offload data path
435 * @hdl: IPA handle
436 *
437 * Note: Should not be called from atomic context
438 *
439 * Returns: 0 on success, negative on failure
440 */
qdf_ipa_wdi_disable_pipes(qdf_ipa_wdi_hdl_t hdl)441 static inline int qdf_ipa_wdi_disable_pipes(qdf_ipa_wdi_hdl_t hdl)
442 {
443 return __qdf_ipa_wdi_disable_pipes(hdl);
444 }
445
446 /**
447 * qdf_ipa_wdi_set_perf_profile() - Client should call this function to
448 * set IPA clock bandwidth based on data rates
449 * @hdl: IPA handle
450 * @profile: [in] BandWidth profile to use
451 *
452 * Returns: 0 on success, negative on failure
453 */
qdf_ipa_wdi_set_perf_profile(qdf_ipa_wdi_hdl_t hdl,qdf_ipa_wdi_perf_profile_t * profile)454 static inline int qdf_ipa_wdi_set_perf_profile(qdf_ipa_wdi_hdl_t hdl,
455 qdf_ipa_wdi_perf_profile_t *profile)
456 {
457 return __qdf_ipa_wdi_set_perf_profile(hdl, profile);
458 }
459
460 /**
461 * qdf_ipa_wdi_create_smmu_mapping() - Client should call this function to
462 * create smmu mapping
463 * @hdl: IPA handle
464 * @num_buffers: [in] number of buffers
465 * @info: [in] wdi buffer info
466 *
467 * Returns: 0 on success, negative on failure
468 */
qdf_ipa_wdi_create_smmu_mapping(qdf_ipa_wdi_hdl_t hdl,uint32_t num_buffers,qdf_ipa_wdi_buffer_info_t * info)469 static inline int qdf_ipa_wdi_create_smmu_mapping(qdf_ipa_wdi_hdl_t hdl,
470 uint32_t num_buffers,
471 qdf_ipa_wdi_buffer_info_t *info)
472 {
473 return __qdf_ipa_wdi_create_smmu_mapping(hdl, num_buffers, info);
474 }
475
476 /**
477 * qdf_ipa_wdi_release_smmu_mapping() - Client should call this function to
478 * release smmu mapping
479 * @hdl: IPA handle
480 * @num_buffers: [in] number of buffers
481 * @info: [in] wdi buffer info
482 *
483 * Returns: 0 on success, negative on failure
484 */
qdf_ipa_wdi_release_smmu_mapping(qdf_ipa_wdi_hdl_t hdl,uint32_t num_buffers,qdf_ipa_wdi_buffer_info_t * info)485 static inline int qdf_ipa_wdi_release_smmu_mapping(qdf_ipa_wdi_hdl_t hdl,
486 uint32_t num_buffers,
487 qdf_ipa_wdi_buffer_info_t *info)
488 {
489 return __qdf_ipa_wdi_release_smmu_mapping(hdl, num_buffers, info);
490 }
491
492 #ifdef WDI3_STATS_UPDATE
493 /**
494 * qdf_ipa_wdi_wlan_stats() - Client should call this function to
495 * send Tx byte counts to IPA driver
496 * @tx_count: number of Tx bytes
497 *
498 * Returns: 0 on success, negative on failure
499 */
qdf_ipa_wdi_wlan_stats(qdf_ipa_wdi_tx_info_t * tx_stats)500 static inline int qdf_ipa_wdi_wlan_stats(qdf_ipa_wdi_tx_info_t *tx_stats)
501 {
502 return __qdf_ipa_wdi_wlan_stats(tx_stats);
503 }
504
505 /**
506 * qdf_ipa_uc_bw_monitor() - start/stop uc bw monitoring
507 * @bw_info: set bw info levels to monitor
508 *
509 * Returns: 0 on success, negative on failure
510 */
qdf_ipa_uc_bw_monitor(qdf_ipa_wdi_bw_info_t * bw_info)511 static inline int qdf_ipa_uc_bw_monitor(qdf_ipa_wdi_bw_info_t *bw_info)
512 {
513 return __qdf_ipa_uc_bw_monitor(bw_info);
514 }
515
516 #endif
517
518 #ifdef IPA_OPT_WIFI_DP
519 /**
520 * qdf_ipa_wdi_register_flt_cb() - register cb functions with IPA
521 * for optional wifi datapath
522 * @hdl: ipa hdl
523 * @flt_rsrv_cb: cb for filter reservation
524 * @flt_rsrv_rel_cb: cb for filter release
525 * @flt_add_cb: cb for filter addition
526 * @flt_rem_cb: cb for filter removal
527 *
528 * Return: 0 on success, negative on failure
529 */
qdf_ipa_wdi_register_flt_cb(ipa_wdi_hdl_t hdl,ipa_wdi_opt_dpath_flt_rsrv_cb flt_rsrv_cb,ipa_wdi_opt_dpath_flt_rsrv_rel_cb flt_rsrv_rel_cb,ipa_wdi_opt_dpath_flt_add_cb flt_add_cb,ipa_wdi_opt_dpath_flt_rem_cb flt_rem_cb)530 static inline int qdf_ipa_wdi_register_flt_cb(
531 ipa_wdi_hdl_t hdl,
532 ipa_wdi_opt_dpath_flt_rsrv_cb flt_rsrv_cb,
533 ipa_wdi_opt_dpath_flt_rsrv_rel_cb flt_rsrv_rel_cb,
534 ipa_wdi_opt_dpath_flt_add_cb flt_add_cb,
535 ipa_wdi_opt_dpath_flt_rem_cb flt_rem_cb)
536 {
537 return __qdf_ipa_wdi_register_flt_cb((__qdf_ipa_wdi_hdl_t)hdl,
538 flt_rsrv_cb, flt_rsrv_rel_cb,
539 flt_add_cb, flt_rem_cb);
540 }
541
542 /**
543 * ipa_wdi_opt_dpath_notify_flt_rsvd_per_inst() - notify IPA with filter
544 * reserve response for optional wifi datapath
545 * @hdl: ipa hdl
546 * @is_succes: true for success, false or failure
547 *
548 * Return: 0 on success, negative on failure
549 */
qdf_ipa_wdi_opt_dpath_notify_flt_rsvd_per_inst(ipa_wdi_hdl_t hdl,bool is_success)550 static inline int qdf_ipa_wdi_opt_dpath_notify_flt_rsvd_per_inst(
551 ipa_wdi_hdl_t hdl, bool is_success)
552 {
553 return __qdf_ipa_wdi_opt_dpath_notify_flt_rsvd_per_inst(hdl,
554 is_success);
555 }
556
557 /**
558 * qdf_ipa_wdi_opt_dpath_notify_flt_rlsd_per_inst() - notify IPA with filter
559 * release response for optional wifi datapath
560 * @hdl: ipa hdl
561 * @is_succes: true for success, false or failure
562 *
563 * Return: 0 on success, negative on failure
564 */
qdf_ipa_wdi_opt_dpath_notify_flt_rlsd_per_inst(ipa_wdi_hdl_t hdl,bool is_success)565 static inline int qdf_ipa_wdi_opt_dpath_notify_flt_rlsd_per_inst(
566 ipa_wdi_hdl_t hdl, bool is_success)
567 {
568 return __qdf_ipa_wdi_opt_dpath_notify_flt_rlsd_per_inst(hdl,
569 is_success);
570 }
571
572 #else
qdf_ipa_wdi_opt_dpath_notify_flt_rsvd_per_inst(ipa_wdi_hdl_t hdl,bool is_success)573 static inline int qdf_ipa_wdi_opt_dpath_notify_flt_rsvd_per_inst(
574 ipa_wdi_hdl_t hdl, bool is_success)
575 {
576 return 0;
577 }
578
qdf_ipa_wdi_opt_dpath_notify_flt_rlsd_per_inst(ipa_wdi_hdl_t hdl,bool is_success)579 static inline int qdf_ipa_wdi_opt_dpath_notify_flt_rlsd_per_inst(
580 ipa_wdi_hdl_t hdl, bool is_success)
581 {
582 return 0;
583 }
584 #endif /* IPA_OPT_WIFI_DP */
585 #endif /* IPA_OFFLOAD */
586 #endif /* QDF_IPA_WDI3_H */
587