[PATCH v4 140/145] smb: smbdirect: split out smbdirect_accept_negotiate_finish()
Stefan Metzmacher
metze at samba.org
Tue Nov 25 17:56:26 UTC 2025
This will make it easier to support the listen/accept socket interfaces
in the next steps.
Cc: Steve French <smfrench at gmail.com>
Cc: Tom Talpey <tom at talpey.com>
Cc: Long Li <longli at microsoft.com>
Cc: Namjae Jeon <linkinjeon at kernel.org>
Cc: linux-cifs at vger.kernel.org
Cc: samba-technical at lists.samba.org
Signed-off-by: Stefan Metzmacher <metze at samba.org>
---
fs/smb/common/smbdirect/smbdirect_accept.c | 24 +++++++++++++++-----
fs/smb/common/smbdirect/smbdirect_internal.h | 2 ++
2 files changed, 20 insertions(+), 6 deletions(-)
diff --git a/fs/smb/common/smbdirect/smbdirect_accept.c b/fs/smb/common/smbdirect/smbdirect_accept.c
index 2ff61a4617be..d8818a0a8286 100644
--- a/fs/smb/common/smbdirect/smbdirect_accept.c
+++ b/fs/smb/common/smbdirect/smbdirect_accept.c
@@ -292,11 +292,7 @@ static void smbdirect_accept_negotiate_recv_work(struct work_struct *work)
u32 preferred_send_size;
u32 max_receive_size;
u32 max_fragmented_size;
- struct smbdirect_send_io *send_io = NULL;
- struct smbdirect_negotiate_resp *nrep;
u32 ntstatus;
- int posted;
- int ret;
/*
* make sure we won't start again...
@@ -397,6 +393,24 @@ static void smbdirect_accept_negotiate_recv_work(struct work_struct *work)
*/
sp->max_fragmented_send_size = max_fragmented_size;
+ ntstatus = 0; /* NT_STATUS_OK */
+
+not_supported:
+ smbdirect_accept_negotiate_finish(sc, ntstatus);
+}
+
+void smbdirect_accept_negotiate_finish(struct smbdirect_socket *sc, u32 ntstatus)
+{
+ const struct smbdirect_socket_parameters *sp = &sc->parameters;
+ struct smbdirect_recv_io *recv_io;
+ struct smbdirect_send_io *send_io;
+ struct smbdirect_negotiate_resp *nrep;
+ int posted;
+ int ret;
+
+ if (ntstatus)
+ goto not_supported;
+
/*
* Prepare for receiving data_transfer messages
*/
@@ -424,8 +438,6 @@ static void smbdirect_accept_negotiate_recv_work(struct work_struct *work)
*/
atomic_set(&sc->recv_io.credits.count, posted);
- ntstatus = 0; /* NT_STATUS_OK */
-
not_supported:
send_io = smbdirect_connection_alloc_send_io(sc);
if (IS_ERR(send_io)) {
diff --git a/fs/smb/common/smbdirect/smbdirect_internal.h b/fs/smb/common/smbdirect/smbdirect_internal.h
index 4cb5c8f07e8c..8a032078175c 100644
--- a/fs/smb/common/smbdirect/smbdirect_internal.h
+++ b/fs/smb/common/smbdirect/smbdirect_internal.h
@@ -139,4 +139,6 @@ int smbdirect_connection_create_mr_list(struct smbdirect_socket *sc);
__SMBDIRECT_PRIVATE__
void smbdirect_connection_destroy_mr_list(struct smbdirect_socket *sc);
+void smbdirect_accept_negotiate_finish(struct smbdirect_socket *sc, u32 ntstatus);
+
#endif /* __FS_SMB_COMMON_SMBDIRECT_INTERNAL_H__ */
--
2.43.0
More information about the samba-technical
mailing list