docs: vhost-user: rewrite section on ring state machine

This section is using the word "back-end" to refer to the
"slave's back-end", and talking about the "client" for
what the rest of the document calls the "slave".

Rework it to free the use of the term "back-end", which in
the next patch will replace "slave".

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-Id: <20210226143413.188046-3-pbonzini@redhat.com>
Message-Id: <20220321153037.3622127-6-alex.bennee@linaro.org>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
Paolo Bonzini 2022-03-21 15:30:29 +00:00 committed by Michael S. Tsirkin
parent 43725d4844
commit 0647098d2e
1 changed files with 21 additions and 25 deletions

View File

@ -332,40 +332,36 @@ bit was dedicated for this purpose::
#define VHOST_USER_F_PROTOCOL_FEATURES 30
Starting and stopping rings
---------------------------
Ring states
-----------
Client must only process each ring when it is started.
Rings can be in one of three states:
Client must only pass data between the ring and the backend, when the
ring is enabled.
* stopped: the slave must not process the ring at all.
If ring is started but disabled, client must process the ring without
talking to the backend.
* started but disabled: the slave must process the ring without
causing any side effects. For example, for a networking device,
in the disabled state the slave must not supply any new RX packets,
but must process and discard any TX packets.
For example, for a networking device, in the disabled state client
must not supply any new RX packets, but must process and discard any
TX packets.
* started and enabled.
Each ring is initialized in a stopped state. The slave must start
ring upon receiving a kick (that is, detecting that file descriptor is
readable) on the descriptor specified by ``VHOST_USER_SET_VRING_KICK``
or receiving the in-band message ``VHOST_USER_VRING_KICK`` if negotiated,
and stop ring upon receiving ``VHOST_USER_GET_VRING_BASE``.
Rings can be enabled or disabled by ``VHOST_USER_SET_VRING_ENABLE``.
If ``VHOST_USER_F_PROTOCOL_FEATURES`` has not been negotiated, the
ring is initialized in an enabled state.
ring starts directly in the enabled state.
If ``VHOST_USER_F_PROTOCOL_FEATURES`` has been negotiated, the ring is
initialized in a disabled state. Client must not pass data to/from the
backend until ring is enabled by ``VHOST_USER_SET_VRING_ENABLE`` with
parameter 1, or after it has been disabled by
``VHOST_USER_SET_VRING_ENABLE`` with parameter 0.
initialized in a disabled state and is enabled by
``VHOST_USER_SET_VRING_ENABLE`` with parameter 1.
Each ring is initialized in a stopped state, client must not process
it until ring is started, or after it has been stopped.
Client must start ring upon receiving a kick (that is, detecting that
file descriptor is readable) on the descriptor specified by
``VHOST_USER_SET_VRING_KICK`` or receiving the in-band message
``VHOST_USER_VRING_KICK`` if negotiated, and stop ring upon receiving
``VHOST_USER_GET_VRING_BASE``.
While processing the rings (whether they are enabled or not), client
While processing the rings (whether they are enabled or not), the slave
must support changing some configuration aspects on the fly.
Multiple queue support