mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 06:01:57 +00:00
docs: net: description of MSG_ZEROCOPY for AF_VSOCK
This adds description of MSG_ZEROCOPY flag support for AF_VSOCK type of socket. Signed-off-by: Arseniy Krasnov <avkrasnov@salutedevices.com> Reviewed-by: Stefano Garzarella <sgarzare@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
e0718bd82e
commit
bac2cac12c
@ -7,7 +7,8 @@ Intro
|
||||
=====
|
||||
|
||||
The MSG_ZEROCOPY flag enables copy avoidance for socket send calls.
|
||||
The feature is currently implemented for TCP and UDP sockets.
|
||||
The feature is currently implemented for TCP, UDP and VSOCK (with
|
||||
virtio transport) sockets.
|
||||
|
||||
|
||||
Opportunity and Caveats
|
||||
@ -174,7 +175,9 @@ read_notification() call in the previous snippet. A notification
|
||||
is encoded in the standard error format, sock_extended_err.
|
||||
|
||||
The level and type fields in the control data are protocol family
|
||||
specific, IP_RECVERR or IPV6_RECVERR.
|
||||
specific, IP_RECVERR or IPV6_RECVERR (for TCP or UDP socket).
|
||||
For VSOCK socket, cmsg_level will be SOL_VSOCK and cmsg_type will be
|
||||
VSOCK_RECVERR.
|
||||
|
||||
Error origin is the new type SO_EE_ORIGIN_ZEROCOPY. ee_errno is zero,
|
||||
as explained before, to avoid blocking read and write system calls on
|
||||
@ -235,12 +238,15 @@ Implementation
|
||||
Loopback
|
||||
--------
|
||||
|
||||
For TCP and UDP:
|
||||
Data sent to local sockets can be queued indefinitely if the receive
|
||||
process does not read its socket. Unbound notification latency is not
|
||||
acceptable. For this reason all packets generated with MSG_ZEROCOPY
|
||||
that are looped to a local socket will incur a deferred copy. This
|
||||
includes looping onto packet sockets (e.g., tcpdump) and tun devices.
|
||||
|
||||
For VSOCK:
|
||||
Data path sent to local sockets is the same as for non-local sockets.
|
||||
|
||||
Testing
|
||||
=======
|
||||
@ -254,3 +260,6 @@ instance when run with msg_zerocopy.sh between a veth pair across
|
||||
namespaces, the test will not show any improvement. For testing, the
|
||||
loopback restriction can be temporarily relaxed by making
|
||||
skb_orphan_frags_rx identical to skb_orphan_frags.
|
||||
|
||||
For VSOCK type of socket example can be found in
|
||||
tools/testing/vsock/vsock_test_zerocopy.c.
|
||||
|
Loading…
Reference in New Issue
Block a user