Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 21 Oct 2025 07:53:14 GMT
From:      "Bjoern A. Zeeb" <bz@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 7c31cdfa408a - main - LinuxKPI: page_pool headers moved; add netmem.h
Message-ID:  <202510210753.59L7rEhh014555@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by bz:

URL: https://cgit.FreeBSD.org/src/commit/?id=7c31cdfa408a4ebce7a3e10d29056a15c28bc092

commit 7c31cdfa408a4ebce7a3e10d29056a15c28bc092
Author:     Bjoern A. Zeeb <bz@FreeBSD.org>
AuthorDate: 2025-10-19 22:57:13 +0000
Commit:     Bjoern A. Zeeb <bz@FreeBSD.org>
CommitDate: 2025-10-21 07:49:40 +0000

    LinuxKPI: page_pool headers moved; add netmem.h
    
    page_pool headers were not used yet;  they were created for mt76 but
    are without functionality.  Upstream has migrated them for v6.17 and
    split them up into multiple files.  Also add netmem.h which the little
    needed is directly related to page pools.
    
    MFC after:      3 days
---
 sys/compat/linuxkpi/common/include/net/netmem.h    |  21 ++++
 sys/compat/linuxkpi/common/include/net/page_pool.h | 119 ---------------------
 .../common/include/net/page_pool/helpers.h         |  79 ++++++++++++++
 .../linuxkpi/common/include/net/page_pool/types.h  |  36 +++++++
 4 files changed, 136 insertions(+), 119 deletions(-)

