bat_priv 100 net/batman-adv/bat_algo.c int batadv_algo_select(struct batadv_priv *bat_priv, char *name) bat_priv 108 net/batman-adv/bat_algo.c bat_priv->algo_ops = bat_algo_ops; bat_priv 22 net/batman-adv/bat_algo.h int batadv_algo_select(struct batadv_priv *bat_priv, char *name); bat_priv 140 net/batman-adv/bat_iv_ogm.c batadv_iv_ogm_orig_get(struct batadv_priv *bat_priv, const u8 *addr) bat_priv 145 net/batman-adv/bat_iv_ogm.c orig_node = batadv_orig_hash_find(bat_priv, addr); bat_priv 149 net/batman-adv/bat_iv_ogm.c orig_node = batadv_orig_node_new(bat_priv, addr); bat_priv 156 net/batman-adv/bat_iv_ogm.c hash_added = batadv_hash_add(bat_priv->orig_hash, batadv_compare_orig, bat_priv 278 net/batman-adv/bat_iv_ogm.c batadv_iv_ogm_emit_send_time(const struct batadv_priv *bat_priv) bat_priv 282 net/batman-adv/bat_iv_ogm.c msecs = atomic_read(&bat_priv->orig_interval) - BATADV_JITTER; bat_priv 295 net/batman-adv/bat_iv_ogm.c static u8 batadv_hop_penalty(u8 tq, const struct batadv_priv *bat_priv) bat_priv 297 net/batman-adv/bat_iv_ogm.c int hop_penalty = atomic_read(&bat_priv->hop_penalty); bat_priv 336 net/batman-adv/bat_iv_ogm.c struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface); bat_priv 369 net/batman-adv/bat_iv_ogm.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 390 net/batman-adv/bat_iv_ogm.c batadv_inc_counter(bat_priv, BATADV_CNT_MGMT_TX); bat_priv 391 net/batman-adv/bat_iv_ogm.c batadv_add_counter(bat_priv, BATADV_CNT_MGMT_TX_BYTES, bat_priv 438 net/batman-adv/bat_iv_ogm.c struct batadv_priv *bat_priv, bat_priv 481 net/batman-adv/bat_iv_ogm.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 543 net/batman-adv/bat_iv_ogm.c struct batadv_priv *bat_priv = netdev_priv(if_incoming->soft_iface); bat_priv 548 net/batman-adv/bat_iv_ogm.c atomic_t *queue_left = own_packet ? NULL : &bat_priv->batman_queue_left; bat_priv 550 net/batman-adv/bat_iv_ogm.c if (atomic_read(&bat_priv->aggregated_ogms) && bat_priv 563 net/batman-adv/bat_iv_ogm.c queue_left, bat_priv, skb); bat_priv 587 net/batman-adv/bat_iv_ogm.c batadv_forw_packet_ogmv1_queue(bat_priv, forw_packet_aggr, send_time); bat_priv 618 net/batman-adv/bat_iv_ogm.c static void batadv_iv_ogm_queue_add(struct batadv_priv *bat_priv, bat_priv 639 net/batman-adv/bat_iv_ogm.c spin_lock_bh(&bat_priv->forw_bat_list_lock); bat_priv 641 net/batman-adv/bat_iv_ogm.c if (atomic_read(&bat_priv->aggregated_ogms) && !own_packet) { bat_priv 643 net/batman-adv/bat_iv_ogm.c &bat_priv->forw_bat_list, list) { bat_priv 645 net/batman-adv/bat_iv_ogm.c bat_priv, packet_len, bat_priv 661 net/batman-adv/bat_iv_ogm.c spin_unlock_bh(&bat_priv->forw_bat_list_lock); bat_priv 667 net/batman-adv/bat_iv_ogm.c if (!own_packet && atomic_read(&bat_priv->aggregated_ogms)) bat_priv 677 net/batman-adv/bat_iv_ogm.c spin_unlock_bh(&bat_priv->forw_bat_list_lock); bat_priv 689 net/batman-adv/bat_iv_ogm.c struct batadv_priv *bat_priv = netdev_priv(if_incoming->soft_iface); bat_priv 693 net/batman-adv/bat_iv_ogm.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, "ttl exceeded\n"); bat_priv 717 net/batman-adv/bat_iv_ogm.c bat_priv); bat_priv 719 net/batman-adv/bat_iv_ogm.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 728 net/batman-adv/bat_iv_ogm.c batadv_iv_ogm_queue_add(bat_priv, (unsigned char *)batadv_ogm_packet, bat_priv 742 net/batman-adv/bat_iv_ogm.c struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface); bat_priv 743 net/batman-adv/bat_iv_ogm.c struct batadv_hashtable *hash = bat_priv->orig_hash; bat_priv 764 net/batman-adv/bat_iv_ogm.c batadv_bit_get_packet(bat_priv, word, 1, 0); bat_priv 781 net/batman-adv/bat_iv_ogm.c struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface); bat_priv 805 net/batman-adv/bat_iv_ogm.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 811 net/batman-adv/bat_iv_ogm.c batadv_tt_local_commit_changes(bat_priv); bat_priv 812 net/batman-adv/bat_iv_ogm.c tvlv_len = batadv_tvlv_container_ogm_append(bat_priv, ogm_buff, bat_priv 827 net/batman-adv/bat_iv_ogm.c send_time = batadv_iv_ogm_emit_send_time(bat_priv); bat_priv 833 net/batman-adv/bat_iv_ogm.c batadv_iv_ogm_queue_add(bat_priv, *ogm_buff, *ogm_buff_len, bat_priv 849 net/batman-adv/bat_iv_ogm.c batadv_iv_ogm_queue_add(bat_priv, *ogm_buff, bat_priv 915 net/batman-adv/bat_iv_ogm.c batadv_iv_ogm_orig_update(struct batadv_priv *bat_priv, bat_priv 933 net/batman-adv/bat_iv_ogm.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 973 net/batman-adv/bat_iv_ogm.c orig_tmp = batadv_iv_ogm_orig_get(bat_priv, ethhdr->h_source); bat_priv 985 net/batman-adv/bat_iv_ogm.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 1041 net/batman-adv/bat_iv_ogm.c batadv_update_route(bat_priv, orig_node, if_outgoing, neigh_node); bat_priv 1073 net/batman-adv/bat_iv_ogm.c struct batadv_priv *bat_priv = netdev_priv(if_incoming->soft_iface); bat_priv 1169 net/batman-adv/bat_iv_ogm.c bat_priv); bat_priv 1180 net/batman-adv/bat_iv_ogm.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 1215 net/batman-adv/bat_iv_ogm.c struct batadv_priv *bat_priv = netdev_priv(if_incoming->soft_iface); bat_priv 1230 net/batman-adv/bat_iv_ogm.c orig_node = batadv_iv_ogm_orig_get(bat_priv, batadv_ogm_packet->orig); bat_priv 1245 net/batman-adv/bat_iv_ogm.c batadv_window_protected(bat_priv, seq_diff, bat_priv 1277 net/batman-adv/bat_iv_ogm.c need_update |= batadv_bit_get_packet(bat_priv, bitmap, bat_priv 1288 net/batman-adv/bat_iv_ogm.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 1317 net/batman-adv/bat_iv_ogm.c struct batadv_priv *bat_priv = netdev_priv(if_incoming->soft_iface); bat_priv 1351 net/batman-adv/bat_iv_ogm.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 1358 net/batman-adv/bat_iv_ogm.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 1387 net/batman-adv/bat_iv_ogm.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 1394 net/batman-adv/bat_iv_ogm.c batadv_tvlv_ogm_receive(bat_priv, ogm_packet, orig_node); bat_priv 1402 net/batman-adv/bat_iv_ogm.c orig_neigh_node = batadv_iv_ogm_orig_get(bat_priv, bat_priv 1409 net/batman-adv/bat_iv_ogm.c batadv_nc_update_nc_node(bat_priv, orig_node, orig_neigh_node, bat_priv 1419 net/batman-adv/bat_iv_ogm.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 1440 net/batman-adv/bat_iv_ogm.c batadv_iv_ogm_orig_update(bat_priv, orig_node, bat_priv 1458 net/batman-adv/bat_iv_ogm.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 1468 net/batman-adv/bat_iv_ogm.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 1475 net/batman-adv/bat_iv_ogm.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 1481 net/batman-adv/bat_iv_ogm.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 1486 net/batman-adv/bat_iv_ogm.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 1562 net/batman-adv/bat_iv_ogm.c struct batadv_priv *bat_priv = netdev_priv(if_incoming->soft_iface); bat_priv 1599 net/batman-adv/bat_iv_ogm.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 1630 net/batman-adv/bat_iv_ogm.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 1637 net/batman-adv/bat_iv_ogm.c orig_neigh_node = batadv_iv_ogm_orig_get(bat_priv, bat_priv 1645 net/batman-adv/bat_iv_ogm.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 1652 net/batman-adv/bat_iv_ogm.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 1659 net/batman-adv/bat_iv_ogm.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 1665 net/batman-adv/bat_iv_ogm.c orig_node = batadv_iv_ogm_orig_get(bat_priv, ogm_packet->orig); bat_priv 1677 net/batman-adv/bat_iv_ogm.c if (hard_iface->soft_iface != bat_priv->soft_iface) bat_priv 1697 net/batman-adv/bat_iv_ogm.c struct batadv_priv *bat_priv; bat_priv 1703 net/batman-adv/bat_iv_ogm.c bat_priv = netdev_priv(forw_packet->if_incoming->soft_iface); bat_priv 1705 net/batman-adv/bat_iv_ogm.c if (atomic_read(&bat_priv->mesh_state) == BATADV_MESH_DEACTIVATING) { bat_priv 1727 net/batman-adv/bat_iv_ogm.c &bat_priv->forw_bat_list_lock)) bat_priv 1734 net/batman-adv/bat_iv_ogm.c struct batadv_priv *bat_priv = netdev_priv(if_incoming->soft_iface); bat_priv 1748 net/batman-adv/bat_iv_ogm.c if (bat_priv->algo_ops->iface.enable != batadv_iv_ogm_iface_enable) bat_priv 1751 net/batman-adv/bat_iv_ogm.c batadv_inc_counter(bat_priv, BATADV_CNT_MGMT_RX); bat_priv 1752 net/batman-adv/bat_iv_ogm.c batadv_add_counter(bat_priv, BATADV_CNT_MGMT_RX_BYTES, bat_priv 1817 net/batman-adv/bat_iv_ogm.c static void batadv_iv_ogm_orig_print(struct batadv_priv *bat_priv, bat_priv 1822 net/batman-adv/bat_iv_ogm.c struct batadv_hashtable *hash = bat_priv->orig_hash; bat_priv 1923 net/batman-adv/bat_iv_ogm.c struct batadv_priv *bat_priv, bat_priv 1985 net/batman-adv/bat_iv_ogm.c struct batadv_priv *bat_priv, bat_priv 2013 net/batman-adv/bat_iv_ogm.c bat_priv, if_outgoing, bat_priv 2047 net/batman-adv/bat_iv_ogm.c struct batadv_priv *bat_priv, bat_priv 2059 net/batman-adv/bat_iv_ogm.c if (batadv_iv_ogm_orig_dump_entry(msg, portid, seq, bat_priv, bat_priv 2083 net/batman-adv/bat_iv_ogm.c struct batadv_priv *bat_priv, bat_priv 2086 net/batman-adv/bat_iv_ogm.c struct batadv_hashtable *hash = bat_priv->orig_hash; bat_priv 2098 net/batman-adv/bat_iv_ogm.c bat_priv, if_outgoing, head, bat_priv 2135 net/batman-adv/bat_iv_ogm.c static void batadv_iv_neigh_print(struct batadv_priv *bat_priv, bat_priv 2263 net/batman-adv/bat_iv_ogm.c struct batadv_priv *bat_priv, bat_priv 2295 net/batman-adv/bat_iv_ogm.c struct batadv_priv *bat_priv, bat_priv 2309 net/batman-adv/bat_iv_ogm.c bat_priv, bat_priv 2317 net/batman-adv/bat_iv_ogm.c if (hard_iface->soft_iface != bat_priv->soft_iface) bat_priv 2325 net/batman-adv/bat_iv_ogm.c bat_priv, bat_priv 2403 net/batman-adv/bat_iv_ogm.c static void batadv_iv_init_sel_class(struct batadv_priv *bat_priv) bat_priv 2406 net/batman-adv/bat_iv_ogm.c atomic_set(&bat_priv->gw.sel_class, 20); bat_priv 2410 net/batman-adv/bat_iv_ogm.c batadv_iv_gw_get_best_gw_node(struct batadv_priv *bat_priv) bat_priv 2422 net/batman-adv/bat_iv_ogm.c hlist_for_each_entry_rcu(gw_node, &bat_priv->gw.gateway_list, list) { bat_priv 2438 net/batman-adv/bat_iv_ogm.c switch (atomic_read(&bat_priv->gw.sel_class)) { bat_priv 2489 net/batman-adv/bat_iv_ogm.c static bool batadv_iv_gw_is_eligible(struct batadv_priv *bat_priv, bat_priv 2501 net/batman-adv/bat_iv_ogm.c if (atomic_read(&bat_priv->gw.sel_class) <= 2) bat_priv 2536 net/batman-adv/bat_iv_ogm.c if ((atomic_read(&bat_priv->gw.sel_class) > 3) && bat_priv 2537 net/batman-adv/bat_iv_ogm.c (orig_tq_avg - gw_tq_avg < atomic_read(&bat_priv->gw.sel_class))) bat_priv 2540 net/batman-adv/bat_iv_ogm.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 2560 net/batman-adv/bat_iv_ogm.c static int batadv_iv_gw_write_buffer_text(struct batadv_priv *bat_priv, bat_priv 2577 net/batman-adv/bat_iv_ogm.c curr_gw = batadv_gw_get_selected_gw_node(bat_priv); bat_priv 2600 net/batman-adv/bat_iv_ogm.c static void batadv_iv_gw_print(struct batadv_priv *bat_priv, bat_priv 2610 net/batman-adv/bat_iv_ogm.c hlist_for_each_entry_rcu(gw_node, &bat_priv->gw.gateway_list, list) { bat_priv 2612 net/batman-adv/bat_iv_ogm.c if (batadv_iv_gw_write_buffer_text(bat_priv, seq, gw_node) < 0) bat_priv 2636 net/batman-adv/bat_iv_ogm.c struct batadv_priv *bat_priv, bat_priv 2653 net/batman-adv/bat_iv_ogm.c curr_gw = batadv_gw_get_selected_gw_node(bat_priv); bat_priv 2708 net/batman-adv/bat_iv_ogm.c struct batadv_priv *bat_priv) bat_priv 2715 net/batman-adv/bat_iv_ogm.c spin_lock_bh(&bat_priv->gw.list_lock); bat_priv 2716 net/batman-adv/bat_iv_ogm.c cb->seq = bat_priv->gw.generation << 1 | 1; bat_priv 2718 net/batman-adv/bat_iv_ogm.c hlist_for_each_entry(gw_node, &bat_priv->gw.gateway_list, list) { bat_priv 2722 net/batman-adv/bat_iv_ogm.c if (batadv_iv_gw_dump_entry(msg, portid, cb, bat_priv, bat_priv 2731 net/batman-adv/bat_iv_ogm.c spin_unlock_bh(&bat_priv->gw.list_lock); bat_priv 47 net/batman-adv/bat_v.c struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface); bat_priv 50 net/batman-adv/bat_v.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 101 net/batman-adv/bat_v.c struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface); bat_priv 104 net/batman-adv/bat_v.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 179 net/batman-adv/bat_v.c static void batadv_v_neigh_print(struct batadv_priv *bat_priv, bat_priv 267 net/batman-adv/bat_v.c struct batadv_priv *bat_priv, bat_priv 299 net/batman-adv/bat_v.c struct batadv_priv *bat_priv, bat_priv 313 net/batman-adv/bat_v.c bat_priv, single_hardif, bat_priv 319 net/batman-adv/bat_v.c if (hard_iface->soft_iface != bat_priv->soft_iface) bat_priv 327 net/batman-adv/bat_v.c bat_priv, hard_iface, bat_priv 347 net/batman-adv/bat_v.c static void batadv_v_orig_print(struct batadv_priv *bat_priv, bat_priv 352 net/batman-adv/bat_v.c struct batadv_hashtable *hash = bat_priv->orig_hash; bat_priv 424 net/batman-adv/bat_v.c struct batadv_priv *bat_priv, bat_priv 491 net/batman-adv/bat_v.c struct batadv_priv *bat_priv, bat_priv 510 net/batman-adv/bat_v.c if (batadv_v_orig_dump_subentry(msg, portid, seq, bat_priv, bat_priv 543 net/batman-adv/bat_v.c struct batadv_priv *bat_priv, bat_priv 555 net/batman-adv/bat_v.c if (batadv_v_orig_dump_entry(msg, portid, seq, bat_priv, bat_priv 578 net/batman-adv/bat_v.c struct batadv_priv *bat_priv, bat_priv 581 net/batman-adv/bat_v.c struct batadv_hashtable *hash = bat_priv->orig_hash; bat_priv 593 net/batman-adv/bat_v.c bat_priv, if_outgoing, head, &idx, bat_priv 663 net/batman-adv/bat_v.c static void batadv_v_init_sel_class(struct batadv_priv *bat_priv) bat_priv 666 net/batman-adv/bat_v.c atomic_set(&bat_priv->gw.sel_class, 50); bat_priv 669 net/batman-adv/bat_v.c static ssize_t batadv_v_store_sel_class(struct batadv_priv *bat_priv, bat_priv 674 net/batman-adv/bat_v.c if (!batadv_parse_throughput(bat_priv->soft_iface, buff, bat_priv 679 net/batman-adv/bat_v.c old_class = atomic_read(&bat_priv->gw.sel_class); bat_priv 680 net/batman-adv/bat_v.c atomic_set(&bat_priv->gw.sel_class, class); bat_priv 683 net/batman-adv/bat_v.c batadv_gw_reselect(bat_priv); bat_priv 688 net/batman-adv/bat_v.c static ssize_t batadv_v_show_sel_class(struct batadv_priv *bat_priv, char *buff) bat_priv 690 net/batman-adv/bat_v.c u32 class = atomic_read(&bat_priv->gw.sel_class); bat_priv 745 net/batman-adv/bat_v.c batadv_v_gw_get_best_gw_node(struct batadv_priv *bat_priv) bat_priv 751 net/batman-adv/bat_v.c hlist_for_each_entry_rcu(gw_node, &bat_priv->gw.gateway_list, list) { bat_priv 784 net/batman-adv/bat_v.c static bool batadv_v_gw_is_eligible(struct batadv_priv *bat_priv, bat_priv 792 net/batman-adv/bat_v.c threshold = atomic_read(&bat_priv->gw.sel_class); bat_priv 794 net/batman-adv/bat_v.c curr_gw = batadv_gw_node_get(bat_priv, curr_gw_orig); bat_priv 805 net/batman-adv/bat_v.c orig_gw = batadv_gw_node_get(bat_priv, orig_node); bat_priv 818 net/batman-adv/bat_v.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 834 net/batman-adv/bat_v.c static int batadv_v_gw_write_buffer_text(struct batadv_priv *bat_priv, bat_priv 851 net/batman-adv/bat_v.c curr_gw = batadv_gw_get_selected_gw_node(bat_priv); bat_priv 880 net/batman-adv/bat_v.c static void batadv_v_gw_print(struct batadv_priv *bat_priv, bat_priv 890 net/batman-adv/bat_v.c hlist_for_each_entry_rcu(gw_node, &bat_priv->gw.gateway_list, list) { bat_priv 892 net/batman-adv/bat_v.c if (batadv_v_gw_write_buffer_text(bat_priv, seq, gw_node) < 0) bat_priv 916 net/batman-adv/bat_v.c struct batadv_priv *bat_priv, bat_priv 933 net/batman-adv/bat_v.c curr_gw = batadv_gw_get_selected_gw_node(bat_priv); bat_priv 1008 net/batman-adv/bat_v.c struct batadv_priv *bat_priv) bat_priv 1015 net/batman-adv/bat_v.c spin_lock_bh(&bat_priv->gw.list_lock); bat_priv 1016 net/batman-adv/bat_v.c cb->seq = bat_priv->gw.generation << 1 | 1; bat_priv 1018 net/batman-adv/bat_v.c hlist_for_each_entry(gw_node, &bat_priv->gw.gateway_list, list) { bat_priv 1022 net/batman-adv/bat_v.c if (batadv_v_gw_dump_entry(msg, portid, cb, bat_priv, bat_priv 1031 net/batman-adv/bat_v.c spin_unlock_bh(&bat_priv->gw.list_lock); bat_priv 1100 net/batman-adv/bat_v.c int batadv_v_mesh_init(struct batadv_priv *bat_priv) bat_priv 1104 net/batman-adv/bat_v.c ret = batadv_v_ogm_init(bat_priv); bat_priv 1115 net/batman-adv/bat_v.c void batadv_v_mesh_free(struct batadv_priv *bat_priv) bat_priv 1117 net/batman-adv/bat_v.c batadv_v_ogm_free(bat_priv); bat_priv 16 net/batman-adv/bat_v.h int batadv_v_mesh_init(struct batadv_priv *bat_priv); bat_priv 17 net/batman-adv/bat_v.h void batadv_v_mesh_free(struct batadv_priv *bat_priv); bat_priv 30 net/batman-adv/bat_v.h static inline int batadv_v_mesh_init(struct batadv_priv *bat_priv) bat_priv 35 net/batman-adv/bat_v.h static inline void batadv_v_mesh_free(struct batadv_priv *bat_priv) bat_priv 201 net/batman-adv/bat_v_elp.c struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface); bat_priv 239 net/batman-adv/bat_v_elp.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 261 net/batman-adv/bat_v_elp.c struct batadv_priv *bat_priv; bat_priv 268 net/batman-adv/bat_v_elp.c bat_priv = netdev_priv(hard_iface->soft_iface); bat_priv 270 net/batman-adv/bat_v_elp.c if (atomic_read(&bat_priv->mesh_state) == BATADV_MESH_DEACTIVATING) bat_priv 291 net/batman-adv/bat_v_elp.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 453 net/batman-adv/bat_v_elp.c static void batadv_v_elp_neigh_update(struct batadv_priv *bat_priv, bat_priv 465 net/batman-adv/bat_v_elp.c orig_neigh = batadv_v_ogm_orig_get(bat_priv, elp_packet->orig); bat_priv 514 net/batman-adv/bat_v_elp.c struct batadv_priv *bat_priv = netdev_priv(if_incoming->soft_iface); bat_priv 525 net/batman-adv/bat_v_elp.c if (batadv_is_my_mac(bat_priv, ethhdr->h_source)) bat_priv 531 net/batman-adv/bat_v_elp.c if (strcmp(bat_priv->algo_ops->name, "BATMAN_V") != 0) bat_priv 536 net/batman-adv/bat_v_elp.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 541 net/batman-adv/bat_v_elp.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 545 net/batman-adv/bat_v_elp.c batadv_v_elp_neigh_update(bat_priv, ethhdr->h_source, if_incoming, bat_priv 54 net/batman-adv/bat_v_ogm.c struct batadv_orig_node *batadv_v_ogm_orig_get(struct batadv_priv *bat_priv, bat_priv 60 net/batman-adv/bat_v_ogm.c orig_node = batadv_orig_hash_find(bat_priv, addr); bat_priv 64 net/batman-adv/bat_v_ogm.c orig_node = batadv_orig_node_new(bat_priv, addr); bat_priv 69 net/batman-adv/bat_v_ogm.c hash_added = batadv_hash_add(bat_priv->orig_hash, batadv_compare_orig, bat_priv 100 net/batman-adv/bat_v_ogm.c static void batadv_v_ogm_start_timer(struct batadv_priv *bat_priv) bat_priv 106 net/batman-adv/bat_v_ogm.c if (delayed_work_pending(&bat_priv->bat_v.ogm_wq)) bat_priv 109 net/batman-adv/bat_v_ogm.c msecs = atomic_read(&bat_priv->orig_interval) - BATADV_JITTER; bat_priv 111 net/batman-adv/bat_v_ogm.c queue_delayed_work(batadv_event_workqueue, &bat_priv->bat_v.ogm_wq, bat_priv 123 net/batman-adv/bat_v_ogm.c struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface); bat_priv 128 net/batman-adv/bat_v_ogm.c batadv_inc_counter(bat_priv, BATADV_CNT_MGMT_TX); bat_priv 129 net/batman-adv/bat_v_ogm.c batadv_add_counter(bat_priv, BATADV_CNT_MGMT_TX_BYTES, bat_priv 243 net/batman-adv/bat_v_ogm.c struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface); bat_priv 245 net/batman-adv/bat_v_ogm.c if (!atomic_read(&bat_priv->aggregated_ogms)) { bat_priv 263 net/batman-adv/bat_v_ogm.c static void batadv_v_ogm_send_softif(struct batadv_priv *bat_priv) bat_priv 273 net/batman-adv/bat_v_ogm.c lockdep_assert_held(&bat_priv->bat_v.ogm_buff_mutex); bat_priv 275 net/batman-adv/bat_v_ogm.c if (atomic_read(&bat_priv->mesh_state) == BATADV_MESH_DEACTIVATING) bat_priv 278 net/batman-adv/bat_v_ogm.c ogm_buff = bat_priv->bat_v.ogm_buff; bat_priv 279 net/batman-adv/bat_v_ogm.c ogm_buff_len = bat_priv->bat_v.ogm_buff_len; bat_priv 283 net/batman-adv/bat_v_ogm.c batadv_tt_local_commit_changes(bat_priv); bat_priv 284 net/batman-adv/bat_v_ogm.c tvlv_len = batadv_tvlv_container_ogm_append(bat_priv, &ogm_buff, bat_priv 288 net/batman-adv/bat_v_ogm.c bat_priv->bat_v.ogm_buff = ogm_buff; bat_priv 289 net/batman-adv/bat_v_ogm.c bat_priv->bat_v.ogm_buff_len = ogm_buff_len; bat_priv 299 net/batman-adv/bat_v_ogm.c ogm_packet->seqno = htonl(atomic_read(&bat_priv->bat_v.ogm_seqno)); bat_priv 300 net/batman-adv/bat_v_ogm.c atomic_inc(&bat_priv->bat_v.ogm_seqno); bat_priv 306 net/batman-adv/bat_v_ogm.c if (hard_iface->soft_iface != bat_priv->soft_iface) bat_priv 330 net/batman-adv/bat_v_ogm.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, "OGM2 from ourselves on %s suppressed: %s\n", bat_priv 337 net/batman-adv/bat_v_ogm.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 359 net/batman-adv/bat_v_ogm.c batadv_v_ogm_start_timer(bat_priv); bat_priv 371 net/batman-adv/bat_v_ogm.c struct batadv_priv *bat_priv; bat_priv 374 net/batman-adv/bat_v_ogm.c bat_priv = container_of(bat_v, struct batadv_priv, bat_v); bat_priv 376 net/batman-adv/bat_v_ogm.c mutex_lock(&bat_priv->bat_v.ogm_buff_mutex); bat_priv 377 net/batman-adv/bat_v_ogm.c batadv_v_ogm_send_softif(bat_priv); bat_priv 378 net/batman-adv/bat_v_ogm.c mutex_unlock(&bat_priv->bat_v.ogm_buff_mutex); bat_priv 412 net/batman-adv/bat_v_ogm.c struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface); bat_priv 415 net/batman-adv/bat_v_ogm.c batadv_v_ogm_start_timer(bat_priv); bat_priv 439 net/batman-adv/bat_v_ogm.c struct batadv_priv *bat_priv = netdev_priv(primary_iface->soft_iface); bat_priv 442 net/batman-adv/bat_v_ogm.c mutex_lock(&bat_priv->bat_v.ogm_buff_mutex); bat_priv 443 net/batman-adv/bat_v_ogm.c if (!bat_priv->bat_v.ogm_buff) bat_priv 446 net/batman-adv/bat_v_ogm.c ogm_packet = (struct batadv_ogm2_packet *)bat_priv->bat_v.ogm_buff; bat_priv 450 net/batman-adv/bat_v_ogm.c mutex_unlock(&bat_priv->bat_v.ogm_buff_mutex); bat_priv 474 net/batman-adv/bat_v_ogm.c static u32 batadv_v_forward_penalty(struct batadv_priv *bat_priv, bat_priv 479 net/batman-adv/bat_v_ogm.c int hop_penalty = atomic_read(&bat_priv->hop_penalty); bat_priv 512 net/batman-adv/bat_v_ogm.c static void batadv_v_ogm_forward(struct batadv_priv *bat_priv, bat_priv 550 net/batman-adv/bat_v_ogm.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, "ttl exceeded\n"); bat_priv 574 net/batman-adv/bat_v_ogm.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 604 net/batman-adv/bat_v_ogm.c static int batadv_v_ogm_metric_update(struct batadv_priv *bat_priv, bat_priv 625 net/batman-adv/bat_v_ogm.c batadv_window_protected(bat_priv, seq_diff, bat_priv 629 net/batman-adv/bat_v_ogm.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 632 net/batman-adv/bat_v_ogm.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 655 net/batman-adv/bat_v_ogm.c path_throughput = batadv_v_forward_penalty(bat_priv, if_incoming, bat_priv 687 net/batman-adv/bat_v_ogm.c static bool batadv_v_ogm_route_update(struct batadv_priv *bat_priv, bat_priv 705 net/batman-adv/bat_v_ogm.c orig_neigh_node = batadv_v_ogm_orig_get(bat_priv, ethhdr->h_source); bat_priv 717 net/batman-adv/bat_v_ogm.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 727 net/batman-adv/bat_v_ogm.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 759 net/batman-adv/bat_v_ogm.c batadv_update_route(bat_priv, orig_node, if_outgoing, neigh_node); bat_priv 786 net/batman-adv/bat_v_ogm.c batadv_v_ogm_process_per_outif(struct batadv_priv *bat_priv, bat_priv 798 net/batman-adv/bat_v_ogm.c seqno_age = batadv_v_ogm_metric_update(bat_priv, ogm2, orig_node, bat_priv 808 net/batman-adv/bat_v_ogm.c batadv_tvlv_containers_process(bat_priv, true, orig_node, bat_priv 814 net/batman-adv/bat_v_ogm.c forward = batadv_v_ogm_route_update(bat_priv, ethhdr, ogm2, orig_node, bat_priv 820 net/batman-adv/bat_v_ogm.c batadv_v_ogm_forward(bat_priv, ogm2, orig_node, neigh_node, bat_priv 859 net/batman-adv/bat_v_ogm.c struct batadv_priv *bat_priv = netdev_priv(if_incoming->soft_iface); bat_priv 874 net/batman-adv/bat_v_ogm.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 885 net/batman-adv/bat_v_ogm.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 893 net/batman-adv/bat_v_ogm.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 898 net/batman-adv/bat_v_ogm.c orig_node = batadv_v_ogm_orig_get(bat_priv, ogm_packet->orig); bat_priv 918 net/batman-adv/bat_v_ogm.c batadv_v_ogm_process_per_outif(bat_priv, ethhdr, ogm_packet, orig_node, bat_priv 927 net/batman-adv/bat_v_ogm.c if (hard_iface->soft_iface != bat_priv->soft_iface) bat_priv 954 net/batman-adv/bat_v_ogm.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, "OGM2 packet from %pM on %s suppressed: %s\n", bat_priv 962 net/batman-adv/bat_v_ogm.c batadv_v_ogm_process_per_outif(bat_priv, ethhdr, ogm_packet, bat_priv 989 net/batman-adv/bat_v_ogm.c struct batadv_priv *bat_priv = netdev_priv(if_incoming->soft_iface); bat_priv 999 net/batman-adv/bat_v_ogm.c if (strcmp(bat_priv->algo_ops->name, "BATMAN_V") != 0) bat_priv 1005 net/batman-adv/bat_v_ogm.c if (batadv_is_my_mac(bat_priv, ethhdr->h_source)) bat_priv 1010 net/batman-adv/bat_v_ogm.c if (batadv_is_my_mac(bat_priv, ogm_packet->orig)) bat_priv 1013 net/batman-adv/bat_v_ogm.c batadv_inc_counter(bat_priv, BATADV_CNT_MGMT_RX); bat_priv 1014 net/batman-adv/bat_v_ogm.c batadv_add_counter(bat_priv, BATADV_CNT_MGMT_RX_BYTES, bat_priv 1048 net/batman-adv/bat_v_ogm.c int batadv_v_ogm_init(struct batadv_priv *bat_priv) bat_priv 1054 net/batman-adv/bat_v_ogm.c bat_priv->bat_v.ogm_buff_len = BATADV_OGM2_HLEN; bat_priv 1055 net/batman-adv/bat_v_ogm.c ogm_buff = kzalloc(bat_priv->bat_v.ogm_buff_len, GFP_ATOMIC); bat_priv 1059 net/batman-adv/bat_v_ogm.c bat_priv->bat_v.ogm_buff = ogm_buff; bat_priv 1069 net/batman-adv/bat_v_ogm.c atomic_set(&bat_priv->bat_v.ogm_seqno, random_seqno); bat_priv 1070 net/batman-adv/bat_v_ogm.c INIT_DELAYED_WORK(&bat_priv->bat_v.ogm_wq, batadv_v_ogm_send); bat_priv 1072 net/batman-adv/bat_v_ogm.c mutex_init(&bat_priv->bat_v.ogm_buff_mutex); bat_priv 1081 net/batman-adv/bat_v_ogm.c void batadv_v_ogm_free(struct batadv_priv *bat_priv) bat_priv 1083 net/batman-adv/bat_v_ogm.c cancel_delayed_work_sync(&bat_priv->bat_v.ogm_wq); bat_priv 1085 net/batman-adv/bat_v_ogm.c mutex_lock(&bat_priv->bat_v.ogm_buff_mutex); bat_priv 1087 net/batman-adv/bat_v_ogm.c kfree(bat_priv->bat_v.ogm_buff); bat_priv 1088 net/batman-adv/bat_v_ogm.c bat_priv->bat_v.ogm_buff = NULL; bat_priv 1089 net/batman-adv/bat_v_ogm.c bat_priv->bat_v.ogm_buff_len = 0; bat_priv 1091 net/batman-adv/bat_v_ogm.c mutex_unlock(&bat_priv->bat_v.ogm_buff_mutex); bat_priv 16 net/batman-adv/bat_v_ogm.h int batadv_v_ogm_init(struct batadv_priv *bat_priv); bat_priv 17 net/batman-adv/bat_v_ogm.h void batadv_v_ogm_free(struct batadv_priv *bat_priv); bat_priv 21 net/batman-adv/bat_v_ogm.h struct batadv_orig_node *batadv_v_ogm_orig_get(struct batadv_priv *bat_priv, bat_priv 38 net/batman-adv/bitarray.c struct batadv_priv *bat_priv = priv; bat_priv 63 net/batman-adv/bitarray.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 81 net/batman-adv/bitarray.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 56 net/batman-adv/bridge_loop_avoidance.c batadv_bla_send_announce(struct batadv_priv *bat_priv, bat_priv 211 net/batman-adv/bridge_loop_avoidance.c batadv_claim_hash_find(struct batadv_priv *bat_priv, bat_priv 214 net/batman-adv/bridge_loop_avoidance.c struct batadv_hashtable *hash = bat_priv->bla.claim_hash; bat_priv 251 net/batman-adv/bridge_loop_avoidance.c batadv_backbone_hash_find(struct batadv_priv *bat_priv, u8 *addr, bat_priv 254 net/batman-adv/bridge_loop_avoidance.c struct batadv_hashtable *hash = bat_priv->bla.backbone_hash; bat_priv 300 net/batman-adv/bridge_loop_avoidance.c hash = backbone_gw->bat_priv->bla.claim_hash; bat_priv 333 net/batman-adv/bridge_loop_avoidance.c static void batadv_bla_send_claim(struct batadv_priv *bat_priv, u8 *mac, bat_priv 344 net/batman-adv/bridge_loop_avoidance.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 348 net/batman-adv/bridge_loop_avoidance.c memcpy(&local_claim_dest, &bat_priv->bla.claim_dest, bat_priv 383 net/batman-adv/bridge_loop_avoidance.c batadv_dbg(BATADV_DBG_BLA, bat_priv, bat_priv 392 net/batman-adv/bridge_loop_avoidance.c batadv_dbg(BATADV_DBG_BLA, bat_priv, bat_priv 401 net/batman-adv/bridge_loop_avoidance.c batadv_dbg(BATADV_DBG_BLA, bat_priv, bat_priv 412 net/batman-adv/bridge_loop_avoidance.c batadv_dbg(BATADV_DBG_BLA, bat_priv, bat_priv 419 net/batman-adv/bridge_loop_avoidance.c batadv_dbg(BATADV_DBG_BLA, bat_priv, bat_priv 436 net/batman-adv/bridge_loop_avoidance.c batadv_inc_counter(bat_priv, BATADV_CNT_RX); bat_priv 437 net/batman-adv/bridge_loop_avoidance.c batadv_add_counter(bat_priv, BATADV_CNT_RX_BYTES, bat_priv 456 net/batman-adv/bridge_loop_avoidance.c struct batadv_priv *bat_priv; bat_priv 461 net/batman-adv/bridge_loop_avoidance.c bat_priv = backbone_gw->bat_priv; bat_priv 463 net/batman-adv/bridge_loop_avoidance.c batadv_info(bat_priv->soft_iface, bat_priv 470 net/batman-adv/bridge_loop_avoidance.c batadv_throw_uevent(bat_priv, BATADV_UEV_BLA, BATADV_UEV_LOOPDETECT, bat_priv 486 net/batman-adv/bridge_loop_avoidance.c batadv_bla_get_backbone_gw(struct batadv_priv *bat_priv, u8 *orig, bat_priv 493 net/batman-adv/bridge_loop_avoidance.c entry = batadv_backbone_hash_find(bat_priv, orig, vid); bat_priv 498 net/batman-adv/bridge_loop_avoidance.c batadv_dbg(BATADV_DBG_BLA, bat_priv, bat_priv 509 net/batman-adv/bridge_loop_avoidance.c entry->bat_priv = bat_priv; bat_priv 518 net/batman-adv/bridge_loop_avoidance.c hash_added = batadv_hash_add(bat_priv->bla.backbone_hash, bat_priv 530 net/batman-adv/bridge_loop_avoidance.c orig_node = batadv_orig_hash_find(bat_priv, orig); bat_priv 532 net/batman-adv/bridge_loop_avoidance.c batadv_tt_global_del_orig(bat_priv, orig_node, vid, bat_priv 538 net/batman-adv/bridge_loop_avoidance.c batadv_bla_send_announce(bat_priv, entry); bat_priv 543 net/batman-adv/bridge_loop_avoidance.c atomic_inc(&bat_priv->bla.num_requests); bat_priv 559 net/batman-adv/bridge_loop_avoidance.c batadv_bla_update_own_backbone_gw(struct batadv_priv *bat_priv, bat_priv 565 net/batman-adv/bridge_loop_avoidance.c backbone_gw = batadv_bla_get_backbone_gw(bat_priv, bat_priv 584 net/batman-adv/bridge_loop_avoidance.c static void batadv_bla_answer_request(struct batadv_priv *bat_priv, bat_priv 594 net/batman-adv/bridge_loop_avoidance.c batadv_dbg(BATADV_DBG_BLA, bat_priv, bat_priv 598 net/batman-adv/bridge_loop_avoidance.c backbone_gw = batadv_backbone_hash_find(bat_priv, bat_priv 604 net/batman-adv/bridge_loop_avoidance.c hash = bat_priv->bla.claim_hash; bat_priv 614 net/batman-adv/bridge_loop_avoidance.c batadv_bla_send_claim(bat_priv, claim->addr, claim->vid, bat_priv 621 net/batman-adv/bridge_loop_avoidance.c batadv_bla_send_announce(bat_priv, backbone_gw); bat_priv 638 net/batman-adv/bridge_loop_avoidance.c batadv_dbg(BATADV_DBG_BLA, backbone_gw->bat_priv, bat_priv 642 net/batman-adv/bridge_loop_avoidance.c batadv_bla_send_claim(backbone_gw->bat_priv, backbone_gw->orig, bat_priv 647 net/batman-adv/bridge_loop_avoidance.c atomic_inc(&backbone_gw->bat_priv->bla.num_requests); bat_priv 657 net/batman-adv/bridge_loop_avoidance.c static void batadv_bla_send_announce(struct batadv_priv *bat_priv, bat_priv 669 net/batman-adv/bridge_loop_avoidance.c batadv_bla_send_claim(bat_priv, mac, backbone_gw->vid, bat_priv 680 net/batman-adv/bridge_loop_avoidance.c static void batadv_bla_add_claim(struct batadv_priv *bat_priv, bat_priv 692 net/batman-adv/bridge_loop_avoidance.c claim = batadv_claim_hash_find(bat_priv, &search_claim); bat_priv 708 net/batman-adv/bridge_loop_avoidance.c batadv_dbg(BATADV_DBG_BLA, bat_priv, bat_priv 713 net/batman-adv/bridge_loop_avoidance.c hash_added = batadv_hash_add(bat_priv->bla.claim_hash, bat_priv 729 net/batman-adv/bridge_loop_avoidance.c batadv_dbg(BATADV_DBG_BLA, bat_priv, bat_priv 789 net/batman-adv/bridge_loop_avoidance.c static void batadv_bla_del_claim(struct batadv_priv *bat_priv, bat_priv 798 net/batman-adv/bridge_loop_avoidance.c claim = batadv_claim_hash_find(bat_priv, &search_claim); bat_priv 802 net/batman-adv/bridge_loop_avoidance.c batadv_dbg(BATADV_DBG_BLA, bat_priv, "%s(): %pM, vid %d\n", __func__, bat_priv 805 net/batman-adv/bridge_loop_avoidance.c claim_removed_node = batadv_hash_remove(bat_priv->bla.claim_hash, bat_priv 830 net/batman-adv/bridge_loop_avoidance.c static bool batadv_handle_announce(struct batadv_priv *bat_priv, u8 *an_addr, bat_priv 839 net/batman-adv/bridge_loop_avoidance.c backbone_gw = batadv_bla_get_backbone_gw(bat_priv, backbone_addr, vid, bat_priv 849 net/batman-adv/bridge_loop_avoidance.c batadv_dbg(BATADV_DBG_BLA, bat_priv, bat_priv 858 net/batman-adv/bridge_loop_avoidance.c batadv_dbg(BATADV_DBG_BLA, backbone_gw->bat_priv, bat_priv 870 net/batman-adv/bridge_loop_avoidance.c atomic_dec(&backbone_gw->bat_priv->bla.num_requests); bat_priv 889 net/batman-adv/bridge_loop_avoidance.c static bool batadv_handle_request(struct batadv_priv *bat_priv, bat_priv 904 net/batman-adv/bridge_loop_avoidance.c batadv_dbg(BATADV_DBG_BLA, bat_priv, bat_priv 908 net/batman-adv/bridge_loop_avoidance.c batadv_bla_answer_request(bat_priv, primary_if, vid); bat_priv 922 net/batman-adv/bridge_loop_avoidance.c static bool batadv_handle_unclaim(struct batadv_priv *bat_priv, bat_priv 932 net/batman-adv/bridge_loop_avoidance.c batadv_bla_send_claim(bat_priv, claim_addr, vid, bat_priv 935 net/batman-adv/bridge_loop_avoidance.c backbone_gw = batadv_backbone_hash_find(bat_priv, backbone_addr, vid); bat_priv 941 net/batman-adv/bridge_loop_avoidance.c batadv_dbg(BATADV_DBG_BLA, bat_priv, bat_priv 945 net/batman-adv/bridge_loop_avoidance.c batadv_bla_del_claim(bat_priv, claim_addr, vid); bat_priv 960 net/batman-adv/bridge_loop_avoidance.c static bool batadv_handle_claim(struct batadv_priv *bat_priv, bat_priv 969 net/batman-adv/bridge_loop_avoidance.c backbone_gw = batadv_bla_get_backbone_gw(bat_priv, backbone_addr, vid, bat_priv 976 net/batman-adv/bridge_loop_avoidance.c batadv_bla_add_claim(bat_priv, claim_addr, vid, backbone_gw); bat_priv 978 net/batman-adv/bridge_loop_avoidance.c batadv_bla_send_claim(bat_priv, claim_addr, vid, bat_priv 1004 net/batman-adv/bridge_loop_avoidance.c static int batadv_check_claim_group(struct batadv_priv *bat_priv, bat_priv 1014 net/batman-adv/bridge_loop_avoidance.c bla_dst_own = &bat_priv->bla.claim_dest; bat_priv 1041 net/batman-adv/bridge_loop_avoidance.c orig_node = batadv_orig_hash_find(bat_priv, backbone_addr); bat_priv 1051 net/batman-adv/bridge_loop_avoidance.c batadv_dbg(BATADV_DBG_BLA, bat_priv, bat_priv 1071 net/batman-adv/bridge_loop_avoidance.c static bool batadv_bla_process_claim(struct batadv_priv *bat_priv, bat_priv 1139 net/batman-adv/bridge_loop_avoidance.c bla_dst_own = &bat_priv->bla.claim_dest; bat_priv 1158 net/batman-adv/bridge_loop_avoidance.c ret = batadv_check_claim_group(bat_priv, primary_if, hw_src, hw_dst, bat_priv 1161 net/batman-adv/bridge_loop_avoidance.c batadv_dbg(BATADV_DBG_BLA, bat_priv, bat_priv 1170 net/batman-adv/bridge_loop_avoidance.c batadv_bla_update_own_backbone_gw(bat_priv, primary_if, vid); bat_priv 1175 net/batman-adv/bridge_loop_avoidance.c if (batadv_handle_claim(bat_priv, primary_if, hw_src, bat_priv 1180 net/batman-adv/bridge_loop_avoidance.c if (batadv_handle_unclaim(bat_priv, primary_if, bat_priv 1186 net/batman-adv/bridge_loop_avoidance.c if (batadv_handle_announce(bat_priv, hw_src, ethhdr->h_source, bat_priv 1191 net/batman-adv/bridge_loop_avoidance.c if (batadv_handle_request(bat_priv, primary_if, hw_src, ethhdr, bat_priv 1197 net/batman-adv/bridge_loop_avoidance.c batadv_dbg(BATADV_DBG_BLA, bat_priv, bat_priv 1213 net/batman-adv/bridge_loop_avoidance.c static void batadv_bla_purge_backbone_gw(struct batadv_priv *bat_priv, int now) bat_priv 1222 net/batman-adv/bridge_loop_avoidance.c hash = bat_priv->bla.backbone_hash; bat_priv 1239 net/batman-adv/bridge_loop_avoidance.c batadv_dbg(BATADV_DBG_BLA, backbone_gw->bat_priv, bat_priv 1246 net/batman-adv/bridge_loop_avoidance.c atomic_dec(&bat_priv->bla.num_requests); bat_priv 1266 net/batman-adv/bridge_loop_avoidance.c static void batadv_bla_purge_claims(struct batadv_priv *bat_priv, bat_priv 1276 net/batman-adv/bridge_loop_avoidance.c hash = bat_priv->bla.claim_hash; bat_priv 1297 net/batman-adv/bridge_loop_avoidance.c batadv_dbg(BATADV_DBG_BLA, bat_priv, bat_priv 1301 net/batman-adv/bridge_loop_avoidance.c batadv_dbg(BATADV_DBG_BLA, bat_priv, bat_priv 1305 net/batman-adv/bridge_loop_avoidance.c batadv_handle_unclaim(bat_priv, primary_if, bat_priv 1322 net/batman-adv/bridge_loop_avoidance.c void batadv_bla_update_orig_address(struct batadv_priv *bat_priv, bat_priv 1334 net/batman-adv/bridge_loop_avoidance.c bat_priv->bla.claim_dest.group = group; bat_priv 1337 net/batman-adv/bridge_loop_avoidance.c if (!atomic_read(&bat_priv->bridge_loop_avoidance)) bat_priv 1341 net/batman-adv/bridge_loop_avoidance.c batadv_bla_purge_claims(bat_priv, NULL, 1); bat_priv 1342 net/batman-adv/bridge_loop_avoidance.c batadv_bla_purge_backbone_gw(bat_priv, 1); bat_priv 1346 net/batman-adv/bridge_loop_avoidance.c hash = bat_priv->bla.backbone_hash; bat_priv 1365 net/batman-adv/bridge_loop_avoidance.c batadv_bla_send_announce(bat_priv, backbone_gw); bat_priv 1382 net/batman-adv/bridge_loop_avoidance.c batadv_bla_send_loopdetect(struct batadv_priv *bat_priv, bat_priv 1385 net/batman-adv/bridge_loop_avoidance.c batadv_dbg(BATADV_DBG_BLA, bat_priv, "Send loopdetect frame for vid %d\n", bat_priv 1387 net/batman-adv/bridge_loop_avoidance.c batadv_bla_send_claim(bat_priv, bat_priv->bla.loopdetect_addr, bat_priv 1397 net/batman-adv/bridge_loop_avoidance.c struct batadv_priv *bat_priv = netdev_priv(net_dev); bat_priv 1400 net/batman-adv/bridge_loop_avoidance.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 1407 net/batman-adv/bridge_loop_avoidance.c batadv_bla_update_orig_address(bat_priv, primary_if, primary_if); bat_priv 1422 net/batman-adv/bridge_loop_avoidance.c struct batadv_priv *bat_priv; bat_priv 1433 net/batman-adv/bridge_loop_avoidance.c bat_priv = container_of(priv_bla, struct batadv_priv, bla); bat_priv 1434 net/batman-adv/bridge_loop_avoidance.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 1438 net/batman-adv/bridge_loop_avoidance.c batadv_bla_purge_claims(bat_priv, primary_if, 0); bat_priv 1439 net/batman-adv/bridge_loop_avoidance.c batadv_bla_purge_backbone_gw(bat_priv, 0); bat_priv 1441 net/batman-adv/bridge_loop_avoidance.c if (!atomic_read(&bat_priv->bridge_loop_avoidance)) bat_priv 1444 net/batman-adv/bridge_loop_avoidance.c if (atomic_dec_and_test(&bat_priv->bla.loopdetect_next)) { bat_priv 1449 net/batman-adv/bridge_loop_avoidance.c eth_random_addr(bat_priv->bla.loopdetect_addr); bat_priv 1450 net/batman-adv/bridge_loop_avoidance.c bat_priv->bla.loopdetect_addr[0] = 0xba; bat_priv 1451 net/batman-adv/bridge_loop_avoidance.c bat_priv->bla.loopdetect_addr[1] = 0xbe; bat_priv 1452 net/batman-adv/bridge_loop_avoidance.c bat_priv->bla.loopdetect_lasttime = jiffies; bat_priv 1453 net/batman-adv/bridge_loop_avoidance.c atomic_set(&bat_priv->bla.loopdetect_next, bat_priv 1460 net/batman-adv/bridge_loop_avoidance.c hash = bat_priv->bla.backbone_hash; bat_priv 1475 net/batman-adv/bridge_loop_avoidance.c batadv_bla_send_announce(bat_priv, backbone_gw); bat_priv 1477 net/batman-adv/bridge_loop_avoidance.c batadv_bla_send_loopdetect(bat_priv, bat_priv 1495 net/batman-adv/bridge_loop_avoidance.c atomic_dec(&backbone_gw->bat_priv->bla.num_requests); bat_priv 1504 net/batman-adv/bridge_loop_avoidance.c queue_delayed_work(batadv_event_workqueue, &bat_priv->bla.work, bat_priv 1522 net/batman-adv/bridge_loop_avoidance.c int batadv_bla_init(struct batadv_priv *bat_priv) bat_priv 1530 net/batman-adv/bridge_loop_avoidance.c spin_lock_init(&bat_priv->bla.bcast_duplist_lock); bat_priv 1532 net/batman-adv/bridge_loop_avoidance.c batadv_dbg(BATADV_DBG_BLA, bat_priv, "bla hash registering\n"); bat_priv 1535 net/batman-adv/bridge_loop_avoidance.c memcpy(&bat_priv->bla.claim_dest.magic, claim_dest, 3); bat_priv 1536 net/batman-adv/bridge_loop_avoidance.c bat_priv->bla.claim_dest.type = 0; bat_priv 1537 net/batman-adv/bridge_loop_avoidance.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 1540 net/batman-adv/bridge_loop_avoidance.c bat_priv->bla.claim_dest.group = htons(crc); bat_priv 1543 net/batman-adv/bridge_loop_avoidance.c bat_priv->bla.claim_dest.group = 0; /* will be set later */ bat_priv 1549 net/batman-adv/bridge_loop_avoidance.c bat_priv->bla.bcast_duplist[i].entrytime = entrytime; bat_priv 1550 net/batman-adv/bridge_loop_avoidance.c bat_priv->bla.bcast_duplist_curr = 0; bat_priv 1552 net/batman-adv/bridge_loop_avoidance.c atomic_set(&bat_priv->bla.loopdetect_next, bat_priv 1555 net/batman-adv/bridge_loop_avoidance.c if (bat_priv->bla.claim_hash) bat_priv 1558 net/batman-adv/bridge_loop_avoidance.c bat_priv->bla.claim_hash = batadv_hash_new(128); bat_priv 1559 net/batman-adv/bridge_loop_avoidance.c bat_priv->bla.backbone_hash = batadv_hash_new(32); bat_priv 1561 net/batman-adv/bridge_loop_avoidance.c if (!bat_priv->bla.claim_hash || !bat_priv->bla.backbone_hash) bat_priv 1564 net/batman-adv/bridge_loop_avoidance.c batadv_hash_set_lock_class(bat_priv->bla.claim_hash, bat_priv 1566 net/batman-adv/bridge_loop_avoidance.c batadv_hash_set_lock_class(bat_priv->bla.backbone_hash, bat_priv 1569 net/batman-adv/bridge_loop_avoidance.c batadv_dbg(BATADV_DBG_BLA, bat_priv, "bla hashes initialized\n"); bat_priv 1571 net/batman-adv/bridge_loop_avoidance.c INIT_DELAYED_WORK(&bat_priv->bla.work, batadv_bla_periodic_work); bat_priv 1573 net/batman-adv/bridge_loop_avoidance.c queue_delayed_work(batadv_event_workqueue, &bat_priv->bla.work, bat_priv 1594 net/batman-adv/bridge_loop_avoidance.c bool batadv_bla_check_bcast_duplist(struct batadv_priv *bat_priv, bat_priv 1608 net/batman-adv/bridge_loop_avoidance.c spin_lock_bh(&bat_priv->bla.bcast_duplist_lock); bat_priv 1611 net/batman-adv/bridge_loop_avoidance.c curr = (bat_priv->bla.bcast_duplist_curr + i); bat_priv 1613 net/batman-adv/bridge_loop_avoidance.c entry = &bat_priv->bla.bcast_duplist[curr]; bat_priv 1637 net/batman-adv/bridge_loop_avoidance.c curr = (bat_priv->bla.bcast_duplist_curr + BATADV_DUPLIST_SIZE - 1); bat_priv 1639 net/batman-adv/bridge_loop_avoidance.c entry = &bat_priv->bla.bcast_duplist[curr]; bat_priv 1643 net/batman-adv/bridge_loop_avoidance.c bat_priv->bla.bcast_duplist_curr = curr; bat_priv 1646 net/batman-adv/bridge_loop_avoidance.c spin_unlock_bh(&bat_priv->bla.bcast_duplist_lock); bat_priv 1660 net/batman-adv/bridge_loop_avoidance.c bool batadv_bla_is_backbone_gw_orig(struct batadv_priv *bat_priv, u8 *orig, bat_priv 1663 net/batman-adv/bridge_loop_avoidance.c struct batadv_hashtable *hash = bat_priv->bla.backbone_hash; bat_priv 1668 net/batman-adv/bridge_loop_avoidance.c if (!atomic_read(&bat_priv->bridge_loop_avoidance)) bat_priv 1706 net/batman-adv/bridge_loop_avoidance.c if (!atomic_read(&orig_node->bat_priv->bridge_loop_avoidance)) bat_priv 1716 net/batman-adv/bridge_loop_avoidance.c backbone_gw = batadv_backbone_hash_find(orig_node->bat_priv, bat_priv 1731 net/batman-adv/bridge_loop_avoidance.c void batadv_bla_free(struct batadv_priv *bat_priv) bat_priv 1735 net/batman-adv/bridge_loop_avoidance.c cancel_delayed_work_sync(&bat_priv->bla.work); bat_priv 1736 net/batman-adv/bridge_loop_avoidance.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 1738 net/batman-adv/bridge_loop_avoidance.c if (bat_priv->bla.claim_hash) { bat_priv 1739 net/batman-adv/bridge_loop_avoidance.c batadv_bla_purge_claims(bat_priv, primary_if, 1); bat_priv 1740 net/batman-adv/bridge_loop_avoidance.c batadv_hash_destroy(bat_priv->bla.claim_hash); bat_priv 1741 net/batman-adv/bridge_loop_avoidance.c bat_priv->bla.claim_hash = NULL; bat_priv 1743 net/batman-adv/bridge_loop_avoidance.c if (bat_priv->bla.backbone_hash) { bat_priv 1744 net/batman-adv/bridge_loop_avoidance.c batadv_bla_purge_backbone_gw(bat_priv, 1); bat_priv 1745 net/batman-adv/bridge_loop_avoidance.c batadv_hash_destroy(bat_priv->bla.backbone_hash); bat_priv 1746 net/batman-adv/bridge_loop_avoidance.c bat_priv->bla.backbone_hash = NULL; bat_priv 1766 net/batman-adv/bridge_loop_avoidance.c batadv_bla_loopdetect_check(struct batadv_priv *bat_priv, struct sk_buff *skb, bat_priv 1780 net/batman-adv/bridge_loop_avoidance.c bat_priv->bla.loopdetect_addr)) bat_priv 1786 net/batman-adv/bridge_loop_avoidance.c if (batadv_has_timed_out(bat_priv->bla.loopdetect_lasttime, bat_priv 1790 net/batman-adv/bridge_loop_avoidance.c backbone_gw = batadv_bla_get_backbone_gw(bat_priv, bat_priv 1823 net/batman-adv/bridge_loop_avoidance.c bool batadv_bla_rx(struct batadv_priv *bat_priv, struct sk_buff *skb, bat_priv 1835 net/batman-adv/bridge_loop_avoidance.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 1839 net/batman-adv/bridge_loop_avoidance.c if (!atomic_read(&bat_priv->bridge_loop_avoidance)) bat_priv 1842 net/batman-adv/bridge_loop_avoidance.c if (batadv_bla_loopdetect_check(bat_priv, skb, primary_if, vid)) bat_priv 1845 net/batman-adv/bridge_loop_avoidance.c if (unlikely(atomic_read(&bat_priv->bla.num_requests))) bat_priv 1852 net/batman-adv/bridge_loop_avoidance.c claim = batadv_claim_hash_find(bat_priv, &search_claim); bat_priv 1859 net/batman-adv/bridge_loop_avoidance.c batadv_dbg(BATADV_DBG_BLA, bat_priv, bat_priv 1862 net/batman-adv/bridge_loop_avoidance.c batadv_is_my_client(bat_priv, bat_priv 1865 net/batman-adv/bridge_loop_avoidance.c batadv_handle_claim(bat_priv, primary_if, bat_priv 1897 net/batman-adv/bridge_loop_avoidance.c batadv_handle_claim(bat_priv, primary_if, bat_priv 1903 net/batman-adv/bridge_loop_avoidance.c batadv_bla_update_own_backbone_gw(bat_priv, primary_if, vid); bat_priv 1936 net/batman-adv/bridge_loop_avoidance.c bool batadv_bla_tx(struct batadv_priv *bat_priv, struct sk_buff *skb, bat_priv 1946 net/batman-adv/bridge_loop_avoidance.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 1950 net/batman-adv/bridge_loop_avoidance.c if (!atomic_read(&bat_priv->bridge_loop_avoidance)) bat_priv 1953 net/batman-adv/bridge_loop_avoidance.c if (batadv_bla_process_claim(bat_priv, primary_if, skb)) bat_priv 1958 net/batman-adv/bridge_loop_avoidance.c if (unlikely(atomic_read(&bat_priv->bla.num_requests))) bat_priv 1966 net/batman-adv/bridge_loop_avoidance.c claim = batadv_claim_hash_find(bat_priv, &search_claim); bat_priv 1987 net/batman-adv/bridge_loop_avoidance.c batadv_dbg(BATADV_DBG_BLA, bat_priv, "%s(): Roaming client %pM detected. Unclaim it.\n", bat_priv 1989 net/batman-adv/bridge_loop_avoidance.c batadv_handle_unclaim(bat_priv, primary_if, bat_priv 1994 net/batman-adv/bridge_loop_avoidance.c batadv_dbg(BATADV_DBG_BLA, bat_priv, "%s(): Race for claim %pM detected. Drop packet.\n", bat_priv 2013 net/batman-adv/bridge_loop_avoidance.c batadv_bla_update_own_backbone_gw(bat_priv, primary_if, vid); bat_priv 2037 net/batman-adv/bridge_loop_avoidance.c struct batadv_priv *bat_priv = netdev_priv(net_dev); bat_priv 2038 net/batman-adv/bridge_loop_avoidance.c struct batadv_hashtable *hash = bat_priv->bla.claim_hash; bat_priv 2056 net/batman-adv/bridge_loop_avoidance.c ntohs(bat_priv->bla.claim_dest.group)); bat_priv 2211 net/batman-adv/bridge_loop_avoidance.c struct batadv_priv *bat_priv; bat_priv 2228 net/batman-adv/bridge_loop_avoidance.c bat_priv = netdev_priv(soft_iface); bat_priv 2229 net/batman-adv/bridge_loop_avoidance.c hash = bat_priv->bla.claim_hash; bat_priv 2231 net/batman-adv/bridge_loop_avoidance.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 2271 net/batman-adv/bridge_loop_avoidance.c struct batadv_priv *bat_priv = netdev_priv(net_dev); bat_priv 2272 net/batman-adv/bridge_loop_avoidance.c struct batadv_hashtable *hash = bat_priv->bla.backbone_hash; bat_priv 2290 net/batman-adv/bridge_loop_avoidance.c ntohs(bat_priv->bla.claim_dest.group)); bat_priv 2449 net/batman-adv/bridge_loop_avoidance.c struct batadv_priv *bat_priv; bat_priv 2466 net/batman-adv/bridge_loop_avoidance.c bat_priv = netdev_priv(soft_iface); bat_priv 2467 net/batman-adv/bridge_loop_avoidance.c hash = bat_priv->bla.backbone_hash; bat_priv 2469 net/batman-adv/bridge_loop_avoidance.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 2510 net/batman-adv/bridge_loop_avoidance.c bool batadv_bla_check_claim(struct batadv_priv *bat_priv, bat_priv 2518 net/batman-adv/bridge_loop_avoidance.c if (!atomic_read(&bat_priv->bridge_loop_avoidance)) bat_priv 2521 net/batman-adv/bridge_loop_avoidance.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 2529 net/batman-adv/bridge_loop_avoidance.c claim = batadv_claim_hash_find(bat_priv, &search_claim); bat_priv 37 net/batman-adv/bridge_loop_avoidance.h bool batadv_bla_rx(struct batadv_priv *bat_priv, struct sk_buff *skb, bat_priv 39 net/batman-adv/bridge_loop_avoidance.h bool batadv_bla_tx(struct batadv_priv *bat_priv, struct sk_buff *skb, bat_priv 49 net/batman-adv/bridge_loop_avoidance.h bool batadv_bla_is_backbone_gw_orig(struct batadv_priv *bat_priv, u8 *orig, bat_priv 51 net/batman-adv/bridge_loop_avoidance.h bool batadv_bla_check_bcast_duplist(struct batadv_priv *bat_priv, bat_priv 53 net/batman-adv/bridge_loop_avoidance.h void batadv_bla_update_orig_address(struct batadv_priv *bat_priv, bat_priv 57 net/batman-adv/bridge_loop_avoidance.h int batadv_bla_init(struct batadv_priv *bat_priv); bat_priv 58 net/batman-adv/bridge_loop_avoidance.h void batadv_bla_free(struct batadv_priv *bat_priv); bat_priv 61 net/batman-adv/bridge_loop_avoidance.h bool batadv_bla_check_claim(struct batadv_priv *bat_priv, u8 *addr, bat_priv 67 net/batman-adv/bridge_loop_avoidance.h static inline bool batadv_bla_rx(struct batadv_priv *bat_priv, bat_priv 74 net/batman-adv/bridge_loop_avoidance.h static inline bool batadv_bla_tx(struct batadv_priv *bat_priv, bat_priv 99 net/batman-adv/bridge_loop_avoidance.h static inline bool batadv_bla_is_backbone_gw_orig(struct batadv_priv *bat_priv, bat_priv 106 net/batman-adv/bridge_loop_avoidance.h batadv_bla_check_bcast_duplist(struct batadv_priv *bat_priv, bat_priv 113 net/batman-adv/bridge_loop_avoidance.h batadv_bla_update_orig_address(struct batadv_priv *bat_priv, bat_priv 119 net/batman-adv/bridge_loop_avoidance.h static inline int batadv_bla_init(struct batadv_priv *bat_priv) bat_priv 124 net/batman-adv/bridge_loop_avoidance.h static inline void batadv_bla_free(struct batadv_priv *bat_priv) bat_priv 141 net/batman-adv/bridge_loop_avoidance.h bool batadv_bla_check_claim(struct batadv_priv *bat_priv, u8 *addr, bat_priv 378 net/batman-adv/debugfs.c struct batadv_priv *bat_priv = netdev_priv(dev); bat_priv 385 net/batman-adv/debugfs.c bat_priv->debug_dir = debugfs_create_dir(dev->name, batadv_debugfs); bat_priv 387 net/batman-adv/debugfs.c batadv_socket_setup(bat_priv); bat_priv 389 net/batman-adv/debugfs.c if (batadv_debug_log_setup(bat_priv) < 0) bat_priv 395 net/batman-adv/debugfs.c bat_priv->debug_dir, dev, bat_priv 398 net/batman-adv/debugfs.c batadv_nc_init_debugfs(bat_priv); bat_priv 402 net/batman-adv/debugfs.c debugfs_remove_recursive(bat_priv->debug_dir); bat_priv 403 net/batman-adv/debugfs.c bat_priv->debug_dir = NULL; bat_priv 413 net/batman-adv/debugfs.c struct batadv_priv *bat_priv = netdev_priv(dev); bat_priv 417 net/batman-adv/debugfs.c dir = bat_priv->debug_dir; bat_priv 430 net/batman-adv/debugfs.c struct batadv_priv *bat_priv = netdev_priv(dev); bat_priv 436 net/batman-adv/debugfs.c batadv_debug_log_cleanup(bat_priv); bat_priv 439 net/batman-adv/debugfs.c debugfs_remove_recursive(bat_priv->debug_dir); bat_priv 440 net/batman-adv/debugfs.c bat_priv->debug_dir = NULL; bat_priv 103 net/batman-adv/distributed-arp-table.c static void batadv_dat_start_timer(struct batadv_priv *bat_priv) bat_priv 105 net/batman-adv/distributed-arp-table.c INIT_DELAYED_WORK(&bat_priv->dat.work, batadv_dat_purge); bat_priv 106 net/batman-adv/distributed-arp-table.c queue_delayed_work(batadv_event_workqueue, &bat_priv->dat.work, bat_priv 157 net/batman-adv/distributed-arp-table.c static void __batadv_dat_purge(struct batadv_priv *bat_priv, bat_priv 166 net/batman-adv/distributed-arp-table.c if (!bat_priv->dat.hash) bat_priv 169 net/batman-adv/distributed-arp-table.c for (i = 0; i < bat_priv->dat.hash->size; i++) { bat_priv 170 net/batman-adv/distributed-arp-table.c head = &bat_priv->dat.hash->table[i]; bat_priv 171 net/batman-adv/distributed-arp-table.c list_lock = &bat_priv->dat.hash->list_locks[i]; bat_priv 198 net/batman-adv/distributed-arp-table.c struct batadv_priv *bat_priv; bat_priv 202 net/batman-adv/distributed-arp-table.c bat_priv = container_of(priv_dat, struct batadv_priv, dat); bat_priv 204 net/batman-adv/distributed-arp-table.c __batadv_dat_purge(bat_priv, batadv_dat_to_purge); bat_priv 205 net/batman-adv/distributed-arp-table.c batadv_dat_start_timer(bat_priv); bat_priv 323 net/batman-adv/distributed-arp-table.c batadv_dat_entry_hash_find(struct batadv_priv *bat_priv, __be32 ip, bat_priv 328 net/batman-adv/distributed-arp-table.c struct batadv_hashtable *hash = bat_priv->dat.hash; bat_priv 363 net/batman-adv/distributed-arp-table.c static void batadv_dat_entry_add(struct batadv_priv *bat_priv, __be32 ip, bat_priv 369 net/batman-adv/distributed-arp-table.c dat_entry = batadv_dat_entry_hash_find(bat_priv, ip, vid); bat_priv 375 net/batman-adv/distributed-arp-table.c batadv_dbg(BATADV_DBG_DAT, bat_priv, bat_priv 393 net/batman-adv/distributed-arp-table.c hash_added = batadv_hash_add(bat_priv->dat.hash, batadv_compare_dat, bat_priv 403 net/batman-adv/distributed-arp-table.c batadv_dbg(BATADV_DBG_DAT, bat_priv, "New entry added: %pI4 %pM (vid: %d)\n", bat_priv 421 net/batman-adv/distributed-arp-table.c static void batadv_dbg_arp(struct batadv_priv *bat_priv, struct sk_buff *skb, bat_priv 430 net/batman-adv/distributed-arp-table.c batadv_dbg(BATADV_DBG_DAT, bat_priv, "%s\n", msg); bat_priv 434 net/batman-adv/distributed-arp-table.c batadv_dbg(BATADV_DBG_DAT, bat_priv, bat_priv 446 net/batman-adv/distributed-arp-table.c batadv_dbg(BATADV_DBG_DAT, bat_priv, bat_priv 450 net/batman-adv/distributed-arp-table.c batadv_dbg(BATADV_DBG_DAT, bat_priv, bat_priv 455 net/batman-adv/distributed-arp-table.c batadv_dbg(BATADV_DBG_DAT, bat_priv, "* type: DAT_DHT_PUT\n"); bat_priv 458 net/batman-adv/distributed-arp-table.c batadv_dbg(BATADV_DBG_DAT, bat_priv, "* type: DAT_DHT_GET\n"); bat_priv 461 net/batman-adv/distributed-arp-table.c batadv_dbg(BATADV_DBG_DAT, bat_priv, bat_priv 465 net/batman-adv/distributed-arp-table.c batadv_dbg(BATADV_DBG_DAT, bat_priv, "* type: DATA\n"); bat_priv 468 net/batman-adv/distributed-arp-table.c batadv_dbg(BATADV_DBG_DAT, bat_priv, "* type: Unknown (%u)!\n", bat_priv 475 net/batman-adv/distributed-arp-table.c batadv_dbg(BATADV_DBG_DAT, bat_priv, bat_priv 480 net/batman-adv/distributed-arp-table.c batadv_dbg(BATADV_DBG_DAT, bat_priv, bat_priv 488 net/batman-adv/distributed-arp-table.c static void batadv_dbg_arp(struct batadv_priv *bat_priv, struct sk_buff *skb, bat_priv 557 net/batman-adv/distributed-arp-table.c static void batadv_choose_next_candidate(struct batadv_priv *bat_priv, bat_priv 565 net/batman-adv/distributed-arp-table.c struct batadv_hashtable *hash = bat_priv->orig_hash; bat_priv 605 net/batman-adv/distributed-arp-table.c batadv_dbg(BATADV_DBG_DAT, bat_priv, bat_priv 627 net/batman-adv/distributed-arp-table.c batadv_dat_select_candidates(struct batadv_priv *bat_priv, __be32 ip_dst, bat_priv 635 net/batman-adv/distributed-arp-table.c if (!bat_priv->orig_hash) bat_priv 648 net/batman-adv/distributed-arp-table.c batadv_dbg(BATADV_DBG_DAT, bat_priv, bat_priv 653 net/batman-adv/distributed-arp-table.c batadv_choose_next_candidate(bat_priv, res, select, ip_key, bat_priv 673 net/batman-adv/distributed-arp-table.c static bool batadv_dat_forward_data(struct batadv_priv *bat_priv, bat_priv 684 net/batman-adv/distributed-arp-table.c cand = batadv_dat_select_candidates(bat_priv, ip, vid); bat_priv 688 net/batman-adv/distributed-arp-table.c batadv_dbg(BATADV_DBG_DAT, bat_priv, "DHT_SEND for %pI4\n", &ip); bat_priv 700 net/batman-adv/distributed-arp-table.c if (!batadv_send_skb_prepare_unicast_4addr(bat_priv, tmp_skb, bat_priv 712 net/batman-adv/distributed-arp-table.c batadv_inc_counter(bat_priv, bat_priv 716 net/batman-adv/distributed-arp-table.c batadv_inc_counter(bat_priv, bat_priv 740 net/batman-adv/distributed-arp-table.c static void batadv_dat_tvlv_container_update(struct batadv_priv *bat_priv) bat_priv 744 net/batman-adv/distributed-arp-table.c dat_mode = atomic_read(&bat_priv->distributed_arp_table); bat_priv 748 net/batman-adv/distributed-arp-table.c batadv_tvlv_container_unregister(bat_priv, BATADV_TVLV_DAT, 1); bat_priv 751 net/batman-adv/distributed-arp-table.c batadv_tvlv_container_register(bat_priv, BATADV_TVLV_DAT, 1, bat_priv 764 net/batman-adv/distributed-arp-table.c struct batadv_priv *bat_priv = netdev_priv(net_dev); bat_priv 766 net/batman-adv/distributed-arp-table.c batadv_dat_tvlv_container_update(bat_priv); bat_priv 777 net/batman-adv/distributed-arp-table.c static void batadv_dat_tvlv_ogm_handler_v1(struct batadv_priv *bat_priv, bat_priv 792 net/batman-adv/distributed-arp-table.c static void batadv_dat_hash_free(struct batadv_priv *bat_priv) bat_priv 794 net/batman-adv/distributed-arp-table.c if (!bat_priv->dat.hash) bat_priv 797 net/batman-adv/distributed-arp-table.c __batadv_dat_purge(bat_priv, NULL); bat_priv 799 net/batman-adv/distributed-arp-table.c batadv_hash_destroy(bat_priv->dat.hash); bat_priv 801 net/batman-adv/distributed-arp-table.c bat_priv->dat.hash = NULL; bat_priv 810 net/batman-adv/distributed-arp-table.c int batadv_dat_init(struct batadv_priv *bat_priv) bat_priv 812 net/batman-adv/distributed-arp-table.c if (bat_priv->dat.hash) bat_priv 815 net/batman-adv/distributed-arp-table.c bat_priv->dat.hash = batadv_hash_new(1024); bat_priv 817 net/batman-adv/distributed-arp-table.c if (!bat_priv->dat.hash) bat_priv 820 net/batman-adv/distributed-arp-table.c batadv_dat_start_timer(bat_priv); bat_priv 822 net/batman-adv/distributed-arp-table.c batadv_tvlv_handler_register(bat_priv, batadv_dat_tvlv_ogm_handler_v1, bat_priv 825 net/batman-adv/distributed-arp-table.c batadv_dat_tvlv_container_update(bat_priv); bat_priv 833 net/batman-adv/distributed-arp-table.c void batadv_dat_free(struct batadv_priv *bat_priv) bat_priv 835 net/batman-adv/distributed-arp-table.c batadv_tvlv_container_unregister(bat_priv, BATADV_TVLV_DAT, 1); bat_priv 836 net/batman-adv/distributed-arp-table.c batadv_tvlv_handler_unregister(bat_priv, BATADV_TVLV_DAT, 1); bat_priv 838 net/batman-adv/distributed-arp-table.c cancel_delayed_work_sync(&bat_priv->dat.work); bat_priv 840 net/batman-adv/distributed-arp-table.c batadv_dat_hash_free(bat_priv); bat_priv 854 net/batman-adv/distributed-arp-table.c struct batadv_priv *bat_priv = netdev_priv(net_dev); bat_priv 855 net/batman-adv/distributed-arp-table.c struct batadv_hashtable *hash = bat_priv->dat.hash; bat_priv 996 net/batman-adv/distributed-arp-table.c struct batadv_priv *bat_priv; bat_priv 1013 net/batman-adv/distributed-arp-table.c bat_priv = netdev_priv(soft_iface); bat_priv 1014 net/batman-adv/distributed-arp-table.c hash = bat_priv->dat.hash; bat_priv 1016 net/batman-adv/distributed-arp-table.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 1054 net/batman-adv/distributed-arp-table.c static u16 batadv_arp_get_type(struct batadv_priv *bat_priv, bat_priv 1161 net/batman-adv/distributed-arp-table.c batadv_dat_arp_create_reply(struct batadv_priv *bat_priv, __be32 ip_src, bat_priv 1167 net/batman-adv/distributed-arp-table.c skb = arp_create(ARPOP_REPLY, ETH_P_ARP, ip_dst, bat_priv->soft_iface, bat_priv 1191 net/batman-adv/distributed-arp-table.c bool batadv_dat_snoop_outgoing_arp_request(struct batadv_priv *bat_priv, bat_priv 1200 net/batman-adv/distributed-arp-table.c struct net_device *soft_iface = bat_priv->soft_iface; bat_priv 1204 net/batman-adv/distributed-arp-table.c if (!atomic_read(&bat_priv->distributed_arp_table)) bat_priv 1209 net/batman-adv/distributed-arp-table.c type = batadv_arp_get_type(bat_priv, skb, hdr_size); bat_priv 1216 net/batman-adv/distributed-arp-table.c batadv_dbg_arp(bat_priv, skb, hdr_size, "Parsing outgoing ARP REQUEST"); bat_priv 1222 net/batman-adv/distributed-arp-table.c batadv_dat_entry_add(bat_priv, ip_src, hw_src, vid); bat_priv 1224 net/batman-adv/distributed-arp-table.c dat_entry = batadv_dat_entry_hash_find(bat_priv, ip_dst, vid); bat_priv 1234 net/batman-adv/distributed-arp-table.c if (batadv_is_my_client(bat_priv, dat_entry->mac_addr, vid)) { bat_priv 1244 net/batman-adv/distributed-arp-table.c if (!batadv_bla_check_claim(bat_priv, bat_priv 1246 net/batman-adv/distributed-arp-table.c batadv_dbg(BATADV_DBG_DAT, bat_priv, bat_priv 1253 net/batman-adv/distributed-arp-table.c skb_new = batadv_dat_arp_create_reply(bat_priv, ip_dst, ip_src, bat_priv 1261 net/batman-adv/distributed-arp-table.c batadv_inc_counter(bat_priv, BATADV_CNT_RX); bat_priv 1262 net/batman-adv/distributed-arp-table.c batadv_add_counter(bat_priv, BATADV_CNT_RX_BYTES, bat_priv 1266 net/batman-adv/distributed-arp-table.c batadv_dbg(BATADV_DBG_DAT, bat_priv, "ARP request replied locally\n"); bat_priv 1270 net/batman-adv/distributed-arp-table.c ret = batadv_dat_forward_data(bat_priv, skb, ip_dst, vid, bat_priv 1288 net/batman-adv/distributed-arp-table.c bool batadv_dat_snoop_incoming_arp_request(struct batadv_priv *bat_priv, bat_priv 1300 net/batman-adv/distributed-arp-table.c if (!atomic_read(&bat_priv->distributed_arp_table)) bat_priv 1305 net/batman-adv/distributed-arp-table.c type = batadv_arp_get_type(bat_priv, skb, hdr_size); bat_priv 1313 net/batman-adv/distributed-arp-table.c batadv_dbg_arp(bat_priv, skb, hdr_size, "Parsing incoming ARP REQUEST"); bat_priv 1315 net/batman-adv/distributed-arp-table.c batadv_dat_entry_add(bat_priv, ip_src, hw_src, vid); bat_priv 1317 net/batman-adv/distributed-arp-table.c dat_entry = batadv_dat_entry_hash_find(bat_priv, ip_dst, vid); bat_priv 1321 net/batman-adv/distributed-arp-table.c skb_new = batadv_dat_arp_create_reply(bat_priv, ip_dst, ip_src, bat_priv 1331 net/batman-adv/distributed-arp-table.c err = batadv_send_skb_via_tt_4addr(bat_priv, skb_new, bat_priv 1335 net/batman-adv/distributed-arp-table.c err = batadv_send_skb_via_tt(bat_priv, skb_new, NULL, vid); bat_priv 1338 net/batman-adv/distributed-arp-table.c batadv_inc_counter(bat_priv, BATADV_CNT_DAT_CACHED_REPLY_TX); bat_priv 1354 net/batman-adv/distributed-arp-table.c void batadv_dat_snoop_outgoing_arp_reply(struct batadv_priv *bat_priv, bat_priv 1363 net/batman-adv/distributed-arp-table.c if (!atomic_read(&bat_priv->distributed_arp_table)) bat_priv 1368 net/batman-adv/distributed-arp-table.c type = batadv_arp_get_type(bat_priv, skb, hdr_size); bat_priv 1372 net/batman-adv/distributed-arp-table.c batadv_dbg_arp(bat_priv, skb, hdr_size, "Parsing outgoing ARP REPLY"); bat_priv 1379 net/batman-adv/distributed-arp-table.c batadv_dat_entry_add(bat_priv, ip_src, hw_src, vid); bat_priv 1380 net/batman-adv/distributed-arp-table.c batadv_dat_entry_add(bat_priv, ip_dst, hw_dst, vid); bat_priv 1385 net/batman-adv/distributed-arp-table.c batadv_dat_forward_data(bat_priv, skb, ip_src, vid, bat_priv 1387 net/batman-adv/distributed-arp-table.c batadv_dat_forward_data(bat_priv, skb, ip_dst, vid, bat_priv 1401 net/batman-adv/distributed-arp-table.c bool batadv_dat_snoop_incoming_arp_reply(struct batadv_priv *bat_priv, bat_priv 1411 net/batman-adv/distributed-arp-table.c if (!atomic_read(&bat_priv->distributed_arp_table)) bat_priv 1416 net/batman-adv/distributed-arp-table.c type = batadv_arp_get_type(bat_priv, skb, hdr_size); bat_priv 1420 net/batman-adv/distributed-arp-table.c batadv_dbg_arp(bat_priv, skb, hdr_size, "Parsing incoming ARP REPLY"); bat_priv 1433 net/batman-adv/distributed-arp-table.c dat_entry = batadv_dat_entry_hash_find(bat_priv, ip_src, vid); bat_priv 1435 net/batman-adv/distributed-arp-table.c batadv_dbg(BATADV_DBG_DAT, bat_priv, "Doubled ARP reply removed: ARP MSG = [src: %pM-%pI4 dst: %pM-%pI4]; dat_entry: %pM-%pI4\n", bat_priv 1444 net/batman-adv/distributed-arp-table.c batadv_dat_entry_add(bat_priv, ip_src, hw_src, vid); bat_priv 1445 net/batman-adv/distributed-arp-table.c batadv_dat_entry_add(bat_priv, ip_dst, hw_dst, vid); bat_priv 1456 net/batman-adv/distributed-arp-table.c if (!batadv_bla_check_claim(bat_priv, hw_src, vid)) { bat_priv 1457 net/batman-adv/distributed-arp-table.c batadv_dbg(BATADV_DBG_DAT, bat_priv, bat_priv 1467 net/batman-adv/distributed-arp-table.c dropped = !batadv_is_my_client(bat_priv, hw_dst, vid); bat_priv 1472 net/batman-adv/distributed-arp-table.c dropped |= batadv_is_my_client(bat_priv, hw_src, vid); bat_priv 1689 net/batman-adv/distributed-arp-table.c static void batadv_dat_put_dhcp(struct batadv_priv *bat_priv, u8 *chaddr, bat_priv 1695 net/batman-adv/distributed-arp-table.c skb = batadv_dat_arp_create_reply(bat_priv, yiaddr, ip_dst, chaddr, bat_priv 1702 net/batman-adv/distributed-arp-table.c batadv_dat_entry_add(bat_priv, yiaddr, chaddr, vid); bat_priv 1703 net/batman-adv/distributed-arp-table.c batadv_dat_entry_add(bat_priv, ip_dst, hw_dst, vid); bat_priv 1705 net/batman-adv/distributed-arp-table.c batadv_dat_forward_data(bat_priv, skb, yiaddr, vid, bat_priv 1707 net/batman-adv/distributed-arp-table.c batadv_dat_forward_data(bat_priv, skb, ip_dst, vid, bat_priv 1712 net/batman-adv/distributed-arp-table.c batadv_dbg(BATADV_DBG_DAT, bat_priv, bat_priv 1715 net/batman-adv/distributed-arp-table.c batadv_dbg(BATADV_DBG_DAT, bat_priv, bat_priv 1774 net/batman-adv/distributed-arp-table.c void batadv_dat_snoop_outgoing_dhcp_ack(struct batadv_priv *bat_priv, bat_priv 1782 net/batman-adv/distributed-arp-table.c if (!atomic_read(&bat_priv->distributed_arp_table)) bat_priv 1788 net/batman-adv/distributed-arp-table.c batadv_dat_put_dhcp(bat_priv, chaddr, yiaddr, eth_hdr(skb)->h_source, bat_priv 1802 net/batman-adv/distributed-arp-table.c void batadv_dat_snoop_incoming_dhcp_ack(struct batadv_priv *bat_priv, bat_priv 1812 net/batman-adv/distributed-arp-table.c if (!atomic_read(&bat_priv->distributed_arp_table)) bat_priv 1828 net/batman-adv/distributed-arp-table.c batadv_dat_entry_add(bat_priv, yiaddr, chaddr, vid); bat_priv 1829 net/batman-adv/distributed-arp-table.c batadv_dat_entry_add(bat_priv, ip_src, hw_src, vid); bat_priv 1831 net/batman-adv/distributed-arp-table.c batadv_dbg(BATADV_DBG_DAT, bat_priv, bat_priv 1834 net/batman-adv/distributed-arp-table.c batadv_dbg(BATADV_DBG_DAT, bat_priv, bat_priv 1847 net/batman-adv/distributed-arp-table.c bool batadv_dat_drop_broadcast_packet(struct batadv_priv *bat_priv, bat_priv 1857 net/batman-adv/distributed-arp-table.c if (!atomic_read(&bat_priv->distributed_arp_table)) bat_priv 1868 net/batman-adv/distributed-arp-table.c type = batadv_arp_get_type(bat_priv, forw_packet->skb, hdr_size); bat_priv 1873 net/batman-adv/distributed-arp-table.c dat_entry = batadv_dat_entry_hash_find(bat_priv, ip_dst, vid); bat_priv 1876 net/batman-adv/distributed-arp-table.c batadv_dbg(BATADV_DBG_DAT, bat_priv, bat_priv 1881 net/batman-adv/distributed-arp-table.c batadv_dbg(BATADV_DBG_DAT, bat_priv, bat_priv 28 net/batman-adv/distributed-arp-table.h bool batadv_dat_snoop_outgoing_arp_request(struct batadv_priv *bat_priv, bat_priv 30 net/batman-adv/distributed-arp-table.h bool batadv_dat_snoop_incoming_arp_request(struct batadv_priv *bat_priv, bat_priv 32 net/batman-adv/distributed-arp-table.h void batadv_dat_snoop_outgoing_arp_reply(struct batadv_priv *bat_priv, bat_priv 34 net/batman-adv/distributed-arp-table.h bool batadv_dat_snoop_incoming_arp_reply(struct batadv_priv *bat_priv, bat_priv 36 net/batman-adv/distributed-arp-table.h void batadv_dat_snoop_outgoing_dhcp_ack(struct batadv_priv *bat_priv, bat_priv 40 net/batman-adv/distributed-arp-table.h void batadv_dat_snoop_incoming_dhcp_ack(struct batadv_priv *bat_priv, bat_priv 42 net/batman-adv/distributed-arp-table.h bool batadv_dat_drop_broadcast_packet(struct batadv_priv *bat_priv, bat_priv 64 net/batman-adv/distributed-arp-table.h batadv_dat_init_own_addr(struct batadv_priv *bat_priv, bat_priv 72 net/batman-adv/distributed-arp-table.h bat_priv->dat.addr = (batadv_dat_addr_t)addr; bat_priv 75 net/batman-adv/distributed-arp-table.h int batadv_dat_init(struct batadv_priv *bat_priv); bat_priv 76 net/batman-adv/distributed-arp-table.h void batadv_dat_free(struct batadv_priv *bat_priv); bat_priv 87 net/batman-adv/distributed-arp-table.h static inline void batadv_dat_inc_counter(struct batadv_priv *bat_priv, bat_priv 92 net/batman-adv/distributed-arp-table.h batadv_inc_counter(bat_priv, bat_priv 96 net/batman-adv/distributed-arp-table.h batadv_inc_counter(bat_priv, bat_priv 109 net/batman-adv/distributed-arp-table.h batadv_dat_snoop_outgoing_arp_request(struct batadv_priv *bat_priv, bat_priv 116 net/batman-adv/distributed-arp-table.h batadv_dat_snoop_incoming_arp_request(struct batadv_priv *bat_priv, bat_priv 123 net/batman-adv/distributed-arp-table.h batadv_dat_snoop_outgoing_arp_reply(struct batadv_priv *bat_priv, bat_priv 130 net/batman-adv/distributed-arp-table.h batadv_dat_snoop_incoming_arp_reply(struct batadv_priv *bat_priv, bat_priv 137 net/batman-adv/distributed-arp-table.h batadv_dat_snoop_outgoing_dhcp_ack(struct batadv_priv *bat_priv, bat_priv 144 net/batman-adv/distributed-arp-table.h batadv_dat_snoop_incoming_dhcp_ack(struct batadv_priv *bat_priv, bat_priv 150 net/batman-adv/distributed-arp-table.h batadv_dat_drop_broadcast_packet(struct batadv_priv *bat_priv, bat_priv 161 net/batman-adv/distributed-arp-table.h static inline void batadv_dat_init_own_addr(struct batadv_priv *bat_priv, bat_priv 171 net/batman-adv/distributed-arp-table.h static inline int batadv_dat_init(struct batadv_priv *bat_priv) bat_priv 176 net/batman-adv/distributed-arp-table.h static inline void batadv_dat_free(struct batadv_priv *bat_priv) bat_priv 186 net/batman-adv/distributed-arp-table.h static inline void batadv_dat_inc_counter(struct batadv_priv *bat_priv, bat_priv 354 net/batman-adv/fragmentation.c struct batadv_priv *bat_priv = netdev_priv(recv_if->soft_iface); bat_priv 362 net/batman-adv/fragmentation.c orig_node_dst = batadv_orig_hash_find(bat_priv, packet->dest); bat_priv 366 net/batman-adv/fragmentation.c neigh_node = batadv_find_router(bat_priv, orig_node_dst, recv_if); bat_priv 375 net/batman-adv/fragmentation.c batadv_inc_counter(bat_priv, BATADV_CNT_FRAG_FWD); bat_priv 376 net/batman-adv/fragmentation.c batadv_add_counter(bat_priv, BATADV_CNT_FRAG_FWD_BYTES, bat_priv 442 net/batman-adv/fragmentation.c struct batadv_priv *bat_priv; bat_priv 469 net/batman-adv/fragmentation.c bat_priv = orig_node->bat_priv; bat_priv 470 net/batman-adv/fragmentation.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 480 net/batman-adv/fragmentation.c frag_header.seqno = htons(atomic_inc_return(&bat_priv->frag_seqno)); bat_priv 513 net/batman-adv/fragmentation.c batadv_inc_counter(bat_priv, BATADV_CNT_FRAG_TX); bat_priv 514 net/batman-adv/fragmentation.c batadv_add_counter(bat_priv, BATADV_CNT_FRAG_TX_BYTES, bat_priv 535 net/batman-adv/fragmentation.c batadv_inc_counter(bat_priv, BATADV_CNT_FRAG_TX); bat_priv 536 net/batman-adv/fragmentation.c batadv_add_counter(bat_priv, BATADV_CNT_FRAG_TX_BYTES, bat_priv 90 net/batman-adv/gateway_client.c batadv_gw_get_selected_gw_node(struct batadv_priv *bat_priv) bat_priv 95 net/batman-adv/gateway_client.c gw_node = rcu_dereference(bat_priv->gw.curr_gw); bat_priv 114 net/batman-adv/gateway_client.c batadv_gw_get_selected_orig(struct batadv_priv *bat_priv) bat_priv 119 net/batman-adv/gateway_client.c gw_node = batadv_gw_get_selected_gw_node(bat_priv); bat_priv 139 net/batman-adv/gateway_client.c static void batadv_gw_select(struct batadv_priv *bat_priv, bat_priv 144 net/batman-adv/gateway_client.c spin_lock_bh(&bat_priv->gw.list_lock); bat_priv 149 net/batman-adv/gateway_client.c curr_gw_node = rcu_dereference_protected(bat_priv->gw.curr_gw, 1); bat_priv 150 net/batman-adv/gateway_client.c rcu_assign_pointer(bat_priv->gw.curr_gw, new_gw_node); bat_priv 155 net/batman-adv/gateway_client.c spin_unlock_bh(&bat_priv->gw.list_lock); bat_priv 169 net/batman-adv/gateway_client.c void batadv_gw_reselect(struct batadv_priv *bat_priv) bat_priv 171 net/batman-adv/gateway_client.c atomic_set(&bat_priv->gw.reselect, 1); bat_priv 182 net/batman-adv/gateway_client.c void batadv_gw_check_client_stop(struct batadv_priv *bat_priv) bat_priv 186 net/batman-adv/gateway_client.c if (atomic_read(&bat_priv->gw.mode) != BATADV_GW_MODE_CLIENT) bat_priv 189 net/batman-adv/gateway_client.c curr_gw = batadv_gw_get_selected_gw_node(bat_priv); bat_priv 196 net/batman-adv/gateway_client.c batadv_gw_select(bat_priv, NULL); bat_priv 201 net/batman-adv/gateway_client.c batadv_throw_uevent(bat_priv, BATADV_UEV_GW, BATADV_UEV_DEL, NULL); bat_priv 210 net/batman-adv/gateway_client.c void batadv_gw_election(struct batadv_priv *bat_priv) bat_priv 218 net/batman-adv/gateway_client.c if (atomic_read(&bat_priv->gw.mode) != BATADV_GW_MODE_CLIENT) bat_priv 221 net/batman-adv/gateway_client.c if (!bat_priv->algo_ops->gw.get_best_gw_node) bat_priv 224 net/batman-adv/gateway_client.c curr_gw = batadv_gw_get_selected_gw_node(bat_priv); bat_priv 226 net/batman-adv/gateway_client.c if (!batadv_atomic_dec_not_zero(&bat_priv->gw.reselect) && curr_gw) bat_priv 233 net/batman-adv/gateway_client.c next_gw = bat_priv->algo_ops->gw.get_best_gw_node(bat_priv); bat_priv 244 net/batman-adv/gateway_client.c batadv_gw_reselect(bat_priv); bat_priv 251 net/batman-adv/gateway_client.c batadv_gw_reselect(bat_priv); bat_priv 257 net/batman-adv/gateway_client.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 259 net/batman-adv/gateway_client.c batadv_throw_uevent(bat_priv, BATADV_UEV_GW, BATADV_UEV_DEL, bat_priv 262 net/batman-adv/gateway_client.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 270 net/batman-adv/gateway_client.c batadv_throw_uevent(bat_priv, BATADV_UEV_GW, BATADV_UEV_ADD, bat_priv 273 net/batman-adv/gateway_client.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 281 net/batman-adv/gateway_client.c batadv_throw_uevent(bat_priv, BATADV_UEV_GW, BATADV_UEV_CHANGE, bat_priv 285 net/batman-adv/gateway_client.c batadv_gw_select(bat_priv, next_gw); bat_priv 303 net/batman-adv/gateway_client.c void batadv_gw_check_election(struct batadv_priv *bat_priv, bat_priv 311 net/batman-adv/gateway_client.c if (!bat_priv->algo_ops->gw.is_eligible) bat_priv 314 net/batman-adv/gateway_client.c curr_gw_orig = batadv_gw_get_selected_orig(bat_priv); bat_priv 322 net/batman-adv/gateway_client.c if (!bat_priv->algo_ops->gw.is_eligible(bat_priv, curr_gw_orig, bat_priv 327 net/batman-adv/gateway_client.c batadv_gw_reselect(bat_priv); bat_priv 342 net/batman-adv/gateway_client.c static void batadv_gw_node_add(struct batadv_priv *bat_priv, bat_priv 348 net/batman-adv/gateway_client.c lockdep_assert_held(&bat_priv->gw.list_lock); bat_priv 365 net/batman-adv/gateway_client.c hlist_add_head_rcu(&gw_node->list, &bat_priv->gw.gateway_list); bat_priv 366 net/batman-adv/gateway_client.c bat_priv->gw.generation++; bat_priv 368 net/batman-adv/gateway_client.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 387 net/batman-adv/gateway_client.c struct batadv_gw_node *batadv_gw_node_get(struct batadv_priv *bat_priv, bat_priv 393 net/batman-adv/gateway_client.c hlist_for_each_entry_rcu(gw_node_tmp, &bat_priv->gw.gateway_list, bat_priv 416 net/batman-adv/gateway_client.c void batadv_gw_node_update(struct batadv_priv *bat_priv, bat_priv 422 net/batman-adv/gateway_client.c spin_lock_bh(&bat_priv->gw.list_lock); bat_priv 423 net/batman-adv/gateway_client.c gw_node = batadv_gw_node_get(bat_priv, orig_node); bat_priv 425 net/batman-adv/gateway_client.c batadv_gw_node_add(bat_priv, orig_node, gateway); bat_priv 426 net/batman-adv/gateway_client.c spin_unlock_bh(&bat_priv->gw.list_lock); bat_priv 429 net/batman-adv/gateway_client.c spin_unlock_bh(&bat_priv->gw.list_lock); bat_priv 435 net/batman-adv/gateway_client.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 451 net/batman-adv/gateway_client.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 458 net/batman-adv/gateway_client.c spin_lock_bh(&bat_priv->gw.list_lock); bat_priv 462 net/batman-adv/gateway_client.c bat_priv->gw.generation++; bat_priv 464 net/batman-adv/gateway_client.c spin_unlock_bh(&bat_priv->gw.list_lock); bat_priv 466 net/batman-adv/gateway_client.c curr_gw = batadv_gw_get_selected_gw_node(bat_priv); bat_priv 468 net/batman-adv/gateway_client.c batadv_gw_reselect(bat_priv); bat_priv 484 net/batman-adv/gateway_client.c void batadv_gw_node_delete(struct batadv_priv *bat_priv, bat_priv 492 net/batman-adv/gateway_client.c batadv_gw_node_update(bat_priv, orig_node, &gateway); bat_priv 499 net/batman-adv/gateway_client.c void batadv_gw_node_free(struct batadv_priv *bat_priv) bat_priv 504 net/batman-adv/gateway_client.c spin_lock_bh(&bat_priv->gw.list_lock); bat_priv 506 net/batman-adv/gateway_client.c &bat_priv->gw.gateway_list, list) { bat_priv 509 net/batman-adv/gateway_client.c bat_priv->gw.generation++; bat_priv 511 net/batman-adv/gateway_client.c spin_unlock_bh(&bat_priv->gw.list_lock); bat_priv 526 net/batman-adv/gateway_client.c struct batadv_priv *bat_priv = netdev_priv(net_dev); bat_priv 536 net/batman-adv/gateway_client.c bat_priv->algo_ops->name); bat_priv 540 net/batman-adv/gateway_client.c if (!bat_priv->algo_ops->gw.print) { bat_priv 546 net/batman-adv/gateway_client.c bat_priv->algo_ops->gw.print(bat_priv, seq); bat_priv 564 net/batman-adv/gateway_client.c struct batadv_priv *bat_priv; bat_priv 579 net/batman-adv/gateway_client.c bat_priv = netdev_priv(soft_iface); bat_priv 581 net/batman-adv/gateway_client.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 587 net/batman-adv/gateway_client.c if (!bat_priv->algo_ops->gw.dump) { bat_priv 592 net/batman-adv/gateway_client.c bat_priv->algo_ops->gw.dump(msg, cb, bat_priv); bat_priv 740 net/batman-adv/gateway_client.c bool batadv_gw_out_of_range(struct batadv_priv *bat_priv, bat_priv 759 net/batman-adv/gateway_client.c orig_dst_node = batadv_transtable_search(bat_priv, ethhdr->h_source, bat_priv 764 net/batman-adv/gateway_client.c gw_node = batadv_gw_node_get(bat_priv, orig_dst_node); bat_priv 768 net/batman-adv/gateway_client.c switch (atomic_read(&bat_priv->gw.mode)) { bat_priv 776 net/batman-adv/gateway_client.c curr_gw = batadv_gw_get_selected_gw_node(bat_priv); bat_priv 788 net/batman-adv/gateway_client.c neigh_curr = batadv_find_router(bat_priv, curr_gw->orig_node, bat_priv 807 net/batman-adv/gateway_client.c neigh_old = batadv_find_router(bat_priv, orig_dst_node, NULL); bat_priv 18 net/batman-adv/gateway_client.h void batadv_gw_check_client_stop(struct batadv_priv *bat_priv); bat_priv 19 net/batman-adv/gateway_client.h void batadv_gw_reselect(struct batadv_priv *bat_priv); bat_priv 20 net/batman-adv/gateway_client.h void batadv_gw_election(struct batadv_priv *bat_priv); bat_priv 22 net/batman-adv/gateway_client.h batadv_gw_get_selected_orig(struct batadv_priv *bat_priv); bat_priv 23 net/batman-adv/gateway_client.h void batadv_gw_check_election(struct batadv_priv *bat_priv, bat_priv 25 net/batman-adv/gateway_client.h void batadv_gw_node_update(struct batadv_priv *bat_priv, bat_priv 28 net/batman-adv/gateway_client.h void batadv_gw_node_delete(struct batadv_priv *bat_priv, bat_priv 30 net/batman-adv/gateway_client.h void batadv_gw_node_free(struct batadv_priv *bat_priv); bat_priv 33 net/batman-adv/gateway_client.h batadv_gw_get_selected_gw_node(struct batadv_priv *bat_priv); bat_priv 36 net/batman-adv/gateway_client.h bool batadv_gw_out_of_range(struct batadv_priv *bat_priv, struct sk_buff *skb); bat_priv 40 net/batman-adv/gateway_client.h struct batadv_gw_node *batadv_gw_node_get(struct batadv_priv *bat_priv, bat_priv 134 net/batman-adv/gateway_common.c void batadv_gw_tvlv_container_update(struct batadv_priv *bat_priv) bat_priv 140 net/batman-adv/gateway_common.c gw_mode = atomic_read(&bat_priv->gw.mode); bat_priv 145 net/batman-adv/gateway_common.c batadv_tvlv_container_unregister(bat_priv, BATADV_TVLV_GW, 1); bat_priv 148 net/batman-adv/gateway_common.c down = atomic_read(&bat_priv->gw.bandwidth_down); bat_priv 149 net/batman-adv/gateway_common.c up = atomic_read(&bat_priv->gw.bandwidth_up); bat_priv 152 net/batman-adv/gateway_common.c batadv_tvlv_container_register(bat_priv, BATADV_TVLV_GW, 1, bat_priv 170 net/batman-adv/gateway_common.c struct batadv_priv *bat_priv = netdev_priv(net_dev); bat_priv 177 net/batman-adv/gateway_common.c down_curr = (unsigned int)atomic_read(&bat_priv->gw.bandwidth_down); bat_priv 178 net/batman-adv/gateway_common.c up_curr = (unsigned int)atomic_read(&bat_priv->gw.bandwidth_up); bat_priv 196 net/batman-adv/gateway_common.c batadv_gw_reselect(bat_priv); bat_priv 202 net/batman-adv/gateway_common.c atomic_set(&bat_priv->gw.bandwidth_down, down_new); bat_priv 203 net/batman-adv/gateway_common.c atomic_set(&bat_priv->gw.bandwidth_up, up_new); bat_priv 204 net/batman-adv/gateway_common.c batadv_gw_tvlv_container_update(bat_priv); bat_priv 217 net/batman-adv/gateway_common.c static void batadv_gw_tvlv_ogm_handler_v1(struct batadv_priv *bat_priv, bat_priv 242 net/batman-adv/gateway_common.c batadv_gw_node_update(bat_priv, orig, &gateway); bat_priv 246 net/batman-adv/gateway_common.c atomic_read(&bat_priv->gw.mode) == BATADV_GW_MODE_CLIENT) bat_priv 247 net/batman-adv/gateway_common.c batadv_gw_check_election(bat_priv, orig); bat_priv 254 net/batman-adv/gateway_common.c void batadv_gw_init(struct batadv_priv *bat_priv) bat_priv 256 net/batman-adv/gateway_common.c if (bat_priv->algo_ops->gw.init_sel_class) bat_priv 257 net/batman-adv/gateway_common.c bat_priv->algo_ops->gw.init_sel_class(bat_priv); bat_priv 259 net/batman-adv/gateway_common.c atomic_set(&bat_priv->gw.sel_class, 1); bat_priv 261 net/batman-adv/gateway_common.c batadv_tvlv_handler_register(bat_priv, batadv_gw_tvlv_ogm_handler_v1, bat_priv 270 net/batman-adv/gateway_common.c void batadv_gw_free(struct batadv_priv *bat_priv) bat_priv 272 net/batman-adv/gateway_common.c batadv_tvlv_container_unregister(bat_priv, BATADV_TVLV_GW, 1); bat_priv 273 net/batman-adv/gateway_common.c batadv_tvlv_handler_unregister(bat_priv, BATADV_TVLV_GW, 1); bat_priv 32 net/batman-adv/gateway_common.h void batadv_gw_tvlv_container_update(struct batadv_priv *bat_priv); bat_priv 33 net/batman-adv/gateway_common.h void batadv_gw_init(struct batadv_priv *bat_priv); bat_priv 34 net/batman-adv/gateway_common.h void batadv_gw_free(struct batadv_priv *bat_priv); bat_priv 450 net/batman-adv/hard-interface.c static void batadv_primary_if_update_addr(struct batadv_priv *bat_priv, bat_priv 455 net/batman-adv/hard-interface.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 459 net/batman-adv/hard-interface.c batadv_dat_init_own_addr(bat_priv, primary_if); bat_priv 460 net/batman-adv/hard-interface.c batadv_bla_update_orig_address(bat_priv, primary_if, oldif); bat_priv 466 net/batman-adv/hard-interface.c static void batadv_primary_if_select(struct batadv_priv *bat_priv, bat_priv 476 net/batman-adv/hard-interface.c curr_hard_iface = rcu_dereference_protected(bat_priv->primary_if, 1); bat_priv 477 net/batman-adv/hard-interface.c rcu_assign_pointer(bat_priv->primary_if, new_hard_iface); bat_priv 482 net/batman-adv/hard-interface.c bat_priv->algo_ops->iface.primary_set(new_hard_iface); bat_priv 483 net/batman-adv/hard-interface.c batadv_primary_if_update_addr(bat_priv, curr_hard_iface); bat_priv 570 net/batman-adv/hard-interface.c struct batadv_priv *bat_priv = netdev_priv(soft_iface); bat_priv 587 net/batman-adv/hard-interface.c if (atomic_read(&bat_priv->fragmentation) == 0) bat_priv 604 net/batman-adv/hard-interface.c atomic_set(&bat_priv->packet_size_max, min_mtu); bat_priv 632 net/batman-adv/hard-interface.c struct batadv_priv *bat_priv; bat_priv 638 net/batman-adv/hard-interface.c bat_priv = netdev_priv(hard_iface->soft_iface); bat_priv 640 net/batman-adv/hard-interface.c bat_priv->algo_ops->iface.update_mac(hard_iface); bat_priv 646 net/batman-adv/hard-interface.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 648 net/batman-adv/hard-interface.c batadv_primary_if_select(bat_priv, hard_iface); bat_priv 655 net/batman-adv/hard-interface.c if (bat_priv->algo_ops->iface.activate) bat_priv 656 net/batman-adv/hard-interface.c bat_priv->algo_ops->iface.activate(hard_iface); bat_priv 714 net/batman-adv/hard-interface.c struct batadv_priv *bat_priv; bat_priv 755 net/batman-adv/hard-interface.c bat_priv = netdev_priv(hard_iface->soft_iface); bat_priv 762 net/batman-adv/hard-interface.c ret = bat_priv->algo_ops->iface.enable(hard_iface); bat_priv 777 net/batman-adv/hard-interface.c if (atomic_read(&bat_priv->fragmentation) && bat_priv 784 net/batman-adv/hard-interface.c if (!atomic_read(&bat_priv->fragmentation) && bat_priv 800 net/batman-adv/hard-interface.c if (bat_priv->algo_ops->iface.enabled) bat_priv 801 net/batman-adv/hard-interface.c bat_priv->algo_ops->iface.enabled(hard_iface); bat_priv 852 net/batman-adv/hard-interface.c struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface); bat_priv 865 net/batman-adv/hard-interface.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 870 net/batman-adv/hard-interface.c batadv_primary_if_select(bat_priv, new_if); bat_priv 876 net/batman-adv/hard-interface.c bat_priv->algo_ops->iface.disable(hard_iface); bat_priv 880 net/batman-adv/hard-interface.c batadv_purge_orig_ref(bat_priv); bat_priv 881 net/batman-adv/hard-interface.c batadv_purge_outstanding_packets(bat_priv, hard_iface); bat_priv 889 net/batman-adv/hard-interface.c batadv_gw_check_client_stop(bat_priv); bat_priv 1004 net/batman-adv/hard-interface.c struct batadv_priv *bat_priv; bat_priv 1009 net/batman-adv/hard-interface.c bat_priv = netdev_priv(net_dev); bat_priv 1010 net/batman-adv/hard-interface.c batadv_softif_create_vlan(bat_priv, BATADV_NO_FLAGS); bat_priv 1026 net/batman-adv/hard-interface.c struct batadv_priv *bat_priv; bat_priv 1064 net/batman-adv/hard-interface.c bat_priv = netdev_priv(hard_iface->soft_iface); bat_priv 1065 net/batman-adv/hard-interface.c bat_priv->algo_ops->iface.update_mac(hard_iface); bat_priv 1067 net/batman-adv/hard-interface.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 1072 net/batman-adv/hard-interface.c batadv_primary_if_update_addr(bat_priv, NULL); bat_priv 127 net/batman-adv/hard-interface.h batadv_primary_if_get_selected(struct batadv_priv *bat_priv) bat_priv 132 net/batman-adv/hard-interface.h hard_iface = rcu_dereference(bat_priv->primary_if); bat_priv 93 net/batman-adv/icmp_socket.c socket_client->bat_priv = inode->i_private; bat_priv 171 net/batman-adv/icmp_socket.c struct batadv_priv *bat_priv = socket_client->bat_priv; bat_priv 182 net/batman-adv/icmp_socket.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 187 net/batman-adv/icmp_socket.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 215 net/batman-adv/icmp_socket.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 224 net/batman-adv/icmp_socket.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 230 net/batman-adv/icmp_socket.c if (atomic_read(&bat_priv->mesh_state) != BATADV_MESH_ACTIVE) bat_priv 233 net/batman-adv/icmp_socket.c orig_node = batadv_orig_hash_find(bat_priv, icmp_header->dst); bat_priv 256 net/batman-adv/icmp_socket.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 318 net/batman-adv/icmp_socket.c void batadv_socket_setup(struct batadv_priv *bat_priv) bat_priv 320 net/batman-adv/icmp_socket.c debugfs_create_file(BATADV_ICMP_SOCKET, 0600, bat_priv->debug_dir, bat_priv 321 net/batman-adv/icmp_socket.c bat_priv, &batadv_fops); bat_priv 17 net/batman-adv/icmp_socket.h void batadv_socket_setup(struct batadv_priv *bat_priv); bat_priv 112 net/batman-adv/log.c struct batadv_priv *bat_priv = file->private_data; bat_priv 113 net/batman-adv/log.c struct batadv_priv_debug_log *debug_log = bat_priv->debug_log; bat_priv 166 net/batman-adv/log.c struct batadv_priv *bat_priv = file->private_data; bat_priv 167 net/batman-adv/log.c struct batadv_priv_debug_log *debug_log = bat_priv->debug_log; bat_priv 191 net/batman-adv/log.c int batadv_debug_log_setup(struct batadv_priv *bat_priv) bat_priv 193 net/batman-adv/log.c bat_priv->debug_log = kzalloc(sizeof(*bat_priv->debug_log), GFP_ATOMIC); bat_priv 194 net/batman-adv/log.c if (!bat_priv->debug_log) bat_priv 197 net/batman-adv/log.c spin_lock_init(&bat_priv->debug_log->lock); bat_priv 198 net/batman-adv/log.c init_waitqueue_head(&bat_priv->debug_log->queue_wait); bat_priv 200 net/batman-adv/log.c debugfs_create_file("log", 0400, bat_priv->debug_dir, bat_priv, bat_priv 209 net/batman-adv/log.c void batadv_debug_log_cleanup(struct batadv_priv *bat_priv) bat_priv 211 net/batman-adv/log.c kfree(bat_priv->debug_log); bat_priv 212 net/batman-adv/log.c bat_priv->debug_log = NULL; bat_priv 224 net/batman-adv/log.c int batadv_debug_log(struct batadv_priv *bat_priv, const char *fmt, ...) bat_priv 235 net/batman-adv/log.c batadv_fdebug_log(bat_priv->debug_log, "[%10u] %pV", bat_priv 239 net/batman-adv/log.c trace_batadv_dbg(bat_priv, &vaf); bat_priv 19 net/batman-adv/log.h int batadv_debug_log_setup(struct batadv_priv *bat_priv); bat_priv 20 net/batman-adv/log.h void batadv_debug_log_cleanup(struct batadv_priv *bat_priv); bat_priv 24 net/batman-adv/log.h static inline int batadv_debug_log_setup(struct batadv_priv *bat_priv) bat_priv 29 net/batman-adv/log.h static inline void batadv_debug_log_cleanup(struct batadv_priv *bat_priv) bat_priv 68 net/batman-adv/log.h int batadv_debug_log(struct batadv_priv *bat_priv, const char *fmt, ...) bat_priv 79 net/batman-adv/log.h #define _batadv_dbg(type, bat_priv, ratelimited, fmt, arg...) \ bat_priv 81 net/batman-adv/log.h struct batadv_priv *__batpriv = (bat_priv); \ bat_priv 90 net/batman-adv/log.h struct batadv_priv *bat_priv __always_unused, bat_priv 103 net/batman-adv/log.h #define batadv_dbg(type, bat_priv, arg...) \ bat_priv 104 net/batman-adv/log.h _batadv_dbg(type, bat_priv, 0, ## arg) bat_priv 112 net/batman-adv/log.h #define batadv_dbg_ratelimited(type, bat_priv, arg...) \ bat_priv 113 net/batman-adv/log.h _batadv_dbg(type, bat_priv, 1, ## arg) bat_priv 159 net/batman-adv/main.c struct batadv_priv *bat_priv = netdev_priv(soft_iface); bat_priv 162 net/batman-adv/main.c spin_lock_init(&bat_priv->forw_bat_list_lock); bat_priv 163 net/batman-adv/main.c spin_lock_init(&bat_priv->forw_bcast_list_lock); bat_priv 164 net/batman-adv/main.c spin_lock_init(&bat_priv->tt.changes_list_lock); bat_priv 165 net/batman-adv/main.c spin_lock_init(&bat_priv->tt.req_list_lock); bat_priv 166 net/batman-adv/main.c spin_lock_init(&bat_priv->tt.roam_list_lock); bat_priv 167 net/batman-adv/main.c spin_lock_init(&bat_priv->tt.last_changeset_lock); bat_priv 168 net/batman-adv/main.c spin_lock_init(&bat_priv->tt.commit_lock); bat_priv 169 net/batman-adv/main.c spin_lock_init(&bat_priv->gw.list_lock); bat_priv 171 net/batman-adv/main.c spin_lock_init(&bat_priv->mcast.mla_lock); bat_priv 172 net/batman-adv/main.c spin_lock_init(&bat_priv->mcast.want_lists_lock); bat_priv 174 net/batman-adv/main.c spin_lock_init(&bat_priv->tvlv.container_list_lock); bat_priv 175 net/batman-adv/main.c spin_lock_init(&bat_priv->tvlv.handler_list_lock); bat_priv 176 net/batman-adv/main.c spin_lock_init(&bat_priv->softif_vlan_list_lock); bat_priv 177 net/batman-adv/main.c spin_lock_init(&bat_priv->tp_list_lock); bat_priv 179 net/batman-adv/main.c INIT_HLIST_HEAD(&bat_priv->forw_bat_list); bat_priv 180 net/batman-adv/main.c INIT_HLIST_HEAD(&bat_priv->forw_bcast_list); bat_priv 181 net/batman-adv/main.c INIT_HLIST_HEAD(&bat_priv->gw.gateway_list); bat_priv 183 net/batman-adv/main.c INIT_HLIST_HEAD(&bat_priv->mcast.want_all_unsnoopables_list); bat_priv 184 net/batman-adv/main.c INIT_HLIST_HEAD(&bat_priv->mcast.want_all_ipv4_list); bat_priv 185 net/batman-adv/main.c INIT_HLIST_HEAD(&bat_priv->mcast.want_all_ipv6_list); bat_priv 187 net/batman-adv/main.c INIT_LIST_HEAD(&bat_priv->tt.changes_list); bat_priv 188 net/batman-adv/main.c INIT_HLIST_HEAD(&bat_priv->tt.req_list); bat_priv 189 net/batman-adv/main.c INIT_LIST_HEAD(&bat_priv->tt.roam_list); bat_priv 191 net/batman-adv/main.c INIT_HLIST_HEAD(&bat_priv->mcast.mla_list); bat_priv 193 net/batman-adv/main.c INIT_HLIST_HEAD(&bat_priv->tvlv.container_list); bat_priv 194 net/batman-adv/main.c INIT_HLIST_HEAD(&bat_priv->tvlv.handler_list); bat_priv 195 net/batman-adv/main.c INIT_HLIST_HEAD(&bat_priv->softif_vlan_list); bat_priv 196 net/batman-adv/main.c INIT_HLIST_HEAD(&bat_priv->tp_list); bat_priv 198 net/batman-adv/main.c bat_priv->gw.generation = 0; bat_priv 200 net/batman-adv/main.c ret = batadv_v_mesh_init(bat_priv); bat_priv 204 net/batman-adv/main.c ret = batadv_originator_init(bat_priv); bat_priv 208 net/batman-adv/main.c ret = batadv_tt_init(bat_priv); bat_priv 212 net/batman-adv/main.c ret = batadv_bla_init(bat_priv); bat_priv 216 net/batman-adv/main.c ret = batadv_dat_init(bat_priv); bat_priv 220 net/batman-adv/main.c ret = batadv_nc_mesh_init(bat_priv); bat_priv 224 net/batman-adv/main.c batadv_gw_init(bat_priv); bat_priv 225 net/batman-adv/main.c batadv_mcast_init(bat_priv); bat_priv 227 net/batman-adv/main.c atomic_set(&bat_priv->gw.reselect, 0); bat_priv 228 net/batman-adv/main.c atomic_set(&bat_priv->mesh_state, BATADV_MESH_ACTIVE); bat_priv 243 net/batman-adv/main.c struct batadv_priv *bat_priv = netdev_priv(soft_iface); bat_priv 245 net/batman-adv/main.c atomic_set(&bat_priv->mesh_state, BATADV_MESH_DEACTIVATING); bat_priv 247 net/batman-adv/main.c batadv_purge_outstanding_packets(bat_priv, NULL); bat_priv 249 net/batman-adv/main.c batadv_gw_node_free(bat_priv); bat_priv 251 net/batman-adv/main.c batadv_v_mesh_free(bat_priv); bat_priv 252 net/batman-adv/main.c batadv_nc_mesh_free(bat_priv); bat_priv 253 net/batman-adv/main.c batadv_dat_free(bat_priv); bat_priv 254 net/batman-adv/main.c batadv_bla_free(bat_priv); bat_priv 256 net/batman-adv/main.c batadv_mcast_free(bat_priv); bat_priv 262 net/batman-adv/main.c batadv_tt_free(bat_priv); bat_priv 269 net/batman-adv/main.c batadv_originator_free(bat_priv); bat_priv 271 net/batman-adv/main.c batadv_gw_free(bat_priv); bat_priv 273 net/batman-adv/main.c free_percpu(bat_priv->bat_counters); bat_priv 274 net/batman-adv/main.c bat_priv->bat_counters = NULL; bat_priv 276 net/batman-adv/main.c atomic_set(&bat_priv->mesh_state, BATADV_MESH_INACTIVE); bat_priv 287 net/batman-adv/main.c bool batadv_is_my_mac(struct batadv_priv *bat_priv, const u8 *addr) bat_priv 297 net/batman-adv/main.c if (hard_iface->soft_iface != bat_priv->soft_iface) bat_priv 321 net/batman-adv/main.c struct batadv_priv *bat_priv = netdev_priv(net_dev); bat_priv 324 net/batman-adv/main.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 451 net/batman-adv/main.c struct batadv_priv *bat_priv; bat_priv 483 net/batman-adv/main.c bat_priv = netdev_priv(hard_iface->soft_iface); bat_priv 485 net/batman-adv/main.c if (atomic_read(&bat_priv->mesh_state) != BATADV_MESH_ACTIVE) bat_priv 495 net/batman-adv/main.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 672 net/batman-adv/main.c bool batadv_vlan_ap_isola_get(struct batadv_priv *bat_priv, unsigned short vid) bat_priv 680 net/batman-adv/main.c vlan = batadv_softif_vlan_get(bat_priv, vid); bat_priv 699 net/batman-adv/main.c int batadv_throw_uevent(struct batadv_priv *bat_priv, enum batadv_uev_type type, bat_priv 706 net/batman-adv/main.c bat_kobj = &bat_priv->soft_iface->dev.kobj; bat_priv 735 net/batman-adv/main.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 245 net/batman-adv/main.h bool batadv_is_my_mac(struct batadv_priv *bat_priv, const u8 *addr); bat_priv 359 net/batman-adv/main.h static inline void batadv_add_counter(struct batadv_priv *bat_priv, size_t idx, bat_priv 362 net/batman-adv/main.h this_cpu_add(bat_priv->bat_counters[idx], count); bat_priv 384 net/batman-adv/main.h bool batadv_vlan_ap_isola_get(struct batadv_priv *bat_priv, unsigned short vid); bat_priv 385 net/batman-adv/main.h int batadv_throw_uevent(struct batadv_priv *bat_priv, enum batadv_uev_type type, bat_priv 69 net/batman-adv/multicast.c static void batadv_mcast_start_timer(struct batadv_priv *bat_priv) bat_priv 71 net/batman-adv/multicast.c queue_delayed_work(batadv_event_workqueue, &bat_priv->mcast.work, bat_priv 166 net/batman-adv/multicast.c static u8 batadv_mcast_mla_rtr_flags_softif_get(struct batadv_priv *bat_priv, bat_priv 169 net/batman-adv/multicast.c struct net_device *dev = bridge ? bridge : bat_priv->soft_iface; bat_priv 197 net/batman-adv/multicast.c static u8 batadv_mcast_mla_rtr_flags_bridge_get(struct batadv_priv *bat_priv, bat_priv 201 net/batman-adv/multicast.c struct net_device *dev = bat_priv->soft_iface; bat_priv 234 net/batman-adv/multicast.c batadv_mcast_mla_rtr_flags_bridge_get(struct batadv_priv *bat_priv, bat_priv 259 net/batman-adv/multicast.c static u8 batadv_mcast_mla_rtr_flags_get(struct batadv_priv *bat_priv, bat_priv 264 net/batman-adv/multicast.c flags &= batadv_mcast_mla_rtr_flags_softif_get(bat_priv, bridge); bat_priv 265 net/batman-adv/multicast.c flags &= batadv_mcast_mla_rtr_flags_bridge_get(bat_priv, bridge); bat_priv 278 net/batman-adv/multicast.c batadv_mcast_mla_flags_get(struct batadv_priv *bat_priv) bat_priv 280 net/batman-adv/multicast.c struct net_device *dev = bat_priv->soft_iface; bat_priv 289 net/batman-adv/multicast.c mla_flags.tvlv_flags |= batadv_mcast_mla_rtr_flags_get(bat_priv, bat_priv 685 net/batman-adv/multicast.c static void batadv_mcast_mla_tt_retract(struct batadv_priv *bat_priv, bat_priv 691 net/batman-adv/multicast.c hlist_for_each_entry_safe(mcast_entry, tmp, &bat_priv->mcast.mla_list, bat_priv 698 net/batman-adv/multicast.c batadv_tt_local_remove(bat_priv, mcast_entry->addr, bat_priv 715 net/batman-adv/multicast.c static void batadv_mcast_mla_tt_add(struct batadv_priv *bat_priv, bat_priv 726 net/batman-adv/multicast.c &bat_priv->mcast.mla_list)) bat_priv 729 net/batman-adv/multicast.c if (!batadv_tt_local_add(bat_priv->soft_iface, bat_priv 735 net/batman-adv/multicast.c hlist_add_head(&mcast_entry->list, &bat_priv->mcast.mla_list); bat_priv 762 net/batman-adv/multicast.c batadv_mcast_querier_log(struct batadv_priv *bat_priv, char *str_proto, bat_priv 767 net/batman-adv/multicast.c batadv_info(bat_priv->soft_iface, "%s Querier appeared\n", bat_priv 770 net/batman-adv/multicast.c batadv_info(bat_priv->soft_iface, bat_priv 773 net/batman-adv/multicast.c else if (!bat_priv->mcast.mla_flags.bridged && !new_state->exists) bat_priv 774 net/batman-adv/multicast.c batadv_info(bat_priv->soft_iface, bat_priv 781 net/batman-adv/multicast.c batadv_dbg(BATADV_DBG_MCAST, bat_priv, bat_priv 785 net/batman-adv/multicast.c batadv_dbg(BATADV_DBG_MCAST, bat_priv, bat_priv 808 net/batman-adv/multicast.c batadv_mcast_bridge_log(struct batadv_priv *bat_priv, bat_priv 811 net/batman-adv/multicast.c struct batadv_mcast_mla_flags *old_flags = &bat_priv->mcast.mla_flags; bat_priv 814 net/batman-adv/multicast.c batadv_dbg(BATADV_DBG_MCAST, bat_priv, bat_priv 817 net/batman-adv/multicast.c batadv_dbg(BATADV_DBG_MCAST, bat_priv, bat_priv 821 net/batman-adv/multicast.c batadv_mcast_querier_log(bat_priv, "IGMP", bat_priv 824 net/batman-adv/multicast.c batadv_mcast_querier_log(bat_priv, "MLD", bat_priv 838 net/batman-adv/multicast.c static void batadv_mcast_flags_log(struct batadv_priv *bat_priv, u8 flags) bat_priv 840 net/batman-adv/multicast.c bool old_enabled = bat_priv->mcast.mla_flags.enabled; bat_priv 841 net/batman-adv/multicast.c u8 old_flags = bat_priv->mcast.mla_flags.tvlv_flags; bat_priv 851 net/batman-adv/multicast.c batadv_dbg(BATADV_DBG_MCAST, bat_priv, bat_priv 870 net/batman-adv/multicast.c batadv_mcast_mla_flags_update(struct batadv_priv *bat_priv, bat_priv 875 net/batman-adv/multicast.c if (!memcmp(flags, &bat_priv->mcast.mla_flags, sizeof(*flags))) bat_priv 878 net/batman-adv/multicast.c batadv_mcast_bridge_log(bat_priv, flags); bat_priv 879 net/batman-adv/multicast.c batadv_mcast_flags_log(bat_priv, flags->tvlv_flags); bat_priv 884 net/batman-adv/multicast.c batadv_tvlv_container_register(bat_priv, BATADV_TVLV_MCAST, 2, bat_priv 887 net/batman-adv/multicast.c bat_priv->mcast.mla_flags = *flags; bat_priv 902 net/batman-adv/multicast.c static void __batadv_mcast_mla_update(struct batadv_priv *bat_priv) bat_priv 904 net/batman-adv/multicast.c struct net_device *soft_iface = bat_priv->soft_iface; bat_priv 909 net/batman-adv/multicast.c flags = batadv_mcast_mla_flags_get(bat_priv); bat_priv 919 net/batman-adv/multicast.c spin_lock(&bat_priv->mcast.mla_lock); bat_priv 920 net/batman-adv/multicast.c batadv_mcast_mla_tt_retract(bat_priv, &mcast_list); bat_priv 921 net/batman-adv/multicast.c batadv_mcast_mla_tt_add(bat_priv, &mcast_list); bat_priv 922 net/batman-adv/multicast.c batadv_mcast_mla_flags_update(bat_priv, &flags); bat_priv 923 net/batman-adv/multicast.c spin_unlock(&bat_priv->mcast.mla_lock); bat_priv 942 net/batman-adv/multicast.c struct batadv_priv *bat_priv; bat_priv 946 net/batman-adv/multicast.c bat_priv = container_of(priv_mcast, struct batadv_priv, mcast); bat_priv 948 net/batman-adv/multicast.c __batadv_mcast_mla_update(bat_priv); bat_priv 949 net/batman-adv/multicast.c batadv_mcast_start_timer(bat_priv); bat_priv 991 net/batman-adv/multicast.c static int batadv_mcast_forw_mode_check_ipv4(struct batadv_priv *bat_priv, bat_priv 1055 net/batman-adv/multicast.c static int batadv_mcast_forw_mode_check_ipv6(struct batadv_priv *bat_priv, bat_priv 1097 net/batman-adv/multicast.c static int batadv_mcast_forw_mode_check(struct batadv_priv *bat_priv, bat_priv 1104 net/batman-adv/multicast.c if (!atomic_read(&bat_priv->multicast_mode)) bat_priv 1109 net/batman-adv/multicast.c return batadv_mcast_forw_mode_check_ipv4(bat_priv, skb, bat_priv 1116 net/batman-adv/multicast.c return batadv_mcast_forw_mode_check_ipv6(bat_priv, skb, bat_priv 1134 net/batman-adv/multicast.c static int batadv_mcast_forw_want_all_ip_count(struct batadv_priv *bat_priv, bat_priv 1139 net/batman-adv/multicast.c return atomic_read(&bat_priv->mcast.num_want_all_ipv4); bat_priv 1141 net/batman-adv/multicast.c return atomic_read(&bat_priv->mcast.num_want_all_ipv6); bat_priv 1158 net/batman-adv/multicast.c static int batadv_mcast_forw_rtr_count(struct batadv_priv *bat_priv, bat_priv 1163 net/batman-adv/multicast.c return atomic_read(&bat_priv->mcast.num_want_all_rtr4); bat_priv 1165 net/batman-adv/multicast.c return atomic_read(&bat_priv->mcast.num_want_all_rtr6); bat_priv 1180 net/batman-adv/multicast.c batadv_mcast_forw_tt_node_get(struct batadv_priv *bat_priv, bat_priv 1183 net/batman-adv/multicast.c return batadv_transtable_search(bat_priv, NULL, ethhdr->h_dest, bat_priv 1195 net/batman-adv/multicast.c batadv_mcast_forw_ipv4_node_get(struct batadv_priv *bat_priv) bat_priv 1201 net/batman-adv/multicast.c &bat_priv->mcast.want_all_ipv4_list, bat_priv 1222 net/batman-adv/multicast.c batadv_mcast_forw_ipv6_node_get(struct batadv_priv *bat_priv) bat_priv 1228 net/batman-adv/multicast.c &bat_priv->mcast.want_all_ipv6_list, bat_priv 1251 net/batman-adv/multicast.c batadv_mcast_forw_ip_node_get(struct batadv_priv *bat_priv, bat_priv 1256 net/batman-adv/multicast.c return batadv_mcast_forw_ipv4_node_get(bat_priv); bat_priv 1258 net/batman-adv/multicast.c return batadv_mcast_forw_ipv6_node_get(bat_priv); bat_priv 1273 net/batman-adv/multicast.c batadv_mcast_forw_unsnoop_node_get(struct batadv_priv *bat_priv) bat_priv 1279 net/batman-adv/multicast.c &bat_priv->mcast.want_all_unsnoopables_list, bat_priv 1300 net/batman-adv/multicast.c batadv_mcast_forw_rtr4_node_get(struct batadv_priv *bat_priv) bat_priv 1306 net/batman-adv/multicast.c &bat_priv->mcast.want_all_rtr4_list, bat_priv 1327 net/batman-adv/multicast.c batadv_mcast_forw_rtr6_node_get(struct batadv_priv *bat_priv) bat_priv 1333 net/batman-adv/multicast.c &bat_priv->mcast.want_all_rtr6_list, bat_priv 1356 net/batman-adv/multicast.c batadv_mcast_forw_rtr_node_get(struct batadv_priv *bat_priv, bat_priv 1361 net/batman-adv/multicast.c return batadv_mcast_forw_rtr4_node_get(bat_priv); bat_priv 1363 net/batman-adv/multicast.c return batadv_mcast_forw_rtr6_node_get(bat_priv); bat_priv 1381 net/batman-adv/multicast.c batadv_mcast_forw_mode(struct batadv_priv *bat_priv, struct sk_buff *skb, bat_priv 1391 net/batman-adv/multicast.c ret = batadv_mcast_forw_mode_check(bat_priv, skb, &is_unsnoopable, bat_priv 1400 net/batman-adv/multicast.c tt_count = batadv_tt_global_hash_count(bat_priv, ethhdr->h_dest, bat_priv 1402 net/batman-adv/multicast.c ip_count = batadv_mcast_forw_want_all_ip_count(bat_priv, ethhdr); bat_priv 1404 net/batman-adv/multicast.c atomic_read(&bat_priv->mcast.num_want_all_unsnoopables); bat_priv 1405 net/batman-adv/multicast.c rtr_count = batadv_mcast_forw_rtr_count(bat_priv, is_routable); bat_priv 1412 net/batman-adv/multicast.c *orig = batadv_mcast_forw_tt_node_get(bat_priv, ethhdr); bat_priv 1414 net/batman-adv/multicast.c *orig = batadv_mcast_forw_ip_node_get(bat_priv, ethhdr); bat_priv 1416 net/batman-adv/multicast.c *orig = batadv_mcast_forw_unsnoop_node_get(bat_priv); bat_priv 1418 net/batman-adv/multicast.c *orig = batadv_mcast_forw_rtr_node_get(bat_priv, bat_priv 1428 net/batman-adv/multicast.c mcast_fanout = atomic_read(&bat_priv->multicast_fanout); bat_priv 1451 net/batman-adv/multicast.c batadv_mcast_forw_tt(struct batadv_priv *bat_priv, struct sk_buff *skb, bat_priv 1462 net/batman-adv/multicast.c tt_global = batadv_tt_global_hash_find(bat_priv, addr, vid); bat_priv 1474 net/batman-adv/multicast.c batadv_send_skb_unicast(bat_priv, newskb, BATADV_UNICAST, 0, bat_priv 1499 net/batman-adv/multicast.c batadv_mcast_forw_want_all_ipv4(struct batadv_priv *bat_priv, bat_priv 1508 net/batman-adv/multicast.c &bat_priv->mcast.want_all_ipv4_list, bat_priv 1516 net/batman-adv/multicast.c batadv_send_skb_unicast(bat_priv, newskb, BATADV_UNICAST, 0, bat_priv 1537 net/batman-adv/multicast.c batadv_mcast_forw_want_all_ipv6(struct batadv_priv *bat_priv, bat_priv 1546 net/batman-adv/multicast.c &bat_priv->mcast.want_all_ipv6_list, bat_priv 1554 net/batman-adv/multicast.c batadv_send_skb_unicast(bat_priv, newskb, BATADV_UNICAST, 0, bat_priv 1576 net/batman-adv/multicast.c batadv_mcast_forw_want_all(struct batadv_priv *bat_priv, bat_priv 1581 net/batman-adv/multicast.c return batadv_mcast_forw_want_all_ipv4(bat_priv, skb, vid); bat_priv 1583 net/batman-adv/multicast.c return batadv_mcast_forw_want_all_ipv6(bat_priv, skb, vid); bat_priv 1604 net/batman-adv/multicast.c batadv_mcast_forw_want_all_rtr4(struct batadv_priv *bat_priv, bat_priv 1613 net/batman-adv/multicast.c &bat_priv->mcast.want_all_rtr4_list, bat_priv 1621 net/batman-adv/multicast.c batadv_send_skb_unicast(bat_priv, newskb, BATADV_UNICAST, 0, bat_priv 1642 net/batman-adv/multicast.c batadv_mcast_forw_want_all_rtr6(struct batadv_priv *bat_priv, bat_priv 1651 net/batman-adv/multicast.c &bat_priv->mcast.want_all_rtr6_list, bat_priv 1659 net/batman-adv/multicast.c batadv_send_skb_unicast(bat_priv, newskb, BATADV_UNICAST, 0, bat_priv 1681 net/batman-adv/multicast.c batadv_mcast_forw_want_rtr(struct batadv_priv *bat_priv, bat_priv 1686 net/batman-adv/multicast.c return batadv_mcast_forw_want_all_rtr4(bat_priv, skb, vid); bat_priv 1688 net/batman-adv/multicast.c return batadv_mcast_forw_want_all_rtr6(bat_priv, skb, vid); bat_priv 1711 net/batman-adv/multicast.c int batadv_mcast_forw_send(struct batadv_priv *bat_priv, struct sk_buff *skb, bat_priv 1716 net/batman-adv/multicast.c ret = batadv_mcast_forw_tt(bat_priv, skb, vid); bat_priv 1722 net/batman-adv/multicast.c ret = batadv_mcast_forw_want_all(bat_priv, skb, vid); bat_priv 1728 net/batman-adv/multicast.c ret = batadv_mcast_forw_want_rtr(bat_priv, skb, vid); bat_priv 1749 net/batman-adv/multicast.c static void batadv_mcast_want_unsnoop_update(struct batadv_priv *bat_priv, bat_priv 1754 net/batman-adv/multicast.c struct hlist_head *head = &bat_priv->mcast.want_all_unsnoopables_list; bat_priv 1761 net/batman-adv/multicast.c atomic_inc(&bat_priv->mcast.num_want_all_unsnoopables); bat_priv 1763 net/batman-adv/multicast.c spin_lock_bh(&bat_priv->mcast.want_lists_lock); bat_priv 1768 net/batman-adv/multicast.c spin_unlock_bh(&bat_priv->mcast.want_lists_lock); bat_priv 1772 net/batman-adv/multicast.c atomic_dec(&bat_priv->mcast.num_want_all_unsnoopables); bat_priv 1774 net/batman-adv/multicast.c spin_lock_bh(&bat_priv->mcast.want_lists_lock); bat_priv 1779 net/batman-adv/multicast.c spin_unlock_bh(&bat_priv->mcast.want_lists_lock); bat_priv 1794 net/batman-adv/multicast.c static void batadv_mcast_want_ipv4_update(struct batadv_priv *bat_priv, bat_priv 1799 net/batman-adv/multicast.c struct hlist_head *head = &bat_priv->mcast.want_all_ipv4_list; bat_priv 1806 net/batman-adv/multicast.c atomic_inc(&bat_priv->mcast.num_want_all_ipv4); bat_priv 1808 net/batman-adv/multicast.c spin_lock_bh(&bat_priv->mcast.want_lists_lock); bat_priv 1813 net/batman-adv/multicast.c spin_unlock_bh(&bat_priv->mcast.want_lists_lock); bat_priv 1817 net/batman-adv/multicast.c atomic_dec(&bat_priv->mcast.num_want_all_ipv4); bat_priv 1819 net/batman-adv/multicast.c spin_lock_bh(&bat_priv->mcast.want_lists_lock); bat_priv 1824 net/batman-adv/multicast.c spin_unlock_bh(&bat_priv->mcast.want_lists_lock); bat_priv 1839 net/batman-adv/multicast.c static void batadv_mcast_want_ipv6_update(struct batadv_priv *bat_priv, bat_priv 1844 net/batman-adv/multicast.c struct hlist_head *head = &bat_priv->mcast.want_all_ipv6_list; bat_priv 1851 net/batman-adv/multicast.c atomic_inc(&bat_priv->mcast.num_want_all_ipv6); bat_priv 1853 net/batman-adv/multicast.c spin_lock_bh(&bat_priv->mcast.want_lists_lock); bat_priv 1858 net/batman-adv/multicast.c spin_unlock_bh(&bat_priv->mcast.want_lists_lock); bat_priv 1862 net/batman-adv/multicast.c atomic_dec(&bat_priv->mcast.num_want_all_ipv6); bat_priv 1864 net/batman-adv/multicast.c spin_lock_bh(&bat_priv->mcast.want_lists_lock); bat_priv 1869 net/batman-adv/multicast.c spin_unlock_bh(&bat_priv->mcast.want_lists_lock); bat_priv 1884 net/batman-adv/multicast.c static void batadv_mcast_want_rtr4_update(struct batadv_priv *bat_priv, bat_priv 1889 net/batman-adv/multicast.c struct hlist_head *head = &bat_priv->mcast.want_all_rtr4_list; bat_priv 1896 net/batman-adv/multicast.c atomic_inc(&bat_priv->mcast.num_want_all_rtr4); bat_priv 1898 net/batman-adv/multicast.c spin_lock_bh(&bat_priv->mcast.want_lists_lock); bat_priv 1903 net/batman-adv/multicast.c spin_unlock_bh(&bat_priv->mcast.want_lists_lock); bat_priv 1907 net/batman-adv/multicast.c atomic_dec(&bat_priv->mcast.num_want_all_rtr4); bat_priv 1909 net/batman-adv/multicast.c spin_lock_bh(&bat_priv->mcast.want_lists_lock); bat_priv 1914 net/batman-adv/multicast.c spin_unlock_bh(&bat_priv->mcast.want_lists_lock); bat_priv 1929 net/batman-adv/multicast.c static void batadv_mcast_want_rtr6_update(struct batadv_priv *bat_priv, bat_priv 1934 net/batman-adv/multicast.c struct hlist_head *head = &bat_priv->mcast.want_all_rtr6_list; bat_priv 1941 net/batman-adv/multicast.c atomic_inc(&bat_priv->mcast.num_want_all_rtr6); bat_priv 1943 net/batman-adv/multicast.c spin_lock_bh(&bat_priv->mcast.want_lists_lock); bat_priv 1948 net/batman-adv/multicast.c spin_unlock_bh(&bat_priv->mcast.want_lists_lock); bat_priv 1952 net/batman-adv/multicast.c atomic_dec(&bat_priv->mcast.num_want_all_rtr6); bat_priv 1954 net/batman-adv/multicast.c spin_lock_bh(&bat_priv->mcast.want_lists_lock); bat_priv 1959 net/batman-adv/multicast.c spin_unlock_bh(&bat_priv->mcast.want_lists_lock); bat_priv 2002 net/batman-adv/multicast.c static void batadv_mcast_tvlv_ogm_handler(struct batadv_priv *bat_priv, bat_priv 2026 net/batman-adv/multicast.c batadv_mcast_want_unsnoop_update(bat_priv, orig, mcast_flags); bat_priv 2027 net/batman-adv/multicast.c batadv_mcast_want_ipv4_update(bat_priv, orig, mcast_flags); bat_priv 2028 net/batman-adv/multicast.c batadv_mcast_want_ipv6_update(bat_priv, orig, mcast_flags); bat_priv 2029 net/batman-adv/multicast.c batadv_mcast_want_rtr4_update(bat_priv, orig, mcast_flags); bat_priv 2030 net/batman-adv/multicast.c batadv_mcast_want_rtr6_update(bat_priv, orig, mcast_flags); bat_priv 2040 net/batman-adv/multicast.c void batadv_mcast_init(struct batadv_priv *bat_priv) bat_priv 2042 net/batman-adv/multicast.c batadv_tvlv_handler_register(bat_priv, batadv_mcast_tvlv_ogm_handler, bat_priv 2046 net/batman-adv/multicast.c INIT_DELAYED_WORK(&bat_priv->mcast.work, batadv_mcast_mla_update); bat_priv 2047 net/batman-adv/multicast.c batadv_mcast_start_timer(bat_priv); bat_priv 2060 net/batman-adv/multicast.c static void batadv_mcast_flags_print_header(struct batadv_priv *bat_priv, bat_priv 2063 net/batman-adv/multicast.c struct batadv_mcast_mla_flags *mla_flags = &bat_priv->mcast.mla_flags; bat_priv 2108 net/batman-adv/multicast.c struct batadv_priv *bat_priv = netdev_priv(net_dev); bat_priv 2110 net/batman-adv/multicast.c struct batadv_hashtable *hash = bat_priv->orig_hash; bat_priv 2120 net/batman-adv/multicast.c batadv_mcast_flags_print_header(bat_priv, seq); bat_priv 2168 net/batman-adv/multicast.c struct batadv_priv *bat_priv) bat_priv 2170 net/batman-adv/multicast.c u32 flags = bat_priv->mcast.mla_flags.tvlv_flags; bat_priv 2173 net/batman-adv/multicast.c if (bat_priv->mcast.mla_flags.bridged) { bat_priv 2176 net/batman-adv/multicast.c if (bat_priv->mcast.mla_flags.querier_ipv4.exists) bat_priv 2178 net/batman-adv/multicast.c if (bat_priv->mcast.mla_flags.querier_ipv6.exists) bat_priv 2180 net/batman-adv/multicast.c if (bat_priv->mcast.mla_flags.querier_ipv4.shadowing) bat_priv 2182 net/batman-adv/multicast.c if (bat_priv->mcast.mla_flags.querier_ipv6.shadowing) bat_priv 2298 net/batman-adv/multicast.c struct batadv_priv *bat_priv, long *bucket, long *idx) bat_priv 2300 net/batman-adv/multicast.c struct batadv_hashtable *hash = bat_priv->orig_hash; bat_priv 2334 net/batman-adv/multicast.c struct batadv_priv *bat_priv; bat_priv 2348 net/batman-adv/multicast.c bat_priv = netdev_priv(soft_iface); bat_priv 2350 net/batman-adv/multicast.c hard_iface = batadv_primary_if_get_selected(bat_priv); bat_priv 2379 net/batman-adv/multicast.c struct batadv_priv *bat_priv; bat_priv 2388 net/batman-adv/multicast.c bat_priv = netdev_priv(primary_if->soft_iface); bat_priv 2389 net/batman-adv/multicast.c ret = __batadv_mcast_flags_dump(msg, portid, cb, bat_priv, bucket, idx); bat_priv 2399 net/batman-adv/multicast.c void batadv_mcast_free(struct batadv_priv *bat_priv) bat_priv 2401 net/batman-adv/multicast.c cancel_delayed_work_sync(&bat_priv->mcast.work); bat_priv 2403 net/batman-adv/multicast.c batadv_tvlv_container_unregister(bat_priv, BATADV_TVLV_MCAST, 2); bat_priv 2404 net/batman-adv/multicast.c batadv_tvlv_handler_unregister(bat_priv, BATADV_TVLV_MCAST, 2); bat_priv 2407 net/batman-adv/multicast.c batadv_mcast_mla_tt_retract(bat_priv, NULL); bat_priv 2416 net/batman-adv/multicast.c struct batadv_priv *bat_priv = orig->bat_priv; bat_priv 2420 net/batman-adv/multicast.c batadv_mcast_want_unsnoop_update(bat_priv, orig, BATADV_NO_FLAGS); bat_priv 2421 net/batman-adv/multicast.c batadv_mcast_want_ipv4_update(bat_priv, orig, BATADV_NO_FLAGS); bat_priv 2422 net/batman-adv/multicast.c batadv_mcast_want_ipv6_update(bat_priv, orig, BATADV_NO_FLAGS); bat_priv 2423 net/batman-adv/multicast.c batadv_mcast_want_rtr4_update(bat_priv, orig, bat_priv 2425 net/batman-adv/multicast.c batadv_mcast_want_rtr6_update(bat_priv, orig, bat_priv 46 net/batman-adv/multicast.h batadv_mcast_forw_mode(struct batadv_priv *bat_priv, struct sk_buff *skb, bat_priv 49 net/batman-adv/multicast.h int batadv_mcast_forw_send(struct batadv_priv *bat_priv, struct sk_buff *skb, bat_priv 52 net/batman-adv/multicast.h void batadv_mcast_init(struct batadv_priv *bat_priv); bat_priv 57 net/batman-adv/multicast.h struct batadv_priv *bat_priv); bat_priv 61 net/batman-adv/multicast.h void batadv_mcast_free(struct batadv_priv *bat_priv); bat_priv 68 net/batman-adv/multicast.h batadv_mcast_forw_mode(struct batadv_priv *bat_priv, struct sk_buff *skb, bat_priv 75 net/batman-adv/multicast.h batadv_mcast_forw_send(struct batadv_priv *bat_priv, struct sk_buff *skb, bat_priv 82 net/batman-adv/multicast.h static inline int batadv_mcast_init(struct batadv_priv *bat_priv) bat_priv 88 net/batman-adv/multicast.h batadv_mcast_mesh_info_put(struct sk_buff *msg, struct batadv_priv *bat_priv) bat_priv 99 net/batman-adv/multicast.h static inline void batadv_mcast_free(struct batadv_priv *bat_priv) bat_priv 178 net/batman-adv/netlink.c struct batadv_priv *bat_priv) bat_priv 183 net/batman-adv/netlink.c vlan = batadv_softif_vlan_get(bat_priv, BATADV_NO_FLAGS); bat_priv 202 net/batman-adv/netlink.c struct batadv_priv *bat_priv) bat_priv 206 net/batman-adv/netlink.c vlan = batadv_softif_vlan_get(bat_priv, BATADV_NO_FLAGS); bat_priv 228 net/batman-adv/netlink.c struct batadv_priv *bat_priv, bat_priv 232 net/batman-adv/netlink.c struct net_device *soft_iface = bat_priv->soft_iface; bat_priv 243 net/batman-adv/netlink.c bat_priv->algo_ops->name) || bat_priv 249 net/batman-adv/netlink.c (u8)atomic_read(&bat_priv->tt.vn))) bat_priv 254 net/batman-adv/netlink.c ntohs(bat_priv->bla.claim_dest.group))) bat_priv 258 net/batman-adv/netlink.c if (batadv_mcast_mesh_info_put(msg, bat_priv)) bat_priv 261 net/batman-adv/netlink.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 275 net/batman-adv/netlink.c !!atomic_read(&bat_priv->aggregated_ogms))) bat_priv 278 net/batman-adv/netlink.c if (batadv_netlink_mesh_fill_ap_isolation(msg, bat_priv)) bat_priv 282 net/batman-adv/netlink.c bat_priv->isolation_mark)) bat_priv 286 net/batman-adv/netlink.c bat_priv->isolation_mark_mask)) bat_priv 290 net/batman-adv/netlink.c !!atomic_read(&bat_priv->bonding))) bat_priv 295 net/batman-adv/netlink.c !!atomic_read(&bat_priv->bridge_loop_avoidance))) bat_priv 301 net/batman-adv/netlink.c !!atomic_read(&bat_priv->distributed_arp_table))) bat_priv 306 net/batman-adv/netlink.c !!atomic_read(&bat_priv->fragmentation))) bat_priv 310 net/batman-adv/netlink.c atomic_read(&bat_priv->gw.bandwidth_down))) bat_priv 314 net/batman-adv/netlink.c atomic_read(&bat_priv->gw.bandwidth_up))) bat_priv 318 net/batman-adv/netlink.c atomic_read(&bat_priv->gw.mode))) bat_priv 321 net/batman-adv/netlink.c if (bat_priv->algo_ops->gw.get_best_gw_node && bat_priv 322 net/batman-adv/netlink.c bat_priv->algo_ops->gw.is_eligible) { bat_priv 327 net/batman-adv/netlink.c atomic_read(&bat_priv->gw.sel_class))) bat_priv 332 net/batman-adv/netlink.c atomic_read(&bat_priv->hop_penalty))) bat_priv 337 net/batman-adv/netlink.c atomic_read(&bat_priv->log_level))) bat_priv 343 net/batman-adv/netlink.c !atomic_read(&bat_priv->multicast_mode))) bat_priv 347 net/batman-adv/netlink.c atomic_read(&bat_priv->multicast_fanout))) bat_priv 353 net/batman-adv/netlink.c !!atomic_read(&bat_priv->network_coding))) bat_priv 358 net/batman-adv/netlink.c atomic_read(&bat_priv->orig_interval))) bat_priv 381 net/batman-adv/netlink.c int batadv_netlink_notify_mesh(struct batadv_priv *bat_priv) bat_priv 390 net/batman-adv/netlink.c ret = batadv_netlink_mesh_fill(msg, bat_priv, BATADV_CMD_SET_MESH, bat_priv 398 net/batman-adv/netlink.c dev_net(bat_priv->soft_iface), msg, 0, bat_priv 413 net/batman-adv/netlink.c struct batadv_priv *bat_priv = info->user_ptr[0]; bat_priv 421 net/batman-adv/netlink.c ret = batadv_netlink_mesh_fill(msg, bat_priv, BATADV_CMD_GET_MESH, bat_priv 442 net/batman-adv/netlink.c struct batadv_priv *bat_priv = info->user_ptr[0]; bat_priv 448 net/batman-adv/netlink.c atomic_set(&bat_priv->aggregated_ogms, !!nla_get_u8(attr)); bat_priv 454 net/batman-adv/netlink.c batadv_netlink_set_mesh_ap_isolation(attr, bat_priv); bat_priv 460 net/batman-adv/netlink.c bat_priv->isolation_mark = nla_get_u32(attr); bat_priv 466 net/batman-adv/netlink.c bat_priv->isolation_mark_mask = nla_get_u32(attr); bat_priv 472 net/batman-adv/netlink.c atomic_set(&bat_priv->bonding, !!nla_get_u8(attr)); bat_priv 479 net/batman-adv/netlink.c atomic_set(&bat_priv->bridge_loop_avoidance, bat_priv 481 net/batman-adv/netlink.c batadv_bla_status_update(bat_priv->soft_iface); bat_priv 489 net/batman-adv/netlink.c atomic_set(&bat_priv->distributed_arp_table, bat_priv 491 net/batman-adv/netlink.c batadv_dat_status_update(bat_priv->soft_iface); bat_priv 498 net/batman-adv/netlink.c atomic_set(&bat_priv->fragmentation, !!nla_get_u8(attr)); bat_priv 499 net/batman-adv/netlink.c batadv_update_min_mtu(bat_priv->soft_iface); bat_priv 505 net/batman-adv/netlink.c atomic_set(&bat_priv->gw.bandwidth_down, nla_get_u32(attr)); bat_priv 506 net/batman-adv/netlink.c batadv_gw_tvlv_container_update(bat_priv); bat_priv 512 net/batman-adv/netlink.c atomic_set(&bat_priv->gw.bandwidth_up, nla_get_u32(attr)); bat_priv 513 net/batman-adv/netlink.c batadv_gw_tvlv_container_update(bat_priv); bat_priv 534 net/batman-adv/netlink.c batadv_gw_reselect(bat_priv); bat_priv 539 net/batman-adv/netlink.c batadv_gw_check_client_stop(bat_priv); bat_priv 540 net/batman-adv/netlink.c atomic_set(&bat_priv->gw.mode, gw_mode); bat_priv 541 net/batman-adv/netlink.c batadv_gw_tvlv_container_update(bat_priv); bat_priv 546 net/batman-adv/netlink.c bat_priv->algo_ops->gw.get_best_gw_node && bat_priv 547 net/batman-adv/netlink.c bat_priv->algo_ops->gw.is_eligible) { bat_priv 558 net/batman-adv/netlink.c if (!bat_priv->algo_ops->gw.store_sel_class) bat_priv 562 net/batman-adv/netlink.c atomic_set(&bat_priv->gw.sel_class, sel_class); bat_priv 563 net/batman-adv/netlink.c batadv_gw_reselect(bat_priv); bat_priv 570 net/batman-adv/netlink.c atomic_set(&bat_priv->hop_penalty, nla_get_u8(attr)); bat_priv 577 net/batman-adv/netlink.c atomic_set(&bat_priv->log_level, bat_priv 586 net/batman-adv/netlink.c atomic_set(&bat_priv->multicast_mode, !nla_get_u8(attr)); bat_priv 592 net/batman-adv/netlink.c atomic_set(&bat_priv->multicast_fanout, nla_get_u32(attr)); bat_priv 600 net/batman-adv/netlink.c atomic_set(&bat_priv->network_coding, !!nla_get_u8(attr)); bat_priv 601 net/batman-adv/netlink.c batadv_nc_status_update(bat_priv->soft_iface); bat_priv 614 net/batman-adv/netlink.c atomic_set(&bat_priv->orig_interval, orig_interval); bat_priv 617 net/batman-adv/netlink.c batadv_netlink_notify_mesh(bat_priv); bat_priv 649 net/batman-adv/netlink.c int batadv_netlink_tpmeter_notify(struct batadv_priv *bat_priv, const u8 *dst, bat_priv 687 net/batman-adv/netlink.c dev_net(bat_priv->soft_iface), msg, 0, bat_priv 711 net/batman-adv/netlink.c struct batadv_priv *bat_priv = info->user_ptr[0]; bat_priv 743 net/batman-adv/netlink.c batadv_tp_start(bat_priv, dst, test_length, &cookie); bat_priv 768 net/batman-adv/netlink.c struct batadv_priv *bat_priv = info->user_ptr[0]; bat_priv 777 net/batman-adv/netlink.c batadv_tp_stop(bat_priv, dst, BATADV_TP_REASON_CANCEL); bat_priv 796 net/batman-adv/netlink.c struct batadv_priv *bat_priv, bat_priv 813 net/batman-adv/netlink.c bat_priv->soft_iface->ifindex)) bat_priv 854 net/batman-adv/netlink.c int batadv_netlink_notify_hardif(struct batadv_priv *bat_priv, bat_priv 864 net/batman-adv/netlink.c ret = batadv_netlink_hardif_fill(msg, bat_priv, hard_iface, bat_priv 872 net/batman-adv/netlink.c dev_net(bat_priv->soft_iface), msg, 0, bat_priv 889 net/batman-adv/netlink.c struct batadv_priv *bat_priv = info->user_ptr[0]; bat_priv 897 net/batman-adv/netlink.c ret = batadv_netlink_hardif_fill(msg, bat_priv, hard_iface, bat_priv 922 net/batman-adv/netlink.c struct batadv_priv *bat_priv = info->user_ptr[0]; bat_priv 941 net/batman-adv/netlink.c batadv_netlink_notify_hardif(bat_priv, hard_iface); bat_priv 959 net/batman-adv/netlink.c struct batadv_priv *bat_priv; bat_priv 979 net/batman-adv/netlink.c bat_priv = netdev_priv(soft_iface); bat_priv 991 net/batman-adv/netlink.c if (batadv_netlink_hardif_fill(msg, bat_priv, hard_iface, bat_priv 1022 net/batman-adv/netlink.c struct batadv_priv *bat_priv, bat_priv 1034 net/batman-adv/netlink.c bat_priv->soft_iface->ifindex)) bat_priv 1059 net/batman-adv/netlink.c int batadv_netlink_notify_vlan(struct batadv_priv *bat_priv, bat_priv 1069 net/batman-adv/netlink.c ret = batadv_netlink_vlan_fill(msg, bat_priv, vlan, bat_priv 1077 net/batman-adv/netlink.c dev_net(bat_priv->soft_iface), msg, 0, bat_priv 1093 net/batman-adv/netlink.c struct batadv_priv *bat_priv = info->user_ptr[0]; bat_priv 1101 net/batman-adv/netlink.c ret = batadv_netlink_vlan_fill(msg, bat_priv, vlan, BATADV_CMD_GET_VLAN, bat_priv 1123 net/batman-adv/netlink.c struct batadv_priv *bat_priv = info->user_ptr[0]; bat_priv 1132 net/batman-adv/netlink.c batadv_netlink_notify_vlan(bat_priv, vlan); bat_priv 1181 net/batman-adv/netlink.c batadv_get_hardif_from_info(struct batadv_priv *bat_priv, struct net *net, bat_priv 1201 net/batman-adv/netlink.c if (hard_iface->soft_iface != bat_priv->soft_iface) bat_priv 1227 net/batman-adv/netlink.c batadv_get_vlan_from_info(struct batadv_priv *bat_priv, struct net *net, bat_priv 1238 net/batman-adv/netlink.c vlan = batadv_softif_vlan_get(bat_priv, vid | BATADV_VLAN_HAS_TAG); bat_priv 1258 net/batman-adv/netlink.c struct batadv_priv *bat_priv = NULL; bat_priv 1279 net/batman-adv/netlink.c bat_priv = netdev_priv(soft_iface); bat_priv 1280 net/batman-adv/netlink.c info->user_ptr[0] = bat_priv; bat_priv 1284 net/batman-adv/netlink.c hard_iface = batadv_get_hardif_from_info(bat_priv, net, info); bat_priv 1294 net/batman-adv/netlink.c vlan = batadv_get_vlan_from_info(bat_priv, net, info); bat_priv 1306 net/batman-adv/netlink.c if (bat_priv) bat_priv 1307 net/batman-adv/netlink.c dev_put(bat_priv->soft_iface); bat_priv 1323 net/batman-adv/netlink.c struct batadv_priv *bat_priv; bat_priv 1338 net/batman-adv/netlink.c bat_priv = info->user_ptr[0]; bat_priv 1339 net/batman-adv/netlink.c dev_put(bat_priv->soft_iface); bat_priv 20 net/batman-adv/netlink.h int batadv_netlink_tpmeter_notify(struct batadv_priv *bat_priv, const u8 *dst, bat_priv 24 net/batman-adv/netlink.h int batadv_netlink_notify_mesh(struct batadv_priv *bat_priv); bat_priv 25 net/batman-adv/netlink.h int batadv_netlink_notify_hardif(struct batadv_priv *bat_priv, bat_priv 27 net/batman-adv/netlink.h int batadv_netlink_notify_vlan(struct batadv_priv *bat_priv, bat_priv 77 net/batman-adv/network-coding.c static void batadv_nc_start_timer(struct batadv_priv *bat_priv) bat_priv 79 net/batman-adv/network-coding.c queue_delayed_work(batadv_event_workqueue, &bat_priv->nc.work, bat_priv 88 net/batman-adv/network-coding.c static void batadv_nc_tvlv_container_update(struct batadv_priv *bat_priv) bat_priv 92 net/batman-adv/network-coding.c nc_mode = atomic_read(&bat_priv->network_coding); bat_priv 96 net/batman-adv/network-coding.c batadv_tvlv_container_unregister(bat_priv, BATADV_TVLV_NC, 1); bat_priv 99 net/batman-adv/network-coding.c batadv_tvlv_container_register(bat_priv, BATADV_TVLV_NC, 1, bat_priv 112 net/batman-adv/network-coding.c struct batadv_priv *bat_priv = netdev_priv(net_dev); bat_priv 114 net/batman-adv/network-coding.c batadv_nc_tvlv_container_update(bat_priv); bat_priv 125 net/batman-adv/network-coding.c static void batadv_nc_tvlv_ogm_handler_v1(struct batadv_priv *bat_priv, bat_priv 142 net/batman-adv/network-coding.c int batadv_nc_mesh_init(struct batadv_priv *bat_priv) bat_priv 144 net/batman-adv/network-coding.c bat_priv->nc.timestamp_fwd_flush = jiffies; bat_priv 145 net/batman-adv/network-coding.c bat_priv->nc.timestamp_sniffed_purge = jiffies; bat_priv 147 net/batman-adv/network-coding.c if (bat_priv->nc.coding_hash || bat_priv->nc.decoding_hash) bat_priv 150 net/batman-adv/network-coding.c bat_priv->nc.coding_hash = batadv_hash_new(128); bat_priv 151 net/batman-adv/network-coding.c if (!bat_priv->nc.coding_hash) bat_priv 154 net/batman-adv/network-coding.c batadv_hash_set_lock_class(bat_priv->nc.coding_hash, bat_priv 157 net/batman-adv/network-coding.c bat_priv->nc.decoding_hash = batadv_hash_new(128); bat_priv 158 net/batman-adv/network-coding.c if (!bat_priv->nc.decoding_hash) bat_priv 161 net/batman-adv/network-coding.c batadv_hash_set_lock_class(bat_priv->nc.decoding_hash, bat_priv 164 net/batman-adv/network-coding.c INIT_DELAYED_WORK(&bat_priv->nc.work, batadv_nc_worker); bat_priv 165 net/batman-adv/network-coding.c batadv_nc_start_timer(bat_priv); bat_priv 167 net/batman-adv/network-coding.c batadv_tvlv_handler_register(bat_priv, batadv_nc_tvlv_ogm_handler_v1, bat_priv 170 net/batman-adv/network-coding.c batadv_nc_tvlv_container_update(bat_priv); bat_priv 181 net/batman-adv/network-coding.c void batadv_nc_init_bat_priv(struct batadv_priv *bat_priv) bat_priv 183 net/batman-adv/network-coding.c atomic_set(&bat_priv->network_coding, 0); bat_priv 184 net/batman-adv/network-coding.c bat_priv->nc.min_tq = 200; bat_priv 185 net/batman-adv/network-coding.c bat_priv->nc.max_fwd_delay = 10; bat_priv 186 net/batman-adv/network-coding.c bat_priv->nc.max_buffer_time = 200; bat_priv 274 net/batman-adv/network-coding.c static bool batadv_nc_to_purge_nc_node(struct batadv_priv *bat_priv, bat_priv 277 net/batman-adv/network-coding.c if (atomic_read(&bat_priv->mesh_state) != BATADV_MESH_ACTIVE) bat_priv 290 net/batman-adv/network-coding.c static bool batadv_nc_to_purge_nc_path_coding(struct batadv_priv *bat_priv, bat_priv 293 net/batman-adv/network-coding.c if (atomic_read(&bat_priv->mesh_state) != BATADV_MESH_ACTIVE) bat_priv 300 net/batman-adv/network-coding.c bat_priv->nc.max_fwd_delay * 10); bat_priv 311 net/batman-adv/network-coding.c static bool batadv_nc_to_purge_nc_path_decoding(struct batadv_priv *bat_priv, bat_priv 314 net/batman-adv/network-coding.c if (atomic_read(&bat_priv->mesh_state) != BATADV_MESH_ACTIVE) bat_priv 321 net/batman-adv/network-coding.c bat_priv->nc.max_buffer_time * 10); bat_priv 336 net/batman-adv/network-coding.c batadv_nc_purge_orig_nc_nodes(struct batadv_priv *bat_priv, bat_priv 350 net/batman-adv/network-coding.c if (to_purge && !to_purge(bat_priv, nc_node)) bat_priv 353 net/batman-adv/network-coding.c batadv_dbg(BATADV_DBG_NC, bat_priv, bat_priv 372 net/batman-adv/network-coding.c void batadv_nc_purge_orig(struct batadv_priv *bat_priv, bat_priv 378 net/batman-adv/network-coding.c batadv_nc_purge_orig_nc_nodes(bat_priv, &orig_node->in_coding_list, bat_priv 383 net/batman-adv/network-coding.c batadv_nc_purge_orig_nc_nodes(bat_priv, &orig_node->out_coding_list, bat_priv 393 net/batman-adv/network-coding.c static void batadv_nc_purge_orig_hash(struct batadv_priv *bat_priv) bat_priv 395 net/batman-adv/network-coding.c struct batadv_hashtable *hash = bat_priv->orig_hash; bat_priv 409 net/batman-adv/network-coding.c batadv_nc_purge_orig(bat_priv, orig_node, bat_priv 425 net/batman-adv/network-coding.c static void batadv_nc_purge_paths(struct batadv_priv *bat_priv, bat_priv 446 net/batman-adv/network-coding.c if (to_purge && !to_purge(bat_priv, nc_path)) bat_priv 464 net/batman-adv/network-coding.c batadv_dbg(BATADV_DBG_NC, bat_priv, bat_priv 592 net/batman-adv/network-coding.c static bool batadv_nc_sniffed_purge(struct batadv_priv *bat_priv, bat_priv 596 net/batman-adv/network-coding.c unsigned long timeout = bat_priv->nc.max_buffer_time; bat_priv 604 net/batman-adv/network-coding.c if (atomic_read(&bat_priv->mesh_state) == BATADV_MESH_ACTIVE && bat_priv 631 net/batman-adv/network-coding.c static bool batadv_nc_fwd_flush(struct batadv_priv *bat_priv, bat_priv 635 net/batman-adv/network-coding.c unsigned long timeout = bat_priv->nc.max_fwd_delay; bat_priv 642 net/batman-adv/network-coding.c if (atomic_read(&bat_priv->mesh_state) == BATADV_MESH_ACTIVE && bat_priv 647 net/batman-adv/network-coding.c batadv_inc_counter(bat_priv, BATADV_CNT_FORWARD); bat_priv 648 net/batman-adv/network-coding.c batadv_add_counter(bat_priv, BATADV_CNT_FORWARD_BYTES, bat_priv 666 net/batman-adv/network-coding.c batadv_nc_process_nc_paths(struct batadv_priv *bat_priv, bat_priv 692 net/batman-adv/network-coding.c ret = process_fn(bat_priv, nc_path, nc_packet); bat_priv 711 net/batman-adv/network-coding.c struct batadv_priv *bat_priv; bat_priv 716 net/batman-adv/network-coding.c bat_priv = container_of(priv_nc, struct batadv_priv, nc); bat_priv 718 net/batman-adv/network-coding.c batadv_nc_purge_orig_hash(bat_priv); bat_priv 719 net/batman-adv/network-coding.c batadv_nc_purge_paths(bat_priv, bat_priv->nc.coding_hash, bat_priv 721 net/batman-adv/network-coding.c batadv_nc_purge_paths(bat_priv, bat_priv->nc.decoding_hash, bat_priv 724 net/batman-adv/network-coding.c timeout = bat_priv->nc.max_fwd_delay; bat_priv 726 net/batman-adv/network-coding.c if (batadv_has_timed_out(bat_priv->nc.timestamp_fwd_flush, timeout)) { bat_priv 727 net/batman-adv/network-coding.c batadv_nc_process_nc_paths(bat_priv, bat_priv->nc.coding_hash, bat_priv 729 net/batman-adv/network-coding.c bat_priv->nc.timestamp_fwd_flush = jiffies; bat_priv 732 net/batman-adv/network-coding.c if (batadv_has_timed_out(bat_priv->nc.timestamp_sniffed_purge, bat_priv 733 net/batman-adv/network-coding.c bat_priv->nc.max_buffer_time)) { bat_priv 734 net/batman-adv/network-coding.c batadv_nc_process_nc_paths(bat_priv, bat_priv->nc.decoding_hash, bat_priv 736 net/batman-adv/network-coding.c bat_priv->nc.timestamp_sniffed_purge = jiffies; bat_priv 740 net/batman-adv/network-coding.c batadv_nc_start_timer(bat_priv); bat_priv 756 net/batman-adv/network-coding.c static bool batadv_can_nc_with_orig(struct batadv_priv *bat_priv, bat_priv 778 net/batman-adv/network-coding.c if (ogm_packet->tq < bat_priv->nc.min_tq) bat_priv 836 net/batman-adv/network-coding.c batadv_nc_get_nc_node(struct batadv_priv *bat_priv, bat_priv 874 net/batman-adv/network-coding.c batadv_dbg(BATADV_DBG_NC, bat_priv, "Adding nc_node %pM -> %pM\n", bat_priv 897 net/batman-adv/network-coding.c void batadv_nc_update_nc_node(struct batadv_priv *bat_priv, bat_priv 907 net/batman-adv/network-coding.c if (!atomic_read(&bat_priv->network_coding)) bat_priv 915 net/batman-adv/network-coding.c if (!batadv_can_nc_with_orig(bat_priv, orig_node, ogm_packet) && bat_priv 920 net/batman-adv/network-coding.c in_nc_node = batadv_nc_get_nc_node(bat_priv, orig_node, bat_priv 928 net/batman-adv/network-coding.c out_nc_node = batadv_nc_get_nc_node(bat_priv, orig_neigh_node, bat_priv 952 net/batman-adv/network-coding.c static struct batadv_nc_path *batadv_nc_get_path(struct batadv_priv *bat_priv, bat_priv 985 net/batman-adv/network-coding.c batadv_dbg(BATADV_DBG_NC, bat_priv, "Adding nc_path %pM -> %pM\n", bat_priv 1044 net/batman-adv/network-coding.c static bool batadv_nc_code_packets(struct batadv_priv *bat_priv, bat_priv 1175 net/batman-adv/network-coding.c batadv_add_counter(bat_priv, BATADV_CNT_NC_RECODE, 2); bat_priv 1176 net/batman-adv/network-coding.c batadv_add_counter(bat_priv, BATADV_CNT_NC_RECODE_BYTES, count); bat_priv 1182 net/batman-adv/network-coding.c batadv_add_counter(bat_priv, BATADV_CNT_NC_CODE, 2); bat_priv 1183 net/batman-adv/network-coding.c batadv_add_counter(bat_priv, BATADV_CNT_NC_CODE_BYTES, count); bat_priv 1187 net/batman-adv/network-coding.c batadv_inc_counter(bat_priv, BATADV_CNT_NC_RECODE); bat_priv 1188 net/batman-adv/network-coding.c batadv_add_counter(bat_priv, BATADV_CNT_NC_RECODE_BYTES, bat_priv 1190 net/batman-adv/network-coding.c batadv_inc_counter(bat_priv, BATADV_CNT_NC_CODE); bat_priv 1191 net/batman-adv/network-coding.c batadv_add_counter(bat_priv, BATADV_CNT_NC_CODE_BYTES, bat_priv 1196 net/batman-adv/network-coding.c batadv_inc_counter(bat_priv, BATADV_CNT_NC_CODE); bat_priv 1197 net/batman-adv/network-coding.c batadv_add_counter(bat_priv, BATADV_CNT_NC_CODE_BYTES, bat_priv 1199 net/batman-adv/network-coding.c batadv_inc_counter(bat_priv, BATADV_CNT_NC_RECODE); bat_priv 1200 net/batman-adv/network-coding.c batadv_add_counter(bat_priv, BATADV_CNT_NC_RECODE_BYTES, bat_priv 1262 net/batman-adv/network-coding.c batadv_nc_path_search(struct batadv_priv *bat_priv, bat_priv 1271 net/batman-adv/network-coding.c struct batadv_hashtable *hash = bat_priv->nc.coding_hash; bat_priv 1330 net/batman-adv/network-coding.c batadv_nc_skb_src_search(struct batadv_priv *bat_priv, bat_priv 1340 net/batman-adv/network-coding.c orig_node = batadv_orig_hash_find(bat_priv, eth_src); bat_priv 1353 net/batman-adv/network-coding.c nc_packet = batadv_nc_path_search(bat_priv, in_nc_node, bat_priv 1371 net/batman-adv/network-coding.c static void batadv_nc_skb_store_before_coding(struct batadv_priv *bat_priv, bat_priv 1391 net/batman-adv/network-coding.c batadv_nc_skb_store_for_decoding(bat_priv, skb); bat_priv 1417 net/batman-adv/network-coding.c struct batadv_priv *bat_priv = netdev_priv(netdev); bat_priv 1425 net/batman-adv/network-coding.c nc_packet = batadv_nc_skb_src_search(bat_priv, skb, bat_priv 1439 net/batman-adv/network-coding.c batadv_nc_skb_store_before_coding(bat_priv, skb, bat_priv 1441 net/batman-adv/network-coding.c batadv_nc_skb_store_before_coding(bat_priv, nc_packet->skb, bat_priv 1445 net/batman-adv/network-coding.c if (batadv_nc_code_packets(bat_priv, skb, ethhdr, nc_packet, bat_priv 1504 net/batman-adv/network-coding.c struct batadv_priv *bat_priv = netdev_priv(netdev); bat_priv 1512 net/batman-adv/network-coding.c if (!atomic_read(&bat_priv->network_coding)) bat_priv 1526 net/batman-adv/network-coding.c nc_path = batadv_nc_get_path(bat_priv, bat_priv 1527 net/batman-adv/network-coding.c bat_priv->nc.coding_hash, bat_priv 1555 net/batman-adv/network-coding.c void batadv_nc_skb_store_for_decoding(struct batadv_priv *bat_priv, bat_priv 1565 net/batman-adv/network-coding.c if (!atomic_read(&bat_priv->network_coding)) bat_priv 1575 net/batman-adv/network-coding.c nc_path = batadv_nc_get_path(bat_priv, bat_priv 1576 net/batman-adv/network-coding.c bat_priv->nc.decoding_hash, bat_priv 1599 net/batman-adv/network-coding.c batadv_inc_counter(bat_priv, BATADV_CNT_NC_BUFFER); bat_priv 1616 net/batman-adv/network-coding.c void batadv_nc_skb_store_sniffed_unicast(struct batadv_priv *bat_priv, bat_priv 1621 net/batman-adv/network-coding.c if (batadv_is_my_mac(bat_priv, ethhdr->h_dest)) bat_priv 1627 net/batman-adv/network-coding.c batadv_nc_skb_store_for_decoding(bat_priv, skb); bat_priv 1641 net/batman-adv/network-coding.c batadv_nc_skb_decode_packet(struct batadv_priv *bat_priv, struct sk_buff *skb, bat_priv 1676 net/batman-adv/network-coding.c if (batadv_is_my_mac(bat_priv, coded_packet_tmp.second_dest)) { bat_priv 1734 net/batman-adv/network-coding.c batadv_nc_find_decoding_packet(struct batadv_priv *bat_priv, bat_priv 1738 net/batman-adv/network-coding.c struct batadv_hashtable *hash = bat_priv->nc.decoding_hash; bat_priv 1750 net/batman-adv/network-coding.c if (!batadv_is_my_mac(bat_priv, coded->second_dest)) { bat_priv 1783 net/batman-adv/network-coding.c batadv_dbg(BATADV_DBG_NC, bat_priv, bat_priv 1801 net/batman-adv/network-coding.c struct batadv_priv *bat_priv = netdev_priv(recv_if->soft_iface); bat_priv 1809 net/batman-adv/network-coding.c if (!atomic_read(&bat_priv->network_coding)) bat_priv 1820 net/batman-adv/network-coding.c if (!batadv_is_my_mac(bat_priv, ethhdr->h_dest) && bat_priv 1821 net/batman-adv/network-coding.c !batadv_is_my_mac(bat_priv, coded_packet->second_dest)) bat_priv 1825 net/batman-adv/network-coding.c if (batadv_is_my_mac(bat_priv, coded_packet->second_dest)) bat_priv 1826 net/batman-adv/network-coding.c batadv_inc_counter(bat_priv, BATADV_CNT_NC_SNIFFED); bat_priv 1828 net/batman-adv/network-coding.c nc_packet = batadv_nc_find_decoding_packet(bat_priv, ethhdr, bat_priv 1831 net/batman-adv/network-coding.c batadv_inc_counter(bat_priv, BATADV_CNT_NC_DECODE_FAILED); bat_priv 1843 net/batman-adv/network-coding.c unicast_packet = batadv_nc_skb_decode_packet(bat_priv, skb, nc_packet); bat_priv 1845 net/batman-adv/network-coding.c batadv_inc_counter(bat_priv, BATADV_CNT_NC_DECODE_FAILED); bat_priv 1851 net/batman-adv/network-coding.c batadv_inc_counter(bat_priv, BATADV_CNT_NC_DECODE); bat_priv 1852 net/batman-adv/network-coding.c batadv_add_counter(bat_priv, BATADV_CNT_NC_DECODE_BYTES, bat_priv 1868 net/batman-adv/network-coding.c void batadv_nc_mesh_free(struct batadv_priv *bat_priv) bat_priv 1870 net/batman-adv/network-coding.c batadv_tvlv_container_unregister(bat_priv, BATADV_TVLV_NC, 1); bat_priv 1871 net/batman-adv/network-coding.c batadv_tvlv_handler_unregister(bat_priv, BATADV_TVLV_NC, 1); bat_priv 1872 net/batman-adv/network-coding.c cancel_delayed_work_sync(&bat_priv->nc.work); bat_priv 1874 net/batman-adv/network-coding.c batadv_nc_purge_paths(bat_priv, bat_priv->nc.coding_hash, NULL); bat_priv 1875 net/batman-adv/network-coding.c batadv_hash_destroy(bat_priv->nc.coding_hash); bat_priv 1876 net/batman-adv/network-coding.c batadv_nc_purge_paths(bat_priv, bat_priv->nc.decoding_hash, NULL); bat_priv 1877 net/batman-adv/network-coding.c batadv_hash_destroy(bat_priv->nc.decoding_hash); bat_priv 1891 net/batman-adv/network-coding.c struct batadv_priv *bat_priv = netdev_priv(net_dev); bat_priv 1892 net/batman-adv/network-coding.c struct batadv_hashtable *hash = bat_priv->orig_hash; bat_priv 1948 net/batman-adv/network-coding.c void batadv_nc_init_debugfs(struct batadv_priv *bat_priv) bat_priv 1952 net/batman-adv/network-coding.c nc_dir = debugfs_create_dir("nc", bat_priv->debug_dir); bat_priv 1954 net/batman-adv/network-coding.c debugfs_create_u8("min_tq", 0644, nc_dir, &bat_priv->nc.min_tq); bat_priv 1957 net/batman-adv/network-coding.c &bat_priv->nc.max_fwd_delay); bat_priv 1960 net/batman-adv/network-coding.c &bat_priv->nc.max_buffer_time); bat_priv 22 net/batman-adv/network-coding.h int batadv_nc_mesh_init(struct batadv_priv *bat_priv); bat_priv 23 net/batman-adv/network-coding.h void batadv_nc_mesh_free(struct batadv_priv *bat_priv); bat_priv 24 net/batman-adv/network-coding.h void batadv_nc_update_nc_node(struct batadv_priv *bat_priv, bat_priv 29 net/batman-adv/network-coding.h void batadv_nc_purge_orig(struct batadv_priv *bat_priv, bat_priv 33 net/batman-adv/network-coding.h void batadv_nc_init_bat_priv(struct batadv_priv *bat_priv); bat_priv 37 net/batman-adv/network-coding.h void batadv_nc_skb_store_for_decoding(struct batadv_priv *bat_priv, bat_priv 39 net/batman-adv/network-coding.h void batadv_nc_skb_store_sniffed_unicast(struct batadv_priv *bat_priv, bat_priv 42 net/batman-adv/network-coding.h void batadv_nc_init_debugfs(struct batadv_priv *bat_priv); bat_priv 55 net/batman-adv/network-coding.h static inline int batadv_nc_mesh_init(struct batadv_priv *bat_priv) bat_priv 60 net/batman-adv/network-coding.h static inline void batadv_nc_mesh_free(struct batadv_priv *bat_priv) bat_priv 65 net/batman-adv/network-coding.h batadv_nc_update_nc_node(struct batadv_priv *bat_priv, bat_priv 74 net/batman-adv/network-coding.h batadv_nc_purge_orig(struct batadv_priv *bat_priv, bat_priv 81 net/batman-adv/network-coding.h static inline void batadv_nc_init_bat_priv(struct batadv_priv *bat_priv) bat_priv 96 net/batman-adv/network-coding.h batadv_nc_skb_store_for_decoding(struct batadv_priv *bat_priv, bat_priv 102 net/batman-adv/network-coding.h batadv_nc_skb_store_sniffed_unicast(struct batadv_priv *bat_priv, bat_priv 113 net/batman-adv/network-coding.h static inline void batadv_nc_init_debugfs(struct batadv_priv *bat_priv) bat_priv 58 net/batman-adv/originator.c batadv_orig_hash_find(struct batadv_priv *bat_priv, const void *data) bat_priv 60 net/batman-adv/originator.c struct batadv_hashtable *hash = bat_priv->orig_hash; bat_priv 206 net/batman-adv/originator.c int batadv_originator_init(struct batadv_priv *bat_priv) bat_priv 208 net/batman-adv/originator.c if (bat_priv->orig_hash) bat_priv 211 net/batman-adv/originator.c bat_priv->orig_hash = batadv_hash_new(1024); bat_priv 213 net/batman-adv/originator.c if (!bat_priv->orig_hash) bat_priv 216 net/batman-adv/originator.c batadv_hash_set_lock_class(bat_priv->orig_hash, bat_priv 219 net/batman-adv/originator.c INIT_DELAYED_WORK(&bat_priv->orig_work, batadv_purge_orig); bat_priv 221 net/batman-adv/originator.c &bat_priv->orig_work, bat_priv 559 net/batman-adv/originator.c struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface); bat_priv 582 net/batman-adv/originator.c if (bat_priv->algo_ops->neigh.hardif_init) bat_priv 583 net/batman-adv/originator.c bat_priv->algo_ops->neigh.hardif_init(hardif_neigh); bat_priv 701 net/batman-adv/originator.c batadv_dbg(BATADV_DBG_BATMAN, orig_node->bat_priv, bat_priv 747 net/batman-adv/originator.c struct batadv_priv *bat_priv = netdev_priv(net_dev); bat_priv 757 net/batman-adv/originator.c bat_priv->algo_ops->name); bat_priv 761 net/batman-adv/originator.c if (!bat_priv->algo_ops->neigh.print) { bat_priv 767 net/batman-adv/originator.c bat_priv->algo_ops->neigh.print(bat_priv, seq); bat_priv 786 net/batman-adv/originator.c struct batadv_priv *bat_priv; bat_priv 801 net/batman-adv/originator.c bat_priv = netdev_priv(soft_iface); bat_priv 803 net/batman-adv/originator.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 827 net/batman-adv/originator.c if (!bat_priv->algo_ops->neigh.dump) { bat_priv 832 net/batman-adv/originator.c bat_priv->algo_ops->neigh.dump(msg, cb, bat_priv, hardif); bat_priv 946 net/batman-adv/originator.c batadv_nc_purge_orig(orig_node->bat_priv, orig_node, NULL); bat_priv 965 net/batman-adv/originator.c void batadv_originator_free(struct batadv_priv *bat_priv) bat_priv 967 net/batman-adv/originator.c struct batadv_hashtable *hash = bat_priv->orig_hash; bat_priv 977 net/batman-adv/originator.c cancel_delayed_work_sync(&bat_priv->orig_work); bat_priv 979 net/batman-adv/originator.c bat_priv->orig_hash = NULL; bat_priv 1007 net/batman-adv/originator.c struct batadv_orig_node *batadv_orig_node_new(struct batadv_priv *bat_priv, bat_priv 1015 net/batman-adv/originator.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 1036 net/batman-adv/originator.c orig_node->bat_priv = bat_priv; bat_priv 1083 net/batman-adv/originator.c batadv_purge_neigh_ifinfo(struct batadv_priv *bat_priv, bat_priv 1107 net/batman-adv/originator.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 1126 net/batman-adv/originator.c batadv_purge_orig_ifinfo(struct batadv_priv *bat_priv, bat_priv 1151 net/batman-adv/originator.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 1178 net/batman-adv/originator.c batadv_purge_orig_neighbors(struct batadv_priv *bat_priv, bat_priv 1202 net/batman-adv/originator.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 1207 net/batman-adv/originator.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 1220 net/batman-adv/originator.c batadv_purge_neigh_ifinfo(bat_priv, neigh_node); bat_priv 1237 net/batman-adv/originator.c batadv_find_best_neighbor(struct batadv_priv *bat_priv, bat_priv 1242 net/batman-adv/originator.c struct batadv_algo_ops *bao = bat_priv->algo_ops; bat_priv 1273 net/batman-adv/originator.c static bool batadv_purge_orig_node(struct batadv_priv *bat_priv, bat_priv 1282 net/batman-adv/originator.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 1288 net/batman-adv/originator.c changed_ifinfo = batadv_purge_orig_ifinfo(bat_priv, orig_node); bat_priv 1289 net/batman-adv/originator.c changed_neigh = batadv_purge_orig_neighbors(bat_priv, orig_node); bat_priv 1295 net/batman-adv/originator.c best_neigh_node = batadv_find_best_neighbor(bat_priv, orig_node, bat_priv 1297 net/batman-adv/originator.c batadv_update_route(bat_priv, orig_node, BATADV_IF_DEFAULT, bat_priv 1308 net/batman-adv/originator.c if (hard_iface->soft_iface != bat_priv->soft_iface) bat_priv 1314 net/batman-adv/originator.c best_neigh_node = batadv_find_best_neighbor(bat_priv, bat_priv 1317 net/batman-adv/originator.c batadv_update_route(bat_priv, orig_node, hard_iface, bat_priv 1333 net/batman-adv/originator.c void batadv_purge_orig_ref(struct batadv_priv *bat_priv) bat_priv 1335 net/batman-adv/originator.c struct batadv_hashtable *hash = bat_priv->orig_hash; bat_priv 1353 net/batman-adv/originator.c if (batadv_purge_orig_node(bat_priv, orig_node)) { bat_priv 1354 net/batman-adv/originator.c batadv_gw_node_delete(bat_priv, orig_node); bat_priv 1356 net/batman-adv/originator.c batadv_tt_global_del_orig(orig_node->bat_priv, bat_priv 1369 net/batman-adv/originator.c batadv_gw_election(bat_priv); bat_priv 1375 net/batman-adv/originator.c struct batadv_priv *bat_priv; bat_priv 1378 net/batman-adv/originator.c bat_priv = container_of(delayed_work, struct batadv_priv, orig_work); bat_priv 1379 net/batman-adv/originator.c batadv_purge_orig_ref(bat_priv); bat_priv 1381 net/batman-adv/originator.c &bat_priv->orig_work, bat_priv 1397 net/batman-adv/originator.c struct batadv_priv *bat_priv = netdev_priv(net_dev); bat_priv 1407 net/batman-adv/originator.c bat_priv->algo_ops->name); bat_priv 1411 net/batman-adv/originator.c if (!bat_priv->algo_ops->orig.print) { bat_priv 1417 net/batman-adv/originator.c bat_priv->algo_ops->orig.print(bat_priv, seq, BATADV_IF_DEFAULT); bat_priv 1434 net/batman-adv/originator.c struct batadv_priv *bat_priv; bat_priv 1443 net/batman-adv/originator.c bat_priv = netdev_priv(hard_iface->soft_iface); bat_priv 1444 net/batman-adv/originator.c if (!bat_priv->algo_ops->orig.print) { bat_priv 1458 net/batman-adv/originator.c hard_iface->soft_iface->name, bat_priv->algo_ops->name); bat_priv 1460 net/batman-adv/originator.c bat_priv->algo_ops->orig.print(bat_priv, seq, hard_iface); bat_priv 1483 net/batman-adv/originator.c struct batadv_priv *bat_priv; bat_priv 1498 net/batman-adv/originator.c bat_priv = netdev_priv(soft_iface); bat_priv 1500 net/batman-adv/originator.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 1524 net/batman-adv/originator.c if (!bat_priv->algo_ops->orig.dump) { bat_priv 1529 net/batman-adv/originator.c bat_priv->algo_ops->orig.dump(msg, cb, bat_priv, hardif); bat_priv 21 net/batman-adv/originator.h int batadv_originator_init(struct batadv_priv *bat_priv); bat_priv 22 net/batman-adv/originator.h void batadv_originator_free(struct batadv_priv *bat_priv); bat_priv 23 net/batman-adv/originator.h void batadv_purge_orig_ref(struct batadv_priv *bat_priv); bat_priv 25 net/batman-adv/originator.h struct batadv_orig_node *batadv_orig_node_new(struct batadv_priv *bat_priv, bat_priv 87 net/batman-adv/originator.h batadv_orig_hash_find(struct batadv_priv *bat_priv, const void *data); bat_priv 54 net/batman-adv/routing.c static void _batadv_update_route(struct batadv_priv *bat_priv, bat_priv 86 net/batman-adv/routing.c batadv_dbg(BATADV_DBG_ROUTES, bat_priv, bat_priv 88 net/batman-adv/routing.c batadv_tt_global_del_orig(bat_priv, orig_node, -1, bat_priv 93 net/batman-adv/routing.c batadv_dbg(BATADV_DBG_ROUTES, bat_priv, bat_priv 98 net/batman-adv/routing.c batadv_dbg(BATADV_DBG_ROUTES, bat_priv, bat_priv 116 net/batman-adv/routing.c void batadv_update_route(struct batadv_priv *bat_priv, bat_priv 129 net/batman-adv/routing.c _batadv_update_route(bat_priv, orig_node, recv_if, neigh_node); bat_priv 152 net/batman-adv/routing.c bool batadv_window_protected(struct batadv_priv *bat_priv, s32 seq_num_diff, bat_priv 165 net/batman-adv/routing.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 219 net/batman-adv/routing.c static int batadv_recv_my_icmp_packet(struct batadv_priv *bat_priv, bat_priv 241 net/batman-adv/routing.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 246 net/batman-adv/routing.c orig_node = batadv_orig_hash_find(bat_priv, icmph->orig); bat_priv 272 net/batman-adv/routing.c batadv_tp_meter_recv(bat_priv, skb); bat_priv 292 net/batman-adv/routing.c static int batadv_recv_icmp_ttl_exceeded(struct batadv_priv *bat_priv, bat_priv 309 net/batman-adv/routing.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 314 net/batman-adv/routing.c orig_node = batadv_orig_hash_find(bat_priv, icmp_packet->orig); bat_priv 357 net/batman-adv/routing.c struct batadv_priv *bat_priv = netdev_priv(recv_if->soft_iface); bat_priv 380 net/batman-adv/routing.c if (!batadv_is_my_mac(bat_priv, ethhdr->h_dest)) bat_priv 408 net/batman-adv/routing.c if (batadv_is_my_mac(bat_priv, icmph->dst)) bat_priv 409 net/batman-adv/routing.c return batadv_recv_my_icmp_packet(bat_priv, skb); bat_priv 413 net/batman-adv/routing.c return batadv_recv_icmp_ttl_exceeded(bat_priv, skb); bat_priv 416 net/batman-adv/routing.c orig_node = batadv_orig_hash_find(bat_priv, icmph->dst); bat_priv 458 net/batman-adv/routing.c static int batadv_check_unicast_packet(struct batadv_priv *bat_priv, bat_priv 478 net/batman-adv/routing.c if (!batadv_is_my_mac(bat_priv, ethhdr->h_dest)) bat_priv 540 net/batman-adv/routing.c batadv_find_router(struct batadv_priv *bat_priv, bat_priv 544 net/batman-adv/routing.c struct batadv_algo_ops *bao = bat_priv->algo_ops; bat_priv 565 net/batman-adv/routing.c if (!(recv_if == BATADV_IF_DEFAULT && atomic_read(&bat_priv->bonding))) bat_priv 678 net/batman-adv/routing.c struct batadv_priv *bat_priv = netdev_priv(recv_if->soft_iface); bat_priv 695 net/batman-adv/routing.c orig_node = batadv_orig_hash_find(bat_priv, unicast_packet->dest); bat_priv 731 net/batman-adv/routing.c batadv_inc_counter(bat_priv, BATADV_CNT_FORWARD); bat_priv 732 net/batman-adv/routing.c batadv_add_counter(bat_priv, BATADV_CNT_FORWARD_BYTES, bat_priv 762 net/batman-adv/routing.c batadv_reroute_unicast_packet(struct batadv_priv *bat_priv, struct sk_buff *skb, bat_priv 771 net/batman-adv/routing.c if (batadv_is_my_client(bat_priv, dst_addr, vid)) { bat_priv 772 net/batman-adv/routing.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 776 net/batman-adv/routing.c orig_ttvn = (u8)atomic_read(&bat_priv->tt.vn); bat_priv 778 net/batman-adv/routing.c orig_node = batadv_transtable_search(bat_priv, NULL, dst_addr, bat_priv 806 net/batman-adv/routing.c static bool batadv_check_unicast_ttvn(struct batadv_priv *bat_priv, bat_priv 834 net/batman-adv/routing.c if (batadv_tt_local_client_is_roaming(bat_priv, ethhdr->h_dest, vid)) { bat_priv 835 net/batman-adv/routing.c if (batadv_reroute_unicast_packet(bat_priv, skb, unicast_packet, bat_priv 838 net/batman-adv/routing.c bat_priv, bat_priv 854 net/batman-adv/routing.c curr_ttvn = (u8)atomic_read(&bat_priv->tt.vn); bat_priv 855 net/batman-adv/routing.c if (!batadv_is_my_mac(bat_priv, unicast_packet->dest)) { bat_priv 856 net/batman-adv/routing.c orig_node = batadv_orig_hash_find(bat_priv, bat_priv 881 net/batman-adv/routing.c if (batadv_reroute_unicast_packet(bat_priv, skb, unicast_packet, bat_priv 883 net/batman-adv/routing.c batadv_dbg_ratelimited(BATADV_DBG_TT, bat_priv, bat_priv 894 net/batman-adv/routing.c if (!batadv_is_my_client(bat_priv, ethhdr->h_dest, vid)) bat_priv 900 net/batman-adv/routing.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 928 net/batman-adv/routing.c struct batadv_priv *bat_priv = netdev_priv(recv_if->soft_iface); bat_priv 931 net/batman-adv/routing.c check = batadv_check_unicast_packet(bat_priv, skb, hdr_size); bat_priv 937 net/batman-adv/routing.c if (batadv_is_my_mac(bat_priv, unicast_packet->dest)) bat_priv 957 net/batman-adv/routing.c struct batadv_priv *bat_priv = netdev_priv(recv_if->soft_iface); bat_priv 974 net/batman-adv/routing.c check = batadv_check_unicast_packet(bat_priv, skb, hdr_size); bat_priv 980 net/batman-adv/routing.c batadv_nc_skb_store_sniffed_unicast(bat_priv, skb); bat_priv 984 net/batman-adv/routing.c if (!batadv_check_unicast_ttvn(bat_priv, skb, hdr_size)) bat_priv 990 net/batman-adv/routing.c if (batadv_is_my_mac(bat_priv, unicast_packet->dest)) { bat_priv 995 net/batman-adv/routing.c orig_node_gw = batadv_orig_hash_find(bat_priv, orig_addr_gw); bat_priv 1001 net/batman-adv/routing.c batadv_dbg(BATADV_DBG_BLA, bat_priv, bat_priv 1012 net/batman-adv/routing.c batadv_dat_inc_counter(bat_priv, subtype); bat_priv 1022 net/batman-adv/routing.c orig_node = batadv_orig_hash_find(bat_priv, bat_priv 1027 net/batman-adv/routing.c if (batadv_dat_snoop_incoming_arp_request(bat_priv, skb, bat_priv 1030 net/batman-adv/routing.c if (batadv_dat_snoop_incoming_arp_reply(bat_priv, skb, bat_priv 1034 net/batman-adv/routing.c batadv_dat_snoop_incoming_dhcp_ack(bat_priv, skb, hdr_size); bat_priv 1067 net/batman-adv/routing.c struct batadv_priv *bat_priv = netdev_priv(recv_if->soft_iface); bat_priv 1074 net/batman-adv/routing.c if (batadv_check_unicast_packet(bat_priv, skb, hdr_size) < 0) bat_priv 1093 net/batman-adv/routing.c ret = batadv_tvlv_containers_process(bat_priv, false, NULL, bat_priv 1124 net/batman-adv/routing.c struct batadv_priv *bat_priv = netdev_priv(recv_if->soft_iface); bat_priv 1129 net/batman-adv/routing.c if (batadv_check_unicast_packet(bat_priv, skb, bat_priv 1134 net/batman-adv/routing.c orig_node_src = batadv_orig_hash_find(bat_priv, frag_packet->orig); bat_priv 1141 net/batman-adv/routing.c if (!batadv_is_my_mac(bat_priv, frag_packet->dest) && bat_priv 1149 net/batman-adv/routing.c batadv_inc_counter(bat_priv, BATADV_CNT_FRAG_RX); bat_priv 1150 net/batman-adv/routing.c batadv_add_counter(bat_priv, BATADV_CNT_FRAG_RX_BYTES, skb->len); bat_priv 1186 net/batman-adv/routing.c struct batadv_priv *bat_priv = netdev_priv(recv_if->soft_iface); bat_priv 1210 net/batman-adv/routing.c if (batadv_is_my_mac(bat_priv, ethhdr->h_source)) bat_priv 1216 net/batman-adv/routing.c if (batadv_is_my_mac(bat_priv, bcast_packet->orig)) bat_priv 1222 net/batman-adv/routing.c orig_node = batadv_orig_hash_find(bat_priv, bcast_packet->orig); bat_priv 1238 net/batman-adv/routing.c if (batadv_window_protected(bat_priv, seq_diff, bat_priv 1246 net/batman-adv/routing.c if (batadv_bit_get_packet(bat_priv, orig_node->bcast_bits, seq_diff, 1)) bat_priv 1252 net/batman-adv/routing.c if (batadv_bla_check_bcast_duplist(bat_priv, skb)) bat_priv 1258 net/batman-adv/routing.c batadv_add_bcast_packet_to_list(bat_priv, skb, 1, false); bat_priv 1266 net/batman-adv/routing.c if (batadv_dat_snoop_incoming_arp_request(bat_priv, skb, hdr_size)) bat_priv 1268 net/batman-adv/routing.c if (batadv_dat_snoop_incoming_arp_reply(bat_priv, skb, hdr_size)) bat_priv 1271 net/batman-adv/routing.c batadv_dat_snoop_incoming_dhcp_ack(bat_priv, skb, hdr_size); bat_priv 18 net/batman-adv/routing.h void batadv_update_route(struct batadv_priv *bat_priv, bat_priv 39 net/batman-adv/routing.h batadv_find_router(struct batadv_priv *bat_priv, bat_priv 42 net/batman-adv/routing.h bool batadv_window_protected(struct batadv_priv *bat_priv, s32 seq_num_diff, bat_priv 67 net/batman-adv/send.c struct batadv_priv *bat_priv; bat_priv 71 net/batman-adv/send.c bat_priv = netdev_priv(hard_iface->soft_iface); bat_priv 102 net/batman-adv/send.c batadv_nc_skb_store_for_decoding(bat_priv, skb); bat_priv 181 net/batman-adv/send.c struct batadv_priv *bat_priv = orig_node->bat_priv; bat_priv 186 net/batman-adv/send.c neigh_node = batadv_find_router(bat_priv, orig_node, recv_if); bat_priv 195 net/batman-adv/send.c if (atomic_read(&bat_priv->fragmentation) && bat_priv 283 net/batman-adv/send.c bool batadv_send_skb_prepare_unicast_4addr(struct batadv_priv *bat_priv, bat_priv 292 net/batman-adv/send.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 333 net/batman-adv/send.c int batadv_send_skb_unicast(struct batadv_priv *bat_priv, bat_priv 352 net/batman-adv/send.c if (!batadv_send_skb_prepare_unicast_4addr(bat_priv, skb, bat_priv 375 net/batman-adv/send.c if (batadv_tt_global_client_is_roaming(bat_priv, ethhdr->h_dest, vid)) bat_priv 405 net/batman-adv/send.c int batadv_send_skb_via_tt_generic(struct batadv_priv *bat_priv, bat_priv 423 net/batman-adv/send.c orig_node = batadv_transtable_search(bat_priv, src, dst, vid); bat_priv 425 net/batman-adv/send.c ret = batadv_send_skb_unicast(bat_priv, skb, packet_type, bat_priv 445 net/batman-adv/send.c int batadv_send_skb_via_gw(struct batadv_priv *bat_priv, struct sk_buff *skb, bat_priv 451 net/batman-adv/send.c orig_node = batadv_gw_get_selected_orig(bat_priv); bat_priv 452 net/batman-adv/send.c ret = batadv_send_skb_unicast(bat_priv, skb, BATADV_UNICAST_4ADDR, bat_priv 504 net/batman-adv/send.c struct batadv_priv *bat_priv, bat_priv 513 net/batman-adv/send.c if (queue_left == &bat_priv->bcast_queue_left) bat_priv 516 net/batman-adv/send.c if (queue_left == &bat_priv->batman_queue_left) bat_priv 519 net/batman-adv/send.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 713 net/batman-adv/send.c batadv_forw_packet_bcast_queue(struct batadv_priv *bat_priv, bat_priv 717 net/batman-adv/send.c batadv_forw_packet_queue(forw_packet, &bat_priv->forw_bcast_list_lock, bat_priv 718 net/batman-adv/send.c &bat_priv->forw_bcast_list, send_time); bat_priv 731 net/batman-adv/send.c void batadv_forw_packet_ogmv1_queue(struct batadv_priv *bat_priv, bat_priv 735 net/batman-adv/send.c batadv_forw_packet_queue(forw_packet, &bat_priv->forw_bat_list_lock, bat_priv 736 net/batman-adv/send.c &bat_priv->forw_bat_list, send_time); bat_priv 754 net/batman-adv/send.c int batadv_add_bcast_packet_to_list(struct batadv_priv *bat_priv, bat_priv 764 net/batman-adv/send.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 775 net/batman-adv/send.c &bat_priv->bcast_queue_left, bat_priv 776 net/batman-adv/send.c bat_priv, newskb); bat_priv 790 net/batman-adv/send.c batadv_forw_packet_bcast_queue(bat_priv, forw_packet, jiffies + delay); bat_priv 858 net/batman-adv/send.c struct batadv_priv *bat_priv; bat_priv 869 net/batman-adv/send.c bat_priv = netdev_priv(soft_iface); bat_priv 871 net/batman-adv/send.c if (atomic_read(&bat_priv->mesh_state) == BATADV_MESH_DEACTIVATING) { bat_priv 876 net/batman-adv/send.c if (batadv_dat_drop_broadcast_packet(bat_priv, forw_packet)) { bat_priv 922 net/batman-adv/send.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, "BCAST packet from orig %pM on %s suppressed: %s\n", bat_priv 951 net/batman-adv/send.c batadv_forw_packet_bcast_queue(bat_priv, forw_packet, bat_priv 959 net/batman-adv/send.c &bat_priv->forw_bcast_list_lock)) bat_priv 975 net/batman-adv/send.c batadv_purge_outstanding_packets(struct batadv_priv *bat_priv, bat_priv 981 net/batman-adv/send.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 985 net/batman-adv/send.c batadv_dbg(BATADV_DBG_BATMAN, bat_priv, bat_priv 989 net/batman-adv/send.c spin_lock_bh(&bat_priv->forw_bcast_list_lock); bat_priv 990 net/batman-adv/send.c batadv_forw_packet_list_steal(&bat_priv->forw_bcast_list, &head, bat_priv 992 net/batman-adv/send.c spin_unlock_bh(&bat_priv->forw_bcast_list_lock); bat_priv 995 net/batman-adv/send.c spin_lock_bh(&bat_priv->forw_bat_list_lock); bat_priv 996 net/batman-adv/send.c batadv_forw_packet_list_steal(&bat_priv->forw_bat_list, &head, bat_priv 998 net/batman-adv/send.c spin_unlock_bh(&bat_priv->forw_bat_list_lock); bat_priv 24 net/batman-adv/send.h struct batadv_priv *bat_priv, bat_priv 27 net/batman-adv/send.h void batadv_forw_packet_ogmv1_queue(struct batadv_priv *bat_priv, bat_priv 42 net/batman-adv/send.h int batadv_add_bcast_packet_to_list(struct batadv_priv *bat_priv, bat_priv 47 net/batman-adv/send.h batadv_purge_outstanding_packets(struct batadv_priv *bat_priv, bat_priv 49 net/batman-adv/send.h bool batadv_send_skb_prepare_unicast_4addr(struct batadv_priv *bat_priv, bat_priv 53 net/batman-adv/send.h int batadv_send_skb_unicast(struct batadv_priv *bat_priv, bat_priv 58 net/batman-adv/send.h int batadv_send_skb_via_tt_generic(struct batadv_priv *bat_priv, bat_priv 62 net/batman-adv/send.h int batadv_send_skb_via_gw(struct batadv_priv *bat_priv, struct sk_buff *skb, bat_priv 78 net/batman-adv/send.h static inline int batadv_send_skb_via_tt(struct batadv_priv *bat_priv, bat_priv 82 net/batman-adv/send.h return batadv_send_skb_via_tt_generic(bat_priv, skb, BATADV_UNICAST, 0, bat_priv 101 net/batman-adv/send.h static inline int batadv_send_skb_via_tt_4addr(struct batadv_priv *bat_priv, bat_priv 107 net/batman-adv/send.h return batadv_send_skb_via_tt_generic(bat_priv, skb, bat_priv 102 net/batman-adv/soft-interface.c static u64 batadv_sum_counter(struct batadv_priv *bat_priv, size_t idx) bat_priv 108 net/batman-adv/soft-interface.c counters = per_cpu_ptr(bat_priv->bat_counters, cpu); bat_priv 117 net/batman-adv/soft-interface.c struct batadv_priv *bat_priv = netdev_priv(dev); bat_priv 120 net/batman-adv/soft-interface.c stats->tx_packets = batadv_sum_counter(bat_priv, BATADV_CNT_TX); bat_priv 121 net/batman-adv/soft-interface.c stats->tx_bytes = batadv_sum_counter(bat_priv, BATADV_CNT_TX_BYTES); bat_priv 122 net/batman-adv/soft-interface.c stats->tx_dropped = batadv_sum_counter(bat_priv, BATADV_CNT_TX_DROPPED); bat_priv 123 net/batman-adv/soft-interface.c stats->rx_packets = batadv_sum_counter(bat_priv, BATADV_CNT_RX); bat_priv 124 net/batman-adv/soft-interface.c stats->rx_bytes = batadv_sum_counter(bat_priv, BATADV_CNT_RX_BYTES); bat_priv 130 net/batman-adv/soft-interface.c struct batadv_priv *bat_priv = netdev_priv(dev); bat_priv 142 net/batman-adv/soft-interface.c if (atomic_read(&bat_priv->mesh_state) != BATADV_MESH_ACTIVE) bat_priv 146 net/batman-adv/soft-interface.c hlist_for_each_entry_rcu(vlan, &bat_priv->softif_vlan_list, list) { bat_priv 147 net/batman-adv/soft-interface.c batadv_tt_local_remove(bat_priv, old_addr, vlan->vid, bat_priv 184 net/batman-adv/soft-interface.c struct batadv_priv *bat_priv = netdev_priv(soft_iface); bat_priv 206 net/batman-adv/soft-interface.c if (atomic_read(&bat_priv->mesh_state) != BATADV_MESH_ACTIVE) bat_priv 240 net/batman-adv/soft-interface.c if (batadv_bla_tx(bat_priv, skb, vid)) bat_priv 257 net/batman-adv/soft-interface.c batadv_dat_snoop_outgoing_dhcp_ack(bat_priv, skb, proto, vid); bat_priv 271 net/batman-adv/soft-interface.c gw_mode = atomic_read(&bat_priv->gw.mode); bat_priv 304 net/batman-adv/soft-interface.c forw_mode = batadv_mcast_forw_mode(bat_priv, skb, bat_priv 319 net/batman-adv/soft-interface.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 327 net/batman-adv/soft-interface.c if (batadv_dat_snoop_outgoing_arp_request(bat_priv, skb)) bat_priv 348 net/batman-adv/soft-interface.c seqno = atomic_inc_return(&bat_priv->bcast_seqno); bat_priv 351 net/batman-adv/soft-interface.c batadv_add_bcast_packet_to_list(bat_priv, skb, brd_delay, true); bat_priv 362 net/batman-adv/soft-interface.c ret = batadv_gw_out_of_range(bat_priv, skb); bat_priv 365 net/batman-adv/soft-interface.c ret = batadv_send_skb_via_gw(bat_priv, skb, vid); bat_priv 367 net/batman-adv/soft-interface.c ret = batadv_send_skb_unicast(bat_priv, skb, bat_priv 371 net/batman-adv/soft-interface.c ret = batadv_mcast_forw_send(bat_priv, skb, vid); bat_priv 373 net/batman-adv/soft-interface.c if (batadv_dat_snoop_outgoing_arp_request(bat_priv, bat_priv 377 net/batman-adv/soft-interface.c batadv_dat_snoop_outgoing_arp_reply(bat_priv, skb); bat_priv 379 net/batman-adv/soft-interface.c ret = batadv_send_skb_via_tt(bat_priv, skb, dst_hint, bat_priv 386 net/batman-adv/soft-interface.c batadv_inc_counter(bat_priv, BATADV_CNT_TX); bat_priv 387 net/batman-adv/soft-interface.c batadv_add_counter(bat_priv, BATADV_CNT_TX_BYTES, data_len); bat_priv 393 net/batman-adv/soft-interface.c batadv_inc_counter(bat_priv, BATADV_CNT_TX_DROPPED); bat_priv 424 net/batman-adv/soft-interface.c struct batadv_priv *bat_priv = netdev_priv(soft_iface); bat_priv 467 net/batman-adv/soft-interface.c batadv_inc_counter(bat_priv, BATADV_CNT_RX); bat_priv 468 net/batman-adv/soft-interface.c batadv_add_counter(bat_priv, BATADV_CNT_RX_BYTES, bat_priv 474 net/batman-adv/soft-interface.c if (batadv_bla_rx(bat_priv, skb, vid, is_bcast)) bat_priv 478 net/batman-adv/soft-interface.c batadv_tt_add_temporary_global_entry(bat_priv, orig_node, bat_priv 485 net/batman-adv/soft-interface.c if (batadv_vlan_ap_isola_get(bat_priv, vid) && bat_priv 486 net/batman-adv/soft-interface.c batadv_tt_global_is_isolated(bat_priv, ethhdr->h_source, bat_priv 491 net/batman-adv/soft-interface.c skb->mark &= ~bat_priv->isolation_mark_mask; bat_priv 492 net/batman-adv/soft-interface.c skb->mark |= bat_priv->isolation_mark; bat_priv 494 net/batman-adv/soft-interface.c } else if (batadv_is_ap_isolated(bat_priv, ethhdr->h_source, bat_priv 519 net/batman-adv/soft-interface.c spin_lock_bh(&vlan->bat_priv->softif_vlan_list_lock); bat_priv 521 net/batman-adv/soft-interface.c spin_unlock_bh(&vlan->bat_priv->softif_vlan_list_lock); bat_priv 547 net/batman-adv/soft-interface.c struct batadv_softif_vlan *batadv_softif_vlan_get(struct batadv_priv *bat_priv, bat_priv 553 net/batman-adv/soft-interface.c hlist_for_each_entry_rcu(vlan_tmp, &bat_priv->softif_vlan_list, list) { bat_priv 575 net/batman-adv/soft-interface.c int batadv_softif_create_vlan(struct batadv_priv *bat_priv, unsigned short vid) bat_priv 580 net/batman-adv/soft-interface.c spin_lock_bh(&bat_priv->softif_vlan_list_lock); bat_priv 582 net/batman-adv/soft-interface.c vlan = batadv_softif_vlan_get(bat_priv, vid); bat_priv 585 net/batman-adv/soft-interface.c spin_unlock_bh(&bat_priv->softif_vlan_list_lock); bat_priv 591 net/batman-adv/soft-interface.c spin_unlock_bh(&bat_priv->softif_vlan_list_lock); bat_priv 595 net/batman-adv/soft-interface.c vlan->bat_priv = bat_priv; bat_priv 602 net/batman-adv/soft-interface.c hlist_add_head_rcu(&vlan->list, &bat_priv->softif_vlan_list); bat_priv 603 net/batman-adv/soft-interface.c spin_unlock_bh(&bat_priv->softif_vlan_list_lock); bat_priv 608 net/batman-adv/soft-interface.c err = batadv_sysfs_add_vlan(bat_priv->soft_iface, vlan); bat_priv 621 net/batman-adv/soft-interface.c batadv_tt_local_add(bat_priv->soft_iface, bat_priv 622 net/batman-adv/soft-interface.c bat_priv->soft_iface->dev_addr, vid, bat_priv 636 net/batman-adv/soft-interface.c static void batadv_softif_destroy_vlan(struct batadv_priv *bat_priv, bat_priv 642 net/batman-adv/soft-interface.c batadv_tt_local_remove(bat_priv, bat_priv->soft_iface->dev_addr, bat_priv 645 net/batman-adv/soft-interface.c batadv_sysfs_del_vlan(bat_priv, vlan); bat_priv 663 net/batman-adv/soft-interface.c struct batadv_priv *bat_priv = netdev_priv(dev); bat_priv 681 net/batman-adv/soft-interface.c vlan = batadv_softif_vlan_get(bat_priv, vid); bat_priv 683 net/batman-adv/soft-interface.c return batadv_softif_create_vlan(bat_priv, vid); bat_priv 689 net/batman-adv/soft-interface.c ret = batadv_sysfs_add_vlan(bat_priv->soft_iface, vlan); bat_priv 700 net/batman-adv/soft-interface.c batadv_tt_local_add(bat_priv->soft_iface, bat_priv 701 net/batman-adv/soft-interface.c bat_priv->soft_iface->dev_addr, vid, bat_priv 722 net/batman-adv/soft-interface.c struct batadv_priv *bat_priv = netdev_priv(dev); bat_priv 731 net/batman-adv/soft-interface.c vlan = batadv_softif_vlan_get(bat_priv, vid | BATADV_VLAN_HAS_TAG); bat_priv 735 net/batman-adv/soft-interface.c batadv_softif_destroy_vlan(bat_priv, vlan); bat_priv 751 net/batman-adv/soft-interface.c struct batadv_priv *bat_priv; bat_priv 756 net/batman-adv/soft-interface.c bat_priv = netdev_priv(dev); bat_priv 757 net/batman-adv/soft-interface.c bat_priv->soft_iface = dev; bat_priv 762 net/batman-adv/soft-interface.c bat_priv->bat_counters = __alloc_percpu(cnt_len, __alignof__(u64)); bat_priv 763 net/batman-adv/soft-interface.c if (!bat_priv->bat_counters) bat_priv 766 net/batman-adv/soft-interface.c atomic_set(&bat_priv->aggregated_ogms, 1); bat_priv 767 net/batman-adv/soft-interface.c atomic_set(&bat_priv->bonding, 0); bat_priv 769 net/batman-adv/soft-interface.c atomic_set(&bat_priv->bridge_loop_avoidance, 1); bat_priv 772 net/batman-adv/soft-interface.c atomic_set(&bat_priv->distributed_arp_table, 1); bat_priv 775 net/batman-adv/soft-interface.c atomic_set(&bat_priv->multicast_mode, 1); bat_priv 776 net/batman-adv/soft-interface.c atomic_set(&bat_priv->multicast_fanout, 16); bat_priv 777 net/batman-adv/soft-interface.c atomic_set(&bat_priv->mcast.num_want_all_unsnoopables, 0); bat_priv 778 net/batman-adv/soft-interface.c atomic_set(&bat_priv->mcast.num_want_all_ipv4, 0); bat_priv 779 net/batman-adv/soft-interface.c atomic_set(&bat_priv->mcast.num_want_all_ipv6, 0); bat_priv 781 net/batman-adv/soft-interface.c atomic_set(&bat_priv->gw.mode, BATADV_GW_MODE_OFF); bat_priv 782 net/batman-adv/soft-interface.c atomic_set(&bat_priv->gw.bandwidth_down, 100); bat_priv 783 net/batman-adv/soft-interface.c atomic_set(&bat_priv->gw.bandwidth_up, 20); bat_priv 784 net/batman-adv/soft-interface.c atomic_set(&bat_priv->orig_interval, 1000); bat_priv 785 net/batman-adv/soft-interface.c atomic_set(&bat_priv->hop_penalty, 30); bat_priv 787 net/batman-adv/soft-interface.c atomic_set(&bat_priv->log_level, 0); bat_priv 789 net/batman-adv/soft-interface.c atomic_set(&bat_priv->fragmentation, 1); bat_priv 790 net/batman-adv/soft-interface.c atomic_set(&bat_priv->packet_size_max, ETH_DATA_LEN); bat_priv 791 net/batman-adv/soft-interface.c atomic_set(&bat_priv->bcast_queue_left, BATADV_BCAST_QUEUE_LEN); bat_priv 792 net/batman-adv/soft-interface.c atomic_set(&bat_priv->batman_queue_left, BATADV_BATMAN_QUEUE_LEN); bat_priv 794 net/batman-adv/soft-interface.c atomic_set(&bat_priv->mesh_state, BATADV_MESH_INACTIVE); bat_priv 795 net/batman-adv/soft-interface.c atomic_set(&bat_priv->bcast_seqno, 1); bat_priv 796 net/batman-adv/soft-interface.c atomic_set(&bat_priv->tt.vn, 0); bat_priv 797 net/batman-adv/soft-interface.c atomic_set(&bat_priv->tt.local_changes, 0); bat_priv 798 net/batman-adv/soft-interface.c atomic_set(&bat_priv->tt.ogm_append_cnt, 0); bat_priv 800 net/batman-adv/soft-interface.c atomic_set(&bat_priv->bla.num_requests, 0); bat_priv 802 net/batman-adv/soft-interface.c atomic_set(&bat_priv->tp_num, 0); bat_priv 804 net/batman-adv/soft-interface.c bat_priv->tt.last_changeset = NULL; bat_priv 805 net/batman-adv/soft-interface.c bat_priv->tt.last_changeset_len = 0; bat_priv 806 net/batman-adv/soft-interface.c bat_priv->isolation_mark = 0; bat_priv 807 net/batman-adv/soft-interface.c bat_priv->isolation_mark_mask = 0; bat_priv 811 net/batman-adv/soft-interface.c atomic_set(&bat_priv->frag_seqno, random_seqno); bat_priv 813 net/batman-adv/soft-interface.c bat_priv->primary_if = NULL; bat_priv 815 net/batman-adv/soft-interface.c batadv_nc_init_bat_priv(bat_priv); bat_priv 817 net/batman-adv/soft-interface.c ret = batadv_algo_select(bat_priv, batadv_routing_algo); bat_priv 834 net/batman-adv/soft-interface.c free_percpu(bat_priv->bat_counters); bat_priv 835 net/batman-adv/soft-interface.c bat_priv->bat_counters = NULL; bat_priv 980 net/batman-adv/soft-interface.c struct batadv_priv *bat_priv = netdev_priv(dev); bat_priv 984 net/batman-adv/soft-interface.c data[i] = batadv_sum_counter(bat_priv, i); bat_priv 1083 net/batman-adv/soft-interface.c struct batadv_priv *bat_priv = netdev_priv(soft_iface); bat_priv 1089 net/batman-adv/soft-interface.c vlan = batadv_softif_vlan_get(bat_priv, BATADV_NO_FLAGS); bat_priv 1091 net/batman-adv/soft-interface.c batadv_softif_destroy_vlan(bat_priv, vlan); bat_priv 1108 net/batman-adv/soft-interface.c struct batadv_priv *bat_priv = netdev_priv(soft_iface); bat_priv 1119 net/batman-adv/soft-interface.c vlan = batadv_softif_vlan_get(bat_priv, BATADV_NO_FLAGS); bat_priv 1121 net/batman-adv/soft-interface.c batadv_softif_destroy_vlan(bat_priv, vlan); bat_priv 26 net/batman-adv/soft-interface.h int batadv_softif_create_vlan(struct batadv_priv *bat_priv, unsigned short vid); bat_priv 28 net/batman-adv/soft-interface.h struct batadv_softif_vlan *batadv_softif_vlan_get(struct batadv_priv *bat_priv, bat_priv 98 net/batman-adv/sysfs.c batadv_kobj_to_vlan(struct batadv_priv *bat_priv, struct kobject *obj) bat_priv 103 net/batman-adv/sysfs.c hlist_for_each_entry_rcu(vlan_tmp, &bat_priv->softif_vlan_list, list) { bat_priv 142 net/batman-adv/sysfs.c struct batadv_priv *bat_priv = netdev_priv(net_dev); \ bat_priv 147 net/batman-adv/sysfs.c &bat_priv->_name, net_dev); \ bat_priv 149 net/batman-adv/sysfs.c batadv_netlink_notify_mesh(bat_priv); \ bat_priv 158 net/batman-adv/sysfs.c struct batadv_priv *bat_priv = batadv_kobj_to_batpriv(kobj); \ bat_priv 162 net/batman-adv/sysfs.c atomic_read(&bat_priv->_name) == 0 ? \ bat_priv 181 net/batman-adv/sysfs.c struct batadv_priv *bat_priv = netdev_priv(net_dev); \ bat_priv 187 net/batman-adv/sysfs.c &bat_priv->_var, net_dev, \ bat_priv 190 net/batman-adv/sysfs.c batadv_netlink_notify_mesh(bat_priv); \ bat_priv 199 net/batman-adv/sysfs.c struct batadv_priv *bat_priv = batadv_kobj_to_batpriv(kobj); \ bat_priv 202 net/batman-adv/sysfs.c return sprintf(buff, "%i\n", atomic_read(&bat_priv->_var)); \ bat_priv 219 net/batman-adv/sysfs.c struct batadv_priv *bat_priv = batadv_vlan_kobj_to_batpriv(kobj);\ bat_priv 220 net/batman-adv/sysfs.c struct batadv_softif_vlan *vlan = batadv_kobj_to_vlan(bat_priv, \ bat_priv 224 net/batman-adv/sysfs.c bat_priv->soft_iface); \ bat_priv 228 net/batman-adv/sysfs.c batadv_netlink_notify_vlan(bat_priv, vlan); \ bat_priv 230 net/batman-adv/sysfs.c batadv_netlink_notify_mesh(bat_priv); \ bat_priv 240 net/batman-adv/sysfs.c struct batadv_priv *bat_priv = batadv_vlan_kobj_to_batpriv(kobj);\ bat_priv 241 net/batman-adv/sysfs.c struct batadv_softif_vlan *vlan = batadv_kobj_to_vlan(bat_priv, \ bat_priv 266 net/batman-adv/sysfs.c struct batadv_priv *bat_priv; \ bat_priv 281 net/batman-adv/sysfs.c bat_priv = netdev_priv(hard_iface->soft_iface); \ bat_priv 282 net/batman-adv/sysfs.c batadv_netlink_notify_hardif(bat_priv, hard_iface); \ bat_priv 440 net/batman-adv/sysfs.c struct batadv_priv *bat_priv = batadv_kobj_to_batpriv(kobj); bat_priv 443 net/batman-adv/sysfs.c return sprintf(buff, "%s\n", bat_priv->algo_ops->name); bat_priv 448 net/batman-adv/sysfs.c struct batadv_priv *bat_priv = netdev_priv(net_dev); bat_priv 450 net/batman-adv/sysfs.c batadv_gw_reselect(bat_priv); bat_priv 456 net/batman-adv/sysfs.c struct batadv_priv *bat_priv = batadv_kobj_to_batpriv(kobj); bat_priv 464 net/batman-adv/sysfs.c if (!bat_priv->algo_ops->gw.get_best_gw_node || bat_priv 465 net/batman-adv/sysfs.c !bat_priv->algo_ops->gw.is_eligible) bat_priv 468 net/batman-adv/sysfs.c switch (atomic_read(&bat_priv->gw.mode)) { bat_priv 491 net/batman-adv/sysfs.c struct batadv_priv *bat_priv = netdev_priv(net_dev); bat_priv 500 net/batman-adv/sysfs.c if (!bat_priv->algo_ops->gw.get_best_gw_node || bat_priv 501 net/batman-adv/sysfs.c !bat_priv->algo_ops->gw.is_eligible) bat_priv 526 net/batman-adv/sysfs.c if (atomic_read(&bat_priv->gw.mode) == gw_mode_tmp) bat_priv 529 net/batman-adv/sysfs.c switch (atomic_read(&bat_priv->gw.mode)) { bat_priv 553 net/batman-adv/sysfs.c batadv_gw_reselect(bat_priv); bat_priv 557 net/batman-adv/sysfs.c batadv_gw_check_client_stop(bat_priv); bat_priv 558 net/batman-adv/sysfs.c atomic_set(&bat_priv->gw.mode, (unsigned int)gw_mode_tmp); bat_priv 559 net/batman-adv/sysfs.c batadv_gw_tvlv_container_update(bat_priv); bat_priv 561 net/batman-adv/sysfs.c batadv_netlink_notify_mesh(bat_priv); bat_priv 569 net/batman-adv/sysfs.c struct batadv_priv *bat_priv = batadv_kobj_to_batpriv(kobj); bat_priv 576 net/batman-adv/sysfs.c if (!bat_priv->algo_ops->gw.get_best_gw_node || bat_priv 577 net/batman-adv/sysfs.c !bat_priv->algo_ops->gw.is_eligible) bat_priv 580 net/batman-adv/sysfs.c if (bat_priv->algo_ops->gw.show_sel_class) bat_priv 581 net/batman-adv/sysfs.c return bat_priv->algo_ops->gw.show_sel_class(bat_priv, buff); bat_priv 583 net/batman-adv/sysfs.c return sprintf(buff, "%i\n", atomic_read(&bat_priv->gw.sel_class)); bat_priv 590 net/batman-adv/sysfs.c struct batadv_priv *bat_priv = batadv_kobj_to_batpriv(kobj); bat_priv 598 net/batman-adv/sysfs.c if (!bat_priv->algo_ops->gw.get_best_gw_node || bat_priv 599 net/batman-adv/sysfs.c !bat_priv->algo_ops->gw.is_eligible) bat_priv 605 net/batman-adv/sysfs.c if (bat_priv->algo_ops->gw.store_sel_class) bat_priv 606 net/batman-adv/sysfs.c return bat_priv->algo_ops->gw.store_sel_class(bat_priv, buff, bat_priv 611 net/batman-adv/sysfs.c &bat_priv->gw.sel_class, bat_priv 612 net/batman-adv/sysfs.c bat_priv->soft_iface, NULL); bat_priv 614 net/batman-adv/sysfs.c batadv_netlink_notify_mesh(bat_priv); bat_priv 622 net/batman-adv/sysfs.c struct batadv_priv *bat_priv = batadv_kobj_to_batpriv(kobj); bat_priv 627 net/batman-adv/sysfs.c down = atomic_read(&bat_priv->gw.bandwidth_down); bat_priv 628 net/batman-adv/sysfs.c up = atomic_read(&bat_priv->gw.bandwidth_up); bat_priv 638 net/batman-adv/sysfs.c struct batadv_priv *bat_priv = batadv_kobj_to_batpriv(kobj); bat_priv 649 net/batman-adv/sysfs.c batadv_netlink_notify_mesh(bat_priv); bat_priv 666 net/batman-adv/sysfs.c struct batadv_priv *bat_priv = batadv_kobj_to_batpriv(kobj); bat_priv 669 net/batman-adv/sysfs.c return sprintf(buff, "%#.8x/%#.8x\n", bat_priv->isolation_mark, bat_priv 670 net/batman-adv/sysfs.c bat_priv->isolation_mark_mask); bat_priv 688 net/batman-adv/sysfs.c struct batadv_priv *bat_priv = netdev_priv(net_dev); bat_priv 714 net/batman-adv/sysfs.c bat_priv->isolation_mark_mask = mask; bat_priv 716 net/batman-adv/sysfs.c bat_priv->isolation_mark = mark & bat_priv->isolation_mark_mask; bat_priv 720 net/batman-adv/sysfs.c bat_priv->isolation_mark, bat_priv->isolation_mark_mask); bat_priv 722 net/batman-adv/sysfs.c batadv_netlink_notify_mesh(bat_priv); bat_priv 804 net/batman-adv/sysfs.c struct batadv_priv *bat_priv = netdev_priv(dev); bat_priv 808 net/batman-adv/sysfs.c bat_priv->mesh_obj = kobject_create_and_add(BATADV_SYSFS_IF_MESH_SUBDIR, bat_priv 810 net/batman-adv/sysfs.c if (!bat_priv->mesh_obj) { bat_priv 817 net/batman-adv/sysfs.c err = sysfs_create_file(bat_priv->mesh_obj, bat_priv 831 net/batman-adv/sysfs.c sysfs_remove_file(bat_priv->mesh_obj, &((*bat_attr)->attr)); bat_priv 833 net/batman-adv/sysfs.c kobject_uevent(bat_priv->mesh_obj, KOBJ_REMOVE); bat_priv 834 net/batman-adv/sysfs.c kobject_del(bat_priv->mesh_obj); bat_priv 835 net/batman-adv/sysfs.c kobject_put(bat_priv->mesh_obj); bat_priv 836 net/batman-adv/sysfs.c bat_priv->mesh_obj = NULL; bat_priv 847 net/batman-adv/sysfs.c struct batadv_priv *bat_priv = netdev_priv(dev); bat_priv 851 net/batman-adv/sysfs.c sysfs_remove_file(bat_priv->mesh_obj, &((*bat_attr)->attr)); bat_priv 853 net/batman-adv/sysfs.c kobject_uevent(bat_priv->mesh_obj, KOBJ_REMOVE); bat_priv 854 net/batman-adv/sysfs.c kobject_del(bat_priv->mesh_obj); bat_priv 855 net/batman-adv/sysfs.c kobject_put(bat_priv->mesh_obj); bat_priv 856 net/batman-adv/sysfs.c bat_priv->mesh_obj = NULL; bat_priv 870 net/batman-adv/sysfs.c struct batadv_priv *bat_priv = netdev_priv(dev); bat_priv 879 net/batman-adv/sysfs.c bat_priv->mesh_obj); bat_priv 889 net/batman-adv/sysfs.c vlan->kobj = bat_priv->mesh_obj; bat_priv 890 net/batman-adv/sysfs.c kobject_get(bat_priv->mesh_obj); bat_priv 910 net/batman-adv/sysfs.c if (vlan->kobj != bat_priv->mesh_obj) { bat_priv 925 net/batman-adv/sysfs.c void batadv_sysfs_del_vlan(struct batadv_priv *bat_priv, bat_priv 933 net/batman-adv/sysfs.c if (vlan->kobj != bat_priv->mesh_obj) { bat_priv 1136 net/batman-adv/sysfs.c struct batadv_priv *bat_priv; bat_priv 1168 net/batman-adv/sysfs.c bat_priv = netdev_priv(hard_iface->soft_iface); bat_priv 1169 net/batman-adv/sysfs.c batadv_netlink_notify_hardif(bat_priv, hard_iface); bat_priv 56 net/batman-adv/sysfs.h void batadv_sysfs_del_vlan(struct batadv_priv *bat_priv, bat_priv 86 net/batman-adv/sysfs.h static inline void batadv_sysfs_del_vlan(struct batadv_priv *bat_priv, bat_priv 214 net/batman-adv/tp_meter.c const u8 *dst, struct batadv_priv *bat_priv, bat_priv 232 net/batman-adv/tp_meter.c batadv_netlink_tpmeter_notify(bat_priv, dst, result, test_time, bat_priv 245 net/batman-adv/tp_meter.c struct batadv_priv *bat_priv, bat_priv 248 net/batman-adv/tp_meter.c batadv_tp_batctl_notify(reason, dst, bat_priv, 0, 0, cookie); bat_priv 261 net/batman-adv/tp_meter.c static struct batadv_tp_vars *batadv_tp_list_find(struct batadv_priv *bat_priv, bat_priv 267 net/batman-adv/tp_meter.c hlist_for_each_entry_rcu(pos, &bat_priv->tp_list, list) { bat_priv 300 net/batman-adv/tp_meter.c batadv_tp_list_find_session(struct batadv_priv *bat_priv, const u8 *dst, bat_priv 306 net/batman-adv/tp_meter.c hlist_for_each_entry_rcu(pos, &bat_priv->tp_list, list) { bat_priv 368 net/batman-adv/tp_meter.c static void batadv_tp_sender_cleanup(struct batadv_priv *bat_priv, bat_priv 373 net/batman-adv/tp_meter.c spin_lock_bh(&tp_vars->bat_priv->tp_list_lock); bat_priv 375 net/batman-adv/tp_meter.c spin_unlock_bh(&tp_vars->bat_priv->tp_list_lock); bat_priv 380 net/batman-adv/tp_meter.c atomic_dec(&tp_vars->bat_priv->tp_num); bat_priv 398 net/batman-adv/tp_meter.c static void batadv_tp_sender_end(struct batadv_priv *bat_priv, bat_priv 403 net/batman-adv/tp_meter.c batadv_dbg(BATADV_DBG_TP_METER, bat_priv, bat_priv 407 net/batman-adv/tp_meter.c batadv_dbg(BATADV_DBG_TP_METER, bat_priv, bat_priv 411 net/batman-adv/tp_meter.c batadv_dbg(BATADV_DBG_TP_METER, bat_priv, bat_priv 420 net/batman-adv/tp_meter.c bat_priv, bat_priv 485 net/batman-adv/tp_meter.c struct batadv_priv *bat_priv = tp_vars->bat_priv; bat_priv 508 net/batman-adv/tp_meter.c batadv_dbg(BATADV_DBG_TP_METER, bat_priv, bat_priv 623 net/batman-adv/tp_meter.c static void batadv_tp_recv_ack(struct batadv_priv *bat_priv, bat_priv 641 net/batman-adv/tp_meter.c tp_vars = batadv_tp_list_find_session(bat_priv, icmp->orig, bat_priv 654 net/batman-adv/tp_meter.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 658 net/batman-adv/tp_meter.c orig_node = batadv_orig_hash_find(bat_priv, icmp->orig); bat_priv 696 net/batman-adv/tp_meter.c batadv_dbg(BATADV_DBG_TP_METER, bat_priv, bat_priv 807 net/batman-adv/tp_meter.c struct batadv_priv *bat_priv = tp_vars->bat_priv; bat_priv 819 net/batman-adv/tp_meter.c orig_node = batadv_orig_hash_find(bat_priv, tp_vars->other_end); bat_priv 826 net/batman-adv/tp_meter.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 867 net/batman-adv/tp_meter.c batadv_dbg(BATADV_DBG_TP_METER, bat_priv, bat_priv 889 net/batman-adv/tp_meter.c batadv_tp_sender_end(bat_priv, tp_vars); bat_priv 890 net/batman-adv/tp_meter.c batadv_tp_sender_cleanup(bat_priv, tp_vars); bat_priv 905 net/batman-adv/tp_meter.c struct batadv_priv *bat_priv = tp_vars->bat_priv; bat_priv 916 net/batman-adv/tp_meter.c bat_priv, session_cookie); bat_priv 922 net/batman-adv/tp_meter.c batadv_tp_sender_cleanup(bat_priv, tp_vars); bat_priv 936 net/batman-adv/tp_meter.c void batadv_tp_start(struct batadv_priv *bat_priv, const u8 *dst, bat_priv 950 net/batman-adv/tp_meter.c spin_lock_bh(&bat_priv->tp_list_lock); bat_priv 951 net/batman-adv/tp_meter.c tp_vars = batadv_tp_list_find(bat_priv, dst); bat_priv 953 net/batman-adv/tp_meter.c spin_unlock_bh(&bat_priv->tp_list_lock); bat_priv 955 net/batman-adv/tp_meter.c batadv_dbg(BATADV_DBG_TP_METER, bat_priv, bat_priv 958 net/batman-adv/tp_meter.c dst, bat_priv, session_cookie); bat_priv 962 net/batman-adv/tp_meter.c if (!atomic_add_unless(&bat_priv->tp_num, 1, BATADV_TP_MAX_NUM)) { bat_priv 963 net/batman-adv/tp_meter.c spin_unlock_bh(&bat_priv->tp_list_lock); bat_priv 964 net/batman-adv/tp_meter.c batadv_dbg(BATADV_DBG_TP_METER, bat_priv, bat_priv 967 net/batman-adv/tp_meter.c bat_priv, session_cookie); bat_priv 973 net/batman-adv/tp_meter.c spin_unlock_bh(&bat_priv->tp_list_lock); bat_priv 974 net/batman-adv/tp_meter.c batadv_dbg(BATADV_DBG_TP_METER, bat_priv, bat_priv 978 net/batman-adv/tp_meter.c dst, bat_priv, session_cookie); bat_priv 1017 net/batman-adv/tp_meter.c tp_vars->bat_priv = bat_priv; bat_priv 1031 net/batman-adv/tp_meter.c hlist_add_head_rcu(&tp_vars->list, &bat_priv->tp_list); bat_priv 1032 net/batman-adv/tp_meter.c spin_unlock_bh(&bat_priv->tp_list_lock); bat_priv 1038 net/batman-adv/tp_meter.c batadv_dbg(BATADV_DBG_TP_METER, bat_priv, bat_priv 1060 net/batman-adv/tp_meter.c void batadv_tp_stop(struct batadv_priv *bat_priv, const u8 *dst, bat_priv 1066 net/batman-adv/tp_meter.c batadv_dbg(BATADV_DBG_TP_METER, bat_priv, bat_priv 1069 net/batman-adv/tp_meter.c orig_node = batadv_orig_hash_find(bat_priv, dst); bat_priv 1073 net/batman-adv/tp_meter.c tp_vars = batadv_tp_list_find(bat_priv, orig_node->orig); bat_priv 1075 net/batman-adv/tp_meter.c batadv_dbg(BATADV_DBG_TP_METER, bat_priv, bat_priv 1107 net/batman-adv/tp_meter.c struct batadv_priv *bat_priv; bat_priv 1109 net/batman-adv/tp_meter.c bat_priv = tp_vars->bat_priv; bat_priv 1119 net/batman-adv/tp_meter.c batadv_dbg(BATADV_DBG_TP_METER, bat_priv, bat_priv 1123 net/batman-adv/tp_meter.c spin_lock_bh(&tp_vars->bat_priv->tp_list_lock); bat_priv 1125 net/batman-adv/tp_meter.c spin_unlock_bh(&tp_vars->bat_priv->tp_list_lock); bat_priv 1130 net/batman-adv/tp_meter.c atomic_dec(&bat_priv->tp_num); bat_priv 1155 net/batman-adv/tp_meter.c static int batadv_tp_send_ack(struct batadv_priv *bat_priv, const u8 *dst, bat_priv 1165 net/batman-adv/tp_meter.c orig_node = batadv_orig_hash_find(bat_priv, dst); bat_priv 1171 net/batman-adv/tp_meter.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 1332 net/batman-adv/tp_meter.c batadv_tp_init_recv(struct batadv_priv *bat_priv, bat_priv 1337 net/batman-adv/tp_meter.c spin_lock_bh(&bat_priv->tp_list_lock); bat_priv 1338 net/batman-adv/tp_meter.c tp_vars = batadv_tp_list_find_session(bat_priv, icmp->orig, bat_priv 1343 net/batman-adv/tp_meter.c if (!atomic_add_unless(&bat_priv->tp_num, 1, BATADV_TP_MAX_NUM)) { bat_priv 1344 net/batman-adv/tp_meter.c batadv_dbg(BATADV_DBG_TP_METER, bat_priv, bat_priv 1357 net/batman-adv/tp_meter.c tp_vars->bat_priv = bat_priv; bat_priv 1364 net/batman-adv/tp_meter.c hlist_add_head_rcu(&tp_vars->list, &bat_priv->tp_list); bat_priv 1372 net/batman-adv/tp_meter.c spin_unlock_bh(&bat_priv->tp_list_lock); bat_priv 1384 net/batman-adv/tp_meter.c static void batadv_tp_recv_msg(struct batadv_priv *bat_priv, bat_priv 1399 net/batman-adv/tp_meter.c tp_vars = batadv_tp_init_recv(bat_priv, icmp); bat_priv 1401 net/batman-adv/tp_meter.c batadv_dbg(BATADV_DBG_TP_METER, bat_priv, bat_priv 1406 net/batman-adv/tp_meter.c tp_vars = batadv_tp_list_find_session(bat_priv, icmp->orig, bat_priv 1409 net/batman-adv/tp_meter.c batadv_dbg(BATADV_DBG_TP_METER, bat_priv, bat_priv 1417 net/batman-adv/tp_meter.c batadv_dbg(BATADV_DBG_TP_METER, bat_priv, bat_priv 1455 net/batman-adv/tp_meter.c batadv_tp_send_ack(bat_priv, icmp->orig, tp_vars->last_recv, bat_priv 1467 net/batman-adv/tp_meter.c void batadv_tp_meter_recv(struct batadv_priv *bat_priv, struct sk_buff *skb) bat_priv 1475 net/batman-adv/tp_meter.c batadv_tp_recv_msg(bat_priv, skb); bat_priv 1478 net/batman-adv/tp_meter.c batadv_tp_recv_ack(bat_priv, skb); bat_priv 1481 net/batman-adv/tp_meter.c batadv_dbg(BATADV_DBG_TP_METER, bat_priv, bat_priv 16 net/batman-adv/tp_meter.h void batadv_tp_start(struct batadv_priv *bat_priv, const u8 *dst, bat_priv 18 net/batman-adv/tp_meter.h void batadv_tp_stop(struct batadv_priv *bat_priv, const u8 *dst, bat_priv 20 net/batman-adv/tp_meter.h void batadv_tp_meter_recv(struct batadv_priv *bat_priv, struct sk_buff *skb); bat_priv 36 net/batman-adv/trace.h TP_PROTO(struct batadv_priv *bat_priv, bat_priv 39 net/batman-adv/trace.h TP_ARGS(bat_priv, vaf), bat_priv 42 net/batman-adv/trace.h __string(device, bat_priv->soft_iface->name) bat_priv 48 net/batman-adv/trace.h __assign_str(device, bat_priv->soft_iface->name); bat_priv 66 net/batman-adv/translation-table.c static void batadv_send_roam_adv(struct batadv_priv *bat_priv, u8 *client, bat_priv 72 net/batman-adv/translation-table.c static void batadv_tt_global_del(struct batadv_priv *bat_priv, bat_priv 172 net/batman-adv/translation-table.c batadv_tt_local_hash_find(struct batadv_priv *bat_priv, const u8 *addr, bat_priv 178 net/batman-adv/translation-table.c tt_common_entry = batadv_tt_hash_find(bat_priv->tt.local_hash, addr, bat_priv 197 net/batman-adv/translation-table.c batadv_tt_global_hash_find(struct batadv_priv *bat_priv, const u8 *addr, bat_priv 203 net/batman-adv/translation-table.c tt_common_entry = batadv_tt_hash_find(bat_priv->tt.global_hash, addr, bat_priv 306 net/batman-adv/translation-table.c int batadv_tt_global_hash_count(struct batadv_priv *bat_priv, bat_priv 312 net/batman-adv/translation-table.c tt_global_entry = batadv_tt_global_hash_find(bat_priv, addr, vid); bat_priv 329 net/batman-adv/translation-table.c static void batadv_tt_local_size_mod(struct batadv_priv *bat_priv, bat_priv 334 net/batman-adv/translation-table.c vlan = batadv_softif_vlan_get(bat_priv, vid); bat_priv 349 net/batman-adv/translation-table.c static void batadv_tt_local_size_inc(struct batadv_priv *bat_priv, bat_priv 352 net/batman-adv/translation-table.c batadv_tt_local_size_mod(bat_priv, vid, 1); bat_priv 361 net/batman-adv/translation-table.c static void batadv_tt_local_size_dec(struct batadv_priv *bat_priv, bat_priv 364 net/batman-adv/translation-table.c batadv_tt_local_size_mod(bat_priv, vid, -1); bat_priv 465 net/batman-adv/translation-table.c static void batadv_tt_local_event(struct batadv_priv *bat_priv, bat_priv 488 net/batman-adv/translation-table.c spin_lock_bh(&bat_priv->tt.changes_list_lock); bat_priv 489 net/batman-adv/translation-table.c list_for_each_entry_safe(entry, safe, &bat_priv->tt.changes_list, bat_priv 523 net/batman-adv/translation-table.c list_add_tail(&tt_change_node->list, &bat_priv->tt.changes_list); bat_priv 526 net/batman-adv/translation-table.c spin_unlock_bh(&bat_priv->tt.changes_list_lock); bat_priv 529 net/batman-adv/translation-table.c atomic_dec(&bat_priv->tt.local_changes); bat_priv 531 net/batman-adv/translation-table.c atomic_inc(&bat_priv->tt.local_changes); bat_priv 563 net/batman-adv/translation-table.c static int batadv_tt_local_table_transmit_size(struct batadv_priv *bat_priv) bat_priv 571 net/batman-adv/translation-table.c hlist_for_each_entry_rcu(vlan, &bat_priv->softif_vlan_list, list) { bat_priv 586 net/batman-adv/translation-table.c static int batadv_tt_local_init(struct batadv_priv *bat_priv) bat_priv 588 net/batman-adv/translation-table.c if (bat_priv->tt.local_hash) bat_priv 591 net/batman-adv/translation-table.c bat_priv->tt.local_hash = batadv_hash_new(1024); bat_priv 593 net/batman-adv/translation-table.c if (!bat_priv->tt.local_hash) bat_priv 596 net/batman-adv/translation-table.c batadv_hash_set_lock_class(bat_priv->tt.local_hash, bat_priv 602 net/batman-adv/translation-table.c static void batadv_tt_global_free(struct batadv_priv *bat_priv, bat_priv 609 net/batman-adv/translation-table.c batadv_dbg(BATADV_DBG_TT, bat_priv, bat_priv 614 net/batman-adv/translation-table.c tt_removed_node = batadv_hash_remove(bat_priv->tt.global_hash, bat_priv 644 net/batman-adv/translation-table.c struct batadv_priv *bat_priv = netdev_priv(soft_iface); bat_priv 665 net/batman-adv/translation-table.c tt_local = batadv_tt_local_hash_find(bat_priv, addr, vid); bat_priv 668 net/batman-adv/translation-table.c tt_global = batadv_tt_global_hash_find(bat_priv, addr, vid); bat_priv 673 net/batman-adv/translation-table.c batadv_dbg(BATADV_DBG_TT, bat_priv, bat_priv 686 net/batman-adv/translation-table.c batadv_dbg(BATADV_DBG_TT, bat_priv, bat_priv 701 net/batman-adv/translation-table.c table_size = batadv_tt_local_table_transmit_size(bat_priv); bat_priv 703 net/batman-adv/translation-table.c packet_size_max = atomic_read(&bat_priv->packet_size_max); bat_priv 716 net/batman-adv/translation-table.c vlan = batadv_softif_vlan_get(bat_priv, vid); bat_priv 726 net/batman-adv/translation-table.c batadv_dbg(BATADV_DBG_TT, bat_priv, bat_priv 729 net/batman-adv/translation-table.c (u8)atomic_read(&bat_priv->tt.vn)); bat_priv 753 net/batman-adv/translation-table.c hash_added = batadv_hash_add(bat_priv->tt.local_hash, batadv_compare_tt, bat_priv 764 net/batman-adv/translation-table.c batadv_tt_local_event(bat_priv, tt_local, BATADV_NO_FLAGS); bat_priv 775 net/batman-adv/translation-table.c batadv_send_roam_adv(bat_priv, tt_global->common.addr, bat_priv 781 net/batman-adv/translation-table.c batadv_tt_global_free(bat_priv, tt_global, bat_priv 807 net/batman-adv/translation-table.c match_mark = (mark & bat_priv->isolation_mark_mask); bat_priv 808 net/batman-adv/translation-table.c if (bat_priv->isolation_mark_mask && bat_priv 809 net/batman-adv/translation-table.c match_mark == bat_priv->isolation_mark) bat_priv 818 net/batman-adv/translation-table.c batadv_tt_local_event(bat_priv, tt_local, BATADV_NO_FLAGS); bat_priv 925 net/batman-adv/translation-table.c batadv_tt_prepare_tvlv_local_data(struct batadv_priv *bat_priv, bat_priv 939 net/batman-adv/translation-table.c spin_lock_bh(&bat_priv->softif_vlan_list_lock); bat_priv 940 net/batman-adv/translation-table.c hlist_for_each_entry_rcu(vlan, &bat_priv->softif_vlan_list, list) { bat_priv 966 net/batman-adv/translation-table.c (*tt_data)->ttvn = atomic_read(&bat_priv->tt.vn); bat_priv 970 net/batman-adv/translation-table.c hlist_for_each_entry_rcu(vlan, &bat_priv->softif_vlan_list, list) { bat_priv 985 net/batman-adv/translation-table.c spin_unlock_bh(&bat_priv->softif_vlan_list_lock); bat_priv 994 net/batman-adv/translation-table.c static void batadv_tt_tvlv_container_update(struct batadv_priv *bat_priv) bat_priv 1004 net/batman-adv/translation-table.c tt_diff_entries_num = atomic_read(&bat_priv->tt.local_changes); bat_priv 1010 net/batman-adv/translation-table.c if (tt_diff_len > bat_priv->soft_iface->mtu) bat_priv 1013 net/batman-adv/translation-table.c tvlv_len = batadv_tt_prepare_tvlv_local_data(bat_priv, &tt_data, bat_priv 1023 net/batman-adv/translation-table.c spin_lock_bh(&bat_priv->tt.changes_list_lock); bat_priv 1024 net/batman-adv/translation-table.c atomic_set(&bat_priv->tt.local_changes, 0); bat_priv 1026 net/batman-adv/translation-table.c list_for_each_entry_safe(entry, safe, &bat_priv->tt.changes_list, bat_priv 1037 net/batman-adv/translation-table.c spin_unlock_bh(&bat_priv->tt.changes_list_lock); bat_priv 1040 net/batman-adv/translation-table.c spin_lock_bh(&bat_priv->tt.last_changeset_lock); bat_priv 1041 net/batman-adv/translation-table.c kfree(bat_priv->tt.last_changeset); bat_priv 1042 net/batman-adv/translation-table.c bat_priv->tt.last_changeset_len = 0; bat_priv 1043 net/batman-adv/translation-table.c bat_priv->tt.last_changeset = NULL; bat_priv 1050 net/batman-adv/translation-table.c bat_priv->tt.last_changeset = kzalloc(tt_diff_len, GFP_ATOMIC); bat_priv 1051 net/batman-adv/translation-table.c if (bat_priv->tt.last_changeset) { bat_priv 1052 net/batman-adv/translation-table.c memcpy(bat_priv->tt.last_changeset, bat_priv 1054 net/batman-adv/translation-table.c bat_priv->tt.last_changeset_len = tt_diff_len; bat_priv 1057 net/batman-adv/translation-table.c spin_unlock_bh(&bat_priv->tt.last_changeset_lock); bat_priv 1060 net/batman-adv/translation-table.c batadv_tvlv_container_register(bat_priv, BATADV_TVLV_TT, 1, tt_data, bat_priv 1077 net/batman-adv/translation-table.c struct batadv_priv *bat_priv = netdev_priv(net_dev); bat_priv 1078 net/batman-adv/translation-table.c struct batadv_hashtable *hash = bat_priv->tt.local_hash; bat_priv 1096 net/batman-adv/translation-table.c net_dev->name, (u8)atomic_read(&bat_priv->tt.vn)); bat_priv 1156 net/batman-adv/translation-table.c struct batadv_priv *bat_priv, bat_priv 1168 net/batman-adv/translation-table.c vlan = batadv_softif_vlan_get(bat_priv, common->vid); bat_priv 1217 net/batman-adv/translation-table.c struct batadv_priv *bat_priv, bat_priv 1231 net/batman-adv/translation-table.c if (batadv_tt_local_dump_entry(msg, portid, cb, bat_priv, bat_priv 1255 net/batman-adv/translation-table.c struct batadv_priv *bat_priv; bat_priv 1274 net/batman-adv/translation-table.c bat_priv = netdev_priv(soft_iface); bat_priv 1276 net/batman-adv/translation-table.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 1282 net/batman-adv/translation-table.c hash = bat_priv->tt.local_hash; bat_priv 1285 net/batman-adv/translation-table.c if (batadv_tt_local_dump_bucket(msg, portid, cb, bat_priv, bat_priv 1307 net/batman-adv/translation-table.c batadv_tt_local_set_pending(struct batadv_priv *bat_priv, bat_priv 1311 net/batman-adv/translation-table.c batadv_tt_local_event(bat_priv, tt_local_entry, flags); bat_priv 1319 net/batman-adv/translation-table.c batadv_dbg(BATADV_DBG_TT, bat_priv, bat_priv 1335 net/batman-adv/translation-table.c u16 batadv_tt_local_remove(struct batadv_priv *bat_priv, const u8 *addr, bat_priv 1344 net/batman-adv/translation-table.c tt_local_entry = batadv_tt_local_hash_find(bat_priv, addr, vid); bat_priv 1362 net/batman-adv/translation-table.c batadv_tt_local_set_pending(bat_priv, tt_local_entry, flags, bat_priv 1369 net/batman-adv/translation-table.c batadv_tt_local_event(bat_priv, tt_local_entry, BATADV_TT_CLIENT_DEL); bat_priv 1371 net/batman-adv/translation-table.c tt_removed_node = batadv_hash_remove(bat_priv->tt.local_hash, bat_priv 1398 net/batman-adv/translation-table.c static void batadv_tt_local_purge_list(struct batadv_priv *bat_priv, bat_priv 1421 net/batman-adv/translation-table.c batadv_tt_local_set_pending(bat_priv, tt_local_entry, bat_priv 1432 net/batman-adv/translation-table.c static void batadv_tt_local_purge(struct batadv_priv *bat_priv, bat_priv 1435 net/batman-adv/translation-table.c struct batadv_hashtable *hash = bat_priv->tt.local_hash; bat_priv 1445 net/batman-adv/translation-table.c batadv_tt_local_purge_list(bat_priv, head, timeout); bat_priv 1450 net/batman-adv/translation-table.c static void batadv_tt_local_table_free(struct batadv_priv *bat_priv) bat_priv 1460 net/batman-adv/translation-table.c if (!bat_priv->tt.local_hash) bat_priv 1463 net/batman-adv/translation-table.c hash = bat_priv->tt.local_hash; bat_priv 1484 net/batman-adv/translation-table.c bat_priv->tt.local_hash = NULL; bat_priv 1487 net/batman-adv/translation-table.c static int batadv_tt_global_init(struct batadv_priv *bat_priv) bat_priv 1489 net/batman-adv/translation-table.c if (bat_priv->tt.global_hash) bat_priv 1492 net/batman-adv/translation-table.c bat_priv->tt.global_hash = batadv_hash_new(1024); bat_priv 1494 net/batman-adv/translation-table.c if (!bat_priv->tt.global_hash) bat_priv 1497 net/batman-adv/translation-table.c batadv_hash_set_lock_class(bat_priv->tt.global_hash, bat_priv 1503 net/batman-adv/translation-table.c static void batadv_tt_changes_list_free(struct batadv_priv *bat_priv) bat_priv 1507 net/batman-adv/translation-table.c spin_lock_bh(&bat_priv->tt.changes_list_lock); bat_priv 1509 net/batman-adv/translation-table.c list_for_each_entry_safe(entry, safe, &bat_priv->tt.changes_list, bat_priv 1515 net/batman-adv/translation-table.c atomic_set(&bat_priv->tt.local_changes, 0); bat_priv 1516 net/batman-adv/translation-table.c spin_unlock_bh(&bat_priv->tt.changes_list_lock); bat_priv 1681 net/batman-adv/translation-table.c static bool batadv_tt_global_add(struct batadv_priv *bat_priv, bat_priv 1694 net/batman-adv/translation-table.c if (batadv_bla_is_backbone_gw_orig(bat_priv, orig_node->orig, vid)) bat_priv 1697 net/batman-adv/translation-table.c tt_global_entry = batadv_tt_global_hash_find(bat_priv, tt_addr, vid); bat_priv 1698 net/batman-adv/translation-table.c tt_local_entry = batadv_tt_local_hash_find(bat_priv, tt_addr, vid); bat_priv 1736 net/batman-adv/translation-table.c hash_added = batadv_hash_add(bat_priv->tt.global_hash, bat_priv 1804 net/batman-adv/translation-table.c batadv_dbg(BATADV_DBG_TT, bat_priv, bat_priv 1818 net/batman-adv/translation-table.c local_flags = batadv_tt_local_remove(bat_priv, tt_addr, vid, bat_priv 1846 net/batman-adv/translation-table.c batadv_transtable_best_orig(struct batadv_priv *bat_priv, bat_priv 1850 net/batman-adv/translation-table.c struct batadv_algo_ops *bao = bat_priv->algo_ops; bat_priv 1893 net/batman-adv/translation-table.c batadv_tt_global_print_entry(struct batadv_priv *bat_priv, bat_priv 1907 net/batman-adv/translation-table.c best_entry = batadv_transtable_best_orig(bat_priv, tt_global_entry); bat_priv 1977 net/batman-adv/translation-table.c struct batadv_priv *bat_priv = netdev_priv(net_dev); bat_priv 1978 net/batman-adv/translation-table.c struct batadv_hashtable *hash = bat_priv->tt.global_hash; bat_priv 2004 net/batman-adv/translation-table.c batadv_tt_global_print_entry(bat_priv, tt_global, seq); bat_priv 2091 net/batman-adv/translation-table.c struct batadv_priv *bat_priv, bat_priv 2101 net/batman-adv/translation-table.c best_entry = batadv_transtable_best_orig(bat_priv, global); bat_priv 2135 net/batman-adv/translation-table.c struct batadv_priv *bat_priv, bat_priv 2146 net/batman-adv/translation-table.c if (batadv_tt_global_dump_entry(msg, portid, seq, bat_priv, bat_priv 2171 net/batman-adv/translation-table.c struct batadv_priv *bat_priv; bat_priv 2192 net/batman-adv/translation-table.c bat_priv = netdev_priv(soft_iface); bat_priv 2194 net/batman-adv/translation-table.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 2200 net/batman-adv/translation-table.c hash = bat_priv->tt.global_hash; bat_priv 2206 net/batman-adv/translation-table.c cb->nlh->nlmsg_seq, bat_priv, bat_priv 2281 net/batman-adv/translation-table.c batadv_tt_global_del_orig_node(struct batadv_priv *bat_priv, bat_priv 2296 net/batman-adv/translation-table.c batadv_dbg(BATADV_DBG_TT, bat_priv, bat_priv 2313 net/batman-adv/translation-table.c batadv_tt_global_del_roaming(struct batadv_priv *bat_priv, bat_priv 2344 net/batman-adv/translation-table.c batadv_tt_global_del_orig_node(bat_priv, tt_global_entry, bat_priv 2359 net/batman-adv/translation-table.c static void batadv_tt_global_del(struct batadv_priv *bat_priv, bat_priv 2367 net/batman-adv/translation-table.c tt_global_entry = batadv_tt_global_hash_find(bat_priv, addr, vid); bat_priv 2372 net/batman-adv/translation-table.c batadv_tt_global_del_orig_node(bat_priv, tt_global_entry, bat_priv 2376 net/batman-adv/translation-table.c batadv_tt_global_free(bat_priv, tt_global_entry, bat_priv 2395 net/batman-adv/translation-table.c local_entry = batadv_tt_local_hash_find(bat_priv, bat_priv 2401 net/batman-adv/translation-table.c batadv_tt_global_free(bat_priv, tt_global_entry, message); bat_priv 2404 net/batman-adv/translation-table.c batadv_tt_global_del_roaming(bat_priv, tt_global_entry, bat_priv 2424 net/batman-adv/translation-table.c void batadv_tt_global_del_orig(struct batadv_priv *bat_priv, bat_priv 2432 net/batman-adv/translation-table.c struct batadv_hashtable *hash = bat_priv->tt.global_hash; bat_priv 2456 net/batman-adv/translation-table.c batadv_tt_global_del_orig_node(bat_priv, tt_global, bat_priv 2461 net/batman-adv/translation-table.c batadv_dbg(BATADV_DBG_TT, bat_priv, bat_priv 2496 net/batman-adv/translation-table.c static void batadv_tt_global_purge(struct batadv_priv *bat_priv) bat_priv 2498 net/batman-adv/translation-table.c struct batadv_hashtable *hash = bat_priv->tt.global_hash; bat_priv 2521 net/batman-adv/translation-table.c batadv_dbg(BATADV_DBG_TT, bat_priv, bat_priv 2535 net/batman-adv/translation-table.c static void batadv_tt_global_table_free(struct batadv_priv *bat_priv) bat_priv 2545 net/batman-adv/translation-table.c if (!bat_priv->tt.global_hash) bat_priv 2548 net/batman-adv/translation-table.c hash = bat_priv->tt.global_hash; bat_priv 2568 net/batman-adv/translation-table.c bat_priv->tt.global_hash = NULL; bat_priv 2601 net/batman-adv/translation-table.c struct batadv_orig_node *batadv_transtable_search(struct batadv_priv *bat_priv, bat_priv 2611 net/batman-adv/translation-table.c if (src && batadv_vlan_ap_isola_get(bat_priv, vid)) { bat_priv 2612 net/batman-adv/translation-table.c tt_local_entry = batadv_tt_local_hash_find(bat_priv, src, vid); bat_priv 2618 net/batman-adv/translation-table.c tt_global_entry = batadv_tt_global_hash_find(bat_priv, addr, vid); bat_priv 2630 net/batman-adv/translation-table.c best_entry = batadv_transtable_best_orig(bat_priv, tt_global_entry); bat_priv 2671 net/batman-adv/translation-table.c static u32 batadv_tt_global_crc(struct batadv_priv *bat_priv, bat_priv 2675 net/batman-adv/translation-table.c struct batadv_hashtable *hash = bat_priv->tt.global_hash; bat_priv 2752 net/batman-adv/translation-table.c static u32 batadv_tt_local_crc(struct batadv_priv *bat_priv, bat_priv 2755 net/batman-adv/translation-table.c struct batadv_hashtable *hash = bat_priv->tt.local_hash; bat_priv 2822 net/batman-adv/translation-table.c static void batadv_tt_req_list_free(struct batadv_priv *bat_priv) bat_priv 2827 net/batman-adv/translation-table.c spin_lock_bh(&bat_priv->tt.req_list_lock); bat_priv 2829 net/batman-adv/translation-table.c hlist_for_each_entry_safe(node, safe, &bat_priv->tt.req_list, list) { bat_priv 2834 net/batman-adv/translation-table.c spin_unlock_bh(&bat_priv->tt.req_list_lock); bat_priv 2837 net/batman-adv/translation-table.c static void batadv_tt_save_orig_buffer(struct batadv_priv *bat_priv, bat_priv 2858 net/batman-adv/translation-table.c static void batadv_tt_req_purge(struct batadv_priv *bat_priv) bat_priv 2863 net/batman-adv/translation-table.c spin_lock_bh(&bat_priv->tt.req_list_lock); bat_priv 2864 net/batman-adv/translation-table.c hlist_for_each_entry_safe(node, safe, &bat_priv->tt.req_list, list) { bat_priv 2871 net/batman-adv/translation-table.c spin_unlock_bh(&bat_priv->tt.req_list_lock); bat_priv 2883 net/batman-adv/translation-table.c batadv_tt_req_node_new(struct batadv_priv *bat_priv, bat_priv 2888 net/batman-adv/translation-table.c spin_lock_bh(&bat_priv->tt.req_list_lock); bat_priv 2889 net/batman-adv/translation-table.c hlist_for_each_entry(tt_req_node_tmp, &bat_priv->tt.req_list, list) { bat_priv 2905 net/batman-adv/translation-table.c hlist_add_head(&tt_req_node->list, &bat_priv->tt.req_list); bat_priv 2907 net/batman-adv/translation-table.c spin_unlock_bh(&bat_priv->tt.req_list_lock); bat_priv 2982 net/batman-adv/translation-table.c static void batadv_tt_tvlv_generate(struct batadv_priv *bat_priv, bat_priv 3055 net/batman-adv/translation-table.c if (batadv_bla_is_backbone_gw_orig(orig_node->bat_priv, bat_priv 3091 net/batman-adv/translation-table.c static void batadv_tt_local_update_crc(struct batadv_priv *bat_priv) bat_priv 3097 net/batman-adv/translation-table.c hlist_for_each_entry_rcu(vlan, &bat_priv->softif_vlan_list, list) { bat_priv 3098 net/batman-adv/translation-table.c vlan->tt.crc = batadv_tt_local_crc(bat_priv, vlan->vid); bat_priv 3108 net/batman-adv/translation-table.c static void batadv_tt_global_update_crc(struct batadv_priv *bat_priv, bat_priv 3120 net/batman-adv/translation-table.c if (batadv_bla_is_backbone_gw_orig(bat_priv, orig_node->orig, bat_priv 3124 net/batman-adv/translation-table.c crc = batadv_tt_global_crc(bat_priv, orig_node, vlan->vid); bat_priv 3142 net/batman-adv/translation-table.c static bool batadv_send_tt_request(struct batadv_priv *bat_priv, bat_priv 3155 net/batman-adv/translation-table.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 3162 net/batman-adv/translation-table.c tt_req_node = batadv_tt_req_node_new(bat_priv, dst_orig_node); bat_priv 3190 net/batman-adv/translation-table.c batadv_dbg(BATADV_DBG_TT, bat_priv, "Sending TT_REQUEST to %pM [%c]\n", bat_priv 3193 net/batman-adv/translation-table.c batadv_inc_counter(bat_priv, BATADV_CNT_TT_REQUEST_TX); bat_priv 3194 net/batman-adv/translation-table.c batadv_tvlv_unicast_send(bat_priv, primary_if->net_dev->dev_addr, bat_priv 3204 net/batman-adv/translation-table.c spin_lock_bh(&bat_priv->tt.req_list_lock); bat_priv 3209 net/batman-adv/translation-table.c spin_unlock_bh(&bat_priv->tt.req_list_lock); bat_priv 3229 net/batman-adv/translation-table.c static bool batadv_send_other_tt_response(struct batadv_priv *bat_priv, bat_priv 3243 net/batman-adv/translation-table.c batadv_dbg(BATADV_DBG_TT, bat_priv, bat_priv 3249 net/batman-adv/translation-table.c req_dst_orig_node = batadv_orig_hash_find(bat_priv, req_dst); bat_priv 3253 net/batman-adv/translation-table.c res_dst_orig_node = batadv_orig_hash_find(bat_priv, req_src); bat_priv 3305 net/batman-adv/translation-table.c batadv_tt_tvlv_generate(bat_priv, bat_priv->tt.global_hash, bat_priv 3313 net/batman-adv/translation-table.c if (tt_len > atomic_read(&bat_priv->packet_size_max)) { bat_priv 3314 net/batman-adv/translation-table.c net_ratelimited_function(batadv_info, bat_priv->soft_iface, bat_priv 3326 net/batman-adv/translation-table.c batadv_dbg(BATADV_DBG_TT, bat_priv, bat_priv 3331 net/batman-adv/translation-table.c batadv_inc_counter(bat_priv, BATADV_CNT_TT_RESPONSE_TX); bat_priv 3333 net/batman-adv/translation-table.c batadv_tvlv_unicast_send(bat_priv, req_dst_orig_node->orig, bat_priv 3361 net/batman-adv/translation-table.c static bool batadv_send_my_tt_response(struct batadv_priv *bat_priv, bat_priv 3374 net/batman-adv/translation-table.c batadv_dbg(BATADV_DBG_TT, bat_priv, bat_priv 3379 net/batman-adv/translation-table.c spin_lock_bh(&bat_priv->tt.commit_lock); bat_priv 3381 net/batman-adv/translation-table.c my_ttvn = (u8)atomic_read(&bat_priv->tt.vn); bat_priv 3384 net/batman-adv/translation-table.c orig_node = batadv_orig_hash_find(bat_priv, req_src); bat_priv 3388 net/batman-adv/translation-table.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 3396 net/batman-adv/translation-table.c !bat_priv->tt.last_changeset) bat_priv 3405 net/batman-adv/translation-table.c spin_lock_bh(&bat_priv->tt.last_changeset_lock); bat_priv 3407 net/batman-adv/translation-table.c tt_len = bat_priv->tt.last_changeset_len; bat_priv 3408 net/batman-adv/translation-table.c tvlv_len = batadv_tt_prepare_tvlv_local_data(bat_priv, bat_priv 3416 net/batman-adv/translation-table.c memcpy(tt_change, bat_priv->tt.last_changeset, bat_priv 3417 net/batman-adv/translation-table.c bat_priv->tt.last_changeset_len); bat_priv 3418 net/batman-adv/translation-table.c spin_unlock_bh(&bat_priv->tt.last_changeset_lock); bat_priv 3420 net/batman-adv/translation-table.c req_ttvn = (u8)atomic_read(&bat_priv->tt.vn); bat_priv 3426 net/batman-adv/translation-table.c tvlv_len = batadv_tt_prepare_tvlv_local_data(bat_priv, bat_priv 3434 net/batman-adv/translation-table.c batadv_tt_tvlv_generate(bat_priv, bat_priv->tt.local_hash, bat_priv 3445 net/batman-adv/translation-table.c batadv_dbg(BATADV_DBG_TT, bat_priv, bat_priv 3449 net/batman-adv/translation-table.c batadv_inc_counter(bat_priv, BATADV_CNT_TT_RESPONSE_TX); bat_priv 3451 net/batman-adv/translation-table.c batadv_tvlv_unicast_send(bat_priv, primary_if->net_dev->dev_addr, bat_priv 3458 net/batman-adv/translation-table.c spin_unlock_bh(&bat_priv->tt.last_changeset_lock); bat_priv 3460 net/batman-adv/translation-table.c spin_unlock_bh(&bat_priv->tt.commit_lock); bat_priv 3479 net/batman-adv/translation-table.c static bool batadv_send_tt_response(struct batadv_priv *bat_priv, bat_priv 3483 net/batman-adv/translation-table.c if (batadv_is_my_mac(bat_priv, req_dst)) bat_priv 3484 net/batman-adv/translation-table.c return batadv_send_my_tt_response(bat_priv, tt_data, req_src); bat_priv 3485 net/batman-adv/translation-table.c return batadv_send_other_tt_response(bat_priv, tt_data, req_src, bat_priv 3489 net/batman-adv/translation-table.c static void _batadv_tt_update_changes(struct batadv_priv *bat_priv, bat_priv 3500 net/batman-adv/translation-table.c batadv_tt_global_del(bat_priv, orig_node, bat_priv 3506 net/batman-adv/translation-table.c if (!batadv_tt_global_add(bat_priv, orig_node, bat_priv 3522 net/batman-adv/translation-table.c static void batadv_tt_fill_gtable(struct batadv_priv *bat_priv, bat_priv 3529 net/batman-adv/translation-table.c orig_node = batadv_orig_hash_find(bat_priv, resp_src); bat_priv 3534 net/batman-adv/translation-table.c batadv_tt_global_del_orig(bat_priv, orig_node, -1, bat_priv 3537 net/batman-adv/translation-table.c _batadv_tt_update_changes(bat_priv, orig_node, tt_change, num_entries, bat_priv 3553 net/batman-adv/translation-table.c static void batadv_tt_update_changes(struct batadv_priv *bat_priv, bat_priv 3558 net/batman-adv/translation-table.c _batadv_tt_update_changes(bat_priv, orig_node, tt_change, bat_priv 3561 net/batman-adv/translation-table.c batadv_tt_save_orig_buffer(bat_priv, orig_node, tt_change, bat_priv 3574 net/batman-adv/translation-table.c bool batadv_is_my_client(struct batadv_priv *bat_priv, const u8 *addr, bat_priv 3580 net/batman-adv/translation-table.c tt_local_entry = batadv_tt_local_hash_find(bat_priv, addr, vid); bat_priv 3603 net/batman-adv/translation-table.c static void batadv_handle_tt_response(struct batadv_priv *bat_priv, bat_priv 3614 net/batman-adv/translation-table.c batadv_dbg(BATADV_DBG_TT, bat_priv, bat_priv 3619 net/batman-adv/translation-table.c orig_node = batadv_orig_hash_find(bat_priv, resp_src); bat_priv 3632 net/batman-adv/translation-table.c batadv_tt_fill_gtable(bat_priv, tt_change, tt_data->ttvn, bat_priv 3635 net/batman-adv/translation-table.c batadv_tt_update_changes(bat_priv, orig_node, num_entries, bat_priv 3640 net/batman-adv/translation-table.c batadv_tt_global_update_crc(bat_priv, orig_node); bat_priv 3645 net/batman-adv/translation-table.c spin_lock_bh(&bat_priv->tt.req_list_lock); bat_priv 3646 net/batman-adv/translation-table.c hlist_for_each_entry_safe(node, safe, &bat_priv->tt.req_list, list) { bat_priv 3653 net/batman-adv/translation-table.c spin_unlock_bh(&bat_priv->tt.req_list_lock); bat_priv 3659 net/batman-adv/translation-table.c static void batadv_tt_roam_list_free(struct batadv_priv *bat_priv) bat_priv 3663 net/batman-adv/translation-table.c spin_lock_bh(&bat_priv->tt.roam_list_lock); bat_priv 3665 net/batman-adv/translation-table.c list_for_each_entry_safe(node, safe, &bat_priv->tt.roam_list, list) { bat_priv 3670 net/batman-adv/translation-table.c spin_unlock_bh(&bat_priv->tt.roam_list_lock); bat_priv 3673 net/batman-adv/translation-table.c static void batadv_tt_roam_purge(struct batadv_priv *bat_priv) bat_priv 3677 net/batman-adv/translation-table.c spin_lock_bh(&bat_priv->tt.roam_list_lock); bat_priv 3678 net/batman-adv/translation-table.c list_for_each_entry_safe(node, safe, &bat_priv->tt.roam_list, list) { bat_priv 3686 net/batman-adv/translation-table.c spin_unlock_bh(&bat_priv->tt.roam_list_lock); bat_priv 3700 net/batman-adv/translation-table.c static bool batadv_tt_check_roam_count(struct batadv_priv *bat_priv, u8 *client) bat_priv 3705 net/batman-adv/translation-table.c spin_lock_bh(&bat_priv->tt.roam_list_lock); bat_priv 3709 net/batman-adv/translation-table.c list_for_each_entry(tt_roam_node, &bat_priv->tt.roam_list, list) { bat_priv 3735 net/batman-adv/translation-table.c list_add(&tt_roam_node->list, &bat_priv->tt.roam_list); bat_priv 3740 net/batman-adv/translation-table.c spin_unlock_bh(&bat_priv->tt.roam_list_lock); bat_priv 3756 net/batman-adv/translation-table.c static void batadv_send_roam_adv(struct batadv_priv *bat_priv, u8 *client, bat_priv 3763 net/batman-adv/translation-table.c primary_if = batadv_primary_if_get_selected(bat_priv); bat_priv 3770 net/batman-adv/translation-table.c if (!batadv_tt_check_roam_count(bat_priv, client)) bat_priv 3773 net/batman-adv/translation-table.c batadv_dbg(BATADV_DBG_TT, bat_priv, bat_priv 3777 net/batman-adv/translation-table.c batadv_inc_counter(bat_priv, BATADV_CNT_TT_ROAM_ADV_TX); bat_priv 3782 net/batman-adv/translation-table.c batadv_tvlv_unicast_send(bat_priv, primary_if->net_dev->dev_addr, bat_priv 3795 net/batman-adv/translation-table.c struct batadv_priv *bat_priv; bat_priv 3799 net/batman-adv/translation-table.c bat_priv = container_of(priv_tt, struct batadv_priv, tt); bat_priv 3801 net/batman-adv/translation-table.c batadv_tt_local_purge(bat_priv, BATADV_TT_LOCAL_TIMEOUT); bat_priv 3802 net/batman-adv/translation-table.c batadv_tt_global_purge(bat_priv); bat_priv 3803 net/batman-adv/translation-table.c batadv_tt_req_purge(bat_priv); bat_priv 3804 net/batman-adv/translation-table.c batadv_tt_roam_purge(bat_priv); bat_priv 3806 net/batman-adv/translation-table.c queue_delayed_work(batadv_event_workqueue, &bat_priv->tt.work, bat_priv 3814 net/batman-adv/translation-table.c void batadv_tt_free(struct batadv_priv *bat_priv) bat_priv 3816 net/batman-adv/translation-table.c batadv_tvlv_handler_unregister(bat_priv, BATADV_TVLV_ROAM, 1); bat_priv 3818 net/batman-adv/translation-table.c batadv_tvlv_container_unregister(bat_priv, BATADV_TVLV_TT, 1); bat_priv 3819 net/batman-adv/translation-table.c batadv_tvlv_handler_unregister(bat_priv, BATADV_TVLV_TT, 1); bat_priv 3821 net/batman-adv/translation-table.c cancel_delayed_work_sync(&bat_priv->tt.work); bat_priv 3823 net/batman-adv/translation-table.c batadv_tt_local_table_free(bat_priv); bat_priv 3824 net/batman-adv/translation-table.c batadv_tt_global_table_free(bat_priv); bat_priv 3825 net/batman-adv/translation-table.c batadv_tt_req_list_free(bat_priv); bat_priv 3826 net/batman-adv/translation-table.c batadv_tt_changes_list_free(bat_priv); bat_priv 3827 net/batman-adv/translation-table.c batadv_tt_roam_list_free(bat_priv); bat_priv 3829 net/batman-adv/translation-table.c kfree(bat_priv->tt.last_changeset); bat_priv 3840 net/batman-adv/translation-table.c static void batadv_tt_local_set_flags(struct batadv_priv *bat_priv, u16 flags, bat_priv 3843 net/batman-adv/translation-table.c struct batadv_hashtable *hash = bat_priv->tt.local_hash; bat_priv 3870 net/batman-adv/translation-table.c batadv_tt_local_size_inc(bat_priv, bat_priv 3878 net/batman-adv/translation-table.c static void batadv_tt_local_purge_pending_clients(struct batadv_priv *bat_priv) bat_priv 3880 net/batman-adv/translation-table.c struct batadv_hashtable *hash = bat_priv->tt.local_hash; bat_priv 3901 net/batman-adv/translation-table.c batadv_dbg(BATADV_DBG_TT, bat_priv, bat_priv 3906 net/batman-adv/translation-table.c batadv_tt_local_size_dec(bat_priv, tt_common->vid); bat_priv 3925 net/batman-adv/translation-table.c static void batadv_tt_local_commit_changes_nolock(struct batadv_priv *bat_priv) bat_priv 3927 net/batman-adv/translation-table.c lockdep_assert_held(&bat_priv->tt.commit_lock); bat_priv 3929 net/batman-adv/translation-table.c if (atomic_read(&bat_priv->tt.local_changes) < 1) { bat_priv 3930 net/batman-adv/translation-table.c if (!batadv_atomic_dec_not_zero(&bat_priv->tt.ogm_append_cnt)) bat_priv 3931 net/batman-adv/translation-table.c batadv_tt_tvlv_container_update(bat_priv); bat_priv 3935 net/batman-adv/translation-table.c batadv_tt_local_set_flags(bat_priv, BATADV_TT_CLIENT_NEW, false, true); bat_priv 3937 net/batman-adv/translation-table.c batadv_tt_local_purge_pending_clients(bat_priv); bat_priv 3938 net/batman-adv/translation-table.c batadv_tt_local_update_crc(bat_priv); bat_priv 3941 net/batman-adv/translation-table.c atomic_inc(&bat_priv->tt.vn); bat_priv 3942 net/batman-adv/translation-table.c batadv_dbg(BATADV_DBG_TT, bat_priv, bat_priv 3944 net/batman-adv/translation-table.c (u8)atomic_read(&bat_priv->tt.vn)); bat_priv 3947 net/batman-adv/translation-table.c atomic_set(&bat_priv->tt.ogm_append_cnt, BATADV_TT_OGM_APPEND_MAX); bat_priv 3948 net/batman-adv/translation-table.c batadv_tt_tvlv_container_update(bat_priv); bat_priv 3956 net/batman-adv/translation-table.c void batadv_tt_local_commit_changes(struct batadv_priv *bat_priv) bat_priv 3958 net/batman-adv/translation-table.c spin_lock_bh(&bat_priv->tt.commit_lock); bat_priv 3959 net/batman-adv/translation-table.c batadv_tt_local_commit_changes_nolock(bat_priv); bat_priv 3960 net/batman-adv/translation-table.c spin_unlock_bh(&bat_priv->tt.commit_lock); bat_priv 3972 net/batman-adv/translation-table.c bool batadv_is_ap_isolated(struct batadv_priv *bat_priv, u8 *src, u8 *dst, bat_priv 3980 net/batman-adv/translation-table.c vlan = batadv_softif_vlan_get(bat_priv, vid); bat_priv 3987 net/batman-adv/translation-table.c tt_local_entry = batadv_tt_local_hash_find(bat_priv, dst, vid); bat_priv 3991 net/batman-adv/translation-table.c tt_global_entry = batadv_tt_global_hash_find(bat_priv, src, vid); bat_priv 4017 net/batman-adv/translation-table.c static void batadv_tt_update_orig(struct batadv_priv *bat_priv, bat_priv 4048 net/batman-adv/translation-table.c batadv_tt_update_changes(bat_priv, orig_node, tt_num_changes, bat_priv 4055 net/batman-adv/translation-table.c batadv_tt_global_update_crc(bat_priv, orig_node); bat_priv 4079 net/batman-adv/translation-table.c batadv_dbg(BATADV_DBG_TT, bat_priv, bat_priv 4083 net/batman-adv/translation-table.c batadv_send_tt_request(bat_priv, orig_node, ttvn, bat_priv 4101 net/batman-adv/translation-table.c bool batadv_tt_global_client_is_roaming(struct batadv_priv *bat_priv, bat_priv 4107 net/batman-adv/translation-table.c tt_global_entry = batadv_tt_global_hash_find(bat_priv, addr, vid); bat_priv 4127 net/batman-adv/translation-table.c bool batadv_tt_local_client_is_roaming(struct batadv_priv *bat_priv, bat_priv 4133 net/batman-adv/translation-table.c tt_local_entry = batadv_tt_local_hash_find(bat_priv, addr, vid); bat_priv 4152 net/batman-adv/translation-table.c bool batadv_tt_add_temporary_global_entry(struct batadv_priv *bat_priv, bat_priv 4163 net/batman-adv/translation-table.c if (!batadv_tt_global_add(bat_priv, orig_node, addr, vid, bat_priv 4168 net/batman-adv/translation-table.c batadv_dbg(BATADV_DBG_TT, bat_priv, bat_priv 4185 net/batman-adv/translation-table.c struct batadv_priv *bat_priv = netdev_priv(soft_iface); bat_priv 4186 net/batman-adv/translation-table.c int packet_size_max = atomic_read(&bat_priv->packet_size_max); bat_priv 4190 net/batman-adv/translation-table.c spin_lock_bh(&bat_priv->tt.commit_lock); bat_priv 4193 net/batman-adv/translation-table.c table_size = batadv_tt_local_table_transmit_size(bat_priv); bat_priv 4197 net/batman-adv/translation-table.c batadv_tt_local_purge(bat_priv, timeout); bat_priv 4198 net/batman-adv/translation-table.c batadv_tt_local_purge_pending_clients(bat_priv); bat_priv 4211 net/batman-adv/translation-table.c batadv_tt_local_commit_changes_nolock(bat_priv); bat_priv 4213 net/batman-adv/translation-table.c spin_unlock_bh(&bat_priv->tt.commit_lock); bat_priv 4224 net/batman-adv/translation-table.c static void batadv_tt_tvlv_ogm_handler_v1(struct batadv_priv *bat_priv, bat_priv 4251 net/batman-adv/translation-table.c batadv_tt_update_orig(bat_priv, orig, tt_vlan, num_vlan, tt_change, bat_priv 4267 net/batman-adv/translation-table.c static int batadv_tt_tvlv_unicast_handler_v1(struct batadv_priv *bat_priv, bat_priv 4294 net/batman-adv/translation-table.c batadv_inc_counter(bat_priv, BATADV_CNT_TT_REQUEST_RX); bat_priv 4299 net/batman-adv/translation-table.c ret = batadv_send_tt_response(bat_priv, tt_data, src, dst); bat_priv 4306 net/batman-adv/translation-table.c batadv_dbg(BATADV_DBG_TT, bat_priv, bat_priv 4314 net/batman-adv/translation-table.c batadv_inc_counter(bat_priv, BATADV_CNT_TT_RESPONSE_RX); bat_priv 4316 net/batman-adv/translation-table.c if (batadv_is_my_mac(bat_priv, dst)) { bat_priv 4317 net/batman-adv/translation-table.c batadv_handle_tt_response(bat_priv, tt_data, bat_priv 4327 net/batman-adv/translation-table.c batadv_dbg(BATADV_DBG_TT, bat_priv, bat_priv 4349 net/batman-adv/translation-table.c static int batadv_roam_tvlv_unicast_handler_v1(struct batadv_priv *bat_priv, bat_priv 4361 net/batman-adv/translation-table.c if (!batadv_is_my_mac(bat_priv, dst)) bat_priv 4367 net/batman-adv/translation-table.c orig_node = batadv_orig_hash_find(bat_priv, src); bat_priv 4371 net/batman-adv/translation-table.c batadv_inc_counter(bat_priv, BATADV_CNT_TT_ROAM_ADV_RX); bat_priv 4374 net/batman-adv/translation-table.c batadv_dbg(BATADV_DBG_TT, bat_priv, bat_priv 4378 net/batman-adv/translation-table.c batadv_tt_global_add(bat_priv, orig_node, roaming_adv->client, bat_priv 4394 net/batman-adv/translation-table.c int batadv_tt_init(struct batadv_priv *bat_priv) bat_priv 4401 net/batman-adv/translation-table.c ret = batadv_tt_local_init(bat_priv); bat_priv 4405 net/batman-adv/translation-table.c ret = batadv_tt_global_init(bat_priv); bat_priv 4409 net/batman-adv/translation-table.c batadv_tvlv_handler_register(bat_priv, batadv_tt_tvlv_ogm_handler_v1, bat_priv 4413 net/batman-adv/translation-table.c batadv_tvlv_handler_register(bat_priv, NULL, bat_priv 4417 net/batman-adv/translation-table.c INIT_DELAYED_WORK(&bat_priv->tt.work, batadv_tt_purge); bat_priv 4418 net/batman-adv/translation-table.c queue_delayed_work(batadv_event_workqueue, &bat_priv->tt.work, bat_priv 4433 net/batman-adv/translation-table.c bool batadv_tt_global_is_isolated(struct batadv_priv *bat_priv, bat_priv 4439 net/batman-adv/translation-table.c tt = batadv_tt_global_hash_find(bat_priv, addr, vid); bat_priv 18 net/batman-adv/translation-table.h int batadv_tt_init(struct batadv_priv *bat_priv); bat_priv 21 net/batman-adv/translation-table.h u16 batadv_tt_local_remove(struct batadv_priv *bat_priv, bat_priv 28 net/batman-adv/translation-table.h void batadv_tt_global_del_orig(struct batadv_priv *bat_priv, bat_priv 32 net/batman-adv/translation-table.h batadv_tt_global_hash_find(struct batadv_priv *bat_priv, const u8 *addr, bat_priv 35 net/batman-adv/translation-table.h int batadv_tt_global_hash_count(struct batadv_priv *bat_priv, bat_priv 37 net/batman-adv/translation-table.h struct batadv_orig_node *batadv_transtable_search(struct batadv_priv *bat_priv, bat_priv 40 net/batman-adv/translation-table.h void batadv_tt_free(struct batadv_priv *bat_priv); bat_priv 41 net/batman-adv/translation-table.h bool batadv_is_my_client(struct batadv_priv *bat_priv, const u8 *addr, bat_priv 43 net/batman-adv/translation-table.h bool batadv_is_ap_isolated(struct batadv_priv *bat_priv, u8 *src, u8 *dst, bat_priv 45 net/batman-adv/translation-table.h void batadv_tt_local_commit_changes(struct batadv_priv *bat_priv); bat_priv 46 net/batman-adv/translation-table.h bool batadv_tt_global_client_is_roaming(struct batadv_priv *bat_priv, bat_priv 48 net/batman-adv/translation-table.h bool batadv_tt_local_client_is_roaming(struct batadv_priv *bat_priv, bat_priv 51 net/batman-adv/translation-table.h bool batadv_tt_add_temporary_global_entry(struct batadv_priv *bat_priv, bat_priv 55 net/batman-adv/translation-table.h bool batadv_tt_global_is_isolated(struct batadv_priv *bat_priv, bat_priv 66 net/batman-adv/tvlv.c batadv_tvlv_handler_get(struct batadv_priv *bat_priv, u8 type, u8 version) bat_priv 72 net/batman-adv/tvlv.c &bat_priv->tvlv.handler_list, list) { bat_priv 125 net/batman-adv/tvlv.c batadv_tvlv_container_get(struct batadv_priv *bat_priv, u8 type, u8 version) bat_priv 129 net/batman-adv/tvlv.c lockdep_assert_held(&bat_priv->tvlv.container_list_lock); bat_priv 131 net/batman-adv/tvlv.c hlist_for_each_entry(tvlv_tmp, &bat_priv->tvlv.container_list, list) { bat_priv 156 net/batman-adv/tvlv.c static u16 batadv_tvlv_container_list_size(struct batadv_priv *bat_priv) bat_priv 161 net/batman-adv/tvlv.c lockdep_assert_held(&bat_priv->tvlv.container_list_lock); bat_priv 163 net/batman-adv/tvlv.c hlist_for_each_entry(tvlv, &bat_priv->tvlv.container_list, list) { bat_priv 180 net/batman-adv/tvlv.c static void batadv_tvlv_container_remove(struct batadv_priv *bat_priv, bat_priv 183 net/batman-adv/tvlv.c lockdep_assert_held(&bat_priv->tvlv.container_list_lock); bat_priv 202 net/batman-adv/tvlv.c void batadv_tvlv_container_unregister(struct batadv_priv *bat_priv, bat_priv 207 net/batman-adv/tvlv.c spin_lock_bh(&bat_priv->tvlv.container_list_lock); bat_priv 208 net/batman-adv/tvlv.c tvlv = batadv_tvlv_container_get(bat_priv, type, version); bat_priv 209 net/batman-adv/tvlv.c batadv_tvlv_container_remove(bat_priv, tvlv); bat_priv 210 net/batman-adv/tvlv.c spin_unlock_bh(&bat_priv->tvlv.container_list_lock); bat_priv 225 net/batman-adv/tvlv.c void batadv_tvlv_container_register(struct batadv_priv *bat_priv, bat_priv 246 net/batman-adv/tvlv.c spin_lock_bh(&bat_priv->tvlv.container_list_lock); bat_priv 247 net/batman-adv/tvlv.c tvlv_old = batadv_tvlv_container_get(bat_priv, type, version); bat_priv 248 net/batman-adv/tvlv.c batadv_tvlv_container_remove(bat_priv, tvlv_old); bat_priv 251 net/batman-adv/tvlv.c hlist_add_head(&tvlv_new->list, &bat_priv->tvlv.container_list); bat_priv 252 net/batman-adv/tvlv.c spin_unlock_bh(&bat_priv->tvlv.container_list_lock); bat_priv 305 net/batman-adv/tvlv.c u16 batadv_tvlv_container_ogm_append(struct batadv_priv *bat_priv, bat_priv 315 net/batman-adv/tvlv.c spin_lock_bh(&bat_priv->tvlv.container_list_lock); bat_priv 316 net/batman-adv/tvlv.c tvlv_value_len = batadv_tvlv_container_list_size(bat_priv); bat_priv 329 net/batman-adv/tvlv.c hlist_for_each_entry(tvlv, &bat_priv->tvlv.container_list, list) { bat_priv 340 net/batman-adv/tvlv.c spin_unlock_bh(&bat_priv->tvlv.container_list_lock); bat_priv 359 net/batman-adv/tvlv.c static int batadv_tvlv_call_handler(struct batadv_priv *bat_priv, bat_priv 376 net/batman-adv/tvlv.c tvlv_handler->ogm_handler(bat_priv, orig_node, bat_priv 390 net/batman-adv/tvlv.c return tvlv_handler->unicast_handler(bat_priv, src, bat_priv 412 net/batman-adv/tvlv.c int batadv_tvlv_containers_process(struct batadv_priv *bat_priv, bat_priv 433 net/batman-adv/tvlv.c tvlv_handler = batadv_tvlv_handler_get(bat_priv, bat_priv 437 net/batman-adv/tvlv.c ret |= batadv_tvlv_call_handler(bat_priv, tvlv_handler, bat_priv 452 net/batman-adv/tvlv.c &bat_priv->tvlv.handler_list, list) { bat_priv 455 net/batman-adv/tvlv.c tvlv_handler->ogm_handler(bat_priv, orig_node, bat_priv 472 net/batman-adv/tvlv.c void batadv_tvlv_ogm_receive(struct batadv_priv *bat_priv, bat_priv 488 net/batman-adv/tvlv.c batadv_tvlv_containers_process(bat_priv, true, orig_node, NULL, NULL, bat_priv 506 net/batman-adv/tvlv.c void batadv_tvlv_handler_register(struct batadv_priv *bat_priv, bat_priv 507 net/batman-adv/tvlv.c void (*optr)(struct batadv_priv *bat_priv, bat_priv 512 net/batman-adv/tvlv.c int (*uptr)(struct batadv_priv *bat_priv, bat_priv 520 net/batman-adv/tvlv.c spin_lock_bh(&bat_priv->tvlv.handler_list_lock); bat_priv 522 net/batman-adv/tvlv.c tvlv_handler = batadv_tvlv_handler_get(bat_priv, type, version); bat_priv 524 net/batman-adv/tvlv.c spin_unlock_bh(&bat_priv->tvlv.handler_list_lock); bat_priv 531 net/batman-adv/tvlv.c spin_unlock_bh(&bat_priv->tvlv.handler_list_lock); bat_priv 544 net/batman-adv/tvlv.c hlist_add_head_rcu(&tvlv_handler->list, &bat_priv->tvlv.handler_list); bat_priv 545 net/batman-adv/tvlv.c spin_unlock_bh(&bat_priv->tvlv.handler_list_lock); bat_priv 558 net/batman-adv/tvlv.c void batadv_tvlv_handler_unregister(struct batadv_priv *bat_priv, bat_priv 563 net/batman-adv/tvlv.c tvlv_handler = batadv_tvlv_handler_get(bat_priv, type, version); bat_priv 568 net/batman-adv/tvlv.c spin_lock_bh(&bat_priv->tvlv.handler_list_lock); bat_priv 570 net/batman-adv/tvlv.c spin_unlock_bh(&bat_priv->tvlv.handler_list_lock); bat_priv 585 net/batman-adv/tvlv.c void batadv_tvlv_unicast_send(struct batadv_priv *bat_priv, u8 *src, bat_priv 597 net/batman-adv/tvlv.c orig_node = batadv_orig_hash_find(bat_priv, dst); bat_priv 15 net/batman-adv/tvlv.h void batadv_tvlv_container_register(struct batadv_priv *bat_priv, bat_priv 18 net/batman-adv/tvlv.h u16 batadv_tvlv_container_ogm_append(struct batadv_priv *bat_priv, bat_priv 21 net/batman-adv/tvlv.h void batadv_tvlv_ogm_receive(struct batadv_priv *bat_priv, bat_priv 24 net/batman-adv/tvlv.h void batadv_tvlv_container_unregister(struct batadv_priv *bat_priv, bat_priv 27 net/batman-adv/tvlv.h void batadv_tvlv_handler_register(struct batadv_priv *bat_priv, bat_priv 28 net/batman-adv/tvlv.h void (*optr)(struct batadv_priv *bat_priv, bat_priv 33 net/batman-adv/tvlv.h int (*uptr)(struct batadv_priv *bat_priv, bat_priv 38 net/batman-adv/tvlv.h void batadv_tvlv_handler_unregister(struct batadv_priv *bat_priv, bat_priv 40 net/batman-adv/tvlv.h int batadv_tvlv_containers_process(struct batadv_priv *bat_priv, bat_priv 45 net/batman-adv/tvlv.h void batadv_tvlv_unicast_send(struct batadv_priv *bat_priv, u8 *src, bat_priv 498 net/batman-adv/types.h struct batadv_priv *bat_priv; bat_priv 1396 net/batman-adv/types.h struct batadv_priv *bat_priv; bat_priv 1507 net/batman-adv/types.h struct batadv_priv *bat_priv; bat_priv 1790 net/batman-adv/types.h struct batadv_priv *bat_priv; bat_priv 1826 net/batman-adv/types.h struct batadv_priv *bat_priv; bat_priv 2266 net/batman-adv/types.h void (*init_sel_class)(struct batadv_priv *bat_priv); bat_priv 2272 net/batman-adv/types.h ssize_t (*store_sel_class)(struct batadv_priv *bat_priv, char *buff, bat_priv 2276 net/batman-adv/types.h ssize_t (*show_sel_class)(struct batadv_priv *bat_priv, char *buff); bat_priv 2283 net/batman-adv/types.h (struct batadv_priv *bat_priv); bat_priv 2289 net/batman-adv/types.h bool (*is_eligible)(struct batadv_priv *bat_priv, bat_priv 2295 net/batman-adv/types.h void (*print)(struct batadv_priv *bat_priv, struct seq_file *seq); bat_priv 2410 net/batman-adv/types.h void (*ogm_handler)(struct batadv_priv *bat_priv, bat_priv 2418 net/batman-adv/types.h int (*unicast_handler)(struct batadv_priv *bat_priv,