Lines Matching refs:fi
282 struct fwnet_fragment_info *fi; in fwnet_frag_overlap() local
285 list_for_each_entry(fi, &pd->fi_list, fi_link) in fwnet_frag_overlap()
286 if (offset < fi->offset + fi->len && end > fi->offset) in fwnet_frag_overlap()
296 struct fwnet_fragment_info *fi, *fi2, *new; in fwnet_frag_new() local
300 list_for_each_entry(fi, &pd->fi_list, fi_link) { in fwnet_frag_new()
301 if (fi->offset + fi->len == offset) { in fwnet_frag_new()
304 fi2 = list_entry(fi->fi_link.next, in fwnet_frag_new()
306 if (fi->offset + fi->len == fi2->offset) { in fwnet_frag_new()
308 fi->len += len + fi2->len; in fwnet_frag_new()
312 fi->len += len; in fwnet_frag_new()
315 return fi; in fwnet_frag_new()
317 if (offset + len == fi->offset) { in fwnet_frag_new()
320 fi2 = list_entry(fi->fi_link.prev, in fwnet_frag_new()
322 if (fi2->offset + fi2->len == fi->offset) { in fwnet_frag_new()
324 fi2->len += fi->len + len; in fwnet_frag_new()
325 list_del(&fi->fi_link); in fwnet_frag_new()
326 kfree(fi); in fwnet_frag_new()
330 fi->offset = offset; in fwnet_frag_new()
331 fi->len += len; in fwnet_frag_new()
333 return fi; in fwnet_frag_new()
335 if (offset > fi->offset + fi->len) { in fwnet_frag_new()
336 list = &fi->fi_link; in fwnet_frag_new()
339 if (offset + len < fi->offset) { in fwnet_frag_new()
340 list = fi->fi_link.prev; in fwnet_frag_new()
361 struct fwnet_fragment_info *fi; in fwnet_pd_new() local
368 fi = fwnet_frag_new(new, frag_off, frag_len); in fwnet_pd_new()
369 if (fi == NULL) in fwnet_pd_new()
386 kfree(fi); in fwnet_pd_new()
408 struct fwnet_fragment_info *fi, *n; in fwnet_pd_delete() local
410 list_for_each_entry_safe(fi, n, &old->fi_list, fi_link) in fwnet_pd_delete()
411 kfree(fi); in fwnet_pd_delete()
438 struct fwnet_fragment_info *fi; in fwnet_pd_is_complete() local
440 fi = list_entry(pd->fi_list.next, struct fwnet_fragment_info, fi_link); in fwnet_pd_is_complete()
442 return fi->len == pd->datagram_size; in fwnet_pd_is_complete()