On Tue, Aug 10, 2021 at 02:39:53PM +0300, Arseny Krasnov wrote:

The title is confusing, we are renaming EOR in EOM.

This bit is used to mark end of messages('EOM' - end of message), while
'VIRIO_VSOCK_SEQ_EOR' is used to pass MSG_EOR. Also rename 'record' to
'message' in implementation as it is different things.

Signed-off-by: Arseny Krasnov <[email protected]>
---
drivers/vhost/vsock.c                   | 12 ++++++------
include/uapi/linux/virtio_vsock.h       |  3 ++-
net/vmw_vsock/virtio_transport_common.c | 14 +++++++-------
3 files changed, 15 insertions(+), 14 deletions(-)

diff --git a/drivers/vhost/vsock.c b/drivers/vhost/vsock.c
index f249622ef11b..feaf650affbe 100644
--- a/drivers/vhost/vsock.c
+++ b/drivers/vhost/vsock.c
@@ -178,15 +178,15 @@ vhost_transport_do_send_pkt(struct vhost_vsock *vsock,
                         * small rx buffers, headers of packets in rx queue are
* created dynamically and are initialized with header
                         * of current packet(except length). But in case of
-                        * SOCK_SEQPACKET, we also must clear record delimeter
-                        * bit(VIRTIO_VSOCK_SEQ_EOR). Otherwise, instead of one
-                        * packet with delimeter(which marks end of record),
+                        * SOCK_SEQPACKET, we also must clear message delimeter
+                        * bit(VIRTIO_VSOCK_SEQ_EOM). Otherwise, instead of one
+                        * packet with delimeter(which marks end of message),
                         * there will be sequence of packets with delimeter
                         * bit set. After initialized header will be copied to
                         * rx buffer, this bit will be restored.
                         */
-                       if (le32_to_cpu(pkt->hdr.flags) & VIRTIO_VSOCK_SEQ_EOR) 
{
-                               pkt->hdr.flags &= 
~cpu_to_le32(VIRTIO_VSOCK_SEQ_EOR);
+                       if (le32_to_cpu(pkt->hdr.flags) & VIRTIO_VSOCK_SEQ_EOM) 
{
+                               pkt->hdr.flags &= 
~cpu_to_le32(VIRTIO_VSOCK_SEQ_EOM);
                                restore_flag = true;
                        }
                }
@@ -225,7 +225,7 @@ vhost_transport_do_send_pkt(struct vhost_vsock *vsock,
                 */
                if (pkt->off < pkt->len) {
                        if (restore_flag)
-                               pkt->hdr.flags |= 
cpu_to_le32(VIRTIO_VSOCK_SEQ_EOR);
+                               pkt->hdr.flags |= 
cpu_to_le32(VIRTIO_VSOCK_SEQ_EOM);

                        /* We are queueing the same virtio_vsock_pkt to handle
                         * the remaining bytes, and we want to deliver it
diff --git a/include/uapi/linux/virtio_vsock.h 
b/include/uapi/linux/virtio_vsock.h
index 3dd3555b2740..64738838bee5 100644
--- a/include/uapi/linux/virtio_vsock.h
+++ b/include/uapi/linux/virtio_vsock.h
@@ -97,7 +97,8 @@ enum virtio_vsock_shutdown {

/* VIRTIO_VSOCK_OP_RW flags values */
enum virtio_vsock_rw {
-       VIRTIO_VSOCK_SEQ_EOR = 1,
+       VIRTIO_VSOCK_SEQ_EOM = 1,
+       VIRTIO_VSOCK_SEQ_EOR = 2,
        ^
I think is better to add this new flag in a separate patch.

};

#endif /* _UAPI_LINUX_VIRTIO_VSOCK_H */
diff --git a/net/vmw_vsock/virtio_transport_common.c 
b/net/vmw_vsock/virtio_transport_common.c
index 081e7ae93cb1..4d5a93beceb0 100644
--- a/net/vmw_vsock/virtio_transport_common.c
+++ b/net/vmw_vsock/virtio_transport_common.c
@@ -77,7 +77,7 @@ virtio_transport_alloc_pkt(struct virtio_vsock_pkt_info *info,

                if (msg_data_left(info->msg) == 0 &&
                    info->type == VIRTIO_VSOCK_TYPE_SEQPACKET)
-                       pkt->hdr.flags |= cpu_to_le32(VIRTIO_VSOCK_SEQ_EOR);
+                       pkt->hdr.flags |= cpu_to_le32(VIRTIO_VSOCK_SEQ_EOM);
        }

        trace_virtio_transport_alloc_pkt(src_cid, src_port,
@@ -457,7 +457,7 @@ static int virtio_transport_seqpacket_do_dequeue(struct 
vsock_sock *vsk,
                                dequeued_len += pkt_len;
                }

-               if (le32_to_cpu(pkt->hdr.flags) & VIRTIO_VSOCK_SEQ_EOR) {
+               if (le32_to_cpu(pkt->hdr.flags) & VIRTIO_VSOCK_SEQ_EOM) {
                        msg_ready = true;
                        vvs->msg_count--;
                }
@@ -1029,7 +1029,7 @@ virtio_transport_recv_enqueue(struct vsock_sock *vsk,
                goto out;
        }

-       if (le32_to_cpu(pkt->hdr.flags) & VIRTIO_VSOCK_SEQ_EOR)
+       if (le32_to_cpu(pkt->hdr.flags) & VIRTIO_VSOCK_SEQ_EOM)
                vvs->msg_count++;

        /* Try to copy small packets into the buffer of last packet queued,
@@ -1044,12 +1044,12 @@ virtio_transport_recv_enqueue(struct vsock_sock *vsk,

                /* If there is space in the last packet queued, we copy the
                 * new packet in its buffer. We avoid this if the last packet
-                * queued has VIRTIO_VSOCK_SEQ_EOR set, because this is
-                * delimiter of SEQPACKET record, so 'pkt' is the first packet
-                * of a new record.
+                * queued has VIRTIO_VSOCK_SEQ_EOM set, because this is
+                * delimiter of SEQPACKET message, so 'pkt' is the first packet
+                * of a new message.
                 */
                if ((pkt->len <= last_pkt->buf_len - last_pkt->len) &&
-                   !(le32_to_cpu(last_pkt->hdr.flags) & VIRTIO_VSOCK_SEQ_EOR)) 
{
+                   !(le32_to_cpu(last_pkt->hdr.flags) & VIRTIO_VSOCK_SEQ_EOM)) 
{
                        memcpy(last_pkt->buf + last_pkt->len, pkt->buf,
                               pkt->len);
                        last_pkt->len += pkt->len;
--
2.25.1


The rest LGTM!

Thanks,
Stefano

_______________________________________________
Virtualization mailing list
[email protected]
https://lists.linuxfoundation.org/mailman/listinfo/virtualization

Reply via email to