xref: /wlan-driver/qcacld-3.0/core/dp/txrx/ol_txrx_ipa.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2017-2020, The Linux Foundation. All rights reserved.
3*5113495bSYour Name  * Copyright (c) 2022 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 _OL_TXRX_IPA_H_
19*5113495bSYour Name #define _OL_TXRX_IPA_H_
20*5113495bSYour Name 
21*5113495bSYour Name #ifdef IPA_OFFLOAD
22*5113495bSYour Name 
23*5113495bSYour Name #include <cdp_txrx_cmn.h>       /* ol_txrx_vdev_t, etc. */
24*5113495bSYour Name #include <ol_txrx_types.h>
25*5113495bSYour Name 
26*5113495bSYour Name /**
27*5113495bSYour Name  * struct frag_header - fragment header type registered to IPA hardware
28*5113495bSYour Name  * @length:    fragment length
29*5113495bSYour Name  * @reserved1: Reserved not used
30*5113495bSYour Name  * @reserved2: Reserved not used
31*5113495bSYour Name  *
32*5113495bSYour Name  */
33*5113495bSYour Name #ifdef QCA_WIFI_3_0
34*5113495bSYour Name struct frag_header {
35*5113495bSYour Name 	uint16_t length;
36*5113495bSYour Name 	uint32_t reserved1;
37*5113495bSYour Name 	uint32_t reserved2;
38*5113495bSYour Name } __packed;
39*5113495bSYour Name #else
40*5113495bSYour Name struct frag_header {
41*5113495bSYour Name 	uint32_t
42*5113495bSYour Name 		length:16,
43*5113495bSYour Name 		reserved16:16;
44*5113495bSYour Name 	uint32_t reserved2;
45*5113495bSYour Name } __packed;
46*5113495bSYour Name #endif
47*5113495bSYour Name 
48*5113495bSYour Name /**
49*5113495bSYour Name  * struct ipa_header - ipa header type registered to IPA hardware
50*5113495bSYour Name  * @vdev_id:  vdev id
51*5113495bSYour Name  * @reserved: Reserved not used
52*5113495bSYour Name  *
53*5113495bSYour Name  */
54*5113495bSYour Name struct ipa_header {
55*5113495bSYour Name 	uint32_t
56*5113495bSYour Name 		vdev_id:8,      /* vdev_id field is LSB of IPA DESC */
57*5113495bSYour Name 		reserved:24;
58*5113495bSYour Name } __packed;
59*5113495bSYour Name 
60*5113495bSYour Name /**
61*5113495bSYour Name  * struct ol_txrx_ipa_uc_tx_hdr - full tx header registered to IPA hardware
62*5113495bSYour Name  * @frag_hd: fragment header
63*5113495bSYour Name  * @ipa_hd:  ipa header
64*5113495bSYour Name  * @eth:     ether II header
65*5113495bSYour Name  *
66*5113495bSYour Name  */
67*5113495bSYour Name struct ol_txrx_ipa_uc_tx_hdr {
68*5113495bSYour Name 	struct frag_header frag_hd;
69*5113495bSYour Name 	struct ipa_header ipa_hd;
70*5113495bSYour Name 	struct ethhdr eth;
71*5113495bSYour Name } __packed;
72*5113495bSYour Name 
73*5113495bSYour Name /**
74*5113495bSYour Name  * struct ol_txrx_ipa_uc_rx_hdr - full rx header registered to IPA hardware
75*5113495bSYour Name  * @eth:     ether II header
76*5113495bSYour Name  *
77*5113495bSYour Name  */
78*5113495bSYour Name struct ol_txrx_ipa_uc_rx_hdr {
79*5113495bSYour Name 	struct ethhdr eth;
80*5113495bSYour Name } __packed;
81*5113495bSYour Name 
82*5113495bSYour Name #define OL_TXRX_IPA_UC_WLAN_8023_HDR_SIZE      14
83*5113495bSYour Name 
84*5113495bSYour Name #define OL_TXRX_IPA_IPV4_NAME_EXT              "_ipv4"
85*5113495bSYour Name #define OL_TXRX_IPA_IPV6_NAME_EXT              "_ipv6"
86*5113495bSYour Name 
87*5113495bSYour Name #define OL_TXRX_IPA_MAX_IFACE                  MAX_IPA_IFACE
88*5113495bSYour Name 
89*5113495bSYour Name #define OL_TXRX_IPA_WLAN_FRAG_HEADER        sizeof(struct frag_header)
90*5113495bSYour Name #define OL_TXRX_IPA_WLAN_IPA_HEADER         sizeof(struct ipa_header)
91*5113495bSYour Name #define OL_TXRX_IPA_UC_WLAN_TX_HDR_LEN      sizeof(struct ol_txrx_ipa_uc_tx_hdr)
92*5113495bSYour Name #define OL_TXRX_IPA_UC_WLAN_RX_HDR_LEN      sizeof(struct ol_txrx_ipa_uc_rx_hdr)
93*5113495bSYour Name #define OL_TXRX_IPA_UC_WLAN_HDR_DES_MAC_OFFSET \
94*5113495bSYour Name 	(OL_TXRX_IPA_WLAN_FRAG_HEADER + OL_TXRX_IPA_WLAN_IPA_HEADER)
95*5113495bSYour Name 
96*5113495bSYour Name #if defined(QCA_WIFI_3_0) && defined(CONFIG_IPA3)
97*5113495bSYour Name #define OL_TXRX_IPA_WDI2_SET(pipe_in, ipa_res, osdev) \
98*5113495bSYour Name 	do { \
99*5113495bSYour Name 		QDF_IPA_PIPE_IN_UL_RDY_RING_RP_VA(pipe_in) = \
100*5113495bSYour Name 			ipa_res->rx_proc_done_idx->vaddr; \
101*5113495bSYour Name 		QDF_IPA_PIPE_IN_UL_RDY_COMP_RING(pipe_in) = \
102*5113495bSYour Name 			qdf_mem_get_dma_addr(osdev, \
103*5113495bSYour Name 				&ipa_res->rx2_rdy_ring->mem_info);\
104*5113495bSYour Name 		QDF_IPA_PIPE_IN_UL_RDY_COMP_RING_SIZE(pipe_in) = \
105*5113495bSYour Name 			ipa_res->rx2_rdy_ring->mem_info.size; \
106*5113495bSYour Name 		QDF_IPA_PIPE_IN_UL_RDY_COMP_RING_WP_PA(pipe_in) = \
107*5113495bSYour Name 			qdf_mem_get_dma_addr(osdev, \
108*5113495bSYour Name 				&ipa_res->rx2_proc_done_idx->mem_info); \
109*5113495bSYour Name 		QDF_IPA_PIPE_IN_UL_RDY_COMP_RING_WP_VA(pipe_in) = \
110*5113495bSYour Name 			ipa_res->rx2_proc_done_idx->vaddr; \
111*5113495bSYour Name 	} while (0)
112*5113495bSYour Name #else
113*5113495bSYour Name /* Do nothing */
114*5113495bSYour Name #define OL_TXRX_IPA_WDI2_SET(pipe_in, ipa_res, osdev)
115*5113495bSYour Name #endif /* IPA3 */
116*5113495bSYour Name 
117*5113495bSYour Name /**
118*5113495bSYour Name  * ol_txrx_ipa_uc_get_resource() - Client request resource information
119*5113495bSYour Name  * @soc_hdl: data path soc handle
120*5113495bSYour Name  * @pdev_id: device instance id
121*5113495bSYour Name  *
122*5113495bSYour Name  *  OL client will request IPA UC related resource information
123*5113495bSYour Name  *  Resource information will be distributted to IPA module
124*5113495bSYour Name  *  All of the required resources should be pre-allocated
125*5113495bSYour Name  *
126*5113495bSYour Name  * Return: QDF_STATUS
127*5113495bSYour Name  */
128*5113495bSYour Name QDF_STATUS ol_txrx_ipa_uc_get_resource(struct cdp_soc_t *soc_hdl,
129*5113495bSYour Name 				       uint8_t pdev_id);
130*5113495bSYour Name 
131*5113495bSYour Name /**
132*5113495bSYour Name  * ol_txrx_ipa_uc_set_doorbell_paddr() - Client set IPA UC doorbell register
133*5113495bSYour Name  * @soc_hdl: data path soc handle
134*5113495bSYour Name  * @pdev_id: device instance id
135*5113495bSYour Name  *
136*5113495bSYour Name  *  IPA UC let know doorbell register physical address
137*5113495bSYour Name  *  WLAN firmware will use this physical address to notify IPA UC
138*5113495bSYour Name  *
139*5113495bSYour Name  * Return: QDF_STATUS
140*5113495bSYour Name  */
141*5113495bSYour Name QDF_STATUS ol_txrx_ipa_uc_set_doorbell_paddr(struct cdp_soc_t *soc_hdl,
142*5113495bSYour Name 					     uint8_t pdev_id);
143*5113495bSYour Name 
144*5113495bSYour Name /**
145*5113495bSYour Name  * ol_txrx_ipa_uc_set_active() - Client notify IPA UC data path active or not
146*5113495bSYour Name  * @soc_hdl: data path soc handle
147*5113495bSYour Name  * @pdev_id: device instance id
148*5113495bSYour Name  * @uc_active: WDI UC path enable or not
149*5113495bSYour Name  * @is_tx: TX path or RX path
150*5113495bSYour Name  *
151*5113495bSYour Name  *  IPA UC let know doorbell register physical address
152*5113495bSYour Name  *  WLAN firmware will use this physical address to notify IPA UC
153*5113495bSYour Name  *
154*5113495bSYour Name  * Return: QDF_STATUS
155*5113495bSYour Name  */
156*5113495bSYour Name QDF_STATUS ol_txrx_ipa_uc_set_active(struct cdp_soc_t *soc_hdl, uint8_t pdev_id,
157*5113495bSYour Name 				     bool uc_active, bool is_tx);
158*5113495bSYour Name 
159*5113495bSYour Name /**
160*5113495bSYour Name  * ol_txrx_ipa_uc_op_response() - Handle OP command response from firmware
161*5113495bSYour Name  * @soc_hdl: data path soc handle
162*5113495bSYour Name  * @pdev_id: device instance id
163*5113495bSYour Name  * @op_msg: op response message from firmware
164*5113495bSYour Name  *
165*5113495bSYour Name  * Return: none
166*5113495bSYour Name  */
167*5113495bSYour Name QDF_STATUS ol_txrx_ipa_uc_op_response(struct cdp_soc_t *soc_hdl,
168*5113495bSYour Name 				      uint8_t pdev_id, uint8_t *op_msg);
169*5113495bSYour Name 
170*5113495bSYour Name /**
171*5113495bSYour Name  * ol_txrx_ipa_uc_register_op_cb() - Register OP handler function
172*5113495bSYour Name  * @soc_hdl: data path soc handle
173*5113495bSYour Name  * @pdev_id: device instance id
174*5113495bSYour Name  * @op_cb: handler function pointer
175*5113495bSYour Name  *
176*5113495bSYour Name  * Return: none
177*5113495bSYour Name  */
178*5113495bSYour Name QDF_STATUS ol_txrx_ipa_uc_register_op_cb(struct cdp_soc_t *soc_hdl,
179*5113495bSYour Name 					 uint8_t pdev_id,
180*5113495bSYour Name 					 ipa_uc_op_cb_type op_cb,
181*5113495bSYour Name 					 void *usr_ctxt);
182*5113495bSYour Name 
183*5113495bSYour Name /**
184*5113495bSYour Name  * ol_txrx_ipa_uc_get_stat() - Get firmware wdi status
185*5113495bSYour Name  * @soc_hdl: data path soc handle
186*5113495bSYour Name  * @pdev_id: device instance id
187*5113495bSYour Name  *
188*5113495bSYour Name  * Return: none
189*5113495bSYour Name  */
190*5113495bSYour Name QDF_STATUS ol_txrx_ipa_uc_get_stat(struct cdp_soc_t *soc_hdl, uint8_t pdev_id);
191*5113495bSYour Name 
192*5113495bSYour Name /**
193*5113495bSYour Name  * ol_txrx_ipa_enable_autonomy() - Enable autonomy RX path
194*5113495bSYour Name  * @soc_hdl: data path soc handle
195*5113495bSYour Name  * @pdev_id: device instance id
196*5113495bSYour Name  *
197*5113495bSYour Name  * Set all RX packet route to IPA
198*5113495bSYour Name  * Return: none
199*5113495bSYour Name  */
200*5113495bSYour Name QDF_STATUS ol_txrx_ipa_enable_autonomy(struct cdp_soc_t *soc_hdl,
201*5113495bSYour Name 				       uint8_t pdev_id);
202*5113495bSYour Name 
203*5113495bSYour Name /**
204*5113495bSYour Name  * ol_txrx_ipa_disable_autonomy() - Disable autonomy RX path
205*5113495bSYour Name  * @soc_hdl: data path soc handle
206*5113495bSYour Name  * @pdev_id: device instance id
207*5113495bSYour Name  *
208*5113495bSYour Name  * Disable RX packet route to host
209*5113495bSYour Name  * Return: none
210*5113495bSYour Name  */
211*5113495bSYour Name QDF_STATUS ol_txrx_ipa_disable_autonomy(struct cdp_soc_t *soc_hdl,
212*5113495bSYour Name 					uint8_t pdev_id);
213*5113495bSYour Name 
214*5113495bSYour Name /**
215*5113495bSYour Name  * ol_txrx_ipa_tx_buf_smmu_mapping() - Create SMMU mappings for IPA
216*5113495bSYour Name  *				       allocated TX buffers
217*5113495bSYour Name  * @soc_hdl: handle to the soc
218*5113495bSYour Name  * @pdev_id: pdev id number, to get the handle
219*5113495bSYour Name  *
220*5113495bSYour Name  * Return: QDF_STATUS
221*5113495bSYour Name  */
222*5113495bSYour Name QDF_STATUS ol_txrx_ipa_tx_buf_smmu_mapping(struct cdp_soc_t *soc_hdl,
223*5113495bSYour Name 					   uint8_t pdev_id,
224*5113495bSYour Name 					   const char *func,
225*5113495bSYour Name 					   uint32_t line);
226*5113495bSYour Name 
227*5113495bSYour Name /**
228*5113495bSYour Name  * ol_txrx_ipa_tx_buf_smmu_unmapping() - Release SMMU mappings for IPA
229*5113495bSYour Name  *					 allocated TX buffers
230*5113495bSYour Name  * @soc_hdl: handle to the soc
231*5113495bSYour Name  * @pdev_id: pdev id number, to get the handle
232*5113495bSYour Name  *
233*5113495bSYour Name  * Return: QDF_STATUS
234*5113495bSYour Name  */
235*5113495bSYour Name QDF_STATUS ol_txrx_ipa_tx_buf_smmu_unmapping(struct cdp_soc_t *soc_hdl,
236*5113495bSYour Name 					     uint8_t pdev_id,
237*5113495bSYour Name 					     const char *func,
238*5113495bSYour Name 					     uint32_t line);
239*5113495bSYour Name 
240*5113495bSYour Name #ifdef CONFIG_IPA_WDI_UNIFIED_API
241*5113495bSYour Name /**
242*5113495bSYour Name  * ol_txrx_ipa_setup() - Setup and connect IPA pipes
243*5113495bSYour Name  * @soc_hdl: data path soc handle
244*5113495bSYour Name  * @pdev_id: device instance id
245*5113495bSYour Name  * @ipa_i2w_cb: IPA to WLAN callback
246*5113495bSYour Name  * @ipa_w2i_cb: WLAN to IPA callback
247*5113495bSYour Name  * @ipa_wdi_meter_notifier_cb: IPA WDI metering callback
248*5113495bSYour Name  * @ipa_desc_size: IPA descriptor size
249*5113495bSYour Name  * @ipa_priv: handle to the HTT instance
250*5113495bSYour Name  * @is_rm_enabled: Is IPA RM enabled or not
251*5113495bSYour Name  * @p_tx_pipe_handle: pointer to Tx pipe handle
252*5113495bSYour Name  * @p_rx_pipe_handle: pointer to Rx pipe handle
253*5113495bSYour Name  * @is_smmu_enabled: Is SMMU enabled or not
254*5113495bSYour Name  * @sys_in: parameters to setup sys pipe in mcc mode
255*5113495bSYour Name  * @over_gsi: is ipa ver gsi fw
256*5113495bSYour Name  *
257*5113495bSYour Name  * Return: QDF_STATUS
258*5113495bSYour Name  */
259*5113495bSYour Name QDF_STATUS ol_txrx_ipa_setup(struct cdp_soc_t *soc_hdl, uint8_t pdev_id,
260*5113495bSYour Name 			     void *ipa_i2w_cb, void *ipa_w2i_cb,
261*5113495bSYour Name 			     void *ipa_wdi_meter_notifier_cb,
262*5113495bSYour Name 			     uint32_t ipa_desc_size,
263*5113495bSYour Name 			     void *ipa_priv, bool is_rm_enabled,
264*5113495bSYour Name 			     uint32_t *tx_pipe_handle, uint32_t *rx_pipe_handle,
265*5113495bSYour Name 			     bool is_smmu_enabled,
266*5113495bSYour Name 			     qdf_ipa_sys_connect_params_t *sys_in,
267*5113495bSYour Name 			     bool over_gsi,
268*5113495bSYour Name 			     qdf_ipa_wdi_hdl_t hdl,
269*5113495bSYour Name 			     qdf_ipa_wdi_hdl_t id,
270*5113495bSYour Name 			     void *ipa_ast_notify_cb);
271*5113495bSYour Name #else /* CONFIG_IPA_WDI_UNIFIED_API */
272*5113495bSYour Name /**
273*5113495bSYour Name  * ol_txrx_ipa_setup() - Setup and connect IPA pipes
274*5113495bSYour Name  * @soc_hdl: data path soc handle
275*5113495bSYour Name  * @pdev_id: device instance id
276*5113495bSYour Name  * @ipa_i2w_cb: IPA to WLAN callback
277*5113495bSYour Name  * @ipa_w2i_cb: WLAN to IPA callback
278*5113495bSYour Name  * @ipa_wdi_meter_notifier_cb: IPA WDI metering callback
279*5113495bSYour Name  * @ipa_desc_size: IPA descriptor size
280*5113495bSYour Name  * @ipa_priv: handle to the HTT instance
281*5113495bSYour Name  * @is_rm_enabled: Is IPA RM enabled or not
282*5113495bSYour Name  * @p_tx_pipe_handle: pointer to Tx pipe handle
283*5113495bSYour Name  * @p_rx_pipe_handle: pointer to Rx pipe handle
284*5113495bSYour Name  *
285*5113495bSYour Name  * Return: QDF_STATUS
286*5113495bSYour Name  */
287*5113495bSYour Name QDF_STATUS ol_txrx_ipa_setup(struct cdp_soc_t *soc_hdl, uint8_t pdev_id,
288*5113495bSYour Name 			     void *ipa_i2w_cb, void *ipa_w2i_cb,
289*5113495bSYour Name 			     void *ipa_wdi_meter_notifier_cb,
290*5113495bSYour Name 			     uint32_t ipa_desc_size, void *ipa_priv,
291*5113495bSYour Name 			     bool is_rm_enabled, uint32_t *tx_pipe_handle,
292*5113495bSYour Name 			     uint32_t *rx_pipe_handle,
293*5113495bSYour Name 			     qdf_ipa_wdi_hdl_t hdl);
294*5113495bSYour Name #endif /* CONFIG_IPA_WDI_UNIFIED_API */
295*5113495bSYour Name QDF_STATUS ol_txrx_ipa_cleanup(struct cdp_soc_t *soc_hdl, uint8_t pdev_id,
296*5113495bSYour Name 			       uint32_t tx_pipe_handle,
297*5113495bSYour Name 			       uint32_t rx_pipe_handle,
298*5113495bSYour Name 			       qdf_ipa_wdi_hdl_t hdl);
299*5113495bSYour Name QDF_STATUS ol_txrx_ipa_setup_iface(char *ifname, uint8_t *mac_addr,
300*5113495bSYour Name 		qdf_ipa_client_type_t prod_client,
301*5113495bSYour Name 		qdf_ipa_client_type_t cons_client,
302*5113495bSYour Name 		uint8_t session_id, bool is_ipv6_enabled,
303*5113495bSYour Name 		qdf_ipa_wdi_hdl_t hdl);
304*5113495bSYour Name QDF_STATUS ol_txrx_ipa_cleanup_iface(char *ifname, bool is_ipv6_enabled,
305*5113495bSYour Name 				     qdf_ipa_wdi_hdl_t hdl);
306*5113495bSYour Name 
307*5113495bSYour Name /**
308*5113495bSYour Name  * ol_txrx_ipa_enable_pipes() - Enable and resume traffic on Tx/Rx pipes
309*5113495bSYour Name  * @soc_hdl: data path soc handle
310*5113495bSYour Name  * @pdev_id: device instance id
311*5113495bSYour Name  *
312*5113495bSYour Name  * Return: QDF_STATUS
313*5113495bSYour Name  */
314*5113495bSYour Name QDF_STATUS ol_txrx_ipa_enable_pipes(struct cdp_soc_t *soc_hdl, uint8_t pdev_id,
315*5113495bSYour Name 				    qdf_ipa_wdi_hdl_t hdl);
316*5113495bSYour Name 
317*5113495bSYour Name /**
318*5113495bSYour Name  * ol_txrx_ipa_disable_pipes() – Suspend traffic and disable Tx/Rx pipes
319*5113495bSYour Name  * @soc_hdl: data path soc handle
320*5113495bSYour Name  * @pdev_id: device instance id
321*5113495bSYour Name  *
322*5113495bSYour Name  * Return: QDF_STATUS
323*5113495bSYour Name  */
324*5113495bSYour Name QDF_STATUS ol_txrx_ipa_disable_pipes(struct cdp_soc_t *soc_hdl,
325*5113495bSYour Name 				     uint8_t pdev_id,
326*5113495bSYour Name 				     qdf_ipa_wdi_hdl_t hdl);
327*5113495bSYour Name QDF_STATUS ol_txrx_ipa_set_perf_level(int client,
328*5113495bSYour Name 				      uint32_t max_supported_bw_mbps,
329*5113495bSYour Name 				      qdf_ipa_wdi_hdl_t hdl);
330*5113495bSYour Name #ifdef FEATURE_METERING
331*5113495bSYour Name /**
332*5113495bSYour Name  * ol_txrx_ipa_uc_get_share_stats() - get Tx/Rx byte stats from FW
333*5113495bSYour Name  * @soc_hdl: data path soc handle
334*5113495bSYour Name  * @pdev_id: physical device instance id
335*5113495bSYour Name  * @value: reset stats
336*5113495bSYour Name  *
337*5113495bSYour Name  * Return: QDF_STATUS
338*5113495bSYour Name  */
339*5113495bSYour Name QDF_STATUS ol_txrx_ipa_uc_get_share_stats(struct cdp_soc_t *soc_hdl,
340*5113495bSYour Name 					  uint8_t pdev_id, uint8_t reset_stats);
341*5113495bSYour Name /**
342*5113495bSYour Name  * ol_txrx_ipa_uc_set_quota() - set quota limit to FW
343*5113495bSYour Name  * @soc_hdl: data path soc handle
344*5113495bSYour Name  * @pdev_id: physical device instance number
345*5113495bSYour Name  * @value: quota limit bytes
346*5113495bSYour Name  *
347*5113495bSYour Name  * Return: QDF_STATUS
348*5113495bSYour Name  */
349*5113495bSYour Name QDF_STATUS ol_txrx_ipa_uc_set_quota(struct cdp_soc_t *soc_hdl, uint8_t pdev_id,
350*5113495bSYour Name 				    uint64_t quota_bytes);
351*5113495bSYour Name #endif
352*5113495bSYour Name #endif
353*5113495bSYour Name #endif /* _OL_TXRX_IPA_H_*/
354