git: 9e425a8a7ef0 - main - ctld: Move kernel_limits into login.c where it is used

From: John Baldwin <jhb_at_FreeBSD.org>
Date: Wed, 05 Feb 2025 19:55:41 UTC
The branch main has been updated by jhb:

URL: https://cgit.FreeBSD.org/src/commit/?id=9e425a8a7ef075706c901b27091a79e2911b7595

commit 9e425a8a7ef075706c901b27091a79e2911b7595
Author:     John Baldwin <jhb@FreeBSD.org>
AuthorDate: 2025-02-05 19:54:09 +0000
Commit:     John Baldwin <jhb@FreeBSD.org>
CommitDate: 2025-02-05 19:55:16 +0000

    ctld: Move kernel_limits into login.c where it is used
    
    Reviewed by:    asomers
    Sponsored by:   Chelsio Communications
    Differential Revision:  https://reviews.freebsd.org/D48771
---
 usr.sbin/ctld/ctld.h   |  8 ++-----
 usr.sbin/ctld/kernel.c | 56 +--------------------------------------------
 usr.sbin/ctld/login.c  | 62 +++++++++++++++++++++++++++++++++++++++++++++++++-
 3 files changed, 64 insertions(+), 62 deletions(-)

diff --git a/usr.sbin/ctld/ctld.h b/usr.sbin/ctld/ctld.h
index c57bd32c77a2..241785199cda 100644
--- a/usr.sbin/ctld/ctld.h
+++ b/usr.sbin/ctld/ctld.h
@@ -47,7 +47,6 @@
 #define	DEFAULT_CD_BLOCKSIZE		2048
 
 #define	MAX_LUNS			1024
-#define	MAX_DATA_SEGMENT_LENGTH		(128 * 1024)
 #define	SOCKBUF_SIZE			1048576
 
 struct auth {
@@ -246,6 +245,8 @@ struct ctld_connection {
 	struct chap		*conn_chap;
 };
 
+extern int ctl_fd;
+
 int			parse_conf(struct conf *newconf, const char *path);
 int			uclparse_conf(struct conf *conf, const char *path);
 
@@ -352,11 +353,6 @@ int			kernel_lun_add(struct lun *lun);
 int			kernel_lun_modify(struct lun *lun);
 int			kernel_lun_remove(struct lun *lun);
 void			kernel_handoff(struct ctld_connection *conn);
-void			kernel_limits(const char *offload, int s,
-			    int *max_recv_data_segment_length,
-			    int *max_send_data_segment_length,
-			    int *max_burst_length,
-			    int *first_burst_length);
 int			kernel_port_add(struct port *port);
 int			kernel_port_update(struct port *port, struct port *old);
 int			kernel_port_remove(struct port *port);
diff --git a/usr.sbin/ctld/kernel.c b/usr.sbin/ctld/kernel.c
index 1fa05cb159c3..7e9ef8ec42c2 100644
--- a/usr.sbin/ctld/kernel.c
+++ b/usr.sbin/ctld/kernel.c
@@ -77,7 +77,7 @@
 
 extern bool proxy_mode;
 
-static int	ctl_fd = 0;
+int	ctl_fd = 0;
 
 void
 kernel_init(void)
@@ -907,60 +907,6 @@ kernel_handoff(struct ctld_connection *conn)
 	}
 }
 
