--- /dev/null
+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++)