aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorFlorin Coras <fcoras@cisco.com>2021-03-09 08:36:25 -0800
committerDave Barach <openvpp@barachs.net>2021-03-11 19:30:48 +0000
commit1e6a0f64653c8142fa7032aba127ab4894bafc3c (patch)
tree946397461d5fa1fe32ae1e736a64db15f628b939 /src
parent143610014ab91f7998014f4322c36c8b07f50d5f (diff)
session tls: deq notifications for custom tx
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: I6ed2104e9d79c367ca36460047586f9b632c3315
Diffstat (limited to 'src')
-rw-r--r--src/plugins/tlsopenssl/tls_openssl.c3
-rw-r--r--src/vnet/session/session_node.c4
-rw-r--r--src/vnet/tls/tls.c1
3 files changed, 8 insertions, 0 deletions
diff --git a/src/plugins/tlsopenssl/tls_openssl.c b/src/plugins/tlsopenssl/tls_openssl.c
index 00cd4621897..c906d0e294a 100644
--- a/src/plugins/tlsopenssl/tls_openssl.c
+++ b/src/plugins/tlsopenssl/tls_openssl.c
@@ -159,6 +159,9 @@ openssl_read_from_ssl_into_fifo (svm_fifo_t * f, SSL * ssl)
u32 max_enq;
max_enq = svm_fifo_max_enqueue_prod (f);
+ if (!max_enq)
+ return 0;
+
n_fs = svm_fifo_provision_chunks (f, fs, n_segs, max_enq);
if (n_fs < 0)
return 0;
diff --git a/src/vnet/session/session_node.c b/src/vnet/session/session_node.c
index 2e21f26ec29..f5e8478aaf3 100644
--- a/src/vnet/session/session_node.c
+++ b/src/vnet/session/session_node.c
@@ -1188,6 +1188,10 @@ session_tx_fifo_dequeue_internal (session_worker_t * wrk,
session_evt_add_head_old (wrk, elt);
}
+ if (sp->max_burst_size &&
+ svm_fifo_needs_deq_ntf (s->tx_fifo, sp->max_burst_size))
+ session_dequeue_notify (s);
+
return n_packets;
}
diff --git a/src/vnet/tls/tls.c b/src/vnet/tls/tls.c
index 6052ca1bf65..b9c07ff9406 100644
--- a/src/vnet/tls/tls.c
+++ b/src/vnet/tls/tls.c
@@ -353,6 +353,7 @@ tls_ctx_write (tls_ctx_t * ctx, session_t * app_session,
sp->max_burst_size = sp->max_burst_size * TRANSPORT_PACER_MIN_MSS;
n_wrote = tls_vfts[ctx->tls_ctx_engine].ctx_write (ctx, app_session, sp);
+ sp->max_burst_size = n_wrote;
return n_wrote > 0 ? clib_max (n_wrote / TRANSPORT_PACER_MIN_MSS, 1) : 0;
}