Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 27 Jul 2026 00:10:39 +0000
From:      Bjoern A. Zeeb <bz@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Subject:   git: be02517f6f19 - stable/15 - LinuxKPI: skbuff: add support for frags in linuxkpi_skb_copy()
Message-ID:  <6a66a1ff.27722.81b95ae@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch stable/15 has been updated by bz:

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

commit be02517f6f19a6b8c8f4e850c992c9cd749713bf
Author:     Bjoern A. Zeeb <bz@FreeBSD.org>
AuthorDate: 2026-02-03 22:13:24 +0000
Commit:     Bjoern A. Zeeb <bz@FreeBSD.org>
CommitDate: 2026-07-26 16:48:19 +0000

    LinuxKPI: skbuff: add support for frags in linuxkpi_skb_copy()
    
    Sponsored by:   The FreeBSD Foundation
    
    (cherry picked from commit 1e4ec01603c4b1e0b0eb524f28f731eb5cb5f6dc)
---
 sys/compat/linuxkpi/common/src/linux_skbuff.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/sys/compat/linuxkpi/common/src/linux_skbuff.c b/sys/compat/linuxkpi/common/src/linux_skbuff.c
index a2aa601d594e..5af9633691a6 100644
--- a/sys/compat/linuxkpi/common/src/linux_skbuff.c
+++ b/sys/compat/linuxkpi/common/src/linux_skbuff.c
@@ -191,6 +191,7 @@ linuxkpi_skb_copy(const struct sk_buff *skb, gfp_t gfp)
 	struct skb_shared_info *shinfo;
 	size_t len;
 	unsigned int headroom;
+	uint16_t fragno, count;
 
 	/* Full buffer size + any fragments. */
 	len = skb->end - skb->head + skb->data_len;
@@ -209,10 +210,15 @@ linuxkpi_skb_copy(const struct sk_buff *skb, gfp_t gfp)
 
 	/* Deal with fragments. */
 	shinfo = skb->shinfo;
-	if (shinfo->nr_frags > 0) {
-		printf("%s:%d: NOT YET SUPPORTED; missing %d frags\n",
-		    __func__, __LINE__, shinfo->nr_frags);
-		SKB_TODO();
+	for (count = fragno = 0;
+	    count < shinfo->nr_frags && fragno < nitems(shinfo->frags);
+	    fragno++) {
+		if (shinfo->frags[fragno].page != NULL) {
+			skb_put_data(new,
+			    skb_frag_address(&shinfo->frags[fragno]),
+			    shinfo->frags[fragno].size);
+			count++;
+		}
 	}
 
 	/* Deal with header fields. */


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6a66a1ff.27722.81b95ae>