• Home
  • Raw
  • Download

Lines Matching refs:bat_priv

55 batadv_bla_send_announce(struct batadv_priv *bat_priv,
217 batadv_claim_hash_find(struct batadv_priv *bat_priv, in batadv_claim_hash_find() argument
220 struct batadv_hashtable *hash = bat_priv->bla.claim_hash; in batadv_claim_hash_find()
257 batadv_backbone_hash_find(struct batadv_priv *bat_priv, u8 *addr, in batadv_backbone_hash_find() argument
260 struct batadv_hashtable *hash = bat_priv->bla.backbone_hash; in batadv_backbone_hash_find()
306 hash = backbone_gw->bat_priv->bla.claim_hash; in batadv_bla_del_backbone_claims()
339 static void batadv_bla_send_claim(struct batadv_priv *bat_priv, u8 *mac, in batadv_bla_send_claim() argument
350 primary_if = batadv_primary_if_get_selected(bat_priv); in batadv_bla_send_claim()
354 memcpy(&local_claim_dest, &bat_priv->bla.claim_dest, in batadv_bla_send_claim()
389 batadv_dbg(BATADV_DBG_BLA, bat_priv, in batadv_bla_send_claim()
398 batadv_dbg(BATADV_DBG_BLA, bat_priv, in batadv_bla_send_claim()
407 batadv_dbg(BATADV_DBG_BLA, bat_priv, in batadv_bla_send_claim()
418 batadv_dbg(BATADV_DBG_BLA, bat_priv, in batadv_bla_send_claim()
425 batadv_dbg(BATADV_DBG_BLA, bat_priv, in batadv_bla_send_claim()
442 batadv_inc_counter(bat_priv, BATADV_CNT_RX); in batadv_bla_send_claim()
443 batadv_add_counter(bat_priv, BATADV_CNT_RX_BYTES, in batadv_bla_send_claim()
461 struct batadv_priv *bat_priv; in batadv_bla_loopdetect_report() local
466 bat_priv = backbone_gw->bat_priv; in batadv_bla_loopdetect_report()
468 batadv_info(bat_priv->soft_iface, in batadv_bla_loopdetect_report()
475 batadv_throw_uevent(bat_priv, BATADV_UEV_BLA, BATADV_UEV_LOOPDETECT, in batadv_bla_loopdetect_report()
491 batadv_bla_get_backbone_gw(struct batadv_priv *bat_priv, u8 *orig, in batadv_bla_get_backbone_gw() argument
498 entry = batadv_backbone_hash_find(bat_priv, orig, vid); in batadv_bla_get_backbone_gw()
503 batadv_dbg(BATADV_DBG_BLA, bat_priv, in batadv_bla_get_backbone_gw()
514 entry->bat_priv = bat_priv; in batadv_bla_get_backbone_gw()
523 hash_added = batadv_hash_add(bat_priv->bla.backbone_hash, in batadv_bla_get_backbone_gw()
535 orig_node = batadv_orig_hash_find(bat_priv, orig); in batadv_bla_get_backbone_gw()
537 batadv_tt_global_del_orig(bat_priv, orig_node, vid, in batadv_bla_get_backbone_gw()
543 batadv_bla_send_announce(bat_priv, entry); in batadv_bla_get_backbone_gw()
548 atomic_inc(&bat_priv->bla.num_requests); in batadv_bla_get_backbone_gw()
564 batadv_bla_update_own_backbone_gw(struct batadv_priv *bat_priv, in batadv_bla_update_own_backbone_gw() argument
570 backbone_gw = batadv_bla_get_backbone_gw(bat_priv, in batadv_bla_update_own_backbone_gw()
589 static void batadv_bla_answer_request(struct batadv_priv *bat_priv, in batadv_bla_answer_request() argument
599 batadv_dbg(BATADV_DBG_BLA, bat_priv, in batadv_bla_answer_request()
603 backbone_gw = batadv_backbone_hash_find(bat_priv, in batadv_bla_answer_request()
609 hash = bat_priv->bla.claim_hash; in batadv_bla_answer_request()
619 batadv_bla_send_claim(bat_priv, claim->addr, claim->vid, in batadv_bla_answer_request()
626 batadv_bla_send_announce(bat_priv, backbone_gw); in batadv_bla_answer_request()
643 batadv_dbg(BATADV_DBG_BLA, backbone_gw->bat_priv, in batadv_bla_send_request()
647 batadv_bla_send_claim(backbone_gw->bat_priv, backbone_gw->orig, in batadv_bla_send_request()
652 atomic_inc(&backbone_gw->bat_priv->bla.num_requests); in batadv_bla_send_request()
662 static void batadv_bla_send_announce(struct batadv_priv *bat_priv, in batadv_bla_send_announce() argument
674 batadv_bla_send_claim(bat_priv, mac, backbone_gw->vid, in batadv_bla_send_announce()
685 static void batadv_bla_add_claim(struct batadv_priv *bat_priv, in batadv_bla_add_claim() argument
697 claim = batadv_claim_hash_find(bat_priv, &search_claim); in batadv_bla_add_claim()
713 batadv_dbg(BATADV_DBG_BLA, bat_priv, in batadv_bla_add_claim()
718 hash_added = batadv_hash_add(bat_priv->bla.claim_hash, in batadv_bla_add_claim()
734 batadv_dbg(BATADV_DBG_BLA, bat_priv, in batadv_bla_add_claim()
794 static void batadv_bla_del_claim(struct batadv_priv *bat_priv, in batadv_bla_del_claim() argument
803 claim = batadv_claim_hash_find(bat_priv, &search_claim); in batadv_bla_del_claim()
807 batadv_dbg(BATADV_DBG_BLA, bat_priv, "%s(): %pM, vid %d\n", __func__, in batadv_bla_del_claim()
810 claim_removed_node = batadv_hash_remove(bat_priv->bla.claim_hash, in batadv_bla_del_claim()
835 static bool batadv_handle_announce(struct batadv_priv *bat_priv, u8 *an_addr, in batadv_handle_announce() argument
844 backbone_gw = batadv_bla_get_backbone_gw(bat_priv, backbone_addr, vid, in batadv_handle_announce()
854 batadv_dbg(BATADV_DBG_BLA, bat_priv, in batadv_handle_announce()
863 batadv_dbg(BATADV_DBG_BLA, backbone_gw->bat_priv, in batadv_handle_announce()
875 atomic_dec(&backbone_gw->bat_priv->bla.num_requests); in batadv_handle_announce()
894 static bool batadv_handle_request(struct batadv_priv *bat_priv, in batadv_handle_request() argument
909 batadv_dbg(BATADV_DBG_BLA, bat_priv, in batadv_handle_request()
913 batadv_bla_answer_request(bat_priv, primary_if, vid); in batadv_handle_request()
927 static bool batadv_handle_unclaim(struct batadv_priv *bat_priv, in batadv_handle_unclaim() argument
937 batadv_bla_send_claim(bat_priv, claim_addr, vid, in batadv_handle_unclaim()
940 backbone_gw = batadv_backbone_hash_find(bat_priv, backbone_addr, vid); in batadv_handle_unclaim()
946 batadv_dbg(BATADV_DBG_BLA, bat_priv, in batadv_handle_unclaim()
950 batadv_bla_del_claim(bat_priv, claim_addr, vid); in batadv_handle_unclaim()
965 static bool batadv_handle_claim(struct batadv_priv *bat_priv, in batadv_handle_claim() argument
974 backbone_gw = batadv_bla_get_backbone_gw(bat_priv, backbone_addr, vid, in batadv_handle_claim()
981 batadv_bla_add_claim(bat_priv, claim_addr, vid, backbone_gw); in batadv_handle_claim()
983 batadv_bla_send_claim(bat_priv, claim_addr, vid, in batadv_handle_claim()
1009 static int batadv_check_claim_group(struct batadv_priv *bat_priv, in batadv_check_claim_group() argument
1019 bla_dst_own = &bat_priv->bla.claim_dest; in batadv_check_claim_group()
1046 orig_node = batadv_orig_hash_find(bat_priv, backbone_addr); in batadv_check_claim_group()
1056 batadv_dbg(BATADV_DBG_BLA, bat_priv, in batadv_check_claim_group()
1076 static bool batadv_bla_process_claim(struct batadv_priv *bat_priv, in batadv_bla_process_claim() argument
1144 bla_dst_own = &bat_priv->bla.claim_dest; in batadv_bla_process_claim()
1163 ret = batadv_check_claim_group(bat_priv, primary_if, hw_src, hw_dst, in batadv_bla_process_claim()
1166 batadv_dbg(BATADV_DBG_BLA, bat_priv, in batadv_bla_process_claim()
1175 batadv_bla_update_own_backbone_gw(bat_priv, primary_if, vid); in batadv_bla_process_claim()
1180 if (batadv_handle_claim(bat_priv, primary_if, hw_src, in batadv_bla_process_claim()
1185 if (batadv_handle_unclaim(bat_priv, primary_if, in batadv_bla_process_claim()
1191 if (batadv_handle_announce(bat_priv, hw_src, ethhdr->h_source, in batadv_bla_process_claim()
1196 if (batadv_handle_request(bat_priv, primary_if, hw_src, ethhdr, in batadv_bla_process_claim()
1202 batadv_dbg(BATADV_DBG_BLA, bat_priv, in batadv_bla_process_claim()
1218 static void batadv_bla_purge_backbone_gw(struct batadv_priv *bat_priv, int now) in batadv_bla_purge_backbone_gw() argument
1227 hash = bat_priv->bla.backbone_hash; in batadv_bla_purge_backbone_gw()
1244 batadv_dbg(BATADV_DBG_BLA, backbone_gw->bat_priv, in batadv_bla_purge_backbone_gw()
1251 atomic_dec(&bat_priv->bla.num_requests); in batadv_bla_purge_backbone_gw()
1271 static void batadv_bla_purge_claims(struct batadv_priv *bat_priv, in batadv_bla_purge_claims() argument
1281 hash = bat_priv->bla.claim_hash; in batadv_bla_purge_claims()
1302 batadv_dbg(BATADV_DBG_BLA, bat_priv, in batadv_bla_purge_claims()
1306 batadv_dbg(BATADV_DBG_BLA, bat_priv, in batadv_bla_purge_claims()
1310 batadv_handle_unclaim(bat_priv, primary_if, in batadv_bla_purge_claims()
1327 void batadv_bla_update_orig_address(struct batadv_priv *bat_priv, in batadv_bla_update_orig_address() argument
1339 bat_priv->bla.claim_dest.group = group; in batadv_bla_update_orig_address()
1342 if (!atomic_read(&bat_priv->bridge_loop_avoidance)) in batadv_bla_update_orig_address()
1346 batadv_bla_purge_claims(bat_priv, NULL, 1); in batadv_bla_update_orig_address()
1347 batadv_bla_purge_backbone_gw(bat_priv, 1); in batadv_bla_update_orig_address()
1351 hash = bat_priv->bla.backbone_hash; in batadv_bla_update_orig_address()
1370 batadv_bla_send_announce(bat_priv, backbone_gw); in batadv_bla_update_orig_address()
1387 batadv_bla_send_loopdetect(struct batadv_priv *bat_priv, in batadv_bla_send_loopdetect() argument
1390 batadv_dbg(BATADV_DBG_BLA, bat_priv, "Send loopdetect frame for vid %d\n", in batadv_bla_send_loopdetect()
1392 batadv_bla_send_claim(bat_priv, bat_priv->bla.loopdetect_addr, in batadv_bla_send_loopdetect()
1402 struct batadv_priv *bat_priv = netdev_priv(net_dev); in batadv_bla_status_update() local
1405 primary_if = batadv_primary_if_get_selected(bat_priv); in batadv_bla_status_update()
1412 batadv_bla_update_orig_address(bat_priv, primary_if, primary_if); in batadv_bla_status_update()
1427 struct batadv_priv *bat_priv; in batadv_bla_periodic_work() local
1438 bat_priv = container_of(priv_bla, struct batadv_priv, bla); in batadv_bla_periodic_work()
1439 primary_if = batadv_primary_if_get_selected(bat_priv); in batadv_bla_periodic_work()
1443 batadv_bla_purge_claims(bat_priv, primary_if, 0); in batadv_bla_periodic_work()
1444 batadv_bla_purge_backbone_gw(bat_priv, 0); in batadv_bla_periodic_work()
1446 if (!atomic_read(&bat_priv->bridge_loop_avoidance)) in batadv_bla_periodic_work()
1449 if (atomic_dec_and_test(&bat_priv->bla.loopdetect_next)) { in batadv_bla_periodic_work()
1454 eth_random_addr(bat_priv->bla.loopdetect_addr); in batadv_bla_periodic_work()
1455 bat_priv->bla.loopdetect_addr[0] = 0xba; in batadv_bla_periodic_work()
1456 bat_priv->bla.loopdetect_addr[1] = 0xbe; in batadv_bla_periodic_work()
1457 bat_priv->bla.loopdetect_lasttime = jiffies; in batadv_bla_periodic_work()
1458 atomic_set(&bat_priv->bla.loopdetect_next, in batadv_bla_periodic_work()
1465 hash = bat_priv->bla.backbone_hash; in batadv_bla_periodic_work()
1480 batadv_bla_send_announce(bat_priv, backbone_gw); in batadv_bla_periodic_work()
1482 batadv_bla_send_loopdetect(bat_priv, in batadv_bla_periodic_work()
1500 atomic_dec(&backbone_gw->bat_priv->bla.num_requests); in batadv_bla_periodic_work()
1508 queue_delayed_work(batadv_event_workqueue, &bat_priv->bla.work, in batadv_bla_periodic_work()
1526 int batadv_bla_init(struct batadv_priv *bat_priv) in batadv_bla_init() argument
1534 spin_lock_init(&bat_priv->bla.bcast_duplist_lock); in batadv_bla_init()
1536 batadv_dbg(BATADV_DBG_BLA, bat_priv, "bla hash registering\n"); in batadv_bla_init()
1539 memcpy(&bat_priv->bla.claim_dest.magic, claim_dest, 3); in batadv_bla_init()
1540 bat_priv->bla.claim_dest.type = 0; in batadv_bla_init()
1541 primary_if = batadv_primary_if_get_selected(bat_priv); in batadv_bla_init()
1544 bat_priv->bla.claim_dest.group = htons(crc); in batadv_bla_init()
1547 bat_priv->bla.claim_dest.group = 0; /* will be set later */ in batadv_bla_init()
1553 bat_priv->bla.bcast_duplist[i].entrytime = entrytime; in batadv_bla_init()
1554 bat_priv->bla.bcast_duplist_curr = 0; in batadv_bla_init()
1556 atomic_set(&bat_priv->bla.loopdetect_next, in batadv_bla_init()
1559 if (bat_priv->bla.claim_hash) in batadv_bla_init()
1562 bat_priv->bla.claim_hash = batadv_hash_new(128); in batadv_bla_init()
1563 if (!bat_priv->bla.claim_hash) in batadv_bla_init()
1566 bat_priv->bla.backbone_hash = batadv_hash_new(32); in batadv_bla_init()
1567 if (!bat_priv->bla.backbone_hash) { in batadv_bla_init()
1568 batadv_hash_destroy(bat_priv->bla.claim_hash); in batadv_bla_init()
1572 batadv_hash_set_lock_class(bat_priv->bla.claim_hash, in batadv_bla_init()
1574 batadv_hash_set_lock_class(bat_priv->bla.backbone_hash, in batadv_bla_init()
1577 batadv_dbg(BATADV_DBG_BLA, bat_priv, "bla hashes initialized\n"); in batadv_bla_init()
1579 INIT_DELAYED_WORK(&bat_priv->bla.work, batadv_bla_periodic_work); in batadv_bla_init()
1581 queue_delayed_work(batadv_event_workqueue, &bat_priv->bla.work, in batadv_bla_init()
1605 static bool batadv_bla_check_duplist(struct batadv_priv *bat_priv, in batadv_bla_check_duplist() argument
1617 spin_lock_bh(&bat_priv->bla.bcast_duplist_lock); in batadv_bla_check_duplist()
1620 curr = (bat_priv->bla.bcast_duplist_curr + i); in batadv_bla_check_duplist()
1622 entry = &bat_priv->bla.bcast_duplist[curr]; in batadv_bla_check_duplist()
1659 curr = (bat_priv->bla.bcast_duplist_curr + BATADV_DUPLIST_SIZE - 1); in batadv_bla_check_duplist()
1661 entry = &bat_priv->bla.bcast_duplist[curr]; in batadv_bla_check_duplist()
1672 bat_priv->bla.bcast_duplist_curr = curr; in batadv_bla_check_duplist()
1675 spin_unlock_bh(&bat_priv->bla.bcast_duplist_lock); in batadv_bla_check_duplist()
1692 static bool batadv_bla_check_ucast_duplist(struct batadv_priv *bat_priv, in batadv_bla_check_ucast_duplist() argument
1695 return batadv_bla_check_duplist(bat_priv, skb, (u8 *)skb->data, NULL); in batadv_bla_check_ucast_duplist()
1709 bool batadv_bla_check_bcast_duplist(struct batadv_priv *bat_priv, in batadv_bla_check_bcast_duplist() argument
1718 return batadv_bla_check_duplist(bat_priv, skb, payload_ptr, in batadv_bla_check_bcast_duplist()
1731 bool batadv_bla_is_backbone_gw_orig(struct batadv_priv *bat_priv, u8 *orig, in batadv_bla_is_backbone_gw_orig() argument
1734 struct batadv_hashtable *hash = bat_priv->bla.backbone_hash; in batadv_bla_is_backbone_gw_orig()
1739 if (!atomic_read(&bat_priv->bridge_loop_avoidance)) in batadv_bla_is_backbone_gw_orig()
1777 if (!atomic_read(&orig_node->bat_priv->bridge_loop_avoidance)) in batadv_bla_is_backbone_gw()
1787 backbone_gw = batadv_backbone_hash_find(orig_node->bat_priv, in batadv_bla_is_backbone_gw()
1802 void batadv_bla_free(struct batadv_priv *bat_priv) in batadv_bla_free() argument
1806 cancel_delayed_work_sync(&bat_priv->bla.work); in batadv_bla_free()
1807 primary_if = batadv_primary_if_get_selected(bat_priv); in batadv_bla_free()
1809 if (bat_priv->bla.claim_hash) { in batadv_bla_free()
1810 batadv_bla_purge_claims(bat_priv, primary_if, 1); in batadv_bla_free()
1811 batadv_hash_destroy(bat_priv->bla.claim_hash); in batadv_bla_free()
1812 bat_priv->bla.claim_hash = NULL; in batadv_bla_free()
1814 if (bat_priv->bla.backbone_hash) { in batadv_bla_free()
1815 batadv_bla_purge_backbone_gw(bat_priv, 1); in batadv_bla_free()
1816 batadv_hash_destroy(bat_priv->bla.backbone_hash); in batadv_bla_free()
1817 bat_priv->bla.backbone_hash = NULL; in batadv_bla_free()
1836 batadv_bla_loopdetect_check(struct batadv_priv *bat_priv, struct sk_buff *skb, in batadv_bla_loopdetect_check() argument
1850 bat_priv->bla.loopdetect_addr)) in batadv_bla_loopdetect_check()
1856 if (batadv_has_timed_out(bat_priv->bla.loopdetect_lasttime, in batadv_bla_loopdetect_check()
1860 backbone_gw = batadv_bla_get_backbone_gw(bat_priv, in batadv_bla_loopdetect_check()
1893 bool batadv_bla_rx(struct batadv_priv *bat_priv, struct sk_buff *skb, in batadv_bla_rx() argument
1905 primary_if = batadv_primary_if_get_selected(bat_priv); in batadv_bla_rx()
1909 if (!atomic_read(&bat_priv->bridge_loop_avoidance)) in batadv_bla_rx()
1912 if (batadv_bla_loopdetect_check(bat_priv, skb, primary_if, vid)) in batadv_bla_rx()
1915 if (unlikely(atomic_read(&bat_priv->bla.num_requests))) in batadv_bla_rx()
1940 batadv_bla_check_ucast_duplist(bat_priv, skb)) in batadv_bla_rx()
1945 claim = batadv_claim_hash_find(bat_priv, &search_claim); in batadv_bla_rx()
1952 batadv_dbg(BATADV_DBG_BLA, bat_priv, in batadv_bla_rx()
1955 batadv_is_my_client(bat_priv, in batadv_bla_rx()
1958 batadv_handle_claim(bat_priv, primary_if, in batadv_bla_rx()
1991 batadv_handle_claim(bat_priv, primary_if, in batadv_bla_rx()
1997 batadv_bla_update_own_backbone_gw(bat_priv, primary_if, vid); in batadv_bla_rx()
2028 bool batadv_bla_tx(struct batadv_priv *bat_priv, struct sk_buff *skb, in batadv_bla_tx() argument
2038 primary_if = batadv_primary_if_get_selected(bat_priv); in batadv_bla_tx()
2042 if (!atomic_read(&bat_priv->bridge_loop_avoidance)) in batadv_bla_tx()
2045 if (batadv_bla_process_claim(bat_priv, primary_if, skb)) in batadv_bla_tx()
2050 if (unlikely(atomic_read(&bat_priv->bla.num_requests))) in batadv_bla_tx()
2058 claim = batadv_claim_hash_find(bat_priv, &search_claim); in batadv_bla_tx()
2079 batadv_dbg(BATADV_DBG_BLA, bat_priv, "%s(): Roaming client %pM detected. Unclaim it.\n", in batadv_bla_tx()
2081 batadv_handle_unclaim(bat_priv, primary_if, in batadv_bla_tx()
2086 batadv_dbg(BATADV_DBG_BLA, bat_priv, "%s(): Race for claim %pM detected. Drop packet.\n", in batadv_bla_tx()
2105 batadv_bla_update_own_backbone_gw(bat_priv, primary_if, vid); in batadv_bla_tx()
2238 struct batadv_priv *bat_priv; in batadv_bla_claim_dump() local
2255 bat_priv = netdev_priv(soft_iface); in batadv_bla_claim_dump()
2256 hash = bat_priv->bla.claim_hash; in batadv_bla_claim_dump()
2258 primary_if = batadv_primary_if_get_selected(bat_priv); in batadv_bla_claim_dump()
2408 struct batadv_priv *bat_priv; in batadv_bla_backbone_dump() local
2425 bat_priv = netdev_priv(soft_iface); in batadv_bla_backbone_dump()
2426 hash = bat_priv->bla.backbone_hash; in batadv_bla_backbone_dump()
2428 primary_if = batadv_primary_if_get_selected(bat_priv); in batadv_bla_backbone_dump()
2467 bool batadv_bla_check_claim(struct batadv_priv *bat_priv, in batadv_bla_check_claim() argument
2475 if (!atomic_read(&bat_priv->bridge_loop_avoidance)) in batadv_bla_check_claim()
2478 primary_if = batadv_primary_if_get_selected(bat_priv); in batadv_bla_check_claim()
2486 claim = batadv_claim_hash_find(bat_priv, &search_claim); in batadv_bla_check_claim()