xref: /wlan-driver/qca-wifi-host-cmn/hif/src/hif_irq_affinity.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1*5113495bSYour Name /*
2*5113495bSYour Name  * Copyright (c) 2015-2021 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
6*5113495bSYour Name  * any purpose with or without fee is hereby granted, provided that the
7*5113495bSYour Name  * above copyright notice and this permission notice appear in all
8*5113495bSYour Name  * copies.
9*5113495bSYour Name  *
10*5113495bSYour Name  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11*5113495bSYour Name  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12*5113495bSYour Name  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13*5113495bSYour Name  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14*5113495bSYour Name  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15*5113495bSYour Name  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16*5113495bSYour Name  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17*5113495bSYour Name  * PERFORMANCE OF THIS SOFTWARE.
18*5113495bSYour Name  */
19*5113495bSYour Name 
20*5113495bSYour Name #ifndef __HIF_IRQ_AFFINITY_H__
21*5113495bSYour Name #define __HIF_IRQ_AFFINITY_H__
22*5113495bSYour Name 
23*5113495bSYour Name #ifdef HIF_IRQ_AFFINITY
24*5113495bSYour Name #ifndef FEATURE_NAPI
25*5113495bSYour Name #error /*HIF_IRQ_AFFINITY currently relies on FEATURE_NAPI*/
26*5113495bSYour Name #endif
27*5113495bSYour Name #endif
28*5113495bSYour Name 
29*5113495bSYour Name /* CLD headers */
30*5113495bSYour Name #include <hif.h> /* struct hif_opaque_softc; */
31*5113495bSYour Name #include <hif_napi.h>
32*5113495bSYour Name struct hif_opaque_softc;
33*5113495bSYour Name enum qca_denylist_op;
34*5113495bSYour Name 
35*5113495bSYour Name int hif_exec_cpu_migrate(struct qca_napi_data *napid, int cpu, int action);
36*5113495bSYour Name 
37*5113495bSYour Name int hif_exec_cpu_denylist(struct qca_napi_data *napid,
38*5113495bSYour Name 			  enum qca_denylist_op op);
39*5113495bSYour Name 
40*5113495bSYour Name #ifdef HIF_IRQ_AFFINITY
41*5113495bSYour Name int hif_exec_event(struct hif_opaque_softc     *hif,
42*5113495bSYour Name 		   enum  qca_napi_event event,
43*5113495bSYour Name 		   void                *data);
44*5113495bSYour Name 
45*5113495bSYour Name 
46*5113495bSYour Name /* hif_irq_affinity_remove() - remove affinity before freeing the irq
47*5113495bSYour Name  * @os_irq: irq number to remove affinity from
48*5113495bSYour Name  */
hif_irq_affinity_remove(int os_irq)49*5113495bSYour Name static inline void hif_irq_affinity_remove(int os_irq)
50*5113495bSYour Name {
51*5113495bSYour Name 	qdf_dev_set_irq_affinity(os_irq, NULL);
52*5113495bSYour Name }
53*5113495bSYour Name #else
hif_irq_affinity_remove(int os_irq)54*5113495bSYour Name static inline void hif_irq_affinity_remove(int os_irq)
55*5113495bSYour Name {
56*5113495bSYour Name }
57*5113495bSYour Name 
hif_exec_event(struct hif_opaque_softc * hif,enum qca_napi_event event,void * data)58*5113495bSYour Name static inline int hif_exec_event(struct hif_opaque_softc     *hif,
59*5113495bSYour Name 		   enum  qca_napi_event event,
60*5113495bSYour Name 		   void                *data)
61*5113495bSYour Name {
62*5113495bSYour Name 	return 0;
63*5113495bSYour Name }
64*5113495bSYour Name #endif
65*5113495bSYour Name 
66*5113495bSYour Name /**
67*5113495bSYour Name  * hif_napi_core_ctl_set_boost() - This API is used to move
68*5113495bSYour Name  * tasks to CPUs with higher capacity
69*5113495bSYour Name  * @boost: If set move tasks to higher capacity CPUs
70*5113495bSYour Name  *
71*5113495bSYour Name  * This function moves tasks to higher capacity CPUs than those
72*5113495bSYour Name  * where the tasks would have  normally ended up
73*5113495bSYour Name  *
74*5113495bSYour Name  * Return:  None
75*5113495bSYour Name  */
hif_napi_core_ctl_set_boost(bool boost)76*5113495bSYour Name static inline int hif_napi_core_ctl_set_boost(bool boost)
77*5113495bSYour Name {
78*5113495bSYour Name 	return qdf_core_ctl_set_boost(boost);
79*5113495bSYour Name }
80*5113495bSYour Name 
81*5113495bSYour Name #ifdef HIF_CPU_PERF_AFFINE_MASK
hif_core_ctl_set_boost(bool boost)82*5113495bSYour Name static inline int hif_core_ctl_set_boost(bool boost)
83*5113495bSYour Name {
84*5113495bSYour Name 	return hif_napi_core_ctl_set_boost(boost);
85*5113495bSYour Name }
86*5113495bSYour Name #else
hif_core_ctl_set_boost(bool boost)87*5113495bSYour Name static inline int hif_core_ctl_set_boost(bool boost)
88*5113495bSYour Name {
89*5113495bSYour Name 	return 0;
90*5113495bSYour Name }
91*5113495bSYour Name #endif
92*5113495bSYour Name #endif
93