1*1249c01aSStefan Metzmacher /* SPDX-License-Identifier: GPL-2.0-or-later */ 2*1249c01aSStefan Metzmacher /* 3*1249c01aSStefan Metzmacher * Copyright (C) 2025 Stefan Metzmacher 4*1249c01aSStefan Metzmacher */ 5*1249c01aSStefan Metzmacher 6*1249c01aSStefan Metzmacher #ifndef __FS_SMB_COMMON_SMBDIRECT_SMBDIRECT_H__ 7*1249c01aSStefan Metzmacher #define __FS_SMB_COMMON_SMBDIRECT_SMBDIRECT_H__ 8*1249c01aSStefan Metzmacher 9*1249c01aSStefan Metzmacher #include <linux/types.h> 10*1249c01aSStefan Metzmacher 11*1249c01aSStefan Metzmacher /* SMB-DIRECT buffer descriptor V1 structure [MS-SMBD] 2.2.3.1 */ 12*1249c01aSStefan Metzmacher struct smbdirect_buffer_descriptor_v1 { 13*1249c01aSStefan Metzmacher __le64 offset; 14*1249c01aSStefan Metzmacher __le32 token; 15*1249c01aSStefan Metzmacher __le32 length; 16*1249c01aSStefan Metzmacher } __packed; 17*1249c01aSStefan Metzmacher 18*1249c01aSStefan Metzmacher /* 19*1249c01aSStefan Metzmacher * Connection parameters mostly from [MS-SMBD] 3.1.1.1 20*1249c01aSStefan Metzmacher * 21*1249c01aSStefan Metzmacher * These are setup and negotiated at the beginning of a 22*1249c01aSStefan Metzmacher * connection and remain constant unless explicitly changed. 23*1249c01aSStefan Metzmacher * 24*1249c01aSStefan Metzmacher * Some values are important for the upper layer. 25*1249c01aSStefan Metzmacher */ 26*1249c01aSStefan Metzmacher struct smbdirect_socket_parameters { 27*1249c01aSStefan Metzmacher __u64 flags; 28*1249c01aSStefan Metzmacher #define SMBDIRECT_FLAG_PORT_RANGE_ONLY_IB ((__u64)0x1) 29*1249c01aSStefan Metzmacher #define SMBDIRECT_FLAG_PORT_RANGE_ONLY_IW ((__u64)0x2) 30*1249c01aSStefan Metzmacher __u32 resolve_addr_timeout_msec; 31*1249c01aSStefan Metzmacher __u32 resolve_route_timeout_msec; 32*1249c01aSStefan Metzmacher __u32 rdma_connect_timeout_msec; 33*1249c01aSStefan Metzmacher __u32 negotiate_timeout_msec; 34*1249c01aSStefan Metzmacher __u16 initiator_depth; /* limited to U8_MAX */ 35*1249c01aSStefan Metzmacher __u16 responder_resources; /* limited to U8_MAX */ 36*1249c01aSStefan Metzmacher __u16 recv_credit_max; 37*1249c01aSStefan Metzmacher __u16 send_credit_target; 38*1249c01aSStefan Metzmacher __u32 max_send_size; 39*1249c01aSStefan Metzmacher __u32 max_fragmented_send_size; 40*1249c01aSStefan Metzmacher __u32 max_recv_size; 41*1249c01aSStefan Metzmacher __u32 max_fragmented_recv_size; 42*1249c01aSStefan Metzmacher __u32 max_read_write_size; 43*1249c01aSStefan Metzmacher __u32 max_frmr_depth; 44*1249c01aSStefan Metzmacher __u32 keepalive_interval_msec; 45*1249c01aSStefan Metzmacher __u32 keepalive_timeout_msec; 46*1249c01aSStefan Metzmacher } __packed; 47*1249c01aSStefan Metzmacher 48*1249c01aSStefan Metzmacher #define SMBDIRECT_FLAG_PORT_RANGE_MASK ( \ 49*1249c01aSStefan Metzmacher SMBDIRECT_FLAG_PORT_RANGE_ONLY_IB | \ 50*1249c01aSStefan Metzmacher SMBDIRECT_FLAG_PORT_RANGE_ONLY_IW) 51*1249c01aSStefan Metzmacher 52*1249c01aSStefan Metzmacher #endif /* __FS_SMB_COMMON_SMBDIRECT_SMBDIRECT_H__ */ 53