]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
smb: smbdirect: introduce smbdirect_socket.recv_io.reassembly.*
authorStefan Metzmacher <metze@samba.org>
Tue, 5 Aug 2025 16:11:36 +0000 (18:11 +0200)
committerSteve French <stfrench@microsoft.com>
Wed, 6 Aug 2025 20:04:13 +0000 (15:04 -0500)
This will be used in common between client and server soon.

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>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/smb/common/smbdirect/smbdirect_socket.h

index 21a58e6078cb2f9ff92c325d29271b3f64413218..3ae834ca3af1164b6c1b0827392d463f05f49360 100644 (file)
@@ -60,6 +60,32 @@ struct smbdirect_socket {
                        struct list_head list;
                        spinlock_t lock;
                } free;
+
+               /*
+                * The list of arrived non-empty smbdirect_recv_io
+                * structures
+                *
+                * This represents the reassembly queue.
+                */
+               struct {
+                       struct list_head list;
+                       spinlock_t lock;
+                       wait_queue_head_t wait_queue;
+                       /* total data length of reassembly queue */
+                       int data_length;
+                       int queue_length;
+                       /* the offset to first buffer in reassembly queue */
+                       int first_entry_offset;
+                       /*
+                        * Indicate if we have received a full packet on the
+                        * connection This is used to identify the first SMBD
+                        * packet of a assembled payload (SMB packet) in
+                        * reassembly queue so we can return a RFC1002 length to
+                        * upper layer to indicate the length of the SMB packet
+                        * received
+                        */
+                       bool full_packet_received;
+               } reassembly;
        } recv_io;
 };