In addition to returning the number of bytes also update the number of
segments to reflect the number used.
Type: improvement
Signed-off-by: Florin Coras <fcoras@cisco.com>
Change-Id: Ia87dc2aa62cea38b18dfa83df94dc2abe29d5121
openssl_write_from_fifo_into_ssl (svm_fifo_t *f, SSL *ssl, u32 max_len)
{
int wrote = 0, rv, i = 0, len;
openssl_write_from_fifo_into_ssl (svm_fifo_t *f, SSL *ssl, u32 max_len)
{
int wrote = 0, rv, i = 0, len;
svm_fifo_seg_t fs[n_segs];
svm_fifo_seg_t fs[n_segs];
- len = svm_fifo_segments (f, 0, fs, n_segs, max_len);
+ len = svm_fifo_segments (f, 0, fs, &n_segs, max_len);
int rv = PTLS_ERROR_IN_PROGRESS, write = 0, i = 0, read = 0, len;
svm_fifo_t *tcp_rx_fifo = tcp_session->rx_fifo;
ptls_buffer_t *buf = &ptls_ctx->read_buffer;
int rv = PTLS_ERROR_IN_PROGRESS, write = 0, i = 0, read = 0, len;
svm_fifo_t *tcp_rx_fifo = tcp_session->rx_fifo;
ptls_buffer_t *buf = &ptls_ctx->read_buffer;
- const int n_segs = 2, max_len = 16384;
+ u32 n_segs = 2, max_len = 16384;
ptls_t *tls = ptls_ctx->tls;
svm_fifo_seg_t fs[n_segs];
uword deq_now;
ptls_buffer_init (buf, "", 0);
ptls_t *tls = ptls_ctx->tls;
svm_fifo_seg_t fs[n_segs];
uword deq_now;
ptls_buffer_init (buf, "", 0);
- len = svm_fifo_segments (tcp_rx_fifo, 0, fs, n_segs, max_len);
+ len = svm_fifo_segments (tcp_rx_fifo, 0, fs, &n_segs, max_len);
u32 ai = 0, thread_index, min_buf_len, to_copy, left, wrote = 0;
ptls_buffer_t *buf = &ptls_ctx->read_buffer;
int ret, i = 0, read = 0, tcp_len, n_fs_app;
u32 ai = 0, thread_index, min_buf_len, to_copy, left, wrote = 0;
ptls_buffer_t *buf = &ptls_ctx->read_buffer;
int ret, i = 0, read = 0, tcp_len, n_fs_app;
- const int n_segs = 4, max_len = 1 << 16;
+ u32 n_segs = 4, max_len = 1 << 16;
svm_fifo_seg_t tcp_fs[n_segs], app_fs[n_segs];
picotls_main_t *pm = &picotls_main;
uword deq_now;
svm_fifo_seg_t tcp_fs[n_segs], app_fs[n_segs];
picotls_main_t *pm = &picotls_main;
uword deq_now;
if (n_fs_app <= 0)
return 0;
if (n_fs_app <= 0)
return 0;
- tcp_len = svm_fifo_segments (tcp_rx_fifo, 0, tcp_fs, n_segs, max_len);
+ tcp_len = svm_fifo_segments (tcp_rx_fifo, 0, tcp_fs, &n_segs, max_len);
if (tcp_len <= 0)
return 0;
if (tcp_len <= 0)
return 0;
{
u32 wrote = 0, max_enq, thread_index, app_buf_len, left, ti = 0;
int read = 0, rv, i = 0, len, n_tcp_segs = 4, deq_len;
{
u32 wrote = 0, max_enq, thread_index, app_buf_len, left, ti = 0;
int read = 0, rv, i = 0, len, n_tcp_segs = 4, deq_len;
- const int n_app_segs = 2, min_chunk = 2048;
+ u32 n_app_segs = 2, min_chunk = 2048;
svm_fifo_seg_t app_fs[n_app_segs], tcp_fs[n_tcp_segs];
picotls_main_t *pm = &picotls_main;
ptls_buffer_t _buf, *buf = &_buf;
svm_fifo_seg_t app_fs[n_app_segs], tcp_fs[n_tcp_segs];
picotls_main_t *pm = &picotls_main;
ptls_buffer_t _buf, *buf = &_buf;
thread_index = app_session->thread_index;
app_tx_fifo = app_session->tx_fifo;
thread_index = app_session->thread_index;
app_tx_fifo = app_session->tx_fifo;
- len = svm_fifo_segments (app_tx_fifo, 0, app_fs, n_app_segs, max_len);
+ len = svm_fifo_segments (app_tx_fifo, 0, app_fs, &n_app_segs, max_len);
-svm_fifo_segments (svm_fifo_t * f, u32 offset, svm_fifo_seg_t * fs,
- u32 n_segs, u32 max_bytes)
+svm_fifo_segments (svm_fifo_t *f, u32 offset, svm_fifo_seg_t *fs, u32 *n_segs,
+ u32 max_bytes)
{
u32 cursize, to_read, head, tail, fs_index = 1;
u32 n_bytes, head_pos, len, start;
{
u32 cursize, to_read, head, tail, fs_index = 1;
u32 n_bytes, head_pos, len, start;
fs[0].len = clib_min (c->length - head_pos, to_read);
n_bytes = fs[0].len;
fs[0].len = clib_min (c->length - head_pos, to_read);
n_bytes = fs[0].len;
- while (n_bytes < to_read && fs_index < n_segs)
+ while (n_bytes < to_read && fs_index < *n_segs)
{
c = f_cptr (f, c->next);
len = clib_min (c->length, to_read - n_bytes);
{
c = f_cptr (f, c->next);
len = clib_min (c->length, to_read - n_bytes);
n_bytes += len;
fs_index += 1;
}
n_bytes += len;
fs_index += 1;
}
* @param max_bytes max bytes to be mapped to fifo segments
* @return number of bytes in fifo segments or SVM_FIFO_EEMPTY
*/
* @param max_bytes max bytes to be mapped to fifo segments
* @return number of bytes in fifo segments or SVM_FIFO_EEMPTY
*/
-int svm_fifo_segments (svm_fifo_t * f, u32 offset, svm_fifo_seg_t * fs,
- u32 n_segs, u32 max_bytes);
+int svm_fifo_segments (svm_fifo_t *f, u32 offset, svm_fifo_seg_t *fs,
+ u32 *n_segs, u32 max_bytes);
/**
* Add io events subscriber to list
*
/**
* Add io events subscriber to list
*
}
n_read = svm_fifo_segments (rx_fifo, s->rx_bytes_pending,
}
n_read = svm_fifo_segments (rx_fifo, s->rx_bytes_pending,
- (svm_fifo_seg_t *) ds, n_segments, max_bytes);
+ (svm_fifo_seg_t *) ds, &n_segments, max_bytes);
if (n_read < 0)
return VPPCOM_EAGAIN;
if (n_read < 0)
return VPPCOM_EAGAIN;