Lines Matching refs:a
85 static inline void aarp_entry_get(struct aarp_entry *a) in aarp_entry_get() argument
87 refcount_inc(&a->refcnt); in aarp_entry_get()
90 static inline void aarp_entry_put(struct aarp_entry *a) in aarp_entry_put() argument
92 if (refcount_dec_and_test(&a->refcnt)) in aarp_entry_put()
93 kfree(a); in aarp_entry_put()
101 static void __aarp_expire(struct aarp_entry *a) in __aarp_expire() argument
103 skb_queue_purge(&a->packet_queue); in __aarp_expire()
104 aarp_entry_put(a); in __aarp_expire()
112 static void __aarp_send_query(struct aarp_entry *a) in __aarp_send_query() argument
116 struct net_device *dev = a->dev; in __aarp_send_query()
155 eah->pa_dst_net = a->target_addr.s_net; in __aarp_send_query()
156 eah->pa_dst_node = a->target_addr.s_node; in __aarp_send_query()
161 a->xmit_count++; in __aarp_send_query()
162 a->last_sent = jiffies; in __aarp_send_query()
396 struct aarp_entry *a = kmalloc(sizeof(*a), GFP_ATOMIC); in aarp_alloc() local
397 if (!a) in aarp_alloc()
400 refcount_set(&a->refcnt, 1); in aarp_alloc()
401 skb_queue_head_init(&a->packet_queue); in aarp_alloc()
402 return a; in aarp_alloc()
430 struct aarp_entry *a; in aarp_proxy_remove() local
434 a = __aarp_find_entry(proxies[hash], dev, sa); in aarp_proxy_remove()
435 if (a) in aarp_proxy_remove()
436 a->expires_at = jiffies - 1; in aarp_proxy_remove()
446 struct aarp_entry *a = __aarp_find_entry(proxies[hash], dev, sa); in __aarp_proxy_find() local
448 return a ? sa : NULL; in __aarp_proxy_find()
535 struct aarp_entry *a; in aarp_send_ddp() local
600 a = __aarp_find_entry(resolved[hash], dev, sa); in aarp_send_ddp()
602 if (a) { /* Return 1 and fill in the address */ in aarp_send_ddp()
603 a->expires_at = jiffies + (sysctl_aarp_expiry_time * 10); in aarp_send_ddp()
604 ddp_dl->request(ddp_dl, skb, a->hwaddr); in aarp_send_ddp()
610 a = __aarp_find_entry(unresolved[hash], dev, sa); in aarp_send_ddp()
611 if (a) { /* Queue onto the unresolved queue */ in aarp_send_ddp()
612 skb_queue_tail(&a->packet_queue, skb); in aarp_send_ddp()
617 a = aarp_alloc(); in aarp_send_ddp()
618 if (!a) { in aarp_send_ddp()
625 skb_queue_tail(&a->packet_queue, skb); in aarp_send_ddp()
626 a->expires_at = jiffies + sysctl_aarp_resolve_time; in aarp_send_ddp()
627 a->dev = dev; in aarp_send_ddp()
628 a->next = unresolved[hash]; in aarp_send_ddp()
629 a->target_addr = *sa; in aarp_send_ddp()
630 a->xmit_count = 0; in aarp_send_ddp()
631 unresolved[hash] = a; in aarp_send_ddp()
635 __aarp_send_query(a); in aarp_send_ddp()
672 static void __aarp_resolved(struct aarp_entry **list, struct aarp_entry *a, in __aarp_resolved() argument
678 if (*list == a) { in __aarp_resolved()
680 *list = a->next; in __aarp_resolved()
683 a->next = resolved[hash]; in __aarp_resolved()
684 resolved[hash] = a; in __aarp_resolved()
687 while ((skb = skb_dequeue(&a->packet_queue)) != NULL) { in __aarp_resolved()
688 a->expires_at = jiffies + in __aarp_resolved()
690 ddp_dl->request(ddp_dl, skb, a->hwaddr); in __aarp_resolved()
706 struct aarp_entry *a; in aarp_rcv() local
753 a = __aarp_find_entry(proxies[hash], dev, &da); in aarp_rcv()
755 if (a && a->status & ATIF_PROBE) { in aarp_rcv()
756 a->status |= ATIF_PROBE_FAIL; in aarp_rcv()
770 a = __aarp_find_entry(unresolved[hash], dev, &sa); in aarp_rcv()
771 if (!a || dev != a->dev) in aarp_rcv()
775 ether_addr_copy(a->hwaddr, ea->hw_src); in aarp_rcv()
776 __aarp_resolved(&unresolved[hash], a, hash); in aarp_rcv()
816 a = __aarp_find_entry(resolved[sa.s_node % in aarp_rcv()
826 if (a) { in aarp_rcv()
827 a->expires_at = jiffies - 1; in aarp_rcv()