--- /dev/null
+From 522d130c50eaa2c2f9c47c77db366e8de4d27a94 Mon Sep 17 00:00:00 2001
+From: Micah Dowty <micah@navi.cx>
+Date: Wed, 23 Jul 2008 23:46:31 -0700
+Subject: hdlcdrv: Fix CRC calculation.
+
+From: Micah Dowty <micah@navi.cx>
+
+[ Upstream commit ae6134bdf3197206fba95563d755d2fa50d90ddd ]
+
+This is a trivial patch against the hdlcdrv module that fixes its CRC
+calculation. The finished CRC was overwriting the first two bytes of
+each packet rather than being appended to the end.
+
+I've tested this with 2.6.8 and 2.6.10-rc1, but hdlcdrv hasn't changed
+much recently so it should work with many other kernel versions.
+
+Signed-off-by: Micah Dowty <micah@navi.cx>
+Acked-by: Thomas Sailer <t.sailer@alumni.ethz.ch>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/hamradio/hdlcdrv.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/net/hamradio/hdlcdrv.c
++++ b/drivers/net/hamradio/hdlcdrv.c
+@@ -88,6 +88,7 @@
+ static inline void append_crc_ccitt(unsigned char *buffer, int len)
+ {
+ unsigned int crc = crc_ccitt(0xffff, buffer, len) ^ 0xffff;
++ buffer += len;
+ *buffer++ = crc;
+ *buffer++ = crc >> 8;
+ }
--- /dev/null
+From 1258348ce4931f116bdcdab165a6907cb93157e8 Mon Sep 17 00:00:00 2001
+From: David S. Miller <davem@davemloft.net>
+Date: Wed, 23 Jul 2008 23:49:26 -0700
+Subject: ipv6: __KERNEL__ ifdef struct ipv6_devconf
+
+From: David S. Miller <davem@davemloft.net>
+
+[ Upstream commit ebb36a978131810c98e7198b1187090c697cf99f ]
+
+Based upon a report by Olaf Hering.
+
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ include/linux/ipv6.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/include/linux/ipv6.h
++++ b/include/linux/ipv6.h
+@@ -123,6 +123,7 @@ struct ipv6hdr {
+ struct in6_addr daddr;
+ };
+
++#ifdef __KERNEL__
+ /*
+ * This structure contains configuration options per IPv6 link.
+ */
+@@ -165,6 +166,7 @@ struct ipv6_devconf {
+ #endif
+ void *sysctl;
+ };
++#endif
+
+ /* index values for the variables in ipv6_devconf */
+ enum {
--- /dev/null
+From 09cc8dec4644faa8cba4907d94c59074ed448e23 Mon Sep 17 00:00:00 2001
+From: Stephen Hemminger <shemminger@vyatta.com>
+Date: Thu, 24 Jul 2008 00:28:07 -0700
+Subject: ipv6: use timer pending
+
+From: Stephen Hemminger <shemminger@vyatta.com>
+
+[ Upstream commit 847499ce71bdcc8fc542062df6ebed3e596608dd ]
+
+This fixes the bridge reference count problem and cleanups ipv6 FIB
+timer management. Don't use expires field, because it is not a proper
+way to test, instead use timer_pending().
+
+Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ net/ipv6/ip6_fib.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/net/ipv6/ip6_fib.c
++++ b/net/ipv6/ip6_fib.c
+@@ -663,7 +663,7 @@ static int fib6_add_rt2node(struct fib6_
+
+ static __inline__ void fib6_start_gc(struct net *net, struct rt6_info *rt)
+ {
+- if (net->ipv6.ip6_fib_timer->expires == 0 &&
++ if (!timer_pending(net->ipv6.ip6_fib_timer) &&
+ (rt->rt6i_flags & (RTF_EXPIRES|RTF_CACHE)))
+ mod_timer(net->ipv6.ip6_fib_timer, jiffies +
+ net->ipv6.sysctl.ip6_rt_gc_interval);
+@@ -671,7 +671,7 @@ static __inline__ void fib6_start_gc(str
+
+ void fib6_force_start_gc(struct net *net)
+ {
+- if (net->ipv6.ip6_fib_timer->expires == 0)
++ if (!timer_pending(net->ipv6.ip6_fib_timer))
+ mod_timer(net->ipv6.ip6_fib_timer, jiffies +
+ net->ipv6.sysctl.ip6_rt_gc_interval);
+ }
pxamci-trivial-fix-of-dma-alignment-register-bit-clearing.patch
+udplite-protection-against-coverage-value-wrap-around.patch
+ipv6-use-timer-pending.patch
+ipv6-__kernel__-ifdef-struct-ipv6_devconf.patch
+hdlcdrv-fix-crc-calculation.patch
--- /dev/null
+From e623d5bd543f4e5ce465bd1b3042f6ce3ad00d1c Mon Sep 17 00:00:00 2001
+From: Gerrit Renker <gerrit@erg.abdn.ac.uk>
+Date: Thu, 24 Jul 2008 00:11:56 -0700
+Subject: udplite: Protection against coverage value wrap-around
+
+From: Gerrit Renker <gerrit@erg.abdn.ac.uk>
+
+[ Upstream commit 47112e25da41d9059626033986dc3353e101f815 ]
+
+This patch clamps the cscov setsockopt values to a maximum of 0xFFFF.
+
+Setsockopt values greater than 0xffff can cause an unwanted
+wrap-around. Further, IPv6 jumbograms are not supported (RFC 3838,
+3.5), so that values greater than 0xffff are not even useful.
+
+Further changes: fixed a typo in the documentation.
+
+Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ Documentation/networking/udplite.txt | 2 +-
+ net/ipv4/udp.c | 4 ++++
+ 2 files changed, 5 insertions(+), 1 deletion(-)
+
+--- a/Documentation/networking/udplite.txt
++++ b/Documentation/networking/udplite.txt
+@@ -148,7 +148,7 @@
+ getsockopt(sockfd, SOL_SOCKET, SO_NO_CHECK, &value, ...);
+
+ is meaningless (as in TCP). Packets with a zero checksum field are
+- illegal (cf. RFC 3828, sec. 3.1) will be silently discarded.
++ illegal (cf. RFC 3828, sec. 3.1) and will be silently discarded.
+
+ 4) Fragmentation
+
+--- a/net/ipv4/udp.c
++++ b/net/ipv4/udp.c
+@@ -1319,6 +1319,8 @@ int udp_lib_setsockopt(struct sock *sk,
+ return -ENOPROTOOPT;
+ if (val != 0 && val < 8) /* Illegal coverage: use default (8) */
+ val = 8;
++ else if (val > USHORT_MAX)
++ val = USHORT_MAX;
+ up->pcslen = val;
+ up->pcflag |= UDPLITE_SEND_CC;
+ break;
+@@ -1331,6 +1333,8 @@ int udp_lib_setsockopt(struct sock *sk,
+ return -ENOPROTOOPT;
+ if (val != 0 && val < 8) /* Avoid silly minimal values. */
+ val = 8;
++ else if (val > USHORT_MAX)
++ val = USHORT_MAX;
+ up->pcrlen = val;
+ up->pcflag |= UDPLITE_RECV_CC;
+ break;