ktls: Inline ktls_cleanup() into ktls_destroy().
Reviewed by: gallatin, markj Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D37353
This commit is contained in:
parent
d01db2b837
commit
5920f99d21
@ -297,7 +297,6 @@ SYSCTL_COUNTER_U64(_kern_ipc_tls_toe, OID_AUTO, chacha20, CTLFLAG_RD,
|
|||||||
|
|
||||||
static MALLOC_DEFINE(M_KTLS, "ktls", "Kernel TLS");
|
static MALLOC_DEFINE(M_KTLS, "ktls", "Kernel TLS");
|
||||||
|
|
||||||
static void ktls_cleanup(struct ktls_session *tls);
|
|
||||||
#if defined(INET) || defined(INET6)
|
#if defined(INET) || defined(INET6)
|
||||||
static void ktls_reset_receive_tag(void *context, int pending);
|
static void ktls_reset_receive_tag(void *context, int pending);
|
||||||
static void ktls_reset_send_tag(void *context, int pending);
|
static void ktls_reset_send_tag(void *context, int pending);
|
||||||
@ -784,76 +783,6 @@ ktls_clone_session(struct ktls_session *tls, int direction)
|
|||||||
|
|
||||||
return (tls_new);
|
return (tls_new);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
static void
|
|
||||||
ktls_cleanup(struct ktls_session *tls)
|
|
||||||
{
|
|
||||||
|
|
||||||
counter_u64_add(ktls_offload_active, -1);
|
|
||||||
switch (tls->mode) {
|
|
||||||
case TCP_TLS_MODE_SW:
|
|
||||||
switch (tls->params.cipher_algorithm) {
|
|
||||||
case CRYPTO_AES_CBC:
|
|
||||||
counter_u64_add(ktls_sw_cbc, -1);
|
|
||||||
break;
|
|
||||||
case CRYPTO_AES_NIST_GCM_16:
|
|
||||||
counter_u64_add(ktls_sw_gcm, -1);
|
|
||||||
break;
|
|
||||||
case CRYPTO_CHACHA20_POLY1305:
|
|
||||||
counter_u64_add(ktls_sw_chacha20, -1);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case TCP_TLS_MODE_IFNET:
|
|
||||||
switch (tls->params.cipher_algorithm) {
|
|
||||||
case CRYPTO_AES_CBC:
|
|
||||||
counter_u64_add(ktls_ifnet_cbc, -1);
|
|
||||||
break;
|
|
||||||
case CRYPTO_AES_NIST_GCM_16:
|
|
||||||
counter_u64_add(ktls_ifnet_gcm, -1);
|
|
||||||
break;
|
|
||||||
case CRYPTO_CHACHA20_POLY1305:
|
|
||||||
counter_u64_add(ktls_ifnet_chacha20, -1);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (tls->snd_tag != NULL)
|
|
||||||
m_snd_tag_rele(tls->snd_tag);
|
|
||||||
if (tls->rx_ifp != NULL)
|
|
||||||
if_rele(tls->rx_ifp);
|
|
||||||
break;
|
|
||||||
#ifdef TCP_OFFLOAD
|
|
||||||
case TCP_TLS_MODE_TOE:
|
|
||||||
switch (tls->params.cipher_algorithm) {
|
|
||||||
case CRYPTO_AES_CBC:
|
|
||||||
counter_u64_add(ktls_toe_cbc, -1);
|
|
||||||
break;
|
|
||||||
case CRYPTO_AES_NIST_GCM_16:
|
|
||||||
counter_u64_add(ktls_toe_gcm, -1);
|
|
||||||
break;
|
|
||||||
case CRYPTO_CHACHA20_POLY1305:
|
|
||||||
counter_u64_add(ktls_toe_chacha20, -1);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
if (tls->ocf_session != NULL)
|
|
||||||
ktls_ocf_free(tls);
|
|
||||||
if (tls->params.auth_key != NULL) {
|
|
||||||
zfree(tls->params.auth_key, M_KTLS);
|
|
||||||
tls->params.auth_key = NULL;
|
|
||||||
tls->params.auth_key_len = 0;
|
|
||||||
}
|
|
||||||
if (tls->params.cipher_key != NULL) {
|
|
||||||
zfree(tls->params.cipher_key, M_KTLS);
|
|
||||||
tls->params.cipher_key = NULL;
|
|
||||||
tls->params.cipher_key_len = 0;
|
|
||||||
}
|
|
||||||
explicit_bzero(tls->params.iv, sizeof(tls->params.iv));
|
|
||||||
}
|
|
||||||
|
|
||||||
#if defined(INET) || defined(INET6)
|
|
||||||
|
|
||||||
#ifdef TCP_OFFLOAD
|
#ifdef TCP_OFFLOAD
|
||||||
static int
|
static int
|
||||||
@ -1864,6 +1793,7 @@ ktls_modify_txrtlmt(struct ktls_session *tls, uint64_t max_pacing_rate)
|
|||||||
void
|
void
|
||||||
ktls_destroy(struct ktls_session *tls)
|
ktls_destroy(struct ktls_session *tls)
|
||||||
{
|
{
|
||||||
|
MPASS(tls->refcount == 0);
|
||||||
|
|
||||||
if (tls->sequential_records) {
|
if (tls->sequential_records) {
|
||||||
struct mbuf *m, *n;
|
struct mbuf *m, *n;
|
||||||
@ -1879,7 +1809,69 @@ ktls_destroy(struct ktls_session *tls)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ktls_cleanup(tls);
|
|
||||||
|
counter_u64_add(ktls_offload_active, -1);
|
||||||
|
switch (tls->mode) {
|
||||||
|
case TCP_TLS_MODE_SW:
|
||||||
|
switch (tls->params.cipher_algorithm) {
|
||||||
|
case CRYPTO_AES_CBC:
|
||||||
|
counter_u64_add(ktls_sw_cbc, -1);
|
||||||
|
break;
|
||||||
|
case CRYPTO_AES_NIST_GCM_16:
|
||||||
|
counter_u64_add(ktls_sw_gcm, -1);
|
||||||
|
break;
|
||||||
|
case CRYPTO_CHACHA20_POLY1305:
|
||||||
|
counter_u64_add(ktls_sw_chacha20, -1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case TCP_TLS_MODE_IFNET:
|
||||||
|
switch (tls->params.cipher_algorithm) {
|
||||||
|
case CRYPTO_AES_CBC:
|
||||||
|
counter_u64_add(ktls_ifnet_cbc, -1);
|
||||||
|
break;
|
||||||
|
case CRYPTO_AES_NIST_GCM_16:
|
||||||
|
counter_u64_add(ktls_ifnet_gcm, -1);
|
||||||
|
break;
|
||||||
|
case CRYPTO_CHACHA20_POLY1305:
|
||||||
|
counter_u64_add(ktls_ifnet_chacha20, -1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (tls->snd_tag != NULL)
|
||||||
|
m_snd_tag_rele(tls->snd_tag);
|
||||||
|
if (tls->rx_ifp != NULL)
|
||||||
|
if_rele(tls->rx_ifp);
|
||||||
|
break;
|
||||||
|
#ifdef TCP_OFFLOAD
|
||||||
|
case TCP_TLS_MODE_TOE:
|
||||||
|
switch (tls->params.cipher_algorithm) {
|
||||||
|
case CRYPTO_AES_CBC:
|
||||||
|
counter_u64_add(ktls_toe_cbc, -1);
|
||||||
|
break;
|
||||||
|
case CRYPTO_AES_NIST_GCM_16:
|
||||||
|
counter_u64_add(ktls_toe_gcm, -1);
|
||||||
|
break;
|
||||||
|
case CRYPTO_CHACHA20_POLY1305:
|
||||||
|
counter_u64_add(ktls_toe_chacha20, -1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
if (tls->ocf_session != NULL)
|
||||||
|
ktls_ocf_free(tls);
|
||||||
|
if (tls->params.auth_key != NULL) {
|
||||||
|
zfree(tls->params.auth_key, M_KTLS);
|
||||||
|
tls->params.auth_key = NULL;
|
||||||
|
tls->params.auth_key_len = 0;
|
||||||
|
}
|
||||||
|
if (tls->params.cipher_key != NULL) {
|
||||||
|
zfree(tls->params.cipher_key, M_KTLS);
|
||||||
|
tls->params.cipher_key = NULL;
|
||||||
|
tls->params.cipher_key_len = 0;
|
||||||
|
}
|
||||||
|
explicit_bzero(tls->params.iv, sizeof(tls->params.iv));
|
||||||
|
|
||||||
uma_zfree(ktls_session_zone, tls);
|
uma_zfree(ktls_session_zone, tls);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user