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 <toke@toke.dk> Signed-off-by: Dave Taht <dave.taht@gmail.com> [pulled from netdev list - no API/ABI change] Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
This commit is contained in:
parent
4f3c9a63b2
commit
13c66f8820
2 changed files with 11 additions and 2 deletions
|
@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=iproute2
|
PKG_NAME:=iproute2
|
||||||
PKG_VERSION:=4.17.0
|
PKG_VERSION:=4.17.0
|
||||||
PKG_RELEASE:=2
|
PKG_RELEASE:=3
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
||||||
PKG_SOURCE_URL:=@KERNEL/linux/utils/net/iproute2
|
PKG_SOURCE_URL:=@KERNEL/linux/utils/net/iproute2
|
||||||
|
|
|
@ -776,7 +776,7 @@
|
||||||
TCMODULES += e_bpf.o
|
TCMODULES += e_bpf.o
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/tc/q_cake.c
|
+++ b/tc/q_cake.c
|
||||||
@@ -0,0 +1,790 @@
|
@@ -0,0 +1,799 @@
|
||||||
+// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
|
+// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
|
||||||
+
|
+
|
||||||
+/*
|
+/*
|
||||||
|
@ -858,6 +858,7 @@
|
||||||
+" dual-srchost | dual-dsthost | triple-isolate* ]\n"
|
+" dual-srchost | dual-dsthost | triple-isolate* ]\n"
|
||||||
+" [ nat | nonat* ]\n"
|
+" [ nat | nonat* ]\n"
|
||||||
+" [ wash | nowash* ]\n"
|
+" [ wash | nowash* ]\n"
|
||||||
|
+" [ split-gso* | no-split-gso ]\n"
|
||||||
+" [ ack-filter | ack-filter-aggressive | no-ack-filter* ]\n"
|
+" [ ack-filter | ack-filter-aggressive | no-ack-filter* ]\n"
|
||||||
+" [ memlimit LIMIT ]\n"
|
+" [ memlimit LIMIT ]\n"
|
||||||
+" [ ptm | atm | noatm* ] [ overhead N | conservative | raw* ]\n"
|
+" [ ptm | atm | noatm* ] [ overhead N | conservative | raw* ]\n"
|
||||||
|
@ -887,6 +888,7 @@
|
||||||
+ int nat = -1;
|
+ int nat = -1;
|
||||||
+ int atm = -1;
|
+ int atm = -1;
|
||||||
+ int mpu = 0;
|
+ int mpu = 0;
|
||||||
|
+ int split_gso = -1;
|
||||||
+
|
+
|
||||||
+ while (argc > 0) {
|
+ while (argc > 0) {
|
||||||
+ if (strcmp(*argv, "bandwidth") == 0) {
|
+ if (strcmp(*argv, "bandwidth") == 0) {
|
||||||
|
@ -934,6 +936,10 @@
|
||||||
+ wash = 0;
|
+ wash = 0;
|
||||||
+ } else if (strcmp(*argv, "wash") == 0) {
|
+ } else if (strcmp(*argv, "wash") == 0) {
|
||||||
+ wash = 1;
|
+ 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) {
|
+ } else if (strcmp(*argv, "flowblind") == 0) {
|
||||||
+ flowmode = CAKE_FLOW_NONE;
|
+ flowmode = CAKE_FLOW_NONE;
|
||||||
+ } else if (strcmp(*argv, "srchost") == 0) {
|
+ } else if (strcmp(*argv, "srchost") == 0) {
|
||||||
|
@ -1153,6 +1159,9 @@
|
||||||
+ addattr_l(n, 1024, TCA_CAKE_NAT, &nat, sizeof(nat));
|
+ addattr_l(n, 1024, TCA_CAKE_NAT, &nat, sizeof(nat));
|
||||||
+ if (wash != -1)
|
+ if (wash != -1)
|
||||||
+ addattr_l(n, 1024, TCA_CAKE_WASH, &wash, sizeof(wash));
|
+ 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)
|
+ if (ingress != -1)
|
||||||
+ addattr_l(n, 1024, TCA_CAKE_INGRESS, &ingress, sizeof(ingress));
|
+ addattr_l(n, 1024, TCA_CAKE_INGRESS, &ingress, sizeof(ingress));
|
||||||
+ if (ack_filter != -1)
|
+ if (ack_filter != -1)
|
||||||
|
|
Loading…
Reference in a new issue