Stefano Garzarella
2023-Oct-03 16:23 UTC
[PATCH net-next v2 09/12] docs: net: description of MSG_ZEROCOPY for AF_VSOCK
On Sun, Oct 01, 2023 at 12:03:05AM +0300, Arseniy Krasnov wrote:>This adds description of MSG_ZEROCOPY flag support for AF_VSOCK type of >socket. > >Signed-off-by: Arseniy Krasnov <avkrasnov at salutedevices.com> >--- > Documentation/networking/msg_zerocopy.rst | 13 +++++++++++-- > 1 file changed, 11 insertions(+), 2 deletions(-)Reviewed-by: Stefano Garzarella <sgarzare at redhat.com>> >diff --git a/Documentation/networking/msg_zerocopy.rst b/Documentation/networking/msg_zerocopy.rst >index b3ea96af9b49..78fb70e748b7 100644 >--- a/Documentation/networking/msg_zerocopy.rst >+++ b/Documentation/networking/msg_zerocopy.rst >@@ -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. >-- >2.25.1 >