netdev
[Top] [All Lists]

[PATCH]: Check for leaf-class when classifying by priority

To: Martin Devera <devik@xxxxxx>
Subject: [PATCH]: Check for leaf-class when classifying by priority
From: Patrick McHardy <kaber@xxxxxxxxx>
Date: Thu, 13 Nov 2003 16:00:50 +0100
Cc: netdev@xxxxxxxxxxx
Sender: netdev-bounce@xxxxxxxxxxx
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031024 Debian/1.5-2
Hi devik,

this patch makes htb_classify check if a class is a leaf when classifying
by priority. It also adds a check from cbq to skip htb_find if the majors
of skb->priority and sch->handle differ.

Best regards,
Patrick

# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
#                  ChangeSet    1.1430  -> 1.1431 
#        net/sched/sch_htb.c    1.15    -> 1.16   
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 03/11/12      kaber@xxxxxxxxx 1.1431
# Check for leaf-class when classifying by priority, don't try if majors differ
# --------------------------------------------
#
diff -Nru a/net/sched/sch_htb.c b/net/sched/sch_htb.c
--- a/net/sched/sch_htb.c       Thu Nov 13 15:52:28 2003
+++ b/net/sched/sch_htb.c       Thu Nov 13 15:52:28 2003
@@ -303,8 +303,10 @@
           rules in it */
        if (skb->priority == sch->handle)
                return HTB_DIRECT;  /* X:0 (direct flow) selected */
-       if ((cl = htb_find(skb->priority,sch)) != NULL) 
-               return cl;
+       if (TC_H_MAJ(skb->priority^sch->handle) == 0 &&
+           (cl = htb_find(skb->priority,sch)) != NULL) 
+               if (cl->level == 0)
+                       return cl;
 
        tcf = q->filter_list;
        while (tcf && (result = tc_classify(skb, tcf, &res)) >= 0) {
<Prev in Thread] Current Thread [Next in Thread>