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){