Lines Matching refs:backbone_gw
58 struct batadv_bla_backbone_gw *backbone_gw);
152 struct batadv_bla_backbone_gw *backbone_gw;
154 backbone_gw = container_of(ref, struct batadv_bla_backbone_gw,
157 kfree_rcu(backbone_gw, rcu);
163 * @backbone_gw: backbone gateway to be free'd
165 static void batadv_backbone_gw_put(struct batadv_bla_backbone_gw *backbone_gw)
167 if (!backbone_gw)
170 kref_put(&backbone_gw->refcount, batadv_backbone_gw_release);
186 old_backbone_gw = claim->backbone_gw;
187 claim->backbone_gw = NULL;
264 struct batadv_bla_backbone_gw search_entry, *backbone_gw;
278 hlist_for_each_entry_rcu(backbone_gw, head, hash_entry) {
279 if (!batadv_compare_backbone_gw(&backbone_gw->hash_entry,
283 if (!kref_get_unless_zero(&backbone_gw->refcount))
286 backbone_gw_tmp = backbone_gw;
296 * @backbone_gw: backbone gateway where the claims should be removed
299 batadv_bla_del_backbone_claims(struct batadv_bla_backbone_gw *backbone_gw)
308 hash = backbone_gw->bat_priv->bla.claim_hash;
319 if (claim->backbone_gw != backbone_gw)
329 spin_lock_bh(&backbone_gw->crc_lock);
330 backbone_gw->crc = BATADV_BLA_CRC_INIT;
331 spin_unlock_bh(&backbone_gw->crc_lock);
466 struct batadv_bla_backbone_gw *backbone_gw;
470 backbone_gw = container_of(work, struct batadv_bla_backbone_gw,
472 bat_priv = backbone_gw->bat_priv;
476 batadv_print_vid(backbone_gw->vid));
478 batadv_print_vid(backbone_gw->vid));
484 batadv_backbone_gw_put(backbone_gw);
574 struct batadv_bla_backbone_gw *backbone_gw;
576 backbone_gw = batadv_bla_get_backbone_gw(bat_priv,
579 if (unlikely(!backbone_gw))
582 backbone_gw->lasttime = jiffies;
583 batadv_backbone_gw_put(backbone_gw);
602 struct batadv_bla_backbone_gw *backbone_gw;
609 backbone_gw = batadv_backbone_hash_find(bat_priv,
612 if (!backbone_gw)
622 if (claim->backbone_gw != backbone_gw)
632 batadv_bla_send_announce(bat_priv, backbone_gw);
633 batadv_backbone_gw_put(backbone_gw);
638 * @backbone_gw: the backbone gateway from whom we are out of sync
644 static void batadv_bla_send_request(struct batadv_bla_backbone_gw *backbone_gw)
647 batadv_bla_del_backbone_claims(backbone_gw);
649 batadv_dbg(BATADV_DBG_BLA, backbone_gw->bat_priv,
650 "Sending REQUEST to %pM\n", backbone_gw->orig);
653 batadv_bla_send_claim(backbone_gw->bat_priv, backbone_gw->orig,
654 backbone_gw->vid, BATADV_CLAIM_TYPE_REQUEST);
657 if (!atomic_read(&backbone_gw->request_sent)) {
658 atomic_inc(&backbone_gw->bat_priv->bla.num_requests);
659 atomic_set(&backbone_gw->request_sent, 1);
666 * @backbone_gw: our backbone gateway which should be announced
669 struct batadv_bla_backbone_gw *backbone_gw)
675 spin_lock_bh(&backbone_gw->crc_lock);
676 crc = htons(backbone_gw->crc);
677 spin_unlock_bh(&backbone_gw->crc_lock);
680 batadv_bla_send_claim(bat_priv, mac, backbone_gw->vid,
689 * @backbone_gw: the backbone gateway which claims it
693 struct batadv_bla_backbone_gw *backbone_gw)
715 kref_get(&backbone_gw->refcount);
716 claim->backbone_gw = backbone_gw;
736 if (claim->backbone_gw == backbone_gw)
743 backbone_gw->orig);
748 /* replace backbone_gw atomically and adjust reference counters */
750 old_backbone_gw = claim->backbone_gw;
751 kref_get(&backbone_gw->refcount);
752 claim->backbone_gw = backbone_gw;
756 /* remove claim address from old backbone_gw */
764 /* add claim address to new backbone_gw */
765 spin_lock_bh(&backbone_gw->crc_lock);
766 backbone_gw->crc ^= crc16(0, claim->addr, ETH_ALEN);
767 spin_unlock_bh(&backbone_gw->crc_lock);
768 backbone_gw->lasttime = jiffies;
775 * batadv_bla_claim_get_backbone_gw() - Get valid reference for backbone_gw of
777 * @claim: claim whose backbone_gw should be returned
779 * Return: valid reference to claim::backbone_gw
784 struct batadv_bla_backbone_gw *backbone_gw;
787 backbone_gw = claim->backbone_gw;
788 kref_get(&backbone_gw->refcount);
791 return backbone_gw;
844 struct batadv_bla_backbone_gw *backbone_gw;
850 backbone_gw = batadv_bla_get_backbone_gw(bat_priv, backbone_addr, vid,
853 if (unlikely(!backbone_gw))
857 backbone_gw->lasttime = jiffies;
862 __func__, batadv_print_vid(vid), backbone_gw->orig, crc);
864 spin_lock_bh(&backbone_gw->crc_lock);
865 backbone_crc = backbone_gw->crc;
866 spin_unlock_bh(&backbone_gw->crc_lock);
869 batadv_dbg(BATADV_DBG_BLA, backbone_gw->bat_priv,
871 __func__, backbone_gw->orig,
872 batadv_print_vid(backbone_gw->vid),
875 batadv_bla_send_request(backbone_gw);
880 if (atomic_read(&backbone_gw->request_sent)) {
881 atomic_dec(&backbone_gw->bat_priv->bla.num_requests);
882 atomic_set(&backbone_gw->request_sent, 0);
886 batadv_backbone_gw_put(backbone_gw);
938 struct batadv_bla_backbone_gw *backbone_gw;
946 backbone_gw = batadv_backbone_hash_find(bat_priv, backbone_addr, vid);
948 if (!backbone_gw)
954 claim_addr, batadv_print_vid(vid), backbone_gw->orig);
957 batadv_backbone_gw_put(backbone_gw);
976 struct batadv_bla_backbone_gw *backbone_gw;
980 backbone_gw = batadv_bla_get_backbone_gw(bat_priv, backbone_addr, vid,
983 if (unlikely(!backbone_gw))
987 batadv_bla_add_claim(bat_priv, claim_addr, vid, backbone_gw);
994 batadv_backbone_gw_put(backbone_gw);
1226 struct batadv_bla_backbone_gw *backbone_gw;
1242 hlist_for_each_entry_safe(backbone_gw, node_tmp,
1246 if (!batadv_has_timed_out(backbone_gw->lasttime,
1250 batadv_dbg(BATADV_DBG_BLA, backbone_gw->bat_priv,
1252 __func__, backbone_gw->orig);
1256 if (atomic_read(&backbone_gw->request_sent))
1259 batadv_bla_del_backbone_claims(backbone_gw);
1261 hlist_del_rcu(&backbone_gw->hash_entry);
1262 batadv_backbone_gw_put(backbone_gw);
1281 struct batadv_bla_backbone_gw *backbone_gw;
1296 backbone_gw = batadv_bla_claim_get_backbone_gw(claim);
1300 if (!batadv_compare_eth(backbone_gw->orig,
1317 backbone_gw->orig,
1320 batadv_backbone_gw_put(backbone_gw);
1337 struct batadv_bla_backbone_gw *backbone_gw;
1365 hlist_for_each_entry_rcu(backbone_gw, head, hash_entry) {
1367 if (!batadv_compare_eth(backbone_gw->orig,
1371 ether_addr_copy(backbone_gw->orig,
1376 batadv_bla_send_announce(bat_priv, backbone_gw);
1385 * @backbone_gw: the backbone gateway for which a loop should be detected
1394 struct batadv_bla_backbone_gw *backbone_gw)
1397 backbone_gw->vid);
1399 backbone_gw->vid, BATADV_CLAIM_TYPE_LOOPDETECT);
1436 struct batadv_bla_backbone_gw *backbone_gw;
1479 hlist_for_each_entry_rcu(backbone_gw, head, hash_entry) {
1480 if (!batadv_compare_eth(backbone_gw->orig,
1484 backbone_gw->lasttime = jiffies;
1486 batadv_bla_send_announce(bat_priv, backbone_gw);
1489 backbone_gw);
1500 if (atomic_read(&backbone_gw->request_sent) == 0)
1503 if (!atomic_dec_and_test(&backbone_gw->wait_periods))
1506 atomic_dec(&backbone_gw->bat_priv->bla.num_requests);
1507 atomic_set(&backbone_gw->request_sent, 0);
1743 struct batadv_bla_backbone_gw *backbone_gw;
1756 hlist_for_each_entry_rcu(backbone_gw, head, hash_entry) {
1757 if (batadv_compare_eth(backbone_gw->orig, orig) &&
1758 backbone_gw->vid == vid) {
1781 struct batadv_bla_backbone_gw *backbone_gw;
1794 backbone_gw = batadv_backbone_hash_find(orig_node->bat_priv,
1796 if (!backbone_gw)
1799 batadv_backbone_gw_put(backbone_gw);
1848 struct batadv_bla_backbone_gw *backbone_gw;
1868 backbone_gw = batadv_bla_get_backbone_gw(bat_priv,
1871 if (unlikely(!backbone_gw))
1874 ret = queue_work(batadv_event_workqueue, &backbone_gw->report_work);
1876 /* backbone_gw is unreferenced in the report work function
1880 batadv_backbone_gw_put(backbone_gw);
1904 struct batadv_bla_backbone_gw *backbone_gw;
1973 backbone_gw = batadv_bla_claim_get_backbone_gw(claim);
1974 own_claim = batadv_compare_eth(backbone_gw->orig,
1976 batadv_backbone_gw_put(backbone_gw);
2043 struct batadv_bla_backbone_gw *backbone_gw;
2075 backbone_gw = batadv_bla_claim_get_backbone_gw(claim);
2076 client_roamed = batadv_compare_eth(backbone_gw->orig,
2078 batadv_backbone_gw_put(backbone_gw);
2141 struct batadv_bla_backbone_gw *backbone_gw;
2166 backbone_gw = batadv_bla_claim_get_backbone_gw(claim);
2168 is_own = batadv_compare_eth(backbone_gw->orig,
2171 spin_lock_bh(&backbone_gw->crc_lock);
2172 backbone_crc = backbone_gw->crc;
2173 spin_unlock_bh(&backbone_gw->crc_lock);
2176 backbone_gw->orig,
2180 batadv_backbone_gw_put(backbone_gw);
2224 is_own = batadv_compare_eth(claim->backbone_gw->orig,
2227 spin_lock_bh(&claim->backbone_gw->crc_lock);
2228 backbone_crc = claim->backbone_gw->crc;
2229 spin_unlock_bh(&claim->backbone_gw->crc_lock);
2240 claim->backbone_gw->orig) ||
2375 struct batadv_bla_backbone_gw *backbone_gw;
2398 hlist_for_each_entry_rcu(backbone_gw, head, hash_entry) {
2400 backbone_gw->lasttime);
2404 is_own = batadv_compare_eth(backbone_gw->orig,
2409 spin_lock_bh(&backbone_gw->crc_lock);
2410 backbone_crc = backbone_gw->crc;
2411 spin_unlock_bh(&backbone_gw->crc_lock);
2414 backbone_gw->orig,
2415 batadv_print_vid(backbone_gw->vid), secs,
2434 * @backbone_gw: entry to dump
2442 struct batadv_bla_backbone_gw *backbone_gw)
2461 is_own = batadv_compare_eth(backbone_gw->orig, primary_addr);
2463 spin_lock_bh(&backbone_gw->crc_lock);
2464 backbone_crc = backbone_gw->crc;
2465 spin_unlock_bh(&backbone_gw->crc_lock);
2467 msecs = jiffies_to_msecs(jiffies - backbone_gw->lasttime);
2476 backbone_gw->orig) ||
2477 nla_put_u16(msg, BATADV_ATTR_BLA_VID, backbone_gw->vid) ||
2512 struct batadv_bla_backbone_gw *backbone_gw;
2519 hlist_for_each_entry(backbone_gw, &hash->table[bucket], hash_entry) {
2524 primary_if, backbone_gw);
2637 if (!batadv_compare_eth(claim->backbone_gw->orig,