]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
smb: client: fill smbdirect_socket_parameters at the beginning and use the values...
authorStefan Metzmacher <metze@samba.org>
Fri, 15 Aug 2025 09:03:04 +0000 (11:03 +0200)
committerSteve French <stfrench@microsoft.com>
Sun, 28 Sep 2025 23:29:49 +0000 (18:29 -0500)
This is what we should do and it also simplifies the following changes.

Cc: Steve French <smfrench@gmail.com>
Cc: Tom Talpey <tom@talpey.com>
Cc: Long Li <longli@microsoft.com>
Cc: linux-cifs@vger.kernel.org
Cc: samba-technical@lists.samba.org
Acked-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/smb/client/smbdirect.c

index 21e4a10d39991c0ccd5c2d07a58d196acc0d987b..bed9d86ec85da0d096896c0da8849c7c19d6e7d3 100644 (file)
@@ -1718,37 +1718,37 @@ static struct smbd_connection *_smbd_get_connection(
 
        INIT_WORK(&sc->disconnect_work, smbd_disconnect_rdma_work);
 
+       sp->recv_credit_max = smbd_receive_credit_max;
+       sp->send_credit_target = smbd_send_credit_target;
+       sp->max_send_size = smbd_max_send_size;
+       sp->max_fragmented_recv_size = smbd_max_fragmented_recv_size;
+       sp->max_recv_size = smbd_max_receive_size;
+       sp->keepalive_interval_msec = smbd_keep_alive_interval * 1000;
+
        rc = smbd_ia_open(info, dstaddr, port);
        if (rc) {
                log_rdma_event(INFO, "smbd_ia_open rc=%d\n", rc);
                goto create_id_failed;
        }
 
-       if (smbd_send_credit_target > sc->ib.dev->attrs.max_cqe ||
-           smbd_send_credit_target > sc->ib.dev->attrs.max_qp_wr) {
+       if (sp->send_credit_target > sc->ib.dev->attrs.max_cqe ||
+           sp->send_credit_target > sc->ib.dev->attrs.max_qp_wr) {
                log_rdma_event(ERR, "consider lowering send_credit_target = %d. Possible CQE overrun, device reporting max_cqe %d max_qp_wr %d\n",
-                              smbd_send_credit_target,
+                              sp->send_credit_target,
                               sc->ib.dev->attrs.max_cqe,
                               sc->ib.dev->attrs.max_qp_wr);
                goto config_failed;
        }
 
-       if (smbd_receive_credit_max > sc->ib.dev->attrs.max_cqe ||
-           smbd_receive_credit_max > sc->ib.dev->attrs.max_qp_wr) {
+       if (sp->recv_credit_max > sc->ib.dev->attrs.max_cqe ||
+           sp->recv_credit_max > sc->ib.dev->attrs.max_qp_wr) {
                log_rdma_event(ERR, "consider lowering receive_credit_max = %d. Possible CQE overrun, device reporting max_cqe %d max_qp_wr %d\n",
-                              smbd_receive_credit_max,
+                              sp->recv_credit_max,
                               sc->ib.dev->attrs.max_cqe,
                               sc->ib.dev->attrs.max_qp_wr);
                goto config_failed;
        }
 
-       sp->recv_credit_max = smbd_receive_credit_max;
-       sp->send_credit_target = smbd_send_credit_target;
-       sp->max_send_size = smbd_max_send_size;
-       sp->max_fragmented_recv_size = smbd_max_fragmented_recv_size;
-       sp->max_recv_size = smbd_max_receive_size;
-       sp->keepalive_interval_msec = smbd_keep_alive_interval * 1000;
-
        if (sc->ib.dev->attrs.max_send_sge < SMBDIRECT_SEND_IO_MAX_SGE ||
            sc->ib.dev->attrs.max_recv_sge < SMBDIRECT_RECV_IO_MAX_SGE) {
                log_rdma_event(ERR,