Lines Matching refs:hard_iface

48 static void batadv_v_elp_start_timer(struct batadv_hard_iface *hard_iface)  in batadv_v_elp_start_timer()  argument
52 msecs = atomic_read(&hard_iface->bat_v.elp_interval) - BATADV_JITTER; in batadv_v_elp_start_timer()
55 queue_delayed_work(batadv_event_workqueue, &hard_iface->bat_v.elp_wq, in batadv_v_elp_start_timer()
68 struct batadv_hard_iface *hard_iface = neigh->if_incoming; in batadv_v_elp_get_throughput() local
78 throughput = atomic_read(&hard_iface->bat_v.throughput_override); in batadv_v_elp_get_throughput()
85 if (batadv_is_wifi_hardif(hard_iface)) { in batadv_v_elp_get_throughput()
86 if (!batadv_is_cfg80211_hardif(hard_iface)) in batadv_v_elp_get_throughput()
90 real_netdev = batadv_get_real_netdev(hard_iface->net_dev); in batadv_v_elp_get_throughput()
128 ret = __ethtool_get_link_ksettings(hard_iface->net_dev, &link_settings); in batadv_v_elp_get_throughput()
133 hard_iface->bat_v.flags |= BATADV_FULL_DUPLEX; in batadv_v_elp_get_throughput()
135 hard_iface->bat_v.flags &= ~BATADV_FULL_DUPLEX; in batadv_v_elp_get_throughput()
143 if (!(hard_iface->bat_v.flags & BATADV_WARNING_DEFAULT)) { in batadv_v_elp_get_throughput()
144 batadv_info(hard_iface->soft_iface, in batadv_v_elp_get_throughput()
146 hard_iface->net_dev->name, in batadv_v_elp_get_throughput()
149 hard_iface->bat_v.flags |= BATADV_WARNING_DEFAULT; in batadv_v_elp_get_throughput()
194 struct batadv_hard_iface *hard_iface = neigh->if_incoming; in batadv_v_elp_wifi_neigh_probe() local
195 struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface); in batadv_v_elp_wifi_neigh_probe()
202 if (!batadv_is_wifi_hardif(hard_iface)) in batadv_v_elp_wifi_neigh_probe()
220 elp_skb_len = hard_iface->bat_v.elp_skb->len; in batadv_v_elp_wifi_neigh_probe()
221 skb = skb_copy_expand(hard_iface->bat_v.elp_skb, 0, in batadv_v_elp_wifi_neigh_probe()
231 skb_put_zero(skb, probe_len - hard_iface->bat_v.elp_skb->len); in batadv_v_elp_wifi_neigh_probe()
235 hard_iface->net_dev->name, neigh->addr); in batadv_v_elp_wifi_neigh_probe()
237 batadv_send_skb_packet(skb, hard_iface, neigh->addr); in batadv_v_elp_wifi_neigh_probe()
252 struct batadv_hard_iface *hard_iface; in batadv_v_elp_periodic_work() local
261 hard_iface = container_of(bat_v, struct batadv_hard_iface, bat_v); in batadv_v_elp_periodic_work()
262 bat_priv = netdev_priv(hard_iface->soft_iface); in batadv_v_elp_periodic_work()
268 if (hard_iface->if_status == BATADV_IF_NOT_IN_USE || in batadv_v_elp_periodic_work()
269 hard_iface->if_status == BATADV_IF_TO_BE_REMOVED) in batadv_v_elp_periodic_work()
273 if (hard_iface->if_status != BATADV_IF_ACTIVE) in batadv_v_elp_periodic_work()
276 skb = skb_copy(hard_iface->bat_v.elp_skb, GFP_ATOMIC); in batadv_v_elp_periodic_work()
281 elp_packet->seqno = htonl(atomic_read(&hard_iface->bat_v.elp_seqno)); in batadv_v_elp_periodic_work()
282 elp_interval = atomic_read(&hard_iface->bat_v.elp_interval); in batadv_v_elp_periodic_work()
287 hard_iface->net_dev->name, in batadv_v_elp_periodic_work()
288 atomic_read(&hard_iface->bat_v.elp_seqno)); in batadv_v_elp_periodic_work()
290 batadv_send_broadcast_skb(skb, hard_iface); in batadv_v_elp_periodic_work()
292 atomic_inc(&hard_iface->bat_v.elp_seqno); in batadv_v_elp_periodic_work()
306 hlist_for_each_entry_rcu(hardif_neigh, &hard_iface->neigh_list, list) { in batadv_v_elp_periodic_work()
329 batadv_v_elp_start_timer(hard_iface); in batadv_v_elp_periodic_work()
340 int batadv_v_elp_iface_enable(struct batadv_hard_iface *hard_iface) in batadv_v_elp_iface_enable() argument
350 hard_iface->bat_v.elp_skb = dev_alloc_skb(size); in batadv_v_elp_iface_enable()
351 if (!hard_iface->bat_v.elp_skb) in batadv_v_elp_iface_enable()
354 skb_reserve(hard_iface->bat_v.elp_skb, ETH_HLEN + NET_IP_ALIGN); in batadv_v_elp_iface_enable()
355 elp_buff = skb_put_zero(hard_iface->bat_v.elp_skb, in batadv_v_elp_iface_enable()
364 atomic_set(&hard_iface->bat_v.elp_seqno, random_seqno); in batadv_v_elp_iface_enable()
367 hard_iface->bat_v.flags |= BATADV_FULL_DUPLEX; in batadv_v_elp_iface_enable()
370 hard_iface->bat_v.flags &= ~BATADV_WARNING_DEFAULT; in batadv_v_elp_iface_enable()
372 if (batadv_is_wifi_hardif(hard_iface)) in batadv_v_elp_iface_enable()
373 hard_iface->bat_v.flags &= ~BATADV_FULL_DUPLEX; in batadv_v_elp_iface_enable()
375 INIT_DELAYED_WORK(&hard_iface->bat_v.elp_wq, in batadv_v_elp_iface_enable()
377 batadv_v_elp_start_timer(hard_iface); in batadv_v_elp_iface_enable()
388 void batadv_v_elp_iface_disable(struct batadv_hard_iface *hard_iface) in batadv_v_elp_iface_disable() argument
390 cancel_delayed_work_sync(&hard_iface->bat_v.elp_wq); in batadv_v_elp_iface_disable()
392 dev_kfree_skb(hard_iface->bat_v.elp_skb); in batadv_v_elp_iface_disable()
393 hard_iface->bat_v.elp_skb = NULL; in batadv_v_elp_iface_disable()
403 struct batadv_hard_iface *hard_iface) in batadv_v_elp_iface_activate() argument
408 if (!hard_iface->bat_v.elp_skb) in batadv_v_elp_iface_activate()
411 skb = hard_iface->bat_v.elp_skb; in batadv_v_elp_iface_activate()
424 struct batadv_hard_iface *hard_iface; in batadv_v_elp_primary_iface_set() local
428 list_for_each_entry_rcu(hard_iface, &batadv_hardif_list, list) { in batadv_v_elp_primary_iface_set()
429 if (primary_iface->soft_iface != hard_iface->soft_iface) in batadv_v_elp_primary_iface_set()
432 batadv_v_elp_iface_activate(primary_iface, hard_iface); in batadv_v_elp_primary_iface_set()