]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ksmbd: smbd: change the default maximum read/write, receive size
authorHyunchul Lee <hyc.lee@gmail.com>
Mon, 18 Dec 2023 15:32:40 +0000 (00:32 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 23 Dec 2023 09:41:50 +0000 (10:41 +0100)
[ Upstream commit 4d02c4fdc0e256b493f9a3b604c7ff18f0019f17 ]

Due to restriction that cannot handle multiple
buffer descriptor structures, decrease the maximum
read/write size for Windows clients.

And set the maximum fragmented receive size
in consideration of the receive queue size.

Acked-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Hyunchul Lee <hyc.lee@gmail.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/ksmbd/transport_rdma.c

index 5901c4a2ece1d7f3fbd7103bab3cf1488a437a8a..7e85c2767cd03de17c944914156149ec75c417b7 100644 (file)
@@ -1914,7 +1914,9 @@ static int smb_direct_prepare(struct ksmbd_transport *t)
        st->max_send_size = min_t(int, st->max_send_size,
                                  le32_to_cpu(req->max_receive_size));
        st->max_fragmented_send_size =
-                       le32_to_cpu(req->max_fragmented_size);
+               le32_to_cpu(req->max_fragmented_size);
+       st->max_fragmented_recv_size =
+               (st->recv_credit_max * st->max_recv_size) / 2;
 
        ret = smb_direct_send_negotiate_response(st, ret);
 out: