session: deschedule sessions with no data to send 64/34864/2
authorFlorin Coras <fcoras@cisco.com>
Mon, 10 Jan 2022 02:18:10 +0000 (18:18 -0800)
committerFlorin Coras <florin.coras@gmail.com>
Mon, 10 Jan 2022 03:12:46 +0000 (03:12 +0000)
commit9bd71be3eef15fa7a037debf9713f7d8db62935f
treec0581e7c4907b213be82bd0bb0f0d296fc7e6d29
parent93dd58c8fb020870c770c2a4aa55dcc288fa2035
session: deschedule sessions with no data to send

This ensures the scheduler always tracks sessions that are descheduled,
i.e., do not have events in the old io events list. When app retries to
send, clear descheduled flag and potentially the pacer.

Consequently, transports no longer need to reset the pacer when
sessions are rescheduled after a long app tx pause.

This also fixes a tcp bug whereby the pacer was reset too often when
snd_una was equal to snd_nxt as there was no way to distinguish betwen
app tx breaks and congestion.

Type: improvement

Signed-off-by: Florin Coras <fcoras@cisco.com>
Change-Id: Id3cc6c98cd76299e15030e504380dcf3c04c5189
src/vnet/session/session_node.c
src/vnet/session/transport.h
src/vnet/tcp/tcp_output.c