Lines Matching defs:nc_packet

260  * @nc_packet: the nc packet to free
263 static void batadv_nc_packet_free(struct batadv_nc_packet *nc_packet,
267 kfree_skb(nc_packet->skb);
269 consume_skb(nc_packet->skb);
271 batadv_nc_path_put(nc_packet->nc_path);
272 kfree(nc_packet);
577 * batadv_nc_send_packet() - send non-coded packet and free nc_packet struct
578 * @nc_packet: the nc packet to send
580 static void batadv_nc_send_packet(struct batadv_nc_packet *nc_packet)
582 batadv_send_unicast_skb(nc_packet->skb, nc_packet->neigh_node);
583 nc_packet->skb = NULL;
584 batadv_nc_packet_free(nc_packet, false);
588 * batadv_nc_sniffed_purge() - Checks timestamp of given sniffed nc_packet.
591 * @nc_packet: the nc packet to be checked
593 * Checks whether the given sniffed (overheard) nc_packet has hit its buffering
602 struct batadv_nc_packet *nc_packet)
613 !batadv_has_timed_out(nc_packet->timestamp, timeout))
617 list_del(&nc_packet->list);
618 batadv_nc_packet_free(nc_packet, true);
630 * @nc_packet: the nc packet to be checked
641 struct batadv_nc_packet *nc_packet)
651 !batadv_has_timed_out(nc_packet->timestamp, timeout))
657 nc_packet->skb->len + ETH_HLEN);
658 list_del(&nc_packet->list);
659 batadv_nc_send_packet(nc_packet);
681 struct batadv_nc_packet *nc_packet, *nc_packet_tmp;
698 list_for_each_entry_safe(nc_packet, nc_packet_tmp,
700 ret = process_fn(bat_priv, nc_path, nc_packet);
1047 * @nc_packet: structure containing the packet to the skb can be coded with
1055 struct batadv_nc_packet *nc_packet,
1089 neigh_tmp = nc_packet->neigh_node;
1109 /* Destination from nc_packet is selected for MAC-header */
1110 first_dest = nc_packet->neigh_node;
1111 first_source = nc_packet->nc_path->prev_hop;
1114 packet1 = (struct batadv_unicast_packet *)nc_packet->skb->data;
1116 packet_id1 = nc_packet->packet_id;
1123 second_dest = nc_packet->neigh_node;
1124 second_source = nc_packet->nc_path->prev_hop;
1126 packet2 = (struct batadv_unicast_packet *)nc_packet->skb->data;
1129 packet_id2 = nc_packet->packet_id;
1135 if (skb->len <= nc_packet->skb->len) {
1136 skb_dest = nc_packet->skb;
1140 skb_src = nc_packet->skb;
1215 /* avoid duplicate free of skb from nc_packet */
1216 nc_packet->skb = NULL;
1217 batadv_nc_packet_free(nc_packet, false);
1278 struct batadv_nc_packet *nc_packet, *nc_packet_tmp;
1305 list_for_each_entry_safe(nc_packet, nc_packet_tmp,
1307 if (!batadv_nc_skb_coding_possible(nc_packet->skb,
1313 list_del(&nc_packet->list);
1314 nc_packet_out = nc_packet;
1346 struct batadv_nc_packet *nc_packet = NULL;
1361 nc_packet = batadv_nc_path_search(bat_priv, in_nc_node,
1363 if (nc_packet)
1369 return nc_packet;
1428 struct batadv_nc_packet *nc_packet = NULL;
1433 nc_packet = batadv_nc_skb_src_search(bat_priv, skb,
1438 if (nc_packet)
1443 if (!nc_packet)
1449 batadv_nc_skb_store_before_coding(bat_priv, nc_packet->skb,
1450 nc_packet->neigh_node->addr);
1453 if (batadv_nc_code_packets(bat_priv, skb, ethhdr, nc_packet,
1461 batadv_nc_send_packet(nc_packet);
1479 struct batadv_nc_packet *nc_packet;
1481 nc_packet = kzalloc(sizeof(*nc_packet), GFP_ATOMIC);
1482 if (!nc_packet)
1485 /* Initialize nc_packet */
1486 nc_packet->timestamp = jiffies;
1487 nc_packet->packet_id = packet_id;
1488 nc_packet->skb = skb;
1489 nc_packet->neigh_node = neigh_node;
1490 nc_packet->nc_path = nc_path;
1494 list_add_tail(&nc_packet->list, &nc_path->packet_list);
1640 * in nc_packet
1643 * @nc_packet: decode data needed to decode the skb
1650 struct batadv_nc_packet *nc_packet)
1710 nc_packet->skb->data + h_size,
1714 if (nc_packet->skb->len > coding_len + h_size) {
1728 batadv_nc_packet_free(nc_packet, false);
1747 struct batadv_nc_packet *tmp_nc_packet, *nc_packet = NULL;
1772 /* Find matching nc_packet */
1779 nc_packet = tmp_nc_packet;
1785 if (nc_packet)
1790 if (!nc_packet)
1794 return nc_packet;
1812 struct batadv_nc_packet *nc_packet;
1836 nc_packet = batadv_nc_find_decoding_packet(bat_priv, ethhdr,
1838 if (!nc_packet) {
1847 if (skb_linearize(nc_packet->skb) < 0)
1851 unicast_packet = batadv_nc_skb_decode_packet(bat_priv, skb, nc_packet);
1865 batadv_nc_packet_free(nc_packet, true);