diff --git a/meta-networking/recipes-devtools/python/python3-scapy/0003-libpcap-load-libpcap-even-when-find_library-cannot-l.patch b/meta-networking/recipes-devtools/python/python3-scapy/0003-libpcap-load-libpcap-even-when-find_library-cannot-l.patch
new file mode 100644
index 0000000000..fe4bd431ea
--- /dev/null
+++ b/meta-networking/recipes-devtools/python/python3-scapy/0003-libpcap-load-libpcap-even-when-find_library-cannot-l.patch
@@ -0,0 +1,52 @@
+From 6ee4ddc1b53f792d4e2a7826d65cebeeb9d9eb79 Mon Sep 17 00:00:00 2001
+From: Khem Raj <khem.raj@oss.qualcomm.com>
+Date: Sun, 27 Sep 2026 15:54:57 -0700
+Subject: [PATCH 3/4] libpcap: load libpcap even when find_library() cannot
+ locate it
+
+ctypes.util.find_library() finds libraries through "ldconfig -p", gcc
+or ld. A target system may have none of them; on musl-based systems
+there is no ldconfig cache at all, so find_library("pcap") returns None
+even with libpcap installed, and scapy reports
+
+  OSError: Cannot find libpcap.so library
+
+which disables conf.use_pcap and BPF filter compilation (sniff() with a
+filter, tcpdump(), tdecode(), ...). Fall back to loading libpcap.so.1 or
+libpcap.so by name and let the dynamic loader search its default paths.
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
+---
+ scapy/libs/winpcapy.py | 18 +++++++++++++++---
+ 1 file changed, 15 insertions(+), 3 deletions(-)
+
+diff --git a/scapy/libs/winpcapy.py b/scapy/libs/winpcapy.py
+index 42bfa850..c537b22b 100644
+--- a/scapy/libs/winpcapy.py
++++ b/scapy/libs/winpcapy.py
+@@ -36,9 +36,21 @@ else:
+     # Try to load libpcap
+     SOCKET = c_int
+     _lib_name = find_library("pcap")
+-    if not _lib_name:
+-        raise OSError("Cannot find libpcap.so library")
+-    _lib = CDLL(_lib_name)
++    if _lib_name:
++        _lib = CDLL(_lib_name)
++    else:
++        # ctypes.util.find_library() relies on ldconfig, gcc or ld to
++        # locate libraries, none of which may exist on the target (e.g.
++        # musl-based systems have no "ldconfig -p"). Fall back to letting
++        # the dynamic loader search its default paths.
++        for _lib_name in ("libpcap.so.1", "libpcap.so"):
++            try:
++                _lib = CDLL(_lib_name)
++                break
++            except OSError:
++                pass
++        else:
++            raise OSError("Cannot find libpcap.so library")
+
+
+ ##
diff --git a/meta-networking/recipes-devtools/python/python3-scapy/0004-test-don-t-depend-on-libc-formatting-of-IPv4-compati.patch b/meta-networking/recipes-devtools/python/python3-scapy/0004-test-don-t-depend-on-libc-formatting-of-IPv4-compati.patch
new file mode 100644
index 0000000000..cc238fbd12
--- /dev/null
+++ b/meta-networking/recipes-devtools/python/python3-scapy/0004-test-don-t-depend-on-libc-formatting-of-IPv4-compati.patch
@@ -0,0 +1,37 @@
+From 7602260f82f54cf9b179549c5b03866ec16f68d5 Mon Sep 17 00:00:00 2001
+From: Khem Raj <khem.raj@oss.qualcomm.com>
+Date: Sun, 27 Sep 2026 15:54:57 -0700
+Subject: [PATCH 4/4] test: don't depend on libc formatting of IPv4-compatible
+ addresses
+
+The NetBSD read_routes6() test compares route prefixes such as
+::127.0.0.0 as strings, but scapy formats them with the libc's
+inet_ntop(). glibc prints IPv4-compatible addresses in dotted form,
+while musl only does so for IPv4-mapped (::ffff:a.b.c.d) addresses and
+prints ::7f00:0, ::e000:0 and ::ff00:0, so the test fails on musl.
+Both forms denote the same address; normalise the expected values with
+in6_ptop() so they match whatever the libc produces.
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
+---
+ test/regression.uts | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/test/regression.uts b/test/regression.uts
+index 4c972fa1..b6bb9d6e 100644
+--- a/test/regression.uts
++++ b/test/regression.uts
+@@ -3134,9 +3134,9 @@ assert routes == [
+     ('::', 104, '::1', 'lo0', ['::1'], 1),
+     ('::', 96, '::1', 'lo0', ['::1'], 1),
+     ('::1', 128, '::', 'lo0', ['::1'], 1),
+-    ('::127.0.0.0', 104, '::1', 'lo0', ['::1'], 1),
+-    ('::224.0.0.0', 100, '::1', 'lo0', ['::1'], 1),
+-    ('::255.0.0.0', 104, '::1', 'lo0', ['::1'], 1),
++    (in6_ptop('::127.0.0.0'), 104, '::1', 'lo0', ['::1'], 1),
++    (in6_ptop('::224.0.0.0'), 100, '::1', 'lo0', ['::1'], 1),
++    (in6_ptop('::255.0.0.0'), 104, '::1', 'lo0', ['::1'], 1),
+     ('::ffff:0.0.0.0', 96, '::1', 'lo0', ['::1'], 1),
+     ('2001:db8::', 32, '::1', 'lo0', ['::1'], 1),
+     ('2002::', 24, '::1', 'lo0', ['::1'], 1),
diff --git a/meta-networking/recipes-devtools/python/python3-scapy_2.7.0.bb b/meta-networking/recipes-devtools/python/python3-scapy_2.7.0.bb
index 35a4c6fc36..aa570308a9 100644
--- a/meta-networking/recipes-devtools/python/python3-scapy_2.7.0.bb
+++ b/meta-networking/recipes-devtools/python/python3-scapy_2.7.0.bb
@@ -20,6 +20,8 @@ SRCREV = "1de09fe85fe5c9d60ea5c6de130374e170b5bc28"
 SRC_URI = "git://github.com/secdev/scapy.git;branch=master;protocol=https;tag=v${PV} \
            file://0001-python3-scapy-skip-ICMP-regression-tests-in-ptest.patch \
            file://0002-main-initialize-banner-for-the-default-Python-shell.patch \
+           file://0003-libpcap-load-libpcap-even-when-find_library-cannot-l.patch \
+           file://0004-test-don-t-depend-on-libc-formatting-of-IPv4-compati.patch \
            file://run-ptest"

 UPSTREAM_CHECK_COMMITS = "1"
