From patchwork Wed May 31 11:00:07 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Howells X-Patchwork-Id: 13261944 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 63A69C77B7A for ; Wed, 31 May 2023 11:00:33 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CEA118E0002; Wed, 31 May 2023 07:00:32 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id CCA9D8E0001; Wed, 31 May 2023 07:00:32 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BB0D98E0002; Wed, 31 May 2023 07:00:32 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id AC4108E0001 for ; Wed, 31 May 2023 07:00:32 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 7DC3214036E for ; Wed, 31 May 2023 11:00:32 +0000 (UTC) X-FDA: 80850256704.26.F6DB0CB Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf28.hostedemail.com (Postfix) with ESMTP id 84F2EC0003 for ; Wed, 31 May 2023 11:00:28 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=MYCEmZpl; spf=pass (imf28.hostedemail.com: domain of dhowells@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=dhowells@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1685530828; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=97CTgaKk+HjxMsHB1NZqYRmtg/935y1khOuMG78saNk=; b=Zn5t1+kdRH9xF01p0EJ1GfzyLodNFgaghbQqIEcr0J7R0S3c59ssmYO6Gu4ANyilidu91t 05Tjb9xt2puMQ0WHNr+nvV73xvCO0pbN/ZyV2YzRiJEn+srty+l5P97+LqAkF7/snWDbAW Opmm1kXKVPBiRc2tFzaBbB9cIqnpuRU= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=MYCEmZpl; spf=pass (imf28.hostedemail.com: domain of dhowells@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=dhowells@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1685530828; a=rsa-sha256; cv=none; b=FX7QiCja/aHwhNMXvUZzL4PY36vLAJszkvqI3d6mJXqp9vzEX2GeR8x31DlFyZDTlbQNpK 5wazXW9Jh+DsljwS5ErUvhtKd5AeapAP8kuOwMwzfZVHCNJIM0Abk5qNmBx/piFJDy5Mjd mDRvhgInei3ihp+j9QX1tc91rNpIN64= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1685530827; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=97CTgaKk+HjxMsHB1NZqYRmtg/935y1khOuMG78saNk=; b=MYCEmZplyZkTpDhH0b5lZtPIWa2nW+xa3zhd+YFwINowjFWw1mpQu7vCBxneQbj9IQZK2b QvirN5ttp/FkT+SR9xA9xaJ+UR5uQkcmrEeQEDZqsiN9Vugoz8fne6aSYrxKaO0/WP64KC 9Voajwis2cR8m4u41UVDfzJHvoXzueE= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-513-3tfZ-SxcM6qaXos3TuNsaQ-1; Wed, 31 May 2023 07:00:21 -0400 X-MC-Unique: 3tfZ-SxcM6qaXos3TuNsaQ-1 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id BA646101AA42; Wed, 31 May 2023 11:00:20 +0000 (UTC) Received: from warthog.procyon.org.uk (unknown [10.42.28.182]) by smtp.corp.redhat.com (Postfix) with ESMTP id E15D72166B25; Wed, 31 May 2023 11:00:18 +0000 (UTC) From: David Howells To: netdev@vger.kernel.org Cc: David Howells , Ayush Sawal , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Willem de Bruijn , David Ahern , Matthew Wilcox , Jens Axboe , Simon Horman , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next v2 1/2] chelsio: Support MSG_SPLICE_PAGES Date: Wed, 31 May 2023 12:00:07 +0100 Message-ID: <20230531110008.642903-2-dhowells@redhat.com> In-Reply-To: <20230531110008.642903-1-dhowells@redhat.com> References: <20230531110008.642903-1-dhowells@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.6 X-Rspamd-Queue-Id: 84F2EC0003 X-Rspam-User: X-Stat-Signature: u7o79o1t9xthhmwotyg54pookwioqfdb X-Rspamd-Server: rspam01 X-HE-Tag: 1685530828-30904 X-HE-Meta: U2FsdGVkX18k98BIp6vjleIv8O+W+1LaMZOjacihYj5oGgXmIvti6Wz7VVsUXeREFEwUGhjAqwErPI5hFIUBut5LzujLx/D0FQRzwaGt7U/gSNFh+KGuZX+eQFiYB+MWpuCho4JK9xj6durQN9sAFg7Vr2Tzu9j1Et9nFbcrgueBwIcp4C/Jh7N9u14ZBGIoBJh9hSHh92DyiYW46mNiWTwb2E+ou+9+5+arUMdRAi3OAIy/Ur6LQms0qZ1UhKY/MuAM+3wI3hOtE0U2fhVvqEb7pwDMrpwaaeZEc+rB2GGRlKR2PBC+kE2yhjWwwK6yU7LxvWcda7TLzz9wO8U1uJjRpvs9pzFnGNUHRhDvZqcca8N02UKira1WbnwBxuoPlY5ghRZ09zKD6xh3x7IgrKHpG5z+JJByG/vWOpwFK5utz9qxLUezrhhtVXu0AGIs3dkrwEkSfwLHHNUIHog5TF0f9X3tELoiBgavRVfWP5NcopR16JaLg6RPnwLwQeIGCPHQJzxitpY7Jo7lczzpRFmqk2DWv95xWFG+I1cpw/JpiIZ0XHzJ3S8+dYNstxvVAPY8+YK1a/Pmt+0OfmtiYDaTon85ON6GAESmDXAQ8umGoyWsMxsZAQtN7o19rexn//z3V5iHu6KyvvGHdNyoAeGj5LxDcurfzqwbbbLxAcIeuTV4sKg4bdT4HvRWZo7OdflMh+8gUiJlSk2gtMVPIJw6D5YhDPUlYOdXEUWHDHk+2tUG7PBfXw4MkZSXx/MnVJKbwWsNsfrD4NfwZkjUvNV1dk0yBruDRT/mWAQrtsgIOPuabmts5KWiqla9a0xqMe+rMlyALf2vUErV1KL9C+Y9lPnnr7b4x+dpcZ3sH3Fuz+vMtF1s1egcFFUpD/Cwa0QEQ2HJFXH8oEx9o8e1OqMNGQeOqhOcpbhswb9sVQjR8nVFvJsBGeE+Z3k9oOR122c/V47+C0mhZ3XSH5z prJQZAlj P7MlGfE66D0EZ62DVYzWrJBpn+lfAHYo0RfvXG3Qb2NCutegUvk6Yc/h4NmZ7P3QrU2FhS7udM+t4U5p3tBdlT9CsOAl1FuuWwYemwU3PzzUpN6nY0apeSjDFcRFcyphNzLNijSekMVwWrOO0gBX0eOhoDwx+O9ccyVI+Gl24Vyp8v8r8wTnKEOcsL4ePqsW7/ESzuJM4kC/m4PriYCdpZbV3qyiHS/4p91dK/xR/ZDnyCoE5hSDu5P3fFr8AHovvZc9lKbgVdP+vdy0ieEMJpei7vJky0EdB2X7DKQ8uAjj9CxC5cEPsUDCYpkxGhh+1lgptS0mecJ1q3ldkbCT2Ztgi5vcCt/WfzUtTakQcE96oHq/QmNdnC6eIsVRdwSdB6cE8vACb2BPZ+nWJx3s+u7vzc7DzgQlJAk81bHqtrr9zBPZZQPXAaJbvwNMsl5v6ANAyy/AfUFdrANr5+tpAQX1jafjv1K1OFMmqe9FNdmpsU4qiuAOuC4XMzBWEQLKDD8ZQKhKEwssKm1A1aC9m8BsmdXEzqwa0iBCcSmsUDVi+/1k= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Make Chelsio's TLS offload sendmsg() support MSG_SPLICE_PAGES, splicing in pages from the source iterator if possible and copying the data in otherwise. This allows ->sendpage() to be replaced by something that can handle multiple multipage folios in a single transaction. Signed-off-by: David Howells cc: Ayush Sawal cc: "David S. Miller" cc: Eric Dumazet cc: Jakub Kicinski cc: Paolo Abeni cc: Jens Axboe cc: Matthew Wilcox cc: netdev@vger.kernel.org --- .../ethernet/chelsio/inline_crypto/chtls/chtls_io.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/chelsio/inline_crypto/chtls/chtls_io.c b/drivers/net/ethernet/chelsio/inline_crypto/chtls/chtls_io.c index ae6b17b96bf1..1d08386ac916 100644 --- a/drivers/net/ethernet/chelsio/inline_crypto/chtls/chtls_io.c +++ b/drivers/net/ethernet/chelsio/inline_crypto/chtls/chtls_io.c @@ -1092,7 +1092,17 @@ int chtls_sendmsg(struct sock *sk, struct msghdr *msg, size_t size) if (copy > size) copy = size; - if (skb_tailroom(skb) > 0) { + if (msg->msg_flags & MSG_SPLICE_PAGES) { + err = skb_splice_from_iter(skb, &msg->msg_iter, copy, + sk->sk_allocation); + if (err < 0) { + if (err == -EMSGSIZE) + goto new_buf; + goto do_fault; + } + copy = err; + sk_wmem_queued_add(sk, copy); + } else if (skb_tailroom(skb) > 0) { copy = min(copy, skb_tailroom(skb)); if (is_tls_tx(csk)) copy = min_t(int, copy, csk->tlshws.txleft);