1 /*
2  * Copyright (c) 2013-2019 The Linux Foundation. All rights reserved.
3  * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
4  *
5  * Permission to use, copy, modify, and/or distribute this software for
6  * any purpose with or without fee is hereby granted, provided that the
7  * above copyright notice and this permission notice appear in all
8  * copies.
9  *
10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11  * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12  * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13  * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14  * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16  * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17  * PERFORMANCE OF THIS SOFTWARE.
18  */
19 
20 #ifndef HDD_IPA_H__
21 #define HDD_IPA_H__
22 
23 /**
24  * DOC: wlan_hdd_ipa.h
25  *
26  * WLAN IPA interface module headers
27  */
28 
29 #include <qdf_nbuf.h>
30 
31 #ifdef IPA_OFFLOAD
32 
33 /**
34  * hdd_ipa_send_nbuf_to_network() - Send network buffer to kernel
35  * @nbuf: network buffer
36  * @dev: network adapter
37  *
38  * Called when a network buffer is received which should not be routed
39  * to the IPA module.
40  *
41  * Return: None
42  */
43 void hdd_ipa_send_nbuf_to_network(qdf_nbuf_t nbuf, qdf_netdev_t dev);
44 
45 /**
46  * hdd_ipa_set_mcc_mode() - To set mcc mode if IPA is enabled
47  * @mcc_mode: mcc mode
48  *
49  * This routine is called to set mcc mode if IPA is enabled
50  *
51  * Return: None
52  */
53 void hdd_ipa_set_mcc_mode(bool mcc_mode);
54 
55 /**
56  * hdd_ipa_get_tx_pipe() - Get tx pipe for the new connection
57  * @hdd_ctx: pointer to hdd_context
58  * @link: pointer to struct wlan_hdd_link_info
59  * @tx_pipe: boolean output param to store which pipe to use for @link.
60  *	     false is the primary tx pipe and true is the alternate tx pipe.
61  *
62  * Return: QDF_STATUS_SUCCESS for success, and otherwise for failure scenarios.
63  *
64  */
65 QDF_STATUS hdd_ipa_get_tx_pipe(struct hdd_context *hdd_ctx,
66 			       struct wlan_hdd_link_info *link,
67 			       bool *tx_pipe);
68 
69 /*
70  * hdd_ipa_set_perf_level_bw() - Set ipa perf level based on BW
71  * @bw: enum hw_mode_bandwidth
72  *
73  * This routine is called to set IPA perf level based on max BW configured
74  * among in-use STA and SAP vdevs.
75  *
76  * Return: None
77  */
78 void hdd_ipa_set_perf_level_bw(enum hw_mode_bandwidth bw);
79 
80 #else
81 static inline
hdd_ipa_send_nbuf_to_network(qdf_nbuf_t skb,qdf_netdev_t dev)82 void hdd_ipa_send_nbuf_to_network(qdf_nbuf_t skb, qdf_netdev_t dev)
83 {
84 }
85 
hdd_ipa_set_mcc_mode(bool mcc_mode)86 static inline void hdd_ipa_set_mcc_mode(bool mcc_mode)
87 {
88 }
89 
90 static inline QDF_STATUS
hdd_ipa_get_tx_pipe(struct hdd_context * hdd_ctx,struct wlan_hdd_link_info * link,bool * tx_pipe)91 hdd_ipa_get_tx_pipe(struct hdd_context *hdd_ctx,
92 		    struct wlan_hdd_link_info *link,
93 		    bool *tx_pipe)
94 {
95 	return QDF_STATUS_SUCCESS;
96 }
97 
hdd_ipa_set_perf_level_bw(enum hw_mode_bandwidth bw)98 static inline void hdd_ipa_set_perf_level_bw(enum hw_mode_bandwidth bw)
99 {
100 }
101 
102 #endif
103 #endif /* HDD_IPA_H__ */
104