Lines Matching refs:hard_iface

49 static void batadv_v_elp_start_timer(struct batadv_hard_iface *hard_iface)  in batadv_v_elp_start_timer()  argument
53 msecs = atomic_read(&hard_iface->bat_v.elp_interval) - BATADV_JITTER; in batadv_v_elp_start_timer()
56 queue_delayed_work(batadv_event_workqueue, &hard_iface->bat_v.elp_wq, in batadv_v_elp_start_timer()
69 struct batadv_hard_iface *hard_iface = neigh->if_incoming; in batadv_v_elp_get_throughput() local
79 throughput = atomic_read(&hard_iface->bat_v.throughput_override); in batadv_v_elp_get_throughput()
86 if (batadv_is_wifi_hardif(hard_iface)) { in batadv_v_elp_get_throughput()
87 if (!batadv_is_cfg80211_hardif(hard_iface)) in batadv_v_elp_get_throughput()
91 real_netdev = batadv_get_real_netdev(hard_iface->net_dev); in batadv_v_elp_get_throughput()
130 ret = __ethtool_get_link_ksettings(hard_iface->net_dev, &link_settings); in batadv_v_elp_get_throughput()
135 hard_iface->bat_v.flags |= BATADV_FULL_DUPLEX; in batadv_v_elp_get_throughput()
137 hard_iface->bat_v.flags &= ~BATADV_FULL_DUPLEX; in batadv_v_elp_get_throughput()
145 if (!(hard_iface->bat_v.flags & BATADV_WARNING_DEFAULT)) { in batadv_v_elp_get_throughput()
146 batadv_info(hard_iface->soft_iface, in batadv_v_elp_get_throughput()
148 hard_iface->net_dev->name, in batadv_v_elp_get_throughput()
151 hard_iface->bat_v.flags |= BATADV_WARNING_DEFAULT; in batadv_v_elp_get_throughput()
196 struct batadv_hard_iface *hard_iface = neigh->if_incoming; in batadv_v_elp_wifi_neigh_probe() local
197 struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface); in batadv_v_elp_wifi_neigh_probe()
204 if (!batadv_is_wifi_hardif(hard_iface)) in batadv_v_elp_wifi_neigh_probe()
222 elp_skb_len = hard_iface->bat_v.elp_skb->len; in batadv_v_elp_wifi_neigh_probe()
223 skb = skb_copy_expand(hard_iface->bat_v.elp_skb, 0, in batadv_v_elp_wifi_neigh_probe()
233 skb_put_zero(skb, probe_len - hard_iface->bat_v.elp_skb->len); in batadv_v_elp_wifi_neigh_probe()
237 hard_iface->net_dev->name, neigh->addr); in batadv_v_elp_wifi_neigh_probe()
239 batadv_send_skb_packet(skb, hard_iface, neigh->addr); in batadv_v_elp_wifi_neigh_probe()
254 struct batadv_hard_iface *hard_iface; in batadv_v_elp_periodic_work() local
263 hard_iface = container_of(bat_v, struct batadv_hard_iface, bat_v); in batadv_v_elp_periodic_work()
264 bat_priv = netdev_priv(hard_iface->soft_iface); in batadv_v_elp_periodic_work()
270 if (hard_iface->if_status == BATADV_IF_NOT_IN_USE || in batadv_v_elp_periodic_work()
271 hard_iface->if_status == BATADV_IF_TO_BE_REMOVED) in batadv_v_elp_periodic_work()
275 if (hard_iface->if_status != BATADV_IF_ACTIVE) in batadv_v_elp_periodic_work()
278 skb = skb_copy(hard_iface->bat_v.elp_skb, GFP_ATOMIC); in batadv_v_elp_periodic_work()
283 elp_packet->seqno = htonl(atomic_read(&hard_iface->bat_v.elp_seqno)); in batadv_v_elp_periodic_work()
284 elp_interval = atomic_read(&hard_iface->bat_v.elp_interval); in batadv_v_elp_periodic_work()
289 hard_iface->net_dev->name, in batadv_v_elp_periodic_work()
290 atomic_read(&hard_iface->bat_v.elp_seqno)); in batadv_v_elp_periodic_work()
292 batadv_send_broadcast_skb(skb, hard_iface); in batadv_v_elp_periodic_work()
294 atomic_inc(&hard_iface->bat_v.elp_seqno); in batadv_v_elp_periodic_work()
308 hlist_for_each_entry_rcu(hardif_neigh, &hard_iface->neigh_list, list) { in batadv_v_elp_periodic_work()
331 batadv_v_elp_start_timer(hard_iface); in batadv_v_elp_periodic_work()
342 int batadv_v_elp_iface_enable(struct batadv_hard_iface *hard_iface) in batadv_v_elp_iface_enable() argument
352 hard_iface->bat_v.elp_skb = dev_alloc_skb(size); in batadv_v_elp_iface_enable()
353 if (!hard_iface->bat_v.elp_skb) in batadv_v_elp_iface_enable()
356 skb_reserve(hard_iface->bat_v.elp_skb, ETH_HLEN + NET_IP_ALIGN); in batadv_v_elp_iface_enable()
357 elp_buff = skb_put_zero(hard_iface->bat_v.elp_skb, in batadv_v_elp_iface_enable()
366 atomic_set(&hard_iface->bat_v.elp_seqno, random_seqno); in batadv_v_elp_iface_enable()
369 hard_iface->bat_v.flags |= BATADV_FULL_DUPLEX; in batadv_v_elp_iface_enable()
372 hard_iface->bat_v.flags &= ~BATADV_WARNING_DEFAULT; in batadv_v_elp_iface_enable()
374 if (batadv_is_wifi_hardif(hard_iface)) in batadv_v_elp_iface_enable()
375 hard_iface->bat_v.flags &= ~BATADV_FULL_DUPLEX; in batadv_v_elp_iface_enable()
377 INIT_DELAYED_WORK(&hard_iface->bat_v.elp_wq, in batadv_v_elp_iface_enable()
379 batadv_v_elp_start_timer(hard_iface); in batadv_v_elp_iface_enable()
390 void batadv_v_elp_iface_disable(struct batadv_hard_iface *hard_iface) in batadv_v_elp_iface_disable() argument
392 cancel_delayed_work_sync(&hard_iface->bat_v.elp_wq); in batadv_v_elp_iface_disable()
394 dev_kfree_skb(hard_iface->bat_v.elp_skb); in batadv_v_elp_iface_disable()
395 hard_iface->bat_v.elp_skb = NULL; in batadv_v_elp_iface_disable()
405 struct batadv_hard_iface *hard_iface) in batadv_v_elp_iface_activate() argument
410 if (!hard_iface->bat_v.elp_skb) in batadv_v_elp_iface_activate()
413 skb = hard_iface->bat_v.elp_skb; in batadv_v_elp_iface_activate()
426 struct batadv_hard_iface *hard_iface; in batadv_v_elp_primary_iface_set() local
430 list_for_each_entry_rcu(hard_iface, &batadv_hardif_list, list) { in batadv_v_elp_primary_iface_set()
431 if (primary_iface->soft_iface != hard_iface->soft_iface) in batadv_v_elp_primary_iface_set()
434 batadv_v_elp_iface_activate(primary_iface, hard_iface); in batadv_v_elp_primary_iface_set()