-void
-kernel_limits(const char *offload, int s, int *max_recv_dsl, int *max_send_dsl,
-    int *max_burst_length, int *first_burst_length)
-{
-	struct ctl_iscsi req;
-	struct ctl_iscsi_limits_params *cilp;
-
-	bzero(&req, sizeof(req));
-
-	req.type = CTL_ISCSI_LIMITS;
-	cilp = (struct ctl_iscsi_limits_params *)&(req.data.limits);
-	if (offload != NULL) {
-		strlcpy(cilp->offload, offload, sizeof(cilp->offload));
-	}
-	cilp->socket = s;
-
-	if (ioctl(ctl_fd, CTL_ISCSI, &req) == -1) {
-		log_err(1, "error issuing CTL_ISCSI ioctl; "
-		    "dropping connection");
-	}
-
-	if (req.status != CTL_ISCSI_OK) {
-		log_errx(1, "error returned from CTL iSCSI limits request: "
-		    "%s; dropping connection", req.error_str);
-	}
-
-	if (cilp->max_recv_data_segment_length != 0) {
-		*max_recv_dsl = cilp->max_recv_data_segment_length;
-		*max_send_dsl = cilp->max_recv_data_segment_length;
-	}
-	if (cilp->max_send_data_segment_length != 0)
-		*max_send_dsl = cilp->max_send_data_segment_length;
-	if (cilp->max_burst_length != 0)
-		*max_burst_length = cilp->max_burst_length;
-	if (cilp->first_burst_length != 0)
-		*first_burst_length = cilp->first_burst_length;
-	if (*max_burst_length < *first_burst_length)
-		*first_burst_length = *max_burst_length;
-
-	if (offload != NULL) {
-		log_debugx("Kernel limits for offload \"%s\" are "
-		    "MaxRecvDataSegment=%d, max_send_dsl=%d, "
-		    "MaxBurstLength=%d, FirstBurstLength=%d",
-		    offload, *max_recv_dsl, *max_send_dsl, *max_burst_length,
-		    *first_burst_length);
-	} else {
-		log_debugx("Kernel limits are "
-		    "MaxRecvDataSegment=%d, max_send_dsl=%d, "
-		    "MaxBurstLength=%d, FirstBurstLength=%d",
-		    *max_recv_dsl, *max_send_dsl, *max_burst_length,
-		    *first_burst_length);
-	}
-}
-
 int
 kernel_port_add(struct port *port)
 {
diff --git a/usr.sbin/ctld/login.c b/usr.sbin/ctld/login.c
index f57582f4e62f..b763104a092e 100644
--- a/usr.sbin/ctld/login.c
+++ b/usr.sbin/ctld/login.c
@@ -29,20 +29,80 @@
  *
  */
 
-#include <sys/cdefs.h>
+#include <sys/time.h>
 #include <assert.h>
 #include <stdbool.h>
+#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
 #include <netinet/in.h>
+#include <cam/ctl/ctl.h>
+#include <cam/ctl/ctl_io.h>
+#include <cam/ctl/ctl_ioctl.h>
 
 #include "ctld.h"
 #include "iscsi_proto.h"
 
+#define	MAX_DATA_SEGMENT_LENGTH		(128 * 1024)
+
 static void login_send_error(struct pdu *request,
     char class, char detail);
 
+static void
+kernel_limits(const char *offload, int s, int *max_recv_dsl, int *max_send_dsl,
+    int *max_burst_length, int *first_burst_length)
+{
+	struct ctl_iscsi req;
+	struct ctl_iscsi_limits_params *cilp;
+
+	bzero(&req, sizeof(req));
+
+	req.type = CTL_ISCSI_LIMITS;
+	cilp = (struct ctl_iscsi_limits_params *)&(req.data.limits);
+	if (offload != NULL) {
+		strlcpy(cilp->offload, offload, sizeof(cilp->offload));
+	}
+	cilp->socket = s;
+
+	if (ioctl(ctl_fd, CTL_ISCSI, &req) == -1) {
+		log_err(1, "error issuing CTL_ISCSI ioctl; "
+		    "dropping connection");
+	}
+
+	if (req.status != CTL_ISCSI_OK) {
+		log_errx(1, "error returned from CTL iSCSI limits request: "
+		    "%s; dropping connection", req.error_str);
+	}
+
+	if (cilp->max_recv_data_segment_length != 0) {
+		*max_recv_dsl = cilp->max_recv_data_segment_length;
+		*max_send_dsl = cilp->max_recv_data_segment_length;
+	}
+	if (cilp->max_send_data_segment_length != 0)
+		*max_send_dsl = cilp->max_send_data_segment_length;
+	if (cilp->max_burst_length != 0)
+		*max_burst_length = cilp->max_burst_length;
+	if (cilp->first_burst_length != 0)
+		*first_burst_length = cilp->first_burst_length;
+	if (*max_burst_length < *first_burst_length)
+		*first_burst_length = *max_burst_length;
+
+	if (offload != NULL) {
+		log_debugx("Kernel limits for offload \"%s\" are "
+		    "MaxRecvDataSegment=%d, max_send_dsl=%d, "
+		    "MaxBurstLength=%d, FirstBurstLength=%d",
+		    offload, *max_recv_dsl, *max_send_dsl, *max_burst_length,
+		    *first_burst_length);
+	} else {
+		log_debugx("Kernel limits are "
+		    "MaxRecvDataSegment=%d, max_send_dsl=%d, "
+		    "MaxBurstLength=%d, FirstBurstLength=%d",
+		    *max_recv_dsl, *max_send_dsl, *max_burst_length,
+		    *first_burst_length);
+	}
+}
+
 static void
 login_set_nsg(struct pdu *response, int nsg)
 {