1 /* SPDX-License-Identifier: GPL-2.0-or-later */ 2 /* 3 * Copyright (c) 2017 Stefan Metzmacher 4 */ 5 6 #ifndef __FS_SMB_COMMON_SMBDIRECT_SMBDIRECT_PDU_H__ 7 #define __FS_SMB_COMMON_SMBDIRECT_SMBDIRECT_PDU_H__ 8 9 #define SMBDIRECT_V1 0x0100 10 11 /* SMBD minimum receive size and fragmented sized defined in [MS-SMBD] */ 12 #define SMBDIRECT_MIN_RECEIVE_SIZE 128 13 #define SMBDIRECT_MIN_FRAGMENTED_SIZE 131072 14 15 /* SMBD negotiation request packet [MS-SMBD] 2.2.1 */ 16 struct smbdirect_negotiate_req { 17 __le16 min_version; 18 __le16 max_version; 19 __le16 reserved; 20 __le16 credits_requested; 21 __le32 preferred_send_size; 22 __le32 max_receive_size; 23 __le32 max_fragmented_size; 24 } __packed; 25 26 /* SMBD negotiation response packet [MS-SMBD] 2.2.2 */ 27 struct smbdirect_negotiate_resp { 28 __le16 min_version; 29 __le16 max_version; 30 __le16 negotiated_version; 31 __le16 reserved; 32 __le16 credits_requested; 33 __le16 credits_granted; 34 __le32 status; 35 __le32 max_readwrite_size; 36 __le32 preferred_send_size; 37 __le32 max_receive_size; 38 __le32 max_fragmented_size; 39 } __packed; 40 41 #define SMBDIRECT_DATA_MIN_HDR_SIZE 0x14 42 #define SMBDIRECT_DATA_OFFSET 0x18 43 44 #define SMBDIRECT_FLAG_RESPONSE_REQUESTED 0x0001 45 46 /* SMBD data transfer packet with payload [MS-SMBD] 2.2.3 */ 47 struct smbdirect_data_transfer { 48 __le16 credits_requested; 49 __le16 credits_granted; 50 __le16 flags; 51 __le16 reserved; 52 __le32 remaining_data_length; 53 __le32 data_offset; 54 __le32 data_length; 55 __le32 padding; 56 __u8 buffer[]; 57 } __packed; 58 59 #endif /* __FS_SMB_COMMON_SMBDIRECT_SMBDIRECT_PDU_H__ */ 60