xref: /wlan-driver/qca-wifi-host-cmn/dp/inc/cdp_txrx_sawf.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
3*5113495bSYour Name  *
4*5113495bSYour Name  * Permission to use, copy, modify, and/or distribute this software for
5*5113495bSYour Name  * any purpose with or without fee is hereby granted, provided that the
6*5113495bSYour Name  * above copyright notice and this permission notice appear in all
7*5113495bSYour Name  * copies.
8*5113495bSYour Name  *
9*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
10*5113495bSYour Name  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
11*5113495bSYour Name  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
12*5113495bSYour Name  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
13*5113495bSYour Name  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
14*5113495bSYour Name  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
15*5113495bSYour Name  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
16*5113495bSYour Name  * PERFORMANCE OF THIS SOFTWARE.
17*5113495bSYour Name  */
18*5113495bSYour Name 
19*5113495bSYour Name #ifndef _CDP_TXRX_SAWF_H_
20*5113495bSYour Name #define _CDP_TXRX_SAWF_H_
21*5113495bSYour Name 
22*5113495bSYour Name #include <cdp_txrx_cmn_struct.h>
23*5113495bSYour Name #include <cdp_txrx_cmn.h>
24*5113495bSYour Name 
25*5113495bSYour Name static inline QDF_STATUS
cdp_sawf_peer_svcid_map(ol_txrx_soc_handle soc,uint8_t * mac,uint8_t svc_id)26*5113495bSYour Name cdp_sawf_peer_svcid_map(ol_txrx_soc_handle soc,
27*5113495bSYour Name 			uint8_t *mac, uint8_t svc_id)
28*5113495bSYour Name {
29*5113495bSYour Name 	if (!soc || !soc->ops) {
30*5113495bSYour Name 		dp_cdp_debug("Invalid Instance");
31*5113495bSYour Name 		QDF_BUG(0);
32*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
33*5113495bSYour Name 	}
34*5113495bSYour Name 
35*5113495bSYour Name 	if (!soc->ops->sawf_ops ||
36*5113495bSYour Name 	    !soc->ops->sawf_ops->sawf_def_queues_map_req) {
37*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
38*5113495bSYour Name 	}
39*5113495bSYour Name 
40*5113495bSYour Name 	return soc->ops->sawf_ops->sawf_def_queues_map_req(soc, mac, svc_id);
41*5113495bSYour Name }
42*5113495bSYour Name 
43*5113495bSYour Name static inline QDF_STATUS
cdp_sawf_peer_unmap(ol_txrx_soc_handle soc,uint8_t * mac,uint8_t svc_id)44*5113495bSYour Name cdp_sawf_peer_unmap(ol_txrx_soc_handle soc,
45*5113495bSYour Name 		    uint8_t *mac, uint8_t svc_id)
46*5113495bSYour Name {
47*5113495bSYour Name 	if (!soc || !soc->ops) {
48*5113495bSYour Name 		dp_cdp_debug("Invalid Instance");
49*5113495bSYour Name 		QDF_BUG(0);
50*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
51*5113495bSYour Name 	}
52*5113495bSYour Name 
53*5113495bSYour Name 	if (!soc->ops->sawf_ops ||
54*5113495bSYour Name 	    !soc->ops->sawf_ops->sawf_def_queues_unmap_req) {
55*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
56*5113495bSYour Name 	}
57*5113495bSYour Name 
58*5113495bSYour Name 	return soc->ops->sawf_ops->sawf_def_queues_unmap_req(soc, mac, svc_id);
59*5113495bSYour Name }
60*5113495bSYour Name 
61*5113495bSYour Name static inline QDF_STATUS
cdp_sawf_peer_get_map_conf(ol_txrx_soc_handle soc,uint8_t * mac)62*5113495bSYour Name cdp_sawf_peer_get_map_conf(ol_txrx_soc_handle soc,
63*5113495bSYour Name 			   uint8_t *mac)
64*5113495bSYour Name {
65*5113495bSYour Name 	if (!soc || !soc->ops) {
66*5113495bSYour Name 		dp_cdp_debug("Invalid Instance");
67*5113495bSYour Name 		QDF_BUG(0);
68*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
69*5113495bSYour Name 	}
70*5113495bSYour Name 
71*5113495bSYour Name 	if (!soc->ops->sawf_ops ||
72*5113495bSYour Name 	    !soc->ops->sawf_ops->sawf_def_queues_get_map_report) {
73*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
74*5113495bSYour Name 	}
75*5113495bSYour Name 
76*5113495bSYour Name 	return soc->ops->sawf_ops->sawf_def_queues_get_map_report(soc, mac);
77*5113495bSYour Name }
78*5113495bSYour Name 
79*5113495bSYour Name static inline QDF_STATUS
cdp_sawf_peer_get_msduq_info(ol_txrx_soc_handle soc,uint8_t * mac)80*5113495bSYour Name cdp_sawf_peer_get_msduq_info(ol_txrx_soc_handle soc, uint8_t *mac)
81*5113495bSYour Name {
82*5113495bSYour Name 	if (!soc || !soc->ops) {
83*5113495bSYour Name 		dp_cdp_debug("Invalid Instance");
84*5113495bSYour Name 		QDF_BUG(0);
85*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
86*5113495bSYour Name 	}
87*5113495bSYour Name 
88*5113495bSYour Name 	if (!soc->ops->sawf_ops ||
89*5113495bSYour Name 	    !soc->ops->sawf_ops->sawf_get_peer_msduq_info) {
90*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
91*5113495bSYour Name 	}
92*5113495bSYour Name 
93*5113495bSYour Name 	return soc->ops->sawf_ops->sawf_get_peer_msduq_info(soc, mac);
94*5113495bSYour Name }
95*5113495bSYour Name 
96*5113495bSYour Name #ifdef CONFIG_SAWF
97*5113495bSYour Name /**
98*5113495bSYour Name  * cdp_get_peer_sawf_delay_stats() - Call to get SAWF delay stats
99*5113495bSYour Name  * @soc: soc handle
100*5113495bSYour Name  * @svc_id: service class ID
101*5113495bSYour Name  * @mac: peer mac address
102*5113495bSYour Name  * @data: opaque pointer
103*5113495bSYour Name  *
104*5113495bSYour Name  * return: status Success/Failure
105*5113495bSYour Name  */
106*5113495bSYour Name static inline QDF_STATUS
cdp_get_peer_sawf_delay_stats(ol_txrx_soc_handle soc,uint32_t svc_id,uint8_t * mac,void * data)107*5113495bSYour Name cdp_get_peer_sawf_delay_stats(ol_txrx_soc_handle soc, uint32_t svc_id,
108*5113495bSYour Name 			      uint8_t *mac, void *data)
109*5113495bSYour Name {
110*5113495bSYour Name 	if (!soc || !soc->ops) {
111*5113495bSYour Name 		dp_cdp_debug("Invalid Instance");
112*5113495bSYour Name 		QDF_BUG(0);
113*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
114*5113495bSYour Name 	}
115*5113495bSYour Name 
116*5113495bSYour Name 	if (!soc->ops->sawf_ops ||
117*5113495bSYour Name 	    !soc->ops->sawf_ops->txrx_get_peer_sawf_delay_stats)
118*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
119*5113495bSYour Name 
120*5113495bSYour Name 	return soc->ops->sawf_ops->txrx_get_peer_sawf_delay_stats(soc, svc_id,
121*5113495bSYour Name 								  mac, data);
122*5113495bSYour Name }
123*5113495bSYour Name 
124*5113495bSYour Name /**
125*5113495bSYour Name  * cdp_get_peer_sawf_tx_stats() - Call to get SAWF Tx stats
126*5113495bSYour Name  * @soc: soc handle
127*5113495bSYour Name  * @svc_id: service class ID
128*5113495bSYour Name  * @mac: peer mac address
129*5113495bSYour Name  * @data: opaque pointer
130*5113495bSYour Name  *
131*5113495bSYour Name  * return: status Success/Failure
132*5113495bSYour Name  */
133*5113495bSYour Name static inline QDF_STATUS
cdp_get_peer_sawf_tx_stats(ol_txrx_soc_handle soc,uint32_t svc_id,uint8_t * mac,void * data)134*5113495bSYour Name cdp_get_peer_sawf_tx_stats(ol_txrx_soc_handle soc, uint32_t svc_id,
135*5113495bSYour Name 			   uint8_t *mac, void *data)
136*5113495bSYour Name {
137*5113495bSYour Name 	if (!soc || !soc->ops) {
138*5113495bSYour Name 		dp_cdp_debug("Invalid Instance");
139*5113495bSYour Name 		QDF_BUG(0);
140*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
141*5113495bSYour Name 	}
142*5113495bSYour Name 
143*5113495bSYour Name 	if (!soc->ops->sawf_ops ||
144*5113495bSYour Name 	    !soc->ops->sawf_ops->txrx_get_peer_sawf_tx_stats)
145*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
146*5113495bSYour Name 
147*5113495bSYour Name 	return soc->ops->sawf_ops->txrx_get_peer_sawf_tx_stats(soc, svc_id,
148*5113495bSYour Name 							       mac, data);
149*5113495bSYour Name }
150*5113495bSYour Name 
151*5113495bSYour Name /**
152*5113495bSYour Name  * cdp_sawf_mpdu_stats_req() - Call to subscribe to MPDU stats TLV
153*5113495bSYour Name  * @soc: soc handle
154*5113495bSYour Name  * @enable: 1: enable 0: disable
155*5113495bSYour Name  *
156*5113495bSYour Name  * return: status Success/Failure
157*5113495bSYour Name  */
158*5113495bSYour Name static inline QDF_STATUS
cdp_sawf_mpdu_stats_req(ol_txrx_soc_handle soc,uint8_t enable)159*5113495bSYour Name cdp_sawf_mpdu_stats_req(ol_txrx_soc_handle soc, uint8_t enable)
160*5113495bSYour Name {
161*5113495bSYour Name 	if (!soc || !soc->ops) {
162*5113495bSYour Name 		dp_cdp_debug("Invalid Instance");
163*5113495bSYour Name 		QDF_BUG(0);
164*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
165*5113495bSYour Name 	}
166*5113495bSYour Name 
167*5113495bSYour Name 	if (!soc->ops->sawf_ops ||
168*5113495bSYour Name 	    !soc->ops->sawf_ops->sawf_mpdu_stats_req)
169*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
170*5113495bSYour Name 
171*5113495bSYour Name 	return soc->ops->sawf_ops->sawf_mpdu_stats_req(soc, enable);
172*5113495bSYour Name }
173*5113495bSYour Name 
174*5113495bSYour Name /**
175*5113495bSYour Name  * cdp_sawf_mpdu_details_stats_req - Call to subscribe to MPDU details stats TLV
176*5113495bSYour Name  * @soc: soc handle
177*5113495bSYour Name  * @enable: 1: enable 0: disable
178*5113495bSYour Name  *
179*5113495bSYour Name  * return: status Success/Failure
180*5113495bSYour Name  */
181*5113495bSYour Name static inline QDF_STATUS
cdp_sawf_mpdu_details_stats_req(ol_txrx_soc_handle soc,uint8_t enable)182*5113495bSYour Name cdp_sawf_mpdu_details_stats_req(ol_txrx_soc_handle soc, uint8_t enable)
183*5113495bSYour Name {
184*5113495bSYour Name 	if (!soc || !soc->ops) {
185*5113495bSYour Name 		dp_cdp_debug("Invalid Instance");
186*5113495bSYour Name 		QDF_BUG(0);
187*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
188*5113495bSYour Name 	}
189*5113495bSYour Name 
190*5113495bSYour Name 	if (!soc->ops->sawf_ops ||
191*5113495bSYour Name 	    !soc->ops->sawf_ops->sawf_mpdu_details_stats_req)
192*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
193*5113495bSYour Name 
194*5113495bSYour Name 	return soc->ops->sawf_ops->sawf_mpdu_details_stats_req(soc, enable);
195*5113495bSYour Name }
196*5113495bSYour Name 
197*5113495bSYour Name /**
198*5113495bSYour Name  * cdp_sawf_set_mov_avg_params - Set moving average pararms
199*5113495bSYour Name  * @soc: SOC handle
200*5113495bSYour Name  * @num_pkt: No of packets per window to calucalte moving average
201*5113495bSYour Name  * @num_win: No of windows to calucalte moving average
202*5113495bSYour Name  *
203*5113495bSYour Name  * Return: QDF_STATUS
204*5113495bSYour Name  */
205*5113495bSYour Name static inline QDF_STATUS
cdp_sawf_set_mov_avg_params(ol_txrx_soc_handle soc,uint32_t num_pkt,uint32_t num_win)206*5113495bSYour Name cdp_sawf_set_mov_avg_params(ol_txrx_soc_handle soc,
207*5113495bSYour Name 			    uint32_t num_pkt,
208*5113495bSYour Name 			    uint32_t num_win)
209*5113495bSYour Name {
210*5113495bSYour Name 	if (!soc || !soc->ops) {
211*5113495bSYour Name 		dp_cdp_debug("Invalid Instance");
212*5113495bSYour Name 		QDF_BUG(0);
213*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
214*5113495bSYour Name 	}
215*5113495bSYour Name 
216*5113495bSYour Name 	if (!soc->ops->sawf_ops ||
217*5113495bSYour Name 	    !soc->ops->sawf_ops->txrx_sawf_set_mov_avg_params)
218*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
219*5113495bSYour Name 
220*5113495bSYour Name 	return soc->ops->sawf_ops->txrx_sawf_set_mov_avg_params(num_pkt,
221*5113495bSYour Name 								num_win);
222*5113495bSYour Name }
223*5113495bSYour Name 
224*5113495bSYour Name /**
225*5113495bSYour Name  * cdp_sawf_set_sla_params - Set SLA pararms
226*5113495bSYour Name  * @soc: SOC handle
227*5113495bSYour Name  * @num_pkt: No of packets to detect SLA breach
228*5113495bSYour Name  * @time_secs: Time ins secs to detect breach
229*5113495bSYour Name  *
230*5113495bSYour Name  * Return: QDF_STATUS
231*5113495bSYour Name  */
232*5113495bSYour Name static inline QDF_STATUS
cdp_sawf_set_sla_params(ol_txrx_soc_handle soc,uint32_t num_pkt,uint32_t time_secs)233*5113495bSYour Name cdp_sawf_set_sla_params(ol_txrx_soc_handle soc,
234*5113495bSYour Name 			uint32_t num_pkt,
235*5113495bSYour Name 			uint32_t time_secs)
236*5113495bSYour Name {
237*5113495bSYour Name 	if (!soc || !soc->ops) {
238*5113495bSYour Name 		dp_cdp_debug("Invalid Instance");
239*5113495bSYour Name 		QDF_BUG(0);
240*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
241*5113495bSYour Name 	}
242*5113495bSYour Name 
243*5113495bSYour Name 	if (!soc->ops->sawf_ops ||
244*5113495bSYour Name 	    !soc->ops->sawf_ops->txrx_sawf_set_sla_params)
245*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
246*5113495bSYour Name 
247*5113495bSYour Name 	return soc->ops->sawf_ops->txrx_sawf_set_sla_params(num_pkt,
248*5113495bSYour Name 							    time_secs);
249*5113495bSYour Name }
250*5113495bSYour Name 
251*5113495bSYour Name /**
252*5113495bSYour Name  * cdp_sawf_init_telemtery_params() - Initialize telemetry pararms
253*5113495bSYour Name  * @soc: SOC handle
254*5113495bSYour Name  *
255*5113495bSYour Name  * Return: none
256*5113495bSYour Name  */
257*5113495bSYour Name static inline QDF_STATUS
cdp_sawf_init_telemtery_params(ol_txrx_soc_handle soc)258*5113495bSYour Name cdp_sawf_init_telemtery_params(ol_txrx_soc_handle soc)
259*5113495bSYour Name {
260*5113495bSYour Name 	if (!soc || !soc->ops) {
261*5113495bSYour Name 		dp_cdp_debug("Invalid Instance");
262*5113495bSYour Name 		QDF_BUG(0);
263*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
264*5113495bSYour Name 	}
265*5113495bSYour Name 
266*5113495bSYour Name 	if (!soc->ops->sawf_ops ||
267*5113495bSYour Name 	    !soc->ops->sawf_ops->txrx_sawf_init_telemtery_params)
268*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
269*5113495bSYour Name 
270*5113495bSYour Name 	return soc->ops->sawf_ops->txrx_sawf_init_telemtery_params();
271*5113495bSYour Name }
272*5113495bSYour Name 
273*5113495bSYour Name static inline QDF_STATUS
cdp_get_throughput_stats(ol_txrx_soc_handle soc,void * arg,uint64_t * in_bytes,uint64_t * in_cnt,uint64_t * tx_bytes,uint64_t * tx_cnt,uint8_t tid,uint8_t msduq)274*5113495bSYour Name cdp_get_throughput_stats(ol_txrx_soc_handle soc, void *arg,
275*5113495bSYour Name 			 uint64_t *in_bytes, uint64_t *in_cnt,
276*5113495bSYour Name 			 uint64_t *tx_bytes, uint64_t *tx_cnt,
277*5113495bSYour Name 			 uint8_t tid, uint8_t msduq)
278*5113495bSYour Name {
279*5113495bSYour Name 	if (!soc || !soc->ops) {
280*5113495bSYour Name 		dp_cdp_debug("Invalid Instance");
281*5113495bSYour Name 		QDF_BUG(0);
282*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
283*5113495bSYour Name 	}
284*5113495bSYour Name 
285*5113495bSYour Name 	if (!soc->ops->sawf_ops ||
286*5113495bSYour Name 	    !soc->ops->sawf_ops->telemetry_get_throughput_stats)
287*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
288*5113495bSYour Name 
289*5113495bSYour Name 	return soc->ops->sawf_ops->telemetry_get_throughput_stats(
290*5113495bSYour Name 			arg, in_bytes, in_cnt, tx_bytes,
291*5113495bSYour Name 			tx_cnt, tid, msduq);
292*5113495bSYour Name }
293*5113495bSYour Name 
294*5113495bSYour Name static inline QDF_STATUS
cdp_get_mpdu_stats(ol_txrx_soc_handle soc,void * arg,uint64_t * svc_int_pass,uint64_t * svc_int_fail,uint64_t * burst_pass,uint64_t * burst_fail,uint8_t tid,uint8_t msduq)295*5113495bSYour Name cdp_get_mpdu_stats(ol_txrx_soc_handle soc, void *arg,
296*5113495bSYour Name 		   uint64_t *svc_int_pass, uint64_t *svc_int_fail,
297*5113495bSYour Name 		   uint64_t *burst_pass, uint64_t *burst_fail,
298*5113495bSYour Name 		   uint8_t tid, uint8_t msduq)
299*5113495bSYour Name {
300*5113495bSYour Name 	if (!soc || !soc->ops) {
301*5113495bSYour Name 		dp_cdp_debug("Invalid Instance");
302*5113495bSYour Name 		QDF_BUG(0);
303*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
304*5113495bSYour Name 	}
305*5113495bSYour Name 
306*5113495bSYour Name 	if (!soc->ops->sawf_ops ||
307*5113495bSYour Name 	    !soc->ops->sawf_ops->telemetry_get_mpdu_stats)
308*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
309*5113495bSYour Name 
310*5113495bSYour Name 	return soc->ops->sawf_ops->telemetry_get_mpdu_stats(
311*5113495bSYour Name 			arg, svc_int_pass, svc_int_fail, burst_pass,
312*5113495bSYour Name 			burst_fail, tid, msduq);
313*5113495bSYour Name }
314*5113495bSYour Name 
315*5113495bSYour Name static inline QDF_STATUS
cdp_get_drop_stats(ol_txrx_soc_handle soc,void * arg,uint64_t * pass,uint64_t * drop,uint64_t * drop_ttl,uint8_t tid,uint8_t msduq)316*5113495bSYour Name cdp_get_drop_stats(ol_txrx_soc_handle soc, void *arg,
317*5113495bSYour Name 		   uint64_t *pass, uint64_t *drop,
318*5113495bSYour Name 		   uint64_t *drop_ttl,
319*5113495bSYour Name 		   uint8_t tid, uint8_t msduq)
320*5113495bSYour Name {
321*5113495bSYour Name 	if (!soc || !soc->ops) {
322*5113495bSYour Name 		dp_cdp_debug("Invalid Instance");
323*5113495bSYour Name 		QDF_BUG(0);
324*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
325*5113495bSYour Name 	}
326*5113495bSYour Name 
327*5113495bSYour Name 	if (!soc->ops->sawf_ops ||
328*5113495bSYour Name 	    !soc->ops->sawf_ops->telemetry_get_drop_stats)
329*5113495bSYour Name 		return QDF_STATUS_E_FAILURE;
330*5113495bSYour Name 
331*5113495bSYour Name 	return soc->ops->sawf_ops->telemetry_get_drop_stats(
332*5113495bSYour Name 			arg, pass, drop, drop_ttl, tid, msduq);
333*5113495bSYour Name }
334*5113495bSYour Name 
335*5113495bSYour Name /**
336*5113495bSYour Name  * cdp_sawf_peer_config_ul - Config uplink QoS parameters
337*5113495bSYour Name  * @soc: SOC handle
338*5113495bSYour Name  * @mac_addr: MAC address
339*5113495bSYour Name  * @tid: TID
340*5113495bSYour Name  * @service_interval: Service Interval
341*5113495bSYour Name  * @burst_size: Burst Size
342*5113495bSYour Name  * @min_tput: Min throughput
343*5113495bSYour Name  * @max_latency: Max latency
344*5113495bSYour Name  * @add_or_sub: Add or Sub parameters
345*5113495bSYour Name  * @peer_id: peer id
346*5113495bSYour Name  *
347*5113495bSYour Name  * Return: QDF_STATUS
348*5113495bSYour Name  */
349*5113495bSYour Name static inline QDF_STATUS
cdp_sawf_peer_config_ul(ol_txrx_soc_handle soc,uint8_t * mac_addr,uint8_t tid,uint32_t service_interval,uint32_t burst_size,uint32_t min_tput,uint32_t max_latency,uint8_t add_or_sub,uint16_t peer_id)350*5113495bSYour Name cdp_sawf_peer_config_ul(ol_txrx_soc_handle soc, uint8_t *mac_addr, uint8_t tid,
351*5113495bSYour Name 			uint32_t service_interval, uint32_t burst_size,
352*5113495bSYour Name 			uint32_t min_tput, uint32_t max_latency,
353*5113495bSYour Name 			uint8_t add_or_sub, uint16_t peer_id)
354*5113495bSYour Name {
355*5113495bSYour Name 	if (!soc || !soc->ops || !soc->ops->sawf_ops ||
356*5113495bSYour Name 	    !soc->ops->sawf_ops->peer_config_ul) {
357*5113495bSYour Name 		dp_cdp_debug("Invalid Instance");
358*5113495bSYour Name 		QDF_BUG(0);
359*5113495bSYour Name 		return false;
360*5113495bSYour Name 	}
361*5113495bSYour Name 
362*5113495bSYour Name 	return soc->ops->sawf_ops->peer_config_ul(soc, mac_addr, tid,
363*5113495bSYour Name 						  service_interval, burst_size,
364*5113495bSYour Name 						  min_tput, max_latency,
365*5113495bSYour Name 						  add_or_sub, peer_id);
366*5113495bSYour Name }
367*5113495bSYour Name 
368*5113495bSYour Name /**
369*5113495bSYour Name  * cdp_sawf_peer_flow_count - Peer flow count in SAWF
370*5113495bSYour Name  * @soc: SOC handle
371*5113495bSYour Name  * @mac_addr: MAC address
372*5113495bSYour Name  * @svc_id: Service Class ID
373*5113495bSYour Name  * @direction: Indication of forward or reverse service class match
374*5113495bSYour Name  * @start_or_stop: Indication of start or stop
375*5113495bSYour Name  * @peer_mac: Peer MAC address
376*5113495bSYour Name  * @peer_id: peer id
377*5113495bSYour Name  *
378*5113495bSYour Name  * Return: QDF_STATUS
379*5113495bSYour Name  */
380*5113495bSYour Name static inline QDF_STATUS
cdp_sawf_peer_flow_count(ol_txrx_soc_handle soc,uint8_t * mac_addr,uint8_t svc_id,uint8_t direction,uint8_t start_or_stop,uint8_t * peer_mac,uint16_t peer_id)381*5113495bSYour Name cdp_sawf_peer_flow_count(ol_txrx_soc_handle soc, uint8_t *mac_addr,
382*5113495bSYour Name 			 uint8_t svc_id, uint8_t direction,
383*5113495bSYour Name 			 uint8_t start_or_stop, uint8_t *peer_mac,
384*5113495bSYour Name 			 uint16_t peer_id)
385*5113495bSYour Name {
386*5113495bSYour Name 	if (!soc || !soc->ops || !soc->ops->sawf_ops ||
387*5113495bSYour Name 	    !soc->ops->sawf_ops->sawf_peer_flow_count) {
388*5113495bSYour Name 		dp_cdp_debug("Invalid Instance");
389*5113495bSYour Name 		QDF_BUG(0);
390*5113495bSYour Name 		return false;
391*5113495bSYour Name 	}
392*5113495bSYour Name 
393*5113495bSYour Name 	return soc->ops->sawf_ops->sawf_peer_flow_count
394*5113495bSYour Name 		(soc, mac_addr, svc_id, direction, start_or_stop, peer_mac,
395*5113495bSYour Name 								peer_id);
396*5113495bSYour Name }
397*5113495bSYour Name 
398*5113495bSYour Name /**
399*5113495bSYour Name  * cdp_swaf_peer_sla_configuration() - Check if sla is configured for a peer
400*5113495bSYour Name  * @soc: SOC handle
401*5113495bSYour Name  * @mac_addr: peer mac address
402*5113495bSYour Name  * @sla_mask: pointer to SLA mask
403*5113495bSYour Name  * Return: QDF_STATUS
404*5113495bSYour Name  */
405*5113495bSYour Name static inline QDF_STATUS
cdp_swaf_peer_sla_configuration(ol_txrx_soc_handle soc,uint8_t * mac_addr,uint16_t * sla_mask)406*5113495bSYour Name cdp_swaf_peer_sla_configuration(ol_txrx_soc_handle soc, uint8_t *mac_addr,
407*5113495bSYour Name 				uint16_t *sla_mask)
408*5113495bSYour Name {
409*5113495bSYour Name 	if (!soc || !soc->ops || !soc->ops->sawf_ops ||
410*5113495bSYour Name 	    !soc->ops->sawf_ops->swaf_peer_sla_configuration) {
411*5113495bSYour Name 		dp_cdp_debug("Invalid Instance");
412*5113495bSYour Name 		QDF_BUG(0);
413*5113495bSYour Name 		return QDF_STATUS_E_INVAL;
414*5113495bSYour Name 	}
415*5113495bSYour Name 
416*5113495bSYour Name 	return soc->ops->sawf_ops->swaf_peer_sla_configuration(soc, mac_addr,
417*5113495bSYour Name 							       sla_mask);
418*5113495bSYour Name }
419*5113495bSYour Name 
420*5113495bSYour Name #else
421*5113495bSYour Name static inline QDF_STATUS
cdp_sawf_mpdu_stats_req(ol_txrx_soc_handle soc,uint8_t enable)422*5113495bSYour Name cdp_sawf_mpdu_stats_req(ol_txrx_soc_handle soc, uint8_t enable)
423*5113495bSYour Name {
424*5113495bSYour Name 	return QDF_STATUS_E_FAILURE;
425*5113495bSYour Name }
426*5113495bSYour Name 
427*5113495bSYour Name static inline QDF_STATUS
cdp_sawf_mpdu_details_stats_req(ol_txrx_soc_handle soc,uint8_t enable)428*5113495bSYour Name cdp_sawf_mpdu_details_stats_req(ol_txrx_soc_handle soc, uint8_t enable)
429*5113495bSYour Name {
430*5113495bSYour Name 	return QDF_STATUS_E_FAILURE;
431*5113495bSYour Name }
432*5113495bSYour Name 
433*5113495bSYour Name static inline QDF_STATUS
cdp_get_peer_sawf_delay_stats(ol_txrx_soc_handle soc,uint32_t svc_id,uint8_t * mac,void * data)434*5113495bSYour Name cdp_get_peer_sawf_delay_stats(ol_txrx_soc_handle soc, uint32_t svc_id,
435*5113495bSYour Name 			      uint8_t *mac, void *data)
436*5113495bSYour Name {
437*5113495bSYour Name 	return QDF_STATUS_E_FAILURE;
438*5113495bSYour Name }
439*5113495bSYour Name 
440*5113495bSYour Name static inline QDF_STATUS
cdp_get_peer_sawf_tx_stats(ol_txrx_soc_handle soc,uint32_t svc_id,uint8_t * mac,void * data)441*5113495bSYour Name cdp_get_peer_sawf_tx_stats(ol_txrx_soc_handle soc, uint32_t svc_id,
442*5113495bSYour Name 			   uint8_t *mac, void *data)
443*5113495bSYour Name {
444*5113495bSYour Name 	return QDF_STATUS_E_FAILURE;
445*5113495bSYour Name }
446*5113495bSYour Name 
447*5113495bSYour Name static inline QDF_STATUS
cdp_swaf_peer_sla_configuration(ol_txrx_soc_handle soc,uint8_t * mac_addr,uint16_t * sla_mask)448*5113495bSYour Name cdp_swaf_peer_sla_configuration(ol_txrx_soc_handle soc, uint8_t *mac_addr,
449*5113495bSYour Name 				uint16_t *sla_mask)
450*5113495bSYour Name {
451*5113495bSYour Name 	return QDF_STATUS_E_FAILURE;
452*5113495bSYour Name }
453*5113495bSYour Name #endif
454*5113495bSYour Name 
455*5113495bSYour Name #ifdef WLAN_FEATURE_11BE_MLO_3_LINK_TX
456*5113495bSYour Name static inline
cdp_sawf_get_peer_msduq(ol_txrx_soc_handle soc,struct net_device * netdev,uint8_t * dest_mac,uint32_t dscp_pcp,bool pcp)457*5113495bSYour Name uint16_t cdp_sawf_get_peer_msduq(ol_txrx_soc_handle soc,
458*5113495bSYour Name 				 struct net_device *netdev, uint8_t *dest_mac,
459*5113495bSYour Name 				 uint32_t dscp_pcp, bool pcp)
460*5113495bSYour Name {
461*5113495bSYour Name 	if (!soc || !soc->ops || !soc->ops->sawf_ops ||
462*5113495bSYour Name 	    !soc->ops->sawf_ops->get_peer_msduq) {
463*5113495bSYour Name 		dp_cdp_debug("Invalid Instance");
464*5113495bSYour Name 		QDF_BUG(0);
465*5113495bSYour Name 		return false;
466*5113495bSYour Name 	}
467*5113495bSYour Name 
468*5113495bSYour Name 	return soc->ops->sawf_ops->get_peer_msduq
469*5113495bSYour Name 		(netdev, dest_mac, dscp_pcp, pcp);
470*5113495bSYour Name }
471*5113495bSYour Name 
472*5113495bSYour Name static inline QDF_STATUS
cdp_sawf_3_link_peer_flow_count(ol_txrx_soc_handle soc,uint8_t * mac_addr,uint16_t peer_id,uint32_t mark_metadata)473*5113495bSYour Name cdp_sawf_3_link_peer_flow_count(ol_txrx_soc_handle soc, uint8_t *mac_addr,
474*5113495bSYour Name 				uint16_t peer_id, uint32_t mark_metadata)
475*5113495bSYour Name {
476*5113495bSYour Name 	if (!soc || !soc->ops || !soc->ops->sawf_ops ||
477*5113495bSYour Name 	    !soc->ops->sawf_ops->sawf_3_link_peer_flow_count) {
478*5113495bSYour Name 		dp_cdp_debug("Invalid Instance");
479*5113495bSYour Name 		QDF_BUG(0);
480*5113495bSYour Name 		return false;
481*5113495bSYour Name 	}
482*5113495bSYour Name 
483*5113495bSYour Name 	return soc->ops->sawf_ops->sawf_3_link_peer_flow_count
484*5113495bSYour Name 		(soc, mac_addr, peer_id, mark_metadata);
485*5113495bSYour Name }
486*5113495bSYour Name #endif
487*5113495bSYour Name #endif /* _CDP_TXRX_SAWF_H_ */
488