From: Kevin Darbyshire-Bryant Date: Sun, 29 Jul 2018 13:56:03 +0000 (+0100) Subject: iproute2: cake: make gso/gro splitting configurable X-Git-Tag: v18.06.2~370 X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fopenwrt.git;a=commitdiff_plain;h=b2a042b5fe0c07af342981294126f0097dc84207 iproute2: cake: make gso/gro splitting configurable This patch makes sch_cake's gso/gro splitting configurable from userspace. To disable breaking apart superpackets in sch_cake: tc qdisc replace dev whatever root cake no-split-gso to enable: tc qdisc replace dev whatever root cake split-gso Signed-off-by: Toke Høiland-Jørgensen Signed-off-by: Dave Taht [pulled from netdev list - no API/ABI change] Signed-off-by: Kevin Darbyshire-Bryant (cherry picked from commit 3e8a9389961cd866b867740a2f71c2a0af97ab56) --- diff --git a/package/network/utils/iproute2/Makefile b/package/network/utils/iproute2/Makefile index 54e0fdede2..f72b86d034 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.16.0 -PKG_RELEASE:=4 +PKG_RELEASE:=5 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=@KERNEL/linux/utils/net/iproute2 diff --git a/package/network/utils/iproute2/patches/950-add-cake-to-tc.patch b/package/network/utils/iproute2/patches/950-add-cake-to-tc.patch index 05142fa95e..1af47c587d 100644 --- a/package/network/utils/iproute2/patches/950-add-cake-to-tc.patch +++ b/package/network/utils/iproute2/patches/950-add-cake-to-tc.patch @@ -776,7 +776,7 @@ TCMODULES += e_bpf.o --- /dev/null +++ b/tc/q_cake.c -@@ -0,0 +1,790 @@ +@@ -0,0 +1,799 @@ +// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause + +/* @@ -858,6 +858,7 @@ +" dual-srchost | dual-dsthost | triple-isolate* ]\n" +" [ nat | nonat* ]\n" +" [ wash | nowash* ]\n" ++" [ split-gso* | no-split-gso ]\n" +" [ ack-filter | ack-filter-aggressive | no-ack-filter* ]\n" +" [ memlimit LIMIT ]\n" +" [ ptm | atm | noatm* ] [ overhead N | conservative | raw* ]\n" @@ -887,6 +888,7 @@ + int nat = -1; + int atm = -1; + int mpu = 0; ++ int split_gso = -1; + + while (argc > 0) { + if (strcmp(*argv, "bandwidth") == 0) { @@ -934,6 +936,10 @@ + wash = 0; + } else if (strcmp(*argv, "wash") == 0) { + wash = 1; ++ } else if (strcmp(*argv, "split-gso") == 0) { ++ split_gso = 1; ++ } else if (strcmp(*argv, "no-split-gso") == 0) { ++ split_gso = 0; + } else if (strcmp(*argv, "flowblind") == 0) { + flowmode = CAKE_FLOW_NONE; + } else if (strcmp(*argv, "srchost") == 0) { @@ -1153,6 +1159,9 @@ + addattr_l(n, 1024, TCA_CAKE_NAT, &nat, sizeof(nat)); + if (wash != -1) + addattr_l(n, 1024, TCA_CAKE_WASH, &wash, sizeof(wash)); ++ if (split_gso != -1) ++ addattr_l(n, 1024, TCA_CAKE_SPLIT_GSO, &split_gso, ++ sizeof(split_gso)); + if (ingress != -1) + addattr_l(n, 1024, TCA_CAKE_INGRESS, &ingress, sizeof(ingress)); + if (ack_filter != -1)