tcp: force deschedule if no send space available
[vpp.git] / src / vnet / session / session.c
index 15d949c..8b268c0 100644 (file)
@@ -130,7 +130,8 @@ session_add_self_custom_tx_evt (transport_connection_t * tc, u8 has_prio)
   if (!(s->flags & SESSION_F_CUSTOM_TX))
     {
       s->flags |= SESSION_F_CUSTOM_TX;
-      if (svm_fifo_set_event (s->tx_fifo))
+      if (svm_fifo_set_event (s->tx_fifo)
+         || transport_connection_is_descheduled (tc))
        {
          session_worker_t *wrk;
          session_evt_elt_t *elt;
@@ -141,6 +142,7 @@ session_add_self_custom_tx_evt (transport_connection_t * tc, u8 has_prio)
            elt = session_evt_alloc_old (wrk);
          elt->evt.session_index = tc->s_index;
          elt->evt.event_type = SESSION_IO_EVT_TX;
+         tc->flags &= ~TRANSPORT_CONNECTION_F_DESCHED;
        }
     }
 }