• Home
  • Raw
  • Download

Lines Matching refs:head

221 static void inet_frag_destroy_rcu(struct rcu_head *head)  in inet_frag_destroy_rcu()  argument
223 struct inet_frag_queue *q = container_of(head, struct inet_frag_queue, in inet_frag_destroy_rcu()
413 struct sk_buff *fp, *head = skb_rb_first(&q->rb_fragments); in inet_frag_reasm_prepare() local
417 if (head != skb) { in inet_frag_reasm_prepare()
429 skb_morph(skb, head); in inet_frag_reasm_prepare()
430 FRAG_CB(skb)->next_frag = FRAG_CB(head)->next_frag; in inet_frag_reasm_prepare()
431 rb_replace_node(&head->rbnode, &skb->rbnode, in inet_frag_reasm_prepare()
433 consume_skb(head); in inet_frag_reasm_prepare()
434 head = skb; in inet_frag_reasm_prepare()
436 WARN_ON(head->ip_defrag_offset != 0); in inet_frag_reasm_prepare()
438 delta = -head->truesize; in inet_frag_reasm_prepare()
441 if (skb_unclone(head, GFP_ATOMIC)) in inet_frag_reasm_prepare()
444 delta += head->truesize; in inet_frag_reasm_prepare()
452 if (skb_has_frag_list(head)) { in inet_frag_reasm_prepare()
459 skb_shinfo(clone)->frag_list = skb_shinfo(head)->frag_list; in inet_frag_reasm_prepare()
460 skb_frag_list_init(head); in inet_frag_reasm_prepare()
461 for (i = 0; i < skb_shinfo(head)->nr_frags; i++) in inet_frag_reasm_prepare()
462 plen += skb_frag_size(&skb_shinfo(head)->frags[i]); in inet_frag_reasm_prepare()
463 clone->data_len = head->data_len - plen; in inet_frag_reasm_prepare()
465 head->truesize += clone->truesize; in inet_frag_reasm_prepare()
467 clone->ip_summed = head->ip_summed; in inet_frag_reasm_prepare()
469 skb_shinfo(head)->frag_list = clone; in inet_frag_reasm_prepare()
472 nextp = &skb_shinfo(head)->frag_list; in inet_frag_reasm_prepare()
479 void inet_frag_reasm_finish(struct inet_frag_queue *q, struct sk_buff *head, in inet_frag_reasm_finish() argument
487 skb_push(head, head->data - skb_network_header(head)); in inet_frag_reasm_finish()
490 fp = FRAG_CB(head)->next_frag; in inet_frag_reasm_finish()
491 rbn = rb_next(&head->rbnode); in inet_frag_reasm_finish()
492 rb_erase(&head->rbnode, &q->rb_fragments); in inet_frag_reasm_finish()
494 sum_truesize = head->truesize; in inet_frag_reasm_finish()
506 if (head->ip_summed != fp->ip_summed) in inet_frag_reasm_finish()
507 head->ip_summed = CHECKSUM_NONE; in inet_frag_reasm_finish()
508 else if (head->ip_summed == CHECKSUM_COMPLETE) in inet_frag_reasm_finish()
509 head->csum = csum_add(head->csum, fp->csum); in inet_frag_reasm_finish()
511 if (try_coalesce && skb_try_coalesce(head, fp, &stolen, in inet_frag_reasm_finish()
519 head->data_len += fp->len; in inet_frag_reasm_finish()
520 head->len += fp->len; in inet_frag_reasm_finish()
521 head->truesize += fp->truesize; in inet_frag_reasm_finish()
541 skb_mark_not_on_list(head); in inet_frag_reasm_finish()
542 head->prev = NULL; in inet_frag_reasm_finish()
543 head->tstamp = q->stamp; in inet_frag_reasm_finish()
549 struct sk_buff *head, *skb; in inet_frag_pull_head() local
551 head = skb_rb_first(&q->rb_fragments); in inet_frag_pull_head()
552 if (!head) in inet_frag_pull_head()
554 skb = FRAG_CB(head)->next_frag; in inet_frag_pull_head()
556 rb_replace_node(&head->rbnode, &skb->rbnode, in inet_frag_pull_head()
559 rb_erase(&head->rbnode, &q->rb_fragments); in inet_frag_pull_head()
560 memset(&head->rbnode, 0, sizeof(head->rbnode)); in inet_frag_pull_head()
563 if (head == q->fragments_tail) in inet_frag_pull_head()
566 sub_frag_mem_limit(q->fqdir, head->truesize); in inet_frag_pull_head()
568 return head; in inet_frag_pull_head()