diff options
Diffstat (limited to 'net/ipv4')
-rw-r--r-- | net/ipv4/inet_lro.c | 8 | ||||
-rw-r--r-- | net/ipv4/ip_fragment.c | 4 | ||||
-rw-r--r-- | net/ipv4/ip_output.c | 6 | ||||
-rw-r--r-- | net/ipv4/tcp.c | 9 | ||||
-rw-r--r-- | net/ipv4/tcp_output.c | 8 |
5 files changed, 18 insertions, 17 deletions
diff --git a/net/ipv4/inet_lro.c b/net/ipv4/inet_lro.c index 8e6be5aad115..cc280a3f4f96 100644 --- a/net/ipv4/inet_lro.c +++ b/net/ipv4/inet_lro.c | |||
@@ -244,11 +244,11 @@ static void lro_add_frags(struct net_lro_desc *lro_desc, | |||
244 | skb->truesize += truesize; | 244 | skb->truesize += truesize; |
245 | 245 | ||
246 | skb_frags[0].page_offset += hlen; | 246 | skb_frags[0].page_offset += hlen; |
247 | skb_frags[0].size -= hlen; | 247 | skb_frag_size_sub(&skb_frags[0], hlen); |
248 | 248 | ||
249 | while (tcp_data_len > 0) { | 249 | while (tcp_data_len > 0) { |
250 | *(lro_desc->next_frag) = *skb_frags; | 250 | *(lro_desc->next_frag) = *skb_frags; |
251 | tcp_data_len -= skb_frags->size; | 251 | tcp_data_len -= skb_frag_size(skb_frags); |
252 | lro_desc->next_frag++; | 252 | lro_desc->next_frag++; |
253 | skb_frags++; | 253 | skb_frags++; |
254 | skb_shinfo(skb)->nr_frags++; | 254 | skb_shinfo(skb)->nr_frags++; |
@@ -400,14 +400,14 @@ static struct sk_buff *lro_gen_skb(struct net_lro_mgr *lro_mgr, | |||
400 | skb_frags = skb_shinfo(skb)->frags; | 400 | skb_frags = skb_shinfo(skb)->frags; |
401 | while (data_len > 0) { | 401 | while (data_len > 0) { |
402 | *skb_frags = *frags; | 402 | *skb_frags = *frags; |
403 | data_len -= frags->size; | 403 | data_len -= skb_frag_size(frags); |
404 | skb_frags++; | 404 | skb_frags++; |
405 | frags++; | 405 | frags++; |
406 | skb_shinfo(skb)->nr_frags++; | 406 | skb_shinfo(skb)->nr_frags++; |
407 | } | 407 | } |
408 | 408 | ||
409 | skb_shinfo(skb)->frags[0].page_offset += hdr_len; | 409 | skb_shinfo(skb)->frags[0].page_offset += hdr_len; |
410 | skb_shinfo(skb)->frags[0].size -= hdr_len; | 410 | skb_frag_size_sub(&skb_shinfo(skb)->frags[0], hdr_len); |
411 | 411 | ||
412 | skb->ip_summed = ip_summed; | 412 | skb->ip_summed = ip_summed; |
413 | skb->csum = sum; | 413 | skb->csum = sum; |
diff --git a/net/ipv4/ip_fragment.c b/net/ipv4/ip_fragment.c index 763589ad673d..fdaabf2f2b68 100644 --- a/net/ipv4/ip_fragment.c +++ b/net/ipv4/ip_fragment.c | |||
@@ -599,8 +599,8 @@ static int ip_frag_reasm(struct ipq *qp, struct sk_buff *prev, | |||
599 | head->next = clone; | 599 | head->next = clone; |
600 | skb_shinfo(clone)->frag_list = skb_shinfo(head)->frag_list; | 600 | skb_shinfo(clone)->frag_list = skb_shinfo(head)->frag_list; |
601 | skb_frag_list_init(head); | 601 | skb_frag_list_init(head); |
602 | for (i=0; i<skb_shinfo(head)->nr_frags; i++) | 602 | for (i = 0; i < skb_shinfo(head)->nr_frags; i++) |
603 | plen += skb_shinfo(head)->frags[i].size; | 603 | plen += skb_frag_size(&skb_shinfo(head)->frags[i]); |
604 | clone->len = clone->data_len = head->data_len - plen; | 604 | clone->len = clone->data_len = head->data_len - plen; |
605 | head->data_len -= clone->len; | 605 | head->data_len -= clone->len; |
606 | head->len -= clone->len; | 606 | head->len -= clone->len; |
diff --git a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c index ae3bb147affd..e1374ab034bb 100644 --- a/net/ipv4/ip_output.c +++ b/net/ipv4/ip_output.c | |||
@@ -1015,13 +1015,13 @@ alloc_new_skb: | |||
1015 | err = -EMSGSIZE; | 1015 | err = -EMSGSIZE; |
1016 | goto error; | 1016 | goto error; |
1017 | } | 1017 | } |
1018 | if (getfrag(from, skb_frag_address(frag)+frag->size, | 1018 | if (getfrag(from, skb_frag_address(frag)+skb_frag_size(frag), |
1019 | offset, copy, skb->len, skb) < 0) { | 1019 | offset, copy, skb->len, skb) < 0) { |
1020 | err = -EFAULT; | 1020 | err = -EFAULT; |
1021 | goto error; | 1021 | goto error; |
1022 | } | 1022 | } |
1023 | cork->off += copy; | 1023 | cork->off += copy; |
1024 | frag->size += copy; | 1024 | skb_frag_size_add(frag, copy); |
1025 | skb->len += copy; | 1025 | skb->len += copy; |
1026 | skb->data_len += copy; | 1026 | skb->data_len += copy; |
1027 | skb->truesize += copy; | 1027 | skb->truesize += copy; |
@@ -1230,7 +1230,7 @@ ssize_t ip_append_page(struct sock *sk, struct flowi4 *fl4, struct page *page, | |||
1230 | if (len > size) | 1230 | if (len > size) |
1231 | len = size; | 1231 | len = size; |
1232 | if (skb_can_coalesce(skb, i, page, offset)) { | 1232 | if (skb_can_coalesce(skb, i, page, offset)) { |
1233 | skb_shinfo(skb)->frags[i-1].size += len; | 1233 | skb_frag_size_add(&skb_shinfo(skb)->frags[i-1], len); |
1234 | } else if (i < MAX_SKB_FRAGS) { | 1234 | } else if (i < MAX_SKB_FRAGS) { |
1235 | get_page(page); | 1235 | get_page(page); |
1236 | skb_fill_page_desc(skb, i, page, offset, len); | 1236 | skb_fill_page_desc(skb, i, page, offset, len); |
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index 4c0da24fb649..132be081cd00 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c | |||
@@ -813,7 +813,7 @@ new_segment: | |||
813 | goto wait_for_memory; | 813 | goto wait_for_memory; |
814 | 814 | ||
815 | if (can_coalesce) { | 815 | if (can_coalesce) { |
816 | skb_shinfo(skb)->frags[i - 1].size += copy; | 816 | skb_frag_size_add(&skb_shinfo(skb)->frags[i - 1], copy); |
817 | } else { | 817 | } else { |
818 | get_page(page); | 818 | get_page(page); |
819 | skb_fill_page_desc(skb, i, page, offset, copy); | 819 | skb_fill_page_desc(skb, i, page, offset, copy); |
@@ -1058,8 +1058,7 @@ new_segment: | |||
1058 | 1058 | ||
1059 | /* Update the skb. */ | 1059 | /* Update the skb. */ |
1060 | if (merge) { | 1060 | if (merge) { |
1061 | skb_shinfo(skb)->frags[i - 1].size += | 1061 | skb_frag_size_add(&skb_shinfo(skb)->frags[i - 1], copy); |
1062 | copy; | ||
1063 | } else { | 1062 | } else { |
1064 | skb_fill_page_desc(skb, i, page, off, copy); | 1063 | skb_fill_page_desc(skb, i, page, off, copy); |
1065 | if (TCP_PAGE(sk)) { | 1064 | if (TCP_PAGE(sk)) { |
@@ -3031,8 +3030,8 @@ int tcp_md5_hash_skb_data(struct tcp_md5sig_pool *hp, | |||
3031 | for (i = 0; i < shi->nr_frags; ++i) { | 3030 | for (i = 0; i < shi->nr_frags; ++i) { |
3032 | const struct skb_frag_struct *f = &shi->frags[i]; | 3031 | const struct skb_frag_struct *f = &shi->frags[i]; |
3033 | struct page *page = skb_frag_page(f); | 3032 | struct page *page = skb_frag_page(f); |
3034 | sg_set_page(&sg, page, f->size, f->page_offset); | 3033 | sg_set_page(&sg, page, skb_frag_size(f), f->page_offset); |
3035 | if (crypto_hash_update(desc, &sg, f->size)) | 3034 | if (crypto_hash_update(desc, &sg, skb_frag_size(f))) |
3036 | return 1; | 3035 | return 1; |
3037 | } | 3036 | } |
3038 | 3037 | ||
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index dde6b5768316..ed96c543f1cf 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c | |||
@@ -1094,14 +1094,16 @@ static void __pskb_trim_head(struct sk_buff *skb, int len) | |||
1094 | eat = len; | 1094 | eat = len; |
1095 | k = 0; | 1095 | k = 0; |
1096 | for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { | 1096 | for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) { |
1097 | if (skb_shinfo(skb)->frags[i].size <= eat) { | 1097 | int size = skb_frag_size(&skb_shinfo(skb)->frags[i]); |
1098 | |||
1099 | if (size <= eat) { | ||
1098 | skb_frag_unref(skb, i); | 1100 | skb_frag_unref(skb, i); |
1099 | eat -= skb_shinfo(skb)->frags[i].size; | 1101 | eat -= size; |
1100 | } else { | 1102 | } else { |
1101 | skb_shinfo(skb)->frags[k] = skb_shinfo(skb)->frags[i]; | 1103 | skb_shinfo(skb)->frags[k] = skb_shinfo(skb)->frags[i]; |
1102 | if (eat) { | 1104 | if (eat) { |
1103 | skb_shinfo(skb)->frags[k].page_offset += eat; | 1105 | skb_shinfo(skb)->frags[k].page_offset += eat; |
1104 | skb_shinfo(skb)->frags[k].size -= eat; | 1106 | skb_frag_size_sub(&skb_shinfo(skb)->frags[k], eat); |
1105 | eat = 0; | 1107 | eat = 0; |
1106 | } | 1108 | } |
1107 | k++; | 1109 | k++; |