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