From nobody Mon Feb 10 19:34:41 2025 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4YsFC64PBTz5mfGl; Mon, 10 Feb 2025 19:34:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4YsFC612xPz3HxX; Mon, 10 Feb 2025 19:34:42 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1739216082; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=j6A6MounLs5UYnKnF1fQeDAecDIdg3jBR1WfZTFqQSM=; b=qWOYGECCHw5gipwDBtwD7hXRLmiLaJfc9i0g++p8mHZ3Ln21qmOsRsuuO2FkzbDtmKHHvY vWIrS38kVw23CC1WAFoUlr8y8VdbXk+J/hAL+I5nUg31QclgcwRa5QGw93iMsSrfVR3b0X 6pkfSDXBP4ybUzSJyKKlu6o6VEr2Qa3kL+nrYtO8YThiwnB8KVTWjk2eI2HoZeyFWC2Fkv Lnc0RUPVPgTHG/HaNvsq33ZVoP/AX9dyWb+WJHSGNzLRNSvxqtQD+hoftLZfUMY5qhm1bE 3gAT/68NIdbAspLkllcTdIKyC8PVVV7xALUyqN1ZoG0uf9d4uedPYed8yEjZrw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1739216082; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=j6A6MounLs5UYnKnF1fQeDAecDIdg3jBR1WfZTFqQSM=; b=paXJhje/OyVV6HkIIemBHlYOyp0/8myadI3xsvj2eBN1/jHlXipHvtoGjbtdVJ55JRqLBV x15fcZ4x0qfTy4YOjmoW4ORw4KuFlQ6dpim8yBy3W9Ccwxbisb4ypw8BBye1HrK4/pF3iX VO8x+Yx3Q4auJLsplkezOjr4+7TPu9XDLglO6GU1QObKsFiaepbKbBMqW0ZdoUkBCeN73P ek9F49AhyBu2Cy7H4zpxTAk0GNEP0Elavbqs7mgbK9v91XkwNZ3U+Vb520a3/lt0zteCW5 zinUk0UO4HjDFy0jDqT4FP2cc5pLJzfVVPtMSKf+UmqiuUFLUS9DindC8yqbEg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1739216082; a=rsa-sha256; cv=none; b=OC8HZEsqEQsQsCk7txn9nLDNFExz5VQSMKwWBp7U1WZ0nljoBUGnPI0mKv28F2/a5jZpaI begug9Ar4U/rBXsZaMPIk+6RHmWOhzl+KXcDadcH52dhLO9N/WfU2e1DDyJMs8MwbG3kVY xL0R/AAncKtQQj95kA4dnmvWmUlwskFxNsYS8bxvEuNi0PvwbEGU8jjX4pACDP3EddcnAe NLC15FpFp0E2Z5Syw9VQ4WqPZNn2Jbhip3LSuF6P0vjrL/Oql35Dx1jk+tFnDXNU5g/xzD wMSR2VpEyOeS1BYfPwMmetzxCNIN6uZmTLMdMh95ZiwuhPGgvM+SA4WF0rQ42A== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4YsFC60NBwzgyc; Mon, 10 Feb 2025 19:34:42 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 51AJYf44056094; Mon, 10 Feb 2025 19:34:41 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 51AJYfJZ056091; Mon, 10 Feb 2025 19:34:41 GMT (envelope-from git) Date: Mon, 10 Feb 2025 19:34:41 GMT Message-Id: <202502101934.51AJYfJZ056091@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Gleb Smirnoff Subject: git: 4a7f4f289c1a - main - sockets: make pr_aio_queue the default method List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: glebius X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 4a7f4f289c1a8239b2d8a2bc99ca68644a74130e Auto-Submitted: auto-generated The branch main has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=4a7f4f289c1a8239b2d8a2bc99ca68644a74130e commit 4a7f4f289c1a8239b2d8a2bc99ca68644a74130e Author: Gleb Smirnoff AuthorDate: 2025-02-10 19:30:45 +0000 Commit: Gleb Smirnoff CommitDate: 2025-02-10 19:30:45 +0000 sockets: make pr_aio_queue the default method Call it directly instead of each time calling pr_aio_queue_notsupp() and then doing the actual job. The only user of non default method was cxgbe(4). It calls now into the default method in case of own method failure. This preserves existing behavior. Reviewed by: markj, jhb Differential Revision: https://reviews.freebsd.org/D48863 --- sys/dev/cxgbe/tom/t4_tom.c | 11 ++++++++--- sys/kern/sys_socket.c | 15 ++++++++------- sys/kern/uipc_domain.c | 8 +------- sys/sys/socketvar.h | 1 + 4 files changed, 18 insertions(+), 17 deletions(-) diff --git a/sys/dev/cxgbe/tom/t4_tom.c b/sys/dev/cxgbe/tom/t4_tom.c index 97cb380d0e71..9b09facd05a7 100644 --- a/sys/dev/cxgbe/tom/t4_tom.c +++ b/sys/dev/cxgbe/tom/t4_tom.c @@ -2219,11 +2219,16 @@ t4_aio_queue_tom(struct socket *so, struct kaiocb *job) if (ulp_mode(toep) == ULP_MODE_TCPDDP || ulp_mode(toep) == ULP_MODE_NONE) { error = t4_aio_queue_ddp(so, job); - if (error != EOPNOTSUPP) - return (error); + if (error == 0) + return (0); + else if (error != EOPNOTSUPP) + return (soaio_queue_generic(so, job)); } - return (t4_aio_queue_aiotx(so, job)); + if (t4_aio_queue_aiotx(so, job) != 0) + return (soaio_queue_generic(so, job)); + else + return (0); } static int diff --git a/sys/kern/sys_socket.c b/sys/kern/sys_socket.c index 33cfd1637b78..456d93ff0d68 100644 --- a/sys/kern/sys_socket.c +++ b/sys/kern/sys_socket.c @@ -802,15 +802,16 @@ soo_aio_cancel(struct kaiocb *job) static int soo_aio_queue(struct file *fp, struct kaiocb *job) { - struct socket *so; + struct socket *so = fp->f_data; + + return (so->so_proto->pr_aio_queue(so, job)); +} + +int +soaio_queue_generic(struct socket *so, struct kaiocb *job) +{ struct sockbuf *sb; sb_which which; - int error; - - so = fp->f_data; - error = so->so_proto->pr_aio_queue(so, job); - if (error == 0) - return (0); /* Lock through the socket, since this may be a listening socket. */ switch (job->uaiocb.aio_lio_opcode & (LIO_WRITE | LIO_READ)) { diff --git a/sys/kern/uipc_domain.c b/sys/kern/uipc_domain.c index 734d9ee91349..51e0f8cc7726 100644 --- a/sys/kern/uipc_domain.c +++ b/sys/kern/uipc_domain.c @@ -58,12 +58,6 @@ pr_accept_notsupp(struct socket *so, struct sockaddr *sa) return (EOPNOTSUPP); } -static int -pr_aio_queue_notsupp(struct socket *so, struct kaiocb *job) -{ - return (EOPNOTSUPP); -} - static int pr_bind_notsupp(struct socket *so, struct sockaddr *nam, struct thread *td) { @@ -190,10 +184,10 @@ pr_init(struct domain *dom, struct protosw *pr) DEFAULT(pr_soreceive, soreceive_generic); DEFAULT(pr_sopoll, sopoll_generic); DEFAULT(pr_setsbopt, sbsetopt); + DEFAULT(pr_aio_queue, soaio_queue_generic); #define NOTSUPP(foo) if (pr->foo == NULL) pr->foo = foo ## _notsupp NOTSUPP(pr_accept); - NOTSUPP(pr_aio_queue); NOTSUPP(pr_bind); NOTSUPP(pr_bindat); NOTSUPP(pr_connect); diff --git a/sys/sys/socketvar.h b/sys/sys/socketvar.h index bfbb5cbd37fd..735ff49062de 100644 --- a/sys/sys/socketvar.h +++ b/sys/sys/socketvar.h @@ -526,6 +526,7 @@ struct socket * struct socket * sopeeloff(struct socket *); int sopoll_generic(struct socket *so, int events, struct thread *td); +int soaio_queue_generic(struct socket *so, struct kaiocb *job); int soreceive(struct socket *so, struct sockaddr **paddr, struct uio *uio, struct mbuf **mp0, struct mbuf **controlp, int *flagsp); int soreceive_stream(struct socket *so, struct sockaddr **paddr,