Lines Matching refs:hard_iface

175 batadv_iv_ogm_neigh_new(struct batadv_hard_iface *hard_iface,  in batadv_iv_ogm_neigh_new()  argument
183 hard_iface, neigh_addr); in batadv_iv_ogm_neigh_new()
193 static int batadv_iv_ogm_iface_enable(struct batadv_hard_iface *hard_iface) in batadv_iv_ogm_iface_enable() argument
199 mutex_lock(&hard_iface->bat_iv.ogm_buff_mutex); in batadv_iv_ogm_iface_enable()
203 atomic_set(&hard_iface->bat_iv.ogm_seqno, random_seqno); in batadv_iv_ogm_iface_enable()
205 hard_iface->bat_iv.ogm_buff_len = BATADV_OGM_HLEN; in batadv_iv_ogm_iface_enable()
206 ogm_buff = kmalloc(hard_iface->bat_iv.ogm_buff_len, GFP_ATOMIC); in batadv_iv_ogm_iface_enable()
208 mutex_unlock(&hard_iface->bat_iv.ogm_buff_mutex); in batadv_iv_ogm_iface_enable()
212 hard_iface->bat_iv.ogm_buff = ogm_buff; in batadv_iv_ogm_iface_enable()
222 mutex_unlock(&hard_iface->bat_iv.ogm_buff_mutex); in batadv_iv_ogm_iface_enable()
227 static void batadv_iv_ogm_iface_disable(struct batadv_hard_iface *hard_iface) in batadv_iv_ogm_iface_disable() argument
229 mutex_lock(&hard_iface->bat_iv.ogm_buff_mutex); in batadv_iv_ogm_iface_disable()
231 kfree(hard_iface->bat_iv.ogm_buff); in batadv_iv_ogm_iface_disable()
232 hard_iface->bat_iv.ogm_buff = NULL; in batadv_iv_ogm_iface_disable()
234 mutex_unlock(&hard_iface->bat_iv.ogm_buff_mutex); in batadv_iv_ogm_iface_disable()
237 static void batadv_iv_ogm_iface_update_mac(struct batadv_hard_iface *hard_iface) in batadv_iv_ogm_iface_update_mac() argument
242 mutex_lock(&hard_iface->bat_iv.ogm_buff_mutex); in batadv_iv_ogm_iface_update_mac()
244 ogm_buff = hard_iface->bat_iv.ogm_buff; in batadv_iv_ogm_iface_update_mac()
250 hard_iface->net_dev->dev_addr); in batadv_iv_ogm_iface_update_mac()
252 hard_iface->net_dev->dev_addr); in batadv_iv_ogm_iface_update_mac()
255 mutex_unlock(&hard_iface->bat_iv.ogm_buff_mutex); in batadv_iv_ogm_iface_update_mac()
259 batadv_iv_ogm_primary_iface_set(struct batadv_hard_iface *hard_iface) in batadv_iv_ogm_primary_iface_set() argument
264 mutex_lock(&hard_iface->bat_iv.ogm_buff_mutex); in batadv_iv_ogm_primary_iface_set()
266 ogm_buff = hard_iface->bat_iv.ogm_buff; in batadv_iv_ogm_primary_iface_set()
274 mutex_unlock(&hard_iface->bat_iv.ogm_buff_mutex); in batadv_iv_ogm_primary_iface_set()
335 struct batadv_hard_iface *hard_iface) in batadv_iv_ogm_send_to_if() argument
337 struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface); in batadv_iv_ogm_send_to_if()
345 if (hard_iface->if_status != BATADV_IF_ACTIVE) in batadv_iv_ogm_send_to_if()
360 forw_packet->if_incoming == hard_iface) in batadv_iv_ogm_send_to_if()
378 hard_iface->net_dev->name, in batadv_iv_ogm_send_to_if()
379 hard_iface->net_dev->dev_addr); in batadv_iv_ogm_send_to_if()
394 batadv_send_broadcast_skb(skb, hard_iface); in batadv_iv_ogm_send_to_if()
741 batadv_iv_ogm_slide_own_bcast_window(struct batadv_hard_iface *hard_iface) in batadv_iv_ogm_slide_own_bcast_window() argument
743 struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface); in batadv_iv_ogm_slide_own_bcast_window()
760 if (orig_ifinfo->if_outgoing != hard_iface) in batadv_iv_ogm_slide_own_bcast_window()
780 static void batadv_iv_ogm_schedule_buff(struct batadv_hard_iface *hard_iface) in batadv_iv_ogm_schedule_buff() argument
782 struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface); in batadv_iv_ogm_schedule_buff()
783 unsigned char **ogm_buff = &hard_iface->bat_iv.ogm_buff; in batadv_iv_ogm_schedule_buff()
786 int *ogm_buff_len = &hard_iface->bat_iv.ogm_buff_len; in batadv_iv_ogm_schedule_buff()
791 lockdep_assert_held(&hard_iface->bat_iv.ogm_buff_mutex); in batadv_iv_ogm_schedule_buff()
803 if (hard_iface->if_status == BATADV_IF_TO_BE_ACTIVATED) in batadv_iv_ogm_schedule_buff()
804 hard_iface->if_status = BATADV_IF_ACTIVE; in batadv_iv_ogm_schedule_buff()
808 if (hard_iface == primary_if) { in batadv_iv_ogm_schedule_buff()
822 seqno = (u32)atomic_read(&hard_iface->bat_iv.ogm_seqno); in batadv_iv_ogm_schedule_buff()
824 atomic_inc(&hard_iface->bat_iv.ogm_seqno); in batadv_iv_ogm_schedule_buff()
826 batadv_iv_ogm_slide_own_bcast_window(hard_iface); in batadv_iv_ogm_schedule_buff()
830 if (hard_iface != primary_if) { in batadv_iv_ogm_schedule_buff()
835 hard_iface, hard_iface, 1, send_time); in batadv_iv_ogm_schedule_buff()
844 if (tmp_hard_iface->soft_iface != hard_iface->soft_iface) in batadv_iv_ogm_schedule_buff()
851 *ogm_buff_len, hard_iface, in batadv_iv_ogm_schedule_buff()
863 static void batadv_iv_ogm_schedule(struct batadv_hard_iface *hard_iface) in batadv_iv_ogm_schedule() argument
865 if (hard_iface->if_status == BATADV_IF_NOT_IN_USE || in batadv_iv_ogm_schedule()
866 hard_iface->if_status == BATADV_IF_TO_BE_REMOVED) in batadv_iv_ogm_schedule()
869 mutex_lock(&hard_iface->bat_iv.ogm_buff_mutex); in batadv_iv_ogm_schedule()
870 batadv_iv_ogm_schedule_buff(hard_iface); in batadv_iv_ogm_schedule()
871 mutex_unlock(&hard_iface->bat_iv.ogm_buff_mutex); in batadv_iv_ogm_schedule()
1566 struct batadv_hard_iface *hard_iface; in batadv_iv_ogm_process() local
1610 list_for_each_entry_rcu(hard_iface, &batadv_hardif_list, list) { in batadv_iv_ogm_process()
1611 if (hard_iface->if_status != BATADV_IF_ACTIVE) in batadv_iv_ogm_process()
1614 if (hard_iface->soft_iface != if_incoming->soft_iface) in batadv_iv_ogm_process()
1618 hard_iface->net_dev->dev_addr)) in batadv_iv_ogm_process()
1622 hard_iface->net_dev->dev_addr)) in batadv_iv_ogm_process()
1626 hard_iface->net_dev->dev_addr)) in batadv_iv_ogm_process()
1675 list_for_each_entry_rcu(hard_iface, &batadv_hardif_list, list) { in batadv_iv_ogm_process()
1676 if (hard_iface->if_status != BATADV_IF_ACTIVE) in batadv_iv_ogm_process()
1679 if (hard_iface->soft_iface != bat_priv->soft_iface) in batadv_iv_ogm_process()
1682 if (!kref_get_unless_zero(&hard_iface->refcount)) in batadv_iv_ogm_process()
1686 if_incoming, hard_iface); in batadv_iv_ogm_process()
1688 batadv_hardif_put(hard_iface); in batadv_iv_ogm_process()
2142 struct batadv_hard_iface *hard_iface; in batadv_iv_neigh_print() local
2148 list_for_each_entry_rcu(hard_iface, &batadv_hardif_list, list) { in batadv_iv_neigh_print()
2149 if (hard_iface->soft_iface != net_dev) in batadv_iv_neigh_print()
2153 &hard_iface->neigh_list, list) { in batadv_iv_neigh_print()
2266 struct batadv_hard_iface *hard_iface, in batadv_iv_ogm_neigh_dump_hardif() argument
2273 &hard_iface->neigh_list, list) { in batadv_iv_ogm_neigh_dump_hardif()
2300 struct batadv_hard_iface *hard_iface; in batadv_iv_ogm_neigh_dump() local
2317 list_for_each_entry_rcu(hard_iface, &batadv_hardif_list, in batadv_iv_ogm_neigh_dump()
2319 if (hard_iface->soft_iface != bat_priv->soft_iface) in batadv_iv_ogm_neigh_dump()
2328 hard_iface, &idx)) { in batadv_iv_ogm_neigh_dump()
2395 static void batadv_iv_iface_enabled(struct batadv_hard_iface *hard_iface) in batadv_iv_iface_enabled() argument
2398 batadv_iv_ogm_schedule(hard_iface); in batadv_iv_iface_enabled()