summaryrefslogtreecommitdiff
path: root/net/ipv4/gre_demux.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2014-05-09 07:48:01 +0400
committerDavid S. Miller <davem@davemloft.net>2014-05-09 07:48:01 +0400
commit1b5d35358effb776b1ef47b26ec0df54af79d842 (patch)
tree3e3a8bf63676f025cca73ac50fd7e3645d7b138e /net/ipv4/gre_demux.c
parent1a91de28831a1bd913e14dacf25763f3672e24a9 (diff)
parent58d6085c14f5db61c092c90b59813397bc771417 (diff)
downloadlinux-1b5d35358effb776b1ef47b26ec0df54af79d842.tar.xz
Merge branch 'inet_csums_part2'
Tom Herbert says: ==================== net: Checksum offload changes - Part II I am working on overhauling RX checksum offload. Goals of this effort are: - Specify what exactly it means when driver returns CHECKSUM_UNNECESSARY - Preserve CHECKSUM_COMPLETE through encapsulation layers - Don't do skb_checksum more than once per packet - Unify GRO and non-GRO csum verification as much as possible - Unify the checksum functions (checksum_init) - Simply code What is in this second patch set: - Call common inet checksum validation functions in ICMP{4,6}, GRE{4,6}, and IGMP. - In UDP, verify checksum before handing off to encap_rcv. - Remove custom UDP checksum validation code in L2TP. Please review carefully and test if possible, mucking with basic checksum functions is always a little precarious :-) ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/gre_demux.c')
-rw-r--r--net/ipv4/gre_demux.c24
1 files changed, 1 insertions, 23 deletions
diff --git a/net/ipv4/gre_demux.c b/net/ipv4/gre_demux.c
index 250be7421ab3..fbfd829f4049 100644
--- a/net/ipv4/gre_demux.c
+++ b/net/ipv4/gre_demux.c
@@ -93,28 +93,6 @@ void gre_build_header(struct sk_buff *skb, const struct tnl_ptk_info *tpi,
}
EXPORT_SYMBOL_GPL(gre_build_header);
-static __sum16 check_checksum(struct sk_buff *skb)
-{
- __sum16 csum = 0;
-
- switch (skb->ip_summed) {
- case CHECKSUM_COMPLETE:
- csum = csum_fold(skb->csum);
-
- if (!csum)
- break;
- /* Fall through. */
-
- case CHECKSUM_NONE:
- skb->csum = 0;
- csum = __skb_checksum_complete(skb);
- skb->ip_summed = CHECKSUM_COMPLETE;
- break;
- }
-
- return csum;
-}
-
static int parse_gre_header(struct sk_buff *skb, struct tnl_ptk_info *tpi,
bool *csum_err)
{
@@ -141,7 +119,7 @@ static int parse_gre_header(struct sk_buff *skb, struct tnl_ptk_info *tpi,
options = (__be32 *)(greh + 1);
if (greh->flags & GRE_CSUM) {
- if (check_checksum(skb)) {
+ if (skb_checksum_simple_validate(skb)) {
*csum_err = true;
return -EINVAL;
}