qcacmn: Add feature flags to crypto component
Add below featurization flags to crypto component:
WLAN_CRYPTO_WEP_OS_DERIVATIVE
WLAN_CRYPTO_TKIP_OS_DERIVATIVE
WLAN_CRYPTO_CCMP_OS_DERIVATIVE
WLAN_CRYPTO_GCMP_OS_DERIVATIVE
WLAN_CRYPTO_WAPI_OS_DERIVATIVE
WLAN_CRYPTO_GCM_OS_DERIVATIVE
WLAN_CRYPTO_FILS_OS_DERIVATIVE
Remove the below unused functions:
wlan_crypto_psoc_obj_create_handler()
wlan_crypto_psoc_obj_destroy_handler()
wlan_crypto_pdev_obj_destroy_handler()
Change-Id: Ie2a9a4ca240773dc0d32aa6884b21ee08244829c
CRs-Fixed: 2269826
diff --git a/umac/cmn_services/crypto/inc/wlan_crypto_fils_api.h b/umac/cmn_services/crypto/inc/wlan_crypto_fils_api.h
index ae40242..b7a9366 100644
--- a/umac/cmn_services/crypto/inc/wlan_crypto_fils_api.h
+++ b/umac/cmn_services/crypto/inc/wlan_crypto_fils_api.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2017-2018 The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@@ -19,6 +19,12 @@
#ifndef _WLAN_CRYPTO_FILS_API_H_
#define _WLAN_CRYPTO_FILS_API_H_
+#ifdef WLAN_CRYPTO_FILS_OS_DERIVATIVE
+static inline const struct wlan_crypto_cipher *fils_register(void)
+{
+ return NULL;
+}
+#else
/**
* fils_register() - Register all callback functions to Crypto manager
*
@@ -28,6 +34,7 @@
* Return: Pointer to wlan_crypto_cipher Object
*/
const struct wlan_crypto_cipher *fils_register(void);
+#endif
#ifdef WLAN_SUPPORT_FILS
/**
diff --git a/umac/cmn_services/crypto/src/wlan_crypto_aes_i.h b/umac/cmn_services/crypto/src/wlan_crypto_aes_i.h
index de55210..ac6c437 100644
--- a/umac/cmn_services/crypto/src/wlan_crypto_aes_i.h
+++ b/umac/cmn_services/crypto/src/wlan_crypto_aes_i.h
@@ -231,10 +231,19 @@
const uint8_t *aad, size_t aad_len,
const uint8_t *tag,
uint8_t *plain);
-
+#ifdef WLAN_CRYPTO_GCM_OS_DERIVATIVE
+static inline int wlan_crypto_aes_gmac(const uint8_t *key, size_t key_len,
+ const uint8_t *iv, size_t iv_len,
+ const uint8_t *aad, size_t aad_len,
+ uint8_t *tag)
+{
+ return 0;
+}
+#else
int wlan_crypto_aes_gmac(const uint8_t *key, size_t key_len,
- const uint8_t *iv, size_t iv_len,
- const uint8_t *aad, size_t aad_len, uint8_t *tag);
+ const uint8_t *iv, size_t iv_len,
+ const uint8_t *aad, size_t aad_len, uint8_t *tag);
+#endif
int wlan_crypto_aes_ccm_ae(const uint8_t *key, size_t key_len,
const uint8_t *nonce, size_t M, const uint8_t *plain,
size_t plain_len, const uint8_t *aad, size_t aad_len,
@@ -251,10 +260,24 @@
void *wlan_crypto_aes_decrypt_init(const uint8_t *key, size_t len);
void wlan_crypto_aes_decrypt(void *ctx, const uint8_t *crypt, uint8_t *plain);
void wlan_crypto_aes_decrypt_deinit(void *ctx);
+#ifdef WLAN_CRYPTO_OMAC1_OS_DERIVATIVE
+static inline int omac1_aes_128(const uint8_t *key, const uint8_t *data,
+ size_t data_len, uint8_t *mac)
+{
+ return 0;
+}
+
+static inline int omac1_aes_256(const uint8_t *key, const uint8_t *data,
+ size_t data_len, uint8_t *mac)
+{
+ return 0;
+}
+#else
int omac1_aes_128(const uint8_t *key, const uint8_t *data,
- size_t data_len, uint8_t *mac);
+ size_t data_len, uint8_t *mac);
int omac1_aes_256(const uint8_t *key, const uint8_t *data,
- size_t data_len, uint8_t *mac);
+ size_t data_len, uint8_t *mac);
+#endif
int omac1_aes_vector(const uint8_t *key, size_t key_len, size_t num_elem,
const uint8_t *addr[], const size_t *len, uint8_t *mac);
#endif /* WLAN_CRYPTO_AES_I_H */
diff --git a/umac/cmn_services/crypto/src/wlan_crypto_def_i.h b/umac/cmn_services/crypto/src/wlan_crypto_def_i.h
index f377fa6..809334f 100644
--- a/umac/cmn_services/crypto/src/wlan_crypto_def_i.h
+++ b/umac/cmn_services/crypto/src/wlan_crypto_def_i.h
@@ -93,6 +93,9 @@
#define WLAN_TID_SIZE 17
#define WLAN_NONQOS_SEQ 16
+/* Number of bits per byte */
+#define CRYPTO_NBBY 8
+
/* Macros for handling unaligned memory accesses */
static inline uint16_t wlan_crypto_get_be16(const uint8_t *a)
diff --git a/umac/cmn_services/crypto/src/wlan_crypto_global_api.c b/umac/cmn_services/crypto/src/wlan_crypto_global_api.c
index 71d1943..4097cb1 100644
--- a/umac/cmn_services/crypto/src/wlan_crypto_global_api.c
+++ b/umac/cmn_services/crypto/src/wlan_crypto_global_api.c
@@ -386,7 +386,7 @@
if (cipher && (!IS_FILS_CIPHER(req_key->type)) &&
(!IS_MGMT_CIPHER(req_key->type)) &&
- ((req_key->keylen != (cipher->keylen / NBBY)) &&
+ ((req_key->keylen != (cipher->keylen / CRYPTO_NBBY)) &&
(req_key->type != WLAN_CRYPTO_CIPHER_WEP))) {
qdf_print("%s[%d] cipher invalid\n", __func__, __LINE__);
return QDF_STATUS_E_INVAL;
@@ -466,8 +466,7 @@
crypto_priv->def_igtk_tx_keyid = igtk_idx;
} else {
if (IS_FILS_CIPHER(req_key->type)) {
- qdf_print(FL(
- "FILS key is not for BroadCast packet\n"));
+ qdf_print("FILS key is not for BroadCast pkt");
return QDF_STATUS_E_INVAL;
}
if (!HAS_MCAST_CIPHER(crypto_params, req_key->type)
@@ -3091,13 +3090,13 @@
struct wlan_crypto_comp_priv *crypto_priv = NULL;
if (!peer) {
- qdf_print(FL("Invalid Input\n"));
+ qdf_print("Invalid Input");
return 0;
}
crypto_priv = wlan_get_peer_crypto_obj(peer);
if (!crypto_priv) {
- qdf_print(FL("crypto_priv NULL\n"));
+ qdf_print("crypto_priv NULL");
return 0;
}
@@ -3110,13 +3109,13 @@
struct wlan_crypto_comp_priv *crypto_priv = NULL;
if (!peer) {
- qdf_print(FL("Invalid Input\n"));
+ qdf_print("Invalid Input");
return;
}
crypto_priv = wlan_get_peer_crypto_obj(peer);
if (!crypto_priv) {
- qdf_print(FL("crypto_priv NULL\n"));
+ qdf_print("crypto_priv NULL");
return;
}
diff --git a/umac/cmn_services/crypto/src/wlan_crypto_obj_mgr.c b/umac/cmn_services/crypto/src/wlan_crypto_obj_mgr.c
index a65a28d..fcdc8d8 100644
--- a/umac/cmn_services/crypto/src/wlan_crypto_obj_mgr.c
+++ b/umac/cmn_services/crypto/src/wlan_crypto_obj_mgr.c
@@ -37,14 +37,6 @@
#include "wlan_crypto_fils_api.h"
-extern const struct wlan_crypto_cipher *wep_register(void);
-extern const struct wlan_crypto_cipher *tkip_register(void);
-extern const struct wlan_crypto_cipher *ccmp_register(void);
-extern const struct wlan_crypto_cipher *ccmp256_register(void);
-extern const struct wlan_crypto_cipher *gcmp_register(void);
-extern const struct wlan_crypto_cipher *gcmp256_register(void);
-extern const struct wlan_crypto_cipher *wapi_register(void);
-
extern const struct wlan_crypto_cipher
*wlan_crypto_cipher_ops[WLAN_CRYPTO_CIPHER_MAX];
@@ -82,20 +74,6 @@
return QDF_STATUS_SUCCESS;
}
-static QDF_STATUS wlan_crypto_psoc_obj_create_handler(
- struct wlan_objmgr_psoc *psoc,
- void *arg)
-{
- return QDF_STATUS_SUCCESS;
-}
-
-static QDF_STATUS wlan_crypto_pdev_obj_create_handler(
- struct wlan_objmgr_pdev *pdev,
- void *arg)
-{
- return QDF_STATUS_SUCCESS;
-}
-
static QDF_STATUS wlan_crypto_vdev_obj_create_handler(
struct wlan_objmgr_vdev *vdev,
void *arg)
@@ -193,20 +171,6 @@
return status;
}
-static QDF_STATUS wlan_crypto_psoc_obj_destroy_handler(
- struct wlan_objmgr_psoc *psoc,
- void *arg){
-
- return QDF_STATUS_COMP_DISABLED;
-}
-
-static QDF_STATUS wlan_crypto_pdev_obj_destroy_handler(
- struct wlan_objmgr_pdev *pdev,
- void *arg){
-
- return QDF_STATUS_SUCCESS;
-}
-
static void wlan_crypto_free_key(struct wlan_crypto_comp_priv *crypto_priv)
{
uint8_t i;
@@ -296,7 +260,7 @@
WLAN_UMAC_COMP_CRYPTO,
wlan_crypto_vdev_obj_create_handler, NULL);
if (status != QDF_STATUS_SUCCESS)
- goto err_vdev_create;
+ return status;
status = wlan_objmgr_register_peer_create_handler(
WLAN_UMAC_COMP_CRYPTO,
@@ -326,9 +290,7 @@
err_peer_create:
wlan_objmgr_unregister_vdev_create_handler(WLAN_UMAC_COMP_CRYPTO,
wlan_crypto_vdev_obj_create_handler, NULL);
-err_vdev_create:
- wlan_objmgr_unregister_pdev_create_handler(WLAN_UMAC_COMP_CRYPTO,
- wlan_crypto_pdev_obj_create_handler, NULL);
+
register_success:
return status;
}
diff --git a/umac/cmn_services/crypto/src/wlan_crypto_obj_mgr_i.h b/umac/cmn_services/crypto/src/wlan_crypto_obj_mgr_i.h
index 013df9c..9626e75 100644
--- a/umac/cmn_services/crypto/src/wlan_crypto_obj_mgr_i.h
+++ b/umac/cmn_services/crypto/src/wlan_crypto_obj_mgr_i.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2017-2018 The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@@ -23,6 +23,63 @@
#ifndef __WLAN_CRYPTO_OBJ_MGR_I_
#define __WLAN_CRYPTO_OBJ_MGR_I_
+#ifdef WLAN_CRYPTO_WEP_OS_DERIVATIVE
+static inline const struct wlan_crypto_cipher *wep_register(void)
+{
+ return NULL;
+}
+#else
+const struct wlan_crypto_cipher *wep_register(void);
+#endif
+
+#ifdef WLAN_CRYPTO_TKIP_OS_DERIVATIVE
+static inline const struct wlan_crypto_cipher *tkip_register(void)
+{
+ return NULL;
+}
+#else
+const struct wlan_crypto_cipher *tkip_register(void);
+#endif
+
+#ifdef WLAN_CRYPTO_CCMP_OS_DERIVATIVE
+static inline const struct wlan_crypto_cipher *ccmp_register(void)
+{
+ return NULL;
+}
+
+static inline const struct wlan_crypto_cipher *ccmp256_register(void)
+{
+ return NULL;
+}
+#else
+const struct wlan_crypto_cipher *ccmp_register(void);
+const struct wlan_crypto_cipher *ccmp256_register(void);
+#endif
+
+#ifdef WLAN_CRYPTO_GCMP_OS_DERIVATIVE
+static inline const struct wlan_crypto_cipher *gcmp_register(void)
+{
+ return NULL;
+}
+
+static inline const struct wlan_crypto_cipher *gcmp256_register(void)
+{
+ return NULL;
+}
+#else
+const struct wlan_crypto_cipher *gcmp_register(void);
+const struct wlan_crypto_cipher *gcmp256_register(void);
+#endif
+
+#ifdef WLAN_CRYPTO_WAPI_OS_DERIVATIVE
+static inline const struct wlan_crypto_cipher *wapi_register(void)
+{
+ return NULL;
+}
+#else
+const struct wlan_crypto_cipher *wapi_register(void);
+#endif
+
static inline void *wlan_get_vdev_crypto_obj(struct wlan_objmgr_vdev *vdev)
{