Searched refs:hard_iface (Results 1 - 15 of 15) sorted by relevance

/linux-4.4.14/net/batman-adv/
H A Dhard-interface.c51 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 Dhard-interface.h57 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 Ddebugfs.h35 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 Dsend.c56 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 Ddebugfs.c476 * @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 Doriginator.c422 * @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 Dsysfs.c751 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 Dbat_iv_ogm.c294 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 Doriginator.h45 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 Dsend.h32 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 Dsoft-interface.c859 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 Drouting.h28 struct batadv_hard_iface *hard_iface,
H A Dmain.c240 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 Dtypes.h1152 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 Drouting.c175 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

Completed in 179 milliseconds