Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=b226801676d9533d09da511eb379fe970fa1a770
Commit:     b226801676d9533d09da511eb379fe970fa1a770
Parent:     78608ba0326f1448f9a10dbb402a38192559f639
Author:     Radu Rendec <[EMAIL PROTECTED]>
AuthorDate: Sat Nov 10 21:54:50 2007 -0800
Committer:  David S. Miller <[EMAIL PROTECTED]>
CommitDate: Sat Nov 10 21:54:50 2007 -0800

    [PKT_SCHED] CLS_U32: Use ffs() instead of C code on hash mask to get first 
set bit.
    
    Computing the rank of the first set bit in the hash mask (for using later
    in u32_hash_fold()) was done with plain C code. Using ffs() instead makes
    the code more readable and improves performance (since ffs() is better
    optimized in assembler).
    
    Using the conditional operator on hash mask before applying ntohl() also
    saves one ntohl() call if mask is 0.
    
    Signed-off-by: Radu Rendec <[EMAIL PROTECTED]>
    Signed-off-by: Jarek Poplawski <[EMAIL PROTECTED]>
    Acked-by: Jamal Hadi Salim <[EMAIL PROTECTED]>
    Signed-off-by: David S. Miller <[EMAIL PROTECTED]>
---
 net/sched/cls_u32.c |   12 +-----------
 1 files changed, 1 insertions(+), 11 deletions(-)

diff --git a/net/sched/cls_u32.c b/net/sched/cls_u32.c
index 5317102..c390082 100644
--- a/net/sched/cls_u32.c
+++ b/net/sched/cls_u32.c
@@ -613,17 +613,7 @@ static int u32_change(struct tcf_proto *tp, unsigned long 
base, u32 handle,
        memcpy(&n->sel, s, sizeof(*s) + s->nkeys*sizeof(struct tc_u32_key));
        n->ht_up = ht;
        n->handle = handle;
-{
-       u8 i = 0;
-       u32 mask = ntohl(s->hmask);
-       if (mask) {
-               while (!(mask & 1)) {
-                       i++;
-                       mask>>=1;
-               }
-       }
-       n->fshift = i;
-}
+       n->fshift = s->hmask ? ffs(ntohl(s->hmask)) - 1 : 0;
 
 #ifdef CONFIG_CLS_U32_MARK
        if (tb[TCA_U32_MARK-1]) {
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to