cake/iproute2/tc: Add diffserv5 LE tin
[openwrt/staging/ldir.git] / package / network / utils / iproute2 / patches / 310-cake-diffserv5.patch
diff --git a/package/network/utils/iproute2/patches/310-cake-diffserv5.patch b/package/network/utils/iproute2/patches/310-cake-diffserv5.patch
new file mode 100644 (file)
index 0000000..943d883
--- /dev/null
@@ -0,0 +1,69 @@
+From 99d00b3202c89b39a20ad97d969f198cadfb1f41 Mon Sep 17 00:00:00 2001
+From: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
+Date: Thu, 28 May 2020 09:51:40 +0100
+Subject: [PATCH] cake: diffserv5
+
+Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
+---
+ include/uapi/linux/pkt_sched.h | 3 ++-
+ tc/q_cake.c                    | 9 ++++++++-
+ 2 files changed, 10 insertions(+), 2 deletions(-)
+
+--- a/include/uapi/linux/pkt_sched.h
++++ b/include/uapi/linux/pkt_sched.h
+@@ -1157,7 +1157,7 @@ enum {
+       CAKE_FLOW_DUAL_SRC, /* = CAKE_FLOW_SRC_IP | CAKE_FLOW_FLOWS */
+       CAKE_FLOW_DUAL_DST, /* = CAKE_FLOW_DST_IP | CAKE_FLOW_FLOWS */
+       CAKE_FLOW_TRIPLE,   /* = CAKE_FLOW_HOSTS  | CAKE_FLOW_FLOWS */
+-      CAKE_FLOW_MAX,
++      CAKE_FLOW_MAX
+ };
+ enum {
+@@ -1166,6 +1166,7 @@ enum {
+       CAKE_DIFFSERV_DIFFSERV8,
+       CAKE_DIFFSERV_BESTEFFORT,
+       CAKE_DIFFSERV_PRECEDENCE,
++      CAKE_DIFFSERV_DIFFSERV5,
+       CAKE_DIFFSERV_MAX
+ };
+--- a/tc/q_cake.c
++++ b/tc/q_cake.c
+@@ -45,6 +45,7 @@ static const char * diffserv_names[CAKE_
+       [CAKE_DIFFSERV_DIFFSERV8] = "diffserv8",
+       [CAKE_DIFFSERV_BESTEFFORT] = "besteffort",
+       [CAKE_DIFFSERV_PRECEDENCE] = "precedence",
++      [CAKE_DIFFSERV_DIFFSERV5] = "diffserv5"
+ };
+ static const char * flowmode_names[CAKE_FLOW_MAX] = {
+@@ -74,7 +75,7 @@ static void explain(void)
+               "Usage: ... cake [ bandwidth RATE | unlimited* | autorate-ingress ]\n"
+               "                [ rtt TIME | datacentre | lan | metro | regional |\n"
+               "                  internet* | oceanic | satellite | interplanetary ]\n"
+-              "                [ besteffort | diffserv8 | diffserv4 | diffserv3* ]\n"
++              "                [ besteffort | diffserv8 | diffserv5 | diffserv4 | diffserv3* ]\n"
+               "                [ flowblind | srchost | dsthost | hosts | flows |\n"
+               "                  dual-srchost | dual-dsthost | triple-isolate* ]\n"
+               "                [ nat | nonat* ]\n"
+@@ -149,6 +150,8 @@ static int cake_parse_opt(struct qdisc_u
+                       diffserv = CAKE_DIFFSERV_PRECEDENCE;
+               } else if (strcmp(*argv, "diffserv8") == 0) {
+                       diffserv = CAKE_DIFFSERV_DIFFSERV8;
++              } else if (strcmp(*argv, "diffserv5") == 0) {
++                      diffserv = CAKE_DIFFSERV_DIFFSERV5;
+               } else if (strcmp(*argv, "diffserv4") == 0) {
+                       diffserv = CAKE_DIFFSERV_DIFFSERV4;
+               } else if (strcmp(*argv, "diffserv") == 0) {
+@@ -761,6 +764,10 @@ static int cake_print_xstats(struct qdis
+                       fprintf(f, "                   Bulk  Best Effort        Video        Voice\n");
+                       break;
++              case 5:
++                      fprintf(f, "           Least Effort         Bulk  Best Effort        Video        Voice\n");
++                      break;
++
+               default:
+                       fprintf(f, "          ");
+                       for (i = 0; i < num_tins; i++)