Lines Matching refs:forw_packet
390 static void batadv_forw_packet_free(struct batadv_forw_packet *forw_packet) in batadv_forw_packet_free() argument
392 if (forw_packet->skb) in batadv_forw_packet_free()
393 kfree_skb(forw_packet->skb); in batadv_forw_packet_free()
394 if (forw_packet->if_incoming) in batadv_forw_packet_free()
395 batadv_hardif_free_ref(forw_packet->if_incoming); in batadv_forw_packet_free()
396 if (forw_packet->if_outgoing) in batadv_forw_packet_free()
397 batadv_hardif_free_ref(forw_packet->if_outgoing); in batadv_forw_packet_free()
398 kfree(forw_packet); in batadv_forw_packet_free()
403 struct batadv_forw_packet *forw_packet, in _batadv_add_bcast_packet_to_list() argument
408 hlist_add_head(&forw_packet->list, &bat_priv->forw_bcast_list); in _batadv_add_bcast_packet_to_list()
412 queue_delayed_work(batadv_event_workqueue, &forw_packet->delayed_work, in _batadv_add_bcast_packet_to_list()
430 struct batadv_forw_packet *forw_packet; in batadv_add_bcast_packet_to_list() local
444 forw_packet = kmalloc(sizeof(*forw_packet), GFP_ATOMIC); in batadv_add_bcast_packet_to_list()
446 if (!forw_packet) in batadv_add_bcast_packet_to_list()
459 forw_packet->skb = newskb; in batadv_add_bcast_packet_to_list()
460 forw_packet->if_incoming = primary_if; in batadv_add_bcast_packet_to_list()
461 forw_packet->if_outgoing = NULL; in batadv_add_bcast_packet_to_list()
464 forw_packet->num_packets = 0; in batadv_add_bcast_packet_to_list()
466 INIT_DELAYED_WORK(&forw_packet->delayed_work, in batadv_add_bcast_packet_to_list()
469 _batadv_add_bcast_packet_to_list(bat_priv, forw_packet, delay); in batadv_add_bcast_packet_to_list()
473 kfree(forw_packet); in batadv_add_bcast_packet_to_list()
486 struct batadv_forw_packet *forw_packet; in batadv_send_outstanding_bcast_packet() local
492 forw_packet = container_of(delayed_work, struct batadv_forw_packet, in batadv_send_outstanding_bcast_packet()
494 soft_iface = forw_packet->if_incoming->soft_iface; in batadv_send_outstanding_bcast_packet()
498 hlist_del(&forw_packet->list); in batadv_send_outstanding_bcast_packet()
504 if (batadv_dat_drop_broadcast_packet(bat_priv, forw_packet)) in batadv_send_outstanding_bcast_packet()
513 if (forw_packet->num_packets >= hard_iface->num_bcasts) in batadv_send_outstanding_bcast_packet()
517 skb1 = skb_clone(forw_packet->skb, GFP_ATOMIC); in batadv_send_outstanding_bcast_packet()
524 forw_packet->num_packets++; in batadv_send_outstanding_bcast_packet()
527 if (forw_packet->num_packets < BATADV_NUM_BCASTS_MAX) { in batadv_send_outstanding_bcast_packet()
528 _batadv_add_bcast_packet_to_list(bat_priv, forw_packet, in batadv_send_outstanding_bcast_packet()
534 batadv_forw_packet_free(forw_packet); in batadv_send_outstanding_bcast_packet()
541 struct batadv_forw_packet *forw_packet; in batadv_send_outstanding_bat_ogm_packet() local
545 forw_packet = container_of(delayed_work, struct batadv_forw_packet, in batadv_send_outstanding_bat_ogm_packet()
547 bat_priv = netdev_priv(forw_packet->if_incoming->soft_iface); in batadv_send_outstanding_bat_ogm_packet()
549 hlist_del(&forw_packet->list); in batadv_send_outstanding_bat_ogm_packet()
555 bat_priv->bat_algo_ops->bat_ogm_emit(forw_packet); in batadv_send_outstanding_bat_ogm_packet()
565 if (forw_packet->own && in batadv_send_outstanding_bat_ogm_packet()
566 forw_packet->if_incoming == forw_packet->if_outgoing) in batadv_send_outstanding_bat_ogm_packet()
567 batadv_schedule_bat_ogm(forw_packet->if_incoming); in batadv_send_outstanding_bat_ogm_packet()
571 if (!forw_packet->own) in batadv_send_outstanding_bat_ogm_packet()
574 batadv_forw_packet_free(forw_packet); in batadv_send_outstanding_bat_ogm_packet()
581 struct batadv_forw_packet *forw_packet; in batadv_purge_outstanding_packets() local
595 hlist_for_each_entry_safe(forw_packet, safe_tmp_node, in batadv_purge_outstanding_packets()
601 (forw_packet->if_incoming != hard_iface)) in batadv_purge_outstanding_packets()
609 pending = cancel_delayed_work_sync(&forw_packet->delayed_work); in batadv_purge_outstanding_packets()
613 hlist_del(&forw_packet->list); in batadv_purge_outstanding_packets()
614 batadv_forw_packet_free(forw_packet); in batadv_purge_outstanding_packets()
621 hlist_for_each_entry_safe(forw_packet, safe_tmp_node, in batadv_purge_outstanding_packets()
627 (forw_packet->if_incoming != hard_iface) && in batadv_purge_outstanding_packets()
628 (forw_packet->if_outgoing != hard_iface)) in batadv_purge_outstanding_packets()
636 pending = cancel_delayed_work_sync(&forw_packet->delayed_work); in batadv_purge_outstanding_packets()
640 hlist_del(&forw_packet->list); in batadv_purge_outstanding_packets()
641 batadv_forw_packet_free(forw_packet); in batadv_purge_outstanding_packets()