diff --git a/recipes-core/systemd/systemd/0001-networkd-fix-link_up-12505.patch b/recipes-core/systemd/systemd/0001-networkd-fix-link_up-12505.patch
deleted file mode 100644
index 1c10105..0000000
--- a/recipes-core/systemd/systemd/0001-networkd-fix-link_up-12505.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-From 467ac87e75c1045bc6affa89de99e21c4e7a1762 Mon Sep 17 00:00:00 2001
-From: Susant Sahani <ssahani@gmail.com>
-Date: Thu, 9 May 2019 07:35:35 +0530
-Subject: [PATCH 1/2] networkd: fix link_up() (#12505)
-
-Fillup IFLA_INET6_ADDR_GEN_MODE while we do link_up.
-
-Fixes the following error:
-```
-dummy-test: Could not bring up interface: Invalid argument
-```
-
-After reading the kernel code when we do a link up
-```
-net/core/rtnetlink.c
-IFLA_AF_SPEC
- af_ops->set_link_af(dev, af);
-  inet6_set_link_af
-   if (tb[IFLA_INET6_ADDR_GEN_MODE])
-             Here it looks for IFLA_INET6_ADDR_GEN_MODE
-```
-Since link up we didn't filling up that it's failing.
-
-Closes #12504.
-
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- src/network/networkd-link.c | 15 +++++++++++++++
- 1 file changed, 15 insertions(+)
-
-diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c
-index 3e334c8d29cc..3a0706e0a894 100644
---- a/src/network/networkd-link.c
-+++ b/src/network/networkd-link.c
-@@ -2079,6 +2079,8 @@ static int link_up(Link *link) {
-         }
- 
-         if (link_ipv6_enabled(link)) {
-+                uint8_t ipv6ll_mode;
-+
-                 r = sd_netlink_message_open_container(req, IFLA_AF_SPEC);
-                 if (r < 0)
-                         return log_link_error_errno(link, r, "Could not open IFLA_AF_SPEC container: %m");
-@@ -2094,6 +2096,19 @@ static int link_up(Link *link) {
-                                 return log_link_error_errno(link, r, "Could not append IFLA_INET6_TOKEN: %m");
-                 }
- 
-+                if (!link_ipv6ll_enabled(link))
-+                        ipv6ll_mode = IN6_ADDR_GEN_MODE_NONE;
-+                else if (sysctl_read_ip_property(AF_INET6, link->ifname, "stable_secret", NULL) < 0)
-+                        /* The file may not exist. And event if it exists, when stable_secret is unset,
-+                         * reading the file fails with EIO. */
-+                        ipv6ll_mode = IN6_ADDR_GEN_MODE_EUI64;
-+                else
-+                        ipv6ll_mode = IN6_ADDR_GEN_MODE_STABLE_PRIVACY;
-+
-+                r = sd_netlink_message_append_u8(req, IFLA_INET6_ADDR_GEN_MODE, ipv6ll_mode);
-+                if (r < 0)
-+                        return log_link_error_errno(link, r, "Could not append IFLA_INET6_ADDR_GEN_MODE: %m");
-+
-                 r = sd_netlink_message_close_container(req);
-                 if (r < 0)
-                         return log_link_error_errno(link, r, "Could not close AF_INET6 container: %m");
--- 
-2.20.1
-
diff --git a/recipes-core/systemd/systemd/0002-network-do-not-send-ipv6-token-to-kernel.patch b/recipes-core/systemd/systemd/0002-network-do-not-send-ipv6-token-to-kernel.patch
deleted file mode 100644
index c359a1f..0000000
--- a/recipes-core/systemd/systemd/0002-network-do-not-send-ipv6-token-to-kernel.patch
+++ /dev/null
@@ -1,96 +0,0 @@
-From e6be20d87c400258a966b0bb0e1c4c94b91017df Mon Sep 17 00:00:00 2001
-From: Yu Watanabe <watanabe.yu+github@gmail.com>
-Date: Thu, 9 May 2019 14:39:46 +0900
-Subject: [PATCH 2/2] network: do not send ipv6 token to kernel
-
-We disabled kernel RA support. Then, we should not send
-IFLA_INET6_TOKEN.
-Thus, we do not need to send IFLA_INET6_ADDR_GEN_MODE twice.
-
-Follow-up for 0e2fdb83bb5e22047e0c7cc058b415d0e93f02cf and
-4eb086a38712ea98faf41e075b84555b11b54362.
-
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- src/network/networkd-link.c | 51 +++++--------------------------------
- 1 file changed, 6 insertions(+), 45 deletions(-)
-
-diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c
-index 3a0706e0a894..b709aaa71b4d 100644
---- a/src/network/networkd-link.c
-+++ b/src/network/networkd-link.c
-@@ -1985,6 +1985,9 @@ static int link_configure_addrgen_mode(Link *link) {
-         assert(link->manager);
-         assert(link->manager->rtnl);
- 
-+        if (!socket_ipv6_is_supported())
-+                return 0;
-+
-         log_link_debug(link, "Setting address genmode for link");
- 
-         r = sd_rtnl_message_new_link(link->manager->rtnl, &req, RTM_SETLINK, link->ifindex);
-@@ -2078,46 +2081,6 @@ static int link_up(Link *link) {
-                         return log_link_error_errno(link, r, "Could not set MAC address: %m");
-         }
- 
--        if (link_ipv6_enabled(link)) {
--                uint8_t ipv6ll_mode;
--
--                r = sd_netlink_message_open_container(req, IFLA_AF_SPEC);
--                if (r < 0)
--                        return log_link_error_errno(link, r, "Could not open IFLA_AF_SPEC container: %m");
--
--                /* if the kernel lacks ipv6 support setting IFF_UP fails if any ipv6 options are passed */
--                r = sd_netlink_message_open_container(req, AF_INET6);
--                if (r < 0)
--                        return log_link_error_errno(link, r, "Could not open AF_INET6 container: %m");
--
--                if (!in_addr_is_null(AF_INET6, &link->network->ipv6_token)) {
--                        r = sd_netlink_message_append_in6_addr(req, IFLA_INET6_TOKEN, &link->network->ipv6_token.in6);
--                        if (r < 0)
--                                return log_link_error_errno(link, r, "Could not append IFLA_INET6_TOKEN: %m");
--                }
--
--                if (!link_ipv6ll_enabled(link))
--                        ipv6ll_mode = IN6_ADDR_GEN_MODE_NONE;
--                else if (sysctl_read_ip_property(AF_INET6, link->ifname, "stable_secret", NULL) < 0)
--                        /* The file may not exist. And event if it exists, when stable_secret is unset,
--                         * reading the file fails with EIO. */
--                        ipv6ll_mode = IN6_ADDR_GEN_MODE_EUI64;
--                else
--                        ipv6ll_mode = IN6_ADDR_GEN_MODE_STABLE_PRIVACY;
--
--                r = sd_netlink_message_append_u8(req, IFLA_INET6_ADDR_GEN_MODE, ipv6ll_mode);
--                if (r < 0)
--                        return log_link_error_errno(link, r, "Could not append IFLA_INET6_ADDR_GEN_MODE: %m");
--
--                r = sd_netlink_message_close_container(req);
--                if (r < 0)
--                        return log_link_error_errno(link, r, "Could not close AF_INET6 container: %m");
--
--                r = sd_netlink_message_close_container(req);
--                if (r < 0)
--                        return log_link_error_errno(link, r, "Could not close IFLA_AF_SPEC container: %m");
--        }
--
-         r = netlink_call_async(link->manager->rtnl, NULL, req, link_up_handler,
-                                link_netlink_destroy_callback, link);
-         if (r < 0)
-@@ -3204,11 +3167,9 @@ static int link_configure(Link *link) {
-         if (r < 0)
-                 return r;
- 
--        if (socket_ipv6_is_supported()) {
--                r = link_configure_addrgen_mode(link);
--                if (r < 0)
--                        return r;
--        }
-+        r = link_configure_addrgen_mode(link);
-+        if (r < 0)
-+                return r;
- 
-         return link_configure_after_setting_mtu(link);
- }
--- 
-2.20.1
-
diff --git a/recipes-core/systemd/systemd_%.bbappend b/recipes-core/systemd/systemd_%.bbappend
index 5660e7c..f9d8301 100644
--- a/recipes-core/systemd/systemd_%.bbappend
+++ b/recipes-core/systemd/systemd_%.bbappend
@@ -8,10 +8,6 @@
 SRC_URI += "file://default.network"
 SRC_URI += "file://0001-sd-bus-Don-t-automatically-add-ObjectManager.patch"
 
-# Backport from master to fix https://github.com/systemd/systemd/issues/12784
-SRC_URI += "file://0001-networkd-fix-link_up-12505.patch"
-SRC_URI += "file://0002-network-do-not-send-ipv6-token-to-kernel.patch"
-
 RRECOMMENDS_${PN} += "obmc-targets"
 FILES_${PN} += "${systemd_unitdir}/network/default.network"
 
