Lines Matching refs:fi

278 	struct fwnet_fragment_info *fi;  in fwnet_frag_overlap()  local
281 list_for_each_entry(fi, &pd->fi_list, fi_link) in fwnet_frag_overlap()
282 if (offset < fi->offset + fi->len && end > fi->offset) in fwnet_frag_overlap()
292 struct fwnet_fragment_info *fi, *fi2, *new; in fwnet_frag_new() local
296 list_for_each_entry(fi, &pd->fi_list, fi_link) { in fwnet_frag_new()
297 if (fi->offset + fi->len == offset) { in fwnet_frag_new()
300 fi2 = list_entry(fi->fi_link.next, in fwnet_frag_new()
302 if (fi->offset + fi->len == fi2->offset) { in fwnet_frag_new()
304 fi->len += len + fi2->len; in fwnet_frag_new()
308 fi->len += len; in fwnet_frag_new()
311 return fi; in fwnet_frag_new()
313 if (offset + len == fi->offset) { in fwnet_frag_new()
316 fi2 = list_entry(fi->fi_link.prev, in fwnet_frag_new()
318 if (fi2->offset + fi2->len == fi->offset) { in fwnet_frag_new()
320 fi2->len += fi->len + len; in fwnet_frag_new()
321 list_del(&fi->fi_link); in fwnet_frag_new()
322 kfree(fi); in fwnet_frag_new()
326 fi->offset = offset; in fwnet_frag_new()
327 fi->len += len; in fwnet_frag_new()
329 return fi; in fwnet_frag_new()
331 if (offset > fi->offset + fi->len) { in fwnet_frag_new()
332 list = &fi->fi_link; in fwnet_frag_new()
335 if (offset + len < fi->offset) { in fwnet_frag_new()
336 list = fi->fi_link.prev; in fwnet_frag_new()
357 struct fwnet_fragment_info *fi; in fwnet_pd_new() local
364 fi = fwnet_frag_new(new, frag_off, frag_len); in fwnet_pd_new()
365 if (fi == NULL) in fwnet_pd_new()
382 kfree(fi); in fwnet_pd_new()
404 struct fwnet_fragment_info *fi, *n; in fwnet_pd_delete() local
406 list_for_each_entry_safe(fi, n, &old->fi_list, fi_link) in fwnet_pd_delete()
407 kfree(fi); in fwnet_pd_delete()
434 struct fwnet_fragment_info *fi; in fwnet_pd_is_complete() local
436 fi = list_entry(pd->fi_list.next, struct fwnet_fragment_info, fi_link); in fwnet_pd_is_complete()
438 return fi->len == pd->datagram_size; in fwnet_pd_is_complete()