]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
smb: smbdirect: add smbdirect_pdu.h with protocol definitions
authorStefan Metzmacher <metze@samba.org>
Wed, 28 May 2025 16:01:30 +0000 (18:01 +0200)
committerSteve French <stfrench@microsoft.com>
Tue, 3 Jun 2025 23:42:47 +0000 (18:42 -0500)
This is just a start moving into a common smbdirect layer.

It will be used in the next commits...

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: Hyunchul Lee <hyc.lee@gmail.com>
Cc: Meetakshi Setiya <meetakshisetiyaoss@gmail.com>
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_pdu.h [new file with mode: 0644]

diff --git a/fs/smb/common/smbdirect/smbdirect_pdu.h b/fs/smb/common/smbdirect/smbdirect_pdu.h
new file mode 100644 (file)
index 0000000..ae9fdb0
--- /dev/null
@@ -0,0 +1,55 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ *   Copyright (c) 2017 Stefan Metzmacher
+ */
+
+#ifndef __FS_SMB_COMMON_SMBDIRECT_SMBDIRECT_PDU_H__
+#define __FS_SMB_COMMON_SMBDIRECT_SMBDIRECT_PDU_H__
+
+#define SMBDIRECT_V1 0x0100
+
+/* SMBD negotiation request packet [MS-SMBD] 2.2.1 */
+struct smbdirect_negotiate_req {
+       __le16 min_version;
+       __le16 max_version;
+       __le16 reserved;
+       __le16 credits_requested;
+       __le32 preferred_send_size;
+       __le32 max_receive_size;
+       __le32 max_fragmented_size;
+} __packed;
+
+/* SMBD negotiation response packet [MS-SMBD] 2.2.2 */
+struct smbdirect_negotiate_resp {
+       __le16 min_version;
+       __le16 max_version;
+       __le16 negotiated_version;
+       __le16 reserved;
+       __le16 credits_requested;
+       __le16 credits_granted;
+       __le32 status;
+       __le32 max_readwrite_size;
+       __le32 preferred_send_size;
+       __le32 max_receive_size;
+       __le32 max_fragmented_size;
+} __packed;
+
+#define SMBDIRECT_DATA_MIN_HDR_SIZE 0x14
+#define SMBDIRECT_DATA_OFFSET       0x18
+
+#define SMBDIRECT_FLAG_RESPONSE_REQUESTED 0x0001
+
+/* SMBD data transfer packet with payload [MS-SMBD] 2.2.3 */
+struct smbdirect_data_transfer {
+       __le16 credits_requested;
+       __le16 credits_granted;
+       __le16 flags;
+       __le16 reserved;
+       __le32 remaining_data_length;
+       __le32 data_offset;
+       __le32 data_length;
+       __le32 padding;
+       __u8 buffer[];
+} __packed;
+
+#endif /* __FS_SMB_COMMON_SMBDIRECT_SMBDIRECT_PDU_H__ */