Lines Matching refs:chain

64 	struct batadv_frag_table_entry *chain;  in batadv_frag_purge_orig()  local
68 chain = &orig_node->fragments[i]; in batadv_frag_purge_orig()
69 spin_lock_bh(&chain->lock); in batadv_frag_purge_orig()
71 if (!check_cb || check_cb(chain)) { in batadv_frag_purge_orig()
72 batadv_frag_clear_chain(&chain->fragment_list, true); in batadv_frag_purge_orig()
73 chain->size = 0; in batadv_frag_purge_orig()
76 spin_unlock_bh(&chain->lock); in batadv_frag_purge_orig()
108 static bool batadv_frag_init_chain(struct batadv_frag_table_entry *chain, in batadv_frag_init_chain() argument
111 lockdep_assert_held(&chain->lock); in batadv_frag_init_chain()
113 if (chain->seqno == seqno) in batadv_frag_init_chain()
116 if (!hlist_empty(&chain->fragment_list)) in batadv_frag_init_chain()
117 batadv_frag_clear_chain(&chain->fragment_list, true); in batadv_frag_init_chain()
119 chain->size = 0; in batadv_frag_init_chain()
120 chain->seqno = seqno; in batadv_frag_init_chain()
142 struct batadv_frag_table_entry *chain; in batadv_frag_insert_packet() local
172 chain = &orig_node->fragments[bucket]; in batadv_frag_insert_packet()
173 spin_lock_bh(&chain->lock); in batadv_frag_insert_packet()
174 if (batadv_frag_init_chain(chain, seqno)) { in batadv_frag_insert_packet()
175 hlist_add_head(&frag_entry_new->list, &chain->fragment_list); in batadv_frag_insert_packet()
176 chain->size = skb->len - hdr_size; in batadv_frag_insert_packet()
177 chain->timestamp = jiffies; in batadv_frag_insert_packet()
178 chain->total_size = ntohs(frag_packet->total_size); in batadv_frag_insert_packet()
184 hlist_for_each_entry(frag_entry_curr, &chain->fragment_list, list) { in batadv_frag_insert_packet()
193 chain->size += skb->len - hdr_size; in batadv_frag_insert_packet()
194 chain->timestamp = jiffies; in batadv_frag_insert_packet()
206 chain->size += skb->len - hdr_size; in batadv_frag_insert_packet()
207 chain->timestamp = jiffies; in batadv_frag_insert_packet()
212 if (chain->size > batadv_frag_size_limit() || in batadv_frag_insert_packet()
213 chain->total_size != ntohs(frag_packet->total_size) || in batadv_frag_insert_packet()
214 chain->total_size > batadv_frag_size_limit()) { in batadv_frag_insert_packet()
219 batadv_frag_clear_chain(&chain->fragment_list, true); in batadv_frag_insert_packet()
220 chain->size = 0; in batadv_frag_insert_packet()
221 } else if (ntohs(frag_packet->total_size) == chain->size) { in batadv_frag_insert_packet()
223 hlist_move_list(&chain->fragment_list, chain_out); in batadv_frag_insert_packet()
224 chain->size = 0; in batadv_frag_insert_packet()
228 spin_unlock_bh(&chain->lock); in batadv_frag_insert_packet()
249 batadv_frag_merge_packets(struct hlist_head *chain) in batadv_frag_merge_packets() argument
260 entry = hlist_entry(chain->first, struct batadv_frag_list_entry, list); in batadv_frag_merge_packets()
287 hlist_for_each_entry(entry, chain, list) { in batadv_frag_merge_packets()
294 batadv_frag_clear_chain(chain, dropped); in batadv_frag_merge_packets()