/linux-4.4.14/net/batman-adv/ |
H A D | hard-interface.c | 51 struct batadv_hard_iface *hard_iface; batadv_hardif_free_rcu() local 53 hard_iface = container_of(rcu, struct batadv_hard_iface, rcu); batadv_hardif_free_rcu() 54 dev_put(hard_iface->net_dev); batadv_hardif_free_rcu() 55 kfree(hard_iface); batadv_hardif_free_rcu() 61 struct batadv_hard_iface *hard_iface; batadv_hardif_get_by_netdev() local 64 list_for_each_entry_rcu(hard_iface, &batadv_hardif_list, list) { batadv_hardif_get_by_netdev() 65 if (hard_iface->net_dev == net_dev && batadv_hardif_get_by_netdev() 66 atomic_inc_not_zero(&hard_iface->refcount)) batadv_hardif_get_by_netdev() 70 hard_iface = NULL; batadv_hardif_get_by_netdev() 74 return hard_iface; batadv_hardif_get_by_netdev() 163 struct batadv_hard_iface *hard_iface; batadv_hardif_get_active() local 166 list_for_each_entry_rcu(hard_iface, &batadv_hardif_list, list) { batadv_hardif_get_active() 167 if (hard_iface->soft_iface != soft_iface) batadv_hardif_get_active() 170 if (hard_iface->if_status == BATADV_IF_ACTIVE && batadv_hardif_get_active() 171 atomic_inc_not_zero(&hard_iface->refcount)) batadv_hardif_get_active() 175 hard_iface = NULL; batadv_hardif_get_active() 179 return hard_iface; batadv_hardif_get_active() 223 batadv_hardif_is_iface_up(const struct batadv_hard_iface *hard_iface) batadv_hardif_is_iface_up() argument 225 if (hard_iface->net_dev->flags & IFF_UP) batadv_hardif_is_iface_up() 233 const struct batadv_hard_iface *hard_iface; batadv_check_known_mac_addr() local 236 list_for_each_entry_rcu(hard_iface, &batadv_hardif_list, list) { batadv_check_known_mac_addr() 237 if ((hard_iface->if_status != BATADV_IF_ACTIVE) && batadv_check_known_mac_addr() 238 (hard_iface->if_status != BATADV_IF_TO_BE_ACTIVATED)) batadv_check_known_mac_addr() 241 if (hard_iface->net_dev == net_dev) batadv_check_known_mac_addr() 244 if (!batadv_compare_eth(hard_iface->net_dev->dev_addr, batadv_check_known_mac_addr() 249 net_dev->dev_addr, hard_iface->net_dev->name); batadv_check_known_mac_addr() 261 const struct batadv_hard_iface *hard_iface; batadv_hardif_recalc_extra_skbroom() local 268 list_for_each_entry_rcu(hard_iface, &batadv_hardif_list, list) { batadv_hardif_recalc_extra_skbroom() 269 if (hard_iface->if_status == BATADV_IF_NOT_IN_USE) batadv_hardif_recalc_extra_skbroom() 272 if (hard_iface->soft_iface != soft_iface) batadv_hardif_recalc_extra_skbroom() 276 hard_iface->net_dev->hard_header_len); batadv_hardif_recalc_extra_skbroom() 279 hard_iface->net_dev->needed_headroom); batadv_hardif_recalc_extra_skbroom() 282 hard_iface->net_dev->needed_tailroom); batadv_hardif_recalc_extra_skbroom() 296 const struct batadv_hard_iface *hard_iface; batadv_hardif_min_mtu() local 300 list_for_each_entry_rcu(hard_iface, &batadv_hardif_list, list) { batadv_hardif_min_mtu() 301 if ((hard_iface->if_status != BATADV_IF_ACTIVE) && batadv_hardif_min_mtu() 302 (hard_iface->if_status != BATADV_IF_TO_BE_ACTIVATED)) batadv_hardif_min_mtu() 305 if (hard_iface->soft_iface != soft_iface) batadv_hardif_min_mtu() 308 min_mtu = min_t(int, hard_iface->net_dev->mtu, min_mtu); batadv_hardif_min_mtu() 351 batadv_hardif_activate_interface(struct batadv_hard_iface *hard_iface) batadv_hardif_activate_interface() argument 356 if (hard_iface->if_status != BATADV_IF_INACTIVE) batadv_hardif_activate_interface() 359 bat_priv = netdev_priv(hard_iface->soft_iface); batadv_hardif_activate_interface() 361 bat_priv->bat_algo_ops->bat_iface_update_mac(hard_iface); batadv_hardif_activate_interface() 362 hard_iface->if_status = BATADV_IF_TO_BE_ACTIVATED; batadv_hardif_activate_interface() 369 batadv_primary_if_select(bat_priv, hard_iface); batadv_hardif_activate_interface() 371 batadv_info(hard_iface->soft_iface, "Interface activated: %s\n", batadv_hardif_activate_interface() 372 hard_iface->net_dev->name); batadv_hardif_activate_interface() 374 batadv_update_min_mtu(hard_iface->soft_iface); batadv_hardif_activate_interface() 382 batadv_hardif_deactivate_interface(struct batadv_hard_iface *hard_iface) batadv_hardif_deactivate_interface() argument 384 if ((hard_iface->if_status != BATADV_IF_ACTIVE) && batadv_hardif_deactivate_interface() 385 (hard_iface->if_status != BATADV_IF_TO_BE_ACTIVATED)) batadv_hardif_deactivate_interface() 388 hard_iface->if_status = BATADV_IF_INACTIVE; batadv_hardif_deactivate_interface() 390 batadv_info(hard_iface->soft_iface, "Interface deactivated: %s\n", batadv_hardif_deactivate_interface() 391 hard_iface->net_dev->name); batadv_hardif_deactivate_interface() 393 batadv_update_min_mtu(hard_iface->soft_iface); batadv_hardif_deactivate_interface() 397 * batadv_master_del_slave - remove hard_iface from the current master interface 420 int batadv_hardif_enable_interface(struct batadv_hard_iface *hard_iface, batadv_hardif_enable_interface() argument 429 if (hard_iface->if_status != BATADV_IF_NOT_IN_USE) batadv_hardif_enable_interface() 432 if (!atomic_inc_not_zero(&hard_iface->refcount)) batadv_hardif_enable_interface() 459 master = netdev_master_upper_dev_get(hard_iface->net_dev); batadv_hardif_enable_interface() 460 ret = batadv_master_del_slave(hard_iface, master); batadv_hardif_enable_interface() 464 hard_iface->soft_iface = soft_iface; batadv_hardif_enable_interface() 465 bat_priv = netdev_priv(hard_iface->soft_iface); batadv_hardif_enable_interface() 467 ret = netdev_master_upper_dev_link(hard_iface->net_dev, soft_iface); batadv_hardif_enable_interface() 471 ret = bat_priv->bat_algo_ops->bat_iface_enable(hard_iface); batadv_hardif_enable_interface() 475 hard_iface->if_num = bat_priv->num_ifaces; batadv_hardif_enable_interface() 477 hard_iface->if_status = BATADV_IF_INACTIVE; batadv_hardif_enable_interface() 478 ret = batadv_orig_hash_add_if(hard_iface, bat_priv->num_ifaces); batadv_hardif_enable_interface() 480 bat_priv->bat_algo_ops->bat_iface_disable(hard_iface); batadv_hardif_enable_interface() 482 hard_iface->if_status = BATADV_IF_NOT_IN_USE; batadv_hardif_enable_interface() 486 hard_iface->batman_adv_ptype.type = ethertype; batadv_hardif_enable_interface() 487 hard_iface->batman_adv_ptype.func = batadv_batman_skb_recv; batadv_hardif_enable_interface() 488 hard_iface->batman_adv_ptype.dev = hard_iface->net_dev; batadv_hardif_enable_interface() 489 dev_add_pack(&hard_iface->batman_adv_ptype); batadv_hardif_enable_interface() 491 batadv_info(hard_iface->soft_iface, "Adding interface: %s\n", batadv_hardif_enable_interface() 492 hard_iface->net_dev->name); batadv_hardif_enable_interface() 495 hard_iface->net_dev->mtu < ETH_DATA_LEN + max_header_len) batadv_hardif_enable_interface() 496 batadv_info(hard_iface->soft_iface, batadv_hardif_enable_interface() 498 hard_iface->net_dev->name, hard_iface->net_dev->mtu, batadv_hardif_enable_interface() 502 hard_iface->net_dev->mtu < ETH_DATA_LEN + max_header_len) batadv_hardif_enable_interface() 503 batadv_info(hard_iface->soft_iface, batadv_hardif_enable_interface() 505 hard_iface->net_dev->name, hard_iface->net_dev->mtu, batadv_hardif_enable_interface() 508 if (batadv_hardif_is_iface_up(hard_iface)) batadv_hardif_enable_interface() 509 batadv_hardif_activate_interface(hard_iface); batadv_hardif_enable_interface() 511 batadv_err(hard_iface->soft_iface, batadv_hardif_enable_interface() 513 hard_iface->net_dev->name); batadv_hardif_enable_interface() 518 batadv_schedule_bat_ogm(hard_iface); batadv_hardif_enable_interface() 524 netdev_upper_dev_unlink(hard_iface->net_dev, soft_iface); batadv_hardif_enable_interface() 526 hard_iface->soft_iface = NULL; batadv_hardif_enable_interface() 529 batadv_hardif_free_ref(hard_iface); batadv_hardif_enable_interface() 533 void batadv_hardif_disable_interface(struct batadv_hard_iface *hard_iface, batadv_hardif_disable_interface() argument 536 struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface); batadv_hardif_disable_interface() 539 if (hard_iface->if_status == BATADV_IF_ACTIVE) batadv_hardif_disable_interface() 540 batadv_hardif_deactivate_interface(hard_iface); batadv_hardif_disable_interface() 542 if (hard_iface->if_status != BATADV_IF_INACTIVE) batadv_hardif_disable_interface() 545 batadv_info(hard_iface->soft_iface, "Removing interface: %s\n", batadv_hardif_disable_interface() 546 hard_iface->net_dev->name); batadv_hardif_disable_interface() 547 dev_remove_pack(&hard_iface->batman_adv_ptype); batadv_hardif_disable_interface() 550 batadv_orig_hash_del_if(hard_iface, bat_priv->num_ifaces); batadv_hardif_disable_interface() 553 if (hard_iface == primary_if) { batadv_hardif_disable_interface() 556 new_if = batadv_hardif_get_active(hard_iface->soft_iface); batadv_hardif_disable_interface() 563 bat_priv->bat_algo_ops->bat_iface_disable(hard_iface); batadv_hardif_disable_interface() 564 hard_iface->if_status = BATADV_IF_NOT_IN_USE; batadv_hardif_disable_interface() 566 /* delete all references to this hard_iface */ batadv_hardif_disable_interface() 568 batadv_purge_outstanding_packets(bat_priv, hard_iface); batadv_hardif_disable_interface() 569 dev_put(hard_iface->soft_iface); batadv_hardif_disable_interface() 571 netdev_upper_dev_unlink(hard_iface->net_dev, hard_iface->soft_iface); batadv_hardif_disable_interface() 572 batadv_hardif_recalc_extra_skbroom(hard_iface->soft_iface); batadv_hardif_disable_interface() 579 batadv_softif_destroy_sysfs(hard_iface->soft_iface); batadv_hardif_disable_interface() 582 hard_iface->soft_iface = NULL; batadv_hardif_disable_interface() 583 batadv_hardif_free_ref(hard_iface); batadv_hardif_disable_interface() 599 struct batadv_hard_iface *hard_iface; batadv_hardif_remove_interface_finish() local 601 hard_iface = container_of(work, struct batadv_hard_iface, batadv_hardif_remove_interface_finish() 604 batadv_debugfs_del_hardif(hard_iface); batadv_hardif_remove_interface_finish() 605 batadv_sysfs_del_hardif(&hard_iface->hardif_obj); batadv_hardif_remove_interface_finish() 606 batadv_hardif_free_ref(hard_iface); batadv_hardif_remove_interface_finish() 612 struct batadv_hard_iface *hard_iface; batadv_hardif_add_interface() local 623 hard_iface = kzalloc(sizeof(*hard_iface), GFP_ATOMIC); batadv_hardif_add_interface() 624 if (!hard_iface) batadv_hardif_add_interface() 627 ret = batadv_sysfs_add_hardif(&hard_iface->hardif_obj, net_dev); batadv_hardif_add_interface() 631 hard_iface->if_num = -1; batadv_hardif_add_interface() 632 hard_iface->net_dev = net_dev; batadv_hardif_add_interface() 633 hard_iface->soft_iface = NULL; batadv_hardif_add_interface() 634 hard_iface->if_status = BATADV_IF_NOT_IN_USE; batadv_hardif_add_interface() 636 ret = batadv_debugfs_add_hardif(hard_iface); batadv_hardif_add_interface() 640 INIT_LIST_HEAD(&hard_iface->list); batadv_hardif_add_interface() 641 INIT_WORK(&hard_iface->cleanup_work, batadv_hardif_add_interface() 644 hard_iface->num_bcasts = BATADV_NUM_BCASTS_DEFAULT; batadv_hardif_add_interface() 646 hard_iface->num_bcasts = BATADV_NUM_BCASTS_WIRELESS; batadv_hardif_add_interface() 649 atomic_set(&hard_iface->refcount, 2); batadv_hardif_add_interface() 651 batadv_check_known_mac_addr(hard_iface->net_dev); batadv_hardif_add_interface() 652 list_add_tail_rcu(&hard_iface->list, &batadv_hardif_list); batadv_hardif_add_interface() 654 return hard_iface; batadv_hardif_add_interface() 657 batadv_sysfs_del_hardif(&hard_iface->hardif_obj); batadv_hardif_add_interface() 659 kfree(hard_iface); batadv_hardif_add_interface() 666 static void batadv_hardif_remove_interface(struct batadv_hard_iface *hard_iface) batadv_hardif_remove_interface() argument 671 if (hard_iface->if_status != BATADV_IF_NOT_IN_USE) batadv_hardif_remove_interface() 672 batadv_hardif_disable_interface(hard_iface, batadv_hardif_remove_interface() 675 if (hard_iface->if_status != BATADV_IF_NOT_IN_USE) batadv_hardif_remove_interface() 678 hard_iface->if_status = BATADV_IF_TO_BE_REMOVED; batadv_hardif_remove_interface() 679 queue_work(batadv_event_workqueue, &hard_iface->cleanup_work); batadv_hardif_remove_interface() 684 struct batadv_hard_iface *hard_iface, *hard_iface_tmp; batadv_hardif_remove_interfaces() local 687 list_for_each_entry_safe(hard_iface, hard_iface_tmp, batadv_hardif_remove_interfaces() 689 list_del_rcu(&hard_iface->list); batadv_hardif_remove_interfaces() 690 batadv_hardif_remove_interface(hard_iface); batadv_hardif_remove_interfaces() 699 struct batadv_hard_iface *hard_iface; batadv_hard_if_event() local 710 hard_iface = batadv_hardif_get_by_netdev(net_dev); batadv_hard_if_event() 711 if (!hard_iface && event == NETDEV_REGISTER) batadv_hard_if_event() 712 hard_iface = batadv_hardif_add_interface(net_dev); batadv_hard_if_event() 714 if (!hard_iface) batadv_hard_if_event() 719 batadv_hardif_activate_interface(hard_iface); batadv_hard_if_event() 723 batadv_hardif_deactivate_interface(hard_iface); batadv_hard_if_event() 726 list_del_rcu(&hard_iface->list); batadv_hard_if_event() 728 batadv_hardif_remove_interface(hard_iface); batadv_hard_if_event() 731 if (hard_iface->soft_iface) batadv_hard_if_event() 732 batadv_update_min_mtu(hard_iface->soft_iface); batadv_hard_if_event() 735 if (hard_iface->if_status == BATADV_IF_NOT_IN_USE) batadv_hard_if_event() 738 batadv_check_known_mac_addr(hard_iface->net_dev); batadv_hard_if_event() 740 bat_priv = netdev_priv(hard_iface->soft_iface); batadv_hard_if_event() 741 bat_priv->bat_algo_ops->bat_iface_update_mac(hard_iface); batadv_hard_if_event() 747 if (hard_iface == primary_if) batadv_hard_if_event() 755 batadv_hardif_free_ref(hard_iface); batadv_hard_if_event()
|
H A D | hard-interface.h | 57 int batadv_hardif_enable_interface(struct batadv_hard_iface *hard_iface, 59 void batadv_hardif_disable_interface(struct batadv_hard_iface *hard_iface, 69 * @hard_iface: the hard interface to free 72 batadv_hardif_free_ref(struct batadv_hard_iface *hard_iface) batadv_hardif_free_ref() argument 74 if (atomic_dec_and_test(&hard_iface->refcount)) batadv_hardif_free_ref() 75 call_rcu(&hard_iface->rcu, batadv_hardif_free_rcu); batadv_hardif_free_ref() 81 struct batadv_hard_iface *hard_iface; batadv_primary_if_get_selected() local 84 hard_iface = rcu_dereference(bat_priv->primary_if); batadv_primary_if_get_selected() 85 if (!hard_iface) batadv_primary_if_get_selected() 88 if (!atomic_inc_not_zero(&hard_iface->refcount)) batadv_primary_if_get_selected() 89 hard_iface = NULL; batadv_primary_if_get_selected() 93 return hard_iface; batadv_primary_if_get_selected()
|
H A D | debugfs.h | 35 int batadv_debugfs_add_hardif(struct batadv_hard_iface *hard_iface); 36 void batadv_debugfs_del_hardif(struct batadv_hard_iface *hard_iface); 58 int batadv_debugfs_add_hardif(struct batadv_hard_iface *hard_iface) batadv_debugfs_add_hardif() argument 64 void batadv_debugfs_del_hardif(struct batadv_hard_iface *hard_iface) batadv_debugfs_del_hardif() argument
|
H A D | send.c | 56 struct batadv_hard_iface *hard_iface, batadv_send_skb_packet() 59 struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface); batadv_send_skb_packet() 62 if (hard_iface->if_status != BATADV_IF_ACTIVE) batadv_send_skb_packet() 65 if (unlikely(!hard_iface->net_dev)) batadv_send_skb_packet() 68 if (!(hard_iface->net_dev->flags & IFF_UP)) { batadv_send_skb_packet() 70 hard_iface->net_dev->name); batadv_send_skb_packet() 81 ether_addr_copy(ethhdr->h_source, hard_iface->net_dev->dev_addr); batadv_send_skb_packet() 88 skb->dev = hard_iface->net_dev; batadv_send_skb_packet() 388 void batadv_schedule_bat_ogm(struct batadv_hard_iface *hard_iface) batadv_schedule_bat_ogm() argument 390 struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface); batadv_schedule_bat_ogm() 392 if ((hard_iface->if_status == BATADV_IF_NOT_IN_USE) || batadv_schedule_bat_ogm() 393 (hard_iface->if_status == BATADV_IF_TO_BE_REMOVED)) batadv_schedule_bat_ogm() 402 if (hard_iface->if_status == BATADV_IF_TO_BE_ACTIVATED) batadv_schedule_bat_ogm() 403 hard_iface->if_status = BATADV_IF_ACTIVE; batadv_schedule_bat_ogm() 405 bat_priv->bat_algo_ops->bat_ogm_schedule(hard_iface); batadv_schedule_bat_ogm() 502 struct batadv_hard_iface *hard_iface; batadv_send_outstanding_bcast_packet() local 527 list_for_each_entry_rcu(hard_iface, &batadv_hardif_list, list) { batadv_send_outstanding_bcast_packet() 528 if (hard_iface->soft_iface != soft_iface) batadv_send_outstanding_bcast_packet() 531 if (forw_packet->num_packets >= hard_iface->num_bcasts) batadv_send_outstanding_bcast_packet() 537 batadv_send_skb_packet(skb1, hard_iface, batadv_send_outstanding_bcast_packet() 597 const struct batadv_hard_iface *hard_iface) batadv_purge_outstanding_packets() 603 if (hard_iface) batadv_purge_outstanding_packets() 606 hard_iface->net_dev->name); batadv_purge_outstanding_packets() 618 if ((hard_iface) && batadv_purge_outstanding_packets() 619 (forw_packet->if_incoming != hard_iface) && batadv_purge_outstanding_packets() 620 (forw_packet->if_outgoing != hard_iface)) batadv_purge_outstanding_packets() 648 if ((hard_iface) && batadv_purge_outstanding_packets() 649 (forw_packet->if_incoming != hard_iface) && batadv_purge_outstanding_packets() 650 (forw_packet->if_outgoing != hard_iface)) batadv_purge_outstanding_packets() 55 batadv_send_skb_packet(struct sk_buff *skb, struct batadv_hard_iface *hard_iface, const u8 *dst_addr) batadv_send_skb_packet() argument 596 batadv_purge_outstanding_packets(struct batadv_priv *bat_priv, const struct batadv_hard_iface *hard_iface) batadv_purge_outstanding_packets() argument
|
H A D | debugfs.c | 476 * @hard_iface: hard interface which should be added. 478 int batadv_debugfs_add_hardif(struct batadv_hard_iface *hard_iface) batadv_debugfs_add_hardif() argument 486 hard_iface->debug_dir = debugfs_create_dir(hard_iface->net_dev->name, batadv_debugfs_add_hardif() 488 if (!hard_iface->debug_dir) batadv_debugfs_add_hardif() 494 hard_iface->debug_dir, batadv_debugfs_add_hardif() 495 hard_iface->net_dev, batadv_debugfs_add_hardif() 503 debugfs_remove_recursive(hard_iface->debug_dir); batadv_debugfs_add_hardif() 504 hard_iface->debug_dir = NULL; batadv_debugfs_add_hardif() 512 * @hard_iface: hard interface which is deleted. 514 void batadv_debugfs_del_hardif(struct batadv_hard_iface *hard_iface) batadv_debugfs_del_hardif() argument 517 debugfs_remove_recursive(hard_iface->debug_dir); batadv_debugfs_del_hardif() 518 hard_iface->debug_dir = NULL; batadv_debugfs_del_hardif()
|
H A D | originator.c | 422 * @hard_iface: the interface where this neighbour is connected to 431 const struct batadv_hard_iface *hard_iface, batadv_neigh_node_get() 441 if (tmp_neigh_node->if_incoming != hard_iface) batadv_neigh_node_get() 458 * @hard_iface: the interface where the neighbour is connected to 466 struct batadv_hard_iface *hard_iface, batadv_neigh_node_new() 471 neigh_node = batadv_neigh_node_get(orig_node, hard_iface, neigh_addr); batadv_neigh_node_new() 479 if (!atomic_inc_not_zero(&hard_iface->refcount)) { batadv_neigh_node_new() 490 neigh_node->if_incoming = hard_iface; batadv_neigh_node_new() 502 neigh_addr, orig_node->orig, hard_iface->net_dev->name); batadv_neigh_node_new() 914 struct batadv_hard_iface *hard_iface; batadv_purge_orig_node() local 941 list_for_each_entry_rcu(hard_iface, &batadv_hardif_list, list) { batadv_purge_orig_node() 942 if (hard_iface->if_status != BATADV_IF_ACTIVE) batadv_purge_orig_node() 945 if (hard_iface->soft_iface != bat_priv->soft_iface) batadv_purge_orig_node() 950 hard_iface); batadv_purge_orig_node() 951 batadv_update_route(bat_priv, orig_node, hard_iface, batadv_purge_orig_node() 1058 struct batadv_hard_iface *hard_iface; batadv_orig_hardif_seq_print_text() local 1061 hard_iface = batadv_hardif_get_by_netdev(net_dev); batadv_orig_hardif_seq_print_text() 1063 if (!hard_iface || !hard_iface->soft_iface) { batadv_orig_hardif_seq_print_text() 1068 bat_priv = netdev_priv(hard_iface->soft_iface); batadv_orig_hardif_seq_print_text() 1075 if (hard_iface->if_status != BATADV_IF_ACTIVE) { batadv_orig_hardif_seq_print_text() 1081 BATADV_SOURCE_VERSION, hard_iface->net_dev->name, batadv_orig_hardif_seq_print_text() 1082 hard_iface->net_dev->dev_addr, batadv_orig_hardif_seq_print_text() 1083 hard_iface->soft_iface->name, bat_priv->bat_algo_ops->name); batadv_orig_hardif_seq_print_text() 1085 bat_priv->bat_algo_ops->bat_orig_print(bat_priv, seq, hard_iface); batadv_orig_hardif_seq_print_text() 1088 if (hard_iface) batadv_orig_hardif_seq_print_text() 1089 batadv_hardif_free_ref(hard_iface); batadv_orig_hardif_seq_print_text() 1093 int batadv_orig_hash_add_if(struct batadv_hard_iface *hard_iface, batadv_orig_hash_add_if() argument 1096 struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface); batadv_orig_hash_add_if() 1129 int batadv_orig_hash_del_if(struct batadv_hard_iface *hard_iface, batadv_orig_hash_del_if() argument 1132 struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface); batadv_orig_hash_del_if() 1153 hard_iface->if_num); hlist_for_each_entry_rcu() 1166 if (hard_iface == hard_iface_tmp) 1169 if (hard_iface->soft_iface != hard_iface_tmp->soft_iface) 1172 if (hard_iface_tmp->if_num > hard_iface->if_num) 1177 hard_iface->if_num = -1; 430 batadv_neigh_node_get(const struct batadv_orig_node *orig_node, const struct batadv_hard_iface *hard_iface, const u8 *addr) batadv_neigh_node_get() argument 465 batadv_neigh_node_new(struct batadv_orig_node *orig_node, struct batadv_hard_iface *hard_iface, const u8 *neigh_addr) batadv_neigh_node_new() argument
|
H A D | sysfs.c | 751 struct batadv_hard_iface *hard_iface; batadv_show_mesh_iface() local 755 hard_iface = batadv_hardif_get_by_netdev(net_dev); batadv_show_mesh_iface() 756 if (!hard_iface) batadv_show_mesh_iface() 759 if (hard_iface->if_status == BATADV_IF_NOT_IN_USE) batadv_show_mesh_iface() 762 ifname = hard_iface->soft_iface->name; batadv_show_mesh_iface() 766 batadv_hardif_free_ref(hard_iface); batadv_show_mesh_iface() 776 struct batadv_hard_iface *hard_iface; batadv_store_mesh_iface() local 780 hard_iface = batadv_hardif_get_by_netdev(net_dev); batadv_store_mesh_iface() 781 if (!hard_iface) batadv_store_mesh_iface() 790 batadv_hardif_free_ref(hard_iface); batadv_store_mesh_iface() 799 if (hard_iface->if_status == status_tmp) batadv_store_mesh_iface() 802 if ((hard_iface->soft_iface) && batadv_store_mesh_iface() 803 (strncmp(hard_iface->soft_iface->name, buff, IFNAMSIZ) == 0)) batadv_store_mesh_iface() 809 batadv_hardif_disable_interface(hard_iface, batadv_store_mesh_iface() 815 if (hard_iface->if_status != BATADV_IF_NOT_IN_USE) batadv_store_mesh_iface() 816 batadv_hardif_disable_interface(hard_iface, batadv_store_mesh_iface() 819 ret = batadv_hardif_enable_interface(hard_iface, buff); batadv_store_mesh_iface() 824 batadv_hardif_free_ref(hard_iface); batadv_store_mesh_iface() 832 struct batadv_hard_iface *hard_iface; batadv_show_iface_status() local 835 hard_iface = batadv_hardif_get_by_netdev(net_dev); batadv_show_iface_status() 836 if (!hard_iface) batadv_show_iface_status() 839 switch (hard_iface->if_status) { batadv_show_iface_status() 858 batadv_hardif_free_ref(hard_iface); batadv_show_iface_status()
|
H A D | bat_iv_ogm.c | 294 batadv_iv_ogm_neigh_new(struct batadv_hard_iface *hard_iface, batadv_iv_ogm_neigh_new() argument 301 neigh_node = batadv_neigh_node_new(orig_node, hard_iface, neigh_addr); batadv_iv_ogm_neigh_new() 311 static int batadv_iv_ogm_iface_enable(struct batadv_hard_iface *hard_iface) batadv_iv_ogm_iface_enable() argument 319 atomic_set(&hard_iface->bat_iv.ogm_seqno, random_seqno); batadv_iv_ogm_iface_enable() 321 hard_iface->bat_iv.ogm_buff_len = BATADV_OGM_HLEN; batadv_iv_ogm_iface_enable() 322 ogm_buff = kmalloc(hard_iface->bat_iv.ogm_buff_len, GFP_ATOMIC); batadv_iv_ogm_iface_enable() 326 hard_iface->bat_iv.ogm_buff = ogm_buff; batadv_iv_ogm_iface_enable() 339 static void batadv_iv_ogm_iface_disable(struct batadv_hard_iface *hard_iface) batadv_iv_ogm_iface_disable() argument 341 kfree(hard_iface->bat_iv.ogm_buff); batadv_iv_ogm_iface_disable() 342 hard_iface->bat_iv.ogm_buff = NULL; batadv_iv_ogm_iface_disable() 345 static void batadv_iv_ogm_iface_update_mac(struct batadv_hard_iface *hard_iface) batadv_iv_ogm_iface_update_mac() argument 348 unsigned char *ogm_buff = hard_iface->bat_iv.ogm_buff; batadv_iv_ogm_iface_update_mac() 352 hard_iface->net_dev->dev_addr); batadv_iv_ogm_iface_update_mac() 354 hard_iface->net_dev->dev_addr); batadv_iv_ogm_iface_update_mac() 358 batadv_iv_ogm_primary_iface_set(struct batadv_hard_iface *hard_iface) batadv_iv_ogm_primary_iface_set() argument 361 unsigned char *ogm_buff = hard_iface->bat_iv.ogm_buff; batadv_iv_ogm_primary_iface_set() 413 struct batadv_hard_iface *hard_iface) batadv_iv_ogm_send_to_if() 415 struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface); batadv_iv_ogm_send_to_if() 423 if (hard_iface->if_status != BATADV_IF_ACTIVE) batadv_iv_ogm_send_to_if() 438 forw_packet->if_incoming == hard_iface) batadv_iv_ogm_send_to_if() 456 hard_iface->net_dev->name, batadv_iv_ogm_send_to_if() 457 hard_iface->net_dev->dev_addr); batadv_iv_ogm_send_to_if() 472 batadv_send_skb_packet(skb, hard_iface, batadv_broadcast_addr); batadv_iv_ogm_send_to_if() 861 * @hard_iface: the interface for which the windows have to be shifted 864 batadv_iv_ogm_slide_own_bcast_window(struct batadv_hard_iface *hard_iface) batadv_iv_ogm_slide_own_bcast_window() argument 866 struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface); batadv_iv_ogm_slide_own_bcast_window() 882 word_index = hard_iface->if_num * BATADV_NUM_WORDS; hlist_for_each_entry_rcu() 886 if_num = hard_iface->if_num; hlist_for_each_entry_rcu() 895 static void batadv_iv_ogm_schedule(struct batadv_hard_iface *hard_iface) batadv_iv_ogm_schedule() argument 897 struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface); batadv_iv_ogm_schedule() 898 unsigned char **ogm_buff = &hard_iface->bat_iv.ogm_buff; batadv_iv_ogm_schedule() 901 int *ogm_buff_len = &hard_iface->bat_iv.ogm_buff_len; batadv_iv_ogm_schedule() 908 if (hard_iface == primary_if) { batadv_iv_ogm_schedule() 922 seqno = (u32)atomic_read(&hard_iface->bat_iv.ogm_seqno); batadv_iv_ogm_schedule() 924 atomic_inc(&hard_iface->bat_iv.ogm_seqno); batadv_iv_ogm_schedule() 926 batadv_iv_ogm_slide_own_bcast_window(hard_iface); batadv_iv_ogm_schedule() 930 if (hard_iface != primary_if) { batadv_iv_ogm_schedule() 935 hard_iface, hard_iface, 1, send_time); batadv_iv_ogm_schedule() 944 if (tmp_hard_iface->soft_iface != hard_iface->soft_iface) batadv_iv_ogm_schedule() 947 *ogm_buff_len, hard_iface, batadv_iv_ogm_schedule() 1575 struct batadv_hard_iface *hard_iface; batadv_iv_ogm_process() local 1619 list_for_each_entry_rcu(hard_iface, &batadv_hardif_list, list) { batadv_iv_ogm_process() 1620 if (hard_iface->if_status != BATADV_IF_ACTIVE) batadv_iv_ogm_process() 1623 if (hard_iface->soft_iface != if_incoming->soft_iface) batadv_iv_ogm_process() 1627 hard_iface->net_dev->dev_addr)) batadv_iv_ogm_process() 1631 hard_iface->net_dev->dev_addr)) batadv_iv_ogm_process() 1635 hard_iface->net_dev->dev_addr)) batadv_iv_ogm_process() 1708 list_for_each_entry_rcu(hard_iface, &batadv_hardif_list, list) { batadv_iv_ogm_process() 1709 if (hard_iface->if_status != BATADV_IF_ACTIVE) batadv_iv_ogm_process() 1712 if (hard_iface->soft_iface != bat_priv->soft_iface) batadv_iv_ogm_process() 1716 if_incoming, hard_iface); batadv_iv_ogm_process() 412 batadv_iv_ogm_send_to_if(struct batadv_forw_packet *forw_packet, struct batadv_hard_iface *hard_iface) batadv_iv_ogm_send_to_if() argument
|
H A D | originator.h | 45 struct batadv_hard_iface *hard_iface, 69 int batadv_orig_hash_add_if(struct batadv_hard_iface *hard_iface, 71 int batadv_orig_hash_del_if(struct batadv_hard_iface *hard_iface,
|
H A D | send.h | 32 struct batadv_hard_iface *hard_iface, 37 void batadv_schedule_bat_ogm(struct batadv_hard_iface *hard_iface); 44 const struct batadv_hard_iface *hard_iface);
|
H A D | soft-interface.c | 859 struct batadv_hard_iface *hard_iface; batadv_softif_slave_add() local 862 hard_iface = batadv_hardif_get_by_netdev(slave_dev); batadv_softif_slave_add() 863 if (!hard_iface || hard_iface->soft_iface) batadv_softif_slave_add() 866 ret = batadv_hardif_enable_interface(hard_iface, dev->name); batadv_softif_slave_add() 869 if (hard_iface) batadv_softif_slave_add() 870 batadv_hardif_free_ref(hard_iface); batadv_softif_slave_add() 884 struct batadv_hard_iface *hard_iface; batadv_softif_slave_del() local 887 hard_iface = batadv_hardif_get_by_netdev(slave_dev); batadv_softif_slave_del() 889 if (!hard_iface || hard_iface->soft_iface != dev) batadv_softif_slave_del() 892 batadv_hardif_disable_interface(hard_iface, BATADV_IF_CLEANUP_KEEP); batadv_softif_slave_del() 896 if (hard_iface) batadv_softif_slave_del() 897 batadv_hardif_free_ref(hard_iface); batadv_softif_slave_del() 1005 struct batadv_hard_iface *hard_iface; batadv_softif_destroy_netlink() local 1007 list_for_each_entry(hard_iface, &batadv_hardif_list, list) { batadv_softif_destroy_netlink() 1008 if (hard_iface->soft_iface == soft_iface) batadv_softif_destroy_netlink() 1009 batadv_hardif_disable_interface(hard_iface, batadv_softif_destroy_netlink()
|
H A D | routing.h | 28 struct batadv_hard_iface *hard_iface,
|
H A D | main.c | 240 const struct batadv_hard_iface *hard_iface; batadv_is_my_mac() local 244 list_for_each_entry_rcu(hard_iface, &batadv_hardif_list, list) { batadv_is_my_mac() 245 if (hard_iface->if_status != BATADV_IF_ACTIVE) batadv_is_my_mac() 248 if (hard_iface->soft_iface != bat_priv->soft_iface) batadv_is_my_mac() 251 if (batadv_compare_eth(hard_iface->net_dev->dev_addr, addr)) { batadv_is_my_mac() 390 struct batadv_hard_iface *hard_iface; batadv_batman_skb_recv() local 394 hard_iface = container_of(ptype, struct batadv_hard_iface, batadv_batman_skb_recv() 410 if (!hard_iface->soft_iface) batadv_batman_skb_recv() 413 bat_priv = netdev_priv(hard_iface->soft_iface); batadv_batman_skb_recv() 419 if (hard_iface->if_status != BATADV_IF_ACTIVE) batadv_batman_skb_recv() 438 ret = (*batadv_rx_handler[idx])(skb, hard_iface); batadv_batman_skb_recv()
|
H A D | types.h | 1152 int (*bat_iface_enable)(struct batadv_hard_iface *hard_iface); 1153 void (*bat_iface_disable)(struct batadv_hard_iface *hard_iface); 1154 void (*bat_iface_update_mac)(struct batadv_hard_iface *hard_iface); 1155 void (*bat_primary_iface_set)(struct batadv_hard_iface *hard_iface); 1156 void (*bat_ogm_schedule)(struct batadv_hard_iface *hard_iface); 1171 struct batadv_hard_iface *hard_iface);
|
H A D | routing.c | 175 struct batadv_hard_iface *hard_iface, batadv_check_management_packet() 174 batadv_check_management_packet(struct sk_buff *skb, struct batadv_hard_iface *hard_iface, int header_len) batadv_check_management_packet() argument
|