xref: /wlan-driver/qca-wifi-host-cmn/qdf/linux/src/i_qdf_ipa.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2017-2021, The Linux Foundation. All rights reserved.
3*5113495bSYour Name  * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
4*5113495bSYour Name  *
5*5113495bSYour Name  * Permission to use, copy, modify, and/or distribute this software for any
6*5113495bSYour Name  * purpose with or without fee is hereby granted, provided that the above
7*5113495bSYour Name  * copyright notice and this permission notice appear in all copies.
8*5113495bSYour Name  *
9*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10*5113495bSYour Name  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11*5113495bSYour Name  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12*5113495bSYour Name  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13*5113495bSYour Name  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14*5113495bSYour Name  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15*5113495bSYour Name  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16*5113495bSYour Name  */
17*5113495bSYour Name 
18*5113495bSYour Name #ifndef _I_QDF_IPA_H
19*5113495bSYour Name #define _I_QDF_IPA_H
20*5113495bSYour Name 
21*5113495bSYour Name #ifdef IPA_OFFLOAD
22*5113495bSYour Name 
23*5113495bSYour Name #include <linux/ipa.h>
24*5113495bSYour Name #include <linux/version.h>
25*5113495bSYour Name 
26*5113495bSYour Name /**
27*5113495bSYour Name  * __qdf_ipa_wdi_meter_evt_type_t - type of event client callback is
28*5113495bSYour Name  * for AP+STA mode metering
29*5113495bSYour Name  * @IPA_GET_WDI_SAP_STATS: get IPA_stats between SAP and STA -
30*5113495bSYour Name  *			use ipa_get_wdi_sap_stats structure
31*5113495bSYour Name  * @IPA_SET_WIFI_QUOTA: set quota limit on STA -
32*5113495bSYour Name  *			use ipa_set_wifi_quota structure
33*5113495bSYour Name  */
34*5113495bSYour Name typedef enum ipa_wdi_meter_evt_type __qdf_ipa_wdi_meter_evt_type_t;
35*5113495bSYour Name 
36*5113495bSYour Name typedef struct ipa_get_wdi_sap_stats __qdf_ipa_get_wdi_sap_stats_t;
37*5113495bSYour Name 
38*5113495bSYour Name #define QDF_IPA_GET_WDI_SAP_STATS_RESET_STATS(wdi_sap_stats)	\
39*5113495bSYour Name 	(((struct ipa_get_wdi_sap_stats *)(wdi_sap_stats))->reset_stats)
40*5113495bSYour Name #define QDF_IPA_GET_WDI_SAP_STATS_STATS_VALID(wdi_sap_stats)	\
41*5113495bSYour Name 	(((struct ipa_get_wdi_sap_stats *)(wdi_sap_stats))->stats_valid)
42*5113495bSYour Name #define QDF_IPA_GET_WDI_SAP_STATS_IPV4_TX_PACKETS(wdi_sap_stats)	\
43*5113495bSYour Name 	(((struct ipa_get_wdi_sap_stats *)(wdi_sap_stats))->ipv4_tx_packets)
44*5113495bSYour Name #define QDF_IPA_GET_WDI_SAP_STATS_IPV4_TX_BYTES(wdi_sap_stats)	\
45*5113495bSYour Name 	(((struct ipa_get_wdi_sap_stats *)(wdi_sap_stats))->ipv4_tx_bytes)
46*5113495bSYour Name #define QDF_IPA_GET_WDI_SAP_STATS_IPV4_RX_PACKETS(wdi_sap_stats)	\
47*5113495bSYour Name 	(((struct ipa_get_wdi_sap_stats *)(wdi_sap_stats))->ipv4_rx_packets)
48*5113495bSYour Name #define QDF_IPA_GET_WDI_SAP_STATS_IPV4_RX_BYTES(wdi_sap_stats)	\
49*5113495bSYour Name 	(((struct ipa_get_wdi_sap_stats *)(wdi_sap_stats))->ipv4_rx_bytes)
50*5113495bSYour Name #define QDF_IPA_GET_WDI_SAP_STATS_IPV6_TX_PACKETS(wdi_sap_stats)	\
51*5113495bSYour Name 	(((struct ipa_get_wdi_sap_stats *)(wdi_sap_stats))->ipv6_tx_packets)
52*5113495bSYour Name #define QDF_IPA_GET_WDI_SAP_STATS_IPV6_TX_BYTES(wdi_sap_stats)	\
53*5113495bSYour Name 	(((struct ipa_get_wdi_sap_stats *)(wdi_sap_stats))->ipv6_tx_bytes)
54*5113495bSYour Name #define QDF_IPA_GET_WDI_SAP_STATS_IPV6_RX_PACKETS(wdi_sap_stats)	\
55*5113495bSYour Name 	(((struct ipa_get_wdi_sap_stats *)(wdi_sap_stats))->ipv6_rx_packets)
56*5113495bSYour Name #define QDF_IPA_GET_WDI_SAP_STATS_IPV6_RX_BYTES(wdi_sap_stats)	\
57*5113495bSYour Name 	(((struct ipa_get_wdi_sap_stats *)(wdi_sap_stats))->ipv6_rx_bytes)
58*5113495bSYour Name 
59*5113495bSYour Name /**
60*5113495bSYour Name  * __qdf_ipa_set_wifi_quota_t - structure used for
61*5113495bSYour Name  *                                   IPA_SET_WIFI_QUOTA.
62*5113495bSYour Name  */
63*5113495bSYour Name typedef struct ipa_set_wifi_quota __qdf_ipa_set_wifi_quota_t;
64*5113495bSYour Name 
65*5113495bSYour Name #define QDF_IPA_SET_WIFI_QUOTA_BYTES(ipa_set_quota)	\
66*5113495bSYour Name 	(((struct ipa_set_wifi_quota *)(ipa_set_quota))->quota_bytes)
67*5113495bSYour Name #define QDF_IPA_SET_WIFI_QUOTA_SET_QUOTA(ipa_set_quota)	\
68*5113495bSYour Name 	(((struct ipa_set_wifi_quota *)(ipa_set_quota))->set_quota)
69*5113495bSYour Name #define QDF_IPA_SET_WIFI_QUOTA_SET_VALID(ipa_set_quota)	\
70*5113495bSYour Name 	(((struct ipa_set_wifi_quota *)(ipa_set_quota))->set_valid)
71*5113495bSYour Name 
72*5113495bSYour Name /**
73*5113495bSYour Name  * __qdf_ipa_connect_params_t - low-level client connect input parameters. Either
74*5113495bSYour Name  * client allocates the data and desc FIFO and specifies that in data+desc OR
75*5113495bSYour Name  * specifies sizes and pipe_mem pref and IPA does the allocation.
76*5113495bSYour Name  */
77*5113495bSYour Name typedef struct ipa_connect_params __qdf_ipa_connect_params_t;
78*5113495bSYour Name 
79*5113495bSYour Name /**
80*5113495bSYour Name  * __qdf_ipa_tx_meta_t - meta-data for the TX packet
81*5113495bSYour Name  */
82*5113495bSYour Name typedef struct ipa_tx_meta __qdf_ipa_tx_meta_t;
83*5113495bSYour Name 
84*5113495bSYour Name /**
85*5113495bSYour Name  * __qdf_ipa_msg_free_fn_t - callback function
86*5113495bSYour Name  *
87*5113495bSYour Name  * Message callback registered by kernel client with IPA driver to
88*5113495bSYour Name  * free message payload after IPA driver processing is complete
89*5113495bSYour Name  */
90*5113495bSYour Name typedef void (*__qdf_ipa_msg_free_fn_t)(void *buff, u32 len, u32 type);
91*5113495bSYour Name 
92*5113495bSYour Name /**
93*5113495bSYour Name  *  __qdf_ipa_sps_params_t - SPS related output parameters resulting from
94*5113495bSYour Name  */
95*5113495bSYour Name typedef struct ipa_sps_params __qdf_ipa_sps_params_t;
96*5113495bSYour Name 
97*5113495bSYour Name /**
98*5113495bSYour Name  * __qdf_ipa_tx_intf_t - interface tx properties
99*5113495bSYour Name  */
100*5113495bSYour Name typedef struct ipa_tx_intf __qdf_ipa_tx_intf_t;
101*5113495bSYour Name 
102*5113495bSYour Name #define QDF_IPA_TX_INTF_PROP(tx_intf)	\
103*5113495bSYour Name 	(((struct ipa_tx_intf *)(tx_intf))->prop)
104*5113495bSYour Name 
105*5113495bSYour Name /**
106*5113495bSYour Name  * __qdf_ipa_rx_intf_t - interface rx properties
107*5113495bSYour Name  */
108*5113495bSYour Name typedef struct ipa_rx_intf __qdf_ipa_rx_intf_t;
109*5113495bSYour Name 
110*5113495bSYour Name #define QDF_IPA_RX_INTF_PROP(rx_intf)	\
111*5113495bSYour Name 	(((struct ipa_rx_intf *)(rx_intf))->prop)
112*5113495bSYour Name 
113*5113495bSYour Name /**
114*5113495bSYour Name  * __qdf_ipa_ext_intf_t - interface ext properties
115*5113495bSYour Name  */
116*5113495bSYour Name typedef struct ipa_ext_intf __qdf_ipa_ext_intf_t;
117*5113495bSYour Name 
118*5113495bSYour Name /**
119*5113495bSYour Name  * __qdf_ipa_sys_connect_params_t - information needed to setup an IPA end-point
120*5113495bSYour Name  * in system-BAM mode
121*5113495bSYour Name  */
122*5113495bSYour Name typedef struct ipa_sys_connect_params __qdf_ipa_sys_connect_params_t;
123*5113495bSYour Name 
124*5113495bSYour Name #define QDF_IPA_SYS_PARAMS_NAT_EN(ipa_sys_params)	\
125*5113495bSYour Name 	(((struct ipa_sys_connect_params *)(ipa_sys_params))->ipa_ep_cfg.nat.nat_en)
126*5113495bSYour Name #define QDF_IPA_SYS_PARAMS_HDR_LEN(ipa_sys_params)	\
127*5113495bSYour Name 	(((struct ipa_sys_connect_params *)(ipa_sys_params))->ipa_ep_cfg.hdr.hdr_len)
128*5113495bSYour Name #define QDF_IPA_SYS_PARAMS_HDR_ADDITIONAL_CONST_LEN(ipa_sys_params)	\
129*5113495bSYour Name 	(((struct ipa_sys_connect_params *)(ipa_sys_params))->ipa_ep_cfg.hdr.hdr_additional_const_len)
130*5113495bSYour Name #define QDF_IPA_SYS_PARAMS_HDR_OFST_PKT_SIZE_VALID(ipa_sys_params)	\
131*5113495bSYour Name 	(((struct ipa_sys_connect_params *)(ipa_sys_params))->ipa_ep_cfg.hdr.hdr_ofst_pkt_size_valid)
132*5113495bSYour Name #define QDF_IPA_SYS_PARAMS_HDR_OFST_PKT_SIZE(ipa_sys_params)	\
133*5113495bSYour Name 	(((struct ipa_sys_connect_params *)(ipa_sys_params))->ipa_ep_cfg.hdr.hdr_ofst_pkt_size)
134*5113495bSYour Name #define QDF_IPA_SYS_PARAMS_HDR_LITTLE_ENDIAN(ipa_sys_params)	\
135*5113495bSYour Name 	(((struct ipa_sys_connect_params *)(ipa_sys_params))->ipa_ep_cfg.hdr_ext.hdr_little_endian)
136*5113495bSYour Name #define QDF_IPA_SYS_PARAMS_MODE(ipa_sys_params)	\
137*5113495bSYour Name 	(((struct ipa_sys_connect_params *)(ipa_sys_params))->ipa_ep_cfg.mode.mode)
138*5113495bSYour Name #define QDF_IPA_SYS_PARAMS_CLIENT(ipa_sys_params)	\
139*5113495bSYour Name 	(((struct ipa_sys_connect_params *)(ipa_sys_params))->client)
140*5113495bSYour Name #define QDF_IPA_SYS_PARAMS_DESC_FIFO_SZ(ipa_sys_params)	\
141*5113495bSYour Name 	(((struct ipa_sys_connect_params *)(ipa_sys_params))->desc_fifo_sz)
142*5113495bSYour Name #define QDF_IPA_SYS_PARAMS_PRIV(ipa_sys_params)	\
143*5113495bSYour Name 	(((struct ipa_sys_connect_params *)(ipa_sys_params))->priv)
144*5113495bSYour Name #define QDF_IPA_SYS_PARAMS_NOTIFY(ipa_sys_params)	\
145*5113495bSYour Name 	(((struct ipa_sys_connect_params *)(ipa_sys_params))->notify)
146*5113495bSYour Name #define QDF_IPA_SYS_PARAMS_SKIP_EP_CFG(ipa_sys_params)	\
147*5113495bSYour Name 	(((struct ipa_sys_connect_params *)(ipa_sys_params))->skip_ep_cfg)
148*5113495bSYour Name #define QDF_IPA_SYS_PARAMS_KEEP_IPA_AWAKE(ipa_sys_params)	\
149*5113495bSYour Name 	(((struct ipa_sys_connect_params *)(ipa_sys_params))->keep_ipa_awake)
150*5113495bSYour Name 
151*5113495bSYour Name /**
152*5113495bSYour Name  * __qdf_pa_rm_event_t - IPA RM events
153*5113495bSYour Name  *
154*5113495bSYour Name  * Indicate the resource state change
155*5113495bSYour Name  */
156*5113495bSYour Name typedef enum ipa_rm_event __qdf_ipa_rm_event_t;
157*5113495bSYour Name 
158*5113495bSYour Name /**
159*5113495bSYour Name  * struct __qdf_ipa_rm_register_params_t - information needed to
160*5113495bSYour Name  *      register IPA RM client with IPA RM
161*5113495bSYour Name  */
162*5113495bSYour Name typedef struct ipa_rm_register_params __qdf_ipa_rm_register_params_t;
163*5113495bSYour Name 
164*5113495bSYour Name /**
165*5113495bSYour Name  * struct __qdf_ipa_rm_create_params_t - information needed to initialize
166*5113495bSYour Name  *				the resource
167*5113495bSYour Name  *
168*5113495bSYour Name  * IPA RM client is expected to perform non blocking operations only
169*5113495bSYour Name  * in request_resource and release_resource functions and
170*5113495bSYour Name  * release notification context as soon as possible.
171*5113495bSYour Name  */
172*5113495bSYour Name typedef struct ipa_rm_create_params __qdf_ipa_rm_create_params_t;
173*5113495bSYour Name 
174*5113495bSYour Name #define QDF_IPA_RM_CREATE_PARAMS_NAME(create_params)	\
175*5113495bSYour Name 	(((struct ipa_rm_create_params *)(create_params))->name)
176*5113495bSYour Name #define QDF_IPA_RM_CREATE_PARAMS_USER_DATA(create_params)	\
177*5113495bSYour Name 	(((struct ipa_rm_create_params *)(create_params))->reg_params.user_data)
178*5113495bSYour Name #define QDF_IPA_RM_CREATE_PARAMS_NOTIFY_CB(create_params)	\
179*5113495bSYour Name 	(((struct ipa_rm_create_params *)(create_params))->reg_params.notify_cb)
180*5113495bSYour Name #define QDF_IPA_RM_CREATE_PARAMS_REQUEST_RESOURCE(create_params)	\
181*5113495bSYour Name 	(((struct ipa_rm_create_params *)(create_params))->request_resource)
182*5113495bSYour Name #define QDF_IPA_RM_CREATE_PARAMS_RELEASE_RESOURCE(create_params)	\
183*5113495bSYour Name 	(((struct ipa_rm_create_params *)(create_params))->release_resource)
184*5113495bSYour Name #define QDF_IPA_RM_CREATE_PARAMS_FLOOR_VOLTAGE(create_params)	\
185*5113495bSYour Name 	(((struct ipa_rm_create_params *)(create_params))->floor_voltage)
186*5113495bSYour Name 
187*5113495bSYour Name /**
188*5113495bSYour Name  * __qdf_ipa_rm_perf_profile_t - information regarding IPA RM client performance
189*5113495bSYour Name  * profile
190*5113495bSYour Name  */
191*5113495bSYour Name typedef struct ipa_rm_perf_profile __qdf_ipa_rm_perf_profile_t;
192*5113495bSYour Name 
193*5113495bSYour Name #define QDF_IPA_RM_PERF_PROFILE_MAX_SUPPORTED_BANDWIDTH_MBPS(profile)	\
194*5113495bSYour Name 	(((struct ipa_rm_perf_profile *)(profile))->max_supported_bandwidth_mbps)
195*5113495bSYour Name 
196*5113495bSYour Name /**
197*5113495bSYour Name  * __qdf_ipa_tx_data_desc_t - information needed
198*5113495bSYour Name  * to send data packet to HW link: link to data descriptors
199*5113495bSYour Name  * priv: client specific private data
200*5113495bSYour Name  */
201*5113495bSYour Name typedef struct ipa_tx_data_desc __qdf_ipa_tx_data_desc_t;
202*5113495bSYour Name 
203*5113495bSYour Name /**
204*5113495bSYour Name  * __qdf_ipa_rx_data_t - information needed
205*5113495bSYour Name  * to send to wlan driver on receiving data from ipa hw
206*5113495bSYour Name  */
207*5113495bSYour Name typedef struct ipa_rx_data __qdf_ipa_rx_data_t;
208*5113495bSYour Name 
209*5113495bSYour Name #define QDF_IPA_RX_DATA_SKB(desc)	\
210*5113495bSYour Name 	(((struct ipa_rx_data *)(desc))->skb)
211*5113495bSYour Name #define QDF_IPA_RX_DATA_SKB_LEN(desc)	\
212*5113495bSYour Name 	(((struct ipa_rx_data *)(desc))->skb->len)
213*5113495bSYour Name #define QDF_IPA_RX_DATA_DMA_ADDR(desc)	\
214*5113495bSYour Name 	(((struct ipa_rx_data *)(desc))->dma_addr)
215*5113495bSYour Name 
216*5113495bSYour Name /**
217*5113495bSYour Name  * __qdf_ipa_wdi_ul_params_t - WDI_RX configuration
218*5113495bSYour Name  */
219*5113495bSYour Name typedef struct ipa_wdi_ul_params __qdf_ipa_wdi_ul_params_t;
220*5113495bSYour Name 
221*5113495bSYour Name /**
222*5113495bSYour Name  * __qdf_ipa_wdi_ul_params_smmu_t - WDI_RX configuration (with WLAN SMMU)
223*5113495bSYour Name  */
224*5113495bSYour Name typedef struct ipa_wdi_ul_params_smmu __qdf_ipa_wdi_ul_params_smmu_t;
225*5113495bSYour Name 
226*5113495bSYour Name /**
227*5113495bSYour Name  * __qdf_ipa_wdi_dl_params_t - WDI_TX configuration
228*5113495bSYour Name  */
229*5113495bSYour Name typedef struct ipa_wdi_dl_params __qdf_ipa_wdi_dl_params_t;
230*5113495bSYour Name 
231*5113495bSYour Name /**
232*5113495bSYour Name  * __qdf_ipa_wdi_dl_params_smmu_t - WDI_TX configuration (with WLAN SMMU)
233*5113495bSYour Name  */
234*5113495bSYour Name typedef struct ipa_wdi_dl_params_smmu __qdf_ipa_wdi_dl_params_smmu_t;
235*5113495bSYour Name 
236*5113495bSYour Name /**
237*5113495bSYour Name  * __qdf_ipa_wdi_in_params_t - information provided by WDI client
238*5113495bSYour Name  */
239*5113495bSYour Name typedef struct ipa_wdi_in_params __qdf_ipa_wdi_in_params_t;
240*5113495bSYour Name 
241*5113495bSYour Name #define QDF_IPA_PIPE_IN_NAT_EN(pipe_in)	\
242*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->sys.ipa_ep_cfg.nat.nat_en)
243*5113495bSYour Name #define QDF_IPA_PIPE_IN_HDR_LEN(pipe_in)	\
244*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->sys.ipa_ep_cfg.hdr.hdr_len)
245*5113495bSYour Name #define QDF_IPA_PIPE_IN_HDR_OFST_METADATA_VALID(pipe_in)	\
246*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->sys.ipa_ep_cfg.hdr.hdr_ofst_metadata_valid)
247*5113495bSYour Name #define QDF_IPA_PIPE_IN_HDR_METADATA_REG_VALID(pipe_in)	\
248*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->sys.ipa_ep_cfg.hdr.hdr_metadata_reg_valid)
249*5113495bSYour Name #define QDF_IPA_PIPE_IN_HDR_OFST_PKT_SIZE_VALID(pipe_in)	\
250*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->sys.ipa_ep_cfg.hdr.hdr_ofst_pkt_size_valid)
251*5113495bSYour Name #define QDF_IPA_PIPE_IN_HDR_OFST_PKT_SIZE(pipe_in)	\
252*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->sys.ipa_ep_cfg.hdr.hdr_ofst_pkt_size)
253*5113495bSYour Name #define QDF_IPA_PIPE_IN_HDR_ADDITIONAL_CONST_LEN(pipe_in)	\
254*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->sys.ipa_ep_cfg.hdr.hdr_additional_const_len)
255*5113495bSYour Name #define QDF_IPA_PIPE_IN_MODE(pipe_in)	\
256*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->sys.ipa_ep_cfg.mode.mode)
257*5113495bSYour Name #define QDF_IPA_PIPE_IN_CLIENT(pipe_in)	\
258*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->sys.client)
259*5113495bSYour Name #define QDF_IPA_PIPE_IN_DESC_FIFO_SZ(pipe_in)	\
260*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->sys.desc_fifo_sz)
261*5113495bSYour Name #define QDF_IPA_PIPE_IN_PRIV(pipe_in)	\
262*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->sys.priv)
263*5113495bSYour Name #define QDF_IPA_PIPE_IN_HDR_LITTLE_ENDIAN(pipe_in)	\
264*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->sys.ipa_ep_cfg.hdr_ext.hdr_little_endian)
265*5113495bSYour Name #define QDF_IPA_PIPE_IN_NOTIFY(pipe_in)	\
266*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->sys.notify)
267*5113495bSYour Name #define QDF_IPA_PIPE_IN_KEEP_IPA_AWAKE(pipe_in)	\
268*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->sys.keep_ipa_awake)
269*5113495bSYour Name #define QDF_IPA_PIPE_IN_KEEP_IPA_AWAKE(pipe_in)	\
270*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->sys.keep_ipa_awake)
271*5113495bSYour Name #ifdef FEATURE_METERING
272*5113495bSYour Name #define QDF_IPA_PIPE_IN_WDI_NOTIFY(pipe_in)	\
273*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->wdi_notify)
274*5113495bSYour Name #endif
275*5113495bSYour Name 
276*5113495bSYour Name #ifdef ENABLE_SMMU_S1_TRANSLATION
277*5113495bSYour Name #define QDF_IPA_PIPE_IN_SMMU_ENABLED(pipe_in)	\
278*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->smmu_enabled)
279*5113495bSYour Name 
280*5113495bSYour Name #define QDF_IPA_PIPE_IN_DL_SMMU_COMP_RING(pipe_in)	\
281*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->u.dl_smmu.comp_ring)
282*5113495bSYour Name #define QDF_IPA_PIPE_IN_DL_SMMU_CE_RING(pipe_in)	\
283*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->u.dl_smmu.ce_ring)
284*5113495bSYour Name #define QDF_IPA_PIPE_IN_DL_SMMU_COMP_RING_SIZE(pipe_in)	\
285*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->u.dl_smmu.comp_ring_size)
286*5113495bSYour Name #define QDF_IPA_PIPE_IN_DL_SMMU_CE_RING_SIZE(pipe_in)	\
287*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->u.dl_smmu.ce_ring_size)
288*5113495bSYour Name #define QDF_IPA_PIPE_IN_DL_SMMU_CE_DOOR_BELL_PA(pipe_in)	\
289*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->u.dl_smmu.ce_door_bell_pa)
290*5113495bSYour Name #define QDF_IPA_PIPE_IN_DL_SMMU_NUM_TX_BUFFERS(pipe_in)	\
291*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->u.dl_smmu.num_tx_buffers)
292*5113495bSYour Name 
293*5113495bSYour Name #define QDF_IPA_PIPE_IN_UL_SMMU_RDY_RING(pipe_in)	\
294*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->u.ul_smmu.rdy_ring)
295*5113495bSYour Name #define QDF_IPA_PIPE_IN_UL_SMMU_RDY_RING_SIZE(pipe_in)	\
296*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->u.ul_smmu.rdy_ring_size)
297*5113495bSYour Name #define QDF_IPA_PIPE_IN_UL_SMMU_RDY_RING_RP_PA(pipe_in)	\
298*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->u.ul_smmu.rdy_ring_rp_pa)
299*5113495bSYour Name #define QDF_IPA_PIPE_IN_UL_SMMU_RDY_RING_RP_VA(pipe_in)	\
300*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->u.ul_smmu.rdy_ring_rp_va)
301*5113495bSYour Name #define QDF_IPA_PIPE_IN_UL_SMMU_RDY_COMP_RING(pipe_in)	\
302*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->u.ul_smmu.rdy_comp_ring)
303*5113495bSYour Name #define QDF_IPA_PIPE_IN_UL_SMMU_RDY_COMP_RING_SIZE(pipe_in)	\
304*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->u.ul_smmu.rdy_comp_ring_size)
305*5113495bSYour Name #define QDF_IPA_PIPE_IN_UL_SMMU_RDY_COMP_RING_WP_PA(pipe_in)	\
306*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->u.ul_smmu.rdy_comp_ring_wp_pa)
307*5113495bSYour Name #define QDF_IPA_PIPE_IN_UL_SMMU_RDY_COMP_RING_WP_VA(pipe_in)	\
308*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->u.ul_smmu.rdy_comp_ring_wp_va)
309*5113495bSYour Name #endif
310*5113495bSYour Name 
311*5113495bSYour Name #define QDF_IPA_PIPE_IN_DL_COMP_RING_BASE_PA(pipe_in)	\
312*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->u.dl.comp_ring_base_pa)
313*5113495bSYour Name #define QDF_IPA_PIPE_IN_DL_COMP_RING_SIZE(pipe_in)	\
314*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->u.dl.comp_ring_size)
315*5113495bSYour Name #define QDF_IPA_PIPE_IN_DL_CE_RING_BASE_PA(pipe_in)	\
316*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->u.dl.ce_ring_base_pa)
317*5113495bSYour Name #define QDF_IPA_PIPE_IN_DL_CE_RING_SIZE(pipe_in)	\
318*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->u.dl.ce_ring_size)
319*5113495bSYour Name #define QDF_IPA_PIPE_IN_DL_CE_DOOR_BELL_PA(pipe_in)	\
320*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->u.dl.ce_door_bell_pa)
321*5113495bSYour Name #define QDF_IPA_PIPE_IN_DL_NUM_TX_BUFFERS(pipe_in)	\
322*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->u.dl.num_tx_buffers)
323*5113495bSYour Name 
324*5113495bSYour Name #define QDF_IPA_PIPE_IN_UL_RDY_RING_BASE_PA(pipe_in)	\
325*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->u.ul.rdy_ring_base_pa)
326*5113495bSYour Name #define QDF_IPA_PIPE_IN_UL_RDY_RING_SIZE(pipe_in)	\
327*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->u.ul.rdy_ring_size)
328*5113495bSYour Name #define QDF_IPA_PIPE_IN_UL_RDY_RING_RP_PA(pipe_in)	\
329*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->u.ul.rdy_ring_rp_pa)
330*5113495bSYour Name #define QDF_IPA_PIPE_IN_UL_RDY_RING_RP_VA(pipe_in)	\
331*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->u.ul.rdy_ring_rp_va)
332*5113495bSYour Name #define QDF_IPA_PIPE_IN_UL_RDY_COMP_RING(pipe_in)	\
333*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->u.ul.rdy_comp_ring_base_pa)
334*5113495bSYour Name #define QDF_IPA_PIPE_IN_UL_RDY_COMP_RING_SIZE(pipe_in)	\
335*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->u.ul.rdy_comp_ring_size)
336*5113495bSYour Name #define QDF_IPA_PIPE_IN_UL_RDY_COMP_RING_WP_PA(pipe_in)	\
337*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->u.ul.rdy_comp_ring_wp_pa)
338*5113495bSYour Name #define QDF_IPA_PIPE_IN_UL_RDY_COMP_RING_WP_VA(pipe_in)	\
339*5113495bSYour Name 	(((struct ipa_wdi_in_params *)(pipe_in))->u.ul.rdy_comp_ring_wp_va)
340*5113495bSYour Name 
341*5113495bSYour Name /**
342*5113495bSYour Name  * __qdf_ipa_wdi_out_params_t - information provided to WDI client
343*5113495bSYour Name  */
344*5113495bSYour Name typedef struct ipa_wdi_out_params __qdf_ipa_wdi_out_params_t;
345*5113495bSYour Name 
346*5113495bSYour Name #define QDF_IPA_PIPE_OUT_UC_DOOR_BELL_PA(pipe_out)	\
347*5113495bSYour Name 	(((struct ipa_wdi_out_params *)(pipe_out))->uc_door_bell_pa)
348*5113495bSYour Name #define QDF_IPA_PIPE_OUT_CLNT_HDL(pipe_out)	\
349*5113495bSYour Name 	(((struct ipa_wdi_out_params *)(pipe_out))->clnt_hdl)
350*5113495bSYour Name 
351*5113495bSYour Name /**
352*5113495bSYour Name  * __qdf_ipa_wdi_db_params_t - information provided to retrieve
353*5113495bSYour Name  *       physical address of uC doorbell
354*5113495bSYour Name  */
355*5113495bSYour Name typedef struct ipa_wdi_db_params __qdf_ipa_wdi_db_params_t;
356*5113495bSYour Name 
357*5113495bSYour Name /**
358*5113495bSYour Name  * __qdf_ipa_wdi_uc_ready_params_t - uC ready CB parameters
359*5113495bSYour Name  */
360*5113495bSYour Name typedef void (*__qdf_ipa_uc_ready_cb)(void *priv);
361*5113495bSYour Name typedef struct ipa_wdi_uc_ready_params __qdf_ipa_wdi_uc_ready_params_t;
362*5113495bSYour Name 
363*5113495bSYour Name #define QDF_IPA_UC_READY_PARAMS_IS_UC_READY(uc_ready_param)	\
364*5113495bSYour Name 	(((struct ipa_wdi_uc_ready_params *)(uc_ready_param))->is_uC_ready)
365*5113495bSYour Name #define QDF_IPA_UC_READY_PARAMS_PRIV(uc_ready_param)	\
366*5113495bSYour Name 	(((struct ipa_wdi_uc_ready_params *)(uc_ready_param))->priv)
367*5113495bSYour Name #define QDF_IPA_UC_READY_PARAMS_NOTIFY(uc_ready_param)	\
368*5113495bSYour Name 	(((struct ipa_wdi_uc_ready_params *)(uc_ready_param))->notify)
369*5113495bSYour Name 
370*5113495bSYour Name /**
371*5113495bSYour Name  * __qdf_ipa_wdi_buffer_info_t - address info of a WLAN allocated buffer
372*5113495bSYour Name  *
373*5113495bSYour Name  * IPA driver will create/release IOMMU mapping in IPA SMMU from iova->pa
374*5113495bSYour Name  */
375*5113495bSYour Name typedef struct ipa_wdi_buffer_info __qdf_ipa_wdi_buffer_info_t;
376*5113495bSYour Name 
377*5113495bSYour Name /**
378*5113495bSYour Name  * __qdf_ipa_gsi_ep_config_t - IPA GSI endpoint configurations
379*5113495bSYour Name  */
380*5113495bSYour Name typedef struct ipa_gsi_ep_config __qdf_ipa_gsi_ep_config_t;
381*5113495bSYour Name 
382*5113495bSYour Name #ifdef WDI3_STATS_UPDATE
383*5113495bSYour Name /**
384*5113495bSYour Name  * __qdf_ipa_wdi_tx_info_t - WLAN embedded TX information
385*5113495bSYour Name  */
386*5113495bSYour Name typedef struct ipa_wdi_tx_info __qdf_ipa_wdi_tx_info_t;
387*5113495bSYour Name 
388*5113495bSYour Name #define QDF_IPA_WDI_TX_INFO_STA_TX_BYTES(stats_info)	\
389*5113495bSYour Name 	(((struct ipa_wdi_tx_info *)stats_info)->sta_tx)
390*5113495bSYour Name #define QDF_IPA_WDI_TX_INFO_SAP_TX_BYTES(stats_info)	\
391*5113495bSYour Name 	(((struct ipa_wdi_tx_info *)stats_info)->ap_tx)
392*5113495bSYour Name /**
393*5113495bSYour Name  * __qdf_ipa_wdi_bw_info_t - BW levels to be monitored by uC
394*5113495bSYour Name  */
395*5113495bSYour Name typedef struct ipa_wdi_bw_info __qdf_ipa_wdi_bw_info_t;
396*5113495bSYour Name 
397*5113495bSYour Name #define QDF_IPA_WDI_BW_INFO_THRESHOLD_LEVEL_1(bw_info)	\
398*5113495bSYour Name 	(((struct ipa_wdi_bw_info *)bw_info)->threshold[0])
399*5113495bSYour Name #define QDF_IPA_WDI_BW_INFO_THRESHOLD_LEVEL_2(bw_info)	\
400*5113495bSYour Name 	(((struct ipa_wdi_bw_info *)bw_info)->threshold[1])
401*5113495bSYour Name #define QDF_IPA_WDI_BW_INFO_THRESHOLD_LEVEL_3(bw_info)	\
402*5113495bSYour Name 	(((struct ipa_wdi_bw_info *)bw_info)->threshold[2])
403*5113495bSYour Name #define QDF_IPA_WDI_BW_INFO_START_STOP(bw_info)	\
404*5113495bSYour Name 	(((struct ipa_wdi_bw_info *)bw_info)->stop)
405*5113495bSYour Name 
406*5113495bSYour Name /**
407*5113495bSYour Name  * __qdf_ipa_inform_wlan_bw_t - BW information given by IPA driver
408*5113495bSYour Name  */
409*5113495bSYour Name typedef struct ipa_inform_wlan_bw  __qdf_ipa_inform_wlan_bw_t;
410*5113495bSYour Name 
411*5113495bSYour Name #define QDF_IPA_INFORM_WLAN_BW_INDEX(bw_inform)	\
412*5113495bSYour Name 	(((struct ipa_inform_wlan_bw*)bw_inform)->index)
413*5113495bSYour Name #define QDF_IPA_INFORM_WLAN_BW_THROUGHPUT(bw_inform)	\
414*5113495bSYour Name 	(((struct ipa_inform_wlan_bw*)bw_inform)->throughput)
415*5113495bSYour Name 
416*5113495bSYour Name #endif /* WDI3_STATS_UPDATE */
417*5113495bSYour Name 
418*5113495bSYour Name /**
419*5113495bSYour Name  * __qdf_ipa_dp_evt_type_t - type of event client callback is
420*5113495bSYour Name  * invoked for on data path
421*5113495bSYour Name  * @IPA_RECEIVE: data is struct sk_buff
422*5113495bSYour Name  * @IPA_WRITE_DONE: data is struct sk_buff
423*5113495bSYour Name  */
424*5113495bSYour Name typedef enum ipa_dp_evt_type __qdf_ipa_dp_evt_type_t;
425*5113495bSYour Name 
426*5113495bSYour Name typedef struct ipa_hdr_add __qdf_ipa_hdr_add_t;
427*5113495bSYour Name typedef struct ipa_hdr_del __qdf_ipa_hdr_del_t;
428*5113495bSYour Name typedef struct ipa_ioc_add_hdr __qdf_ipa_ioc_add_hdr_t;
429*5113495bSYour Name 
430*5113495bSYour Name #define QDF_IPA_IOC_ADD_HDR_COMMIT(ipa_hdr)	\
431*5113495bSYour Name 	(((struct ipa_ioc_add_hdr *)(ipa_hdr))->commit)
432*5113495bSYour Name #define QDF_IPA_IOC_ADD_HDR_NUM_HDRS(ipa_hdr)	\
433*5113495bSYour Name 	(((struct ipa_ioc_add_hdr *)(ipa_hdr))->num_hdrs)
434*5113495bSYour Name #define QDF_IPA_IOC_ADD_HDR_NAME(ipa_hdr)	\
435*5113495bSYour Name 	(((struct ipa_ioc_add_hdr *)(ipa_hdr))->hdr[0].name)
436*5113495bSYour Name #define QDF_IPA_IOC_ADD_HDR_HDR(ipa_hdr)	\
437*5113495bSYour Name 	(((struct ipa_ioc_add_hdr *)(ipa_hdr))->hdr[0].hdr)
438*5113495bSYour Name #define QDF_IPA_IOC_ADD_HDR_HDR_LEN(ipa_hdr)	\
439*5113495bSYour Name 	(((struct ipa_ioc_add_hdr *)(ipa_hdr))->hdr[0].hdr_len)
440*5113495bSYour Name #define QDF_IPA_IOC_ADD_HDR_TYPE(ipa_hdr)	\
441*5113495bSYour Name 	(((struct ipa_ioc_add_hdr *)(ipa_hdr))->hdr[0].type)
442*5113495bSYour Name #define QDF_IPA_IOC_ADD_HDR_IS_PARTIAL(ipa_hdr)	\
443*5113495bSYour Name 	(((struct ipa_ioc_add_hdr *)(ipa_hdr))->hdr[0].is_partial)
444*5113495bSYour Name #define QDF_IPA_IOC_ADD_HDR_HDR_HDL(ipa_hdr)	\
445*5113495bSYour Name 	(((struct ipa_ioc_add_hdr *)(ipa_hdr))->hdr[0].hdr_hdl)
446*5113495bSYour Name #define QDF_IPA_IOC_ADD_HDR_STATUS(ipa_hdr)	\
447*5113495bSYour Name 	(((struct ipa_ioc_add_hdr *)(ipa_hdr))->hdr[0].status)
448*5113495bSYour Name #define QDF_IPA_IOC_ADD_HDR_IS_ETH2_OFST_VALID(ipa_hdr)	\
449*5113495bSYour Name 	(((struct ipa_ioc_add_hdr *)(ipa_hdr))->hdr[0].is_eth2_ofst_valid)
450*5113495bSYour Name #define QDF_IPA_IOC_ADD_HDR_ETH2_OFST(ipa_hdr)	\
451*5113495bSYour Name 	(((struct ipa_ioc_add_hdr *)(ipa_hdr))->hdr[0].eth2_ofst)
452*5113495bSYour Name 
453*5113495bSYour Name typedef struct ipa_ioc_del_hdr __qdf_ipa_ioc_del_hdr_t;
454*5113495bSYour Name 
455*5113495bSYour Name #define QDF_IPA_IOC_DEL_HDR_COMMIT(ipa_hdr)	\
456*5113495bSYour Name 	(((struct ipa_ioc_del_hdr *)(ipa_hdr))->commit)
457*5113495bSYour Name #define QDF_IPA_IOC_DEL_HDR_NUM_HDRS(ipa_hdr)	\
458*5113495bSYour Name 	(((struct ipa_ioc_del_hdr *)(ipa_hdr))->num_hdls)
459*5113495bSYour Name #define QDF_IPA_IOC_DEL_HDR_HDL(ipa_hdr)	\
460*5113495bSYour Name 	(((struct ipa_ioc_del_hdr *)(ipa_hdr))->hdl[0].hdl)
461*5113495bSYour Name #define QDF_IPA_IOC_DEL_HDR_STATUS(ipa_hdr)	\
462*5113495bSYour Name 	(((struct ipa_ioc_del_hdr *)(ipa_hdr))->hdl[0].status)
463*5113495bSYour Name 
464*5113495bSYour Name typedef struct ipa_ioc_get_hdr __qdf_ipa_ioc_get_hdr_t;
465*5113495bSYour Name 
466*5113495bSYour Name #define QDF_IPA_IOC_GET_HDR_NAME(ipa_hdr)	\
467*5113495bSYour Name 	(((struct ipa_ioc_get_hdr *)(ipa_hdr))->name)
468*5113495bSYour Name #define QDF_IPA_IOC_GET_HDR_HDL(ipa_hdr)	\
469*5113495bSYour Name 	(((struct ipa_ioc_get_hdr *)(ipa_hdr))->hdl)
470*5113495bSYour Name 
471*5113495bSYour Name typedef struct ipa_ioc_copy_hdr __qdf_ipa_ioc_copy_hdr_t;
472*5113495bSYour Name typedef struct ipa_ioc_add_hdr_proc_ctx __qdf_ipa_ioc_add_hdr_proc_ctx_t;
473*5113495bSYour Name typedef struct ipa_ioc_del_hdr_proc_ctx __qdf_ipa_ioc_del_hdr_proc_ctx_t;
474*5113495bSYour Name typedef struct ipa_msg_meta __qdf_ipa_msg_meta_t;
475*5113495bSYour Name 
476*5113495bSYour Name #define QDF_IPA_MSG_META_MSG_TYPE(meta)	\
477*5113495bSYour Name 	(((struct ipa_msg_meta *)(meta))->msg_type)
478*5113495bSYour Name #define QDF_IPA_MSG_META_MSG_LEN(meta)	\
479*5113495bSYour Name 	(((struct ipa_msg_meta *)(meta))->msg_len)
480*5113495bSYour Name 
481*5113495bSYour Name typedef enum ipa_client_type __qdf_ipa_client_type_t;
482*5113495bSYour Name typedef struct IpaHwStatsWDIInfoData_t __qdf_ipa_hw_stats_wdi_info_data_t;
483*5113495bSYour Name typedef enum ipa_rm_resource_name __qdf_ipa_rm_resource_name_t;
484*5113495bSYour Name typedef enum ipa_wlan_event __qdf_ipa_wlan_event_t;
485*5113495bSYour Name typedef struct ipa_wlan_msg __qdf_ipa_wlan_msg_t;
486*5113495bSYour Name 
487*5113495bSYour Name #ifdef IPA_WDS_EASYMESH_FEATURE
488*5113495bSYour Name /**
489*5113495bSYour Name  * __qdf_ipa_ast_info_type_t - AST entry create/update information
490*5113495bSYour Name  */
491*5113495bSYour Name typedef struct ipa_ast_info_type __qdf_ipa_ast_info_type_t;
492*5113495bSYour Name 
493*5113495bSYour Name #define QDF_IPA_WLAN_MSG_WDS_UPDATE(ipa_msg)	\
494*5113495bSYour Name 	(((struct ipa_wlan_msg *)(ipa_msg))->ast_update)
495*5113495bSYour Name #endif
496*5113495bSYour Name 
497*5113495bSYour Name #define QDF_IPA_WLAN_MSG_NAME(ipa_msg)	\
498*5113495bSYour Name 	(((struct ipa_wlan_msg *)(ipa_msg))->name)
499*5113495bSYour Name #define QDF_IPA_WLAN_MSG_MAC_ADDR(ipa_msg)	\
500*5113495bSYour Name 	(((struct ipa_wlan_msg *)(ipa_msg))->mac_addr)
501*5113495bSYour Name 
502*5113495bSYour Name #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 4, 0))
503*5113495bSYour Name #define QDF_IPA_WLAN_MSG_NETDEV_IF_ID(ipa_msg)	\
504*5113495bSYour Name 	(((struct ipa_wlan_msg *)(ipa_msg))->if_index)
505*5113495bSYour Name #else
506*5113495bSYour Name /**
507*5113495bSYour Name  * ipa_wlan_msg_if_index - Netdev interface id
508*5113495bSYour Name  */
509*5113495bSYour Name struct ipa_wlan_msg_if_index {
510*5113495bSYour Name 	char name[IPA_RESOURCE_NAME_MAX];
511*5113495bSYour Name 	uint8_t mac_addr[IPA_MAC_ADDR_SIZE];
512*5113495bSYour Name 	uint16_t if_index;
513*5113495bSYour Name };
514*5113495bSYour Name 
515*5113495bSYour Name #define QDF_IPA_WLAN_MSG_NETDEV_IF_ID(ipa_msg)	\
516*5113495bSYour Name 	(((struct ipa_wlan_msg_if_index *)(ipa_msg))->if_index)
517*5113495bSYour Name #endif
518*5113495bSYour Name 
519*5113495bSYour Name typedef struct ipa_wlan_msg_ex __qdf_ipa_wlan_msg_ex_t;
520*5113495bSYour Name 
521*5113495bSYour Name #define QDF_IPA_WLAN_MSG_EX_NAME(ipa_msg)	\
522*5113495bSYour Name 	(((struct ipa_wlan_msg_ex *)(ipa_msg))->name)
523*5113495bSYour Name #define QDF_IPA_WLAN_MSG_EX_EXNUM_OF_ATTRIBS(ipa_msg)	\
524*5113495bSYour Name 	(((struct ipa_wlan_msg_ex *)(ipa_msg))->num_of_attribs)
525*5113495bSYour Name #define QDF_IPA_WLAN_MSG_EX_ATTRIB_TYPE(ipa_msg)	\
526*5113495bSYour Name 	(((struct ipa_wlan_msg_ex *)(ipa_msg))->attribs.attrib_type)
527*5113495bSYour Name #define QDF_IPA_WLAN_MSG_EX_OFFSET(ipa_msg)	\
528*5113495bSYour Name 	(((struct ipa_wlan_msg_ex *)(ipa_msg))->attribs.offset)
529*5113495bSYour Name #define QDF_IPA_WLAN_MSG_EX_MAC_ADDR(ipa_msg)	\
530*5113495bSYour Name 	(((struct ipa_wlan_msg_ex *)(ipa_msg))->attribs.u.mac_addr)
531*5113495bSYour Name 
532*5113495bSYour Name typedef struct ipa_ioc_tx_intf_prop __qdf_ipa_ioc_tx_intf_prop_t;
533*5113495bSYour Name 
534*5113495bSYour Name #define QDF_IPA_IOC_TX_INTF_PROP_IP(tx_prop)	\
535*5113495bSYour Name 	(((struct ipa_ioc_tx_intf_prop *)(tx_prop))->ip)
536*5113495bSYour Name #define QDF_IPA_IOC_TX_INTF_PROP_ATTRIB_MASK(tx_prop)	\
537*5113495bSYour Name 	(((struct ipa_ioc_tx_intf_prop *)(tx_prop))->attrib.attrib_mask)
538*5113495bSYour Name #define QDF_IPA_IOC_TX_INTF_PROP_META_DATA(rx_prop)	\
539*5113495bSYour Name 	(((struct ipa_ioc_tx_intf_prop *)(tx_prop))->attrib.meta_data)
540*5113495bSYour Name #define QDF_IPA_IOC_TX_INTF_PROP_META_DATA_MASK(rx_prop)	\
541*5113495bSYour Name 	(((struct ipa_ioc_tx_intf_prop *)(tx_prop))->attrib.meta_data_mask)
542*5113495bSYour Name #define QDF_IPA_IOC_TX_INTF_PROP_DST_PIPE(tx_prop)	\
543*5113495bSYour Name 	(((struct ipa_ioc_tx_intf_prop *)(tx_prop))->dst_pipe)
544*5113495bSYour Name #define QDF_IPA_IOC_TX_INTF_PROP_ALT_DST_PIPE(tx_prop)	\
545*5113495bSYour Name 	(((struct ipa_ioc_tx_intf_prop *)(tx_prop))->alt_dst_pipe)
546*5113495bSYour Name #define QDF_IPA_IOC_TX_INTF_PROP_HDR_NAME(tx_prop)	\
547*5113495bSYour Name 	(((struct ipa_ioc_tx_intf_prop *)(tx_prop))->hdr_name)
548*5113495bSYour Name #define QDF_IPA_IOC_TX_INTF_PROP_HDR_L2_TYPE(tx_prop)	\
549*5113495bSYour Name 	(((struct ipa_ioc_tx_intf_prop *)(tx_prop))->hdr_l2_type)
550*5113495bSYour Name 
551*5113495bSYour Name typedef struct ipa_ioc_rx_intf_prop __qdf_ipa_ioc_rx_intf_prop_t;
552*5113495bSYour Name 
553*5113495bSYour Name #define QDF_IPA_IOC_RX_INTF_PROP_IP(rx_prop)	\
554*5113495bSYour Name 	(((struct ipa_ioc_rx_intf_prop *)(rx_prop))->ip)
555*5113495bSYour Name #define QDF_IPA_IOC_RX_INTF_PROP_ATTRIB_MASK(rx_prop)	\
556*5113495bSYour Name 	(((struct ipa_ioc_rx_intf_prop *)(rx_prop))->attrib.attrib_mask)
557*5113495bSYour Name #define QDF_IPA_IOC_RX_INTF_PROP_META_DATA(rx_prop)	\
558*5113495bSYour Name 	(((struct ipa_ioc_rx_intf_prop *)(rx_prop))->attrib.meta_data)
559*5113495bSYour Name #define QDF_IPA_IOC_RX_INTF_PROP_META_DATA_MASK(rx_prop)	\
560*5113495bSYour Name 	(((struct ipa_ioc_rx_intf_prop *)(rx_prop))->attrib.meta_data_mask)
561*5113495bSYour Name #define QDF_IPA_IOC_RX_INTF_PROP_SRC_PIPE(rx_prop)	\
562*5113495bSYour Name 	(((struct ipa_ioc_rx_intf_prop *)(rx_prop))->src_pipe)
563*5113495bSYour Name #define QDF_IPA_IOC_RX_INTF_PROP_HDR_L2_TYPE(rx_prop)	\
564*5113495bSYour Name 	(((struct ipa_ioc_rx_intf_prop *)(rx_prop))->hdr_l2_type)
565*5113495bSYour Name 
566*5113495bSYour Name typedef struct ipa_wlan_hdr_attrib_val __qdf_ipa_wlan_hdr_attrib_val_t;
567*5113495bSYour Name 
568*5113495bSYour Name #define __QDF_IPA_SET_META_MSG_TYPE(meta, msg_type)	\
569*5113495bSYour Name 	__qdf_ipa_set_meta_msg_type(meta, msg_type)
570*5113495bSYour Name 
571*5113495bSYour Name #define __QDF_IPA_RM_RESOURCE_GRANTED IPA_RM_RESOURCE_GRANTED
572*5113495bSYour Name #define __QDF_IPA_RM_RESOURCE_RELEASED IPA_RM_RESOURCE_RELEASED
573*5113495bSYour Name 
574*5113495bSYour Name #define __QDF_IPA_RM_RESOURCE_WLAN_PROD IPA_RM_RESOURCE_WLAN_PROD
575*5113495bSYour Name #define __QDF_IPA_RM_RESOURCE_WLAN_CONS IPA_RM_RESOURCE_WLAN_CONS
576*5113495bSYour Name #define __QDF_IPA_RM_RESOURCE_APPS_CONS IPA_RM_RESOURCE_APPS_CONS
577*5113495bSYour Name 
578*5113495bSYour Name #define __QDF_IPA_VOLTAGE_LEVEL IPA_VOLTAGE_SVS
579*5113495bSYour Name 
580*5113495bSYour Name #define __QDF_IPA_CLIENT_WLAN1_PROD IPA_CLIENT_WLAN1_PROD
581*5113495bSYour Name #define __QDF_IPA_CLIENT_WLAN3_PROD IPA_CLIENT_WLAN3_PROD
582*5113495bSYour Name #define __QDF_IPA_CLIENT_WLAN1_CONS IPA_CLIENT_WLAN1_CONS
583*5113495bSYour Name #define __QDF_IPA_CLIENT_WLAN2_CONS IPA_CLIENT_WLAN2_CONS
584*5113495bSYour Name #define __QDF_IPA_CLIENT_WLAN3_CONS IPA_CLIENT_WLAN3_CONS
585*5113495bSYour Name #define __QDF_IPA_CLIENT_WLAN4_CONS IPA_CLIENT_WLAN4_CONS
586*5113495bSYour Name #define __QDF_IPA_CLIENT_WLAN4_PROD IPA_CLIENT_WLAN4_PROD
587*5113495bSYour Name 
588*5113495bSYour Name #if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)) && \
589*5113495bSYour Name 	(LINUX_VERSION_CODE >= KERNEL_VERSION(4, 9, 0))
590*5113495bSYour Name #define __QDF_IPA_CLIENT_WLAN_WDI2_CONS IPA_CLIENT_WLAN4_CONS
591*5113495bSYour Name #define __QDF_IPA_CLIENT_WLAN_WDI2_PROD IPA_CLIENT_WLAN4_PROD
592*5113495bSYour Name #else
593*5113495bSYour Name #define __QDF_IPA_CLIENT_WLAN_WDI2_CONS IPA_CLIENT_WLAN1_CONS
594*5113495bSYour Name #define __QDF_IPA_CLIENT_WLAN_WDI2_PROD IPA_CLIENT_WLAN1_PROD
595*5113495bSYour Name #endif
596*5113495bSYour Name 
597*5113495bSYour Name #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 19, 0))
598*5113495bSYour Name #define IPA_LAN_RX_NAPI_SUPPORT
599*5113495bSYour Name #endif
600*5113495bSYour Name 
601*5113495bSYour Name #if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 10, 0))
602*5113495bSYour Name /*
603*5113495bSYour Name  * Resume / Suspend
604*5113495bSYour Name  */
__qdf_ipa_reset_endpoint(u32 clnt_hdl)605*5113495bSYour Name static inline int __qdf_ipa_reset_endpoint(u32 clnt_hdl)
606*5113495bSYour Name {
607*5113495bSYour Name 	return ipa_reset_endpoint(clnt_hdl);
608*5113495bSYour Name }
609*5113495bSYour Name 
610*5113495bSYour Name /*
611*5113495bSYour Name  * Remove ep delay
612*5113495bSYour Name  */
__qdf_ipa_clear_endpoint_delay(u32 clnt_hdl)613*5113495bSYour Name static inline int __qdf_ipa_clear_endpoint_delay(u32 clnt_hdl)
614*5113495bSYour Name {
615*5113495bSYour Name 	return ipa_clear_endpoint_delay(clnt_hdl);
616*5113495bSYour Name }
617*5113495bSYour Name 
618*5113495bSYour Name /*
619*5113495bSYour Name  * Header removal / addition
620*5113495bSYour Name  */
__qdf_ipa_add_hdr(struct ipa_ioc_add_hdr * hdrs)621*5113495bSYour Name static inline int __qdf_ipa_add_hdr(struct ipa_ioc_add_hdr *hdrs)
622*5113495bSYour Name {
623*5113495bSYour Name 	return ipa_add_hdr(hdrs);
624*5113495bSYour Name }
625*5113495bSYour Name 
__qdf_ipa_del_hdr(struct ipa_ioc_del_hdr * hdls)626*5113495bSYour Name static inline int __qdf_ipa_del_hdr(struct ipa_ioc_del_hdr *hdls)
627*5113495bSYour Name {
628*5113495bSYour Name 	return ipa_del_hdr(hdls);
629*5113495bSYour Name }
630*5113495bSYour Name 
__qdf_ipa_commit_hdr(void)631*5113495bSYour Name static inline int __qdf_ipa_commit_hdr(void)
632*5113495bSYour Name {
633*5113495bSYour Name 	return ipa_commit_hdr();
634*5113495bSYour Name }
635*5113495bSYour Name 
__qdf_ipa_get_hdr(struct ipa_ioc_get_hdr * lookup)636*5113495bSYour Name static inline int __qdf_ipa_get_hdr(struct ipa_ioc_get_hdr *lookup)
637*5113495bSYour Name {
638*5113495bSYour Name 	return ipa_get_hdr(lookup);
639*5113495bSYour Name }
640*5113495bSYour Name 
__qdf_ipa_put_hdr(u32 hdr_hdl)641*5113495bSYour Name static inline int __qdf_ipa_put_hdr(u32 hdr_hdl)
642*5113495bSYour Name {
643*5113495bSYour Name 	return ipa_put_hdr(hdr_hdl);
644*5113495bSYour Name }
645*5113495bSYour Name 
__qdf_ipa_copy_hdr(struct ipa_ioc_copy_hdr * copy)646*5113495bSYour Name static inline int __qdf_ipa_copy_hdr(struct ipa_ioc_copy_hdr *copy)
647*5113495bSYour Name {
648*5113495bSYour Name 	return ipa_copy_hdr(copy);
649*5113495bSYour Name }
650*5113495bSYour Name 
__qdf_ipa_register_pull_msg(struct ipa_msg_meta * meta,ipa_msg_pull_fn callback)651*5113495bSYour Name static inline int __qdf_ipa_register_pull_msg(struct ipa_msg_meta *meta,
652*5113495bSYour Name 		ipa_msg_pull_fn callback)
653*5113495bSYour Name {
654*5113495bSYour Name 	return ipa_register_pull_msg(meta, callback);
655*5113495bSYour Name }
656*5113495bSYour Name 
__qdf_ipa_deregister_pull_msg(struct ipa_msg_meta * meta)657*5113495bSYour Name static inline int __qdf_ipa_deregister_pull_msg(struct ipa_msg_meta *meta)
658*5113495bSYour Name {
659*5113495bSYour Name 	return ipa_deregister_pull_msg(meta);
660*5113495bSYour Name }
661*5113495bSYour Name 
662*5113495bSYour Name /*
663*5113495bSYour Name  * Interface
664*5113495bSYour Name  */
__qdf_ipa_register_intf(const char * name,const struct ipa_tx_intf * tx,const struct ipa_rx_intf * rx)665*5113495bSYour Name static inline int __qdf_ipa_register_intf(const char *name,
666*5113495bSYour Name 				     const struct ipa_tx_intf *tx,
667*5113495bSYour Name 				     const struct ipa_rx_intf *rx)
668*5113495bSYour Name {
669*5113495bSYour Name 	return ipa_register_intf(name, tx, rx);
670*5113495bSYour Name }
671*5113495bSYour Name 
__qdf_ipa_register_intf_ext(const char * name,const struct ipa_tx_intf * tx,const struct ipa_rx_intf * rx,const struct ipa_ext_intf * ext)672*5113495bSYour Name static inline int __qdf_ipa_register_intf_ext(const char *name,
673*5113495bSYour Name 		const struct ipa_tx_intf *tx,
674*5113495bSYour Name 		const struct ipa_rx_intf *rx,
675*5113495bSYour Name 		const struct ipa_ext_intf *ext)
676*5113495bSYour Name {
677*5113495bSYour Name 	return ipa_register_intf_ext(name, tx, rx, ext);
678*5113495bSYour Name }
679*5113495bSYour Name 
__qdf_ipa_deregister_intf(const char * name)680*5113495bSYour Name static inline int __qdf_ipa_deregister_intf(const char *name)
681*5113495bSYour Name {
682*5113495bSYour Name 	return ipa_deregister_intf(name);
683*5113495bSYour Name }
684*5113495bSYour Name 
685*5113495bSYour Name /*
686*5113495bSYour Name  * Data path
687*5113495bSYour Name  */
__qdf_ipa_tx_dp(enum ipa_client_type dst,struct sk_buff * skb,struct ipa_tx_meta * metadata)688*5113495bSYour Name static inline int __qdf_ipa_tx_dp(enum ipa_client_type dst, struct sk_buff *skb,
689*5113495bSYour Name 		struct ipa_tx_meta *metadata)
690*5113495bSYour Name {
691*5113495bSYour Name 	return ipa_tx_dp(dst, skb, metadata);
692*5113495bSYour Name }
693*5113495bSYour Name 
694*5113495bSYour Name /*
695*5113495bSYour Name  * To transfer multiple data packets
696*5113495bSYour Name  */
__qdf_ipa_tx_dp_mul(enum ipa_client_type dst,struct ipa_tx_data_desc * data_desc)697*5113495bSYour Name static inline int __qdf_ipa_tx_dp_mul(
698*5113495bSYour Name 	enum ipa_client_type dst,
699*5113495bSYour Name 	struct ipa_tx_data_desc *data_desc)
700*5113495bSYour Name {
701*5113495bSYour Name 	return ipa_tx_dp_mul(dst, data_desc);
702*5113495bSYour Name }
703*5113495bSYour Name 
704*5113495bSYour Name /*
705*5113495bSYour Name  * System pipes
706*5113495bSYour Name  */
__qdf_ipa_get_smem_restr_bytes(void)707*5113495bSYour Name static inline u16 __qdf_ipa_get_smem_restr_bytes(void)
708*5113495bSYour Name {
709*5113495bSYour Name 	return ipa_get_smem_restr_bytes();
710*5113495bSYour Name }
711*5113495bSYour Name 
__qdf_ipa_connect_wdi_pipe(struct ipa_wdi_in_params * in,struct ipa_wdi_out_params * out)712*5113495bSYour Name static inline int __qdf_ipa_connect_wdi_pipe(struct ipa_wdi_in_params *in,
713*5113495bSYour Name 		struct ipa_wdi_out_params *out)
714*5113495bSYour Name {
715*5113495bSYour Name 	return ipa_connect_wdi_pipe(in, out);
716*5113495bSYour Name }
717*5113495bSYour Name 
__qdf_ipa_disconnect_wdi_pipe(u32 clnt_hdl)718*5113495bSYour Name static inline int __qdf_ipa_disconnect_wdi_pipe(u32 clnt_hdl)
719*5113495bSYour Name {
720*5113495bSYour Name 	return ipa_disconnect_wdi_pipe(clnt_hdl);
721*5113495bSYour Name }
722*5113495bSYour Name 
__qdf_ipa_enable_wdi_pipe(u32 clnt_hdl)723*5113495bSYour Name static inline int __qdf_ipa_enable_wdi_pipe(u32 clnt_hdl)
724*5113495bSYour Name {
725*5113495bSYour Name 	return ipa_enable_wdi_pipe(clnt_hdl);
726*5113495bSYour Name }
727*5113495bSYour Name 
__qdf_ipa_disable_wdi_pipe(u32 clnt_hdl)728*5113495bSYour Name static inline int __qdf_ipa_disable_wdi_pipe(u32 clnt_hdl)
729*5113495bSYour Name {
730*5113495bSYour Name 	return ipa_disable_wdi_pipe(clnt_hdl);
731*5113495bSYour Name }
732*5113495bSYour Name 
__qdf_ipa_resume_wdi_pipe(u32 clnt_hdl)733*5113495bSYour Name static inline int __qdf_ipa_resume_wdi_pipe(u32 clnt_hdl)
734*5113495bSYour Name {
735*5113495bSYour Name 	return ipa_resume_wdi_pipe(clnt_hdl);
736*5113495bSYour Name }
737*5113495bSYour Name 
__qdf_ipa_suspend_wdi_pipe(u32 clnt_hdl)738*5113495bSYour Name static inline int __qdf_ipa_suspend_wdi_pipe(u32 clnt_hdl)
739*5113495bSYour Name {
740*5113495bSYour Name 	return ipa_suspend_wdi_pipe(clnt_hdl);
741*5113495bSYour Name }
742*5113495bSYour Name 
__qdf_ipa_uc_wdi_get_dbpa(struct ipa_wdi_db_params * out)743*5113495bSYour Name static inline int __qdf_ipa_uc_wdi_get_dbpa(
744*5113495bSYour Name 	struct ipa_wdi_db_params *out)
745*5113495bSYour Name {
746*5113495bSYour Name 	return ipa_uc_wdi_get_dbpa(out);
747*5113495bSYour Name }
748*5113495bSYour Name 
749*5113495bSYour Name /*
750*5113495bSYour Name  * Resource manager
751*5113495bSYour Name  */
__qdf_ipa_rm_create_resource(struct ipa_rm_create_params * create_params)752*5113495bSYour Name static inline int __qdf_ipa_rm_create_resource(
753*5113495bSYour Name 		struct ipa_rm_create_params *create_params)
754*5113495bSYour Name {
755*5113495bSYour Name 	return ipa_rm_create_resource(create_params);
756*5113495bSYour Name }
757*5113495bSYour Name 
__qdf_ipa_rm_delete_resource(enum ipa_rm_resource_name resource_name)758*5113495bSYour Name static inline int __qdf_ipa_rm_delete_resource(
759*5113495bSYour Name 		enum ipa_rm_resource_name resource_name)
760*5113495bSYour Name {
761*5113495bSYour Name 	return ipa_rm_delete_resource(resource_name);
762*5113495bSYour Name }
763*5113495bSYour Name 
__qdf_ipa_rm_register(enum ipa_rm_resource_name resource_name,struct ipa_rm_register_params * reg_params)764*5113495bSYour Name static inline int __qdf_ipa_rm_register(enum ipa_rm_resource_name resource_name,
765*5113495bSYour Name 			struct ipa_rm_register_params *reg_params)
766*5113495bSYour Name {
767*5113495bSYour Name 	return ipa_rm_register(resource_name, reg_params);
768*5113495bSYour Name }
769*5113495bSYour Name 
__qdf_ipa_rm_set_perf_profile(enum ipa_rm_resource_name resource_name,struct ipa_rm_perf_profile * profile)770*5113495bSYour Name static inline int __qdf_ipa_rm_set_perf_profile(
771*5113495bSYour Name 		enum ipa_rm_resource_name resource_name,
772*5113495bSYour Name 		struct ipa_rm_perf_profile *profile)
773*5113495bSYour Name {
774*5113495bSYour Name 	return ipa_rm_set_perf_profile(resource_name, profile);
775*5113495bSYour Name }
776*5113495bSYour Name 
__qdf_ipa_rm_deregister(enum ipa_rm_resource_name resource_name,struct ipa_rm_register_params * reg_params)777*5113495bSYour Name static inline int __qdf_ipa_rm_deregister(enum ipa_rm_resource_name resource_name,
778*5113495bSYour Name 			struct ipa_rm_register_params *reg_params)
779*5113495bSYour Name {
780*5113495bSYour Name 	return ipa_rm_deregister(resource_name, reg_params);
781*5113495bSYour Name }
782*5113495bSYour Name 
__qdf_ipa_rm_add_dependency(enum ipa_rm_resource_name resource_name,enum ipa_rm_resource_name depends_on_name)783*5113495bSYour Name static inline int __qdf_ipa_rm_add_dependency(
784*5113495bSYour Name 		enum ipa_rm_resource_name resource_name,
785*5113495bSYour Name 		enum ipa_rm_resource_name depends_on_name)
786*5113495bSYour Name {
787*5113495bSYour Name 	return ipa_rm_add_dependency(resource_name, depends_on_name);
788*5113495bSYour Name }
789*5113495bSYour Name 
__qdf_ipa_rm_add_dependency_sync(enum ipa_rm_resource_name resource_name,enum ipa_rm_resource_name depends_on_name)790*5113495bSYour Name static inline int __qdf_ipa_rm_add_dependency_sync(
791*5113495bSYour Name 		enum ipa_rm_resource_name resource_name,
792*5113495bSYour Name 		enum ipa_rm_resource_name depends_on_name)
793*5113495bSYour Name {
794*5113495bSYour Name 	return ipa_rm_add_dependency_sync(resource_name, depends_on_name);
795*5113495bSYour Name }
796*5113495bSYour Name 
__qdf_ipa_rm_delete_dependency(enum ipa_rm_resource_name resource_name,enum ipa_rm_resource_name depends_on_name)797*5113495bSYour Name static inline int __qdf_ipa_rm_delete_dependency(
798*5113495bSYour Name 		enum ipa_rm_resource_name resource_name,
799*5113495bSYour Name 		enum ipa_rm_resource_name depends_on_name)
800*5113495bSYour Name {
801*5113495bSYour Name 	return ipa_rm_delete_dependency(resource_name, depends_on_name);
802*5113495bSYour Name }
803*5113495bSYour Name 
__qdf_ipa_rm_request_resource(enum ipa_rm_resource_name resource_name)804*5113495bSYour Name static inline int __qdf_ipa_rm_request_resource(
805*5113495bSYour Name 		enum ipa_rm_resource_name resource_name)
806*5113495bSYour Name {
807*5113495bSYour Name 	return ipa_rm_request_resource(resource_name);
808*5113495bSYour Name }
809*5113495bSYour Name 
__qdf_ipa_rm_release_resource(enum ipa_rm_resource_name resource_name)810*5113495bSYour Name static inline int __qdf_ipa_rm_release_resource(
811*5113495bSYour Name 		enum ipa_rm_resource_name resource_name)
812*5113495bSYour Name {
813*5113495bSYour Name 	return ipa_rm_release_resource(resource_name);
814*5113495bSYour Name }
815*5113495bSYour Name 
__qdf_ipa_rm_notify_completion(enum ipa_rm_event event,enum ipa_rm_resource_name resource_name)816*5113495bSYour Name static inline int __qdf_ipa_rm_notify_completion(enum ipa_rm_event event,
817*5113495bSYour Name 		enum ipa_rm_resource_name resource_name)
818*5113495bSYour Name {
819*5113495bSYour Name 	return ipa_rm_notify_completion(event, resource_name);
820*5113495bSYour Name }
821*5113495bSYour Name 
__qdf_ipa_rm_inactivity_timer_init(enum ipa_rm_resource_name resource_name,unsigned long msecs)822*5113495bSYour Name static inline int __qdf_ipa_rm_inactivity_timer_init(
823*5113495bSYour Name 		enum ipa_rm_resource_name resource_name,
824*5113495bSYour Name 			unsigned long msecs)
825*5113495bSYour Name {
826*5113495bSYour Name 	return ipa_rm_inactivity_timer_init(resource_name, msecs);
827*5113495bSYour Name }
828*5113495bSYour Name 
__qdf_ipa_rm_inactivity_timer_destroy(enum ipa_rm_resource_name resource_name)829*5113495bSYour Name static inline int __qdf_ipa_rm_inactivity_timer_destroy(
830*5113495bSYour Name 		enum ipa_rm_resource_name resource_name)
831*5113495bSYour Name {
832*5113495bSYour Name 	return ipa_rm_inactivity_timer_destroy(resource_name);
833*5113495bSYour Name }
834*5113495bSYour Name 
__qdf_ipa_rm_inactivity_timer_request_resource(enum ipa_rm_resource_name resource_name)835*5113495bSYour Name static inline int __qdf_ipa_rm_inactivity_timer_request_resource(
836*5113495bSYour Name 				enum ipa_rm_resource_name resource_name)
837*5113495bSYour Name {
838*5113495bSYour Name 	return ipa_rm_inactivity_timer_request_resource(resource_name);
839*5113495bSYour Name }
840*5113495bSYour Name 
__qdf_ipa_rm_inactivity_timer_release_resource(enum ipa_rm_resource_name resource_name)841*5113495bSYour Name static inline int __qdf_ipa_rm_inactivity_timer_release_resource(
842*5113495bSYour Name 				enum ipa_rm_resource_name resource_name)
843*5113495bSYour Name {
844*5113495bSYour Name 	return ipa_rm_inactivity_timer_release_resource(resource_name);
845*5113495bSYour Name }
846*5113495bSYour Name 
847*5113495bSYour Name /*
848*5113495bSYour Name  * Miscellaneous
849*5113495bSYour Name  */
__qdf_ipa_bam_reg_dump(void)850*5113495bSYour Name static inline void __qdf_ipa_bam_reg_dump(void)
851*5113495bSYour Name {
852*5113495bSYour Name 	return ipa_bam_reg_dump();
853*5113495bSYour Name }
854*5113495bSYour Name 
__qdf_ipa_get_ep_mapping(enum ipa_client_type client)855*5113495bSYour Name static inline int __qdf_ipa_get_ep_mapping(enum ipa_client_type client)
856*5113495bSYour Name {
857*5113495bSYour Name 	return ipa_get_ep_mapping(client);
858*5113495bSYour Name }
859*5113495bSYour Name 
__qdf_ipa_proxy_clk_vote(void)860*5113495bSYour Name static inline void __qdf_ipa_proxy_clk_vote(void)
861*5113495bSYour Name {
862*5113495bSYour Name 	return ipa_proxy_clk_vote();
863*5113495bSYour Name }
864*5113495bSYour Name 
__qdf_ipa_proxy_clk_unvote(void)865*5113495bSYour Name static inline void __qdf_ipa_proxy_clk_unvote(void)
866*5113495bSYour Name {
867*5113495bSYour Name 	return ipa_proxy_clk_unvote();
868*5113495bSYour Name }
869*5113495bSYour Name 
__qdf_ipa_is_client_handle_valid(u32 clnt_hdl)870*5113495bSYour Name static inline bool __qdf_ipa_is_client_handle_valid(u32 clnt_hdl)
871*5113495bSYour Name {
872*5113495bSYour Name 	return ipa_is_client_handle_valid(clnt_hdl);
873*5113495bSYour Name }
874*5113495bSYour Name 
__qdf_ipa_get_client_mapping(int pipe_idx)875*5113495bSYour Name static inline enum ipa_client_type __qdf_ipa_get_client_mapping(int pipe_idx)
876*5113495bSYour Name {
877*5113495bSYour Name 	return ipa_get_client_mapping(pipe_idx);
878*5113495bSYour Name }
879*5113495bSYour Name 
__qdf_ipa_get_rm_resource_from_ep(int pipe_idx)880*5113495bSYour Name static inline enum ipa_rm_resource_name __qdf_ipa_get_rm_resource_from_ep(
881*5113495bSYour Name 	int pipe_idx)
882*5113495bSYour Name {
883*5113495bSYour Name 	return ipa_get_rm_resource_from_ep(pipe_idx);
884*5113495bSYour Name }
885*5113495bSYour Name 
__qdf_ipa_get_modem_cfg_emb_pipe_flt(void)886*5113495bSYour Name static inline bool __qdf_ipa_get_modem_cfg_emb_pipe_flt(void)
887*5113495bSYour Name {
888*5113495bSYour Name 	return ipa_get_modem_cfg_emb_pipe_flt();
889*5113495bSYour Name }
890*5113495bSYour Name 
__qdf_ipa_get_transport_type(void)891*5113495bSYour Name static inline enum ipa_transport_type __qdf_ipa_get_transport_type(void)
892*5113495bSYour Name {
893*5113495bSYour Name 	return ipa_get_transport_type();
894*5113495bSYour Name }
895*5113495bSYour Name 
__qdf_ipa_get_dma_dev(void)896*5113495bSYour Name static inline struct device *__qdf_ipa_get_dma_dev(void)
897*5113495bSYour Name {
898*5113495bSYour Name 	return ipa_get_dma_dev();
899*5113495bSYour Name }
900*5113495bSYour Name 
__qdf_ipa_get_smmu_domain(void)901*5113495bSYour Name static inline struct iommu_domain *__qdf_ipa_get_smmu_domain(void)
902*5113495bSYour Name {
903*5113495bSYour Name 	return ipa_get_smmu_domain();
904*5113495bSYour Name }
905*5113495bSYour Name 
__qdf_ipa_create_wdi_mapping(u32 num_buffers,__qdf_ipa_wdi_buffer_info_t * info)906*5113495bSYour Name static inline int __qdf_ipa_create_wdi_mapping(u32 num_buffers,
907*5113495bSYour Name 		__qdf_ipa_wdi_buffer_info_t *info)
908*5113495bSYour Name {
909*5113495bSYour Name 	return ipa_create_wdi_mapping(num_buffers, info);
910*5113495bSYour Name }
911*5113495bSYour Name 
__qdf_ipa_release_wdi_mapping(u32 num_buffers,struct ipa_wdi_buffer_info * info)912*5113495bSYour Name static inline int __qdf_ipa_release_wdi_mapping(u32 num_buffers,
913*5113495bSYour Name 		struct ipa_wdi_buffer_info *info)
914*5113495bSYour Name {
915*5113495bSYour Name 	return ipa_release_wdi_mapping(num_buffers, info);
916*5113495bSYour Name }
917*5113495bSYour Name 
__qdf_ipa_disable_apps_wan_cons_deaggr(uint32_t agg_size,uint32_t agg_count)918*5113495bSYour Name static inline int __qdf_ipa_disable_apps_wan_cons_deaggr(uint32_t agg_size, uint32_t agg_count)
919*5113495bSYour Name {
920*5113495bSYour Name 	return ipa_disable_apps_wan_cons_deaggr(agg_size, agg_count);
921*5113495bSYour Name }
922*5113495bSYour Name 
__qdf_ipa_get_gsi_ep_info(enum ipa_client_type client)923*5113495bSYour Name static inline const struct ipa_gsi_ep_config *__qdf_ipa_get_gsi_ep_info(enum ipa_client_type client)
924*5113495bSYour Name {
925*5113495bSYour Name 	return ipa_get_gsi_ep_info(client);
926*5113495bSYour Name }
927*5113495bSYour Name 
__qdf_ipa_stop_gsi_channel(u32 clnt_hdl)928*5113495bSYour Name static inline int __qdf_ipa_stop_gsi_channel(u32 clnt_hdl)
929*5113495bSYour Name {
930*5113495bSYour Name 	return ipa_stop_gsi_channel(clnt_hdl);
931*5113495bSYour Name }
932*5113495bSYour Name 
933*5113495bSYour Name #endif
__qdf_ipa_free_skb(struct ipa_rx_data * rx_in)934*5113495bSYour Name static inline void __qdf_ipa_free_skb(struct ipa_rx_data *rx_in)
935*5113495bSYour Name {
936*5113495bSYour Name 	return ipa_free_skb(rx_in);
937*5113495bSYour Name }
938*5113495bSYour Name 
__qdf_ipa_get_wdi_stats(struct IpaHwStatsWDIInfoData_t * stats)939*5113495bSYour Name static inline int __qdf_ipa_get_wdi_stats(struct IpaHwStatsWDIInfoData_t *stats)
940*5113495bSYour Name {
941*5113495bSYour Name 	return ipa_get_wdi_stats(stats);
942*5113495bSYour Name }
943*5113495bSYour Name 
944*5113495bSYour Name /* IPA supports this call only on legacy devices. Starting from
945*5113495bSYour Name  * Linux version 6.1.15, IPA has moved out of the kernel and
946*5113495bSYour Name  * has deprecated this call.
947*5113495bSYour Name  */
948*5113495bSYour Name #if (LINUX_VERSION_CODE < KERNEL_VERSION(6, 1, 15))
__qdf_ipa_uc_reg_rdyCB(struct ipa_wdi_uc_ready_params * param)949*5113495bSYour Name static inline int __qdf_ipa_uc_reg_rdyCB(struct ipa_wdi_uc_ready_params *param)
950*5113495bSYour Name {
951*5113495bSYour Name 	return ipa_uc_reg_rdyCB(param);
952*5113495bSYour Name }
953*5113495bSYour Name 
__qdf_ipa_uc_dereg_rdyCB(void)954*5113495bSYour Name static inline int __qdf_ipa_uc_dereg_rdyCB(void)
955*5113495bSYour Name {
956*5113495bSYour Name 	return ipa_uc_dereg_rdyCB();
957*5113495bSYour Name }
958*5113495bSYour Name #else
959*5113495bSYour Name /* This call has been removed from IPA since
960*5113495bSYour Name  * Commit-ID: b37958da466efc1320b7f97ddf876565762f05b7.
961*5113495bSYour Name  * This call returns 0 here as ipa_wdi_init_per_inst()
962*5113495bSYour Name  * call to IPA would already handle all the initialization steps
963*5113495bSYour Name  * and do not require WLAN to make this IPA call.
964*5113495bSYour Name  */
__qdf_ipa_uc_reg_rdyCB(struct ipa_wdi_uc_ready_params * param)965*5113495bSYour Name static inline int __qdf_ipa_uc_reg_rdyCB(struct ipa_wdi_uc_ready_params *param)
966*5113495bSYour Name {
967*5113495bSYour Name 	return 0;
968*5113495bSYour Name }
969*5113495bSYour Name 
__qdf_ipa_uc_dereg_rdyCB(void)970*5113495bSYour Name static inline int __qdf_ipa_uc_dereg_rdyCB(void)
971*5113495bSYour Name {
972*5113495bSYour Name 	return 0;
973*5113495bSYour Name }
974*5113495bSYour Name #endif
__qdf_ipa_register_ipa_ready_cb(void (* ipa_ready_cb)(void * user_data),void * user_data)975*5113495bSYour Name static inline int __qdf_ipa_register_ipa_ready_cb(
976*5113495bSYour Name 	void (*ipa_ready_cb)(void *user_data),
977*5113495bSYour Name 	void *user_data)
978*5113495bSYour Name {
979*5113495bSYour Name 	return ipa_register_ipa_ready_cb(ipa_ready_cb, user_data);
980*5113495bSYour Name }
981*5113495bSYour Name 
982*5113495bSYour Name static inline
__qdf_ipa_setup_sys_pipe(struct ipa_sys_connect_params * sys_in,u32 * clnt_hdl)983*5113495bSYour Name int __qdf_ipa_setup_sys_pipe(struct ipa_sys_connect_params *sys_in,
984*5113495bSYour Name 			     u32 *clnt_hdl)
985*5113495bSYour Name {
986*5113495bSYour Name 	return ipa_setup_sys_pipe(sys_in, clnt_hdl);
987*5113495bSYour Name }
988*5113495bSYour Name 
__qdf_ipa_teardown_sys_pipe(u32 clnt_hdl)989*5113495bSYour Name static inline int __qdf_ipa_teardown_sys_pipe(u32 clnt_hdl)
990*5113495bSYour Name {
991*5113495bSYour Name 	return ipa_teardown_sys_pipe(clnt_hdl);
992*5113495bSYour Name }
993*5113495bSYour Name 
994*5113495bSYour Name /*
995*5113495bSYour Name  * Messaging
996*5113495bSYour Name  */
__qdf_ipa_send_msg(struct ipa_msg_meta * meta,void * buff,ipa_msg_free_fn callback)997*5113495bSYour Name static inline int __qdf_ipa_send_msg(struct ipa_msg_meta *meta, void *buff,
998*5113495bSYour Name 				     ipa_msg_free_fn callback)
999*5113495bSYour Name {
1000*5113495bSYour Name 	return ipa_send_msg(meta, buff, callback);
1001*5113495bSYour Name }
1002*5113495bSYour Name 
__qdf_ipa_is_ready(void)1003*5113495bSYour Name static inline bool __qdf_ipa_is_ready(void)
1004*5113495bSYour Name {
1005*5113495bSYour Name 	return ipa_is_ready();
1006*5113495bSYour Name }
1007*5113495bSYour Name 
1008*5113495bSYour Name #ifdef FEATURE_METERING
__qdf_ipa_broadcast_wdi_quota_reach_ind(uint32_t index,uint64_t quota_bytes)1009*5113495bSYour Name static inline int __qdf_ipa_broadcast_wdi_quota_reach_ind(uint32_t index,
1010*5113495bSYour Name 							  uint64_t quota_bytes)
1011*5113495bSYour Name {
1012*5113495bSYour Name 	return ipa_broadcast_wdi_quota_reach_ind(index, quota_bytes);
1013*5113495bSYour Name }
1014*5113495bSYour Name #endif
1015*5113495bSYour Name 
1016*5113495bSYour Name void __qdf_ipa_set_meta_msg_type(__qdf_ipa_msg_meta_t *meta, int type);
1017*5113495bSYour Name 
1018*5113495bSYour Name #ifdef ENABLE_SMMU_S1_TRANSLATION
1019*5113495bSYour Name /**
1020*5113495bSYour Name  * __qdf_get_ipa_smmu_enabled() - to get IPA SMMU enable status
1021*5113495bSYour Name  *
1022*5113495bSYour Name  * Return: true when IPA SMMU enabled, otherwise false
1023*5113495bSYour Name  */
__qdf_get_ipa_smmu_enabled(void)1024*5113495bSYour Name static bool __qdf_get_ipa_smmu_enabled(void)
1025*5113495bSYour Name {
1026*5113495bSYour Name 	struct ipa_smmu_in_params params_in;
1027*5113495bSYour Name 	struct ipa_smmu_out_params params_out;
1028*5113495bSYour Name 
1029*5113495bSYour Name 	params_in.smmu_client = IPA_SMMU_WLAN_CLIENT;
1030*5113495bSYour Name 	ipa_get_smmu_params(&params_in, &params_out);
1031*5113495bSYour Name 
1032*5113495bSYour Name 	return params_out.smmu_enable;
1033*5113495bSYour Name }
1034*5113495bSYour Name #endif
1035*5113495bSYour Name 
1036*5113495bSYour Name #ifdef IPA_LAN_RX_NAPI_SUPPORT
1037*5113495bSYour Name /**
1038*5113495bSYour Name  * ipa_get_lan_rx_napi() - Check if NAPI is enabled in LAN RX DP
1039*5113495bSYour Name  *
1040*5113495bSYour Name  * Returns: true if enabled, false otherwise
1041*5113495bSYour Name  */
__qdf_ipa_get_lan_rx_napi(void)1042*5113495bSYour Name static inline bool __qdf_ipa_get_lan_rx_napi(void)
1043*5113495bSYour Name {
1044*5113495bSYour Name 	return ipa_get_lan_rx_napi();
1045*5113495bSYour Name }
1046*5113495bSYour Name #endif /* IPA_LAN_RX_NAPI_SUPPORT */
1047*5113495bSYour Name #endif /* IPA_OFFLOAD */
1048*5113495bSYour Name #endif /* _I_QDF_IPA_H */
1049