RE: [PATCH] hv_utils: Set the maximum packet size for VSS driver to the length of the receive buffer

From: Michael Kelley
Date: Wed Aug 25 2021 - 14:33:29 EST


From: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> Sent: Wednesday, August 25, 2021 6:39 AM
>
> Commit adae1e931acd ("Drivers: hv: vmbus: Copy packets sent by Hyper-V out
> of the ring buffer") introduced a notion of maximum packet size and for
> KVM and FCOPY drivers set it to the length of the receive buffer. VSS
> driver wasn't updated, this means that the maximum packet size is now
> VMBUS_DEFAULT_MAX_PKT_SIZE (4k). Apparently, this is not enough. I'm
> observing a packet of 6304 bytes which is being truncated to 4096. When
> VSS driver tries to read next packet from ring buffer it starts from the
> wrong offset and receives garbage.
>
> Set the maximum packet size to 'HV_HYP_PAGE_SIZE * 2' in VSS driver. This
> matches the length of the receive buffer and is in line with other utils
> drivers.
>
> Fixes: adae1e931acd ("Drivers: hv: vmbus: Copy packets sent by Hyper-V out of the ring buffer")
> Signed-off-by: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx>
> ---
> drivers/hv/hv_snapshot.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/hv/hv_snapshot.c b/drivers/hv/hv_snapshot.c
> index 2267bd4c3472..6018b9d1b1fb 100644
> --- a/drivers/hv/hv_snapshot.c
> +++ b/drivers/hv/hv_snapshot.c
> @@ -375,6 +375,7 @@ hv_vss_init(struct hv_util_service *srv)
> }
> recv_buffer = srv->recv_buffer;
> vss_transaction.recv_channel = srv->channel;
> + vss_transaction.recv_channel->max_pkt_size = HV_HYP_PAGE_SIZE * 2;
>
> /*
> * When this driver loads, the user level daemon that
> --
> 2.31.1

Reviewed-by: Michael Kelley <mikelley@xxxxxxxxxxxxx>