Lines Matching refs:bat_priv

58 batadv_bla_send_announce(struct batadv_priv *bat_priv,
152 *batadv_claim_hash_find(struct batadv_priv *bat_priv, in batadv_claim_hash_find() argument
155 struct batadv_hashtable *hash = bat_priv->bla.claim_hash; in batadv_claim_hash_find()
192 batadv_backbone_hash_find(struct batadv_priv *bat_priv, u8 *addr, in batadv_backbone_hash_find() argument
195 struct batadv_hashtable *hash = bat_priv->bla.backbone_hash; in batadv_backbone_hash_find()
238 hash = backbone_gw->bat_priv->bla.claim_hash; in batadv_bla_del_backbone_claims()
269 static void batadv_bla_send_claim(struct batadv_priv *bat_priv, u8 *mac, in batadv_bla_send_claim() argument
280 primary_if = batadv_primary_if_get_selected(bat_priv); in batadv_bla_send_claim()
284 memcpy(&local_claim_dest, &bat_priv->bla.claim_dest, in batadv_bla_send_claim()
319 batadv_dbg(BATADV_DBG_BLA, bat_priv, in batadv_bla_send_claim()
328 batadv_dbg(BATADV_DBG_BLA, bat_priv, in batadv_bla_send_claim()
337 batadv_dbg(BATADV_DBG_BLA, bat_priv, in batadv_bla_send_claim()
348 batadv_dbg(BATADV_DBG_BLA, bat_priv, in batadv_bla_send_claim()
361 batadv_inc_counter(bat_priv, BATADV_CNT_RX); in batadv_bla_send_claim()
362 batadv_add_counter(bat_priv, BATADV_CNT_RX_BYTES, in batadv_bla_send_claim()
383 batadv_bla_get_backbone_gw(struct batadv_priv *bat_priv, u8 *orig, in batadv_bla_get_backbone_gw() argument
390 entry = batadv_backbone_hash_find(bat_priv, orig, vid); in batadv_bla_get_backbone_gw()
395 batadv_dbg(BATADV_DBG_BLA, bat_priv, in batadv_bla_get_backbone_gw()
406 entry->bat_priv = bat_priv; in batadv_bla_get_backbone_gw()
414 hash_added = batadv_hash_add(bat_priv->bla.backbone_hash, in batadv_bla_get_backbone_gw()
426 orig_node = batadv_orig_hash_find(bat_priv, orig); in batadv_bla_get_backbone_gw()
428 batadv_tt_global_del_orig(bat_priv, orig_node, vid, in batadv_bla_get_backbone_gw()
434 batadv_bla_send_announce(bat_priv, entry); in batadv_bla_get_backbone_gw()
439 atomic_inc(&bat_priv->bla.num_requests); in batadv_bla_get_backbone_gw()
449 batadv_bla_update_own_backbone_gw(struct batadv_priv *bat_priv, in batadv_bla_update_own_backbone_gw() argument
455 backbone_gw = batadv_bla_get_backbone_gw(bat_priv, in batadv_bla_update_own_backbone_gw()
474 static void batadv_bla_answer_request(struct batadv_priv *bat_priv, in batadv_bla_answer_request() argument
484 batadv_dbg(BATADV_DBG_BLA, bat_priv, in batadv_bla_answer_request()
487 backbone_gw = batadv_backbone_hash_find(bat_priv, in batadv_bla_answer_request()
493 hash = bat_priv->bla.claim_hash; in batadv_bla_answer_request()
503 batadv_bla_send_claim(bat_priv, claim->addr, claim->vid, in batadv_bla_answer_request()
510 batadv_bla_send_announce(bat_priv, backbone_gw); in batadv_bla_answer_request()
527 batadv_dbg(BATADV_DBG_BLA, backbone_gw->bat_priv, in batadv_bla_send_request()
531 batadv_bla_send_claim(backbone_gw->bat_priv, backbone_gw->orig, in batadv_bla_send_request()
536 atomic_inc(&backbone_gw->bat_priv->bla.num_requests); in batadv_bla_send_request()
549 static void batadv_bla_send_announce(struct batadv_priv *bat_priv, in batadv_bla_send_announce() argument
559 batadv_bla_send_claim(bat_priv, mac, backbone_gw->vid, in batadv_bla_send_announce()
570 static void batadv_bla_add_claim(struct batadv_priv *bat_priv, in batadv_bla_add_claim() argument
580 claim = batadv_claim_hash_find(bat_priv, &search_claim); in batadv_bla_add_claim()
594 batadv_dbg(BATADV_DBG_BLA, bat_priv, in batadv_bla_add_claim()
597 hash_added = batadv_hash_add(bat_priv->bla.claim_hash, in batadv_bla_add_claim()
613 batadv_dbg(BATADV_DBG_BLA, bat_priv, in batadv_bla_add_claim()
634 static void batadv_bla_del_claim(struct batadv_priv *bat_priv, in batadv_bla_del_claim() argument
641 claim = batadv_claim_hash_find(bat_priv, &search_claim); in batadv_bla_del_claim()
645 batadv_dbg(BATADV_DBG_BLA, bat_priv, "bla_del_claim(): %pM, vid %d\n", in batadv_bla_del_claim()
648 batadv_hash_remove(bat_priv->bla.claim_hash, batadv_compare_claim, in batadv_bla_del_claim()
659 static int batadv_handle_announce(struct batadv_priv *bat_priv, u8 *an_addr, in batadv_handle_announce() argument
668 backbone_gw = batadv_bla_get_backbone_gw(bat_priv, backbone_addr, vid, in batadv_handle_announce()
678 batadv_dbg(BATADV_DBG_BLA, bat_priv, in batadv_handle_announce()
683 batadv_dbg(BATADV_DBG_BLA, backbone_gw->bat_priv, in batadv_handle_announce()
695 atomic_dec(&backbone_gw->bat_priv->bla.num_requests); in batadv_handle_announce()
705 static int batadv_handle_request(struct batadv_priv *bat_priv, in batadv_handle_request() argument
720 batadv_dbg(BATADV_DBG_BLA, bat_priv, in batadv_handle_request()
724 batadv_bla_answer_request(bat_priv, primary_if, vid); in batadv_handle_request()
729 static int batadv_handle_unclaim(struct batadv_priv *bat_priv, in batadv_handle_unclaim() argument
739 batadv_bla_send_claim(bat_priv, claim_addr, vid, in batadv_handle_unclaim()
742 backbone_gw = batadv_backbone_hash_find(bat_priv, backbone_addr, vid); in batadv_handle_unclaim()
748 batadv_dbg(BATADV_DBG_BLA, bat_priv, in batadv_handle_unclaim()
752 batadv_bla_del_claim(bat_priv, claim_addr, vid); in batadv_handle_unclaim()
758 static int batadv_handle_claim(struct batadv_priv *bat_priv, in batadv_handle_claim() argument
767 backbone_gw = batadv_bla_get_backbone_gw(bat_priv, backbone_addr, vid, in batadv_handle_claim()
774 batadv_bla_add_claim(bat_priv, claim_addr, vid, backbone_gw); in batadv_handle_claim()
776 batadv_bla_send_claim(bat_priv, claim_addr, vid, in batadv_handle_claim()
802 static int batadv_check_claim_group(struct batadv_priv *bat_priv, in batadv_check_claim_group() argument
812 bla_dst_own = &bat_priv->bla.claim_dest; in batadv_check_claim_group()
839 orig_node = batadv_orig_hash_find(bat_priv, backbone_addr); in batadv_check_claim_group()
849 batadv_dbg(BATADV_DBG_BLA, bat_priv, in batadv_check_claim_group()
871 static int batadv_bla_process_claim(struct batadv_priv *bat_priv, in batadv_bla_process_claim() argument
939 bla_dst_own = &bat_priv->bla.claim_dest; in batadv_bla_process_claim()
954 ret = batadv_check_claim_group(bat_priv, primary_if, hw_src, hw_dst, in batadv_bla_process_claim()
957 batadv_dbg(BATADV_DBG_BLA, bat_priv, in batadv_bla_process_claim()
966 batadv_bla_update_own_backbone_gw(bat_priv, primary_if, vid); in batadv_bla_process_claim()
971 if (batadv_handle_claim(bat_priv, primary_if, hw_src, in batadv_bla_process_claim()
976 if (batadv_handle_unclaim(bat_priv, primary_if, in batadv_bla_process_claim()
982 if (batadv_handle_announce(bat_priv, hw_src, ethhdr->h_source, in batadv_bla_process_claim()
987 if (batadv_handle_request(bat_priv, primary_if, hw_src, ethhdr, in batadv_bla_process_claim()
993 batadv_dbg(BATADV_DBG_BLA, bat_priv, in batadv_bla_process_claim()
1002 static void batadv_bla_purge_backbone_gw(struct batadv_priv *bat_priv, int now) in batadv_bla_purge_backbone_gw() argument
1011 hash = bat_priv->bla.backbone_hash; in batadv_bla_purge_backbone_gw()
1028 batadv_dbg(BATADV_DBG_BLA, backbone_gw->bat_priv, in batadv_bla_purge_backbone_gw()
1035 atomic_dec(&bat_priv->bla.num_requests); in batadv_bla_purge_backbone_gw()
1055 static void batadv_bla_purge_claims(struct batadv_priv *bat_priv, in batadv_bla_purge_claims() argument
1064 hash = bat_priv->bla.claim_hash; in batadv_bla_purge_claims()
1082 batadv_dbg(BATADV_DBG_BLA, bat_priv, in batadv_bla_purge_claims()
1087 batadv_handle_unclaim(bat_priv, primary_if, in batadv_bla_purge_claims()
1103 void batadv_bla_update_orig_address(struct batadv_priv *bat_priv, in batadv_bla_update_orig_address() argument
1115 bat_priv->bla.claim_dest.group = group; in batadv_bla_update_orig_address()
1118 if (!atomic_read(&bat_priv->bridge_loop_avoidance)) in batadv_bla_update_orig_address()
1122 batadv_bla_purge_claims(bat_priv, NULL, 1); in batadv_bla_update_orig_address()
1123 batadv_bla_purge_backbone_gw(bat_priv, 1); in batadv_bla_update_orig_address()
1127 hash = bat_priv->bla.backbone_hash; in batadv_bla_update_orig_address()
1146 batadv_bla_send_announce(bat_priv, backbone_gw); in batadv_bla_update_orig_address()
1159 struct batadv_priv *bat_priv; in batadv_bla_periodic_work() local
1169 bat_priv = container_of(priv_bla, struct batadv_priv, bla); in batadv_bla_periodic_work()
1170 primary_if = batadv_primary_if_get_selected(bat_priv); in batadv_bla_periodic_work()
1174 batadv_bla_purge_claims(bat_priv, primary_if, 0); in batadv_bla_periodic_work()
1175 batadv_bla_purge_backbone_gw(bat_priv, 0); in batadv_bla_periodic_work()
1177 if (!atomic_read(&bat_priv->bridge_loop_avoidance)) in batadv_bla_periodic_work()
1180 hash = bat_priv->bla.backbone_hash; in batadv_bla_periodic_work()
1195 batadv_bla_send_announce(bat_priv, backbone_gw); in batadv_bla_periodic_work()
1212 atomic_dec(&backbone_gw->bat_priv->bla.num_requests); in batadv_bla_periodic_work()
1221 queue_delayed_work(batadv_event_workqueue, &bat_priv->bla.work, in batadv_bla_periodic_work()
1234 int batadv_bla_init(struct batadv_priv *bat_priv) in batadv_bla_init() argument
1242 spin_lock_init(&bat_priv->bla.bcast_duplist_lock); in batadv_bla_init()
1244 batadv_dbg(BATADV_DBG_BLA, bat_priv, "bla hash registering\n"); in batadv_bla_init()
1247 memcpy(&bat_priv->bla.claim_dest.magic, claim_dest, 3); in batadv_bla_init()
1248 bat_priv->bla.claim_dest.type = 0; in batadv_bla_init()
1249 primary_if = batadv_primary_if_get_selected(bat_priv); in batadv_bla_init()
1252 bat_priv->bla.claim_dest.group = htons(crc); in batadv_bla_init()
1255 bat_priv->bla.claim_dest.group = 0; /* will be set later */ in batadv_bla_init()
1261 bat_priv->bla.bcast_duplist[i].entrytime = entrytime; in batadv_bla_init()
1262 bat_priv->bla.bcast_duplist_curr = 0; in batadv_bla_init()
1264 if (bat_priv->bla.claim_hash) in batadv_bla_init()
1267 bat_priv->bla.claim_hash = batadv_hash_new(128); in batadv_bla_init()
1268 bat_priv->bla.backbone_hash = batadv_hash_new(32); in batadv_bla_init()
1270 if (!bat_priv->bla.claim_hash || !bat_priv->bla.backbone_hash) in batadv_bla_init()
1273 batadv_hash_set_lock_class(bat_priv->bla.claim_hash, in batadv_bla_init()
1275 batadv_hash_set_lock_class(bat_priv->bla.backbone_hash, in batadv_bla_init()
1278 batadv_dbg(BATADV_DBG_BLA, bat_priv, "bla hashes initialized\n"); in batadv_bla_init()
1280 INIT_DELAYED_WORK(&bat_priv->bla.work, batadv_bla_periodic_work); in batadv_bla_init()
1282 queue_delayed_work(batadv_event_workqueue, &bat_priv->bla.work, in batadv_bla_init()
1301 int batadv_bla_check_bcast_duplist(struct batadv_priv *bat_priv, in batadv_bla_check_bcast_duplist() argument
1314 spin_lock_bh(&bat_priv->bla.bcast_duplist_lock); in batadv_bla_check_bcast_duplist()
1317 curr = (bat_priv->bla.bcast_duplist_curr + i); in batadv_bla_check_bcast_duplist()
1319 entry = &bat_priv->bla.bcast_duplist[curr]; in batadv_bla_check_bcast_duplist()
1343 curr = (bat_priv->bla.bcast_duplist_curr + BATADV_DUPLIST_SIZE - 1); in batadv_bla_check_bcast_duplist()
1345 entry = &bat_priv->bla.bcast_duplist[curr]; in batadv_bla_check_bcast_duplist()
1349 bat_priv->bla.bcast_duplist_curr = curr; in batadv_bla_check_bcast_duplist()
1352 spin_unlock_bh(&bat_priv->bla.bcast_duplist_lock); in batadv_bla_check_bcast_duplist()
1367 bool batadv_bla_is_backbone_gw_orig(struct batadv_priv *bat_priv, u8 *orig, in batadv_bla_is_backbone_gw_orig() argument
1370 struct batadv_hashtable *hash = bat_priv->bla.backbone_hash; in batadv_bla_is_backbone_gw_orig()
1375 if (!atomic_read(&bat_priv->bridge_loop_avoidance)) in batadv_bla_is_backbone_gw_orig()
1414 if (!atomic_read(&orig_node->bat_priv->bridge_loop_avoidance)) in batadv_bla_is_backbone_gw()
1424 backbone_gw = batadv_backbone_hash_find(orig_node->bat_priv, in batadv_bla_is_backbone_gw()
1434 void batadv_bla_free(struct batadv_priv *bat_priv) in batadv_bla_free() argument
1438 cancel_delayed_work_sync(&bat_priv->bla.work); in batadv_bla_free()
1439 primary_if = batadv_primary_if_get_selected(bat_priv); in batadv_bla_free()
1441 if (bat_priv->bla.claim_hash) { in batadv_bla_free()
1442 batadv_bla_purge_claims(bat_priv, primary_if, 1); in batadv_bla_free()
1443 batadv_hash_destroy(bat_priv->bla.claim_hash); in batadv_bla_free()
1444 bat_priv->bla.claim_hash = NULL; in batadv_bla_free()
1446 if (bat_priv->bla.backbone_hash) { in batadv_bla_free()
1447 batadv_bla_purge_backbone_gw(bat_priv, 1); in batadv_bla_free()
1448 batadv_hash_destroy(bat_priv->bla.backbone_hash); in batadv_bla_free()
1449 bat_priv->bla.backbone_hash = NULL; in batadv_bla_free()
1470 int batadv_bla_rx(struct batadv_priv *bat_priv, struct sk_buff *skb, in batadv_bla_rx() argument
1480 primary_if = batadv_primary_if_get_selected(bat_priv); in batadv_bla_rx()
1484 if (!atomic_read(&bat_priv->bridge_loop_avoidance)) in batadv_bla_rx()
1487 if (unlikely(atomic_read(&bat_priv->bla.num_requests))) in batadv_bla_rx()
1494 claim = batadv_claim_hash_find(bat_priv, &search_claim); in batadv_bla_rx()
1500 batadv_handle_claim(bat_priv, primary_if, in batadv_bla_rx()
1528 batadv_handle_claim(bat_priv, primary_if, in batadv_bla_rx()
1534 batadv_bla_update_own_backbone_gw(bat_priv, primary_if, vid); in batadv_bla_rx()
1566 int batadv_bla_tx(struct batadv_priv *bat_priv, struct sk_buff *skb, in batadv_bla_tx() argument
1574 primary_if = batadv_primary_if_get_selected(bat_priv); in batadv_bla_tx()
1578 if (!atomic_read(&bat_priv->bridge_loop_avoidance)) in batadv_bla_tx()
1581 if (batadv_bla_process_claim(bat_priv, primary_if, skb)) in batadv_bla_tx()
1586 if (unlikely(atomic_read(&bat_priv->bla.num_requests))) in batadv_bla_tx()
1594 claim = batadv_claim_hash_find(bat_priv, &search_claim); in batadv_bla_tx()
1606 batadv_handle_unclaim(bat_priv, primary_if, in batadv_bla_tx()
1625 batadv_bla_update_own_backbone_gw(bat_priv, primary_if, vid); in batadv_bla_tx()
1641 struct batadv_priv *bat_priv = netdev_priv(net_dev); in batadv_bla_claim_table_seq_print_text() local
1642 struct batadv_hashtable *hash = bat_priv->bla.claim_hash; in batadv_bla_claim_table_seq_print_text()
1658 ntohs(bat_priv->bla.claim_dest.group)); in batadv_bla_claim_table_seq_print_text()
1685 struct batadv_priv *bat_priv = netdev_priv(net_dev); in batadv_bla_backbone_table_seq_print_text() local
1686 struct batadv_hashtable *hash = bat_priv->bla.backbone_hash; in batadv_bla_backbone_table_seq_print_text()
1703 ntohs(bat_priv->bla.claim_dest.group)); in batadv_bla_backbone_table_seq_print_text()