diff --git a/sys/compat/linuxkpi/common/include/net/netmem.h b/sys/compat/linuxkpi/common/include/net/netmem.h
new file mode 100644
index 000000000000..c8de09a2e8c2
--- /dev/null
+++ b/sys/compat/linuxkpi/common/include/net/netmem.h
@@ -0,0 +1,21 @@
+/*-
+ * Copyright (c) 2023-2025 Bjoern A. Zeeb
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#ifndef	_LINUXKPI_NET_NETMEM_H
+#define	_LINUXKPI_NET_NETMEM_H
+
+struct page_pool;
+
+struct netmem_desc {
+	struct page_pool	*pp;
+};
+
+#define	pp_page_to_nmdesc(page)						\
+    (_Generic((page),							\
+	const struct page *:	(const struct netmem_desc *)(page),	\
+	struct page *:		(struct netmem_desc *)(page)))
+
+#endif	/* _LINUXKPI_NET_NETMEM_H */
diff --git a/sys/compat/linuxkpi/common/include/net/page_pool.h b/sys/compat/linuxkpi/common/include/net/page_pool.h
deleted file mode 100644
index 2dc8f74b31f3..000000000000
--- a/sys/compat/linuxkpi/common/include/net/page_pool.h
+++ /dev/null
@@ -1,119 +0,0 @@
-/*-
- * Copyright (c) 2023 Bjoern A. Zeeb
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef	_LINUXKPI_NET_PAGE_POOL_H
-#define	_LINUXKPI_NET_PAGE_POOL_H
-
-#include <linux/kernel.h>	/* pr_debug */
-#include <linux/types.h>
-#include <linux/dma-mapping.h>
-#include <linux/netdevice.h>
-
-struct device;
-
-struct page_pool_params {
-	struct device			*dev;
-	uint32_t			flags;
-	uint32_t			order;
-	uint32_t			pool_size;
-	uint32_t			max_len;
-	uint32_t			offset;
-	int				nid;		/* NUMA */
-	enum dma_data_direction		dma_dir;
-	struct napi_struct		*napi;
-};
-
-struct page_pool {
-};
-
-#define	PP_FLAG_DMA_MAP		BIT(0)
-#define	PP_FLAG_DMA_SYNC_DEV	BIT(1)
-#define	PP_FLAG_PAGE_FRAG	BIT(2)
-
-static inline struct page_pool *
-page_pool_create(const struct page_pool_params *ppparams)
-{
-
-	pr_debug("%s: TODO\n", __func__);
-	return (NULL);
-}
-
-static inline void
-page_pool_destroy(struct page_pool *ppool)
-{
-
-	pr_debug("%s: TODO\n", __func__);
-}
-
-static inline struct page *
-page_pool_dev_alloc_frag(struct page_pool *ppool, uint32_t *offset,
-    size_t size)
-{
-
-	pr_debug("%s: TODO\n", __func__);
-	return (NULL);
-}
-
-static inline dma_addr_t
-page_pool_get_dma_addr(struct page *page)
-{
-
-	pr_debug("%s: TODO\n", __func__);
-	return (0);
-}
-
-static inline enum dma_data_direction
-page_pool_get_dma_dir(const struct page_pool *ppool)
-{
-
-	pr_debug("%s: TODO\n", __func__);
-	return (DMA_BIDIRECTIONAL);
-}
-
-static inline void
-page_pool_put_full_page(struct page_pool *ppool, struct page *page,
-    bool allow_direct)
-{
-
-	pr_debug("%s: TODO\n", __func__);
-}
-
-static inline int
-page_pool_ethtool_stats_get_count(void)
-{
-
-	pr_debug("%s: TODO\n", __func__);
-	return (0);
-}
-
-static inline uint8_t *
-page_pool_ethtool_stats_get_strings(uint8_t *x)
-{
-
-	pr_debug("%s: TODO\n", __func__);
-	return (x);
-}
-
-#endif	/* _LINUXKPI_NET_PAGE_POOL_H */
diff --git a/sys/compat/linuxkpi/common/include/net/page_pool/helpers.h b/sys/compat/linuxkpi/common/include/net/page_pool/helpers.h
new file mode 100644
index 000000000000..3469c39c7757
--- /dev/null
+++ b/sys/compat/linuxkpi/common/include/net/page_pool/helpers.h
@@ -0,0 +1,79 @@
+/*-
+ * Copyright (c) 2023-2025 Bjoern A. Zeeb
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#ifndef	_LINUXKPI_NET_PAGE_POOL_HELPERS_H
+#define	_LINUXKPI_NET_PAGE_POOL_HELPERS_H
+
+#include <linux/kernel.h>	/* pr_debug */
+#include <linux/types.h>
+#include <linux/dma-mapping.h>
+#include <net/page_pool/types.h>
+
+static inline struct page_pool *
+page_pool_create(const struct page_pool_params *ppparams)
+{
+
+	pr_debug("%s: TODO\n", __func__);
+	return (NULL);
+}
+
+static inline void
+page_pool_destroy(struct page_pool *ppool)
+{
+
+	pr_debug("%s: TODO\n", __func__);
+}
+
+static inline struct page *
+page_pool_dev_alloc_frag(struct page_pool *ppool, uint32_t *offset,
+    size_t size)
+{
+
+	pr_debug("%s: TODO\n", __func__);
+	return (NULL);
+}
+
+static inline dma_addr_t
+page_pool_get_dma_addr(struct page *page)
+{
+
+	pr_debug("%s: TODO\n", __func__);
+	return (0);
+}
+
+static inline enum dma_data_direction
+page_pool_get_dma_dir(const struct page_pool *ppool)
+{
+
+	pr_debug("%s: TODO\n", __func__);
+	return (DMA_BIDIRECTIONAL);
+}
+
+static inline void
+page_pool_put_full_page(struct page_pool *ppool, struct page *page,
+    bool allow_direct)
+{
+
+	pr_debug("%s: TODO\n", __func__);
+}
+
+static inline int
+page_pool_ethtool_stats_get_count(void)
+{
+
+	pr_debug("%s: TODO\n", __func__);
+	return (0);
+}
+
+static inline uint8_t *
+page_pool_ethtool_stats_get_strings(uint8_t *x)
+{
+
+	pr_debug("%s: TODO\n", __func__);
+	return (x);
+}
+
+#endif	/* _LINUXKPI_NET_PAGE_POOL_HELPERS_H */
diff --git a/sys/compat/linuxkpi/common/include/net/page_pool/types.h b/sys/compat/linuxkpi/common/include/net/page_pool/types.h
new file mode 100644
index 000000000000..6747be50b9b2
--- /dev/null
+++ b/sys/compat/linuxkpi/common/include/net/page_pool/types.h
@@ -0,0 +1,36 @@
+/*-
+ * Copyright (c) 2023-2025 Bjoern A. Zeeb
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#ifndef	_LINUXKPI_NET_PAGE_POOL_TYPES_H
+#define	_LINUXKPI_NET_PAGE_POOL_TYPES_H
+
+#include <linux/types.h>
+#include <linux/dma-mapping.h>
+#include <net/netmem.h>
+
+struct device;
+struct napi_struct;
+
+struct page_pool_params {
+	struct device			*dev;
+	uint32_t			flags;
+	uint32_t			order;
+	uint32_t			pool_size;
+	uint32_t			max_len;
+	uint32_t			offset;
+	int				nid;		/* NUMA */
+	enum dma_data_direction		dma_dir;
+	struct napi_struct		*napi;
+};
+
+struct page_pool {
+};
+
+#define	PP_FLAG_DMA_MAP		BIT(0)
+#define	PP_FLAG_DMA_SYNC_DEV	BIT(1)
+#define	PP_FLAG_PAGE_FRAG	BIT(2)
+
+#endif	/* _LINUXKPI_NET_PAGE_POOL_TYPES_H */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202510210753.59L7rEhh014555>