]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
smb: smbdirect: split out smbdirect_accept_negotiate_finish()
authorStefan Metzmacher <metze@samba.org>
Thu, 13 Nov 2025 12:10:24 +0000 (13:10 +0100)
committerSteve French <stfrench@microsoft.com>
Thu, 16 Apr 2026 02:58:20 +0000 (21:58 -0500)
This will make it easier to support the listen/accept socket interfaces
in the next steps.

Cc: Steve French <smfrench@gmail.com>
Cc: Tom Talpey <tom@talpey.com>
Cc: Long Li <longli@microsoft.com>
Cc: Namjae Jeon <linkinjeon@kernel.org>
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>
fs/smb/common/smbdirect/smbdirect_accept.c
fs/smb/common/smbdirect/smbdirect_internal.h

index 4baa2c1ad31eb24597f88d28b15aeb0979ab86e8..72ee80a185f6065d3e0b2e6926b87b8d87794978 100644 (file)
@@ -301,12 +301,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;
-       u16 new_credits;
-       int ret;
 
        if (sc->first_error)
                return;
@@ -459,6 +454,25 @@ static void smbdirect_accept_negotiate_recv_work(struct work_struct *work)
         */
        sp->max_fragmented_send_size = max_fragmented_size;
 
+       ntstatus = le32_to_cpu(STATUS_SUCCESS);
+
+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;
+       u16 new_credits;
+       int ret;
+
+       if (ntstatus)
+               goto not_supported;
+
        /*
         * Prepare for receiving data_transfer messages
         */
@@ -486,8 +500,6 @@ static void smbdirect_accept_negotiate_recv_work(struct work_struct *work)
         */
        new_credits = smbdirect_connection_grant_recv_credits(sc);
 
-       ntstatus = le32_to_cpu(STATUS_SUCCESS);
-
 not_supported:
        send_io = smbdirect_connection_alloc_send_io(sc);
        if (IS_ERR(send_io)) {
index ae6044ddeb598b749d7f7a91d406a4232d465be5..f8432c8c1a5f87fe7f12ff5ae4389f34a1a7d2d8 100644 (file)
@@ -132,4 +132,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__ */