diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-01-29 14:54:01 +0300 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-01-29 14:54:01 +0300 |
commit | 0ba6c33bcddc64a54b5f1c25a696c4767dc76292 (patch) | |
tree | 62e616f97a4762d8e75bf732e4827af2d15d52c5 /drivers/net/slhc.c | |
parent | 21af0297c7e56024a5ccc4d8ad2a590f9ec371ba (diff) | |
parent | 85040bcb4643cba578839e953f25e2d1965d83d0 (diff) | |
download | linux-0ba6c33bcddc64a54b5f1c25a696c4767dc76292.tar.xz |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6.25
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6.25: (1470 commits)
[IPV6] ADDRLABEL: Fix double free on label deletion.
[PPP]: Sparse warning fixes.
[IPV4] fib_trie: remove unneeded NULL check
[IPV4] fib_trie: More whitespace cleanup.
[NET_SCHED]: Use nla_policy for attribute validation in ematches
[NET_SCHED]: Use nla_policy for attribute validation in actions
[NET_SCHED]: Use nla_policy for attribute validation in classifiers
[NET_SCHED]: Use nla_policy for attribute validation in packet schedulers
[NET_SCHED]: sch_api: introduce constant for rate table size
[NET_SCHED]: Use typeful attribute parsing helpers
[NET_SCHED]: Use typeful attribute construction helpers
[NET_SCHED]: Use NLA_PUT_STRING for string dumping
[NET_SCHED]: Use nla_nest_start/nla_nest_end
[NET_SCHED]: Propagate nla_parse return value
[NET_SCHED]: act_api: use PTR_ERR in tcf_action_init/tcf_action_get
[NET_SCHED]: act_api: use nlmsg_parse
[NET_SCHED]: act_api: fix netlink API conversion bug
[NET_SCHED]: sch_netem: use nla_parse_nested_compat
[NET_SCHED]: sch_atm: fix format string warning
[NETNS]: Add namespace for ICMP replying code.
...
Diffstat (limited to 'drivers/net/slhc.c')
-rw-r--r-- | drivers/net/slhc.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/drivers/net/slhc.c b/drivers/net/slhc.c index 0adab709ab68..d640c0f5470b 100644 --- a/drivers/net/slhc.c +++ b/drivers/net/slhc.c @@ -174,7 +174,7 @@ put16(unsigned char *cp, unsigned short x) /* Encode a number */ -unsigned char * +static unsigned char * encode(unsigned char *cp, unsigned short n) { if(n >= 256 || n == 0){ @@ -199,7 +199,7 @@ pull16(unsigned char **cpp) } /* Decode a number */ -long +static long decode(unsigned char **cpp) { register int x; @@ -233,6 +233,7 @@ slhc_compress(struct slcompress *comp, unsigned char *icp, int isize, register unsigned char *cp = new_seq; struct iphdr *ip; struct tcphdr *th, *oth; + __sum16 csum; /* @@ -428,7 +429,7 @@ found: /* Grab the cksum before we overwrite it below. Then update our * state with this packet's header. */ - deltaA = ntohs(th->check); + csum = th->check; memcpy(&cs->cs_ip,ip,20); memcpy(&cs->cs_tcp,th,20); /* We want to use the original packet as our compressed packet. @@ -449,7 +450,8 @@ found: *cpp = ocp; *cp++ = changes; } - cp = put16(cp,(short)deltaA); /* Write TCP checksum */ + *(__sum16 *)cp = csum; + cp += 2; /* deltaS is now the size of the change section of the compressed header */ memcpy(cp,new_seq,deltaS); /* Write list of deltas */ memcpy(cp+deltaS,icp+hlen,isize-hlen); @@ -519,10 +521,8 @@ slhc_uncompress(struct slcompress *comp, unsigned char *icp, int isize) thp = &cs->cs_tcp; ip = &cs->cs_ip; - if((x = pull16(&cp)) == -1) { /* Read the TCP checksum */ - goto bad; - } - thp->check = htons(x); + thp->check = *(__sum16 *)cp; + cp += 2; thp->psh = (changes & TCP_PUSH_BIT) ? 1 : 0; /* |