]> rtime.felk.cvut.cz Git - lisovros/linux_canprio.git/commitdiff
cls_can: Simplified matching condition expression.
authorRostislav Lisovy <lisovy@gmail.com>
Mon, 23 Jan 2012 12:01:09 +0000 (13:01 +0100)
committerRostislav Lisovy <lisovy@gmail.com>
Mon, 23 Jan 2012 12:01:09 +0000 (13:01 +0100)
net/sched/cls_can.c

index 2c2b58972b11bbd2c6e9b21f147092607bf40e1b..34f00c06ec131a2b54e7c89abae2cd4b8eaffe21 100644 (file)
@@ -173,9 +173,8 @@ static int canfltr_classify(struct sk_buff *skb, struct tcf_proto *tp,
                        can_id &= CAN_EFF_MASK;
 
                        for (i = 0; i < r->eff_rules_count; i++) {
-                               /* XXX: Why aren't these & performed "off-line"? */
-                               if ((r->rules_raw[i].can_id & r->rules_raw[i].can_mask & CAN_EFF_MASK) ==
-                               (can_id & r->rules_raw[i].can_mask & CAN_EFF_MASK)) {
+                               if (!(((r->rules_raw[i].can_id ^ can_id) &
+                               r->rules_raw[i].can_mask) & CAN_EFF_MASK)) {
                                        match = true;
                                        break;
                                }
@@ -185,9 +184,10 @@ static int canfltr_classify(struct sk_buff *skb, struct tcf_proto *tp,
 #ifdef SFF_BITMAP
                        match = test_bit(can_id, r->match_sff);
 #else
-                       for (i = r->eff_rules_count; i < r->eff_rules_count + r->sff_rules_count; i++) {
-                               if ((r->rules_raw[i].can_id & r->rules_raw[i].can_mask & CAN_SFF_MASK) == /* XXX: dtto */
-                                   (can_id & r->rules_raw[i].can_mask & CAN_SFF_MASK)) {
+                       for (i = r->eff_rules_count;
+                       i < r->eff_rules_count + r->sff_rules_count; i++) {
+                               if (!(((r->rules_raw[i].can_id ^ can_id) &
+                               r->rules_raw[i].can_mask) & CAN_SFF_MASK)) {
                                        match = true;
                                        break;
                                }