diff --git a/package/network/utils/iproute2/Makefile b/package/network/utils/iproute2/Makefile
index 6d3305b5ad4cd3ba21cfec74019078c4a5d52a74..5e0f19a644675bfa7caed4bb5ecd447dc4f2b3d4 100644
--- a/package/network/utils/iproute2/Makefile
+++ b/package/network/utils/iproute2/Makefile
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=iproute2
 PKG_VERSION:=4.19.0
-PKG_RELEASE:=6
+PKG_RELEASE:=7
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=@KERNEL/linux/utils/net/iproute2
@@ -53,7 +53,7 @@ endef
 define Package/tc
 $(call Package/iproute2/Default)
   TITLE:=Traffic control utility
-  DEPENDS:=+kmod-sched-core +(PACKAGE_devlink||PACKAGE_rdma):libmnl
+  DEPENDS:=+kmod-sched-core +(PACKAGE_devlink||PACKAGE_rdma):libmnl +libelf1
 endef
 
 define Package/genl
diff --git a/package/network/utils/iproute2/patches/190-link-libelf-to-tc-only.patch b/package/network/utils/iproute2/patches/190-link-libelf-to-tc-only.patch
new file mode 100644
index 0000000000000000000000000000000000000000..1c44616253c85cd2138182b897e7400e6c6d6e7d
--- /dev/null
+++ b/package/network/utils/iproute2/patches/190-link-libelf-to-tc-only.patch
@@ -0,0 +1,60 @@
+--- a/configure
++++ b/configure
+@@ -257,8 +257,9 @@ check_elf()
+ 	echo "HAVE_ELF:=y" >>$CONFIG
+ 	echo "yes"
+ 
+-	echo 'CFLAGS += -DHAVE_ELF' `${PKG_CONFIG} libelf --cflags` >> $CONFIG
+-	echo 'LDLIBS += ' `${PKG_CONFIG} libelf --libs` >>$CONFIG
++	echo 'CFLAGS += -DHAVE_ELF' >> $CONFIG
++	echo 'ELF_CFLAGS += ' `${PKG_CONFIG} libelf --cflags` >> $CONFIG
++	echo 'ELF_LDLIBS += ' `${PKG_CONFIG} libelf --libs` >>$CONFIG
+     else
+ 	echo "no"
+     fi
+--- a/lib/Makefile
++++ b/lib/Makefile
+@@ -11,9 +11,17 @@ UTILOBJ = utils.o rt_names.o ll_map.o ll
+ 	inet_proto.o namespace.o json_writer.o json_print.o \
+ 	names.o color.o bpf.o exec.o fs.o
+ 
++ELFOBJ=$(patsubst %.o,%.elf.o,$(UTILOBJ))
++
+ NLOBJ=libgenl.o libnetlink.o
+ 
+-all: libnetlink.a libutil.a
++all: libnetlink.a libutil.a libutil-elf.a
++
++%.o: %.c
++	$(QUIET_CC)$(CC) $(CFLAGS) -UHAVE_ELF $(EXTRA_CFLAGS) -c -o $@ $<
++
++%.elf.o: %.c
++	$(QUIET_CC)$(CC) $(CFLAGS) $(ELF_CFLAGS) $(EXTRA_CFLAGS) -c -o $@ $<
+ 
+ libnetlink.a: $(NLOBJ)
+ 	$(QUIET_AR)$(AR) rcs $@ $^
+@@ -21,7 +29,10 @@ libnetlink.a: $(NLOBJ)
+ libutil.a: $(UTILOBJ) $(ADDLIB)
+ 	$(QUIET_AR)$(AR) rcs $@ $^
+ 
++libutil-elf.a: $(ELFOBJ) $(ADDLIB)
++	$(QUIET_AR)$(AR) rcs $@ $^
++
+ install:
+ 
+ clean:
+-	rm -f $(NLOBJ) $(UTILOBJ) $(ADDLIB) libnetlink.a libutil.a
++	rm -f $(NLOBJ) $(UTILOBJ) $(ELFOBJ) $(ADDLIB) libnetlink.a libutil.a libutil-elf.a
+--- a/tc/Makefile
++++ b/tc/Makefile
+@@ -132,8 +132,8 @@ MODDESTDIR := $(DESTDIR)$(LIBDIR)/tc
+ 
+ all: tc $(TCSO)
+ 
+-tc: $(TCOBJ) $(LIBNETLINK) libtc.a
+-	$(QUIET_LINK)$(CC) $^ $(LDFLAGS) $(LDLIBS) -o $@
++tc: $(TCOBJ) $(subst libutil.a,libutil-elf.a,$(LIBNETLINK)) libtc.a
++	$(QUIET_LINK)$(CC) $^ $(LDFLAGS) $(LDLIBS) $(ELF_LDLIBS) -o $@
+ 
+ libtc.a: $(TCLIB)
+ 	$(QUIET_AR)$(AR) rcs $@ $^