Lines Matching refs:hard_iface
173 batadv_iv_ogm_neigh_new(struct batadv_hard_iface *hard_iface, in batadv_iv_ogm_neigh_new() argument
181 hard_iface, neigh_addr); in batadv_iv_ogm_neigh_new()
191 static int batadv_iv_ogm_iface_enable(struct batadv_hard_iface *hard_iface) in batadv_iv_ogm_iface_enable() argument
197 mutex_lock(&hard_iface->bat_iv.ogm_buff_mutex); in batadv_iv_ogm_iface_enable()
201 atomic_set(&hard_iface->bat_iv.ogm_seqno, random_seqno); in batadv_iv_ogm_iface_enable()
203 hard_iface->bat_iv.ogm_buff_len = BATADV_OGM_HLEN; in batadv_iv_ogm_iface_enable()
204 ogm_buff = kmalloc(hard_iface->bat_iv.ogm_buff_len, GFP_ATOMIC); in batadv_iv_ogm_iface_enable()
206 mutex_unlock(&hard_iface->bat_iv.ogm_buff_mutex); in batadv_iv_ogm_iface_enable()
210 hard_iface->bat_iv.ogm_buff = ogm_buff; in batadv_iv_ogm_iface_enable()
220 mutex_unlock(&hard_iface->bat_iv.ogm_buff_mutex); in batadv_iv_ogm_iface_enable()
225 static void batadv_iv_ogm_iface_disable(struct batadv_hard_iface *hard_iface) in batadv_iv_ogm_iface_disable() argument
227 mutex_lock(&hard_iface->bat_iv.ogm_buff_mutex); in batadv_iv_ogm_iface_disable()
229 kfree(hard_iface->bat_iv.ogm_buff); in batadv_iv_ogm_iface_disable()
230 hard_iface->bat_iv.ogm_buff = NULL; in batadv_iv_ogm_iface_disable()
232 mutex_unlock(&hard_iface->bat_iv.ogm_buff_mutex); in batadv_iv_ogm_iface_disable()
235 static void batadv_iv_ogm_iface_update_mac(struct batadv_hard_iface *hard_iface) in batadv_iv_ogm_iface_update_mac() argument
240 mutex_lock(&hard_iface->bat_iv.ogm_buff_mutex); in batadv_iv_ogm_iface_update_mac()
242 ogm_buff = hard_iface->bat_iv.ogm_buff; in batadv_iv_ogm_iface_update_mac()
248 hard_iface->net_dev->dev_addr); in batadv_iv_ogm_iface_update_mac()
250 hard_iface->net_dev->dev_addr); in batadv_iv_ogm_iface_update_mac()
253 mutex_unlock(&hard_iface->bat_iv.ogm_buff_mutex); in batadv_iv_ogm_iface_update_mac()
257 batadv_iv_ogm_primary_iface_set(struct batadv_hard_iface *hard_iface) in batadv_iv_ogm_primary_iface_set() argument
262 mutex_lock(&hard_iface->bat_iv.ogm_buff_mutex); in batadv_iv_ogm_primary_iface_set()
264 ogm_buff = hard_iface->bat_iv.ogm_buff; in batadv_iv_ogm_primary_iface_set()
272 mutex_unlock(&hard_iface->bat_iv.ogm_buff_mutex); in batadv_iv_ogm_primary_iface_set()
333 struct batadv_hard_iface *hard_iface) in batadv_iv_ogm_send_to_if() argument
335 struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface); in batadv_iv_ogm_send_to_if()
343 if (hard_iface->if_status != BATADV_IF_ACTIVE) in batadv_iv_ogm_send_to_if()
358 forw_packet->if_incoming == hard_iface) in batadv_iv_ogm_send_to_if()
376 hard_iface->net_dev->name, in batadv_iv_ogm_send_to_if()
377 hard_iface->net_dev->dev_addr); in batadv_iv_ogm_send_to_if()
392 batadv_send_broadcast_skb(skb, hard_iface); in batadv_iv_ogm_send_to_if()
740 batadv_iv_ogm_slide_own_bcast_window(struct batadv_hard_iface *hard_iface) in batadv_iv_ogm_slide_own_bcast_window() argument
742 struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface); in batadv_iv_ogm_slide_own_bcast_window()
759 if (orig_ifinfo->if_outgoing != hard_iface) in batadv_iv_ogm_slide_own_bcast_window()
779 static void batadv_iv_ogm_schedule_buff(struct batadv_hard_iface *hard_iface) in batadv_iv_ogm_schedule_buff() argument
781 struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface); in batadv_iv_ogm_schedule_buff()
782 unsigned char **ogm_buff = &hard_iface->bat_iv.ogm_buff; in batadv_iv_ogm_schedule_buff()
785 int *ogm_buff_len = &hard_iface->bat_iv.ogm_buff_len; in batadv_iv_ogm_schedule_buff()
790 lockdep_assert_held(&hard_iface->bat_iv.ogm_buff_mutex); in batadv_iv_ogm_schedule_buff()
802 if (hard_iface->if_status == BATADV_IF_TO_BE_ACTIVATED) in batadv_iv_ogm_schedule_buff()
803 hard_iface->if_status = BATADV_IF_ACTIVE; in batadv_iv_ogm_schedule_buff()
807 if (hard_iface == primary_if) { in batadv_iv_ogm_schedule_buff()
821 seqno = (u32)atomic_read(&hard_iface->bat_iv.ogm_seqno); in batadv_iv_ogm_schedule_buff()
823 atomic_inc(&hard_iface->bat_iv.ogm_seqno); in batadv_iv_ogm_schedule_buff()
825 batadv_iv_ogm_slide_own_bcast_window(hard_iface); in batadv_iv_ogm_schedule_buff()
829 if (hard_iface != primary_if) { in batadv_iv_ogm_schedule_buff()
834 hard_iface, hard_iface, 1, send_time); in batadv_iv_ogm_schedule_buff()
843 if (tmp_hard_iface->soft_iface != hard_iface->soft_iface) in batadv_iv_ogm_schedule_buff()
850 *ogm_buff_len, hard_iface, in batadv_iv_ogm_schedule_buff()
861 static void batadv_iv_ogm_schedule(struct batadv_hard_iface *hard_iface) in batadv_iv_ogm_schedule() argument
863 if (hard_iface->if_status == BATADV_IF_NOT_IN_USE || in batadv_iv_ogm_schedule()
864 hard_iface->if_status == BATADV_IF_TO_BE_REMOVED) in batadv_iv_ogm_schedule()
867 mutex_lock(&hard_iface->bat_iv.ogm_buff_mutex); in batadv_iv_ogm_schedule()
868 batadv_iv_ogm_schedule_buff(hard_iface); in batadv_iv_ogm_schedule()
869 mutex_unlock(&hard_iface->bat_iv.ogm_buff_mutex); in batadv_iv_ogm_schedule()
1554 struct batadv_hard_iface *hard_iface; in batadv_iv_ogm_process() local
1598 list_for_each_entry_rcu(hard_iface, &batadv_hardif_list, list) { in batadv_iv_ogm_process()
1599 if (hard_iface->if_status != BATADV_IF_ACTIVE) in batadv_iv_ogm_process()
1602 if (hard_iface->soft_iface != if_incoming->soft_iface) in batadv_iv_ogm_process()
1606 hard_iface->net_dev->dev_addr)) in batadv_iv_ogm_process()
1610 hard_iface->net_dev->dev_addr)) in batadv_iv_ogm_process()
1614 hard_iface->net_dev->dev_addr)) in batadv_iv_ogm_process()
1663 list_for_each_entry_rcu(hard_iface, &batadv_hardif_list, list) { in batadv_iv_ogm_process()
1664 if (hard_iface->if_status != BATADV_IF_ACTIVE) in batadv_iv_ogm_process()
1667 if (hard_iface->soft_iface != bat_priv->soft_iface) in batadv_iv_ogm_process()
1670 if (!kref_get_unless_zero(&hard_iface->refcount)) in batadv_iv_ogm_process()
1674 if_incoming, hard_iface); in batadv_iv_ogm_process()
1676 batadv_hardif_put(hard_iface); in batadv_iv_ogm_process()
2102 struct batadv_hard_iface *hard_iface, in batadv_iv_ogm_neigh_dump_hardif() argument
2109 &hard_iface->neigh_list, list) { in batadv_iv_ogm_neigh_dump_hardif()
2136 struct batadv_hard_iface *hard_iface; in batadv_iv_ogm_neigh_dump() local
2153 list_for_each_entry_rcu(hard_iface, &batadv_hardif_list, in batadv_iv_ogm_neigh_dump()
2155 if (hard_iface->soft_iface != bat_priv->soft_iface) in batadv_iv_ogm_neigh_dump()
2164 hard_iface, &idx)) { in batadv_iv_ogm_neigh_dump()
2231 static void batadv_iv_iface_enabled(struct batadv_hard_iface *hard_iface) in batadv_iv_iface_enabled() argument
2234 batadv_iv_ogm_schedule(hard_iface); in batadv_iv_iface_enabled()