Lines Matching refs:fi
287 struct fwnet_fragment_info *fi; in fwnet_frag_overlap() local
290 list_for_each_entry(fi, &pd->fi_list, fi_link) in fwnet_frag_overlap()
291 if (offset < fi->offset + fi->len && end > fi->offset) in fwnet_frag_overlap()
301 struct fwnet_fragment_info *fi, *fi2, *new; in fwnet_frag_new() local
305 list_for_each_entry(fi, &pd->fi_list, fi_link) { in fwnet_frag_new()
306 if (fi->offset + fi->len == offset) { in fwnet_frag_new()
309 fi2 = list_entry(fi->fi_link.next, in fwnet_frag_new()
311 if (fi->offset + fi->len == fi2->offset) { in fwnet_frag_new()
313 fi->len += len + fi2->len; in fwnet_frag_new()
317 fi->len += len; in fwnet_frag_new()
320 return fi; in fwnet_frag_new()
322 if (offset + len == fi->offset) { in fwnet_frag_new()
325 fi2 = list_entry(fi->fi_link.prev, in fwnet_frag_new()
327 if (fi2->offset + fi2->len == fi->offset) { in fwnet_frag_new()
329 fi2->len += fi->len + len; in fwnet_frag_new()
330 list_del(&fi->fi_link); in fwnet_frag_new()
331 kfree(fi); in fwnet_frag_new()
335 fi->offset = offset; in fwnet_frag_new()
336 fi->len += len; in fwnet_frag_new()
338 return fi; in fwnet_frag_new()
340 if (offset > fi->offset + fi->len) { in fwnet_frag_new()
341 list = &fi->fi_link; in fwnet_frag_new()
344 if (offset + len < fi->offset) { in fwnet_frag_new()
345 list = fi->fi_link.prev; in fwnet_frag_new()
366 struct fwnet_fragment_info *fi; in fwnet_pd_new() local
373 fi = fwnet_frag_new(new, frag_off, frag_len); in fwnet_pd_new()
374 if (fi == NULL) in fwnet_pd_new()
391 kfree(fi); in fwnet_pd_new()
413 struct fwnet_fragment_info *fi, *n; in fwnet_pd_delete() local
415 list_for_each_entry_safe(fi, n, &old->fi_list, fi_link) in fwnet_pd_delete()
416 kfree(fi); in fwnet_pd_delete()
443 struct fwnet_fragment_info *fi; in fwnet_pd_is_complete() local
445 fi = list_entry(pd->fi_list.next, struct fwnet_fragment_info, fi_link); in fwnet_pd_is_complete()
447 return fi->len == pd->datagram_size; in fwnet_pd_is_complete()