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