/* SPDX-License-Identifier: GPL-2.0-or-later */ /* * Copyright (c) 2025 Stefan Metzmacher */ #ifndef __FS_SMB_COMMON_SMBDIRECT_SMBDIRECT_SOCKET_H__ #define __FS_SMB_COMMON_SMBDIRECT_SMBDIRECT_SOCKET_H__ enum smbdirect_socket_status { SMBDIRECT_SOCKET_CREATED, SMBDIRECT_SOCKET_CONNECTING, SMBDIRECT_SOCKET_CONNECTED, SMBDIRECT_SOCKET_NEGOTIATE_FAILED, SMBDIRECT_SOCKET_DISCONNECTING, SMBDIRECT_SOCKET_DISCONNECTED, SMBDIRECT_SOCKET_DESTROYED }; struct smbdirect_socket { enum smbdirect_socket_status status; /* RDMA related */ struct { struct rdma_cm_id *cm_id; } rdma; /* IB verbs related */ struct { struct ib_pd *pd; struct ib_cq *send_cq; struct ib_cq *recv_cq; /* * shortcuts for rdma.cm_id->{qp,device}; */ struct ib_qp *qp; struct ib_device *dev; } ib; struct smbdirect_socket_parameters parameters; }; #endif /* __FS_SMB_COMMON_SMBDIRECT_SMBDIRECT_SOCKET_H__ */