diff options
Diffstat (limited to 'target/linux/generic/backport-5.4/397-5.8-sch_cake-don-t-call-diffserv-parsing-code-when-it-is.patch')
-rw-r--r-- | target/linux/generic/backport-5.4/397-5.8-sch_cake-don-t-call-diffserv-parsing-code-when-it-is.patch | 62 |
1 files changed, 0 insertions, 62 deletions
diff --git a/target/linux/generic/backport-5.4/397-5.8-sch_cake-don-t-call-diffserv-parsing-code-when-it-is.patch b/target/linux/generic/backport-5.4/397-5.8-sch_cake-don-t-call-diffserv-parsing-code-when-it-is.patch deleted file mode 100644 index 2d9cd29780..0000000000 --- a/target/linux/generic/backport-5.4/397-5.8-sch_cake-don-t-call-diffserv-parsing-code-when-it-is.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 8c95eca0bb8c4bd2231a0d581f1ad0d50c90488c Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= <toke@redhat.com> -Date: Thu, 25 Jun 2020 22:12:08 +0200 -Subject: [PATCH] sch_cake: don't call diffserv parsing code when it is not - needed -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -As a further optimisation of the diffserv parsing codepath, we can skip it -entirely if CAKE is configured to neither use diffserv-based -classification, nor to zero out the diffserv bits. - -Fixes: c87b4ecdbe8d ("sch_cake: Make sure we can write the IP header before changing DSCP bits") -Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com> -Signed-off-by: David S. Miller <davem@davemloft.net> -Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk> ---- - net/sched/sch_cake.c | 13 +++++++++---- - 1 file changed, 9 insertions(+), 4 deletions(-) - ---- a/net/sched/sch_cake.c -+++ b/net/sched/sch_cake.c -@@ -1551,7 +1551,7 @@ static unsigned int cake_drop(struct Qdi - return idx + (tin << 16); - } - --static u8 cake_handle_diffserv(struct sk_buff *skb, u16 wash) -+static u8 cake_handle_diffserv(struct sk_buff *skb, bool wash) - { - const int offset = skb_network_offset(skb); - u16 *buf, buf_; -@@ -1612,14 +1612,17 @@ static struct cake_tin_data *cake_select - { - struct cake_sched_data *q = qdisc_priv(sch); - u32 tin, mark; -+ bool wash; - u8 dscp; - - /* Tin selection: Default to diffserv-based selection, allow overriding -- * using firewall marks or skb->priority. -+ * using firewall marks or skb->priority. Call DSCP parsing early if -+ * wash is enabled, otherwise defer to below to skip unneeded parsing. - */ -- dscp = cake_handle_diffserv(skb, -- q->rate_flags & CAKE_FLAG_WASH); - mark = (skb->mark & q->fwmark_mask) >> q->fwmark_shft; -+ wash = !!(q->rate_flags & CAKE_FLAG_WASH); -+ if (wash) -+ dscp = cake_handle_diffserv(skb, wash); - - if (q->tin_mode == CAKE_DIFFSERV_BESTEFFORT) - tin = 0; -@@ -1633,6 +1636,8 @@ static struct cake_tin_data *cake_select - tin = q->tin_order[TC_H_MIN(skb->priority) - 1]; - - else { -+ if (!wash) -+ dscp = cake_handle_diffserv(skb, wash); - tin = q->tin_index[dscp]; - - if (unlikely(tin >= q->tin_cnt)) |