Lines Matching refs:rcv

445 	struct receiver *rcv;
458 rcv = kmem_cache_alloc(rcv_cache, GFP_KERNEL);
459 if (!rcv)
467 rcv->can_id = can_id;
468 rcv->mask = mask;
469 rcv->matches = 0;
470 rcv->func = func;
471 rcv->data = data;
472 rcv->ident = ident;
473 rcv->sk = sk;
475 hlist_add_head_rcu(&rcv->list, rcv_list);
490 struct receiver *rcv = container_of(rp, struct receiver, rcu);
491 struct sock *sk = rcv->sk;
493 kmem_cache_free(rcv_cache, rcv);
514 struct receiver *rcv = NULL;
534 hlist_for_each_entry_rcu(rcv, rcv_list, list) {
535 if (rcv->can_id == can_id && rcv->mask == mask &&
536 rcv->func == func && rcv->data == data)
541 * 'rcv' will be NULL if no matching list item was found for removal.
546 if (!rcv) {
552 hlist_del_rcu(&rcv->list);
562 if (rcv) {
563 if (rcv->sk)
564 sock_hold(rcv->sk);
565 call_rcu(&rcv->rcu, can_rx_delete_receiver);
570 static inline void deliver(struct sk_buff *skb, struct receiver *rcv)
572 rcv->func(skb, rcv->data);
573 rcv->matches++;
578 struct receiver *rcv;
588 hlist_for_each_entry_rcu(rcv, &dev_rcv_lists->rx[RX_ERR], list) {
589 if (can_id & rcv->mask) {
590 deliver(skb, rcv);
598 hlist_for_each_entry_rcu(rcv, &dev_rcv_lists->rx[RX_ALL], list) {
599 deliver(skb, rcv);
604 hlist_for_each_entry_rcu(rcv, &dev_rcv_lists->rx[RX_FIL], list) {
605 if ((can_id & rcv->mask) == rcv->can_id) {
606 deliver(skb, rcv);
612 hlist_for_each_entry_rcu(rcv, &dev_rcv_lists->rx[RX_INV], list) {
613 if ((can_id & rcv->mask) != rcv->can_id) {
614 deliver(skb, rcv);
624 hlist_for_each_entry_rcu(rcv, &dev_rcv_lists->rx_eff[effhash(can_id)], list) {
625 if (rcv->can_id == can_id) {
626 deliver(skb, rcv);
632 hlist_for_each_entry_rcu(rcv, &dev_rcv_lists->rx_sff[can_id], list) {
633 deliver(skb, rcv);