[PATCH v2 116/127] smb: server: make use of smbdirect_connection_grant_recv_credits()
Stefan Metzmacher
metze at samba.org
Wed Oct 29 13:21:34 UTC 2025
This is already used by the client too and will
help to share more common code.
Cc: Namjae Jeon <linkinjeon at kernel.org>
Cc: Steve French <smfrench at gmail.com>
Cc: Tom Talpey <tom at talpey.com>
Cc: linux-cifs at vger.kernel.org
Cc: samba-technical at lists.samba.org
Signed-off-by: Stefan Metzmacher <metze at samba.org>
---
fs/smb/server/transport_rdma.c | 25 ++++---------------------
1 file changed, 4 insertions(+), 21 deletions(-)
diff --git a/fs/smb/server/transport_rdma.c b/fs/smb/server/transport_rdma.c
index d64896a2a1d1..55757c66cd44 100644
--- a/fs/smb/server/transport_rdma.c
+++ b/fs/smb/server/transport_rdma.c
@@ -492,25 +492,6 @@ static int smb_direct_read(struct ksmbd_transport *t, char *buf,
return ret;
}
-static int manage_credits_prior_sending(struct smbdirect_socket *sc)
-{
- int new_credits;
-
- if (atomic_read(&sc->recv_io.credits.count) >= sc->recv_io.credits.target)
- return 0;
-
- new_credits = atomic_read(&sc->recv_io.posted.count);
- if (new_credits == 0)
- return 0;
-
- new_credits -= atomic_read(&sc->recv_io.credits.count);
- if (new_credits <= 0)
- return 0;
-
- atomic_add(new_credits, &sc->recv_io.credits.count);
- return new_credits;
-}
-
static int manage_keep_alive_before_sending(struct smbdirect_socket *sc)
{
struct smbdirect_socket_parameters *sp = &sc->parameters;
@@ -648,6 +629,7 @@ static int smb_direct_create_header(struct smbdirect_socket *sc,
struct smbdirect_socket_parameters *sp = &sc->parameters;
struct smbdirect_send_io *sendmsg;
struct smbdirect_data_transfer *packet;
+ u16 new_credits = 0;
int header_length;
int ret;
@@ -658,7 +640,8 @@ static int smb_direct_create_header(struct smbdirect_socket *sc,
/* Fill in the packet header */
packet = (struct smbdirect_data_transfer *)sendmsg->packet;
packet->credits_requested = cpu_to_le16(sp->send_credit_target);
- packet->credits_granted = cpu_to_le16(manage_credits_prior_sending(sc));
+ new_credits = smbdirect_connection_grant_recv_credits(sc);
+ packet->credits_granted = cpu_to_le16(new_credits);
packet->flags = 0;
if (manage_keep_alive_before_sending(sc))
@@ -1064,7 +1047,7 @@ static int smb_direct_send_negotiate_response(struct smbdirect_socket *sc,
resp->reserved = 0;
resp->credits_requested =
cpu_to_le16(sp->send_credit_target);
- resp->credits_granted = cpu_to_le16(manage_credits_prior_sending(sc));
+ resp->credits_granted = cpu_to_le16(smbdirect_connection_grant_recv_credits(sc));
resp->max_readwrite_size = cpu_to_le32(sp->max_read_write_size);
resp->preferred_send_size = cpu_to_le32(sp->max_send_size);
resp->max_receive_size = cpu_to_le32(sp->max_recv_size);
--
2.43.0
More information about the samba-technical
mailing list