From nobody Tue Apr 15 23:45:36 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 4Zcgl46MdJz5sYjL; Tue, 15 Apr 2025 23:45:36 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Zcgl45whwz3CG2; Tue, 15 Apr 2025 23:45:36 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1744760736; 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=ItouF9parZMqXxkBQDE3S17DkbSoFdFPavlE8W6WItU=; b=TfHMmSr5g49GcAhyP0KmexPulNIzV2C+TjkajjsaI+i/YSCLgquJKnUbWrKXya81iQldHZ MOMqc6lkZdluCpcvZRPaSxZozyCO2F80YZ7jcjhf9p5p3yz+zG4/D7o9dFoUa5ctmH90a2 71ukK4+pX8djvY495Hv5NRuA9cWKb4Mn4xHz85T9Nql5rPmdk13xx08izHlGjccJHf97d+ JcMuRSxC4uqEFJ4JNiz+Y/cSaspF7CAoOfejkhE7An+tyjTCKTvpSKDvmdRzl7goK1H7cg tCoqEuhIv85RB9uq5UKHjZEyKhKC+jWphjvmzZpb6f+v/Cr82Pdg+l+Dtff4iQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1744760736; a=rsa-sha256; cv=none; b=JPTXMzDs8l/u2Uwz0IlUFk6BIbE7kn0V+XcT0uVhfLg5Qs9CZV4L2fmHSvzhduRiADchu/ qlmacI/jVs9G8nfb/Cm7hV4rGYNRxOPKgL2jfOEBO5T8ikpcVf/VnqKEkgEybFCr3VduNw 6ceqWj+IZd60Rk96SuMh9pmJBGjFHl4KNvRL2vFsZdnfoQcsv/eA1vOQUwQxAdMaztIF4l JG2UKYgaFSYwHLrH0b6PXjBLxTsfWnpvm1tAeQ3PB4DPjuZMonBZN90IuDKPHj5E8m9H4x IJ8mNRdqVYRkbg6p5H5WgApC6Fb+vjtMNxwn8jZrHZ1ZkFxw5+FeDmLmkChevg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1744760736; 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=ItouF9parZMqXxkBQDE3S17DkbSoFdFPavlE8W6WItU=; b=CViYd23I/4yw8oDC4D3jAN05/f0wFQxYlvxxMCvTfwa+B3qI+cuFuKBobVI7GlqkPS+1du JVq0Vwvn6lcpDaAf8rJp3SPLu2CGzkRTUdbk3/39PuVE/mu/EmFdgHdoLq16Ecd9LBkmzv LLmq9zezlcZQJl/LBuFFKCHnji/3njdCDFhtRGrx8tDcY9M7EIPyf8APQLAHfoZ5JUDuNH Wop6vv/FmrgtTaaWK4ubNeQDRiPW2fgXVQajDqdptIi4/81ZJ3U7wnAI1FEb86kOQS7Of+ TYNsQLmUMqxoIO9M+RLcO13VM63QcfHxwNku0Xn59WizJxBI+f4RPXLA+CLa7g== 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 4Zcgl45JNFzvjw; Tue, 15 Apr 2025 23:45:36 +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 53FNjaWW014572; Tue, 15 Apr 2025 23:45:36 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 53FNjadl014569; Tue, 15 Apr 2025 23:45:36 GMT (envelope-from git) Date: Tue, 15 Apr 2025 23:45:36 GMT Message-Id: <202504152345.53FNjadl014569@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Andrew Gallatin Subject: git: b836c229aa5a - main - ip6: leave room for link headers in UDP 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: gallatin X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: b836c229aa5ac345114f5986b6034ad3ed760da1 Auto-Submitted: auto-generated The branch main has been updated by gallatin: URL: https://cgit.FreeBSD.org/src/commit/?id=b836c229aa5ac345114f5986b6034ad3ed760da1 commit b836c229aa5ac345114f5986b6034ad3ed760da1 Author: Andrew Gallatin AuthorDate: 2025-04-15 23:37:06 +0000 Commit: Andrew Gallatin CommitDate: 2025-04-15 23:44:56 +0000 ip6: leave room for link headers in UDP UDP over IPv6 was not leaving space for link headers, resulting in the ethernet header being placed in its own mbuf at the front of the mbuf chain sent down to the NIC driver. This is inefficient, in terms of allocating 2x as many header mbufs as needed, and its also confusing for drivers which may expect to find ether/ip/l4 headers together in the same mbuf. Reviewed by: glebius, rrs, tuexen Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D49840 This is a port of e6ccd7093618, which was done by Robert Watson in 2004 for IP4 --- sys/netinet6/udp6_usrreq.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/sys/netinet6/udp6_usrreq.c b/sys/netinet6/udp6_usrreq.c index c44510e3b65f..c8f91fff2b76 100644 --- a/sys/netinet6/udp6_usrreq.c +++ b/sys/netinet6/udp6_usrreq.c @@ -860,14 +860,18 @@ udp6_send(struct socket *so, int flags_arg, struct mbuf *m, hlen = sizeof(struct ip6_hdr); /* - * Calculate data length and get a mbuf - * for UDP and IP6 headers. + * Calculate data length and get a mbuf for UDP, IP6, and possible + * link-layer headers. Immediate slide the data pointer back forward + * since we won't use that space at this layer. */ - M_PREPEND(m, hlen + sizeof(struct udphdr), M_NOWAIT); + M_PREPEND(m, hlen + sizeof(struct udphdr) + max_linkhdr, M_NOWAIT); if (m == NULL) { error = ENOBUFS; goto release; } + m->m_data += max_linkhdr; + m->m_len -= max_linkhdr; + m->m_pkthdr.len -= max_linkhdr; /* * Stuff checksum and output datagram.