From: Florin Coras Date: Fri, 28 Jun 2019 19:45:12 +0000 (-0700) Subject: svm: rename fifo tx notifications to reflect use X-Git-Tag: v20.01-rc0~289 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=2d379d8cc7612c2a29670aa66d3d2b0a4007b951;p=vpp.git svm: rename fifo tx notifications to reflect use Type: refactor Change-Id: I651db44acdcb666a9c63e1037352cf88c68795b5 Signed-off-by: Florin Coras --- diff --git a/src/plugins/hs_apps/sapi/quic_echo.c b/src/plugins/hs_apps/sapi/quic_echo.c index 3c9ddcc102d..fa8e69febde 100644 --- a/src/plugins/hs_apps/sapi/quic_echo.c +++ b/src/plugins/hs_apps/sapi/quic_echo.c @@ -638,7 +638,7 @@ echo_session_dequeue_notify (echo_session_t * s) int rv; rv = app_send_io_evt_to_vpp (s->vpp_evt_q, s->rx_fifo->master_session_index, SESSION_IO_EVT_RX, SVM_Q_WAIT); - svm_fifo_clear_tx_ntf (s->rx_fifo); + svm_fifo_clear_deq_ntf (s->rx_fifo); if (rv) ECHO_FAIL ("app_send_io_evt_to_vpp errored %d", rv); } @@ -825,7 +825,7 @@ recv_data_chunk (echo_main_t * em, echo_session_t * s, u8 * rx_buf) n_read = app_recv_stream ((app_session_t *) s, rx_buf, vec_len (rx_buf)); if (n_read <= 0) return 0; - if (svm_fifo_needs_tx_ntf (s->rx_fifo, n_read)) + if (svm_fifo_needs_deq_ntf (s->rx_fifo, n_read)) echo_session_dequeue_notify (s); if (em->test_return_packets) diff --git a/src/plugins/quic/quic.c b/src/plugins/quic/quic.c index 93c01628e80..a990d0448bf 100644 --- a/src/plugins/quic/quic.c +++ b/src/plugins/quic/quic.c @@ -586,9 +586,9 @@ quic_accept_stream (void *s) quicly_reset_stream (stream, QUIC_APP_ALLOCATION_ERROR); return; } - svm_fifo_add_want_tx_ntf (stream_session->rx_fifo, - SVM_FIFO_WANT_TX_NOTIF_IF_FULL | - SVM_FIFO_WANT_TX_NOTIF_IF_EMPTY); + svm_fifo_add_want_deq_ntf (stream_session->rx_fifo, + SVM_FIFO_WANT_DEQ_NOTIF_IF_FULL | + SVM_FIFO_WANT_DEQ_NOTIF_IF_EMPTY); rv = app_worker_accept_notify (app_wrk, stream_session); if (rv) @@ -1243,9 +1243,9 @@ quic_connect_new_stream (session_endpoint_cfg_t * sep) return app_worker_connect_notify (app_wrk, NULL, sep->opaque); } - svm_fifo_add_want_tx_ntf (stream_session->rx_fifo, - SVM_FIFO_WANT_TX_NOTIF_IF_FULL | - SVM_FIFO_WANT_TX_NOTIF_IF_EMPTY); + svm_fifo_add_want_deq_ntf (stream_session->rx_fifo, + SVM_FIFO_WANT_DEQ_NOTIF_IF_FULL | + SVM_FIFO_WANT_DEQ_NOTIF_IF_EMPTY); stream_session->session_state = SESSION_STATE_READY; if (app_worker_connect_notify (app_wrk, stream_session, sep->opaque)) @@ -1842,7 +1842,7 @@ quic_custom_app_rx_callback (transport_connection_t * tc) session_t *stream_session = session_get (tc->s_index, tc->thread_index); QUIC_DBG (2, "Received app READ notification"); quic_ack_rx_data (stream_session); - svm_fifo_reset_tx_ntf (stream_session->rx_fifo); + svm_fifo_reset_has_deq_ntf (stream_session->rx_fifo); return 0; } diff --git a/src/plugins/tlsopenssl/tls_openssl.c b/src/plugins/tlsopenssl/tls_openssl.c index 4d4c4c37170..6cb8ff08b7f 100644 --- a/src/plugins/tlsopenssl/tls_openssl.c +++ b/src/plugins/tlsopenssl/tls_openssl.c @@ -333,7 +333,7 @@ openssl_ctx_write (tls_ctx_t * ctx, session_t * app_session) } } - if (svm_fifo_needs_tx_ntf (app_session->tx_fifo, wrote)) + if (svm_fifo_needs_deq_ntf (app_session->tx_fifo, wrote)) session_dequeue_notify (app_session); if (wrote < deq_max) diff --git a/src/svm/svm_fifo.h b/src/svm/svm_fifo.h index ce73be2d0f0..9b23d7e8e6f 100644 --- a/src/svm/svm_fifo.h +++ b/src/svm/svm_fifo.h @@ -40,13 +40,13 @@ typedef struct #define SVM_FIFO_INVALID_INDEX ((u32)~0) #define SVM_FIFO_MAX_EVT_SUBSCRIBERS 7 -typedef enum svm_fifo_tx_ntf_ +typedef enum svm_fifo_deq_ntf_ { - SVM_FIFO_NO_TX_NOTIF = 0, - SVM_FIFO_WANT_TX_NOTIF = 1, - SVM_FIFO_WANT_TX_NOTIF_IF_FULL = 2, - SVM_FIFO_WANT_TX_NOTIF_IF_EMPTY = 4, -} svm_fifo_tx_ntf_t; + SVM_FIFO_NO_DEQ_NOTIF = 0, /**< No notification requested */ + SVM_FIFO_WANT_DEQ_NOTIF = 1, /**< Notify on dequeue */ + SVM_FIFO_WANT_DEQ_NOTIF_IF_FULL = 2, /**< Notify on transition from full */ + SVM_FIFO_WANT_DEQ_NOTIF_IF_EMPTY = 4, /**< Notify on transition to empty */ +} svm_fifo_deq_ntf_t; typedef struct { @@ -100,8 +100,8 @@ typedef struct _svm_fifo u32 head; /**< fifo head position/byte */ svm_fifo_chunk_t *head_chunk; /**< tracks chunk where head lands */ svm_fifo_chunk_t *ooo_deq; /**< last chunk used for ooo dequeue */ - volatile u32 want_tx_ntf; /**< producer wants nudge */ - volatile u32 has_tx_ntf; + volatile u32 want_deq_ntf; /**< producer wants nudge */ + volatile u32 has_deq_ntf; CLIB_CACHE_LINE_ALIGN_MARK (producer); u32 tail; /**< fifo tail position/byte */ @@ -741,97 +741,97 @@ svm_fifo_unset_event (svm_fifo_t * f) } /** - * Set specific want tx notification flag + * Set specific want notification flag * - * For list of flags see @ref svm_fifo_tx_ntf_t + * For list of flags see @ref svm_fifo_deq_ntf_t * * @param f fifo * @param ntf_type type of notification requested */ static inline void -svm_fifo_add_want_tx_ntf (svm_fifo_t * f, u8 ntf_type) +svm_fifo_add_want_deq_ntf (svm_fifo_t * f, u8 ntf_type) { - f->want_tx_ntf |= ntf_type; + f->want_deq_ntf |= ntf_type; } /** - * Clear specific want tx notification flag + * Clear specific want notification flag * - * For list of flags see @ref svm_fifo_tx_ntf_t + * For list of flags see @ref svm_fifo_ntf_t * * @param f fifo * @param ntf_type type of notification to be cleared */ static inline void -svm_fifo_del_want_tx_ntf (svm_fifo_t * f, u8 ntf_type) +svm_fifo_del_want_deq_ntf (svm_fifo_t * f, u8 ntf_type) { - f->want_tx_ntf &= ~ntf_type; + f->want_deq_ntf &= ~ntf_type; } /** - * Clear the want tx notification flag and set has tx notification + * Clear the want notification flag and set has notification * - * Should be used after enqueuing a tx event. This clears the - * SVM_FIFO_WANT_TX_NOTIF flag but it does not clear - * SVM_FIFO_WANT_TX_NOTIF_IF_FULL. If the latter was set, has_tx_ntf is - * set to avoid enqueueing tx events for for all dequeue operations until + * Should be used after enqueuing an event. This clears the + * SVM_FIFO_WANT_NOTIF flag but it does not clear + * SVM_FIFO_WANT_NOTIF_IF_FULL. If the latter was set, has_ntf is + * set to avoid enqueueing events for for all dequeue operations until * it is manually cleared. * * @param f fifo */ static inline void -svm_fifo_clear_tx_ntf (svm_fifo_t * f) +svm_fifo_clear_deq_ntf (svm_fifo_t * f) { - /* Set the flag if want_tx_notif_if_full was the only ntf requested */ - f->has_tx_ntf = f->want_tx_ntf == SVM_FIFO_WANT_TX_NOTIF_IF_FULL; - svm_fifo_del_want_tx_ntf (f, SVM_FIFO_WANT_TX_NOTIF); + /* Set the flag if want_notif_if_full was the only ntf requested */ + f->has_deq_ntf = f->want_deq_ntf == SVM_FIFO_WANT_DEQ_NOTIF_IF_FULL; + svm_fifo_del_want_deq_ntf (f, SVM_FIFO_WANT_DEQ_NOTIF); } /** - * Clear has tx notification flag + * Clear has notification flag * - * The fifo generates only one event per SVM_FIFO_WANT_TX_NOTIF_IF_FULL - * request and sets has_tx_ntf. To received new events the flag must be + * The fifo generates only one event per SVM_FIFO_WANT_NOTIF_IF_FULL + * request and sets has_ntf. To received new events the flag must be * cleared using this function. * * @param f fifo */ static inline void -svm_fifo_reset_tx_ntf (svm_fifo_t * f) +svm_fifo_reset_has_deq_ntf (svm_fifo_t * f) { - f->has_tx_ntf = 0; + f->has_deq_ntf = 0; } /** - * Check if fifo needs tx notification + * Check if fifo needs dequeue notification * - * Determines based on tx notification request flags and state of the fifo if - * a tx io event should be generated. + * Determines based on notification request flags and state of the fifo if + * an event should be generated. * * @param f fifo * @param n_last_deq number of bytes last dequeued - * @return 1 if tx io event should be generated, 0 otherwise + * @return 1 if event should be generated, 0 otherwise */ static inline u8 -svm_fifo_needs_tx_ntf (svm_fifo_t * f, u32 n_last_deq) +svm_fifo_needs_deq_ntf (svm_fifo_t * f, u32 n_last_deq) { - u8 want_ntf = f->want_tx_ntf; + u8 want_ntf = f->want_deq_ntf; - if (PREDICT_TRUE (want_ntf == SVM_FIFO_NO_TX_NOTIF)) + if (PREDICT_TRUE (want_ntf == SVM_FIFO_NO_DEQ_NOTIF)) return 0; - else if (want_ntf & SVM_FIFO_WANT_TX_NOTIF) + else if (want_ntf & SVM_FIFO_WANT_DEQ_NOTIF) return 1; - if (want_ntf & SVM_FIFO_WANT_TX_NOTIF_IF_FULL) + if (want_ntf & SVM_FIFO_WANT_DEQ_NOTIF_IF_FULL) { u32 max_deq = svm_fifo_max_dequeue_cons (f); u32 nitems = f->nitems; - if (!f->has_tx_ntf && max_deq < nitems + if (!f->has_deq_ntf && max_deq < nitems && max_deq + n_last_deq >= nitems) return 1; } - if (want_ntf & SVM_FIFO_WANT_TX_NOTIF_IF_EMPTY) + if (want_ntf & SVM_FIFO_WANT_DEQ_NOTIF_IF_EMPTY) { - if (!f->has_tx_ntf && svm_fifo_is_empty (f)) + if (!f->has_deq_ntf && svm_fifo_is_empty (f)) return 1; } return 0; diff --git a/src/vcl/vppcom.c b/src/vcl/vppcom.c index 8a05e3fde16..9a351d8aca6 100644 --- a/src/vcl/vppcom.c +++ b/src/vcl/vppcom.c @@ -1535,11 +1535,11 @@ vppcom_session_read_internal (uint32_t session_handle, void *buf, int n, svm_fifo_unset_event (s->rx_fifo); /* Cut-through sessions might request tx notifications on rx fifos */ - if (PREDICT_FALSE (rx_fifo->want_tx_ntf)) + if (PREDICT_FALSE (rx_fifo->want_deq_ntf)) { app_send_io_evt_to_vpp (s->vpp_evt_q, s->rx_fifo->master_session_index, SESSION_IO_EVT_RX, SVM_Q_WAIT); - svm_fifo_reset_tx_ntf (s->rx_fifo); + svm_fifo_reset_has_deq_ntf (s->rx_fifo); } VDBG (2, "session %u[0x%llx]: read %d bytes from (%p)", s->session_index, @@ -1703,7 +1703,7 @@ vppcom_session_write_inline (uint32_t session_handle, void *buf, size_t n, } while (svm_fifo_is_full_prod (tx_fifo)) { - svm_fifo_add_want_tx_ntf (tx_fifo, SVM_FIFO_WANT_TX_NOTIF); + svm_fifo_add_want_deq_ntf (tx_fifo, SVM_FIFO_WANT_DEQ_NOTIF); if (vcl_session_is_closing (s)) return vcl_session_closing_error (s); svm_msg_q_lock (mq); @@ -2023,7 +2023,7 @@ vppcom_select (int n_bits, vcl_si_set * read_map, vcl_si_set * write_map, bits_set++; } else - svm_fifo_add_want_tx_ntf (session->tx_fifo, SVM_FIFO_WANT_TX_NOTIF); + svm_fifo_add_want_deq_ntf (session->tx_fifo, SVM_FIFO_WANT_DEQ_NOTIF); })); check_rd: @@ -2232,8 +2232,8 @@ vppcom_epoll_ctl (uint32_t vep_handle, int op, uint32_t session_handle, vep_session->vep.next_sh = session_handle; if (session->tx_fifo) - svm_fifo_add_want_tx_ntf (session->tx_fifo, - SVM_FIFO_WANT_TX_NOTIF_IF_FULL); + svm_fifo_add_want_deq_ntf (session->tx_fifo, + SVM_FIFO_WANT_DEQ_NOTIF_IF_FULL); VDBG (1, "EPOLL_CTL_ADD: vep_sh %u, sh %u, events 0x%x, data 0x%llx!", vep_handle, session_handle, event->events, event->data.u64); @@ -2317,7 +2317,7 @@ vppcom_epoll_ctl (uint32_t vep_handle, int op, uint32_t session_handle, session->is_vep_session = 0; if (session->tx_fifo) - svm_fifo_del_want_tx_ntf (session->tx_fifo, SVM_FIFO_NO_TX_NOTIF); + svm_fifo_del_want_deq_ntf (session->tx_fifo, SVM_FIFO_NO_DEQ_NOTIF); VDBG (1, "EPOLL_CTL_DEL: vep_idx %u, sh %u!", vep_handle, session_handle); @@ -2371,7 +2371,7 @@ vcl_epoll_wait_handle_mq_event (vcl_worker_t * wrk, session_event_t * e, add_event = 1; events[*num_ev].events |= EPOLLOUT; session_evt_data = session->vep.ev.data.u64; - svm_fifo_reset_tx_ntf (session->tx_fifo); + svm_fifo_reset_has_deq_ntf (session->tx_fifo); break; case SESSION_CTRL_EVT_ACCEPTED: session = vcl_session_accepted (wrk, diff --git a/src/vnet/session/session.c b/src/vnet/session/session.c index 3a6d7e29e45..3732e4cb708 100644 --- a/src/vnet/session/session.c +++ b/src/vnet/session/session.c @@ -449,7 +449,7 @@ session_tx_fifo_dequeue_drop (transport_connection_t * tc, u32 max_bytes) rv = svm_fifo_dequeue_drop (s->tx_fifo, max_bytes); - if (svm_fifo_needs_tx_ntf (s->tx_fifo, max_bytes)) + if (svm_fifo_needs_deq_ntf (s->tx_fifo, max_bytes)) session_dequeue_notify (s); return rv; @@ -549,7 +549,7 @@ session_dequeue_notify (session_t * s) return session_notify_subscribers (app_wrk->app_index, s, s->tx_fifo, SESSION_IO_EVT_TX); - svm_fifo_clear_tx_ntf (s->tx_fifo); + svm_fifo_clear_deq_ntf (s->tx_fifo); return 0; } diff --git a/src/vnet/session/session_node.c b/src/vnet/session/session_node.c index 8d01938ad85..8abfb2f510f 100644 --- a/src/vnet/session/session_node.c +++ b/src/vnet/session/session_node.c @@ -795,7 +795,7 @@ session_tx_fifo_read_and_snd_i (vlib_main_t * vm, vlib_node_runtime_t * node, if (svm_fifo_set_event (ctx->s->tx_fifo)) vec_add1 (wrk->pending_event_vector, *e); - if (svm_fifo_needs_tx_ntf (ctx->s->tx_fifo, ctx->max_len_to_snd)) + if (svm_fifo_needs_deq_ntf (ctx->s->tx_fifo, ctx->max_len_to_snd)) session_dequeue_notify (ctx->s); } return SESSION_TX_OK;