Stefano Garzarella
2021-Mar-25 10:42 UTC
[RFC PATCH v7 17/22] vhost/vsock: setup SEQPACKET ops for transport
On Tue, Mar 23, 2021 at 04:14:18PM +0300, Arseny Krasnov wrote:>This also removes ignore of non-stream type of packets and adds >'seqpacket_allow()' callback. > >Signed-off-by: Arseny Krasnov <arseny.krasnov at kaspersky.com> >--- > drivers/vhost/vsock.c | 15 +++++++++++++-- > 1 file changed, 13 insertions(+), 2 deletions(-)Same thing for this transporter too, maybe we can merge with the patch "vhost/vsock: SEQPACKET feature bit support". Stefano> >diff --git a/drivers/vhost/vsock.c b/drivers/vhost/vsock.c >index 5e78fb719602..5af141772068 100644 >--- a/drivers/vhost/vsock.c >+++ b/drivers/vhost/vsock.c >@@ -354,8 +354,7 @@ vhost_vsock_alloc_pkt(struct vhost_virtqueue *vq, > return NULL; > } > >- if (le16_to_cpu(pkt->hdr.type) == VIRTIO_VSOCK_TYPE_STREAM) >- pkt->len = le32_to_cpu(pkt->hdr.len); >+ pkt->len = le32_to_cpu(pkt->hdr.len); > > /* No payload */ > if (!pkt->len) >@@ -398,6 +397,8 @@ static bool vhost_vsock_more_replies(struct vhost_vsock *vsock) > return val < vq->num; > } > >+static bool vhost_transport_seqpacket_allow(void); >+ > static struct virtio_transport vhost_transport = { > .transport = { > .module = THIS_MODULE, >@@ -424,6 +425,10 @@ static struct virtio_transport vhost_transport = { > .stream_is_active = virtio_transport_stream_is_active, > .stream_allow = virtio_transport_stream_allow, > >+ .seqpacket_dequeue = virtio_transport_seqpacket_dequeue, >+ .seqpacket_enqueue = virtio_transport_seqpacket_enqueue, >+ .seqpacket_allow = vhost_transport_seqpacket_allow, >+ > .notify_poll_in = virtio_transport_notify_poll_in, > .notify_poll_out = virtio_transport_notify_poll_out, > .notify_recv_init = virtio_transport_notify_recv_init, >@@ -439,8 +444,14 @@ static struct virtio_transport vhost_transport = { > }, > > .send_pkt = vhost_transport_send_pkt, >+ .seqpacket_allow = false > }; > >+static bool vhost_transport_seqpacket_allow(void) >+{ >+ return vhost_transport.seqpacket_allow; >+} >+ > static void vhost_vsock_handle_tx_kick(struct vhost_work *work) > { > struct vhost_virtqueue *vq = container_of(work, struct vhost_virtqueue, >-- >2.25.1 >