]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
smb: smbdirect: introduce smbdirect_socket_init()
authorStefan Metzmacher <metze@samba.org>
Fri, 8 Aug 2025 13:08:33 +0000 (15:08 +0200)
committerSteve French <stfrench@microsoft.com>
Sun, 28 Sep 2025 23:29:47 +0000 (18:29 -0500)
This will make it easier to keep the initialization
in a single place.

For now it's an __always_inline function as we only
share the header files. Once move to common functions
we'll have a dedicated smbdirect.ko that exports functions...

Cc: Steve French <smfrench@gmail.com>
Cc: Tom Talpey <tom@talpey.com>
Cc: Long Li <longli@microsoft.com>
Acked-by: 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>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/smb/common/smbdirect/smbdirect_socket.h

index a69b9649b88e2bed9daf1036c63f1e1a2fbe25dd..4e2b87208d9182250c25c9a015a08ba4681d1eec 100644 (file)
@@ -136,6 +136,24 @@ struct smbdirect_socket {
        } recv_io;
 };
 
+static __always_inline void smbdirect_socket_init(struct smbdirect_socket *sc)
+{
+       /*
+        * This also sets status = SMBDIRECT_SOCKET_CREATED
+        */
+       BUILD_BUG_ON(SMBDIRECT_SOCKET_CREATED != 0);
+       memset(sc, 0, sizeof(*sc));
+
+       init_waitqueue_head(&sc->status_wait);
+
+       INIT_LIST_HEAD(&sc->recv_io.free.list);
+       spin_lock_init(&sc->recv_io.free.lock);
+
+       INIT_LIST_HEAD(&sc->recv_io.reassembly.list);
+       spin_lock_init(&sc->recv_io.reassembly.lock);
+       init_waitqueue_head(&sc->recv_io.reassembly.wait_queue);
+}
+
 struct smbdirect_send_io {
        struct smbdirect_socket *socket;
        struct ib_cqe cqe;