xref: /linux/fs/smb/common/smbdirect/smbdirect_socket.h (revision e78f70bad29c5ae1e1076698b690b15794e9b81e)
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*
3  *   Copyright (c) 2025 Stefan Metzmacher
4  */
5 
6 #ifndef __FS_SMB_COMMON_SMBDIRECT_SMBDIRECT_SOCKET_H__
7 #define __FS_SMB_COMMON_SMBDIRECT_SMBDIRECT_SOCKET_H__
8 
9 enum smbdirect_socket_status {
10 	SMBDIRECT_SOCKET_CREATED,
11 	SMBDIRECT_SOCKET_CONNECTING,
12 	SMBDIRECT_SOCKET_CONNECTED,
13 	SMBDIRECT_SOCKET_NEGOTIATE_FAILED,
14 	SMBDIRECT_SOCKET_DISCONNECTING,
15 	SMBDIRECT_SOCKET_DISCONNECTED,
16 	SMBDIRECT_SOCKET_DESTROYED
17 };
18 
19 struct smbdirect_socket {
20 	enum smbdirect_socket_status status;
21 
22 	/* RDMA related */
23 	struct {
24 		struct rdma_cm_id *cm_id;
25 	} rdma;
26 
27 	/* IB verbs related */
28 	struct {
29 		struct ib_pd *pd;
30 		struct ib_cq *send_cq;
31 		struct ib_cq *recv_cq;
32 
33 		/*
34 		 * shortcuts for rdma.cm_id->{qp,device};
35 		 */
36 		struct ib_qp *qp;
37 		struct ib_device *dev;
38 	} ib;
39 
40 	struct smbdirect_socket_parameters parameters;
41 };
42 
43 #endif /* __FS_SMB_COMMON_SMBDIRECT_SMBDIRECT_SOCKET_H__ */
44