Stefan Metzmacher
aa43bb2c0f
smb: smbdirect: remove unused SMBDIRECT_USE_INLINE_C_FILES logic
...
We always build as standalone module (or as part of the core kernel).
This also removes unused elements from struct smbdirect_socket
and unused exports.
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: Long Li <longli@microsoft.com >
Cc: 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 >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:24 -05:00
Stefan Metzmacher
649c47559a
smb: server: no longer use smbdirect_socket_set_custom_workqueue()
...
smbdirect.ko has global workqueues now, so we should use these
default once.
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:24 -05:00
Stefan Metzmacher
73dc52d294
smb: client: no longer use smbdirect_socket_set_custom_workqueue()
...
smbdirect.ko has global workqueues now, so we should use these
default once.
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: Long Li <longli@microsoft.com >
Cc: 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 >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:24 -05:00
Stefan Metzmacher
1adde16a9e
smb: smbdirect: introduce global workqueues
...
These will be used in future and callers should no
longer use smbdirect_socket_set_custom_workqueue().
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: Long Li <longli@microsoft.com >
Cc: 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 >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:24 -05:00
Stefan Metzmacher
e4ce1fca04
smb: smbdirect: prepare use of dedicated workqueues for different steps
...
This is a preparation in order to have global workqueues in
the smbdirect module instead of having the caller to
provide one.
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: Long Li <longli@microsoft.com >
Cc: 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 >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:24 -05:00
Stefan Metzmacher
00ac2a4fe0
smb: smbdirect: remove unused smbdirect_connection_mr_io_recovery_work()
...
This would actually never be used as we only move to
SMBDIRECT_MR_ERROR when we directly call
smbdirect_socket_schedule_cleanup().
Doing an ib_dereg_mr/ib_alloc_mr dance on
working connection is not needed and
it's also pointless on a broken connection
as we don't reuse any ib_pd.
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: Long Li <longli@microsoft.com >
Cc: 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 >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:24 -05:00
Stefan Metzmacher
a40e6f0166
smb: smbdirect: wrap rdma_disconnect() in rdma_[un]lock_handler()
...
This might not be needed, but it controls the order
of ib_drain_qp() and rdma_disconnect().
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: Long Li <longli@microsoft.com >
Cc: 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 >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:24 -05:00
Stefan Metzmacher
33b2894e8d
smb: server: make use of smbdirect_netdev_rdma_capable_mode_type()
...
This removes is basically the same logic.
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: Long Li <longli@microsoft.com >
Cc: 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 >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:24 -05:00
Stefan Metzmacher
81a7a3a0fa
smb: smbdirect: introduce smbdirect_netdev_rdma_capable_mode_type()
...
This is basically a copy of ksmbd_rdma_capable_netdev() in the
server, but this also prints a message when a device is renamed.
The differences are:
- It uses rdma_for_each_port() instead of implementing the
same logic again.
- It returns RDMA_NODE_{UNSPECIFIED,IB_CA,RNIC} values instead of bool
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: Long Li <longli@microsoft.com >
Cc: 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 >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:24 -05:00
Stefan Metzmacher
50bdab9ae4
smb: server: make use of smbdirect.ko
...
This means we no longer inline the common smbdirect
.c files and use the exported functions from the
module instead.
Note the connection specific logging is still
redirect to ksmbd.ko functions via
smbdirect_socket_set_logging().
We still don't use real socket layer,
but we're very close...
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:24 -05:00
Stefan Metzmacher
98bdc5fda9
smb: server: remove unused ksmbd_transport_ops.prepare()
...
This is no longer needed for smbdirect.
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:24 -05:00
Stefan Metzmacher
2eff5e51f9
smb: server: make use of smbdirect_socket_{listen,accept}()
...
We no longer need the custom rdma listener.
The code logic is very similar to transport_tcp.c now
using a kernel thread that loops over smbdirect_socket_accept().
This is the first step in the direction of using IPPROTO_SMBDIRECT
sockets in future.
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:24 -05:00
Stefan Metzmacher
1b2d94a3c9
smb: server: only use public smbdirect functions
...
Also remove a lot of unused includes...
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:24 -05:00
Stefan Metzmacher
ff7673f6fd
smb: server: make use of smbdirect_socket_create_accepting()/smbdirect_socket_release()
...
With this we no longer embed struct smbdirect_socket, which will allow
us to make it private in the following commits.
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:24 -05:00
Stefan Metzmacher
9460416487
smb: server: make use of smbdirect_{socket_init_accepting,connection_wait_for_connected}()
...
This means we finally only use common functions in the server.
We still use the embedded struct smbdirect_socket and are
able to access internals, but the will be removed in the
next commits as well.
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:24 -05:00
Stefan Metzmacher
4b4c21a7d2
smb: server: make use of smbdirect_connection_send_iter() and related functions
...
This makes use of common code for sending messages, this will
allow to make more use of common code in the next commits.
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:24 -05:00
Stefan Metzmacher
c6b077efbc
smb: server: let smb_direct_post_send_data() return data_length
...
This make it easier moving to common code shared with the client.
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:23 -05:00
Stefan Metzmacher
08ffdf0c41
smb: server: split out smb_direct_send_iter() out of smb_direct_writev()
...
This will help to move to common code in future.
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:23 -05:00
Stefan Metzmacher
da20536c50
smb: server: let smbdirect_map_sges_from_iter() truncate the message boundary
...
smbdirect_map_sges_from_iter() already handles the case that only
a limited number of sges are available. Its return value
is data_length and the remaining bytes in the iter are
remaining_data_length.
This is now much easier and will allow us to share
more code with the client soon.
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:23 -05:00
Stefan Metzmacher
0af87a0a31
smb: server: inline smb_direct_create_header() into smb_direct_post_send_data()
...
The point is that ib_dma_map_single() is done first, but
the 'Fill in the packet header' will be done after
smbdirect_map_sges_from_iter().
This will simplify further changes in order to
share common code with the client.
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:23 -05:00
Stefan Metzmacher
0184d2b386
smb: server: move iov_iter_kvec() out of smb_direct_post_send_data()
...
This will allow us to make the code more generic in order
to move it to common with the client.
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:23 -05:00
Stefan Metzmacher
1421d50ea9
smb: server: make use of smbdirect_connection_request_keep_alive()
...
This will help to share more common code soon.
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:23 -05:00
Stefan Metzmacher
0a1702e931
smb: server: make use of smbdirect_connection_grant_recv_credits()
...
This is already used by the client too and will
help to share more common code.
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:23 -05:00
Stefan Metzmacher
73489efdda
smb: server: make use of smbdirect_connection_recvmsg()
...
This is basically the same logic, it just operates on iov_iter_kvec()
instead of a raw buffer pointer. This allows us to use common
code between client and server.
We keep returning -EINTR instead of -ERESTARTSYS if
wait_event_interruptible() fails. I don't if this is
required, but changing it is a task for another patch.
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:23 -05:00
Stefan Metzmacher
a3bf9bfee8
smb: server: make use of smbdirect_socket_destroy_sync()
...
This is basically the same logic as before, but we now
use common code, which will also be used by the server soon.
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:23 -05:00
Stefan Metzmacher
21a72d0900
smb: server: make use of functions from smbdirect_rw.c
...
The copied code only got new names, some indentation/formatting changes,
some variable names are changed too.
They also only use struct smbdirect_socket instead of
struct smb_direct_transport.
But the logic is still the same.
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:23 -05:00
Stefan Metzmacher
0911d32ba2
smb: server: make use of smbdirect_socket_wait_for_credits()
...
This will allow us to share more common code between client and
server soon.
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:23 -05:00
Stefan Metzmacher
be0ac9f59f
smb: server: make use of smbdirect_get_buf_page_count()
...
This will allow us to move code into common code
between client and server soon.
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:23 -05:00
Stefan Metzmacher
8d55169a57
smb: server: make use of smbdirect_connection_recv_io_refill[_work]()
...
This is basically a copy of smb_direct_post_recv_credits(), but
there are several improvements compared to the existing function:
1. We calculate the number of missing posted buffers by getting the
difference between recv_io.credits.target and recv_io.posted.count.
Instead of the difference between recv_io.credits.target
and recv_io.credits.count, because recv_io.credits.count is
only updated once a message is send to the peer.
It was not really a problem before, because we have
a fixed number smbdirect_recv_io buffers, so the
loop terminated when smbdirect_connection_get_recv_io()
returns NULL.
But using recv_io.posted.count makes it easier to
understand.
2. In order to tell the peer about the newly posted buffer
and grant the credits, we only trigger the send immediate
when we're not granting only the last possible credit.
This is mostly a difference relative to the servers
smb_direct_post_recv_credits() implementation,
which should avoid useless ping pong messages.
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:23 -05:00
Stefan Metzmacher
62782820e8
smb: server: make use of smbdirect_connection_post_recv_io()
...
The only difference is that smbdirect_connection_post_recv_io()
returns early if the connection is already broken.
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:23 -05:00
Stefan Metzmacher
5a2999d7d9
smb: server: make use of smbdirect_connection_{create,destroy}_qp()
...
It's good a use common code for this and it will allow us
to share more code in the next steps.
Calling ib_drain_qp() twice is ok.
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:23 -05:00
Stefan Metzmacher
d5e2bdda49
smb: server: make use of smbdirect_connection_negotiate_rdma_resources()
...
It's good to have this logic in a central place, it will allow us
share more code soon.
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:23 -05:00
Stefan Metzmacher
ab8e9249e7
smb: server: make use of smbdirect_connection_qp_event_handler()
...
This is a copy of smb_direct_qpair_handler()...
It will allow more code to be moved to common functions
soon.
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:23 -05:00
Stefan Metzmacher
8688d7a8c7
smb: server: make use of smbdirect_map_sges_from_iter()
...
It will make it easier to move stuff into common code when
both client and server use smbdirect_map_sges_from_iter().
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:23 -05:00
Stefan Metzmacher
07aec3a151
smb: server: make use of smbdirect_connection_{create,destroy}_mem_pools()
...
This were based on smb_direct_{create,destroy}_pools() in the server.
The main logical differences are the following:
We now don't use smbdirect_connection_get_recv_io() on cleanup,
instead it uses list_for_each_entry_safe()...
We don't generate warnings if smbdirect_recv_io payload
is copied into userspace buffers. This doesn't happen
in the server anyway.
And it uses list_add_tail() just to let me feel
better when looking at the code...
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:23 -05:00
Stefan Metzmacher
bb1d5c49d6
smb: server: make use of smbdirect_connection_send_io_done()
...
This also wakes up send_io.pending.dec_wait_queue, which
is currently always empty in the server, but that might
change in future. And we also don't spam the logs on IB_WC_WR_FLUSH_ERR.
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:23 -05:00
Stefan Metzmacher
8ecb32ada1
smb: server: make use of smbdirect_connection_{alloc,free}_send_io()
...
These are basically copies of smb_direct_{alloc,free}_sendmsg() just
a bit simpler and with the gfp_mask mask abstracted.
For now we still use KSMBD_DEFAULT_GFP, which includes
__GFP_RETRY_MAYFAIL.
The only difference is that we use ib_dma_unmap_page() for all sges,
this simplifies the logic and doesn't matter as
ib_dma_unmap_single() and ib_dma_unmap_page() both operate
on dma_addr_t and dma_unmap_single_attrs() is just an
alias for dma_unmap_page_attrs().
We already had such an inconsistency in the client
code where we use ib_dma_unmap_single(), while we mapped
using ib_dma_map_page().
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:23 -05:00
Stefan Metzmacher
c81c66d3c0
smb: server: make use of smbdirect_frwr_is_supported()
...
This is an exact copy of rdma_frwr_is_supported().
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:22 -05:00
Stefan Metzmacher
84d7085e5f
smb: server: make use of smbdirect_connection_idle_timer_work()
...
This is basically a copy of smb_direct_idle_connection_timer().
The only difference is that we had no logging before.
Note smbdirect_socket_prepare_create() already calls INIT_DELAYED_WORK().
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:22 -05:00
Stefan Metzmacher
aa1255e71f
smb: server: make use of smbdirect_connection_reassembly_{append,first}_recv_io()
...
These are basically copies of enqueue_reassembly() and
get_first_reassembly(). The only difference is that
sc->statistics.enqueue_reassembly_queue now updated.
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:22 -05:00
Stefan Metzmacher
01f26988c8
smb: server: make use of smbdirect_connection_{get,put}_recv_io()
...
These are basically copies of {get,put}_receive_buffer() in the client.
They are very similar to {get_free,put}_recvmsg() the only logical
difference is the updating of the sc->statistics.*.
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:22 -05:00
Stefan Metzmacher
0ffbbfdf6a
smb: server: make use of smbdirect_socket_schedule_cleanup()
...
This removes smb_direct_disconnect_rdma_connection() which is basically
the same as smbdirect_socket_schedule_cleanup().
And we pass more useful errors than -ECONNABORTED if we have them.
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:22 -05:00
Stefan Metzmacher
1b1ee1e3ee
smb: server: make use of smbdirect_socket_cleanup_work()
...
Note smbdirect_socket_prepare_create() already calls INIT_WORK()
with smbdirect_socket_cleanup_work.
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:22 -05:00
Stefan Metzmacher
33562021f4
smb: server: make use of smbdirect_socket_wake_up_all()
...
This is a superset of smb_direct_disconnect_wake_up_all() and
calling wake_up_all(&sc->mr_io.ready.wait_queue); and
wake_up_all(&sc->mr_io.cleanup.wait_queue); in addition
should not matter as it's not used on the server anyway.
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:22 -05:00
Stefan Metzmacher
bbf3559afe
smb: server: make use of smbdirect_socket_set_logging()
...
This will allow the logging to keep working as before,
when we move to common functions in the next commits.
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:22 -05:00
Stefan Metzmacher
4624f1bf1b
smb: server: make use of smbdirect_socket_prepare_create()
...
This prepares the use of functions from smbdirect_connection.c.
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:22 -05:00
Stefan Metzmacher
6acc747906
smb: client: make use of smbdirect.ko
...
This means we no longer inline the common smbdirect
.c files and use the exported functions from the
module instead.
Note the connection specific logging is still
redirect to cifs.ko functions via
smbdirect_socket_set_logging().
We still don't use real socket layer,
but we're very close...
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: Long Li <longli@microsoft.com >
Cc: Namjae Jeon <linkinjeon@kernel.org >
Cc: David Howells <dhowells@redhat.com >
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Signed-off-by: Stefan Metzmacher <metze@samba.org >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:22 -05:00
Stefan Metzmacher
a8e98e3920
smb: client: only use public smbdirect functions
...
Also remove a lot of unused includes...
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: Long Li <longli@microsoft.com >
Cc: 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 >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:22 -05:00
Stefan Metzmacher
b8aef8c880
smb: client: make use of smbdirect_socket_create_kern()/smbdirect_socket_release()
...
With this we no longer embed struct smbdirect_socket, which will allow
us to make it private in the following commits.
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: Long Li <longli@microsoft.com >
Cc: 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 >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:22 -05:00
Stefan Metzmacher
7dbfc0d910
smb: client: make use of smbdirect_socket_init_new() and smbdirect_connect_sync()
...
This means we finally only use common functions in the client.
We still use the embedded struct smbdirect_socket and are
able to access internals, but the will be removed in the
next commits as well.
Cc: Steve French <smfrench@gmail.com >
Cc: Tom Talpey <tom@talpey.com >
Cc: Long Li <longli@microsoft.com >
Cc: 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 >
Acked-by: Namjae Jeon <linkinjeon@kernel.org >
Signed-off-by: Steve French <stfrench@microsoft.com >
2026-04-15 21:58:22 -05:00