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;
}
#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;
}