diff options
Diffstat (limited to 'include/linux/skbuff.h')
| -rw-r--r-- | include/linux/skbuff.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 2748ff639144..5405dfe02572 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h | |||
| @@ -3099,6 +3099,27 @@ do { \ | |||
| 3099 | compute_pseudo(skb, proto)); \ | 3099 | compute_pseudo(skb, proto)); \ |
| 3100 | } while (0) | 3100 | } while (0) |
| 3101 | 3101 | ||
| 3102 | /* Update skbuf and packet to reflect the remote checksum offload operation. | ||
| 3103 | * When called, ptr indicates the starting point for skb->csum when | ||
| 3104 | * ip_summed is CHECKSUM_COMPLETE. If we need create checksum complete | ||
| 3105 | * here, skb_postpull_rcsum is done so skb->csum start is ptr. | ||
| 3106 | */ | ||
| 3107 | static inline void skb_remcsum_process(struct sk_buff *skb, void *ptr, | ||
| 3108 | int start, int offset) | ||
| 3109 | { | ||
| 3110 | __wsum delta; | ||
| 3111 | |||
| 3112 | if (unlikely(skb->ip_summed != CHECKSUM_COMPLETE)) { | ||
| 3113 | __skb_checksum_complete(skb); | ||
| 3114 | skb_postpull_rcsum(skb, skb->data, ptr - (void *)skb->data); | ||
| 3115 | } | ||
| 3116 | |||
| 3117 | delta = remcsum_adjust(ptr, skb->csum, start, offset); | ||
| 3118 | |||
| 3119 | /* Adjust skb->csum since we changed the packet */ | ||
| 3120 | skb->csum = csum_add(skb->csum, delta); | ||
| 3121 | } | ||
| 3122 | |||
| 3102 | #if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE) | 3123 | #if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE) |
| 3103 | void nf_conntrack_destroy(struct nf_conntrack *nfct); | 3124 | void nf_conntrack_destroy(struct nf_conntrack *nfct); |
| 3104 | static inline void nf_conntrack_put(struct nf_conntrack *nfct) | 3125 | static inline void nf_conntrack_put(struct nf_conntrack *nfct) |
