vcl: minimize vpp to vcl rx events 39/28339/5
authorFlorin Coras <fcoras@cisco.com>
Thu, 13 Aug 2020 01:58:25 +0000 (18:58 -0700)
committerDave Barach <openvpp@barachs.net>
Fri, 14 Aug 2020 20:22:47 +0000 (20:22 +0000)
Type: improvement

Signed-off-by: Florin Coras <fcoras@cisco.com>
Change-Id: I2015162bd315927e45b9fe583324b1458fe69d8f

src/vcl/vppcom.c

index 1622409..d52d9a9 100644 (file)
@@ -1941,7 +1941,17 @@ vppcom_session_read_internal (uint32_t session_handle, void *buf, int n,
     n_read = app_recv_stream_raw (rx_fifo, buf, n, 0, peek);
 
   if (svm_fifo_is_empty_cons (rx_fifo))
-    svm_fifo_unset_event (s->rx_fifo);
+    {
+      svm_fifo_unset_event (s->rx_fifo);
+      if (!svm_fifo_is_empty_cons (rx_fifo)
+         && svm_fifo_set_event (s->rx_fifo) && is_nonblocking)
+       {
+         session_event_t *e;
+         vec_add2 (wrk->unhandled_evts_vector, e, 1);
+         e->event_type = SESSION_IO_EVT_RX;
+         e->session_index = s->session_index;
+       }
+    }
 
   /* Cut-through sessions might request tx notifications on rx fifos */
   if (PREDICT_FALSE (rx_fifo->want_deq_ntf))