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