mirror of https://github.com/xemu-project/xemu.git
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:
parent
43725d4844
commit
0647098d2e
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue