xref: /wlan-dirver/qca-wifi-host-cmn/ipa/dispatcher/inc/wlan_ipa_obj_mgmt_api.h (revision 67011a392c017971b1c0e7b8f6621fd5613f6075)
1 /*
2  * Copyright (c) 2018, 2020-2021 The Linux Foundation. All rights reserved.
3  * Copyright (c) 2021-2022 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  * DOC: Declare public API related to the wlan ipa called by north bound
21  */
22 
23 #ifndef _WLAN_IPA_OBJ_MGMT_H_
24 #define _WLAN_IPA_OBJ_MGMT_H_
25 
26 #include "wlan_ipa_public_struct.h"
27 #include "wlan_objmgr_pdev_obj.h"
28 #include "wlan_ipa_main.h"
29 
30 #ifdef IPA_OFFLOAD
31 
32 /**
33  * ipa_init() - IPA module initialization
34  *
35  * Return: QDF_STATUS_SUCCESS on success
36  */
37 QDF_STATUS ipa_init(void);
38 
39 /**
40  * ipa_deinit() - IPA module deinitialization
41  *
42  * Return: QDF_STATUS_SUCCESS on success
43  */
44 QDF_STATUS ipa_deinit(void);
45 
46 /**
47  * ipa_register_is_ipa_ready() - Register IPA ready callback
48  * @pdev: pointer to pdev
49  *
50  * Return: QDF_STATUS_SUCCESS on success
51  */
52 QDF_STATUS ipa_register_is_ipa_ready(struct wlan_objmgr_pdev *pdev);
53 
54 /**
55  * ipa_disable_register_cb() - Reset the IPA is ready flag
56  *
57  * Return: Set the ipa_is_ready flag to false when module is
58  * unloaded to indicate that ipa ready cb is not registered
59  */
60 void ipa_disable_register_cb(void);
61 
62 /**
63  * wlan_ipa_config_is_enabled() - api to get IPA enable status
64  *
65  * Return: true - ipa is enabled
66  *         false - ipa is not enabled
67  */
68 static inline bool wlan_ipa_config_is_enabled(void)
69 {
70 	return ipa_config_is_enabled();
71 }
72 
73 /**
74  * wlan_ipa_get_hdl() - Get ipa hdl set by IPA driver
75  * @psoc: void psoc object
76  * @pdev_id: pdev id
77  *
78  * Return: IPA handle
79  */
80 qdf_ipa_wdi_hdl_t wlan_ipa_get_hdl(void *soc, uint8_t pdev_id);
81 
82 /**
83  * wlan_ipa_is_vlan enabled() - get IPA vlan support enable status
84  *
85  * Return: true - ipa vlan support is enabled
86  *         false - ipa vlan support is not enabled
87  */
88 bool wlan_ipa_is_vlan_enabled(void);
89 #else
90 
91 static inline QDF_STATUS ipa_init(void)
92 {
93 	return QDF_STATUS_SUCCESS;
94 }
95 
96 static inline QDF_STATUS ipa_deinit(void)
97 {
98 	return QDF_STATUS_SUCCESS;
99 }
100 
101 static inline QDF_STATUS ipa_register_is_ipa_ready(
102 	struct wlan_objmgr_pdev *pdev)
103 {
104 	return QDF_STATUS_SUCCESS;
105 }
106 
107 static inline void ipa_disable_register_cb(void)
108 {
109 }
110 
111 static inline bool wlan_ipa_config_is_enabled(void)
112 {
113 	return false;
114 }
115 
116 static inline bool wlan_ipa_is_vlan_enabled(void)
117 {
118 	return false;
119 }
120 #endif /* IPA_OFFLOAD */
121 
122 #endif /* _WLAN_IPA_OBJ_MGMT_H_ */
123