summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2025-08-15 12:31:50 +0200
committerSteve French <stfrench@microsoft.com>2025-09-28 18:29:52 -0500
commitbe3c1d032fad608f48b428854694422633c4b004 (patch)
treea9587934c71824568fe0bd85dd2661a25b58dae9
parentd70e45823961e13af10f44a6a16c5c5a357ccdfb (diff)
downloadlinux-be3c1d032fad608f48b428854694422633c4b004.tar.gz
linux-be3c1d032fad608f48b428854694422633c4b004.zip
smb: server: make use of smbdirect_socket_parameters.negotiate_timeout_msec and change to 5s
The server negotiations timer is just 5 seconds in Windows, so use the same. See [MS-SMBD] 3.1.7.2 Connection Arrival. Cc: Namjae Jeon <linkinjeon@kernel.org> Cc: Steve French <smfrench@gmail.com> Cc: Tom Talpey <tom@talpey.com> Cc: linux-cifs@vger.kernel.org Cc: samba-technical@lists.samba.org Signed-off-by: Stefan Metzmacher <metze@samba.org> Acked-by: Namjae Jeon <linkinjeon@kernel.org> Signed-off-by: Steve French <stfrench@microsoft.com>
-rw-r--r--fs/smb/server/transport_rdma.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/smb/server/transport_rdma.c b/fs/smb/server/transport_rdma.c
index 0367db232ea8..7d3cf1d22af0 100644
--- a/fs/smb/server/transport_rdma.c
+++ b/fs/smb/server/transport_rdma.c
@@ -33,8 +33,8 @@
#define SMB_DIRECT_VERSION_LE cpu_to_le16(SMBDIRECT_V1)
-/* SMB_DIRECT negotiation timeout in seconds */
-#define SMB_DIRECT_NEGOTIATE_TIMEOUT 120
+/* SMB_DIRECT negotiation timeout (for the server) in seconds */
+#define SMB_DIRECT_NEGOTIATE_TIMEOUT 5
/*
* Default maximum number of RDMA read/write outstanding on this connection
@@ -300,6 +300,7 @@ static struct smb_direct_transport *alloc_transport(struct rdma_cm_id *cm_id)
INIT_WORK(&sc->disconnect_work, smb_direct_disconnect_rdma_work);
+ sp->negotiate_timeout_msec = SMB_DIRECT_NEGOTIATE_TIMEOUT * 1000;
sp->recv_credit_max = smb_direct_receive_credit_max;
sp->send_credit_target = smb_direct_send_credit_target;
sp->max_send_size = smb_direct_max_send_size;
@@ -2022,7 +2023,7 @@ static int smb_direct_prepare(struct ksmbd_transport *t)
sc->status != SMBDIRECT_SOCKET_RDMA_CONNECT_NEEDED &&
sc->status != SMBDIRECT_SOCKET_RDMA_CONNECT_RUNNING &&
sc->status != SMBDIRECT_SOCKET_NEGOTIATE_NEEDED,
- SMB_DIRECT_NEGOTIATE_TIMEOUT * HZ);
+ msecs_to_jiffies(sp->negotiate_timeout_msec));
if (ret <= 0 || sc->status != SMBDIRECT_SOCKET_NEGOTIATE_RUNNING)
return ret < 0 ? ret : -ETIMEDOUT;