X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Ftlsmbedtls%2Ftls_mbedtls.c;h=928b31b4a7f5b14e518f171bab6406d2683e81e7;hb=9ebd2b92e;hp=dafb090080540c26dfad40364d1bd771ff9b6e55;hpb=82fc5fd447ec2b140f1d6a8641106361176f1b80;p=vpp.git diff --git a/src/plugins/tlsmbedtls/tls_mbedtls.c b/src/plugins/tlsmbedtls/tls_mbedtls.c index dafb0900805..928b31b4a7f 100644 --- a/src/plugins/tlsmbedtls/tls_mbedtls.c +++ b/src/plugins/tlsmbedtls/tls_mbedtls.c @@ -74,7 +74,8 @@ mbedtls_ctx_alloc (void) mbedtls_main_t *tm = &mbedtls_main; mbedtls_ctx_t **ctx; - pool_get (tm->ctx_pool[thread_index], ctx); + pool_get_aligned_safe (tm->ctx_pool[thread_index], ctx, + CLIB_CACHE_LINE_BYTES); if (!(*ctx)) *ctx = clib_mem_alloc (sizeof (mbedtls_ctx_t)); @@ -414,11 +415,11 @@ mbedtls_ctx_handshake_rx (tls_ctx_t * ctx) */ if (ctx->srv_hostname) { - tls_notify_app_connected (ctx, /* is failed */ 0); + tls_notify_app_connected (ctx, SESSION_E_TLS_HANDSHAKE); return -1; } } - tls_notify_app_connected (ctx, /* is failed */ 0); + tls_notify_app_connected (ctx, SESSION_E_NONE); } else { @@ -431,7 +432,8 @@ mbedtls_ctx_handshake_rx (tls_ctx_t * ctx) } static int -mbedtls_ctx_write (tls_ctx_t * ctx, session_t * app_session) +mbedtls_ctx_write (tls_ctx_t * ctx, session_t * app_session, + transport_send_params_t * sp) { mbedtls_ctx_t *mc = (mbedtls_ctx_t *) ctx; u8 thread_index = ctx->c_thread_index; @@ -446,13 +448,14 @@ mbedtls_ctx_write (tls_ctx_t * ctx, session_t * app_session) if (!deq_max) return 0; + deq_max = clib_min (deq_max, sp->max_burst_size); tls_session = session_get_from_handle (ctx->tls_session_handle); enq_max = svm_fifo_max_enqueue_prod (tls_session->tx_fifo); deq_now = clib_min (deq_max, TLS_CHUNK_SIZE); if (PREDICT_FALSE (enq_max == 0)) { - tls_add_vpp_q_builtin_tx_evt (app_session); + app_session->flags |= SESSION_F_CUSTOM_TX; return 0; } @@ -462,7 +465,7 @@ mbedtls_ctx_write (tls_ctx_t * ctx, session_t * app_session) wrote = mbedtls_ssl_write (&mc->ssl, mm->tx_bufs[thread_index], deq_now); if (wrote <= 0) { - tls_add_vpp_q_builtin_tx_evt (app_session); + app_session->flags |= SESSION_F_CUSTOM_TX; return 0; } @@ -471,7 +474,7 @@ mbedtls_ctx_write (tls_ctx_t * ctx, session_t * app_session) tls_add_vpp_q_tx_evt (tls_session); if (deq_now < deq_max) - tls_add_vpp_q_builtin_tx_evt (app_session); + app_session->flags |= SESSION_F_CUSTOM_TX; return 0; } @@ -552,7 +555,13 @@ mbedtls_app_close (tls_ctx_t * ctx) { tls_disconnect_transport (ctx); session_transport_delete_notify (&ctx->connection); - mbedtls_ctx_free (ctx); + return 0; +} + +static int +mbedtls_reinit_ca_chain (void) +{ + /* Not supported Yet */ return 0; } @@ -570,6 +579,7 @@ const static tls_engine_vft_t mbedtls_engine = { .ctx_stop_listen = mbedtls_stop_listen, .ctx_transport_close = mbedtls_transport_close, .ctx_app_close = mbedtls_app_close, + .ctx_reinit_cachain = mbedtls_reinit_ca_chain, }; int