virtio/vsock: check SO_RCVLOWAT before wake up reader
authorArseniy Krasnov <AVKrasnov@sberdevices.ru>
Fri, 19 Aug 2022 05:39:24 +0000 (05:39 +0000)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 23 Aug 2022 08:43:11 +0000 (10:43 +0200)
This adds extra condition to wake up data reader: do it only when number
of readable bytes >= SO_RCVLOWAT. Otherwise, there is no sense to kick
user,because it will wait until SO_RCVLOWAT bytes will be dequeued. This
check is performed in vsock_data_ready().

Signed-off-by: Arseniy Krasnov <AVKrasnov@sberdevices.ru>
Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
net/vmw_vsock/virtio_transport_common.c

index 8f6356e..3586313 100644 (file)
@@ -1081,7 +1081,7 @@ virtio_transport_recv_connected(struct sock *sk,
        switch (le16_to_cpu(pkt->hdr.op)) {
        case VIRTIO_VSOCK_OP_RW:
                virtio_transport_recv_enqueue(vsk, pkt);
-               sk->sk_data_ready(sk);
+               vsock_data_ready(sk);
                return err;
        case VIRTIO_VSOCK_OP_CREDIT_REQUEST:
                virtio_transport_send_credit_update(vsk);