Lines Matching refs:dat_entry

117 	struct batadv_dat_entry *dat_entry;  in batadv_dat_entry_release()  local
119 dat_entry = container_of(ref, struct batadv_dat_entry, refcount); in batadv_dat_entry_release()
121 kfree_rcu(dat_entry, rcu); in batadv_dat_entry_release()
129 static void batadv_dat_entry_put(struct batadv_dat_entry *dat_entry) in batadv_dat_entry_put() argument
131 if (!dat_entry) in batadv_dat_entry_put()
134 kref_put(&dat_entry->refcount, batadv_dat_entry_release); in batadv_dat_entry_put()
143 static bool batadv_dat_to_purge(struct batadv_dat_entry *dat_entry) in batadv_dat_to_purge() argument
145 return batadv_has_timed_out(dat_entry->last_update, in batadv_dat_to_purge()
164 struct batadv_dat_entry *dat_entry; in __batadv_dat_purge() local
177 hlist_for_each_entry_safe(dat_entry, node_tmp, head, in __batadv_dat_purge()
182 if (to_purge && !to_purge(dat_entry)) in __batadv_dat_purge()
185 hlist_del_rcu(&dat_entry->hash_entry); in __batadv_dat_purge()
186 batadv_dat_entry_put(dat_entry); in __batadv_dat_purge()
332 struct batadv_dat_entry to_find, *dat_entry, *dat_entry_tmp = NULL; in batadv_dat_entry_hash_find() local
346 hlist_for_each_entry_rcu(dat_entry, head, hash_entry) { in batadv_dat_entry_hash_find()
347 if (dat_entry->ip != ip) in batadv_dat_entry_hash_find()
350 if (!kref_get_unless_zero(&dat_entry->refcount)) in batadv_dat_entry_hash_find()
353 dat_entry_tmp = dat_entry; in batadv_dat_entry_hash_find()
371 struct batadv_dat_entry *dat_entry; in batadv_dat_entry_add() local
374 dat_entry = batadv_dat_entry_hash_find(bat_priv, ip, vid); in batadv_dat_entry_add()
376 if (dat_entry) { in batadv_dat_entry_add()
377 if (!batadv_compare_eth(dat_entry->mac_addr, mac_addr)) in batadv_dat_entry_add()
378 ether_addr_copy(dat_entry->mac_addr, mac_addr); in batadv_dat_entry_add()
379 dat_entry->last_update = jiffies; in batadv_dat_entry_add()
382 &dat_entry->ip, dat_entry->mac_addr, in batadv_dat_entry_add()
387 dat_entry = kmalloc(sizeof(*dat_entry), GFP_ATOMIC); in batadv_dat_entry_add()
388 if (!dat_entry) in batadv_dat_entry_add()
391 dat_entry->ip = ip; in batadv_dat_entry_add()
392 dat_entry->vid = vid; in batadv_dat_entry_add()
393 ether_addr_copy(dat_entry->mac_addr, mac_addr); in batadv_dat_entry_add()
394 dat_entry->last_update = jiffies; in batadv_dat_entry_add()
395 kref_init(&dat_entry->refcount); in batadv_dat_entry_add()
397 kref_get(&dat_entry->refcount); in batadv_dat_entry_add()
399 batadv_hash_dat, dat_entry, in batadv_dat_entry_add()
400 &dat_entry->hash_entry); in batadv_dat_entry_add()
404 batadv_dat_entry_put(dat_entry); in batadv_dat_entry_add()
409 &dat_entry->ip, dat_entry->mac_addr, batadv_print_vid(vid)); in batadv_dat_entry_add()
412 if (dat_entry) in batadv_dat_entry_add()
413 batadv_dat_entry_put(dat_entry); in batadv_dat_entry_add()
861 struct batadv_dat_entry *dat_entry; in batadv_dat_cache_seq_print_text() local
880 hlist_for_each_entry_rcu(dat_entry, head, hash_entry) { in batadv_dat_cache_seq_print_text()
881 last_seen_jiffies = jiffies - dat_entry->last_update; in batadv_dat_cache_seq_print_text()
888 &dat_entry->ip, dat_entry->mac_addr, in batadv_dat_cache_seq_print_text()
889 batadv_print_vid(dat_entry->vid), in batadv_dat_cache_seq_print_text()
915 struct batadv_dat_entry *dat_entry) in batadv_dat_cache_dump_entry() argument
928 msecs = jiffies_to_msecs(jiffies - dat_entry->last_update); in batadv_dat_cache_dump_entry()
931 dat_entry->ip) || in batadv_dat_cache_dump_entry()
933 dat_entry->mac_addr) || in batadv_dat_cache_dump_entry()
934 nla_put_u16(msg, BATADV_ATTR_DAT_CACHE_VID, dat_entry->vid) || in batadv_dat_cache_dump_entry()
962 struct batadv_dat_entry *dat_entry; in batadv_dat_cache_dump_bucket() local
968 hlist_for_each_entry(dat_entry, &hash->table[bucket], hash_entry) { in batadv_dat_cache_dump_bucket()
972 if (batadv_dat_cache_dump_entry(msg, portid, cb, dat_entry)) { in batadv_dat_cache_dump_bucket()
1203 struct batadv_dat_entry *dat_entry = NULL; in batadv_dat_snoop_outgoing_arp_request() local
1229 dat_entry = batadv_dat_entry_hash_find(bat_priv, ip_dst, vid); in batadv_dat_snoop_outgoing_arp_request()
1230 if (dat_entry) { in batadv_dat_snoop_outgoing_arp_request()
1239 if (batadv_is_my_client(bat_priv, dat_entry->mac_addr, vid)) { in batadv_dat_snoop_outgoing_arp_request()
1250 dat_entry->mac_addr, vid)) { in batadv_dat_snoop_outgoing_arp_request()
1253 dat_entry->mac_addr); in batadv_dat_snoop_outgoing_arp_request()
1259 dat_entry->mac_addr, in batadv_dat_snoop_outgoing_arp_request()
1279 if (dat_entry) in batadv_dat_snoop_outgoing_arp_request()
1280 batadv_dat_entry_put(dat_entry); in batadv_dat_snoop_outgoing_arp_request()
1300 struct batadv_dat_entry *dat_entry = NULL; in batadv_dat_snoop_incoming_arp_request() local
1322 dat_entry = batadv_dat_entry_hash_find(bat_priv, ip_dst, vid); in batadv_dat_snoop_incoming_arp_request()
1323 if (!dat_entry) in batadv_dat_snoop_incoming_arp_request()
1327 dat_entry->mac_addr, hw_src, vid); in batadv_dat_snoop_incoming_arp_request()
1347 if (dat_entry) in batadv_dat_snoop_incoming_arp_request()
1348 batadv_dat_entry_put(dat_entry); in batadv_dat_snoop_incoming_arp_request()
1409 struct batadv_dat_entry *dat_entry = NULL; in batadv_dat_snoop_incoming_arp_reply() local
1438 dat_entry = batadv_dat_entry_hash_find(bat_priv, ip_src, vid); in batadv_dat_snoop_incoming_arp_reply()
1439 if (dat_entry && batadv_compare_eth(hw_src, dat_entry->mac_addr)) { in batadv_dat_snoop_incoming_arp_reply()
1442 dat_entry->mac_addr, &dat_entry->ip); in batadv_dat_snoop_incoming_arp_reply()
1481 if (dat_entry) in batadv_dat_snoop_incoming_arp_reply()
1482 batadv_dat_entry_put(dat_entry); in batadv_dat_snoop_incoming_arp_reply()
1857 struct batadv_dat_entry *dat_entry = NULL; in batadv_dat_drop_broadcast_packet() local
1878 dat_entry = batadv_dat_entry_hash_find(bat_priv, ip_dst, vid); in batadv_dat_drop_broadcast_packet()
1880 if (!dat_entry) { in batadv_dat_drop_broadcast_packet()
1891 if (dat_entry) in batadv_dat_drop_broadcast_packet()
1892 batadv_dat_entry_put(dat_entry); in batadv_dat_drop_broadcast_packet()