Lines Matching refs:can_id
354 static unsigned int effhash(canid_t can_id) in effhash() argument
358 hash = can_id; in effhash()
359 hash ^= can_id >> CAN_EFF_RCV_HASH_BITS; in effhash()
360 hash ^= can_id >> (2 * CAN_EFF_RCV_HASH_BITS); in effhash()
392 static struct hlist_head *find_rcv_list(canid_t *can_id, canid_t *mask, in find_rcv_list() argument
395 canid_t inv = *can_id & CAN_INV_FILTER; /* save flag before masking */ in find_rcv_list()
409 if ((*mask & CAN_EFF_FLAG) && !(*can_id & CAN_EFF_FLAG)) in find_rcv_list()
413 *can_id &= *mask; in find_rcv_list()
425 !(*can_id & CAN_RTR_FLAG)) { in find_rcv_list()
427 if (*can_id & CAN_EFF_FLAG) { in find_rcv_list()
429 return &d->rx_eff[effhash(*can_id)]; in find_rcv_list()
432 return &d->rx_sff[*can_id]; in find_rcv_list()
469 int can_rx_register(struct net_device *dev, canid_t can_id, canid_t mask, in can_rx_register() argument
491 rl = find_rcv_list(&can_id, &mask, d); in can_rx_register()
493 r->can_id = can_id; in can_rx_register()
538 void can_rx_unregister(struct net_device *dev, canid_t can_id, canid_t mask, in can_rx_unregister() argument
554 DNAME(dev), can_id, mask); in can_rx_unregister()
558 rl = find_rcv_list(&can_id, &mask, d); in can_rx_unregister()
567 if (r->can_id == can_id && r->mask == mask && in can_rx_unregister()
579 "id %03X, mask %03X\n", DNAME(dev), can_id, mask); in can_rx_unregister()
615 canid_t can_id = cf->can_id; in can_rcv_filter() local
620 if (can_id & CAN_ERR_FLAG) { in can_rcv_filter()
623 if (can_id & r->mask) { in can_rcv_filter()
639 if ((can_id & r->mask) == r->can_id) { in can_rcv_filter()
647 if ((can_id & r->mask) != r->can_id) { in can_rcv_filter()
654 if (can_id & CAN_RTR_FLAG) in can_rcv_filter()
657 if (can_id & CAN_EFF_FLAG) { in can_rcv_filter()
658 hlist_for_each_entry_rcu(r, &d->rx_eff[effhash(can_id)], list) { in can_rcv_filter()
659 if (r->can_id == can_id) { in can_rcv_filter()
665 can_id &= CAN_SFF_MASK; in can_rcv_filter()
666 hlist_for_each_entry_rcu(r, &d->rx_sff[can_id], list) { in can_rcv_filter()