aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2025-08-21 16:16:47 +0200
committerSteve French <stfrench@microsoft.com>2025-09-28 18:29:48 -0500
commit02c39c0121d209117cb10b76df0b960f546b72e3 (patch)
tree005e8ecfe673e07130a31619f39d3b0ccbafbef5
parentsmb: smbdirect: introduce smbdirect_socket.workqueue (diff)
downloadlinux-02c39c0121d209117cb10b76df0b960f546b72e3.tar.gz
linux-02c39c0121d209117cb10b76df0b960f546b72e3.zip
smb: smbdirect: introduce struct smbdirect_mr_io
This will be used by the client in order to maintain memory registrations. Cc: Steve French <smfrench@gmail.com> Cc: Tom Talpey <tom@talpey.com> Cc: Long Li <longli@microsoft.com> Acked-by: Namjae Jeon <linkinjeon@kernel.org> Cc: linux-cifs@vger.kernel.org Cc: samba-technical@lists.samba.org Signed-off-by: Stefan Metzmacher <metze@samba.org> Signed-off-by: Steve French <stfrench@microsoft.com>
-rw-r--r--fs/smb/common/smbdirect/smbdirect_socket.h26
1 files changed, 26 insertions, 0 deletions
diff --git a/fs/smb/common/smbdirect/smbdirect_socket.h b/fs/smb/common/smbdirect/smbdirect_socket.h
index b0efa5a26016..f220891ab290 100644
--- a/fs/smb/common/smbdirect/smbdirect_socket.h
+++ b/fs/smb/common/smbdirect/smbdirect_socket.h
@@ -334,6 +334,32 @@ struct smbdirect_recv_io {
u8 packet[];
};
+enum smbdirect_mr_state {
+ SMBDIRECT_MR_READY,
+ SMBDIRECT_MR_REGISTERED,
+ SMBDIRECT_MR_INVALIDATED,
+ SMBDIRECT_MR_ERROR
+};
+
+struct smbdirect_mr_io {
+ struct smbdirect_socket *socket;
+ struct ib_cqe cqe;
+
+ struct list_head list;
+
+ enum smbdirect_mr_state state;
+ struct ib_mr *mr;
+ struct sg_table sgt;
+ enum dma_data_direction dir;
+ union {
+ struct ib_reg_wr wr;
+ struct ib_send_wr inv_wr;
+ };
+
+ bool need_invalidate;
+ struct completion invalidate_done;
+};
+
struct smbdirect_rw_io {
struct smbdirect_socket *socket;
struct ib_cqe cqe;