Netdev List
 help / color / mirror / Atom feed
From: Arseniy Krasnov <AVKrasnov@sberdevices.ru>
To: Stefano Garzarella <sgarzare@redhat.com>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Jason Wang <jasowang@redhat.com>,
	"David S. Miller" <davem@davemloft.net>,
	"Jakub Kicinski" <kuba@kernel.org>,
	Paolo Abeni <pabeni@redhat.com>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
	"virtualization@lists.linux-foundation.org" 
	<virtualization@lists.linux-foundation.org>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	kernel <kernel@sberdevices.ru>,
	Krasnov Arseniy <oxffffaa@gmail.com>,
	Arseniy Krasnov <AVKrasnov@sberdevices.ru>
Subject: [RFC PATCH v2 5/8] vhost/vsock: enable zerocopy callback
Date: Fri, 3 Jun 2022 05:39:23 +0000	[thread overview]
Message-ID: <04c01c03-647c-49c2-bfa3-23fd995ce5bf@sberdevices.ru> (raw)
In-Reply-To: <e37fdf9b-be80-35e1-ae7b-c9dfeae3e3db@sberdevices.ru>

This adds zerocopy callback to vhost transport.

Signed-off-by: Arseniy Krasnov <AVKrasnov@sberdevices.ru>
---
 drivers/vhost/vsock.c | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/drivers/vhost/vsock.c b/drivers/vhost/vsock.c
index 0dc2229f18f7..dcb8182f5ac9 100644
--- a/drivers/vhost/vsock.c
+++ b/drivers/vhost/vsock.c
@@ -481,6 +481,43 @@ static bool vhost_vsock_more_replies(struct vhost_vsock *vsock)
 	return val < vq->num;
 }
 
+static int vhost_transport_zerocopy_set(struct vsock_sock *vsk, bool enable)
+{
+	struct vhost_vsock *vsock;
+
+	rcu_read_lock();
+	vsock = vhost_vsock_get(vsk->remote_addr.svm_cid);
+
+	if (!vsock) {
+		rcu_read_unlock();
+		return -ENODEV;
+	}
+
+	vsock->zerocopy_rx_on = enable;
+	rcu_read_unlock();
+
+	return 0;
+}
+
+static int vhost_transport_zerocopy_get(struct vsock_sock *vsk)
+{
+	struct vhost_vsock *vsock;
+	bool res;
+
+	rcu_read_lock();
+	vsock = vhost_vsock_get(vsk->remote_addr.svm_cid);
+
+	if (!vsock) {
+		rcu_read_unlock();
+		return -ENODEV;
+	}
+
+	res = vsock->zerocopy_rx_on;
+	rcu_read_unlock();
+
+	return res;
+}
+
 static bool vhost_transport_seqpacket_allow(u32 remote_cid);
 
 static struct virtio_transport vhost_transport = {
@@ -508,6 +545,9 @@ static struct virtio_transport vhost_transport = {
 		.stream_rcvhiwat          = virtio_transport_stream_rcvhiwat,
 		.stream_is_active         = virtio_transport_stream_is_active,
 		.stream_allow             = virtio_transport_stream_allow,
+		.zerocopy_dequeue	  = virtio_transport_zerocopy_dequeue,
+		.rx_zerocopy_set	  = vhost_transport_zerocopy_set,
+		.rx_zerocopy_get	  = vhost_transport_zerocopy_get,
 
 		.seqpacket_dequeue        = virtio_transport_seqpacket_dequeue,
 		.seqpacket_enqueue        = virtio_transport_seqpacket_enqueue,
-- 
2.25.1

  parent reply	other threads:[~2022-06-03  5:40 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-03  5:27 [RFC PATCH v2 0/8] virtio/vsock: experimental zerocopy receive Arseniy Krasnov
2022-06-03  5:31 ` [RFC PATCH v2 1/8] virtio/vsock: rework packet allocation logic Arseniy Krasnov
2022-06-09  8:37   ` Stefano Garzarella
2022-06-03  5:33 ` [RFC PATCH v2 2/8] vhost/vsock: " Arseniy Krasnov
2022-06-09  8:38   ` Stefano Garzarella
2022-06-09 12:09     ` Arseniy Krasnov
2022-06-03  5:35 ` [RFC PATCH v2 3/8] af_vsock: add zerocopy receive logic Arseniy Krasnov
2022-06-09  8:39   ` Stefano Garzarella
2022-06-09 12:20     ` Arseniy Krasnov
2022-06-13  8:50       ` Stefano Garzarella
2022-06-03  5:37 ` [RFC PATCH v2 4/8] virtio/vsock: add transport zerocopy callback Arseniy Krasnov
2022-06-09  8:41   ` Stefano Garzarella
2022-06-09 12:23     ` Arseniy Krasnov
2022-06-03  5:39 ` Arseniy Krasnov [this message]
2022-06-03  5:41 ` [RFC PATCH v2 6/8] virtio/vsock: enable " Arseniy Krasnov
2022-06-03  5:43 ` [RFC PATCH v2 7/8] test/vsock: add receive zerocopy tests Arseniy Krasnov
2022-06-03  5:44 ` [RFC PATCH v2 8/8] test/vsock: vsock rx zerocopy utility Arseniy Krasnov
2022-06-08 15:59 ` [RFC PATCH v2 0/8] virtio/vsock: experimental zerocopy receive Zhao Liu
2022-06-09  8:54 ` Stefano Garzarella
2022-06-09 12:33   ` Arseniy Krasnov
2022-06-13  8:54     ` Stefano Garzarella
2022-06-14  4:23       ` Arseniy Krasnov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=04c01c03-647c-49c2-bfa3-23fd995ce5bf@sberdevices.ru \
    --to=avkrasnov@sberdevices.ru \
    --cc=davem@davemloft.net \
    --cc=jasowang@redhat.com \
    --cc=kernel@sberdevices.ru \
    --cc=kuba@kernel.org \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mst@redhat.com \
    --cc=netdev@vger.kernel.org \
    --cc=oxffffaa@gmail.com \
    --cc=pabeni@redhat.com \
    --cc=sgarzare@redhat.com \
    --cc=stefanha@redhat.com \
    --cc=virtualization@lists.linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox