From 899debe4d7b50f7d4fb38de4b4c23d79fad6dcc6 Mon Sep 17 00:00:00 2001 From: Yu Wang Date: Tue, 8 Sep 2020 14:49:47 +0800 Subject: [PATCH] qcacmn: add crypto api to free keys for vdev Add api 'wlan_crypto_free_vdev_key' to free keys for specified vdev. CRs-Fixed: 2765406 Change-Id: I44b09ac30e16aca2aec8a0763b7848bfe779a345 --- .../crypto/inc/wlan_crypto_global_api.h | 14 ++++++++++++++ .../crypto/src/wlan_crypto_obj_mgr.c | 16 ++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/umac/cmn_services/crypto/inc/wlan_crypto_global_api.h b/umac/cmn_services/crypto/inc/wlan_crypto_global_api.h index 58f1fed4611c..ec90362e5f5c 100644 --- a/umac/cmn_services/crypto/inc/wlan_crypto_global_api.h +++ b/umac/cmn_services/crypto/inc/wlan_crypto_global_api.h @@ -846,6 +846,16 @@ struct wlan_crypto_key *wlan_crypto_get_key(struct wlan_objmgr_vdev *vdev, QDF_STATUS wlan_crypto_set_key_req(struct wlan_objmgr_vdev *vdev, struct wlan_crypto_key *req, enum wlan_crypto_key_type key_type); + +/** + * wlan_crypto_free_vdev_key - Free keys for vdev + * @vdev: vdev object + * + * This function frees keys stored in vdev crypto object. + * + * Return: None + */ +void wlan_crypto_free_vdev_key(struct wlan_objmgr_vdev *vdev); #else static inline void wlan_crypto_update_set_key_peer( struct wlan_objmgr_vdev *vdev, @@ -875,6 +885,10 @@ QDF_STATUS wlan_crypto_set_key_req(struct wlan_objmgr_vdev *vdev, { return QDF_STATUS_SUCCESS; } + +static inline void wlan_crypto_free_vdev_key(struct wlan_objmgr_vdev *vdev) +{ +} #endif /* CRYPTO_SET_KEY_CONVERGED */ /** 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 0e3e52848df4..e3a56a4a103d 100644 --- a/umac/cmn_services/crypto/src/wlan_crypto_obj_mgr.c +++ b/umac/cmn_services/crypto/src/wlan_crypto_obj_mgr.c @@ -204,6 +204,22 @@ static void wlan_crypto_free_key(struct wlan_crypto_comp_priv *crypto_priv) } +#ifdef CRYPTO_SET_KEY_CONVERGED +void wlan_crypto_free_vdev_key(struct wlan_objmgr_vdev *vdev) +{ + struct wlan_crypto_comp_priv *crypto_priv; + + crypto_debug("free key for vdev %d", wlan_vdev_get_id(vdev)); + crypto_priv = wlan_get_vdev_crypto_obj(vdev); + if (!crypto_priv) { + crypto_err("crypto_priv NULL"); + return; + } + + wlan_crypto_free_key(crypto_priv); +} +#endif + static QDF_STATUS wlan_crypto_vdev_obj_destroy_handler( struct wlan_objmgr_vdev *vdev, void *arg){