Lines Matching refs:dat_entry

51 static void batadv_dat_entry_free_ref(struct batadv_dat_entry *dat_entry)  in batadv_dat_entry_free_ref()  argument
53 if (atomic_dec_and_test(&dat_entry->refcount)) in batadv_dat_entry_free_ref()
54 kfree_rcu(dat_entry, rcu); in batadv_dat_entry_free_ref()
63 static bool batadv_dat_to_purge(struct batadv_dat_entry *dat_entry) in batadv_dat_to_purge() argument
65 return batadv_has_timed_out(dat_entry->last_update, in batadv_dat_to_purge()
84 struct batadv_dat_entry *dat_entry; in __batadv_dat_purge() local
97 hlist_for_each_entry_safe(dat_entry, node_tmp, head, in __batadv_dat_purge()
102 if (to_purge && !to_purge(dat_entry)) in __batadv_dat_purge()
105 hlist_del_rcu(&dat_entry->hash_entry); in __batadv_dat_purge()
106 batadv_dat_entry_free_ref(dat_entry); in __batadv_dat_purge()
235 struct batadv_dat_entry to_find, *dat_entry, *dat_entry_tmp = NULL; in batadv_dat_entry_hash_find() local
249 hlist_for_each_entry_rcu(dat_entry, head, hash_entry) { in batadv_dat_entry_hash_find()
250 if (dat_entry->ip != ip) in batadv_dat_entry_hash_find()
253 if (!atomic_inc_not_zero(&dat_entry->refcount)) in batadv_dat_entry_hash_find()
256 dat_entry_tmp = dat_entry; in batadv_dat_entry_hash_find()
274 struct batadv_dat_entry *dat_entry; in batadv_dat_entry_add() local
277 dat_entry = batadv_dat_entry_hash_find(bat_priv, ip, vid); in batadv_dat_entry_add()
279 if (dat_entry) { in batadv_dat_entry_add()
280 if (!batadv_compare_eth(dat_entry->mac_addr, mac_addr)) in batadv_dat_entry_add()
281 ether_addr_copy(dat_entry->mac_addr, mac_addr); in batadv_dat_entry_add()
282 dat_entry->last_update = jiffies; in batadv_dat_entry_add()
285 &dat_entry->ip, dat_entry->mac_addr, in batadv_dat_entry_add()
290 dat_entry = kmalloc(sizeof(*dat_entry), GFP_ATOMIC); in batadv_dat_entry_add()
291 if (!dat_entry) in batadv_dat_entry_add()
294 dat_entry->ip = ip; in batadv_dat_entry_add()
295 dat_entry->vid = vid; in batadv_dat_entry_add()
296 ether_addr_copy(dat_entry->mac_addr, mac_addr); in batadv_dat_entry_add()
297 dat_entry->last_update = jiffies; in batadv_dat_entry_add()
298 atomic_set(&dat_entry->refcount, 2); in batadv_dat_entry_add()
301 batadv_hash_dat, dat_entry, in batadv_dat_entry_add()
302 &dat_entry->hash_entry); in batadv_dat_entry_add()
306 batadv_dat_entry_free_ref(dat_entry); in batadv_dat_entry_add()
311 &dat_entry->ip, dat_entry->mac_addr, BATADV_PRINT_VID(vid)); in batadv_dat_entry_add()
314 if (dat_entry) in batadv_dat_entry_add()
315 batadv_dat_entry_free_ref(dat_entry); in batadv_dat_entry_add()
754 struct batadv_dat_entry *dat_entry; in batadv_dat_cache_seq_print_text() local
773 hlist_for_each_entry_rcu(dat_entry, head, hash_entry) { in batadv_dat_cache_seq_print_text()
774 last_seen_jiffies = jiffies - dat_entry->last_update; in batadv_dat_cache_seq_print_text()
781 &dat_entry->ip, dat_entry->mac_addr, in batadv_dat_cache_seq_print_text()
782 BATADV_PRINT_VID(dat_entry->vid), in batadv_dat_cache_seq_print_text()
910 struct batadv_dat_entry *dat_entry = NULL; in batadv_dat_snoop_outgoing_arp_request() local
936 dat_entry = batadv_dat_entry_hash_find(bat_priv, ip_dst, vid); in batadv_dat_snoop_outgoing_arp_request()
937 if (dat_entry) { in batadv_dat_snoop_outgoing_arp_request()
946 if (batadv_is_my_client(bat_priv, dat_entry->mac_addr, vid)) { in batadv_dat_snoop_outgoing_arp_request()
953 dat_entry->mac_addr, hw_src); in batadv_dat_snoop_outgoing_arp_request()
977 if (dat_entry) in batadv_dat_snoop_outgoing_arp_request()
978 batadv_dat_entry_free_ref(dat_entry); in batadv_dat_snoop_outgoing_arp_request()
998 struct batadv_dat_entry *dat_entry = NULL; in batadv_dat_snoop_incoming_arp_request() local
1021 dat_entry = batadv_dat_entry_hash_find(bat_priv, ip_dst, vid); in batadv_dat_snoop_incoming_arp_request()
1022 if (!dat_entry) in batadv_dat_snoop_incoming_arp_request()
1027 dat_entry->mac_addr, hw_src); in batadv_dat_snoop_incoming_arp_request()
1057 if (dat_entry) in batadv_dat_snoop_incoming_arp_request()
1058 batadv_dat_entry_free_ref(dat_entry); in batadv_dat_snoop_incoming_arp_request()
1168 struct batadv_dat_entry *dat_entry = NULL; in batadv_dat_drop_broadcast_packet() local
1189 dat_entry = batadv_dat_entry_hash_find(bat_priv, ip_dst, vid); in batadv_dat_drop_broadcast_packet()
1191 if (!dat_entry) { in batadv_dat_drop_broadcast_packet()
1202 if (dat_entry) in batadv_dat_drop_broadcast_packet()
1203 batadv_dat_entry_free_ref(dat_entry); in batadv_dat_drop_broadcast_packet()