1 /*
2  * Copyright (c) 2017-2018 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 /**
21  * DOC: Public API initialization of crypto service with object manager
22  */
23 
24 #ifndef __WLAN_CRYPTO_OBJ_MGR_I_
25 #define __WLAN_CRYPTO_OBJ_MGR_I_
26 
27 #ifdef WLAN_CRYPTO_WEP_OS_DERIVATIVE
wep_register(void)28 static inline const struct wlan_crypto_cipher *wep_register(void)
29 {
30 	return NULL;
31 }
32 #else
33 const struct wlan_crypto_cipher *wep_register(void);
34 #endif
35 
36 #ifdef WLAN_CRYPTO_TKIP_OS_DERIVATIVE
tkip_register(void)37 static inline const struct wlan_crypto_cipher *tkip_register(void)
38 {
39 	return NULL;
40 }
41 #else
42 const struct wlan_crypto_cipher *tkip_register(void);
43 #endif
44 
45 #ifdef WLAN_CRYPTO_CCMP_OS_DERIVATIVE
ccmp_register(void)46 static inline const struct wlan_crypto_cipher *ccmp_register(void)
47 {
48 	return NULL;
49 }
50 
ccmp256_register(void)51 static inline const struct wlan_crypto_cipher *ccmp256_register(void)
52 {
53 	return NULL;
54 }
55 #else
56 const struct wlan_crypto_cipher *ccmp_register(void);
57 const struct wlan_crypto_cipher *ccmp256_register(void);
58 #endif
59 
60 #ifdef WLAN_CRYPTO_GCMP_OS_DERIVATIVE
gcmp_register(void)61 static inline const struct wlan_crypto_cipher *gcmp_register(void)
62 {
63 	return NULL;
64 }
65 
gcmp256_register(void)66 static inline const struct wlan_crypto_cipher *gcmp256_register(void)
67 {
68 	return NULL;
69 }
70 #else
71 const struct wlan_crypto_cipher *gcmp_register(void);
72 const struct wlan_crypto_cipher *gcmp256_register(void);
73 #endif
74 
75 #ifdef WLAN_CRYPTO_WAPI_OS_DERIVATIVE
wapi_register(void)76 static inline const struct wlan_crypto_cipher *wapi_register(void)
77 {
78 	return NULL;
79 }
80 #else
81 const struct wlan_crypto_cipher *wapi_register(void);
82 #endif
83 
84 #ifdef WLAN_CRYPTO_FILS_OS_DERIVATIVE
fils_register(void)85 static inline const struct wlan_crypto_cipher *fils_register(void)
86 {
87 	return NULL;
88 }
89 #else
90 /**
91  * fils_register() - Register all callback functions to Crypto manager
92  *
93  * This function is invoked from crypto object manager to register
94  * FILS specific callbacks.
95  *
96  * Return: Pointer to wlan_crypto_cipher Object
97  */
98 const struct wlan_crypto_cipher *fils_register(void);
99 #endif
100 
101 
wlan_get_vdev_crypto_obj(struct wlan_objmgr_vdev * vdev)102 static inline void *wlan_get_vdev_crypto_obj(struct wlan_objmgr_vdev *vdev)
103 {
104 	void *crypto_priv;
105 	crypto_priv = wlan_objmgr_vdev_get_comp_private_obj(vdev,
106 							WLAN_UMAC_COMP_CRYPTO);
107 
108 	return crypto_priv;
109 }
110 
wlan_get_peer_crypto_obj(struct wlan_objmgr_peer * peer)111 static inline void *wlan_get_peer_crypto_obj(struct wlan_objmgr_peer *peer)
112 {
113 	void *crypto_priv;
114 	crypto_priv = wlan_objmgr_peer_get_comp_private_obj(peer,
115 							WLAN_UMAC_COMP_CRYPTO);
116 
117 	return crypto_priv;
118 }
119 #endif /* end of __WLAN_CRYPTO_OBJ_MGR_I_*/
120