iproute2: cake: make gso/gro splitting configurable
[openwrt/openwrt.git] / package / network / utils / iproute2 / patches / 190-add-cake-to-tc.patch
index 76594cca498c4d6bb347bff463a4fab6e787c920..b44efac974ad56d94f450744483c92f358c5b456 100644 (file)
  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
 +
 +/*
 +"                  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"
 +      int nat = -1;
 +      int atm = -1;
 +      int mpu = 0;
++      int split_gso = -1;
 +
 +      while (argc > 0) {
 +              if (strcmp(*argv, "bandwidth") == 0) {
 +                      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) {
 +              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)