Lines Matching refs:backbone_gw

57 			 struct batadv_bla_backbone_gw *backbone_gw);
151 struct batadv_bla_backbone_gw *backbone_gw;
153 backbone_gw = container_of(ref, struct batadv_bla_backbone_gw,
156 kfree_rcu(backbone_gw, rcu);
162 * @backbone_gw: backbone gateway to be free'd
164 static void batadv_backbone_gw_put(struct batadv_bla_backbone_gw *backbone_gw)
166 if (!backbone_gw)
169 kref_put(&backbone_gw->refcount, batadv_backbone_gw_release);
185 old_backbone_gw = claim->backbone_gw;
186 claim->backbone_gw = NULL;
263 struct batadv_bla_backbone_gw search_entry, *backbone_gw;
277 hlist_for_each_entry_rcu(backbone_gw, head, hash_entry) {
278 if (!batadv_compare_backbone_gw(&backbone_gw->hash_entry,
282 if (!kref_get_unless_zero(&backbone_gw->refcount))
285 backbone_gw_tmp = backbone_gw;
295 * @backbone_gw: backbone gateway where the claims should be removed
298 batadv_bla_del_backbone_claims(struct batadv_bla_backbone_gw *backbone_gw)
307 hash = backbone_gw->bat_priv->bla.claim_hash;
318 if (claim->backbone_gw != backbone_gw)
328 spin_lock_bh(&backbone_gw->crc_lock);
329 backbone_gw->crc = BATADV_BLA_CRC_INIT;
330 spin_unlock_bh(&backbone_gw->crc_lock);
461 struct batadv_bla_backbone_gw *backbone_gw;
465 backbone_gw = container_of(work, struct batadv_bla_backbone_gw,
467 bat_priv = backbone_gw->bat_priv;
471 batadv_print_vid(backbone_gw->vid));
473 batadv_print_vid(backbone_gw->vid));
479 batadv_backbone_gw_put(backbone_gw);
569 struct batadv_bla_backbone_gw *backbone_gw;
571 backbone_gw = batadv_bla_get_backbone_gw(bat_priv,
574 if (unlikely(!backbone_gw))
577 backbone_gw->lasttime = jiffies;
578 batadv_backbone_gw_put(backbone_gw);
597 struct batadv_bla_backbone_gw *backbone_gw;
604 backbone_gw = batadv_backbone_hash_find(bat_priv,
607 if (!backbone_gw)
617 if (claim->backbone_gw != backbone_gw)
627 batadv_bla_send_announce(bat_priv, backbone_gw);
628 batadv_backbone_gw_put(backbone_gw);
633 * @backbone_gw: the backbone gateway from whom we are out of sync
639 static void batadv_bla_send_request(struct batadv_bla_backbone_gw *backbone_gw)
642 batadv_bla_del_backbone_claims(backbone_gw);
644 batadv_dbg(BATADV_DBG_BLA, backbone_gw->bat_priv,
645 "Sending REQUEST to %pM\n", backbone_gw->orig);
648 batadv_bla_send_claim(backbone_gw->bat_priv, backbone_gw->orig,
649 backbone_gw->vid, BATADV_CLAIM_TYPE_REQUEST);
652 if (!atomic_read(&backbone_gw->request_sent)) {
653 atomic_inc(&backbone_gw->bat_priv->bla.num_requests);
654 atomic_set(&backbone_gw->request_sent, 1);
661 * @backbone_gw: our backbone gateway which should be announced
664 struct batadv_bla_backbone_gw *backbone_gw)
670 spin_lock_bh(&backbone_gw->crc_lock);
671 crc = htons(backbone_gw->crc);
672 spin_unlock_bh(&backbone_gw->crc_lock);
675 batadv_bla_send_claim(bat_priv, mac, backbone_gw->vid,
684 * @backbone_gw: the backbone gateway which claims it
688 struct batadv_bla_backbone_gw *backbone_gw)
710 kref_get(&backbone_gw->refcount);
711 claim->backbone_gw = backbone_gw;
731 if (claim->backbone_gw == backbone_gw)
738 backbone_gw->orig);
743 /* replace backbone_gw atomically and adjust reference counters */
745 old_backbone_gw = claim->backbone_gw;
746 kref_get(&backbone_gw->refcount);
747 claim->backbone_gw = backbone_gw;
751 /* remove claim address from old backbone_gw */
759 /* add claim address to new backbone_gw */
760 spin_lock_bh(&backbone_gw->crc_lock);
761 backbone_gw->crc ^= crc16(0, claim->addr, ETH_ALEN);
762 spin_unlock_bh(&backbone_gw->crc_lock);
763 backbone_gw->lasttime = jiffies;
770 * batadv_bla_claim_get_backbone_gw() - Get valid reference for backbone_gw of
772 * @claim: claim whose backbone_gw should be returned
774 * Return: valid reference to claim::backbone_gw
779 struct batadv_bla_backbone_gw *backbone_gw;
782 backbone_gw = claim->backbone_gw;
783 kref_get(&backbone_gw->refcount);
786 return backbone_gw;
839 struct batadv_bla_backbone_gw *backbone_gw;
845 backbone_gw = batadv_bla_get_backbone_gw(bat_priv, backbone_addr, vid,
848 if (unlikely(!backbone_gw))
852 backbone_gw->lasttime = jiffies;
857 __func__, batadv_print_vid(vid), backbone_gw->orig, crc);
859 spin_lock_bh(&backbone_gw->crc_lock);
860 backbone_crc = backbone_gw->crc;
861 spin_unlock_bh(&backbone_gw->crc_lock);
864 batadv_dbg(BATADV_DBG_BLA, backbone_gw->bat_priv,
866 __func__, backbone_gw->orig,
867 batadv_print_vid(backbone_gw->vid),
870 batadv_bla_send_request(backbone_gw);
875 if (atomic_read(&backbone_gw->request_sent)) {
876 atomic_dec(&backbone_gw->bat_priv->bla.num_requests);
877 atomic_set(&backbone_gw->request_sent, 0);
881 batadv_backbone_gw_put(backbone_gw);
933 struct batadv_bla_backbone_gw *backbone_gw;
941 backbone_gw = batadv_backbone_hash_find(bat_priv, backbone_addr, vid);
943 if (!backbone_gw)
949 claim_addr, batadv_print_vid(vid), backbone_gw->orig);
952 batadv_backbone_gw_put(backbone_gw);
971 struct batadv_bla_backbone_gw *backbone_gw;
975 backbone_gw = batadv_bla_get_backbone_gw(bat_priv, backbone_addr, vid,
978 if (unlikely(!backbone_gw))
982 batadv_bla_add_claim(bat_priv, claim_addr, vid, backbone_gw);
989 batadv_backbone_gw_put(backbone_gw);
1221 struct batadv_bla_backbone_gw *backbone_gw;
1237 hlist_for_each_entry_safe(backbone_gw, node_tmp,
1241 if (!batadv_has_timed_out(backbone_gw->lasttime,
1245 batadv_dbg(BATADV_DBG_BLA, backbone_gw->bat_priv,
1247 __func__, backbone_gw->orig);
1251 if (atomic_read(&backbone_gw->request_sent))
1254 batadv_bla_del_backbone_claims(backbone_gw);
1256 hlist_del_rcu(&backbone_gw->hash_entry);
1257 batadv_backbone_gw_put(backbone_gw);
1276 struct batadv_bla_backbone_gw *backbone_gw;
1291 backbone_gw = batadv_bla_claim_get_backbone_gw(claim);
1295 if (!batadv_compare_eth(backbone_gw->orig,
1312 backbone_gw->orig,
1315 batadv_backbone_gw_put(backbone_gw);
1332 struct batadv_bla_backbone_gw *backbone_gw;
1360 hlist_for_each_entry_rcu(backbone_gw, head, hash_entry) {
1362 if (!batadv_compare_eth(backbone_gw->orig,
1366 ether_addr_copy(backbone_gw->orig,
1371 batadv_bla_send_announce(bat_priv, backbone_gw);
1380 * @backbone_gw: the backbone gateway for which a loop should be detected
1389 struct batadv_bla_backbone_gw *backbone_gw)
1392 backbone_gw->vid);
1394 backbone_gw->vid, BATADV_CLAIM_TYPE_LOOPDETECT);
1431 struct batadv_bla_backbone_gw *backbone_gw;
1474 hlist_for_each_entry_rcu(backbone_gw, head, hash_entry) {
1475 if (!batadv_compare_eth(backbone_gw->orig,
1479 backbone_gw->lasttime = jiffies;
1481 batadv_bla_send_announce(bat_priv, backbone_gw);
1484 backbone_gw);
1495 if (atomic_read(&backbone_gw->request_sent) == 0)
1498 if (!atomic_dec_and_test(&backbone_gw->wait_periods))
1501 atomic_dec(&backbone_gw->bat_priv->bla.num_requests);
1502 atomic_set(&backbone_gw->request_sent, 0);
1737 struct batadv_bla_backbone_gw *backbone_gw;
1750 hlist_for_each_entry_rcu(backbone_gw, head, hash_entry) {
1751 if (batadv_compare_eth(backbone_gw->orig, orig) &&
1752 backbone_gw->vid == vid) {
1775 struct batadv_bla_backbone_gw *backbone_gw;
1788 backbone_gw = batadv_backbone_hash_find(orig_node->bat_priv,
1790 if (!backbone_gw)
1793 batadv_backbone_gw_put(backbone_gw);
1841 struct batadv_bla_backbone_gw *backbone_gw;
1861 backbone_gw = batadv_bla_get_backbone_gw(bat_priv,
1864 if (unlikely(!backbone_gw))
1867 ret = queue_work(batadv_event_workqueue, &backbone_gw->report_work);
1869 /* backbone_gw is unreferenced in the report work function
1873 batadv_backbone_gw_put(backbone_gw);
1897 struct batadv_bla_backbone_gw *backbone_gw;
1966 backbone_gw = batadv_bla_claim_get_backbone_gw(claim);
1967 own_claim = batadv_compare_eth(backbone_gw->orig,
1969 batadv_backbone_gw_put(backbone_gw);
2034 struct batadv_bla_backbone_gw *backbone_gw;
2066 backbone_gw = batadv_bla_claim_get_backbone_gw(claim);
2067 client_roamed = batadv_compare_eth(backbone_gw->orig,
2069 batadv_backbone_gw_put(backbone_gw);
2150 is_own = batadv_compare_eth(claim->backbone_gw->orig,
2153 spin_lock_bh(&claim->backbone_gw->crc_lock);
2154 backbone_crc = claim->backbone_gw->crc;
2155 spin_unlock_bh(&claim->backbone_gw->crc_lock);
2166 claim->backbone_gw->orig) ||
2292 * @backbone_gw: entry to dump
2300 struct batadv_bla_backbone_gw *backbone_gw)
2319 is_own = batadv_compare_eth(backbone_gw->orig, primary_addr);
2321 spin_lock_bh(&backbone_gw->crc_lock);
2322 backbone_crc = backbone_gw->crc;
2323 spin_unlock_bh(&backbone_gw->crc_lock);
2325 msecs = jiffies_to_msecs(jiffies - backbone_gw->lasttime);
2334 backbone_gw->orig) ||
2335 nla_put_u16(msg, BATADV_ATTR_BLA_VID, backbone_gw->vid) ||
2370 struct batadv_bla_backbone_gw *backbone_gw;
2377 hlist_for_each_entry(backbone_gw, &hash->table[bucket], hash_entry) {
2382 primary_if, backbone_gw);
2493 if (!batadv_compare_eth(claim->backbone_gw->orig,