From nobody Fri Jul 17 15:49:28 2026 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 4h1vVK0mSTz6m40l for ; Fri, 17 Jul 2026 15:49:29 +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 "YR1" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4h1vVJ1rQBz3qft for ; Fri, 17 Jul 2026 15:49:28 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1784303368; 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=4ZnSQqDEY/IWq+LLT7fbNwPhijl1DsV/5KNUWDFViJc=; b=c6D8LK4pBsJOCICI0o7tkS+Lrhz+f0GrOSegT2M4O1I23REa+glwx6+JEyGSFDoYcu2geW uTMtDnWDHuDgx/s3EgUwGl3StzBDIUL6VH2M3ahfmD4j5Q0uhbg1zE630bVqJSXSvbH45n GsaCSe2S5cqgS71Ur/YrRtz1nw8GGUJiKB45jBpzdh3rI8I42HG7FlPc8fFcac+Syn5Cnu GNdsJB6x6iHbG8wbZDOMA9AerJTelF7vAQVi8WCmNhtHYgrrRhhqpz/302YwMtUdysLmU+ N+svvrYNv9C4F9FucvsE4ljkJyov6Ti8QY8NmZAOe/8m1itIM9SAGKPNG71VdA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1784303368; a=rsa-sha256; cv=none; b=ovjCMy1RJGZjH+YCDb5xwAZ0FwL2XrKulfIcCGpkjyhCgN2mfWw/LaFTzfYUby/uBOFAF1 UNZqpHBd2HRmXshKM+W+qhYMmQXpr/dQ5TqBpuQTQOIAwurJp0sLRsMUyfCu0fANtU3aAq OBJ1WojhQiw3zr+IsSgQBjQQrOVm59pce3rnvNCpy7N6qqDwGl+F4roAopLRrXsww11r2d 39mCsUNCG+3EaBHWNjg0WADL2LC+bg3/Yp5J6+SW757oQwFF4jlboCD7kSAaNDyPEKa9sV tS4GndPW/9TtwncEN7AAsdS5k9+A9u5w9LPY9+tzORqEsVjry81Pvk7drE3yMw== 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=1784303368; 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=4ZnSQqDEY/IWq+LLT7fbNwPhijl1DsV/5KNUWDFViJc=; b=QtDUX3cMrfEX5cTFAVKA6eJg3HOs0I+foUt5iiI+H3bfQQ02jiQV1ERRT8bdSdNCA65baa nF9KthpQMlzrNeMR5YTnhLq+PvsZGe8BQAAmQ5yB2nFBHTL7aXEtCf0VsWL4Ynt6ikq7oy WMoNIi3+oNwgvhCZkQrqjkvRZLpeA1B30nkyUUH39KxKY3kwsM9ZjI/fFojJ92WaY0SLi6 KwxEGuxbefWhXgopAG/3HTVO3M0VHbfUOJn4Gbfoxy+54oX6KV29vJhNDCW7GPkJCENftV XhCTL1H4Vv17nLUnN63Qo3pVzC/uWDLcI1z25Xbx1j3hShgPwZ/3cqip2U3Ncg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4h1vVJ0TsXztWB for ; Fri, 17 Jul 2026 15:49:28 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1ee44 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 17 Jul 2026 15:49:28 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Bjoern A. Zeeb Subject: git: e4795d3dbee7 - main - LinuxKPI: skbuff: add initial page pool support 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 List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bz X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: e4795d3dbee71c463429e2901dad111fbc2d08fc Auto-Submitted: auto-generated Date: Fri, 17 Jul 2026 15:49:28 +0000 Message-Id: <6a5a4f08.1ee44.38985406@gitrepo.freebsd.org> The branch main has been updated by bz: URL: https://cgit.FreeBSD.org/src/commit/?id=e4795d3dbee71c463429e2901dad111fbc2d08fc commit e4795d3dbee71c463429e2901dad111fbc2d08fc Author: Bjoern A. Zeeb AuthorDate: 2026-07-17 11:02:45 +0000 Commit: Bjoern A. Zeeb CommitDate: 2026-07-17 15:48:54 +0000 LinuxKPI: skbuff: add initial page pool support Add an internal flag which is set by skb_mark_for_recycle() and upon "skb_free" then selects whether the skb is freed or returned to the page pool. There will likely be more details to figure out once the LinuxKPI page work is done and we support more of the page pool than the bare minimum. Sponsored by: The FreeBSD Foundation MFC after: 3 days --- sys/compat/linuxkpi/common/include/linux/skbuff.h | 5 +++-- sys/compat/linuxkpi/common/src/linux_skbuff.c | 9 ++++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/sys/compat/linuxkpi/common/include/linux/skbuff.h b/sys/compat/linuxkpi/common/include/linux/skbuff.h index 9434655fc9f4..77ef47064fa5 100644 --- a/sys/compat/linuxkpi/common/include/linux/skbuff.h +++ b/sys/compat/linuxkpi/common/include/linux/skbuff.h @@ -182,6 +182,7 @@ struct sk_buff { uint16_t qmap; /* queue mapping */ uint16_t _flags; /* Internal flags. */ #define _SKB_FLAGS_SKBEXTFRAG 0x0001 +#define _SKB_PP_RECYCLE 0x0010 uint16_t l3hdroff; /* network header offset from *head */ uint16_t l4hdroff; /* transport header offset from *head */ uint16_t mac_header; /* offset of mac_header */ @@ -263,6 +264,7 @@ static inline void dev_kfree_skb(struct sk_buff *skb) { SKB_TRACE(skb); + SKB_IMPROVE("Need to be able to deal with page_pool"); kfree_skb(skb); } @@ -1166,8 +1168,7 @@ static inline void skb_mark_for_recycle(struct sk_buff *skb) { SKB_TRACE(skb); - /* page_pool */ - SKB_TODO(); + skb->_flags |= _SKB_PP_RECYCLE; } static inline int diff --git a/sys/compat/linuxkpi/common/src/linux_skbuff.c b/sys/compat/linuxkpi/common/src/linux_skbuff.c index d57c277c3267..6908101f25af 100644 --- a/sys/compat/linuxkpi/common/src/linux_skbuff.c +++ b/sys/compat/linuxkpi/common/src/linux_skbuff.c @@ -55,6 +55,8 @@ #include #endif +#include + SYSCTL_DECL(_compat_linuxkpi); SYSCTL_NODE(_compat_linuxkpi, OID_AUTO, skb, CTLFLAG_RW | CTLFLAG_MPSAFE, 0, "LinuxKPI skbuff"); @@ -349,7 +351,12 @@ linuxkpi_kfree_skb(struct sk_buff *skb) shinfo->frags[fragno].size = 0; shinfo->frags[fragno].offset = 0; shinfo->frags[fragno].page = NULL; - __free_page(p); +#ifdef PAGE_IS_LKPI_PAGE + if ((skb->_flags & _SKB_PP_RECYCLE) != 0) + page_pool_put_full_page(p->pp, p, false); + else +#endif + __free_page(p); count++; } }